diff --git a/tiddlers/$__palette.tid b/tiddlers/$__palette.tid new file mode 100644 index 0000000..ce4529b --- /dev/null +++ b/tiddlers/$__palette.tid @@ -0,0 +1,8 @@ +created: 20220809005000163 +creator: TidGiUser +modified: 20220809005003635 +modifier: TidGiUser +title: $:/palette +type: text/vnd.tiddlywiki + +$:/palettes/Vanilla \ No newline at end of file diff --git a/tiddlers/$__plugins_flibbles_relink-titles.json b/tiddlers/$__plugins_flibbles_relink-titles.json index 52ddb55..0f970dd 100644 --- a/tiddlers/$__plugins_flibbles_relink-titles.json +++ b/tiddlers/$__plugins_flibbles_relink-titles.json @@ -1 +1 @@ -{"tiddlers":{"$:/plugins/flibbles/relink-titles/configuration":{"title":"$:/plugins/flibbles/relink-titles/configuration","caption":"{{$:/plugins/flibbles/relink-titles/language/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\define lingo-base() $:/plugins/flibbles/relink-titles/language/\n\\define prefix() $:/config/flibbles/relink-titles/relink/\n\\whitespace trim\n\n
\n\n<>\n\n\n\n<$list filter=\"[[relinktitlesrule]modules[]]\">\n\n\n
\n<$checkbox\n\ttiddler={{{ [all[current]addprefix] }}}\n\tfield=\"text\"\n\tchecked=\"enabled\"\n\tunchecked=\"disabled\"\n\tdefault=\"enabled\">\n \n''{{!!caption}}''\n\n\n<$transclude field='description' />\n\n
\n"},"$:/plugins/flibbles/relink-titles/language/Caption":{"title":"$:/plugins/flibbles/relink-titles/language/Caption","text":"Titles"},"$:/plugins/flibbles/relink-titles/language/Directory/Caption":{"title":"$:/plugins/flibbles/relink-titles/language/Directory/Caption","text":"Rename subdirectories"},"$:/plugins/flibbles/relink-titles/language/Directory/Description":{"title":"$:/plugins/flibbles/relink-titles/language/Directory/Description","text":"For wikis set up hierarchically using `/`, like a filesystem. This option will update all tiddlers nested inside the target tiddler. i.e. `fromTiddler/path/file` becomes `toTiddler/path/file`."},"$:/plugins/flibbles/relink-titles/language/Lookup/Caption":{"title":"$:/plugins/flibbles/relink-titles/language/Lookup/Caption","text":"Lookup tiddlers"},"$:/plugins/flibbles/relink-titles/language/Help":{"title":"$:/plugins/flibbles/relink-titles/language/Help","text":"See the //Relink-titles// documentation page for details."},"$:/plugins/flibbles/relink-titles/readme":{"title":"$:/plugins/flibbles/relink-titles/readme","text":"Highly customizable relinking of tiddler titles //related// to the renamed tiddler.\n\n* Rename a hierarchy of subtiddlers when renaming a root tiddler.\n* Make custom filter rules to rename other tiddlers the way you want when Relinking.\n* Integrates with other plugins for plugin-specific rules.\n\nSee the tw5-relink website for more details and examples.\n\n{{$:/core/images/warning}} ''Warning:'' You must use //Relink// v1.10.2 or greater with this, or this plugin may delete some tiddler bodies while trying to relink titles.\n"},"$:/plugins/flibbles/relink-titles/relinkoperations/title.js":{"title":"$:/plugins/flibbles/relink-titles/relinkoperations/title.js","text":"/*\\\nmodule-type: relinkoperator\ntitle: $:/plugins/flibbles/relink-titles/relinkoperations/title.js\ntype: application/javascript\n\nRenames tiddlers which have titles derived from fromTitle. Then it makes\nsure that those tiddlers are properly relinked too.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar configPrefix = \"$:/config/flibbles/relink-titles/relink/\";\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\nutils.getContext('whitelist').hotDirectories.push(configPrefix);\n\nvar titleRules = Object.create(null);\n$tw.modules.forEachModuleOfType('relinktitlesrule', function(title, module) {\n\ttitleRules[title] = module;\n});\n\nexports.name = 'title';\n\nexports.report = function(tiddler, callback, options) {\n\tvar cache = getCache(options),\n\t\trules = cache.rules;\n\tfor (var i = 0; i < rules.length; i++) {\n\t\trules[i].report(tiddler.fields.title, function(title, blurb) {\n\t\t\tcallback(title, blurb ? ('title: ' + blurb) : 'title');\n\t\t}, options);\n\t}\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar cache = getCache(options),\n\t\ttitle = tiddler.fields.title;\n\tif (!cache.touched[title]) {\n\t\tvar rules = cache.rules;\n\t\tfor (var i = 0; i < rules.length; i++) {\n\t\t\tvar rule = rules[i];\n\t\t\tvar entry = rule.relink(title, fromTitle, toTitle, options);\n\t\t\tif (entry) {\n\t\t\t\tvar result = entry.output;\n\t\t\t\tif (result && (result !== title)) {\n\t\t\t\t\tif (options.wiki.getTiddler(result) || cache.touched[result]) {\n\t\t\t\t\t\t// There's already a tiddler there. We won't clobber it.\n\t\t\t\t\t\tentry.impossible = true;\n\t\t\t\t\t\tentry.output = undefined;\n\t\t\t\t\t}\n\t\t\t\t\tcache.touched[result] = true;\n\t\t\t\t}\n\t\t\t\t// Record that we've touched this one, so we only touch it once.\n\t\t\t\t// Both its prior and latter. Neither should be touched again.\n\t\t\t\tcache.touched[title] = true;\n\t\t\t\tchanges.title = entry;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nfunction getCache(options) {\n\treturn utils.getCacheForRun(options, 'titles', function() {\n\t\treturn {\n\t\t\trules: getRules(options.wiki),\n\t\t\ttouched: Object.create(null)\n\t\t};\n\t});\n};\n\nfunction getRules(wiki) {\n\tvar activeRules = [];\n\tfor (var rule in titleRules) {\n\t\tvar configTiddler = wiki.getTiddler(configPrefix + rule);\n\t\tif (!configTiddler || configTiddler.fields.text !== \"disabled\") {\n\t\t\tactiveRules.push(titleRules[rule]);\n\t\t}\n\t}\n\treturn activeRules;\n};\n","module-type":"relinkoperator","type":"application/javascript"},"$:/plugins/flibbles/relink-titles/rules/directory":{"title":"$:/plugins/flibbles/relink-titles/rules/directory","text":"/*\\\ncaption: {{$:/plugins/flibbles/relink-titles/language/Directory/Caption}}\ndescription: {{$:/plugins/flibbles/relink-titles/language/Directory/Description}}\nmodule-type: relinktitlesrule\ntitle: $:/plugins/flibbles/relink-titles/rules/directory\ntype: application/javascript\n\nHandles subdirectory renaming.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = 'directory';\n\n/**The report returns all parent directories of a given title which exist.\n */\nexports.report = function(title, callback, options) {\n\tvar index = -1;\n\twhile ((index = title.indexOf('/', index+1)) >= 0) {\n\t\tvar dir = title.substr(0, index);\n\t\tcallback(dir, '.' + title.substr(index));\n\t}\n};\n\n/**The relink returns the new title (if any) derived from title for a given\n * rename of fromTitle to toTitle.\n */\nexports.relink = function(title, fromTitle, toTitle, options) {\n\tvar length = fromTitle.length;\n\tif (title.charAt(length) === '/' && title.substr(0, length) === fromTitle) {\n\t\treturn {output: toTitle + title.substr(length)};\n\t}\n\treturn undefined;\n};\n","caption":"{{$:/plugins/flibbles/relink-titles/language/Directory/Caption}}","description":"{{$:/plugins/flibbles/relink-titles/language/Directory/Description}}","module-type":"relinktitlesrule","type":"application/javascript"},"$:/plugins/flibbles/relink-titles/language/Lookup/Description":{"title":"$:/plugins/flibbles/relink-titles/language/Lookup/Description","text":"This options updates all configuration tiddlers which relate to target tiddlers either through fixed prefixes or suffixes, i.e. `$:/config/Buttons/Visibility/fromFile` becomes `$:/config/Buttons/Visibility/toFile` when \"fromFile\" is renamed.\n\nEach line corresponds to a pattern, where `$(currentTiddler)$` would be the name of the tiddler being renamed, and `$(*)$` matches with anything.\n\n<$edit-text\n\ttiddler=\"$:/config/flibbles/relink-titles/lookup/patterns\"\n\ttag=\"textarea\"\n/>\n"},"$:/config/flibbles/relink-titles/lookup/patterns":{"title":"$:/config/flibbles/relink-titles/lookup/patterns","text":"$:/config/$(*)$/Visibility/$(currentTiddler)$\n"},"$:/plugins/flibbles/relink-titles/rules/lookup":{"title":"$:/plugins/flibbles/relink-titles/rules/lookup","text":"/*\\\ncaption: {{$:/plugins/flibbles/relink-titles/language/Lookup/Caption}}\ndescription: {{$:/plugins/flibbles/relink-titles/language/Lookup/Description}}\nmodule-type: relinktitlesrule\ntitle: $:/plugins/flibbles/relink-titles/rules/lookup\ntype: application/javascript\n\nHandles setting tiddlers which are derived from other tiddlers, like how\n\n```\n$:/config/PageControlButtons/Visibility/$(currentTiddler)$\n```\n\nset the visibility for $(currentTiddler)$\n\n\\*/\n\n\"use strict\";\n\nexports.name = 'lookup';\n\nvar patternTiddler = \"$:/config/flibbles/relink-titles/lookup/patterns\";\nvar anyMatcher = /\\$\\((?:\\*|currentTiddler)\\)\\$/g;\n\nexports.report = function(targetTitle, callback, options) {\n\tvar patterns = getPatterns(options.wiki);\n\tfor (var i = 0; i < patterns.length; i++) {\n\t\tvar pattern = patterns[i];\n\t\tvar results = match(pattern, targetTitle);\n\t\tif (results) {\n\t\t\tif (!pattern.blurb) {\n\t\t\t\t// We'll only ever need one blurb, so store it\n\t\t\t\tpattern.blurb = pattern.string.replace(anyMatcher, function(match) {\n\t\t\t\t\tif (match === \"$(*)$\") {\n\t\t\t\t\t\treturn \"*\";\n\t\t\t\t\t} else { // must be \"$(currentTiddler)$\"\n\t\t\t\t\t\treturn \"...\";\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tcallback(results.title, pattern.blurb);\n\t\t}\n\t}\n};\n\nexports.relink = function(targetTitle, fromTitle, toTitle, options) {\n\tvar patterns = getPatterns(options.wiki);\n\tfor (var i = 0; i < patterns.length; i++) {\n\t\tvar pattern = patterns[i];\n\t\tvar results = match(pattern, targetTitle, fromTitle);\n\t\tif (results) {\n\t\t\tvar groupIndex = 0;\n\t\t\t// Make all the correct substitutions to create the new title\n\t\t\tvar output = pattern.string.replace(anyMatcher, function(match) {\n\t\t\t\tgroupIndex++;\n\t\t\t\tif (match === \"$(*)$\") {\n\t\t\t\t\treturn results[groupIndex];\n\t\t\t\t} else { // must be \"$(currentTiddler)$\"\n\t\t\t\t\treturn toTitle;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn {output: output};\n\t\t}\n\t}\n\treturn undefined;\n};\n\nfunction match(pattern, string, matchTitle) {\n\tvar results = pattern.matcher.exec(string);\n\tif (results) {\n\t\t// It superficially matches, but we need to make sure all the right\n\t\t// groups match too.\n\t\tfor (var j = 0; j < pattern.groups.length; j++) {\n\t\t\tvar index = pattern.groups[j];\n\t\t\tif (matchTitle === undefined) {\n\t\t\t\t// It doesn't matter what matchTitle is, as long as all\n\t\t\t\t// groups match the same thing.\n\t\t\t\tmatchTitle = results[index];\n\t\t\t} else if (results[index] !== matchTitle) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tresults.title = matchTitle;\n\t}\n\treturn results;\n};\n\nfunction getPatterns(wiki) {\n\treturn wiki.getCacheForTiddler(patternTiddler, \"relink-titles\", function() {\n\t\tvar text = wiki.getTiddlerText(patternTiddler);\n\t\tvar matchers = []\n\t\tif (text) {\n\t\t\tvar array = text.split('\\n');\n\t\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\t\tvar pattern = formPatternFromString(array[i]);\n\t\t\t\tif (pattern) {\n\t\t\t\t\tmatchers.push(pattern);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn matchers;\n\t});\n};\n\nfunction formPatternFromString(string) {\n\tvar groupIndex = 1;\n\tvar matchingGroups = [];\n\tstring = $tw.utils.trim(string);\n\tvar parts = string.split(\"$(currentTiddler)$\");\n\tif (parts.length <= 1) {\n\t\t// $(currentTiddler)$ must not have been there\n\t\treturn null;\n\t}\n\tfor (var j = 0; j < parts.length; j++) {\n\t\t// Split it up by the wildcards\n\t\tvar sections = parts[j].split(\"$(*)$\");\n\t\tfor (var k = 0; k < sections.length; k++) {\n\t\t\tsections[k] = $tw.utils.escapeRegExp(sections[k]);\n\t\t}\n\t\tparts[j] = sections.join(\"(.*)\");\n\t\t// If there are 3 sections, then there is 2 $(*)$, so the index\n\t\t// must skip them. etc...\n\t\tgroupIndex += sections.length-1;\n\t\tif (j < parts.length-1) {\n\t\t\t// If there are 3 parts, that means 2 $(currentTiddler)$, and\n\t\t\t// so we skip the last part\n\t\t\tmatchingGroups.push(groupIndex);\n\t\t\tgroupIndex++;\n\t\t}\n\t}\n\treturn {\n\t\tstring: string,\n\t\tgroups: matchingGroups,\n\t\tmatcher: new RegExp(\"^\" + parts.join(\"(.*)\") + \"$\")\n\t};\n};\n","caption":"{{$:/plugins/flibbles/relink-titles/language/Lookup/Caption}}","description":"{{$:/plugins/flibbles/relink-titles/language/Lookup/Description}}","module-type":"relinktitlesrule","type":"application/javascript"}}} \ No newline at end of file +{"tiddlers":{"$:/plugins/flibbles/relink-titles/configuration":{"title":"$:/plugins/flibbles/relink-titles/configuration","caption":"{{$:/plugins/flibbles/relink-titles/language/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\define lingo-base() $:/plugins/flibbles/relink-titles/language/\n\\define prefix() $:/config/flibbles/relink-titles/relink/\n\\whitespace trim\n\n
\n\n<>\n\n\n\n<$list filter=\"[[relinktitlesrule]modules[]]\">\n\n\n
\n<$checkbox\n\ttiddler={{{ [all[current]addprefix] }}}\n\tfield=\"text\"\n\tchecked=\"enabled\"\n\tunchecked=\"disabled\"\n\tdefault=\"enabled\">\n \n''{{!!caption}}''\n\n\n<$transclude field='description' />\n\n
\n"},"$:/plugins/flibbles/relink-titles/language/Caption":{"title":"$:/plugins/flibbles/relink-titles/language/Caption","text":"Titles"},"$:/plugins/flibbles/relink-titles/language/Directory/Caption":{"title":"$:/plugins/flibbles/relink-titles/language/Directory/Caption","text":"Rename subdirectories"},"$:/plugins/flibbles/relink-titles/language/Directory/Description":{"title":"$:/plugins/flibbles/relink-titles/language/Directory/Description","text":"For wikis set up hierarchically using `/`, like a filesystem. This option will update all tiddlers nested inside the target tiddler. i.e. `fromTiddler/path/file` becomes `toTiddler/path/file`."},"$:/plugins/flibbles/relink-titles/language/Lookup/Caption":{"title":"$:/plugins/flibbles/relink-titles/language/Lookup/Caption","text":"Lookup tiddlers"},"$:/plugins/flibbles/relink-titles/language/Help":{"title":"$:/plugins/flibbles/relink-titles/language/Help","text":"See the //Relink-titles// documentation page for details."},"$:/plugins/flibbles/relink-titles/readme":{"title":"$:/plugins/flibbles/relink-titles/readme","text":"Highly customizable relinking of tiddler titles //related// to the renamed tiddler.\n\n* Rename a hierarchy of subtiddlers when renaming a root tiddler.\n* Make custom filter rules to rename other tiddlers the way you want when Relinking.\n* Integrates with other plugins for plugin-specific rules.\n\nSee the tw5-relink website for more details and examples.\n\n{{$:/core/images/warning}} ''Warning:'' You must use //Relink// v1.10.2 or greater with this, or this plugin may delete some tiddler bodies while trying to relink titles.\n"},"$:/plugins/flibbles/relink-titles/relinkoperations/title.js":{"title":"$:/plugins/flibbles/relink-titles/relinkoperations/title.js","text":"/*\\\nmodule-type: relinkoperator\ntitle: $:/plugins/flibbles/relink-titles/relinkoperations/title.js\ntype: application/javascript\n\nRenames tiddlers which have titles derived from fromTitle. Then it makes\nsure that those tiddlers are properly relinked too.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar configPrefix = \"$:/config/flibbles/relink-titles/relink/\";\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\nutils.getContext('whitelist').hotDirectories.push(configPrefix);\n\nvar titleRules = Object.create(null);\n$tw.modules.forEachModuleOfType('relinktitlesrule', function(title, module) {\n\ttitleRules[title] = module;\n});\n\nexports.name = 'title';\n\nexports.report = function(tiddler, callback, options) {\n\tvar cache = getCache(options),\n\t\trules = cache.rules;\n\tfor (var i = 0; i < rules.length; i++) {\n\t\trules[i].report(tiddler.fields.title, function(title, blurb) {\n\t\t\tcallback(title, blurb ? ('title: ' + blurb) : 'title');\n\t\t}, options);\n\t}\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar cache = getCache(options),\n\t\ttitle = tiddler.fields.title;\n\tif (!cache.touched[title]) {\n\t\tvar rules = cache.rules;\n\t\tfor (var i = 0; i < rules.length; i++) {\n\t\t\tvar rule = rules[i];\n\t\t\tvar entry = rule.relink(title, fromTitle, toTitle, options);\n\t\t\tif (entry) {\n\t\t\t\tvar result = entry.output;\n\t\t\t\tif (result && (result !== title)) {\n\t\t\t\t\tif (options.wiki.getTiddler(result) || cache.touched[result]) {\n\t\t\t\t\t\t// There's already a tiddler there. We won't clobber it.\n\t\t\t\t\t\tentry.impossible = true;\n\t\t\t\t\t\tentry.output = undefined;\n\t\t\t\t\t}\n\t\t\t\t\tcache.touched[result] = true;\n\t\t\t\t}\n\t\t\t\t// Record that we've touched this one, so we only touch it once.\n\t\t\t\t// Both its prior and latter. Neither should be touched again.\n\t\t\t\tcache.touched[title] = true;\n\t\t\t\tchanges.title = entry;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nfunction getCache(options) {\n\treturn utils.getCacheForRun(options, 'titles', function() {\n\t\treturn {\n\t\t\trules: getRules(options.wiki),\n\t\t\ttouched: Object.create(null)\n\t\t};\n\t});\n};\n\nfunction getRules(wiki) {\n\tvar activeRules = [];\n\tfor (var rule in titleRules) {\n\t\tvar configTiddler = wiki.getTiddler(configPrefix + rule);\n\t\tif (!configTiddler || configTiddler.fields.text !== \"disabled\") {\n\t\t\tactiveRules.push(titleRules[rule]);\n\t\t}\n\t}\n\treturn activeRules;\n};\n","module-type":"relinkoperator","type":"application/javascript"},"$:/plugins/flibbles/relink-titles/rules/directory":{"title":"$:/plugins/flibbles/relink-titles/rules/directory","text":"/*\\\ncaption: {{$:/plugins/flibbles/relink-titles/language/Directory/Caption}}\ndescription: {{$:/plugins/flibbles/relink-titles/language/Directory/Description}}\nmodule-type: relinktitlesrule\ntitle: $:/plugins/flibbles/relink-titles/rules/directory\ntype: application/javascript\n\nHandles subdirectory renaming.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = 'directory';\n\n/**The report returns all parent directories of a given title which exist.\n */\nexports.report = function(title, callback, options) {\n\tvar index = -1;\n\twhile ((index = title.indexOf('/', index+1)) >= 0) {\n\t\tvar dir = title.substr(0, index);\n\t\tcallback(dir, '.' + title.substr(index));\n\t}\n};\n\n/**The relink returns the new title (if any) derived from title for a given\n * rename of fromTitle to toTitle.\n */\nexports.relink = function(title, fromTitle, toTitle, options) {\n\tvar length = fromTitle.length;\n\tif (title.charAt(length) === '/' && title.substr(0, length) === fromTitle) {\n\t\treturn {output: toTitle + title.substr(length)};\n\t}\n\treturn undefined;\n};\n","caption":"{{$:/plugins/flibbles/relink-titles/language/Directory/Caption}}","description":"{{$:/plugins/flibbles/relink-titles/language/Directory/Description}}","module-type":"relinktitlesrule","type":"application/javascript"},"$:/plugins/flibbles/relink-titles/language/Lookup/Description":{"title":"$:/plugins/flibbles/relink-titles/language/Lookup/Description","text":"This options updates all configuration tiddlers which relate to target tiddlers either through fixed prefixes or suffixes, i.e. `$:/config/Buttons/Visibility/fromFile` becomes `$:/config/Buttons/Visibility/toFile` when \"fromFile\" is renamed.\n\nEach line corresponds to a pattern, where `$(currentTiddler)$` would be the name of the tiddler being renamed, and `$(*)$` matches with anything.\n\n<$edit-text\n\ttiddler=\"$:/config/flibbles/relink-titles/lookup/patterns\"\n\ttag=\"textarea\"\n/>\n"},"$:/config/flibbles/relink-titles/lookup/patterns":{"title":"$:/config/flibbles/relink-titles/lookup/patterns","text":"$:/config/$(*)$/Visibility/$(currentTiddler)$\n"},"$:/plugins/flibbles/relink-titles/rules/lookup":{"title":"$:/plugins/flibbles/relink-titles/rules/lookup","text":"/*\\\ncaption: {{$:/plugins/flibbles/relink-titles/language/Lookup/Caption}}\ndescription: {{$:/plugins/flibbles/relink-titles/language/Lookup/Description}}\nmodule-type: relinktitlesrule\ntitle: $:/plugins/flibbles/relink-titles/rules/lookup\ntype: application/javascript\n\nHandles setting tiddlers which are derived from other tiddlers, like how\n\n```\n$:/config/PageControlButtons/Visibility/$(currentTiddler)$\n```\n\nset the visibility for $(currentTiddler)$\n\n\\*/\n\n\"use strict\";\n\nexports.name = 'lookup';\n\nvar patternTiddler = \"$:/config/flibbles/relink-titles/lookup/patterns\";\nvar anyMatcher = /\\$\\((?:\\*|currentTiddler)\\)\\$/g;\n\nexports.report = function(targetTitle, callback, options) {\n\tvar patterns = getPatterns(options.wiki);\n\tfor (var i = 0; i < patterns.length; i++) {\n\t\tvar pattern = patterns[i];\n\t\tvar results = match(pattern, targetTitle);\n\t\tif (results) {\n\t\t\tif (!pattern.blurb) {\n\t\t\t\t// We'll only ever need one blurb, so store it\n\t\t\t\tpattern.blurb = pattern.string.replace(anyMatcher, function(match) {\n\t\t\t\t\tif (match === \"$(*)$\") {\n\t\t\t\t\t\treturn \"*\";\n\t\t\t\t\t} else { // must be \"$(currentTiddler)$\"\n\t\t\t\t\t\treturn \"...\";\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tcallback(results.title, pattern.blurb);\n\t\t}\n\t}\n};\n\nexports.relink = function(targetTitle, fromTitle, toTitle, options) {\n\tvar patterns = getPatterns(options.wiki);\n\tfor (var i = 0; i < patterns.length; i++) {\n\t\tvar pattern = patterns[i];\n\t\tvar results = match(pattern, targetTitle, fromTitle);\n\t\tif (results) {\n\t\t\tvar groupIndex = 0;\n\t\t\t// Make all the correct substitutions to create the new title\n\t\t\tvar output = pattern.string.replace(anyMatcher, function(match) {\n\t\t\t\tgroupIndex++;\n\t\t\t\tif (match === \"$(*)$\") {\n\t\t\t\t\treturn results[groupIndex];\n\t\t\t\t} else { // must be \"$(currentTiddler)$\"\n\t\t\t\t\treturn toTitle;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn {output: output};\n\t\t}\n\t}\n\treturn undefined;\n};\n\nfunction match(pattern, string, matchTitle) {\n\tvar results = pattern.matcher.exec(string);\n\tif (results) {\n\t\t// It superficially matches, but we need to make sure all the right\n\t\t// groups match too.\n\t\tfor (var j = 0; j < pattern.groups.length; j++) {\n\t\t\tvar index = pattern.groups[j];\n\t\t\tif (matchTitle === undefined) {\n\t\t\t\t// It doesn't matter what matchTitle is, as long as all\n\t\t\t\t// groups match the same thing.\n\t\t\t\tmatchTitle = results[index];\n\t\t\t} else if (results[index] !== matchTitle) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tresults.title = matchTitle;\n\t}\n\treturn results;\n};\n\nfunction getPatterns(wiki) {\n\treturn wiki.getCacheForTiddler(patternTiddler, \"relink-titles\", function() {\n\t\tvar text = wiki.getTiddlerText(patternTiddler);\n\t\tvar matchers = []\n\t\tif (text) {\n\t\t\tvar array = text.split('\\n');\n\t\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\t\tvar pattern = formPatternFromString(array[i]);\n\t\t\t\tif (pattern) {\n\t\t\t\t\tmatchers.push(pattern);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn matchers;\n\t});\n};\n\nfunction formPatternFromString(string) {\n\tvar groupIndex = 1;\n\tvar matchingGroups = [];\n\tstring = $tw.utils.trim(string);\n\tvar parts = string.split(\"$(currentTiddler)$\");\n\tif (parts.length <= 1) {\n\t\t// $(currentTiddler)$ must not have been there\n\t\treturn null;\n\t}\n\tfor (var j = 0; j < parts.length; j++) {\n\t\t// Split it up by the wildcards\n\t\tvar sections = parts[j].split(\"$(*)$\");\n\t\tfor (var k = 0; k < sections.length; k++) {\n\t\t\tsections[k] = $tw.utils.escapeRegExp(sections[k]);\n\t\t}\n\t\tparts[j] = sections.join(\"(.*)\");\n\t\t// If there are 3 sections, then there is 2 $(*)$, so the index\n\t\t// must skip them. etc...\n\t\tgroupIndex += sections.length-1;\n\t\tif (j < parts.length-1) {\n\t\t\t// If there are 3 parts, that means 2 $(currentTiddler)$, and\n\t\t\t// so we skip the last part\n\t\t\tmatchingGroups.push(groupIndex);\n\t\t\tgroupIndex++;\n\t\t}\n\t}\n\treturn {\n\t\tstring: string,\n\t\tgroups: matchingGroups,\n\t\tmatcher: new RegExp(\"^\" + parts.join(\"(.*)\") + \"$\")\n\t};\n};\n","caption":"{{$:/plugins/flibbles/relink-titles/language/Lookup/Caption}}","description":"{{$:/plugins/flibbles/relink-titles/language/Lookup/Description}}","module-type":"relinktitlesrule","type":"application/javascript"}}} \ No newline at end of file diff --git a/tiddlers/$__plugins_flibbles_relink-titles.json.meta b/tiddlers/$__plugins_flibbles_relink-titles.json.meta index a3daff4..355839a 100644 --- a/tiddlers/$__plugins_flibbles_relink-titles.json.meta +++ b/tiddlers/$__plugins_flibbles_relink-titles.json.meta @@ -10,4 +10,4 @@ plugin-type: plugin source: https://github.com/flibbles/tw5-relink title: $:/plugins/flibbles/relink-titles type: application/json -version: 2.1.2 \ No newline at end of file +version: 2.1.3 \ No newline at end of file diff --git a/tiddlers/$__plugins_flibbles_relink.json b/tiddlers/$__plugins_flibbles_relink.json index 37c49ef..7b494ed 100644 --- a/tiddlers/$__plugins_flibbles_relink.json +++ b/tiddlers/$__plugins_flibbles_relink.json @@ -1 +1 @@ -{"tiddlers":{"$:/plugins/flibbles/relink/js/bulkops.js":{"text":"/*\\\nmodule-type: startup\n\nReplaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js\n\nThis is a startup instead of a wikimethods module-type because it's the only\nway to ensure this runs after the old relinkTiddler method is applied.\n\n\\*/\n(function(){\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\n\nexports.name = \"redefine-relinkTiddler\";\nexports.synchronous = true;\n// load-modules is when wikimethods are applied in\n// ``$:/core/modules/startup/load-modules.js``\nexports.after = ['load-modules'];\n\nexports.startup = function() {\n\t$tw.Wiki.prototype.relinkTiddler = relinkTiddler;\n};\n\n/** Walks through all relinkable tiddlers and relinks them.\n * This replaces the existing function in core Tiddlywiki.\n */\nfunction relinkTiddler(fromTitle, toTitle, options) {\n\toptions = options || {};\n\tvar failures = [];\n\tvar indexer = utils.getIndexer(this);\n\tvar records = indexer.relinkLookup(fromTitle, toTitle, options);\n\tfor (var title in records) {\n\t\tvar entries = records[title],\n\t\t\tchanges = Object.create(null),\n\t\t\tupdate = false,\n\t\t\tfails = false;\n\t\tfor (var field in entries) {\n\t\t\tvar entry = entries[field];\n\t\t\tfails = fails || entry.impossible;\n\t\t\tif (entry.output !== undefined) {\n\t\t\t\tchanges[field] = entry.output;\n\t\t\t\tupdate = true;\n\t\t\t}\n\t\t}\n\t\tif (fails) {\n\t\t\tfailures.push(title);\n\t\t}\n\t\t// If any fields changed, update tiddler\n\t\tif (update) {\n\t\t\tconsole.log(\"Renaming '\"+fromTitle+\"' to '\"+toTitle+\"' in '\" + title + \"'\");\n\n\t\t\tvar tiddler = this.getTiddler(title);\n\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,changes,this.getModificationFields())\n\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\tthis.addTiddler(newTiddler);\n\t\t\t// If the title changed, we need to perform a nested rename\n\t\t\tif (newTiddler.fields.title !== title) {\n\t\t\t\tthis.deleteTiddler(title);\n\t\t\t\tthis.relinkTiddler(title, newTiddler.fields.title,options);\n\t\t\t}\n\t\t}\n\t};\n\tif (failures.length > 0) {\n\t\tvar options = $tw.utils.extend(\n\t\t\t{ variables: {to: toTitle, from: fromTitle},\n\t\t\t wiki: this},\n\t\t\toptions );\n\t\tlanguage.reportFailures(failures, options);\n\t}\n};\n\n})();\n","module-type":"startup","title":"$:/plugins/flibbles/relink/js/bulkops.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/indexer.js":{"text":"/*\\\nmodule-type: indexer\n\nIndexes results from tiddler reference reports so we don't have to call them\nso much.\n\n\\*/\n\n\"use strict\";\n\nvar utils = require(\"./utils.js\");\nvar TiddlerContext = utils.getContext('tiddler');\n\nfunction Indexer(wiki) {\n\tthis.wiki = wiki;\n};\n\nIndexer.prototype.init = function() {\n\tthis.rebuild();\n};\n\nIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n\tthis.backIndex = null;\n\tthis.contexts = Object.create(null);\n\tthis.changedTiddlers = undefined;\n\tthis.lastRelinkFrom = undefined;\n};\n\nIndexer.prototype.update = function(updateDescriptor) {\n\tif (!this.index) {\n\t\treturn;\n\t}\n\tvar title;\n\tif (!this.changedTiddlers) {\n\t\tthis.changedTiddlers = Object.create(null);\n\t}\n\tif (updateDescriptor.old.exists) {\n\t\ttitle = updateDescriptor.old.tiddler.fields.title;\n\t\tthis.changedTiddlers[title] = {deleted: true};\n\t\tthis._purge(title);\n\t}\n\tif (updateDescriptor['new'].exists) {\n\t\t// If its the same tiddler as old, this overrides the 'deleted' entry\n\t\ttitle = updateDescriptor['new'].tiddler.fields.title;\n\t\tthis.changedTiddlers[title] = {modified: true};\n\t}\n};\n\nIndexer.prototype.lookup = function(title) {\n\tthis._upkeep();\n\treturn this.index[title];\n};\n\nIndexer.prototype.reverseLookup = function(title) {\n\tthis._upkeep();\n\treturn this.backIndex[title] || Object.create(null);\n};\n\nIndexer.prototype.relinkLookup = function(fromTitle, toTitle, options) {\n\tthis._upkeep();\n\tvar shortlist = undefined;\n\tif (this.lastRelinkFrom === fromTitle) {\n\t\tif (this.lastRelinkTo === toTitle) {\n\t\t\t// We need to reintroduce the relink cache, where temporary info\n\t\t\t// was stored.\n\t\t\toptions.cache = this.lastRelinkCache;\n\t\t\treturn this.lastRelinkResult;\n\t\t}\n\t\tshortlist = Object.keys(this.lastRelinkResult);\n\t}\n\tthis.lastRelinkResult = utils.getRelinkResults(this.wiki, fromTitle, toTitle, this.context, shortlist, options);\n\tthis.lastRelinkTo = toTitle;\n\tthis.lastRelinkFrom = fromTitle;\n\tthis.lastRelinkCache = options.cache;\n\treturn this.lastRelinkResult;\n};\n\nIndexer.prototype._upkeep = function() {\n\tvar title;\n\tif (this.changedTiddlers && (this.context.changed(this.changedTiddlers) || this.context.parent.changed(this.changedTiddlers))) {\n\t\t// If global macro context or whitelist context changed, wipe all\n\t\tthis.rebuild();\n\t}\n\tif (!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tthis.backIndex = Object.create(null);\n\t\tthis.context = utils.getWikiContext(this.wiki);\n\t\tvar titles = this.wiki.getRelinkableTitles();\n\t\tfor (var i = 0; i < titles.length; i++) {\n\t\t\tthis._populate(titles[i]);\n\t\t};\n\t} else if (this.changedTiddlers) {\n\t\t// If there are cached changes, we apply them now.\n\t\tfor (title in this.contexts) {\n\t\t\tvar tiddlerContext = this.contexts[title];\n\t\t\tif (tiddlerContext.changed(this.changedTiddlers)) {\n\t\t\t\tthis._purge(title);\n\t\t\t\tthis._populate(title);\n\t\t\t\tthis._dropResults(title);\n\t\t\t\t// Wipe this change, so we don't risk updating it twice.\n\t\t\t\tthis.changedTiddlers[title] = undefined;\n\t\t\t}\n\t\t}\n\t\tfor (title in this.changedTiddlers) {\n\t\t\tvar change = this.changedTiddlers[title];\n\t\t\tif (change && change.modified) {\n\t\t\t\tthis._purge(title);\n\t\t\t\tthis._populate(title);\n\t\t\t\tthis._dropResults(title);\n\t\t\t}\n\t\t}\n\t\tthis.changedTiddlers = undefined;\n\t}\n};\n\nIndexer.prototype._purge = function(title) {\n\tfor (var entry in this.index[title]) {\n\t\tdelete this.backIndex[entry][title];\n\t}\n\tdelete this.contexts[title];\n\tdelete this.index[title];\n};\n\n// This drops the cached relink results if unsanctioned tiddlers were changed\nIndexer.prototype._dropResults = function(title) {\n\tvar tiddler = this.wiki.getTiddler(title);\n\tif (title !== this.lastRelinkFrom\n\t&& title !== this.lastRelinkTo\n\t&& (!tiddler\n\t\t|| !$tw.utils.hop(tiddler.fields, 'draft.of') // is a draft\n\t\t|| tiddler.fields['draft.of'] !== this.lastRelinkFrom // draft of target\n\t\t|| references(this.index[title], this.lastRelinkFrom))) { // draft references target\n\t\t// This is not the draft of the last relinked title,\n\t\t// so our cached results should be wiped.\n\t\tthis.lastRelinkFrom = undefined;\n\t}\n};\n\nfunction references(list, item) {\n\treturn list !== undefined && list[item];\n};\n\nIndexer.prototype._populate = function(title) {\n\t// Fetch the report for a title, and populate the indexes with result\n\tvar tiddlerContext = new TiddlerContext(this.wiki, this.context, title);\n\tvar references = utils.getTiddlerRelinkReferences(this.wiki, title, tiddlerContext);\n\tthis.index[title] = references;\n\tif (tiddlerContext.hasImports()) {\n\t\tthis.contexts[title] = tiddlerContext;\n\t}\n\tfor (var ref in references) {\n\t\tthis.backIndex[ref] = this.backIndex[ref] || Object.create(null);\n\t\tthis.backIndex[ref][title] = references[ref];\n\t}\n};\n\nexports.RelinkIndexer = Indexer;\n","module-type":"indexer","title":"$:/plugins/flibbles/relink/js/indexer.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/language.js":{"text":"/*\\\nmodule-type: library\n\nThis handles all logging and alerts Relink emits.\n\n\\*/\n\nexports.getString = function(outputType, title, options) {\n\ttitle = \"$:/plugins/flibbles/relink/language/\" + title;\n\treturn options.wiki.renderTiddler(outputType, title, options);\n};\n\nvar logger;\n\nexports.warn = function(string, options) {\n\tif (!logger) {\n\t\tlogger = new $tw.utils.Logger(\"Relinker\");\n\t}\n\tlogger.alert(string);\n};\n\nexports.reportFailures = function(failureList, options) {\n\tvar alertString = this.getString(\"text/html\", \"Error/ReportFailedRelinks\", options)\n\tvar alreadyReported = Object.create(null);\n\tvar reportList = [];\n\t$tw.utils.each(failureList, function(f) {\n\t\tif (!alreadyReported[f]) {\n\t\t\tif ($tw.browser) {\n\t\t\t\t// This might not make the link if the title is complicated.\n\t\t\t\t// Whatever.\n\t\t\t\treportList.push(\"\\n* [[\" + f + \"]]\");\n\t\t\t} else {\n\t\t\t\treportList.push(\"\\n* \" + f);\n\t\t\t}\n\t\t\talreadyReported[f] = true;\n\t\t}\n\t});\n\tthis.warn(alertString + \"\\n\" + reportList.join(\"\"));\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/language.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/mangler.js":{"text":"/*\\\nmodule-type: widget\n\nCreates a mangler widget for field validation. This isn't meant to be used\nby the user. It's only used in Relink configuration.\n\n\\*/\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nvar RelinkManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"relink-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"relink-add-operator\", handler: \"handleAddOperatorEvent\"},\n\t\t{type: \"relink-add-parameter\", handler: \"handleAddParameterEvent\"},\n\t\t{type: \"relink-add-attribute\", handler: \"handleAddAttributeEvent\"}\n\t]);\n};\n\nexports.relinkmangler = RelinkManglerWidget;\n\nRelinkManglerWidget.prototype = new Widget();\n\n// This wraps alert so it can be monkeypatched during testing.\nRelinkManglerWidget.prototype.alert = function(message) {\n\talert(message);\n};\n\nRelinkManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (typeof param !== \"object\" || !param.field) {\n\t\t// Can't handle it.\n\t\treturn true;\n\t}\n\tvar trimmedName = param.field.trim();\n\tif (!trimmedName) {\n\t\t// Still can't handle it, but don't warn.\n\t\treturn true;\n\t}\n\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\tthis.alert($tw.language.getString(\n\t\t\t\"InvalidFieldName\",\n\t\t\t{variables:\n\t\t\t\t{fieldName: trimmedName}\n\t\t\t}\n\t\t));\n\t} else {\n\t\tadd(this.wiki, \"fields\", trimmedName);\n\t}\n\treturn true;\n};\n\n/**Not much validation, even though there are definitely illegal\n * operator names. If you input on, Relink won't relink it, but it\n * won't choke on it either. Tiddlywiki will...\n */\nRelinkManglerWidget.prototype.handleAddOperatorEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param) {\n\t\tadd(this.wiki, \"operators\", param.operator);\n\t}\n\treturn true;\n};\n\nRelinkManglerWidget.prototype.handleAddParameterEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param && param.macro && param.parameter) {\n\t\tif (/\\s/.test(param.macro.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"text/plain\",\n\t\t\t\t\"Error/InvalidMacroName\",\n\t\t\t\t{ variables: {macroName: param.macro},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else if (/[ \\/]/.test(param.parameter.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"text/plain\",\n\t\t\t\t\"Error/InvalidParameterName\",\n\t\t\t\t{ variables: {parameterName: param.parameter},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else {\n\t\t\tadd(this.wiki, \"macros\", param.macro, param.parameter);\n\t\t}\n\t}\n\treturn true;\n};\n\nRelinkManglerWidget.prototype.handleAddAttributeEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param && param.element && param.attribute) {\n\t\tif (/[ \\/]/.test(param.element.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"text/plain\",\n\t\t\t\t\"Error/InvalidElementName\",\n\t\t\t\t{ variables: {elementName: param.element},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else if (/[ \\/]/.test(param.attribute.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"text/plain\",\n\t\t\t\t\"Error/InvalidAttributeName\",\n\t\t\t\t{ variables: {attributeName: param.attribute},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else {\n\t\t\tadd(this.wiki, \"attributes\", param.element, param.attribute);\n\t\t}\n\t}\n\treturn true;\n};\n\nfunction add(wiki, category/*, path parts*/) {\n\tvar path = \"$:/config/flibbles/relink/\" + category;\n\tfor (var x = 2; x < arguments.length; x++) {\n\t\tvar part = arguments[x];\n\t\t// Abort if it's falsy, or only whitespace. Also, trim spaces\n\t\tif (!part || !(part = part.trim())) {\n\t\t\treturn;\n\t\t}\n\t\tpath = path + \"/\" + part;\n\t}\n\tvar def = utils.getDefaultType(wiki);\n\twiki.addTiddler({title: path, text: def});\n};\n","module-type":"widget","title":"$:/plugins/flibbles/relink/js/mangler.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/settings.js":{"text":"/*\\\nmodule-type: library\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar utils = require('./utils');\n\n///// Legacy. You used to be able to access the type from utils.\nexports.getType = utils.getType;\n/////\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/settings.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils.js":{"text":"/*\\\nmodule-type: library\n\nUtility methods for relink.\n\n\\*/\n\nvar macroFilter = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\n/**This works nearly identically to $tw.modules.getModulesByTypeAsHashmap\n * except that this also takes care of migrating V1 relink modules.\n */\nexports.getModulesByTypeAsHashmap = function(moduleType, nameField) {\n\tvar results = Object.create(null);\n\t$tw.modules.forEachModuleOfType(moduleType, function(title, module) {\n\t\tvar key = module[nameField];\n\t\tif (key !== undefined) {\n\t\t\tresults[key] = module;\n\t\t} else {\n\t\t\tfor (var entry in module) {\n\t\t\t\tresults[entry] = {\n\t\t\t\t\trelink: module[entry],\n\t\t\t\t\treport: function() {}};\n\t\t\t\tresults[entry][nameField] = entry;\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.getTiddlerRelinkReferences = function(wiki, title, context) {\n\tvar tiddler = wiki.getTiddler(title),\n\t\treferences = Object.create(null),\n\t\toptions = {settings: context, wiki: wiki};\n\tif (tiddler) {\n\t\ttry {\n\t\t\tfor (var relinker in getRelinkOperators()) {\n\t\t\t\tgetRelinkOperators()[relinker].report(tiddler, function(title, blurb) {\n\t\t\t\t\treferences[title] = references[title] || [];\n\t\t\t\t\treferences[title].push(blurb || '');\n\t\t\t\t}, options);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tif (e.message) {\n\t\t\t\te.message = e.message + \"\\nWhen reporting '\" + title + \"' Relink references\";\n\t\t\t}\n\t\t\tthrow e;\n\t\t}\n\t}\n\treturn references;\n};\n\n/** Returns a pair like this,\n * { title: {field: entry, ... }, ... }\n */\nexports.getRelinkResults = function(wiki, fromTitle, toTitle, context, tiddlerList, options) {\n\toptions = options || {};\n\toptions.wiki = options.wiki || wiki;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\tvar changeList = Object.create(null);\n\tif(fromTitle && toTitle !== undefined) {\n\t\tif (tiddlerList === undefined) {\n\t\t\ttiddlerList = wiki.getRelinkableTitles();\n\t\t}\n\t\tfor (var i = 0; i < tiddlerList.length; i++) {\n\t\t\tvar title = tiddlerList[i];\n\t\t\tvar tiddler = wiki.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\ttry {\n\t\t\t\t\tvar entries = Object.create(null),\n\t\t\t\t\t\toperators = getRelinkOperators();\n\t\t\t\t\toptions.settings = new Contexts.tiddler(wiki, context, title);\n\t\t\t\t\tfor (var operation in operators) {\n\t\t\t\t\t\toperators[operation].relink(tiddler, fromTitle, toTitle, entries, options);\n\t\t\t\t\t}\n\t\t\t\t\tfor (var field in entries) {\n\t\t\t\t\t\t// So long as there is one key,\n\t\t\t\t\t\t// add it to the change list.\n\t\t\t\t\t\tif (tiddler.fields[\"plugin-type\"]) {\n\t\t\t\t\t\t\t// We never change plugins, even if they have links\n\t\t\t\t\t\t\tchangeList[title] = {};\n\t\t\t\t\t\t\tchangeList[title][field] = {impossible: true};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tchangeList[title] = entries;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Should we test for instanceof Error instead?: yes\n\t\t\t\t\t// Does that work in the testing environment?: no\n\t\t\t\t\tif (e.message) {\n\t\t\t\t\t\te.message = e.message + \"\\nWhen relinking '\" + title + \"'\";\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn changeList;\n};\n\nvar Contexts = $tw.modules.applyMethods('relinkcontext');\n\nexports.getContext = function(name) {\n\treturn Contexts[name];\n};\n\nexports.getWikiContext = function(wiki) {\n\t// This gives a fresh context every time. It is up to the indexer or\n\t// the cache to preserve those contexts for as long as needed.\n\tvar whitelist = new Contexts.whitelist(wiki);\n\treturn new Contexts.import(wiki, whitelist, macroFilter);\n};\n\n/** Returns the Relink indexer, or a dummy object which pretends to be one.\n */\nexports.getIndexer = function(wiki) {\n\tif (!wiki._relink_indexer) {\n\t\twiki._relink_indexer = (wiki.getIndexer && wiki.getIndexer(\"RelinkIndexer\")) || new (require('$:/plugins/flibbles/relink/js/utils/backupIndexer.js'))(wiki);\n\t}\n\treturn wiki._relink_indexer;\n};\n\n/**Relinking supports a cache that persists throughout a whole relink op.\n * This is because the Tiddlywiki caches may get wiped multiple times\n * throughout the course of a relink.\n */\nexports.getCacheForRun = function(options, cacheName, initializer) {\n\toptions.cache = options.cache || Object.create(null);\n\tif (!$tw.utils.hop(options.cache, cacheName)) {\n\t\toptions.cache[cacheName] = initializer();\n\t}\n\treturn options.cache[cacheName];\n};\n\n/**Returns a specific relinker.\n * This is useful for wikitext rules which need to parse a filter or a list\n */\nexports.getType = function(name) {\n\tvar Handler = getFieldTypes()[name];\n\treturn Handler ? new Handler() : undefined;\n};\n\nexports.getTypes = function() {\n\t// We don't return fieldTypes, because we don't want it modified,\n\t// and we need to filter out legacy names.\n\tvar rtn = Object.create(null);\n\tfor (var type in getFieldTypes()) {\n\t\tvar typeObject = getFieldTypes()[type];\n\t\trtn[typeObject.typeName] = typeObject;\n\t}\n\treturn rtn;\n};\n\nexports.getDefaultType = function(wiki) {\n\tvar tiddler = wiki.getTiddler(\"$:/config/flibbles/relink/settings/default-type\");\n\tvar defaultType = tiddler && tiddler.fields.text;\n\t// make sure the default actually exists, otherwise default\n\treturn fieldTypes[defaultType] ? defaultType : \"title\";\n};\n\nvar fieldTypes;\n\nfunction getFieldTypes() {\n\tif (!fieldTypes) {\n\t\tfieldTypes = Object.create(null);\n\t\t$tw.modules.forEachModuleOfType(\"relinkfieldtype\", function(title, exports) {\n\t\t\tfunction NewType() {};\n\t\t\tNewType.prototype = exports;\n\t\t\tNewType.typeName = exports.name;\n\t\t\tfieldTypes[exports.name] = NewType;\n\t\t\t// For legacy, if the NewType doesn't have a report method, we add one\n\t\t\tif (!exports.report) {\n\t\t\t\texports.report = function() {};\n\t\t\t}\n\t\t\t// Also for legacy, some of the field types can go by other names\n\t\t\tif (exports.aliases) {\n\t\t\t\t$tw.utils.each(exports.aliases, function(alias) {\n\t\t\t\t\tfieldTypes[alias] = NewType;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\treturn fieldTypes;\n}\n\nvar relinkOperators;\n\nfunction getRelinkOperators() {\n\tif (!relinkOperators) {\n\t\trelinkOperators = exports.getModulesByTypeAsHashmap('relinkoperator', 'name');\n\t}\n\treturn relinkOperators;\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/wikimethods.js":{"text":"/*\\\nmodule-type: wikimethod\n\nIntroduces some utility methods used by Relink.\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.getTiddlerRelinkReferences = function(title) {\n\treturn utils.getIndexer(this).lookup(title);\n};\n\nexports.getTiddlerRelinkBackreferences = function(title) {\n\treturn utils.getIndexer(this).reverseLookup(title);\n};\n\nexports.getRelinkableTitles = function() {\n\tvar toUpdate = \"$:/config/flibbles/relink/to-update\";\n\tvar wiki = this;\n\treturn this.getCacheForTiddler(toUpdate, \"relink-toUpdate\", function() {\n\t\tvar tiddler = wiki.getTiddler(toUpdate);\n\t\tif (tiddler) {\n\t\t\treturn wiki.compileFilter(tiddler.fields.text);\n\t\t} else {\n\t\t\treturn wiki.allTitles;\n\t\t}\n\t})();\n};\n","module-type":"wikimethod","title":"$:/plugins/flibbles/relink/js/wikimethods.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js":{"text":"/*\\\nmodule-type: allfilteroperator\n\nFilter function for [all[relinkable]].\nReturns all tiddlers subject to relinking.\n\n\\*/\n\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.relinkable = function(source,prefix,options) {\n\treturn options.wiki.getRelinkableTitles();\n};\n\n})();\n","module-type":"allfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/references.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns all non-shadow tiddlers that have any\nsort of updatable reference to it.\n\n`relink:backreferences[]]`\n`relink:references[]]`\n\nReturns all tiddlers that reference `fromTiddler` somewhere inside them.\n\nInput is ignored. Maybe it shouldn't do this.\n\\*/\n\nvar LinkedList = $tw.utils.LinkedList;\n\nif (!LinkedList) {\n\t/* If the linked list isn't available, make a quick crappy version. */\n\tLinkedList = function() {this.array=[];};\n\n\tLinkedList.prototype.pushTop = function(array) {\n\t\t$tw.utils.pushTop(this.array, array);\n\t};\n\n\tLinkedList.prototype.toArray = function() {\n\t\treturn this.array;\n\t};\n};\n\nexports.backreferences = function(source,operator,options) {\n\tvar results = new LinkedList();\n\tsource(function(tiddler,title) {\n\t\tresults.pushTop(Object.keys(options.wiki.getTiddlerRelinkBackreferences(title,options)));\n\t});\n\treturn results.toArray();\n};\n\nexports.references = function(source,operator,options) {\n\tvar results = new LinkedList();\n\tsource(function(tiddler,title) {\n\t\tvar refs = options.wiki.getTiddlerRelinkReferences(title,options);\n\t\tif (refs) {\n\t\t\tresults.pushTop(Object.keys(refs));\n\t\t}\n\t});\n\treturn results.toArray();\n};\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/references.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/relink.js":{"text":"/*\\\nmodule-type: filteroperator\n\nThis filter acts as a namespace for several small, simple filters, such as\n\n`[relink:impossible[]]`\n\n\\*/\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nvar relinkFilterOperators;\n\nfunction getRelinkFilterOperators() {\n\tif(!relinkFilterOperators) {\n\t\trelinkFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"relinkfilteroperator\",\n\t\t relinkFilterOperators);\n\t}\n\treturn relinkFilterOperators;\n}\n\nexports.relink = function(source,operator,options) {\n\tvar suffixPair = parseSuffix(operator.suffix);\n\tvar relinkFilterOperator = getRelinkFilterOperators()[suffixPair[0]];\n\tif (relinkFilterOperator) {\n\t\tvar newOperator = $tw.utils.extend({}, operator);\n\t\tnewOperator.suffix = suffixPair[1];\n\t\treturn relinkFilterOperator(source, newOperator, options);\n\t} else {\n\t\treturn [language.getString(\"text/plain\", \"Error/RelinkFilterOperator\", options)];\n\t}\n};\n\nfunction parseSuffix(suffix) {\n\tvar index = suffix? suffix.indexOf(\":\"): -1;\n\tif (index >= 0) {\n\t\treturn [suffix.substr(0, index), suffix.substr(index+1)];\n\t} else {\n\t\treturn [suffix];\n\t}\n}\n","module-type":"filteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/relink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/report.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns a string for each occurrence of that title\nwithin each input title.\n\n[[title]] +[relink:report[fromTiddler]]`\n\nReturns string representation of fromTiddler occurrences in title.\n\\*/\n\nexports.report = function(source,operator,options) {\n\tvar fromTitle = operator.operand,\n\t\tresults = [];\n\tif (fromTitle) {\n\t\tvar blurbs = options.wiki.getTiddlerRelinkBackreferences(fromTitle);\n\t\tsource(function(tiddler, title) {\n\t\t\tif (blurbs[title]) {\n\t\t\t\tresults = results.concat(blurbs[title]);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/report.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/signatures.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nThis filter returns all input tiddlers which are a source of\nrelink configuration.\n\n`[all[tiddlers+system]relink:source[macros]]`\n\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nexports.signatures = function(source,operator,options) {\n\tvar plugin = operator.operand || null;\n\tvar set = getSet(options);\n\tif (plugin === \"$:/core\") {\n\t\t// Core doesn't actually have any settings. We mean Relink\n\t\tplugin = \"$:/plugins/flibbles/relink\";\n\t}\n\tvar signatures = [];\n\tfor (var signature in set) {\n\t\tvar source = set[signature].source;\n\t\tif (options.wiki.getShadowSource(source) === plugin) {\n\t\t\tsignatures.push(signature);\n\t\t}\n\t}\n\treturn signatures;\n};\n\nexports.type = function(source,operator,options) {\n\tvar results = [];\n\tvar set = getSet(options);\n\tsource(function(tiddler, signature) {\n\t\tif (set[signature]) {\n\t\t\tresults.push(set[signature].name);\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.types = function(source,operator,options) {\n\tvar def = utils.getDefaultType(options.wiki);\n\tvar types = Object.keys(utils.getTypes());\n\ttypes.sort();\n\t// move default to front\n\ttypes.sort(function(x,y) { return x === def ? -1 : y === def ? 1 : 0; });\n\treturn types;\n};\n\nexports.source = function(source,operator,options) {\n\tvar results = [];\n\tvar category = operator.suffix;\n\tvar set = getSet(options);\n\tsource(function(tiddler, signature) {\n\t\tif (set[signature]) {\n\t\t\tresults.push(set[signature].source);\n\t\t}\n\t});\n\treturn results;\n};\n\nfunction getSet(options) {\n\treturn options.wiki.getGlobalCache(\"relink-signatures\", function() {\n\t\tvar config = utils.getWikiContext(options.wiki);\n\t\tvar set = Object.create(null);\n\t\tvar categories = {\n\t\t\tattributes: config.getAttributes(),\n\t\t\tfields: config.getFields(),\n\t\t\tmacros: config.getMacros(),\n\t\t\toperators: config.getOperators()};\n\t\t$tw.utils.each(categories, function(list, category) {\n\t\t\t$tw.utils.each(list, function(item, key) {\n\t\t\t\tset[category + \"/\" + key] = item;\n\t\t\t});\n\t\t});\n\t\treturn set;\n\t});\n};\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/signatures.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js":{"text":"/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: relinkfilteroperator\n\nFilter operator that splits each result on the last occurance of the specified separator and returns the last bit.\n\nWhat does this have to do with relink? Nothing. I need this so I can render\nthe configuration menu. I //could// use [splitregexp[]], but then I'd be\nlimited to Tiddlywiki v5.1.20 or later.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitafter = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar index = title.lastIndexOf(operator.operand);\n\t\tif(index < 0) {\n\t\t\t$tw.utils.pushTop(results,title);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,title.substr(index+1));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n\n","title":"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js","type":"application/javascript","module-type":"relinkfilteroperator"},"$:/plugins/flibbles/relink/js/filteroperators/wouldchange.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nwouldchange: Generator.\n\nGiven each input title, it returns all the tiddlers that would be changed if the currentTiddler were to be renamed to the operand.\n\nimpossible: filters all source titles for ones that encounter errors on failure.\n\nTHESE ARE INTERNAL FILTER OPERATOR AND ARE NOT INTENDED TO BE USED BY USERS.\n\n\\*/\n\nvar language = require(\"$:/plugins/flibbles/relink/js/language.js\");\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\n\nexports.wouldchange = function(source,operator,options) {\n\tvar from = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tto = operator.operand,\n\t\tindexer = utils.getIndexer(options.wiki),\n\t\trecords = indexer.relinkLookup(from, to, options);\n\treturn Object.keys(records);\n};\n\nexports.impossible = function(source,operator,options) {\n\tvar from = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tto = operator.operand,\n\t\tresults = [],\n\t\tindexer = utils.getIndexer(options.wiki),\n\t\trecords = indexer.relinkLookup(from, to, options);\n\tsource(function(tiddler, title) {\n\t\tvar fields = records[title];\n\t\tif (fields) {\n\t\t\tfor (var field in fields) {\n\t\t\t\tif (fields[field].impossible) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/wouldchange.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/filter.js":{"text":"/*\\\nThis specifies logic for updating filters to reflect title changes.\n\\*/\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\n\nexports.name = \"filter\";\n\nexports.report = function(filter, callback, options) {\n\t// I cheat here for now. Relink handles reporting too in cases where\n\t// fromTitle is undefined. toTitle is the callback in those cases.\n\texports.relink(filter, undefined, callback, options);\n};\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(filter, fromTitle, toTitle, options) {\n\tvar relinker = new Rebuilder(filter),\n\t\tp = 0, // Current position in the filter string\n\t\tmatch, noPrecedingWordBarrier,\n\t\twordBarrierRequired=false;\n\tvar whitespaceRegExp = /\\s+/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=|\\:\\w+)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg,\n\t\tblurbs = [];\n\twhile(p < filter.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filter);\n\t\tnoPrecedingWordBarrier = false;\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t} else if (p != 0) {\n\t\t\tif (wordBarrierRequired) {\n\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\twordBarrierRequired = false;\n\t\t\t} else {\n\t\t\t\tnoPrecedingWordBarrier = true;\n\t\t\t}\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filter.length) {\n\t\t\tvar val;\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filter);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\t// It's a bad filter\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif(match[1]) { // prefix\n\t\t\t\tp += match[1].length;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\t// We check if this is a standalone title,\n\t\t\t\t// like `[[MyTitle]]`. We treat those like\n\t\t\t\t// `\"MyTitle\"` or `MyTitle`. Not like a run.\n\t\t\t\tvar standaloneTitle = /\\[\\[([^\\]]+)\\]\\]/g;\n\t\t\t\tstandaloneTitle.lastIndex = p;\n\t\t\t\tvar alone = standaloneTitle.exec(filter);\n\t\t\t\tif (!alone || alone.index != p) {\n\t\t\t\t\tif (fromTitle === undefined) {\n\t\t\t\t\t\t// toTitle is a callback method in this case.\n\t\t\t\t\t\tp =reportFilterOperation(filter, function(title, blurb){\n\t\t\t\t\t\t\tif (match[1]) {\n\t\t\t\t\t\t\t\tblurbs.push([title, match[1] + (blurb || '')]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tblurbs.push([title, blurb]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},p,options.settings,options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tp =relinkFilterOperation(relinker,fromTitle,toTitle,filter,p,options.settings,options);\n\t\t\t\t\t}\n\t\t\t\t\t// It's a legit run\n\t\t\t\t\tif (p === undefined) {\n\t\t\t\t\t\t// The filter is malformed\n\t\t\t\t\t\t// We do nothing.\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbracketTitle = alone[1];\n\t\t\t\toperandRegExp.lastIndex = standaloneTitle.lastIndex;\n\t\t\t\tval = alone[1];\n\t\t\t} else {\n\t\t\t\t// standalone Double quoted string, single\n\t\t\t\t// quoted string, or noquote ahead.\n\t\t\t\tval = match[3] || match[4] || match[5];\n\t\t\t}\n\t\t\t// From here on, we're dealing with a standalone title\n\t\t\t// expression. like `\"MyTitle\"` or `[[MyTitle]]`\n\t\t\t// We're much more flexible about relinking these.\n\t\t\tvar preference = undefined;\n\t\t\tif (match[3]) {\n\t\t\t\tpreference = '\"';\n\t\t\t} else if (match[4]) {\n\t\t\t\tpreference = \"'\";\n\t\t\t} else if (match[5]) {\n\t\t\t\tpreference = '';\n\t\t\t}\n\t\t\tif (fromTitle === undefined) {\n\t\t\t\t// Report it\n\t\t\t\tblurbs.push([val, match[1]]);\n\t\t\t} else if (val === fromTitle) {\n\t\t\t\t// Relink it\n\t\t\t\tvar entry = {name: \"title\"};\n\t\t\t\tvar newVal = wrapTitle(toTitle, preference);\n\t\t\t\tif (newVal === undefined || (options.inBraces && newVal.indexOf('}}}') >= 0)) {\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\trelinker.impossible = true;\n\t\t\t\t\t\tp = operandRegExp.lastIndex;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVal = \"[<\"+options.placeholder.getPlaceholderFor(toTitle)+\">]\";\n\t\t\t\t}\n\t\t\t\tif (newVal[0] != '[') {\n\t\t\t\t\t// not bracket enclosed\n\t\t\t\t\t// this requires whitespace\n\t\t\t\t\t// arnound it\n\t\t\t\t\tif (noPrecedingWordBarrier && !match[1]) {\n\t\t\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\t\t}\n\t\t\t\t\twordBarrierRequired = true;\n\t\t\t\t}\n\t\t\t\tentry.output = toTitle;\n\t\t\t\tentry.operator = {operator: \"title\"};\n\t\t\t\tentry.quotation = preference;\n\t\t\t\tif (entry.impossible) {\n\t\t\t\t\trelinker.impossible = true;\n\t\t\t\t}\n\t\t\t\trelinker.add(newVal,p,operandRegExp.lastIndex);\n\t\t\t}\n\t\t\tp = operandRegExp.lastIndex;\n\t\t}\n\t}\n\tif (fromTitle === undefined) {\n\t\t// We delay the blurb calls until now in case it's a malformed\n\t\t// filter string. We don't want to report some, only to find out\n\t\t// it's bad.\n\t\tfor (var i = 0; i < blurbs.length; i++) {\n\t\t\ttoTitle(blurbs[i][0], blurbs[i][1]);\n\t\t}\n\t}\n\tif (relinker.changed() || relinker.impossible) {\n\t\treturn {output: relinker.results(), impossible: relinker.impossible };\n\t}\n\treturn undefined;\n};\n\n/* Same as this.relink, except this has the added constraint that the return\n * value must be able to be wrapped in curly braces. (i.e. '{{{...}}}')\n */\nexports.relinkInBraces = function(filter, fromTitle, toTitle, options) {\n\tvar braceOptions = $tw.utils.extend({inBraces: true}, options);\n\tvar entry = this.relink(filter, fromTitle, toTitle, braceOptions);\n\tif (entry && entry.output && !canBeInBraces(entry.output)) {\n\t\t// It was possible, but it won't fit in braces, so we must give up\n\t\tdelete entry.output;\n\t\tentry.impossible = true;\n\t}\n\treturn entry;\n};\n\nfunction wrapTitle(value, preference) {\n\tvar choices = {\n\t\t\"\": function(v) {return /^[^\\s\\[\\]]*[^\\s\\[\\]\\}]$/.test(v); },\n\t\t\"[\": canBePrettyOperand,\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; }\n\t};\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"[\": function(v) {return \"[[\"+v+\"]]\"; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; }\n\t};\n\tif (choices[preference]) {\n\t\tif (choices[preference](value)) {\n\t\t\treturn wrappers[preference](value);\n\t\t}\n\t}\n\tfor (var quote in choices) {\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrappers[quote](value);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n}\n\nfunction relinkFilterOperation(relinker, fromTitle, toTitle, filterString, p, context, options) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\t// Missing [ in filter expression\n\t\treturn undefined;\n\t}\n\t// Process each operator in turn\n\toperator = parseOperator(filterString, p);\n\tdo {\n\t\tvar entry = undefined, type;\n\t\tif (operator === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tp = operator.opStart;\n\t\tswitch (operator.bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\ttype = \"indirect\";\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// We've got a live reference. relink or report\n\t\t\t\tentry = refHandler.relinkInBraces(operand, fromTitle, toTitle, options);\n\t\t\t\tif (entry && entry.output) {\n\t\t\t\t\t// We don't check the context.\n\t\t\t\t\t// All indirect operands convert.\n\t\t\t\t\trelinker.add(entry.output,p,nextBracketPos);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\ttype = \"string\";\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// Check if this is a relevant operator\n\t\t\t\tvar handler = fieldType(context, operator, options);\n\t\t\t\tif (!handler) {\n\t\t\t\t\t// This operator isn't managed. Bye.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tentry = handler.relink(operand, fromTitle, toTitle, options);\n\t\t\t\tif (!entry || !entry.output) {\n\t\t\t\t\t// The fromTitle wasn't in the operand.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvar wrapped;\n\t\t\t\tif (!canBePrettyOperand(entry.output) || (options.inBraces && entry.output.indexOf('}}}') >= 0)) {\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\tdelete entry.output;\n\t\t\t\t\t\tentry.impossible = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tvar ph = options.placeholder.getPlaceholderFor(entry.output, handler.name);\n\t\t\t\t\twrapped = \"<\"+ph+\">\";\n\t\t\t\t} else {\n\t\t\t\t\twrapped = \"[\"+entry.output+\"]\";\n\t\t\t\t}\n\t\t\t\trelinker.add(wrapped, p-1, nextBracketPos+1);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Unterminated regular expression\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\tif (entry) {\n\t\t\tif (entry.impossible) {\n\t\t\t\trelinker.impossible = true;\n\t\t\t}\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\t// Missing closing bracket in filter expression\n\t\t\treturn undefined;\n\t\t}\n\t\tp = nextBracketPos + 1;\n\t\t// Check for multiple operands\n\t\tswitch (filterString.charAt(p)) {\n\t\tcase ',':\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\toperator.bracket = filterString.charAt(p);\n\t\t\t\toperator.opStart = p + 1;\n\t\t\t\toperator.index++;\n\t\t\t} else {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcontinue;\n\t\tdefault:\n\t\t\toperator = parseOperator(filterString, p);\n\t\t\tcontinue;\n\t\tcase ']':\n\t\t}\n\t\tbreak;\n\t} while(true);\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\t// Missing ] in filter expression\n\t\treturn undefined;\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\nfunction reportFilterOperation(filterString, callback, p, context, options) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\t// Missing [ in filter expression\n\t\treturn undefined;\n\t}\n\toperator = parseOperator(filterString, p);\n\t// Process each operator in turn\n\tdo {\n\t\tif (operator === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tp = operator.opStart;\n\t\tswitch (operator.bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// Just report it\n\t\t\t\trefHandler.report(operand, function(title, blurb) {\n\t\t\t\t\tcallback(title, operatorBlurb(operator, '{' + (blurb || '') + '}'));\n\t\t\t\t}, options);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// Check if this is a relevant operator\n\t\t\t\tvar handler = fieldType(context, operator, options);\n\t\t\t\tif (!handler) {\n\t\t\t\t\t// This operator isn't managed. Bye.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// We just have to report it. Nothing more.\n\t\t\t\thandler.report(operand, function(title, blurb) {\n\t\t\t\t\tcallback(title, operatorBlurb(operator, '[' + (blurb || '') + ']'));\n\t\t\t\t}, options);\n\t\t\t\tbreak;\n\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Unterminated regular expression\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\t// Missing closing bracket in filter expression\n\t\t\treturn undefined;\n\t\t}\n\t\tp = nextBracketPos + 1;\n\t\t// Check for multiple operands\n\t\tswitch (filterString.charAt(p)) {\n\t\tcase ',':\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\toperator.bracket = filterString.charAt(p);\n\t\t\t\toperator.opStart = p + 1;\n\t\t\t\toperator.index++;\n\t\t\t} else {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcontinue;\n\t\tdefault:\n\t\t\toperator = parseOperator(filterString, p);\n\t\t\tcontinue;\n\t\tcase ']':\n\t\t}\n\t\tbreak;\n\t} while(true);\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\t// Missing ] in filter expression\n\t\treturn undefined;\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\nfunction parseOperator(filterString, p) {\n\tvar nextBracketPos, operator = {index: 1};\n\t// Check for an operator prefix\n\tif(filterString.charAt(p) === \"!\") {\n\t\toperator.prefix = \"!\";\n\t\tp++;\n\t}\n\t// Get the operator name\n\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\tif(nextBracketPos === -1) {\n\t\t// Missing [ in filter expression\n\t\treturn undefined;\n\t}\n\tnextBracketPos += p;\n\toperator.bracket = filterString.charAt(nextBracketPos);\n\toperator.operator = filterString.substring(p,nextBracketPos);\n\n\t// Any suffix?\n\tvar colon = operator.operator.indexOf(':');\n\tif(colon > -1) {\n\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t}\n\t// Empty operator means: title\n\telse if(operator.operator === \"\") {\n\t\toperator.operator = \"title\";\n\t\toperator.default = true;\n\t}\n\toperator.opStart = nextBracketPos + 1;\n\treturn operator;\n};\n\nfunction operatorBlurb(operator, enquotedOperand) {\n\tvar suffix = operator.suffix ? (':' + operator.suffix) : '';\n\t// commas to indicate which number operand\n\tsuffix += (new Array(operator.index)).join(',');\n\tvar op = operator.default ? '' : operator.operator;\n\treturn '[' + (operator.prefix || '') + op + suffix + enquotedOperand + ']';\n};\n\n// Returns the relinker needed for a given operator, or returns undefined.\nfunction fieldType(context, operator, options) {\n\tvar op = operator.operator,\n\t\tsuffix = operator.suffix,\n\t\tind = operator.index,\n\t\trtn = (suffix && context.getOperator(op + ':' + suffix, ind))\n\t\t || context.getOperator(op, ind);\n\tif (!rtn && ind == 1) {\n\t\t// maybe it's a field operator?\n\t\trtn = (op === 'field' && context.getFields()[suffix])\n\t\t || (!suffix && !options.wiki.getFilterOperators()[op] && context.getFields()[op]);\n\t}\n\treturn rtn;\n};\n\nfunction canBePrettyOperand(value) {\n\treturn value.indexOf(']') < 0;\n};\n\nfunction canBeInBraces(value) {\n\treturn value.indexOf(\"}}}\") < 0 && value.substr(value.length-2) !== '}}';\n};\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/filter.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/list.js":{"text":"/*\\\nThis manages replacing titles that occur within stringLists, like,\n\nTiddlerA [[Tiddler with spaces]] [[Another Title]]\n\\*/\n\nexports.name = \"list\";\n\nexports.report = function(value, callback, options) {\n\tvar list = $tw.utils.parseStringArray(value);\n\tfor (var i = 0; i < list.length; i++) {\n\t\tcallback(list[i]);\n\t}\n};\n\n/**Returns undefined if no change was made.\n * Parameter: value can literally be a list. This can happen for builtin\n * types 'list' and 'tag'. In those cases, we also return list.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar isModified = false,\n\t\tactualList = false,\n\t\tlist;\n\tif (typeof value !== \"string\") {\n\t\t// Not a string. Must be a list.\n\t\t// clone it, since we may make changes to this possibly\n\t\t// frozen list.\n\t\tlist = (value || []).slice(0);\n\t\tactualList = true;\n\t} else {\n\t\tlist = $tw.utils.parseStringArray(value || \"\");\n\t}\n\t$tw.utils.each(list,function (title,index) {\n\t\tif(title === fromTitle) {\n\t\t\tlist[index] = toTitle;\n\t\t\tisModified = true;\n\t\t}\n\t});\n\tif (isModified) {\n\t\tvar entry = {name: \"list\"};\n\t\t// It doesn't parse correctly alone, it won't\n\t\t// parse correctly in any list.\n\t\tif (!canBeListItem(toTitle)) {\n\t\t\tentry.impossible = true;\n\t\t} else if (actualList) {\n\t\t\tentry.output = list;\n\t\t} else {\n\t\t\tentry.output = $tw.utils.stringifyList(list);\n\t\t}\n\t\treturn entry;\n\t}\n\treturn undefined;\n};\n\nfunction canBeListItem(value) {\n\tvar regexp = /\\]\\][^\\S\\xA0]/m;\n\treturn !regexp.test(value);\n};\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/list.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/reference.js":{"text":"/*\\\nThis manages replacing titles that occur inside text references,\n\ntiddlerTitle\ntiddlerTitle!!field\n!!field\ntiddlerTitle##propertyIndex\n\\*/\n\nexports.name = \"reference\";\n\nexports.report = function(value, callback, options) {\n\tif (value) {\n\t\tvar reference = $tw.utils.parseTextReference(value),\n\t\t\ttitle = reference.title,\n\t\t\tblurb;\n\t\tif (title) {\n\t\t\tif (reference.field) {\n\t\t\t\tblurb = '!!' + reference.field;\n\t\t\t} else if (reference.index) {\n\t\t\t\tblurb = '##' + reference.index;\n\t\t\t}\n\t\t\tcallback(title, blurb);\n\t\t}\n\t}\n};\n\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar entry;\n\tif (value) {\n\t\tvar reference = $tw.utils.parseTextReference(value);\n\t\tif (reference.title === fromTitle) {\n\t\t\tif (!exports.canBePretty(toTitle)) {\n\t\t\t\tentry = {impossible: true};\n\t\t\t} else {\n\t\t\t\treference.title = toTitle;\n\t\t\t\tentry = {output: exports.toString(reference)};\n\t\t\t}\n\t\t}\n\t}\n\treturn entry;\n};\n\n/* Same as this.relink, except this has the added constraint that the return\n * value must be able to be wrapped in curly braces.\n */\nexports.relinkInBraces = function(value, fromTitle, toTitle, options) {\n\tvar log = this.relink(value, fromTitle, toTitle, options);\n\tif (log && log.output && toTitle.indexOf(\"}\") >= 0) {\n\t\tdelete log.output;\n\t\tlog.impossible = true;\n\t}\n\treturn log;\n};\n\nexports.toString = function(textReference) {\n\tvar title = textReference.title || '';\n\tif (textReference.field) {\n\t\treturn title + \"!!\" + textReference.field;\n\t} else if (textReference.index) {\n\t\treturn title + \"##\" + textReference.index;\n\t}\n\treturn title;\n};\n\nexports.canBePretty = function(title) {\n\treturn !title || (title.indexOf(\"!!\") < 0 && title.indexOf(\"##\") < 0);\n};\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/reference.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/title.js":{"text":"/*\\\nThis specifies logic for replacing a single-tiddler field. This is the\nsimplest kind of field type. One title swaps out for the other.\n\\*/\n\n// NOTE TO MODDERS: If you're making your own field types, the name must be\n// alpha characters only.\nexports.name = 'title';\n\nexports.report = function(value, callback, options) {\n\tcallback(value);\n};\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tif (value === fromTitle) {\n\t\treturn {output: toTitle};\n\t}\n\treturn undefined;\n};\n\n// This is legacy support for when 'title' was known as 'field'\nexports.aliases = ['field', 'yes'];\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/title.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js":{"text":"/*\\\nThis specifies logic for updating filters to reflect title changes.\n\\*/\n\nexports.name = \"wikitext\";\n\nvar type = 'text/vnd.tiddlywiki';\n\nvar WikiParser = require(\"$:/core/modules/parsers/wikiparser/wikiparser.js\")[type];\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\");\nvar utils = require('$:/plugins/flibbles/relink/js/utils');\nvar WikitextContext = utils.getContext('wikitext');\n\nfunction collectRules() {\n\tvar rules = Object.create(null);\n\t$tw.modules.forEachModuleOfType(\"relinkwikitextrule\", function(title, exports) {\n\t\tvar names = exports.name;\n\t\tif (typeof names === \"string\") {\n\t\t\tnames = [names];\n\t\t}\n\t\tif (names !== undefined) {\n\t\t\tfor (var i = 0; i < names.length; i++) {\n\t\t\t\trules[names[i]] = exports;\n\t\t\t}\n\t\t}\n\t});\n\treturn rules;\n}\n\nfunction WikiWalker(type, text, options) {\n\tthis.options = options;\n\tif (!this.relinkMethodsInjected) {\n\t\tvar rules = collectRules();\n\t\t$tw.utils.each([this.pragmaRuleClasses, this.blockRuleClasses, this.inlineRuleClasses], function(classList) {\n\t\t\tfor (var name in classList) {\n\t\t\t\tif (rules[name]) {\n\t\t\t\t\tdelete rules[name].name;\n\t\t\t\t\t$tw.utils.extend(classList[name].prototype, rules[name]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tWikiWalker.prototype.relinkMethodsInjected = true;\n\t}\n\tthis.context = new WikitextContext(options.settings);\n\tWikiParser.call(this, type, text, options);\n};\n\nWikiWalker.prototype = Object.create(WikiParser.prototype);\n\nWikiWalker.prototype.parsePragmas = function() {\n\tvar entries = this.tree;\n\twhile (true) {\n\t\tthis.skipWhitespace();\n\t\tif (this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules, this.pos);\n\t\tif (!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\tentries.push.apply(entries, this.handleRule(nextMatch));\n\t}\n\treturn entries;\n};\n\nWikiWalker.prototype.parseInlineRunUnterminated = function(options) {\n\tvar entries = [];\n\tvar nextMatch = this.findNextMatch(this.inlineRules, this.pos);\n\twhile (this.pos < this.sourceLength && nextMatch) {\n\t\tif (nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\tentries.push.apply(entries, this.handleRule(nextMatch));\n\t\tnextMatch = this.findNextMatch(this.inlineRules, this.pos);\n\t}\n\tthis.pos = this.sourceLength;\n\treturn entries;\n};\n\nWikiWalker.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\tvar entries = [];\n\toptions = options || {};\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\tif (terminatorMatch) {\n\t\t\tif (!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif (options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn entries;\n\t\t\t}\n\t\t}\n\t\tif (inlineRuleMatch) {\n\t\t\tif (inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\tentries.push.apply(entries, this.handleRule(inlineRuleMatch));\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules, this.pos);\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\tthis.pos = this.sourceLength;\n\treturn entries;\n\n};\n\nWikiWalker.prototype.parseBlock = function(terminatorRegExp) {\n\tvar terminatorRegExp = /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif (this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\tvar nextMatch = this.findNextMatch(this.blockRules, this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn this.handleRule(nextMatch);\n\t}\n\treturn this.parseInlineRun(terminatorRegExp);\n};\n\nWikiWalker.prototype.amendRules = function(type, names) {\n\tvar only;\n\tWikiParser.prototype.amendRules.call(this, type, names);\n\tif (type === \"only\") {\n\t\tonly = true;\n\t} else if (type === \"except\") {\n\t\tonly = false;\n\t} else {\n\t\treturn;\n\t}\n\tif (only !== (names.indexOf(\"macrodef\") >= 0) && this.options.macrodefCanBeDisabled) {\n\t\tthis.options.placeholder = undefined\n\t}\n\tif (only !== (names.indexOf(\"html\") >= 0)) {\n\t\tthis.context.allowWidgets = disabled;\n\t}\n\tif (only !== (names.indexOf(\"prettylink\") >= 0)) {\n\t\tthis.context.allowPrettylinks = disabled;\n\t}\n};\n\nfunction disabled() { return false; };\n\n/// Reporter\n\nfunction WikiReporter(type, text, callback, options) {\n\tthis.callback = callback;\n\tWikiWalker.call(this, type, text, options);\n};\n\nWikiReporter.prototype = Object.create(WikiWalker.prototype);\n\nWikiReporter.prototype.handleRule = function(ruleInfo) {\n\tif (ruleInfo.rule.report) {\n\t\truleInfo.rule.report(this.source, this.callback, this.options);\n\t} else {\n\t\tif (ruleInfo.rule.matchRegExp !== undefined) {\n\t\t\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\n\t\t} else {\n\t\t\t// We can't easily determine the end of this\n\t\t\t// rule match. We'll \"parse\" it so that\n\t\t\t// parser.pos gets updated, but we throw away\n\t\t\t// the results.\n\t\t\truleInfo.rule.parse();\n\t\t}\n\t}\n};\n\nexports.report = function(wikitext, callback, options) {\n\t// Unfortunately it's the side-effect of creating this that reports.\n\tnew WikiReporter(options.type, wikitext, callback, options);\n};\n\n/// Relinker\n\nfunction WikiRelinker(type, text, fromTitle, toTitle, options) {\n\tthis.fromTitle = fromTitle;\n\tthis.toTitle = toTitle;\n\tthis.placeholder = options.placeholder;\n\tif (this.placeholder) {\n\t\tthis.placeholder.parser = this;\n\t}\n\tWikiWalker.call(this, type, text, options);\n};\n\nWikiRelinker.prototype = Object.create(WikiWalker.prototype);\n\nWikiRelinker.prototype.handleRule = function(ruleInfo) {\n\tif (ruleInfo.rule.relink) {\n\t\tvar start = ruleInfo.matchIndex;\n\t\tvar newEntry = ruleInfo.rule.relink(this.source, this.fromTitle, this.toTitle, this.options);\n\t\tif (newEntry !== undefined) {\n\t\t\tif (newEntry.output) {\n\t\t\t\tnewEntry.start = start;\n\t\t\t\tnewEntry.end = this.pos;\n\t\t\t}\n\t\t\treturn [newEntry];\n\t\t}\n\t} else {\n\t\tif (ruleInfo.rule.matchRegExp !== undefined) {\n\t\t\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\n\t\t} else {\n\t\t\t// We can't easily determine the end of this\n\t\t\t// rule match. We'll \"parse\" it so that\n\t\t\t// parser.pos gets updated, but we throw away\n\t\t\t// the results.\n\t\t\truleInfo.rule.parse();\n\t\t}\n\t}\n\treturn [];\n};\n\nexports.relink = function(wikitext, fromTitle, toTitle, options) {\n\tvar parser = new WikiRelinker(options.type, wikitext, fromTitle, toTitle, options),\n\t\twikiEntry = undefined;\n\t// Now that we have an array of entries, let's produce the wikiText entry\n\t// containing them all.\n\tif (parser.tree.length > 0) {\n\t\tvar builder = new Rebuilder(wikitext);\n\t\twikiEntry = {};\n\t\tfor (var i = 0; i < parser.tree.length; i++) {\n\t\t\tvar entry = parser.tree[i];\n\t\t\tif (entry.impossible) {\n\t\t\t\twikiEntry.impossible = true;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\tbuilder.add(entry.output, entry.start, entry.end);\n\t\t\t}\n\t\t}\n\t\twikiEntry.output = builder.results();\n\t}\n\treturn wikiEntry;\n};\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/fields.js":{"text":"/*\\\n\nHandles all fields specified in the plugin configuration. Currently, this\nonly supports single-value fields.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = 'fields';\n\nexports.report = function(tiddler, callback, options) {\n\tvar fields = options.settings.getFields();\n\t$tw.utils.each(fields, function(handler, field) {\n\t\tvar input = tiddler.fields[field];\n\t\tif (input) {\n\t\t\tif (field === 'list' && tiddler.fields['plugin-type']) {\n\t\t\t\t// We have a built-in exception here. plugins use their list\n\t\t\t\t// field differently. There's a whole mechanism for what\n\t\t\t\t// they actually point to, but let's not bother with that now\n\t\t\t\treturn;\n\t\t\t}\n\t\t\thandler.report(input, function(title, blurb) {\n\t\t\t\tif (blurb) {\n\t\t\t\t\tcallback(title, field + ': ' + blurb);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(title, field);\n\t\t\t\t}\n\t\t\t}, options);\n\t\t}\n\t});\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = options.settings.getFields();\n\t$tw.utils.each(fields, function(handler, field) {\n\t\tvar input = tiddler.fields[field];\n\t\tif (input) {\n\t\t\tif (field === 'list' && tiddler.fields['plugin-type']) {\n\t\t\t\t// Same deal as above. Skip.\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar entry = handler.relink(input, fromTitle, toTitle, options);\n\t\t\tif (entry !== undefined) {\n\t\t\t\tchanges[field] = entry;\n\t\t\t}\n\t\t}\n\t});\n};\n","module-type":"relinkoperator","title":"$:/plugins/flibbles/relink/js/relinkoperations/fields.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text.js":{"text":"/*\\\n\nDepending on the tiddler type, this will apply textOperators which may\nrelink titles within the body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar defaultOperator = \"text/vnd.tiddlywiki\";\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nexports.name = 'text';\n\nvar textOperators = utils.getModulesByTypeAsHashmap('relinktext', 'type');\n\n// These are deprecated. Don't use them.\nvar oldTextOperators = utils.getModulesByTypeAsHashmap('relinktextoperator', 'type');\n\n// $:/DefaultTiddlers is a tiddler which has type \"text/vnd.tiddlywiki\",\n// but it lies. It doesn't contain wikitext. It contains a filter, so\n// we pretend it has a filter type.\n// If you want to be able to add more exceptions for your plugin, let me know.\nvar exceptions = {\n\t\"$:/DefaultTiddlers\": \"text/x-tiddler-filter\"\n};\n\nexports.report = function(tiddler, callback, options) {\n\tvar fields = tiddler.fields;\n\tif (fields.text) {\n\t\tvar type = exceptions[fields.title] || fields.type || defaultOperator;\n\t\tif (textOperators[type]) {\n\t\t\ttextOperators[type].report(tiddler.fields.text, callback, options);\n\t\t} else if (oldTextOperators[type]) {\n\t\t\t// For the deprecated text operators\n\t\t\toldTextOperators[type].report(tiddler, callback, options);\n\t\t}\n\t}\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = tiddler.fields;\n\tif (fields.text) {\n\t\tvar type = exceptions[fields.title] || fields.type || defaultOperator,\n\t\t\tentry;\n\t\tif (textOperators[type]) {\n\t\t\tentry = textOperators[type].relink(tiddler.fields.text, fromTitle, toTitle, options);\n\t\t} else if (oldTextOperators[type]) {\n\t\t\t// For the deprecated text operators\n\t\t\tentry = oldTextOperators[type].relink(tiddler, fromTitle, toTitle, options);\n\t\t}\n\t\tif (entry) {\n\t\t\tchanges.text = entry;\n\t\t}\n\t}\n};\n","module-type":"relinkoperator","title":"$:/plugins/flibbles/relink/js/relinkoperations/text.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js":{"text":"/*\\\n\nThis relinks tiddlers which contain filters in their body, as oppose to\nwikitext.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('filter');\n\nexports.type = 'text/x-tiddler-filter';\n\nexports.report = filterHandler.report;\nexports.relink = filterHandler.relink;\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/listtext.js":{"text":"/*\\\n\nThis relinks tiddlers which contain a tiddler list as their body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar listHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('list');\n\nexports.type = 'text/x-tiddler-list';\n\nexports.report = listHandler.report;\nexports.relink = listHandler.relink;\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/listtext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/referencetext.js":{"text":"/*\\\n\nThis relinks tiddlers which contain a tiddler reference as their body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('reference');\n\nexports.type = 'text/x-tiddler-reference';\n\nexports.report = refHandler.report;\nexports.relink = refHandler.relink;\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/referencetext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/titletext.js":{"text":"/*\\\n\nThis relinks tiddlers which contain a single title as their body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar titleHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('title');\n\nexports.type = 'text/x-tiddler-title';\n\nexports.report = titleHandler.report;\nexports.relink = titleHandler.relink;\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/titletext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js":{"text":"/*\\\n\nChecks for fromTitle in text. If found, sees if it's relevant,\nand tries to swap it out if it is.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Placeholder = require(\"$:/plugins/flibbles/relink/js/utils/placeholder.js\");\nvar wikitextHandler = require('$:/plugins/flibbles/relink/js/utils.js').getType('wikitext');\n\nexports.type = 'text/vnd.tiddlywiki';\n\nexports.report = wikitextHandler.report;\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar placeholder = new Placeholder();\n\tvar currentOptions = Object.create(options);\n\tcurrentOptions.placeholder = placeholder;\n\tvar entry = wikitextHandler.relink(text, fromTitle, toTitle, currentOptions);\n\tif (entry && entry.output) {\n\t\t// If there's output, we've also got to prepend any macros\n\t\t// that the placeholder defined.\n\t\tvar preamble = placeholder.getPreamble();\n\t\tentry.output = preamble + entry.output;\n\t}\n\treturn entry;\n};\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles code blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"`` [[Renamed Title]] ``\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"codeinline\", \"codeblock\"];\n\nexports.relink = function(text) {\n\tvar reEnd;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// I'm lazy. This relink method works for both codeblock and codeinline\n\tif (this.match[0].length > 2) {\n\t\t// Must be a codeblock\n\t\treEnd = /\\r?\\n```$/mg;\n\t} else {\n\t\t// Must be a codeinline\n\t\treEnd = new RegExp(this.match[1], \"mg\");\n\t}\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(text);\n\tif (match) {\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn undefined;\n};\n\n// Same thing. Just skip the pos ahead.\nexports.report = exports.relink;\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles comment blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"commentinline\", \"commentblock\"];\n\nexports.relink = function(text) {\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\treturn undefined;\n};\n\nexports.report = exports.relink;\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of filtered transclusions in wiki text like,\n\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n\nThis renames both the list and the template field.\n\n\\*/\n\nexports.name = ['filteredtranscludeinline', 'filteredtranscludeblock'];\n\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('filter');\nvar utils = require(\"./utils.js\");\n\nexports.report = function(text, callback, options) {\n\tvar m = this.match,\n\t\tfilter = m[1],\n\t\ttemplate = $tw.utils.trim(m[3]),\n\t\tappend = template ? '||' + template + '}}}' : '}}}';\n\tfilterHandler.report(filter, function(title, blurb) {\n\t\tcallback(title, '{{{' + blurb + append);\n\t}, options);\n\tif (template) {\n\t\tcallback(template, '{{{' + $tw.utils.trim(filter).replace(/\\r?\\n/mg, ' ') + '||}}}');\n\t}\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar m = this.match,\n\t\tfilter = m[1],\n\t\ttooltip = m[2],\n\t\ttemplate = m[3],\n\t\tstyle = m[4],\n\t\tclasses = m[5],\n\t\tparser = this.parser,\n\t\tentry = {};\n\tparser.pos = this.matchRegExp.lastIndex;\n\tvar modified = false;\n\n\tvar filterEntry = filterHandler.relink(filter, fromTitle, toTitle, options);\n\tif (filterEntry !== undefined) {\n\t\tif (filterEntry.output) {\n\t\t\tfilter = filterEntry.output;\n\t\t\tmodified = true;\n\t\t}\n\t\tif (filterEntry.impossible) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\t// preserves user-inputted whitespace\n\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tif (!modified) {\n\t\tif (!entry.impossible) {\n\t\t\treturn undefined;\n\t\t}\n\t} else {\n\t\tvar output = this.makeFilteredtransclude(this.parser, filter, tooltip, template, style, classes);\n\t\tif (output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t} else {\n\t\t\t// By copying over the ending newline of the original\n\t\t\t// text if present, thisrelink method thus works for\n\t\t\t// both the inline and block rule\n\t\t\tentry.output = output + utils.getEndingNewline(m[0]);\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeFilteredtransclude = function(parser, filter, tooltip, template, style, classes) {\n\tif (canBePretty(filter) && canBePrettyTemplate(template)) {\n\t\treturn prettyList(filter, tooltip, template, style, classes);\n\t}\n\tif (classes !== undefined) {\n\t\tclasses = classes.split('.').join(' ');\n\t}\n\treturn utils.makeWidget(parser, '$list', {\n\t\tfilter: filter,\n\t\ttooltip: tooltip,\n\t\ttemplate: template,\n\t\tstyle: style || undefined,\n\t\titemClass: classes});\n};\n\nfunction prettyList(filter, tooltip, template, style, classes) {\n\tif (tooltip === undefined) {\n\t\ttooltip = '';\n\t} else {\n\t\ttooltip = \"|\" + tooltip;\n\t}\n\tif (template === undefined) {\n\t\ttemplate = '';\n\t} else {\n\t\ttemplate = \"||\" + template;\n\t}\n\tif (classes === undefined) {\n\t\tclasses = '';\n\t} else {\n\t\tclasses = \".\" + classes;\n\t}\n\tstyle = style || '';\n\treturn \"{{{\"+filter+tooltip+template+\"}}\"+style+\"}\"+classes;\n};\n\nfunction canBePretty(filter) {\n\treturn filter.indexOf('|') < 0 && filter.indexOf('}}') < 0;\n};\n\nfunction canBePrettyTemplate(template) {\n\treturn !template || (\n\t\ttemplate.indexOf('|') < 0\n\t\t&& template.indexOf('{') < 0\n\t\t&& template.indexOf('}') < 0);\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in attributes of widgets and html elements\nThis is configurable to select exactly which attributes of which elements\nshould be changed.\n\n<$link to=\"TiddlerTitle\" />\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar refHandler = relinkUtils.getType('reference');\nvar filterHandler = relinkUtils.getType('filter');\nvar ImportContext = relinkUtils.getContext('import');\nvar macrocall = require(\"./macrocall.js\");\n\nexports.name = \"html\";\n\nexports.report = function(text, callback, options) {\n\tvar managedElement = this.parser.context.getAttribute(this.nextTag.tag);\n\tvar importFilterAttr;\n\tvar element = this.nextTag.tag;\n\tfor (var attributeName in this.nextTag.attributes) {\n\t\tvar attr = this.nextTag.attributes[attributeName];\n\t\tvar nextEql = text.indexOf('=', attr.start);\n\t\t// This is the rare case of changing tiddler\n\t\t// \"true\" to something else when \"true\" is\n\t\t// implicit, like <$link to /> We ignore those.\n\t\tif (nextEql < 0 || nextEql > attr.end) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\timportFilterAttr = attr;\n\t\t}\n\t\tvar oldLength, quotedValue = undefined, entry;\n\t\tif (attr.type === \"string\") {\n\t\t\tvar handler = getAttributeHandler(this.parser.context, this.nextTag, attributeName, options);\n\t\t\tif (!handler) {\n\t\t\t\t// We don't manage this attribute. Bye.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thandler.report(attr.value, function(title, blurb) {\n\t\t\t\tif (blurb) {\n\t\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + '=\"' + blurb + '\" />');\n\t\t\t\t} else {\n\t\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + ' />');\n\t\t\t\t}\n\t\t\t}, options);\n\t\t} else if (attr.type === \"indirect\") {\n\t\t\tentry = refHandler.report(attr.textReference, function(title, blurb) {\n\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + '={{' + (blurb || '') + '}} />');\n\t\t\t}, options);\n\t\t} else if (attr.type === \"filtered\") {\n\t\t\tentry = filterHandler.report(attr.filter, function(title, blurb) {\n\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + '={{{' + blurb + '}}} />');\n\t\t\t}, options);\n\t\t} else if (attr.type === \"macro\") {\n\t\t\tvar macro = attr.value;\n\t\t\tentry = macrocall.reportAttribute(this.parser, macro, function(title, blurb) {\n\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + '=' + blurb + ' />');\n\t\t\t}, options);\n\t\t}\n\t\tif (quotedValue === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\t// If this is an import variable filter, we gotta\n\t\t\t// remember this new value when we import lower down.\n\t\t\timportFilterAttr = quotedValue;\n\t\t}\n\t}\n\tif (importFilterAttr) {\n\t\tprocessImportFilter(this.parser, importFilterAttr, options);\n\t}\n\tthis.parse();\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar managedElement = this.parser.context.getAttribute(this.nextTag.tag),\n\t\tbuilder = new Rebuilder(text, this.nextTag.start);\n\tvar importFilterAttr;\n\tvar widgetEntry = {};\n\twidgetEntry.attributes = Object.create(null);\n\twidgetEntry.element = this.nextTag.tag;\n\tfor (var attributeName in this.nextTag.attributes) {\n\t\tvar attr = this.nextTag.attributes[attributeName];\n\t\tvar nextEql = text.indexOf('=', attr.start);\n\t\t// This is the rare case of changing tiddler\n\t\t// \"true\" to something else when \"true\" is\n\t\t// implicit, like <$link to /> We ignore those.\n\t\tif (nextEql < 0 || nextEql > attr.end) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\timportFilterAttr = attr;\n\t\t}\n\t\tvar oldLength, quotedValue = undefined, entry;\n\t\tvar nestedOptions = Object.create(options);\n\t\tnestedOptions.settings = this.parser.context;\n\t\tswitch (attr.type) {\n\t\tcase 'string':\n\t\t\tvar handler = getAttributeHandler(this.parser.context, this.nextTag, attributeName, options);\n\t\t\tif (!handler) {\n\t\t\t\t// We don't manage this attribute. Bye.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tentry = handler.relink(attr.value, fromTitle, toTitle, nestedOptions);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\tvar quote = utils.determineQuote(text, attr);\n\t\t\t\toldLength = attr.value.length + (quote.length * 2);\n\t\t\t\tquotedValue = utils.wrapAttributeValue(entry.output,quote);\n\t\t\t\tif (quotedValue === undefined) {\n\t\t\t\t\t// The value was unquotable. We need to make\n\t\t\t\t\t// a macro in order to replace it.\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\t// but we can't...\n\t\t\t\t\t\tentry.impossible = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar value = options.placeholder.getPlaceholderFor(entry.output,handler.name)\n\t\t\t\t\t\tquotedValue = \"<<\"+value+\">>\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'indirect':\n\t\t\tentry = refHandler.relinkInBraces(attr.textReference, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\t// +4 for '{{' and '}}'\n\t\t\t\toldLength = attr.textReference.length + 4;\n\t\t\t\tquotedValue = \"{{\"+entry.output+\"}}\";\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'filtered':\n\t\t\tentry = filterHandler.relinkInBraces(attr.filter, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\t// +6 for '{{{' and '}}}'\n\t\t\t\toldLength = attr.filter.length + 6;\n\t\t\t\tquotedValue = \"{{{\"+ entry.output +\"}}}\";\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'macro':\n\t\t\tvar macro = attr.value;\n\t\t\tentry = macrocall.relinkAttribute(this.parser, macro, text, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\t// already includes '<<' and '>>'\n\t\t\t\toldLength = macro.end-macro.start;\n\t\t\t\tquotedValue = entry.output;\n\t\t\t}\n\t\t}\n\t\tif (entry.impossible) {\n\t\t\twidgetEntry.impossible = true;\n\t\t}\n\t\tif (quotedValue === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\t// If this is an import variable filter, we gotta\n\t\t\t// remember this new value when we import lower down.\n\t\t\timportFilterAttr = quotedValue;\n\t\t}\n\t\t// We count backwards from the end to preserve whitespace\n\t\tvar valueStart = attr.end - oldLength;\n\t\tbuilder.add(quotedValue, valueStart, attr.end);\n\t}\n\tif (importFilterAttr) {\n\t\tprocessImportFilter(this.parser, importFilterAttr, options);\n\t}\n\tvar tag = this.parse()[0];\n\tif (tag.children) {\n\t\tfor (var i = 0; i < tag.children.length; i++) {\n\t\t\tvar child = tag.children[i];\n\t\t\tif (child.output) {\n\t\t\t\tbuilder.add(child.output, child.start, child.end);\n\t\t\t}\n\t\t\tif (child.impossible) {\n\t\t\t\twidgetEntry.impossible = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (builder.changed() || widgetEntry.impossible) {\n\t\twidgetEntry.output = builder.results(this.parser.pos);\n\t\treturn widgetEntry;\n\t}\n\treturn undefined;\n};\n\n/** Returns the field handler for the given attribute of the given widget.\n * If this returns undefined, it means we don't handle it. So skip.\n */\nfunction getAttributeHandler(context, widget, attributeName, options) {\n\tif (widget.tag === \"$macrocall\") {\n\t\tvar nameAttr = widget.attributes[\"$name\"];\n\t\tif (nameAttr) {\n\t\t\tvar macro = context.getMacro(nameAttr.value);\n\t\t\tif (macro) {\n\t\t\t\treturn macro[attributeName];\n\t\t\t}\n\t\t}\n\t} else {\n\t\tvar element = context.getAttribute(widget.tag);\n\t\tif (element) {\n\t\t\treturn element[attributeName];\n\t\t}\n\t}\n\treturn undefined;\n};\n\nfunction computeAttribute(context, attribute, options) {\n\tvar value;\n\tif(attribute.type === \"filtered\") {\n\t\tvar parentWidget = context.widget;\n\t\tvalue = options.wiki.filterTiddlers(attribute.filter,parentWidget)[0] || \"\";\n\t} else if(attribute.type === \"indirect\") {\n\t\tvar parentWidget = context.widget;\n\t\tvalue = options.wiki.getTextReference(attribute.textReference,\"\",parentWidget.variables.currentTiddler.value);\n\t} else if(attribute.type === \"macro\") {\n\t\tvar parentWidget = context.widget;\n\t\tvalue = parentWidget.getVariable(attribute.value.name,{params: attribute.value.params});\n\t} else { // String attribute\n\t\tvalue = attribute.value;\n\t}\n\treturn value;\n};\n\n// This processes a <$importvariables> filter attribute and adds any new\n// variables to our parser.\nfunction processImportFilter(parser, importAttribute, options) {\n\tif (typeof importAttribute === \"string\") {\n\t\t// It was changed. Reparse it. It'll be a quoted\n\t\t// attribute value. Add a dummy attribute name.\n\t\timportAttribute = $tw.utils.parseAttribute(\"p=\"+importAttribute, 0)\n\t}\n\tvar context = parser.context;\n\tvar importFilter = computeAttribute(context, importAttribute, options);\n\tparser.context = new ImportContext(options.wiki, context, importFilter);\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[img[tiddler.jpg]]\n\n[img width=23 height=24 [Description|tiddler.jpg]]\n\n\\*/\n\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('filter');\nvar macrocall = require(\"./macrocall.js\");\nvar utils = require(\"./utils.js\");\n\nexports.name = \"image\";\n\nexports.report = function(text, callback, options) {\n\tvar ptr = this.nextImage.start + 4; //[img\n\tvar inSource = false;\n\tfor (var attributeName in this.nextImage.attributes) {\n\t\tvar attr = this.nextImage.attributes[attributeName];\n\t\tif (attributeName === \"source\" || attributeName === \"tooltip\") {\n\t\t\tif (inSource) {\n\t\t\t\tptr = text.indexOf('|', ptr);\n\t\t\t} else {\n\t\t\t\tptr = text.indexOf('[', ptr);\n\t\t\t\tinSource = true;\n\t\t\t}\n\t\t\tptr += 1;\n\t\t}\n\t\tif (attributeName === \"source\") {\n\t\t\tvar tooltip = this.nextImage.attributes.tooltip;\n\t\t\tvar blurb = '[img[' + (tooltip ? tooltip.value : '') + ']]';\n\t\t\tcallback(attr.value, blurb);\n\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\tptr = text.indexOf(']]', ptr) + 2;\n\t\t} else if (attributeName !== \"tooltip\") {\n\t\t\tptr = reportAttribute(this.parser, attr, callback, options);\n\t\t}\n\t}\n\tthis.parser.pos = ptr;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar ptr = this.nextImage.start,\n\t\tbuilder = new Rebuilder(text, ptr),\n\t\tmakeWidget = false,\n\t\tskipSource = false,\n\t\timageEntry;\n\tif (this.nextImage.attributes.source.value === fromTitle && !canBePretty(toTitle, this.nextImage.attributes.tooltip)) {\n\t\tif (this.parser.context.allowWidgets() && (utils.wrapAttributeValue(toTitle) || options.placeholder)) {\n\t\t\tmakeWidget = true;\n\t\t\tbuilder.add(\"<$image\", ptr, ptr+4);\n\t\t} else {\n\t\t\t// We won't be able to make a placeholder to replace\n\t\t\t// the source attribute. We check now so we don't\n\t\t\t// prematurely convert into a widget.\n\t\t\t// Keep going in case other attributes need replacing.\n\t\t\tskipSource = true;\n\t\t}\n\t}\n\tptr += 4; //[img\n\tvar inSource = false;\n\tfor (var attributeName in this.nextImage.attributes) {\n\t\tvar attr = this.nextImage.attributes[attributeName];\n\t\tif (attributeName === \"source\" || attributeName === \"tooltip\") {\n\t\t\tif (inSource) {\n\t\t\t\tptr = text.indexOf('|', ptr);\n\t\t\t} else {\n\t\t\t\tptr = text.indexOf('[', ptr);\n\t\t\t\tinSource = true;\n\t\t\t}\n\t\t\tif (makeWidget) {\n\t\t\t\tif (\" \\t\\n\".indexOf(text[ptr-1]) >= 0) {\n\t\t\t\t\tbuilder.add('', ptr, ptr+1);\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.add(' ', ptr, ptr+1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tptr += 1;\n\t\t}\n\t\tif (attributeName === \"source\") {\n\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\tif (attr.value === fromTitle) {\n\t\t\t\tif (makeWidget) {\n\t\t\t\t\tvar quotedValue = utils.wrapAttributeValue(toTitle);\n\t\t\t\t\tif (quotedValue === undefined) {\n\t\t\t\t\t\tvar key = options.placeholder.getPlaceholderFor(toTitle);\n\t\t\t\t\t\tbuilder.add(\"source=<<\"+key+\">>\", ptr, ptr+fromTitle.length);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuilder.add(\"source=\"+quotedValue, ptr, ptr+fromTitle.length);\n\t\t\t\t\t}\n\t\t\t\t} else if (!skipSource) {\n\t\t\t\t\tbuilder.add(toTitle, ptr, ptr+fromTitle.length);\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.impossible = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tptr = text.indexOf(']]', ptr);\n\t\t\tif (makeWidget) {\n\t\t\t\tbuilder.add(\"/>\", ptr, ptr+2);\n\t\t\t}\n\t\t\tptr += 2;\n\t\t} else if (attributeName === \"tooltip\") {\n\t\t\tif (makeWidget) {\n\t\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\t\tvar quotedValue = utils.wrapAttributeValue(attr.value);\n\t\t\t\tbuilder.add(\"tooltip=\"+quotedValue, ptr, ptr+attr.value.length);\n\t\t\t}\n\t\t} else {\n\t\t\tptr = relinkAttribute(this.parser, attr, builder, fromTitle, toTitle, options);\n\t\t}\n\t}\n\tthis.parser.pos = ptr;\n\tif (builder.changed() || builder.impossible) {\n\t\timageEntry = {\n\t\t\toutput: builder.results(ptr),\n\t\t\timpossible: builder.impossible };\n\t}\n\treturn imageEntry;\n};\n\nfunction reportAttribute(parser, attribute, callback, options) {\n\tvar text = parser.source;\n\tvar ptr = text.indexOf(attribute.name, attribute.start);\n\tvar end;\n\tptr += attribute.name.length;\n\tptr = text.indexOf('=', ptr);\n\tif (attribute.type === \"string\") {\n\t\tptr = text.indexOf(attribute.value, ptr)\n\t\tvar quote = utils.determineQuote(text, attribute);\n\t\t// ignore first quote. We already passed it\n\t\tend = ptr + quote.length + attribute.value.length;\n\t} else if (attribute.type === \"indirect\") {\n\t\tptr = text.indexOf('{{', ptr);\n\t\tvar end = ptr + attribute.textReference.length + 4;\n\t\trefHandler.report(attribute.textReference, function(title, blurb) {\n\t\t\tcallback(title, '[img ' + attribute.name + '={{' + (blurb || '') + '}}]');\n\t\t}, options);\n\t} else if (attribute.type === \"filtered\") {\n\t\tptr = text.indexOf('{{{', ptr);\n\t\tvar end = ptr + attribute.filter.length + 6;\n\t\tfilterHandler.report(attribute.filter, function(title, blurb) {\n\t\t\tcallback(title, '[img ' + attribute.name + '={{{' + blurb + '}}}]');\n\t\t}, options);\n\t} else if (attribute.type === \"macro\") {\n\t\tptr = text.indexOf(\"<<\", ptr);\n\t\tvar end = attribute.value.end;\n\t\tvar macro = attribute.value;\n\t\toldValue = attribute.value;\n\t\tmacrocall.reportAttribute(parser, macro, function(title, blurb) {\n\t\t\tcallback(title, '[img ' + attribute.name + '=' + blurb + ']');\n\t\t}, options);\n\t}\n\treturn end;\n};\n\nfunction relinkAttribute(parser, attribute, builder, fromTitle, toTitle, options) {\n\tvar text = builder.text;\n\tvar ptr = text.indexOf(attribute.name, attribute.start);\n\tvar end;\n\tptr += attribute.name.length;\n\tptr = text.indexOf('=', ptr);\n\tif (attribute.type === \"string\") {\n\t\tptr = text.indexOf(attribute.value, ptr)\n\t\tvar quote = utils.determineQuote(text, attribute);\n\t\t// ignore first quote. We already passed it\n\t\tend = ptr + quote.length + attribute.value.length;\n\t} else if (attribute.type === \"indirect\") {\n\t\tptr = text.indexOf('{{', ptr);\n\t\tvar end = ptr + attribute.textReference.length + 4;\n\t\tvar ref = refHandler.relinkInBraces(attribute.textReference, fromTitle, toTitle, options);\n\t\tif (ref) {\n\t\t\tif (ref.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t\tif (ref.output) {\n\t\t\t\tbuilder.add(\"{{\"+ref.output+\"}}\", ptr, end);\n\t\t\t}\n\t\t}\n\t} else if (attribute.type === \"filtered\") {\n\t\tptr = text.indexOf('{{{', ptr);\n\t\tvar end = ptr + attribute.filter.length + 6;\n\t\tvar filter = filterHandler.relinkInBraces(attribute.filter, fromTitle, toTitle, options);\n\t\tif (filter !== undefined) {\n\t\t\tif (filter.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t\tif (filter.output) {\n\t\t\t\tvar quoted = \"{{{\"+filter.output+\"}}}\";\n\t\t\t\tbuilder.add(quoted, ptr, end);\n\t\t\t}\n\t\t}\n\t} else if (attribute.type === \"macro\") {\n\t\tptr = text.indexOf(\"<<\", ptr);\n\t\tvar end = attribute.value.end;\n\t\tvar macro = attribute.value;\n\t\toldValue = attribute.value;\n\t\tvar macroEntry = macrocall.relinkAttribute(parser, macro, text, fromTitle, toTitle, options);\n\t\tif (macroEntry !== undefined) {\n\t\t\tif (macroEntry.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t\tif (macroEntry.output) {\n\t\t\t\tbuilder.add(macroEntry.output, ptr, end);\n\t\t\t}\n\t\t}\n\t}\n\treturn end;\n};\n\nfunction canBePretty(title, tooltip) {\n\treturn title.indexOf(']') < 0 && (tooltip || title.indexOf('|') < 0);\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles import pragmas\n\n\\import [tag[MyTiddler]]\n\\*/\n\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\nvar filterRelinker = utils.getType('filter');\nvar ImportContext = utils.getContext('import');\n\nexports.name = \"import\";\n\nexports.report = function(text, callback, options) {\n\t// This moves the pos for us\n\tvar parseTree = this.parse();\n\tvar filter = parseTree[0].attributes.filter.value || '';\n\tfilterRelinker.report(filter, function(title, blurb) {\n\t\tif (blurb) {\n\t\t\tblurb = '\\\\import ' + blurb;\n\t\t} else {\n\t\t\tblurb = '\\\\import';\n\t\t}\n\t\tcallback(title, blurb);\n\t}, options);\n\t// Before we go, we need to actually import the variables\n\t// it's calling for, and any /relink pragma\n\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\t// In this one case, I'll let the parser parse out the filter and move\n\t// the ptr.\n\tvar start = this.matchRegExp.lastIndex,\n\t\tparseTree = this.parse(),\n\t\tfilter = parseTree[0].attributes.filter.value || '',\n\t\tentry = filterRelinker.relink(filter, fromTitle, toTitle, options);\n\tif (entry !== undefined && entry.output) {\n\t\tvar newline = text.substring(start+filter.length, this.parser.pos);\n\t\tfilter = entry.output;\n\t\tentry.output = \"\\\\import \" + filter + newline;\n\t}\n\n\t// Before we go, we need to actually import the variables\n\t// it's calling for, and any /relink pragma\n\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\n\n\treturn entry;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles macro calls.\n\n<>\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\n\nexports.name = [\"macrocallinline\", \"macrocallblock\"];\n\n// Error thrown when a macro's definition is needed, but can't be found.\nfunction CannotFindMacroDef() {};\nCannotFindMacroDef.prototype.impossible = true;\nCannotFindMacroDef.prototype.name = \"macroparam\";\n// Failed relinks due to missing definitions aren't reported for now.\n// I may want to do something special later on.\nCannotFindMacroDef.prototype.report = function() { return []; };\n\nexports.report = function(text, callback, options) {\n\tvar macroInfo = getInfoFromRule(this);\n\tthis.parser.pos = macroInfo.end;\n\tthis.reportAttribute(this.parser, macroInfo, callback, options);\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar macroInfo = getInfoFromRule(this);\n\tvar managedMacro = this.parser.context.getMacro(macroInfo.name);\n\tthis.parser.pos = macroInfo.end;\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tvar mayBeWidget = this.parser.context.allowWidgets();\n\tvar names = getParamNames(this.parser, macroInfo.name, macroInfo.params, options);\n\tif (names === undefined) {\n\t\t// Needed the definition, and couldn't find it. So if a single\n\t\t// parameter needs to placeholder, just fail.\n\t\tmayBeWidget = false;\n\t}\n\tvar entry = relinkMacroInvocation(this.parser, macroInfo, text, fromTitle, toTitle, mayBeWidget, options);\n\tif (entry && entry.output) {\n\t\tentry.output = macroToString(entry.output, text, names, options);\n\t}\n\treturn entry;\n};\n\n/** Relinks macros that occur as attributes, like <$element attr=<<...>> />\n * Processes the same, except it can't downgrade into a widget if the title\n * is complicated.\n */\nexports.relinkAttribute = function(parser, macro, text, fromTitle, toTitle, options) {\n\tvar entry = relinkMacroInvocation(parser, macro, text, fromTitle, toTitle, false, options);\n\tif (entry && entry.output) {\n\t\tentry.output = macroToStringMacro(entry.output, text, options);\n\t}\n\treturn entry;\n};\n\n/** As in, report a macrocall invocation that is an html attribute. */\nexports.reportAttribute = function(parser, macro, callback, options) {\n\tvar managedMacro = parser.context.getMacro(macro.name);\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tfor (var managedArg in managedMacro) {\n\t\tvar index;\n\t\ttry {\n\t\t\tindex = getParamIndexWithinMacrocall(parser, macro.name, managedArg, macro.params, options);\n\t\t} catch (e) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (index < 0) {\n\t\t\t// The argument was not supplied. Move on to next.\n\t\t\tcontinue;\n\t\t}\n\t\tvar param = macro.params[index];\n\t\tvar handler = managedMacro[managedArg];\n\t\tvar nestedOptions = Object.create(options);\n\t\tnestedOptions.settings = parser.context;\n\t\tvar entry = handler.report(param.value, function(title, blurb) {\n\t\t\tvar rtn = managedArg;\n\t\t\tif (blurb) {\n\t\t\t\trtn += ': \"' + blurb + '\"';\n\t\t\t}\n\t\t\tcallback(title, '<<' + macro.name + ' ' + rtn + '>>');\n\t\t}, nestedOptions);\n\t}\n};\n\n/**Processes the given macro,\n * macro: {name:, params:, start:, end:}\n * each parameters: {name:, end:, value:}\n * Macro invocation returned is the same, but relinked, and may have new keys:\n * parameters: {type: macro, start:, newValue: (quoted replacement value)}\n * Output of the returned entry isn't a string, but a macro object. It needs\n * to be converted.\n */\nfunction relinkMacroInvocation(parser, macro, text, fromTitle, toTitle, mayBeWidget, options) {\n\tvar managedMacro = parser.context.getMacro(macro.name);\n\tvar modified = false;\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tvar outMacro = $tw.utils.extend({}, macro);\n\tvar macroEntry = {};\n\toutMacro.params = macro.params.slice();\n\tfor (var managedArg in managedMacro) {\n\t\tvar index;\n\t\ttry {\n\t\t\tindex = getParamIndexWithinMacrocall(parser, macro.name, managedArg, macro.params, options);\n\t\t} catch (e) {\n\t\t\tif (e instanceof CannotFindMacroDef) {\n\t\t\t\tmacroEntry.impossible = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (index < 0) {\n\t\t\t// this arg either was not supplied, or we can't find\n\t\t\t// the definition, so we can't tie it to an anonymous\n\t\t\t// argument. Either way, move on to the next.\n\t\t\tcontinue;\n\t\t}\n\t\tvar param = macro.params[index];\n\t\tvar handler = managedMacro[managedArg];\n\t\tvar nestedOptions = Object.create(options);\n\t\tnestedOptions.settings = parser.context;\n\t\tvar entry = handler.relink(param.value, fromTitle, toTitle, nestedOptions);\n\t\tif (entry === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\t// Macro parameters can only be string parameters, not\n\t\t// indirect, or macro, or filtered\n\t\tif (entry.impossible) {\n\t\t\tmacroEntry.impossible = true;\n\t\t}\n\t\tif (!entry.output) {\n\t\t\tcontinue;\n\t\t}\n\t\tvar quote = utils.determineQuote(text, param);\n\t\tvar quoted = utils.wrapParameterValue(entry.output, quote);\n\t\tvar newParam = $tw.utils.extend({}, param);\n\t\tif (quoted === undefined) {\n\t\t\tif (!mayBeWidget || !options.placeholder) {\n\t\t\t\tmacroEntry.impossible = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar ph = options.placeholder.getPlaceholderFor(entry.output,handler.name);\n\t\t\tnewParam.newValue = \"<<\"+ph+\">>\";\n\t\t\tnewParam.type = \"macro\";\n\t\t} else {\n\t\t\tnewParam.start = newParam.end - (newParam.value.length + (quote.length*2));\n\t\t\tnewParam.value = entry.output;\n\t\t\tnewParam.newValue = quoted;\n\t\t}\n\t\toutMacro.params[index] = newParam;\n\t\tmodified = true;\n\t}\n\tif (modified || macroEntry.impossible) {\n\t\tif (modified) {\n\t\t\tmacroEntry.output = outMacro;\n\t\t}\n\t\treturn macroEntry;\n\t}\n\treturn undefined;\n};\n\nfunction getInfoFromRule(rule) {\n\t// Get all the details of the match\n\tvar macroInfo = rule.nextCall;\n\tif (!macroInfo) {\n\t\t// rule.match is used \";\n\t} else {\n\t\treturn macroToStringMacro(macro, text, options);\n\t}\n};\n\nfunction macroToStringMacro(macro, text, options) {\n\tvar builder = new Rebuilder(text, macro.start);\n\tfor (var i = 0; i < macro.params.length; i++) {\n\t\tvar param = macro.params[i];\n\t\tif (param.newValue) {\n\t\t\tbuilder.add(param.newValue, param.start, param.end);\n\t\t}\n\t}\n\treturn builder.results(macro.end);\n};\n\n/** Returns -1 if param definitely isn't in macrocall.\n */\nfunction getParamIndexWithinMacrocall(parser, macroName, param, params, options) {\n\tvar index, i, anonsExist = false;\n\tfor (i = 0; i < params.length; i++) {\n\t\tvar name = params[i].name;\n\t\tif (name === param) {\n\t\t\treturn i;\n\t\t}\n\t\tif (name === undefined) {\n\t\t\tanonsExist = true;\n\t\t}\n\t}\n\tif (!anonsExist) {\n\t\t// If no anonymous parameters are present, and we didn't find\n\t\t// it among the named ones, it must not be there.\n\t\treturn -1;\n\t}\n\tvar expectedIndex = indexOfParameterDef(parser, macroName, param, options);\n\t// We've got to skip over all the named parameter instances.\n\tif (expectedIndex >= 0) {\n\t\tvar anonI = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (params[i].name === undefined) {\n\t\t\t\tif (anonI === expectedIndex) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t\tanonI++;\n\t\t\t} else {\n\t\t\t\tvar indexOfOther = indexOfParameterDef(parser, macroName, params[i].name, options);\n\t\t\t\tif (indexOfOther < expectedIndex) {\n\t\t\t\t\tanonI++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn -1;\n};\n\n// Looks up the definition of a macro, and figures out what the expected index\n// is for the given parameter.\nfunction indexOfParameterDef(parser, macroName, paramName, options) {\n\tvar def = parser.context.getMacroDefinition(macroName);\n\tif (def === undefined) {\n\t\tthrow new CannotFindMacroDef();\n\t}\n\tvar params = def.params || [];\n\tfor (var i = 0; i < params.length; i++) {\n\t\tif (params[i].name === paramName) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\nfunction getParamNames(parser, macroName, params, options) {\n\tvar used = Object.create(null);\n\tvar rtn = new Array(params.length);\n\tvar anonsExist = false;\n\tvar i;\n\tfor (i = 0; i < params.length; i++) {\n\t\tvar name = params[i].name;\n\t\tif (name) {\n\t\t\trtn[i] = name;\n\t\t\tused[name] = true;\n\t\t} else {\n\t\t\tanonsExist = true;\n\t\t}\n\t}\n\tif (anonsExist) {\n\t\tvar def = parser.context.getMacroDefinition(macroName);\n\t\tif (def === undefined) {\n\t\t\t// If there are anonymous parameters, and we can't\n\t\t\t// find the definition, then we can't hope to create\n\t\t\t// a widget.\n\t\t\treturn undefined;\n\t\t}\n\t\tvar defParams = def.params || [];\n\t\tvar defPtr = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (rtn[i] === undefined) {\n\t\t\t\twhile(defPtr < defParams.length && used[defParams[defPtr].name]) {\n\t\t\t\t\tdefPtr++;\n\t\t\t\t}\n\t\t\t\tif (defPtr >= defParams.length) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\trtn[i] = defParams[defPtr].name;\n\t\t\t\tused[defParams[defPtr].name] = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn rtn;\n};\n\nfunction parseParams(paramString, pos) {\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = { };\n\t\t// We need to find the group match that isn't undefined.\n\t\tfor (var i = 2; i <= 6; i++) {\n\t\t\tif (paramMatch[i] !== undefined) {\n\t\t\t\tparamInfo.value = paramMatch[i];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\t//paramInfo.start = pos;\n\t\tparamInfo.end = reParam.lastIndex + pos;\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn params;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles pragma macro definitions. Except we only update placeholder macros\nthat we may have previously install.\n\n\\define relink-?() Tough title\n\n\\*/\n\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils\");\nvar VariableContext = utils.getContext('variable');\n\nexports.name = \"macrodef\";\n\nexports.report = function(text, callback, options) {\n\tvar setParseTreeNode = this.parse(),\n\t\tm = this.match,\n\t\tname = m[1];\n\tthis.parser.context = new VariableContext(this.parser.context, setParseTreeNode[0]);\n\t// Parse set the pos pointer, but we don't want to skip the macro body.\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar endMatch = getBodyMatch(text, this.parser.pos, m[3]);\n\tif (endMatch) {\n\t\tvar value = endMatch[2],\n\t\t\thandler = utils.getType(getActiveType(name, m[2]) || 'wikitext');\n\t\tif (handler) {\n\t\t\tvar entry = handler.report(value, function(title, blurb) {\n\t\t\t\tvar macroStr = '\\\\define ' + name + '()';\n\t\t\t\tif (blurb) {\n\t\t\t\t\tmacroStr += ' ' + blurb;\n\t\t\t\t}\n\t\t\t\tcallback(title, macroStr);\n\t\t\t}, options);\n\t\t}\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar setParseTreeNode = this.parse(),\n\t\tentry,\n\t\tm = this.match,\n\t\tname = m[1],\n\t\tparams = m[2],\n\t\tmultiline = m[3];\n\tthis.parser.context = new VariableContext(this.parser.context, setParseTreeNode[0]);\n\t// Parse set the pos pointer, but we don't want to skip the macro body.\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar endMatch = getBodyMatch(text, this.parser.pos, multiline);\n\tif (endMatch) {\n\t\tvar value = endMatch[2],\n\t\t\ttype = getActiveType(name, params),\n\t\t\thandler = utils.getType(type || 'wikitext');\n\t\tif (handler) {\n\t\t\t// If this is an active relink placeholder, then let's remember it\n\t\t\tif (type && options.placeholder) {\n\t\t\t\toptions.placeholder.registerExisting(name, value);\n\t\t\t}\n\t\t\t// Relink the contents\n\t\t\tentry = handler.relink(value, fromTitle, toTitle, options);\n\t\t\tif (entry && entry.output) {\n\t\t\t\tentry.output = m[0] + endMatch[1] + entry.output + endMatch[0];\n\t\t\t}\n\t\t}\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t}\n\treturn entry;\n};\n\n// Return another match for the body, but tooled uniquely\n// m[1] = whitespace before body\n// m[2] = body\n// m.index + m[0].length -> end of match\nfunction getBodyMatch(text, pos, isMultiline) {\n\tvar whitespace,\n\t\tvalueRegExp;\n\tif (isMultiline) {\n\t\tvalueRegExp = /\\r?\\n\\\\end[^\\S\\n\\r]*(?:\\r?\\n|$)/mg;\n\t\twhitespace = '';\n\t} else {\n\t\tvalueRegExp = /(?:\\r?\\n|$)/mg;\n\t\tvar newPos = $tw.utils.skipWhiteSpace(text, pos);\n\t\twhitespace = text.substring(pos, newPos);\n\t\tpos = newPos;\n\t}\n\tvalueRegExp.lastIndex = pos;\n\tvar match = valueRegExp.exec(text);\n\tif (match) {\n\t\tmatch[1] = whitespace;\n\t\tmatch[2] = text.substring(pos, match.index);\n\t}\n\treturn match;\n};\n\nfunction getActiveType(macroName, parameters) {\n\tvar placeholder = /^relink-(?:(\\w+)-)?\\d+$/.exec(macroName);\n\t// normal macro or special placeholder?\n\tif (placeholder && parameters === '') {\n\t\treturn placeholder[1] || 'title';\n\t}\n\treturn undefined;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[[Introduction]]\n\n[[link description|TiddlerTitle]]\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.name = \"prettylink\";\n\nexports.report = function(text, callback, options) {\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif (!$tw.utils.isLinkExternal(link)) {\n\t\tcallback(link, '[[' + text + ']]');\n\t}\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar caption, m = this.match;\n\tif (m[2] === fromTitle) {\n\t\t// format is [[caption|MyTiddler]]\n\t\tcaption = m[1];\n\t} else if (m[2] !== undefined || m[1] !== fromTitle) {\n\t\t// format is [[MyTiddler]], and it doesn't match\n\t\treturn undefined;\n\t}\n\tvar entry = { output: utils.makePrettylink(this.parser, toTitle, caption) };\n\tif (entry.output === undefined) {\n\t\tentry.impossible = true;\n\t}\n\treturn entry;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js":{"text":"/*\\\nmodule-type: wikirule\n\nThis defines the \\relink inline pragma used to locally declare\nrelink rules for macros.\n\nIt takes care of providing its own relink and report rules.\n\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nexports.name = \"relink\";\nexports.types = {pragma: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /^\\\\relink[^\\S\\n]+([^(\\s]+)([^\\r\\n]*)(\\r?\\n)?/mg;\n};\n\n/**This makes the widget that the macro library will later parse to determine\n * new macro relink state.\n *\n * It's a <$set> widget so it can appear BEFORE \\define pragma and not\n * prevent that pragma from being scooped up by importvariables.\n * (importvariables stops scooping as soon as it sees something besides $set) */\nexports.parse = function() {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar macroName;\n\tvar macroParams = Object.create(null);\n\tvar error = undefined;\n\tvar rtn = [];\n\tvar self = this;\n\tthis.interpretSettings(function(macro, parameter, type) {\n\t\tmacroName = macro;\n\t\tif (type && !utils.getType(type)) {\n\t\t\terror = language.getString(\"text/plain\", \"Error/UnrecognizedType\",\n\t\t\t\t{variables: {type: type}, wiki: self.parser.wiki});\n\t\t}\n\t\tmacroParams[parameter] = type;\n\t});\n\t// If no macroname. Return nothing, this rule will be ignored by parsers\n\tif (macroName) {\n\t\tvar relink = Object.create(null);\n\t\trelink[macroName] = macroParams;\n\t\trtn.push({\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: \"\"}\n\t\t\t},\n\t\t\tchildren: [],\n\t\t\tisMacroDefinition: true,\n\t\t\trelink: relink});\n\t}\n\tif (error) {\n\t\trtn.push({\n\t\t\ttype: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tc-error tc-relink-error\"\n\t\t\t\t}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: error}\n\t\t\t]});\n\t}\n\treturn rtn;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar parser = this.parser;\n\tvar currentTiddler = parser.context.widget.variables.currentTiddler.value;\n\tparser.pos = this.matchRegExp.lastIndex;\n\tthis.interpretSettings(function(macro, parameter, type) {\n\t\toptions.settings.addSetting(parser.wiki, macro, parameter, type, currentTiddler);\n\t});\n\t// Return nothing, because this rule is ignored by the parser\n\treturn undefined;\n};\n\nexports.interpretSettings = function(block) {\n\tvar paramString = this.match[2];\n\tif (paramString !== \"\") {\n\t\tvar macro = this.match[1];\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*([^\\s]+))?/mg;\n\t\tvar paramMatch = reParam.exec(paramString);\n\t\twhile (paramMatch) {\n\t\t\tvar parameter = paramMatch[1];\n\t\t\tvar type = paramMatch[2];\n\t\t\tblock(macro, parameter, type);\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n};\n","module-type":"wikirule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nParses and acknowledges any pragma rules a tiddler has.\n\n\\rules except html wikilink\n\n\\*/\n\nexports.name = \"rules\";\n\n/**This is all we have to do. The rules rule doesn't parse. It just amends\n * the rules, which is exactly what I want it to do too.\n * It also takes care of moving the pos pointer forward.\n */\nexports.relink = function() {\n\tthis.parse();\n\treturn undefined;\n};\n\n// Same deal\nexports.report = exports.relink;\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles sys links\n\n$:/sys/link\n\nbut not:\n\n~$:/sys/link\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.name = \"syslink\";\n\nexports.report = function(text, callback, options) {\n\tvar title = this.match[0];\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (title[0] !== \"~\") {\n\t\tcallback(title, '~' + title);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar entry = undefined;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (this.match[0] === fromTitle && this.match[0][0] !== \"~\") {\n\t\tentry = {output: this.makeSyslink(toTitle, options)};\n\t\tif (entry.output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeSyslink = function(title, options) {\n\tvar match = title.match(this.matchRegExp);\n\tif (match && match[0] === title && title[0] !== \"~\") {\n\t\treturn title;\n\t} else {\n\t\treturn utils.makePrettylink(this.parser, title);\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/table.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles tables. Or rather handles the cells inside the tables, since tables\nthemselves aren't relinked.\n\n\\*/\n\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\n\nexports.name = \"table\";\n\nexports.types = {block: true};\n\nexports.report = function(text, callback, options) {\n\tvar rowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else if(rowType === \"c\") {\n\t\t\t// Is this a caption row?\n\t\t\t// If so, move past the opening `|` of the row\n\t\t\tthis.parser.pos++;\n\t\t\t// Parse the caption\n\t\t\tvar oldCallback = this.parser.callback;\n\t\t\tthis.parser.callback = function(title, blurb) {\n\t\t\t\tcallback(title, '|' + blurb + '|c');\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tthis.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} finally {\n\t\t\t\tthis.parser.callback = oldCallback;\n\t\t\t}\n\t\t} else {\n\t\t\t// Process the row\n\t\t\tprocessRow.call(this, rowType, callback);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar rowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tbuilder = new Rebuilder(text, this.parser.pos),\n\t\timpossible = false,\n\t\toutput,\n\t\tentry;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Is this a caption row?\n\t\t\tif(rowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Parse the caption\n\t\t\t\toutput = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Process the row\n\t\t\t\toutput = processRow.call(this);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t}\n\t\t\tif (output.length > 0) {\n\t\t\t\tfor (var i = 0; i < output.length; i++) {\n\t\t\t\t\tvar o = output[i];\n\t\t\t\t\tif (o.output) {\n\t\t\t\t\t\tbuilder.add(o.output, o.start, o.end);\n\t\t\t\t\t}\n\t\t\t\t\tif (o.impossible) {\n\t\t\t\t\t\timpossible = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\tif (builder.changed() || impossible) {\n\t\tvar entry = {}\n\t\tentry.output = builder.results(this.parser.pos);\n\t\tif (impossible) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nvar processRow = function(rowType, callback) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\tchildren = [];\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t}\n\t\tswitch (cellMatch[1]) {\n\t\tcase '~':\n\t\tcase '>':\n\t\tcase '<':\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvar prefix = '|';\n\t\t\tvar suffix = '|';\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tprefix += '^';\n\t\t\t\tthis.parser.pos++;\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tprefix += ',';\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\tif (spaceLeft) {\n\t\t\t\tprefix += ' ';\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tprefix += '!';\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tvar oldCallback = this.parser.callback;\n\t\t\tvar reports = [];\n\t\t\tthis.parser.callback = function(title, blurb) {\n\t\t\t\treports.push(title, blurb);\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar output = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t\tif (output.length > 0) {\n\t\t\t\t\tchildren.push(output[0]);\n\t\t\t\t}\n\t\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t\tsuffix = ' |';\n\t\t\t\t}\n\t\t\t\tfor (var i = 0; i < reports.length; i += 2) {\n\t\t\t\t\tcallback(reports[i], prefix + reports[i+1] + suffix + rowType);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.parser.callback = oldCallback;\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn children;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/table.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of transclusions in wiki text like,\n\n{{RenamedTiddler}}\n{{RenamedTiddler||TemplateTitle}}\n\nThis renames both the tiddler and the template field.\n\n\\*/\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar utils = require(\"./utils.js\");\n\nexports.name = ['transcludeinline', 'transcludeblock'];\n\nexports.report = function(text, callback, options) {\n\tvar m = this.match,\n\t\trefString = $tw.utils.trim(m[1]),\n\t\tref = parseTextReference(refString);\n\t\ttemplate = $tw.utils.trim(m[2]);\n\tif (ref.title) {\n\t\tvar suffix = '';\n\t\tif (ref.index) {\n\t\t\tsuffix = '##' + ref.index;\n\t\t} else if (ref.field) {\n\t\t\tsuffix = '!!' + ref.field;\n\t\t}\n\t\tif (template) {\n\t\t\tsuffix = suffix + '||' + template;\n\t\t}\n\t\tcallback(ref.title, '{{' + suffix + '}}')\n\t}\n\tif (template) {\n\t\tcallback(template, '{{' + refString + '||}}');\n\t}\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar m = this.match,\n\t\treference = parseTextReference(m[1]),\n\t\ttemplate = m[2],\n\t\tentry = undefined,\n\t\tmodified = false;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif ($tw.utils.trim(reference.title) === fromTitle) {\n\t\t// preserve user's whitespace\n\t\treference.title = reference.title.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tif (modified) {\n\t\tvar output = this.makeTransclude(this.parser, reference, template);\n\t\tif (output) {\n\t\t\t// Adding any newline that might have existed is\n\t\t\t// what allows this relink method to work for both\n\t\t\t// the block and inline filter wikitext rule.\n\t\t\tentry = {output: output + utils.getEndingNewline(m[0])};\n\t\t} else {\n\t\t\tentry = {impossible: true}\n\t\t}\n\t}\n\treturn entry;\n};\n\n// I have my own because the core one is deficient for my needs.\nfunction parseTextReference(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /^([\\w\\W]*?)(?:!!(\\S[\\w\\W]*)|##(\\S[\\w\\W]*))?$/g;\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match) {\n\t\t// Return the parts\n\t\tresult.title = match[1];\n\t\tresult.field = match[2];\n\t\tresult.index = match[3];\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/** This converts a reference and a template into a string representation\n * of a transclude.\n */\nexports.makeTransclude = function(parser, reference, template) {\n\tvar rtn;\n\tif (!canBePrettyTemplate(template)) {\n\t\tvar widget = utils.makeWidget(parser, '$transclude', {\n\t\t\ttiddler: $tw.utils.trim(template),\n\t\t\tfield: reference.field,\n\t\t\tindex: reference.index});\n\t\tif (reference.title && widget !== undefined) {\n\t\t\trtn = utils.makeWidget(parser, '$tiddler', {tiddler: $tw.utils.trim(reference.title)}, widget);\n\t\t} else {\n\t\t\trtn = widget;\n\t\t}\n\t} else if (!canBePrettyTitle(reference.title)) {\n\t\t// This block and the next account for the 1%...\n\t\tvar reducedRef = {field: reference.field, index: reference.index};\n\t\trtn = utils.makeWidget(parser, '$tiddler', {tiddler: $tw.utils.trim(reference.title)}, prettyTransclude(reducedRef, template));\n\t} else {\n\t\t// This block takes care of 99% of all cases\n\t\trtn = prettyTransclude(reference, template);\n\t}\n\treturn rtn;\n};\n\nfunction canBePrettyTitle(value) {\n\treturn refHandler.canBePretty(value) && canBePrettyTemplate(value);\n};\n\nfunction canBePrettyTemplate(value) {\n\treturn !value || (value.indexOf('}') < 0 && value.indexOf('{') < 0 && value.indexOf('|') < 0);\n};\n\nfunction prettyTransclude(textReference, template) {\n\tif (typeof textReference !== \"string\") {\n\t\ttextReference = refHandler.toString(textReference);\n\t}\n\tif (!textReference) {\n\t\ttextReference = '';\n\t}\n\tif (template !== undefined) {\n\t\treturn \"{{\"+textReference+\"||\"+template+\"}}\";\n\t} else {\n\t\treturn \"{{\"+textReference+\"}}\";\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/typedblock.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles the typeed blocks, as in:\n\n$$$text/vnd.tiddlywiki>text/html\n...\n$$$\n\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nexports.name = \"typedblock\";\n\nexports.types = {block: true};\n\nvar textOperators;\nvar oldTextOperators;\n\nfunction getTextOperator(type, options) {\n\tvar operator;\n\tif (textOperators === undefined) {\n\t\ttextOperators = utils.getModulesByTypeAsHashmap('relinktext', 'type');\n\t\toldTextOperators = utils.getModulesByTypeAsHashmap('relinktextoperator', 'type');\n\t}\n\toperator = textOperators[type];\n\tif (operator) {\n\t\treturn operator;\n\t}\n\tvar info = $tw.utils.getFileExtensionInfo(type);\n\tif (info && textOperators[info.type]) {\n\t\treturn textOperators[info.type];\n\t}\n\tvar old = oldTextOperators[type] || (info && oldTextOperators[info.type]);\n\tif (old) {\n\t\tvar vars = Object.create(options);\n\t\tvars.variables = {type: old.type, keyword: type};\n\t\tvar warnString = language.getString(\"text/html\", \"Warning/OldRelinkTextOperator\", vars)\n\t\tlanguage.warn(warnString);\n\t\toldTextOperators[type] = undefined;\n\t}\n};\n\nfunction getText() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn text;\n};\n\nexports.report = function(text, callback, options) {\n\tvar innerText = getText.call(this),\n\t\toperator = getTextOperator(this.match[1], options);\n\tif (operator) {\n\t\treturn operator.report(innerText, callback, options);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar start = this.parser.pos,\n\t\tinnerStart = this.matchRegExp.lastIndex,\n\t\tinnerText = getText.call(this),\n\t\toperator = getTextOperator(this.match[1], options);\n\tif (operator) {\n\t\tvar innerOptions = Object.create(options);\n\t\tinnerOptions.settings = this.parser.context;\n\t\tvar results = operator.relink(innerText, fromTitle, toTitle, innerOptions);\n\t\tif (results && results.output) {\n\t\t\tvar builder = new Rebuilder(text, start);\n\t\t\tbuilder.add(results.output, innerStart, innerStart + innerText.length);\n\t\t\tresults.output = builder.results(this.parser.pos);\n\t\t}\n\t\treturn results;\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/typedblock.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js":{"text":"/*\\\nmodule-type: library\n\nUtility methods for the wikitext relink rules.\n\n\\*/\n\nexports.makeWidget = function(parser, tag, attributes, body) {\n\tif (!parser.context.allowWidgets()) {\n\t\treturn undefined;\n\t}\n\tvar string = '<' + tag;\n\tfor (var attr in attributes) {\n\t\tvar value = attributes[attr];\n\t\tif (value !== undefined) {\n\t\t\tvar quoted = exports.wrapAttributeValue(value);\n\t\t\tif (!quoted) {\n\t\t\t\tif (!parser.options.placeholder) {\n\t\t\t\t\t// It's not possible to make this widget\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tvar category = getPlaceholderCategory(parser.context, tag, attr);\n\t\t\t\tquoted = '<<' + parser.placeholder.getPlaceholderFor(value, category) + '>>';\n\t\t\t}\n\t\t\tstring += ' ' + attr + '=' + quoted;\n\t\t}\n\t}\n\tif (body !== undefined) {\n\t\tstring += '>' + body + '';\n\t} else {\n\t\tstring += '/>';\n\t}\n\treturn string;\n};\n\nfunction getPlaceholderCategory(context, tag, attribute) {\n\tvar element = context.getAttribute(tag);\n\tvar rule = element && element[attribute];\n\t// titles go to relink-\\d\n\t// plaintext goes to relink-plaintext-\\d\n\t// because titles are way more common, also legacy\n\tif (rule === undefined) {\n\t\treturn 'plaintext';\n\t} else {\n\t\trule = rule.fields.text;\n\t\tif (rule === 'title') {\n\t\t\trule = undefined;\n\t\t}\n\t\treturn rule;\n\t}\n};\n\nexports.makePrettylink = function(parser, title, caption) {\n\tvar output;\n\tif (parser.context.allowPrettylinks() && canBePrettylink(title, caption)) {\n\t\tif (caption !== undefined) {\n\t\t\toutput = \"[[\" + caption + \"|\" + title + \"]]\";\n\t\t} else {\n\t\t\toutput = \"[[\" + title + \"]]\";\n\t\t}\n\t} else if (caption !== undefined) {\n\t\tvar safeCaption = sanitizeCaption(parser, caption);\n\t\tif (safeCaption !== undefined) {\n\t\t\toutput = exports.makeWidget(parser, '$link', {to: title}, safeCaption);\n\t\t}\n\t} else if (exports.shorthandPrettylinksSupported(parser.wiki)) {\n\t\toutput = exports.makeWidget(parser, '$link', {to: title});\n\t} else if (parser.context.allowWidgets() && parser.placeholder) {\n\t\t// If we don't have a caption, we must resort to\n\t\t// placeholders anyway to prevent link/caption desync\n\t\t// from later relinks.\n\t\t// It doesn't matter whether the tiddler is quotable.\n\t\tvar ph = parser.placeholder.getPlaceholderFor(title);\n\t\toutput = \"<$link to=<<\"+ph+\">>><$text text=<<\"+ph+\">>/>\";\n\t}\n\treturn output;\n};\n\n/**In version 5.1.20, Tiddlywiki made it so <$link to\"something\" /> would\n * use \"something\" as a caption. This is preferable. However, Relink works\n * going back to 5.1.14, so we need to have different handling for both\n * cases.\n */\nvar _supported;\nexports.shorthandPrettylinksSupported = function(wiki) {\n\tif (_supported === undefined) {\n\t\tvar test = wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", \"<$link to=test/>\");\n\t\t_supported = (test === \"test\");\n\t}\n\treturn _supported;\n};\n\n/**Return true if value can be used inside a prettylink.\n */\nfunction canBePrettylink(value, customCaption) {\n\treturn value.indexOf(\"]]\") < 0 && value[value.length-1] !== ']' && (customCaption !== undefined || value.indexOf('|') < 0);\n};\n\nfunction sanitizeCaption(parser, caption) {\n\tvar plaintext = parser.wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", caption);\n\tif (plaintext === caption && caption.indexOf(\"\") <= 0) {\n\t\treturn caption;\n\t} else {\n\t\treturn exports.makeWidget(parser, '$text', {text: caption});\n\t}\n};\n\n/**Finds an appropriate quote mark for a given value.\n *\n *Tiddlywiki doesn't have escape characters for attribute values. Instead,\n * we just have to find the type of quotes that'll work for the given title.\n * There exist titles that simply can't be quoted.\n * If it can stick with the preference, it will.\n *\n * return: Returns the wrapped value, or undefined if it's impossible to wrap\n */\nexports.wrapAttributeValue = function(value, preference) {\n\tvar whitelist = [\"\", \"'\", '\"', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\/\\s<>\"'=])/.test(v) && v.length > 0; },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';}\n\t};\n\tif (choices[preference] && choices[preference](value)) {\n\t\treturn wrap(value, preference);\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrap(value, quote);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\n/**Like wrapAttribute value, except for macro parameters, not attributes.\n *\n * These are more permissive. Allows brackets,\n * and slashes and '<' in unquoted values.\n */\nexports.wrapParameterValue = function(value, preference) {\n\tvar whitelist = [\"\", \"'\", '\"', '[[', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\s>\"'=])/.test(v); },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t\"[[\": canBePrettyOperand,\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';}\n\t};\n\tif (choices[preference] && choices[preference](value)) {\n\t\treturn wrap(value, preference);\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrap(value, quote);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\nfunction wrap(value, wrapper) {\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; },\n\t\t'\"\"\"': function(v) {return '\"\"\"'+v+'\"\"\"'; },\n\t\t\"[[\": function(v) {return \"[[\"+v+\"]]\"; }\n\t};\n\tvar chosen = wrappers[wrapper];\n\tif (chosen) {\n\t\treturn chosen(value);\n\t} else {\n\t\treturn undefined;\n\t}\n};\n\nfunction canBePrettyOperand(value) {\n\treturn value.indexOf(']') < 0;\n};\n\n/**Given some text, and a param or attribute within that text, this returns\n * what type of quotation that attribute is using.\n *\n * param: An object in the form {end:, ...}\n */\nexports.determineQuote = function(text, param) {\n\tvar pos = param.end-1;\n\tif (text[pos] === \"'\") {\n\t\treturn \"'\";\n\t}\n\tif (text[pos] === '\"') {\n\t\tif (text.substr(pos-2, 3) === '\"\"\"') {\n\t\t\treturn '\"\"\"';\n\t\t} else {\n\t\t\treturn '\"';\n\t\t}\n\t}\n\tif (text.substr(pos-1,2) === ']]' && text.substr((pos-param.value.length)-3, 2) === '[[') {\n\t\treturn \"[[\";\n\t}\n\treturn '';\n};\n\n// Finds the newline at the end of a string and returns it. Empty string if\n// none exists.\nexports.getEndingNewline = function(string) {\n\tvar l = string.length;\n\tif (string[l-1] === '\\n') {\n\t\treturn (string[l-2] === '\\r') ? \"\\r\\n\" : \"\\n\";\n\t}\n\treturn \"\";\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles CamelCase links\n\nWikiLink\n\nbut not:\n\n~WikiLink\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.name = \"wikilink\";\n\nexports.report = function(text, callback, options) {\n\tvar title = this.match[0],\n\t\tunlink = $tw.config.textPrimitives.unWikiLink;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (title[0] !== unlink) {\n\t\tcallback(title, unlink + title);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar entry = undefined,\n\t\ttitle = this.match[0];\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (title === fromTitle && title[0] !== $tw.config.textPrimitives.unWikiLink) {\n\t\tentry = { output: this.makeWikilink(toTitle, options) };\n\t\tif (entry.output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeWikilink = function(title, options) {\n\tif (title.match(this.matchRegExp) && title[0] !== $tw.config.textPrimitives.unWikiLink) {\n\t\treturn title;\n\t} else {\n\t\treturn utils.makePrettylink(this.parser, title);\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/context.js":{"text":"/*\\\n\nBase class for relink contexts.\n\n\\*/\n\nfunction Context() {\n};\n\nexports.context = Context;\n\n// This class does no special handling of fields, operators, or attributes.\n// we pass it along to the parent.\nContext.prototype.getFields = function() {\n\treturn this.parent.getFields();\n};\n\nContext.prototype.getOperator = function(name, index) {\n\treturn this.parent.getOperator(name, index);\n};\n\nContext.prototype.getOperators = function() {\n\treturn this.parent.getOperators();\n};\n\nContext.prototype.getAttribute = function(elementName) {\n\treturn this.parent.getAttribute(elementName);\n};\n\nContext.prototype.getAttributes = function() {\n\treturn this.parent.getAttributes();\n};\n\nContext.prototype.getMacro = function(macroName) {\n\treturn this.parent.getMacro(macroName);\n};\n\nContext.prototype.getMacros = function() {\n\treturn this.parent.getMacros();\n};\n\nContext.prototype.allowPrettylinks = function() {\n\treturn this.parent.allowPrettylinks();\n};\n\nContext.prototype.allowWidgets = function() {\n\treturn this.parent.allowWidgets();\n};\n\nContext.prototype.hasImports = function(value) {\n\treturn this.parent.hasImports(value);\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/context.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/import.js":{"text":"/*\\\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar WidgetContext = require('./widget').widget;\n\nfunction ImportContext(wiki, parent, filter) {\n\tthis.parent = parent;\n\tthis.wiki = wiki;\n\tvar importWidget = createImportWidget(filter, this.wiki, this.parent.widget);\n\tthis._compileList(importWidget.tiddlerList);\n\t// This only works if only one filter is imported\n\tthis.widget = this.getBottom(importWidget);\n\t// Trickle this up, so that any containing tiddlercontext knows that this\n\t// tiddler does some importing, and must be checked regularly.\n\tparent.hasImports(true);\n};\n\nexports.import = ImportContext;\n\nImportContext.prototype = new WidgetContext();\n\nImportContext.prototype.changed = function(changes) {\n\treturn this.widget && this.widget.refresh(changes)\n};\n\nfunction createImportWidget(filter, wiki, parent) {\n\tvar widget = wiki.makeWidget( { tree: [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\t\"filter\": {\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: filter\n\t\t\t}\n\t\t}\n\t}] }, { parentWidget: parent} );\n\tif (parent) {\n\t\tparent.children.push(widget);\n\t}\n\twidget.execute();\n\twidget.renderChildren();\n\tvar importWidget = widget.children[0];\n\treturn importWidget;\n};\n\nImportContext.prototype._compileList = function(titleList) {\n\tfor (var i = 0; i < titleList.length; i++) {\n\t\tvar parser = this.wiki.parseTiddler(titleList[i]);\n\t\tif (parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile (parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tif (parseTreeNode.relink) {\n\t\t\t\t\tfor (var macroName in parseTreeNode.relink) {\n\t\t\t\t\t\tvar parameters = parseTreeNode.relink[macroName];\n\t\t\t\t\t\tfor (paramName in parameters) {\n\t\t\t\t\t\t\tthis.addSetting(this.wiki, macroName, paramName, parameters[paramName], titleList[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t}\n\t}\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/import.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/tiddler.js":{"text":"/*\\\n\nContext for a tiddler. Defines nothing but makes an entry point to test if\na tiddler must be refreshed.\n\n\\*/\n\nvar WidgetContext = require('./widget.js').widget;\n\nfunction TiddlerContext(wiki, parentContext, title) {\n\tthis.title = title;\n\tthis.parent = parentContext;\n\tvar globalWidget = parentContext && parentContext.widget;\n\tvar parentWidget = wiki.makeWidget(null, {parentWidget: globalWidget});\n\tparentWidget.setVariable('currentTiddler', title);\n\tthis.widget = wiki.makeWidget(null, {parentWidget: parentWidget});\n};\n\nexports.tiddler = TiddlerContext;\n\nTiddlerContext.prototype = new WidgetContext();\n\nTiddlerContext.prototype.changed = function(changes) {\n\treturn this.widget && this.widget.refresh(changes);\n};\n\n// By default, a tiddler context does not use imports, unless an import\n// statement is later discovered somewhere in the fields.\nTiddlerContext.prototype.hasImports = function(value) {\n\treturn this._hasImports || (this._hasImports = value);\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/tiddler.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/variable.js":{"text":"/*\\\n\nThis handles the context for variables. Either from $set, $vars, or \\define\n\n\\*/\n\nvar WidgetContext = require('./widget').widget;\n\nfunction VariableContext(parent, setParseTreeNode) {\n\tthis.parent = parent;\n\t// Now create a new widget and attach it.\n\tvar attachPoint = parent.widget;\n\tvar setWidget = attachPoint.makeChildWidget(setParseTreeNode);\n\tattachPoint.children.push(setWidget);\n\tsetWidget.computeAttributes();\n\tsetWidget.execute();\n\t// point our widget to bottom, where any other contexts would attach to\n\tthis.widget = this.getBottom(setWidget);\n};\n\nexports.variable = VariableContext;\n\nVariableContext.prototype = new WidgetContext();\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/variable.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/whitelist.js":{"text":"/*\\\n\nThis top-level context manages settings inside the whitelist. It never has\na parent.\n\n\\*/\n\nvar utils = require('../utils');\nvar Context = require('./context').context;\n\nvar prefix = \"$:/config/flibbles/relink/\";\n\nfunction WhitelistContext(wiki) {\n\tbuild(this, wiki);\n};\n\nexports.whitelist = WhitelistContext;\n\nWhitelistContext.prototype = new Context();\n\n/**Hot directories are directories for which if anything changes inside them,\n * then Relink must completely rebuild its index.\n * By default, this includes the whitelist settings, but relink-titles also\n * includes its rules disabling directory.\n * This is the FIRST solution I came up with to this problem. If you're\n * looking at this, please make a github issue so I have a chance to understand\n * your needs. This is currently a HACK solution.\n */\nWhitelistContext.hotDirectories = [prefix];\n\nWhitelistContext.prototype.getAttribute = function(elementName) {\n\treturn this.attributes[elementName];\n};\n\nWhitelistContext.prototype.getAttributes = function() {\n\treturn flatten(this.attributes);\n};\n\nWhitelistContext.prototype.getFields = function() {\n\treturn this.fields;\n};\n\nWhitelistContext.prototype.getOperator = function(operatorName, operandIndex) {\n\tvar op = this.operators[operatorName];\n\treturn op && op[operandIndex || 1];\n};\n\nWhitelistContext.prototype.getOperators = function() {\n\tvar signatures = Object.create(null);\n\tfor (var op in this.operators) {\n\t\tvar operandSet = this.operators[op];\n\t\tfor (var index in operandSet) {\n\t\t\tvar entry = operandSet[index];\n\t\t\tsignatures[entry.key] = entry;\n\t\t}\n\t}\n\treturn signatures;\n};\n\nWhitelistContext.prototype.getMacro = function(macroName) {\n\treturn this.macros[macroName];\n};\n\nWhitelistContext.prototype.getMacros = function() {\n\treturn flatten(this.macros);\n};\n\nWhitelistContext.prototype.changed = function(changedTiddlers) {\n\tfor (var i = 0; i < WhitelistContext.hotDirectories.length; i++) {\n\t\tvar dir = WhitelistContext.hotDirectories[i];\n\t\tfor (var title in changedTiddlers) {\n\t\t\tif (title.substr(0, dir.length) === dir) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nWhitelistContext.prototype.hasImports = function(value) {\n\t// We don't care if imports are used. This is the global level.\n\treturn false;\n};\n\n/**Factories define methods that create settings given config tiddlers.\n * for factory method 'example', it will be called once for each:\n * \"$:/config/flibbles/relink/example/...\" tiddler that exists.\n * the argument \"key\" will be set to the contents of \"...\"\n *\n * The reason I build relink settings in this convoluted way is to minimize\n * the number of times tiddlywiki has to run through EVERY tiddler looking\n * for relink config tiddlers.\n *\n * Also, by exporting \"factories\", anyone who extends relink can patch in\n * their own factory methods to create settings that are generated exactly\n * once per rename.\n */\nvar factories = {\n\tattributes: function(attributes, data, key) {\n\t\tvar elem = root(key);\n\t\tvar attr = key.substr(elem.length+1);\n\t\tattributes[elem] = attributes[elem] || Object.create(null);\n\t\tattributes[elem][attr] = data;\n\t},\n\tfields: function(fields, data, name) {\n\t\tfields[name] = data;\n\t},\n\tmacros: function(macros, data, key) {\n\t\t// We take the last index, not the first, because macro\n\t\t// parameters can't have slashes, but macroNames can.\n\t\tvar name = dir(key);\n\t\tvar arg = key.substr(name.length+1);\n\t\tmacros[name] = macros[name] || Object.create(null);\n\t\tmacros[name][arg] = data;\n\t},\n\toperators: function(operators, data, key) {\n\t\t// We take the last index, not the first, because the operator\n\t\t// may have a slash to indicate parameter number\n\t\tvar pair = key.split('/');\n\t\tvar name = pair[0];\n\t\tdata.key = key;\n\t\toperators[name] = operators[name] || Object.create(null);\n\t\toperators[name][pair[1] || 1] = data;\n\t}\n};\n\nfunction build(settings, wiki) {\n\tfor (var name in factories) {\n\t\tsettings[name] = Object.create(null);\n\t}\n\twiki.eachShadowPlusTiddlers(function(tiddler, title) {\n\t\tif (title.substr(0, prefix.length) === prefix) {\n\t\t\tvar remainder = title.substr(prefix.length);\n\t\t\tvar category = root(remainder);\n\t\t\tvar factory = factories[category];\n\t\t\tif (factory) {\n\t\t\t\tvar name = remainder.substr(category.length+1);\n\t\t\t\tvar data = utils.getType(tiddler.fields.text.trim());\n\t\t\t\tif (data) {\n\t\t\t\t\tdata.source = title;\n\t\t\t\t\t// Secret feature. You can access a config tiddler's\n\t\t\t\t\t// fields from inside the fieldtype handler. Cool\n\t\t\t\t\t// tricks can be done with this.\n\t\t\t\t\tdata.fields = tiddler.fields;\n\t\t\t\t\tfactory(settings[category], data, name);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/* Returns first bit of a path. path/to/tiddler -> path\n */\nfunction root(string) {\n\tvar index = string.indexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n};\n\n/* Returns all but the last bit of a path. path/to/tiddler -> path/to\n */\nfunction dir(string) {\n\tvar index = string.lastIndexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n}\n\n/* Turns {dir: {file1: 'value1', file2: 'value2'}}\n * into {dir/file1: 'value1', dir/file2: 'value2'}\n */\nfunction flatten(set) {\n\tvar signatures = Object.create(null);\n\tfor (var outerName in set) {\n\t\tvar setItem = set[outerName];\n\t\tfor (var innerName in setItem) {\n\t\t\tsignatures[outerName + \"/\" + innerName] = setItem[innerName];\n\t\t}\n\t}\n\treturn signatures;\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/whitelist.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/widget.js":{"text":"/*\\\n\nThis is a virtual subclass of context for contexts that exist within widgets\nof a specific tiddler.\n\nAll widget contexts must have a widget member.\n\n\\*/\n\nvar Context = require('./context.js').context;\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nfunction WidgetContext() {};\n\nexports.widget = WidgetContext;\n\nWidgetContext.prototype = new Context();\n\nWidgetContext.prototype.getMacroDefinition = function(variableName) {\n\t// widget.variables is prototyped, so it looks up into all its parents too\n\treturn this.widget.variables[variableName] || $tw.macros[variableName];\n};\n\nWidgetContext.prototype.addSetting = function(wiki, macroName, parameter, type, sourceTitle) {\n\tthis.macros = this.macros || Object.create(null);\n\tvar macro = this.macros[macroName];\n\ttype = type || utils.getDefaultType(wiki);\n\tif (macro === undefined) {\n\t\tmacro = this.macros[macroName] = Object.create(null);\n\t}\n\tvar handler = utils.getType(type);\n\tif (handler) {\n\t\thandler.source = sourceTitle;\n\t\t// We attach the fields of the defining tiddler for the benefit\n\t\t// of any 3rd party field types that want access to them.\n\t\tvar tiddler = wiki.getTiddler(sourceTitle);\n\t\thandler.fields = tiddler.fields;\n\t\tmacro[parameter] = handler;\n\t}\n};\n\nWidgetContext.prototype.getMacros = function() {\n\tvar signatures = this.parent.getMacros();\n\tif (this.macros) {\n\t\tfor (var macroName in this.macros) {\n\t\t\tvar macro = this.macros[macroName];\n\t\t\tfor (var param in macro) {\n\t\t\t\tsignatures[macroName + \"/\" + param] = macro[param];\n\t\t\t}\n\t\t}\n\t}\n\treturn signatures;\n};\n\n/**This does strange handling because it's possible for a macro to have\n * its individual parameters whitelisted in separate places.\n * Don't know WHY someone would do this, but it can happen.\n */\nWidgetContext.prototype.getMacro = function(macroName) {\n\tvar theseSettings = this.macros && this.macros[macroName];\n\tvar parentSettings;\n\tif (this.parent) {\n\t\tparentSettings = this.parent.getMacro(macroName);\n\t}\n\tif (theseSettings && parentSettings) {\n\t\t// gotta merge them without changing either. This is expensive,\n\t\t// but it'll happen rarely.\n\t\tvar rtnSettings = $tw.utils.extend(Object.create(null), theseSettings, parentSettings);\n\t\treturn rtnSettings;\n\t}\n\treturn theseSettings || parentSettings;\n};\n\n/**Returns the deepest descendant of the given widget.\n */\nWidgetContext.prototype.getBottom = function(widget) {\n\twhile (widget.children.length > 0) {\n\t\twidget = widget.children[0];\n\t}\n\treturn widget;\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/widget.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/wikitext.js":{"text":"/*\\\n\nContext for wikitext. It can contain rules about what's allowed in this\ncurrent layer of wikitext.\n\n\\*/\n\nvar WidgetContext = require('./widget.js').widget;\n\nfunction WikitextContext(parentContext) {\n\tthis.parent = parentContext;\n\tthis.widget = parentContext.widget;\n};\n\nexports.wikitext = WikitextContext;\n\nWikitextContext.prototype = new WidgetContext();\n\n// Unless this specific context has rules about it, widgets and prettyLInks are allowed.\nWikitextContext.prototype.allowWidgets = enabled;\nWikitextContext.prototype.allowPrettylinks = enabled;\n\nfunction enabled() { return true; };\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/wikitext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/backupIndexer.js":{"text":"/*\\\nmodule-type: library\n\nThis is a backup indexer Relink uses if the real one is disabled, or we're\n [\"string\", ...]\n */\n\nEntryNode.newType = function() {\n\treturn EntryNode;\n};\n\nEntryNode.prototype.add = function(entry) {\n\tthis.children.push(entry);\n};\n\nfunction EntryCollection() {\n\tthis.children = Object.create(null);\n\tthis.types = Object.create(null);\n};\n\nEntryNode.newCollection = function(name) {\n\treturn EntryCollection;\n};\n\n// Again. I reiterate. Don't use this. All this is just legacy support.\nObject.defineProperty(EntryCollection, 'impossible', {\n\tget: function() {\n\t\tvar imp = this._impossible;\n\t\tthis.eachChild(function(child) { imp = imp || child.impossible; });\n\t\treturn imp;\n\t},\n\tset: function(impossible) {\n\t\tthis._impossible = true;\n\t}\n});\n\nEntryCollection.prototype.eachChild = function(method) {\n\tfor (var child in this.children) {\n\t\tmethod(this.children[child]);\n\t}\n};\n\nEntryCollection.prototype.addChild = function(child, name, type) {\n\tthis.children[name] = child;\n\tthis.types[name] = type;\n};\n\nEntryCollection.prototype.hasChildren = function() {\n\treturn Object.keys(this.children).length > 0;\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils/entry.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/placeholder.js":{"text":"/*\\\n\nA method which doles out placeholders when requested, and constructs\nthe necessary supporting pragma when requested.\n\n\\*/\n\nvar utils = require('../utils');\n\nfunction Placeholder() {\n\tthis.placeholders = Object.create(null);\n\tthis.reverseMap = {};\n\tthis.used = Object.create(null);\n};\n\nmodule.exports = Placeholder;\n\nPlaceholder.prototype.getPlaceholderFor = function(value, category) {\n\tthis.reverseMap[category] = this.reverseMap[category] || Object.create(null);\n\tvar placeholder = this.reverseMap[category][value];\n\tif (placeholder) {\n\t\treturn placeholder;\n\t}\n\tvar config = (this.parser && this.parser.context) || utils.getWikiContext(this.parser.wiki);\n\tvar number = 0;\n\tvar prefix = \"relink-\"\n\tif (category && category !== \"title\") {\n\t\t// I don't like \"relink-title-1\". \"relink-1\" should be for\n\t\t// titles. lists, and filters can have descriptors though.\n\t\tprefix += category + \"-\";\n\t}\n\tdo {\n\t\tnumber += 1;\n\t\tplaceholder = prefix + number;\n\t} while (config.getMacroDefinition(placeholder) || this.used[placeholder]);\n\tthis.placeholders[placeholder] = value;\n\tthis.reverseMap[category][value] = placeholder;\n\tthis.used[placeholder] = true;\n\treturn placeholder;\n};\n\n// For registering placeholders that already existed\nPlaceholder.prototype.registerExisting = function(key, value) {\n\tthis.reverseMap[value] = key;\n\tthis.used[key] = true;\n};\n\nPlaceholder.prototype.getPreamble = function() {\n\tvar results = [];\n\tvar keys = Object.keys(this.placeholders);\n\tif (keys.length > 0) {\n\t\tkeys.sort();\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tvar name = keys[i];\n\t\t\tvar val = this.placeholders[name];\n\t\t\tresults.push(\"\\\\define \"+name+\"() \"+val+\"\\n\");\n\t\t}\n\t}\n\treturn results.join('');\n};\n\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils/placeholder.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/rebuilder.js":{"text":"/*\\\n\nThis helper class aids in reconstructing an existing string with new parts.\n\n\\*/\n\nfunction Rebuilder(text, start) {\n\tthis.text = text;\n\tthis.index = start || 0;\n\tthis.pieces = [];\n};\n\nmodule.exports = Rebuilder;\n\n/**Pieces must be added consecutively.\n * Start and end are the indices in the old string specifying where to graft\n * in the new piece.\n */\nRebuilder.prototype.add = function(value, start, end) {\n\tthis.pieces.push(this.text.substring(this.index, start), value);\n\tthis.index = end;\n};\n\nRebuilder.prototype.changed = function() {\n\treturn this.pieces.length > 0;\n};\n\nRebuilder.prototype.results = function(end) {\n\tif (this.changed()) {\n\t\tthis.pieces.push(this.text.substring(this.index, end));\n\t\treturn this.pieces.join('');\n\t}\n\treturn undefined;\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils/rebuilder.js","type":"application/javascript"},"$:/config/flibbles/relink/attributes/$button/actions":{"title":"$:/config/flibbles/relink/attributes/$button/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$button/set":{"title":"$:/config/flibbles/relink/attributes/$button/set","text":"reference"},"$:/config/flibbles/relink/attributes/$button/setTo":{"title":"$:/config/flibbles/relink/attributes/$button/setTo","text":"title"},"$:/config/flibbles/relink/attributes/$button/to":{"title":"$:/config/flibbles/relink/attributes/$button/to","text":"title"},"$:/config/flibbles/relink/attributes/$checkbox/actions":{"title":"$:/config/flibbles/relink/attributes/$checkbox/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$checkbox/checkactions":{"title":"$:/config/flibbles/relink/attributes/$checkbox/checkactions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$checkbox/tiddler":{"title":"$:/config/flibbles/relink/attributes/$checkbox/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$checkbox/tag":{"title":"$:/config/flibbles/relink/attributes/$checkbox/tag","text":"title"},"$:/config/flibbles/relink/attributes/$checkbox/uncheckactions":{"title":"$:/config/flibbles/relink/attributes/$checkbox/uncheckactions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$count/filter":{"title":"$:/config/flibbles/relink/attributes/$count/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$draggable/tiddler":{"title":"$:/config/flibbles/relink/attributes/$draggable/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$draggable/filter":{"title":"$:/config/flibbles/relink/attributes/$draggable/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$droppable/actions":{"title":"$:/config/flibbles/relink/attributes/$droppable/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$dropzone/actions":{"title":"$:/config/flibbles/relink/attributes/$dropzone/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler":{"title":"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$edit-text/tiddler":{"title":"$:/config/flibbles/relink/attributes/$edit-text/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$edit/tiddler":{"title":"$:/config/flibbles/relink/attributes/$edit/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$encrypt/filter":{"title":"$:/config/flibbles/relink/attributes/$encrypt/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler":{"title":"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$fields/tiddler":{"title":"$:/config/flibbles/relink/attributes/$fields/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$image/source":{"title":"$:/config/flibbles/relink/attributes/$image/source","text":"title"},"$:/config/flibbles/relink/attributes/$importvariables/filter":{"title":"$:/config/flibbles/relink/attributes/$importvariables/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$keyboard/actions":{"title":"$:/config/flibbles/relink/attributes/$keyboard/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$linkcatcher/to":{"title":"$:/config/flibbles/relink/attributes/$linkcatcher/to","text":"title"},"$:/config/flibbles/relink/attributes/$linkcatcher/set":{"title":"$:/config/flibbles/relink/attributes/$linkcatcher/set","text":"title"},"$:/config/flibbles/relink/attributes/$link/to":{"title":"$:/config/flibbles/relink/attributes/$link/to","text":"title"},"$:/config/flibbles/relink/attributes/$link/tooltip":{"title":"$:/config/flibbles/relink/attributes/$link/tooltip","text":"wikitext"},"$:/config/flibbles/relink/attributes/$linkcatcher/actions":{"title":"$:/config/flibbles/relink/attributes/$linkcatcher/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$list/filter":{"title":"$:/config/flibbles/relink/attributes/$list/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$list/template":{"title":"$:/config/flibbles/relink/attributes/$list/template","text":"title"},"$:/config/flibbles/relink/attributes/$list/editTemplate":{"title":"$:/config/flibbles/relink/attributes/$list/editTemplate","text":"title"},"$:/config/flibbles/relink/attributes/$list/emptyMessage":{"title":"$:/config/flibbles/relink/attributes/$list/emptyMessage","text":"wikitext"},"$:/config/flibbles/relink/attributes/$list/history":{"title":"$:/config/flibbles/relink/attributes/$list/history","text":"title"},"$:/config/flibbles/relink/attributes/$messagecatcher/actions":{"title":"$:/config/flibbles/relink/attributes/$messagecatcher/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$navigator/story":{"title":"$:/config/flibbles/relink/attributes/$navigator/story","text":"title"},"$:/config/flibbles/relink/attributes/$navigator/history":{"title":"$:/config/flibbles/relink/attributes/$navigator/history","text":"title"},"$:/config/flibbles/relink/attributes/$radio/actions":{"title":"$:/config/flibbles/relink/attributes/$radio/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$radio/tiddler":{"title":"$:/config/flibbles/relink/attributes/$radio/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$range/actions":{"title":"$:/config/flibbles/relink/attributes/$range/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$range/actionsStart":{"title":"$:/config/flibbles/relink/attributes/$range/actionsStart","text":"wikitext"},"$:/config/flibbles/relink/attributes/$range/actionsStop":{"title":"$:/config/flibbles/relink/attributes/$range/actionsStop","text":"wikitext"},"$:/config/flibbles/relink/attributes/$range/tiddler":{"title":"$:/config/flibbles/relink/attributes/$range/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$reveal/state":{"title":"$:/config/flibbles/relink/attributes/$reveal/state","text":"reference"},"$:/config/flibbles/relink/attributes/$reveal/stateTitle":{"title":"$:/config/flibbles/relink/attributes/$reveal/stateTitle","text":"title"},"$:/config/flibbles/relink/attributes/$select/actions":{"title":"$:/config/flibbles/relink/attributes/$select/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$select/tiddler":{"title":"$:/config/flibbles/relink/attributes/$select/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$setvariable/tiddler":{"title":"$:/config/flibbles/relink/attributes/$setvariable/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$setvariable/subtiddler":{"title":"$:/config/flibbles/relink/attributes/$setvariable/subtiddler","text":"title"},"$:/config/flibbles/relink/attributes/$setvariable/filter":{"title":"$:/config/flibbles/relink/attributes/$setvariable/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$set/tiddler":{"title":"$:/config/flibbles/relink/attributes/$set/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$set/subtiddler":{"title":"$:/config/flibbles/relink/attributes/$set/subtiddler","text":"title"},"$:/config/flibbles/relink/attributes/$set/filter":{"title":"$:/config/flibbles/relink/attributes/$set/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$tiddler/tiddler":{"title":"$:/config/flibbles/relink/attributes/$tiddler/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$transclude/tiddler":{"title":"$:/config/flibbles/relink/attributes/$transclude/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$transclude/subtiddler":{"title":"$:/config/flibbles/relink/attributes/$transclude/subtiddler","text":"title"},"$:/config/flibbles/relink/attributes/$view/tiddler":{"title":"$:/config/flibbles/relink/attributes/$view/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$view/subtiddler":{"title":"$:/config/flibbles/relink/attributes/$view/subtiddler","text":"title"},"$:/config/flibbles/relink/attributes/$wikify/text":{"title":"$:/config/flibbles/relink/attributes/$wikify/text","text":"wikitext"},"$:/plugins/flibbles/relink/configuration":{"title":"$:/plugins/flibbles/relink/configuration","text":"/whitespace trim\n
\n<>\n
\n"},"$:/config/flibbles/relink/fields/caption":{"title":"$:/config/flibbles/relink/fields/caption","text":"wikitext"},"$:/config/flibbles/relink/fields/filter":{"title":"$:/config/flibbles/relink/fields/filter","text":"filter"},"$:/config/flibbles/relink/fields/list":{"title":"$:/config/flibbles/relink/fields/list","text":"list"},"$:/config/flibbles/relink/fields/list-after":{"title":"$:/config/flibbles/relink/fields/list-after","text":"title"},"$:/config/flibbles/relink/fields/list-before":{"title":"$:/config/flibbles/relink/fields/list-before","text":"title"},"$:/config/flibbles/relink/fields/tags":{"title":"$:/config/flibbles/relink/fields/tags","text":"list"},"$:/plugins/flibbles/relink/language/Buttons/Delete/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/Delete/Hint","text":"delete"},"$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint","text":"go to defining tiddler"},"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint","text":"Specify a new widget/element attribute to be updated whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption","text":"add"},"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint","text":"Specify a new field to be updated whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption","text":"add"},"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint","text":"Specify a new filter operator to be considered whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption","text":"add"},"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint","text":"Specify a new macro parameter to be updated whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption","text":"add"},"$:/plugins/flibbles/relink/language/Error/InvalidAttributeName":{"title":"$:/plugins/flibbles/relink/language/Error/InvalidAttributeName","text":"Illegal characters in attribute name \"<$text text=<>/>\". Attributes cannot contain slashes ('/'), closing angle or square brackets ('>' or ']'), quotes or apostrophes ('\"' or \"'\"), equals ('='), or whitespace"},"$:/plugins/flibbles/relink/language/Error/InvalidElementName":{"title":"$:/plugins/flibbles/relink/language/Error/InvalidElementName","text":"Illegal characters in element/widget name \"<$text text=<>/>\". Element tags can only contain letters and the characters hyphen (`-`) and dollar sign (`$`)"},"$:/plugins/flibbles/relink/language/Error/InvalidMacroName":{"title":"$:/plugins/flibbles/relink/language/Error/InvalidMacroName","text":"Illegal characters in macro name \"<$text text=<>/>\". Macros cannot contain whitespace"},"$:/plugins/flibbles/relink/language/Error/InvalidParameterName":{"title":"$:/plugins/flibbles/relink/language/Error/InvalidParameterName","text":"Illegal characters in parameter name \"<$text text=<>/>\". Parameters can only contain letters, digits, and the characters underscore (`_`) and hyphen (`-`)"},"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator":{"title":"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator","text":"Filter Error: Unknown suffix for the 'relink' filter operator"},"$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks":{"title":"$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks","text":"Relink could not update '<>' to '<>' inside the following tiddlers:"},"$:/plugins/flibbles/relink/language/Error/UnrecognizedType":{"title":"$:/plugins/flibbles/relink/language/Error/UnrecognizedType","text":"Relink parse error: Unrecognized field type '<>'"},"$:/plugins/flibbles/relink/language/Help/Attributes":{"title":"$:/plugins/flibbles/relink/language/Help/Attributes","text":"See the Attributes documentation page for details."},"$:/plugins/flibbles/relink/language/Help/Fields":{"title":"$:/plugins/flibbles/relink/language/Help/Fields","text":"See the Fields documentation page for details."},"$:/plugins/flibbles/relink/language/Help/Macros":{"title":"$:/plugins/flibbles/relink/language/Help/Macros","text":"See the Macros documentation page for details."},"$:/plugins/flibbles/relink/language/Help/Operators":{"title":"$:/plugins/flibbles/relink/language/Help/Operators","text":"See the Operators documentation page for details."},"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty":{"title":"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty","text":"No tiddlers contain any fields, links, macros, transclusions, or widgets referencing this one"},"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description":{"title":"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description","text":"The following tiddlers contain fields, links, macros, transclusions, or widgets referencing this one:"},"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption":{"title":"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption","text":"//Relink// References"},"$:/plugins/flibbles/relink/language/ui/Attributes/Caption":{"title":"$:/plugins/flibbles/relink/language/ui/Attributes/Caption","text":"Attributes"},"$:/plugins/flibbles/relink/language/ui/Fields/Caption":{"title":"$:/plugins/flibbles/relink/language/ui/Fields/Caption","text":"Fields"},"$:/plugins/flibbles/relink/language/ui/Macros/Caption":{"title":"$:/plugins/flibbles/relink/language/ui/Macros/Caption","text":"Macros"},"$:/plugins/flibbles/relink/language/ui/Operators/Caption":{"title":"$:/plugins/flibbles/relink/language/ui/Operators/Caption","text":"Operators"},"$:/plugins/flibbles/relink/language/Warning/OldRelinkTextOperator":{"title":"$:/plugins/flibbles/relink/language/Warning/OldRelinkTextOperator","text":"Relink cannot parse your $$$<> wikitext until you migrate your \"<>\" relink module from the deprecated ''relinktextoperator'' module-type to ''relinktext''.

See the online documentation for details."},"$:/plugins/flibbles/relink/license":{"title":"$:/plugins/flibbles/relink/license","type":"text/vnd.tiddlywiki","text":"Relink Plugin Copyright (c) 2019-<> Cameron Fischer\n\n[[BSD 3-Clause License|https://raw.githubusercontent.com/flibbles/tw5-relink/master/LICENSE]]\n"},"$:/config/flibbles/relink/macros/csvtiddlers/filter":{"title":"$:/config/flibbles/relink/macros/csvtiddlers/filter","text":"filter"},"$:/config/flibbles/relink/macros/datauri/title":{"title":"$:/config/flibbles/relink/macros/datauri/title","text":"title"},"$:/config/flibbles/relink/macros/jsontiddler/title":{"title":"$:/config/flibbles/relink/macros/jsontiddler/title","text":"title"},"$:/config/flibbles/relink/macros/jsontiddlers/filter":{"title":"$:/config/flibbles/relink/macros/jsontiddlers/filter","text":"filter"},"$:/config/flibbles/relink/macros/list-links/filter":{"title":"$:/config/flibbles/relink/macros/list-links/filter","text":"filter"},"$:/config/flibbles/relink/macros/list-links-draggable/tiddler":{"title":"$:/config/flibbles/relink/macros/list-links-draggable/tiddler","text":"title"},"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate":{"title":"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate","text":"title"},"$:/config/flibbles/relink/macros/list-tagged-draggable/tag":{"title":"$:/config/flibbles/relink/macros/list-tagged-draggable/tag","text":"title"},"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate":{"title":"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate","text":"title"},"$:/config/flibbles/relink/macros/tabs/buttonTemplate":{"title":"$:/config/flibbles/relink/macros/tabs/buttonTemplate","text":"title"},"$:/config/flibbles/relink/macros/tabs/default":{"title":"$:/config/flibbles/relink/macros/tabs/default","text":"title"},"$:/config/flibbles/relink/macros/tabs/tabsList":{"title":"$:/config/flibbles/relink/macros/tabs/tabsList","text":"filter"},"$:/config/flibbles/relink/macros/tabs/template":{"title":"$:/config/flibbles/relink/macros/tabs/template","text":"title"},"$:/config/flibbles/relink/macros/tag/tag":{"title":"$:/config/flibbles/relink/macros/tag/tag","text":"title"},"$:/config/flibbles/relink/macros/tag-pill/tag":{"title":"$:/config/flibbles/relink/macros/tag-pill/tag","text":"title"},"$:/config/flibbles/relink/macros/timeline/subfilter":{"title":"$:/config/flibbles/relink/macros/timeline/subfilter","text":"filter"},"$:/config/flibbles/relink/macros/toc/tag":{"title":"$:/config/flibbles/relink/macros/toc/tag","text":"title"},"$:/config/flibbles/relink/macros/toc/itemClassFilter":{"title":"$:/config/flibbles/relink/macros/toc/itemClassFilter","text":"filter"},"$:/config/flibbles/relink/macros/toc-expandable/tag":{"title":"$:/config/flibbles/relink/macros/toc-expandable/tag","text":"title"},"$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter":{"title":"$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter","text":"filter"},"$:/config/flibbles/relink/macros/toc-expandable/exclude":{"title":"$:/config/flibbles/relink/macros/toc-expandable/exclude","text":"list"},"$:/config/flibbles/relink/macros/toc-selective-expandable/tag":{"title":"$:/config/flibbles/relink/macros/toc-selective-expandable/tag","text":"title"},"$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter":{"title":"$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter","text":"filter"},"$:/config/flibbles/relink/macros/toc-selective-expandable/exclude":{"title":"$:/config/flibbles/relink/macros/toc-selective-expandable/exclude","text":"list"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText","text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText","text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText","text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText","text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template","text":"title"},"$:/config/flibbles/relink/operators/list":{"title":"$:/config/flibbles/relink/operators/list","text":"reference"},"$:/config/flibbles/relink/operators/tag":{"title":"$:/config/flibbles/relink/operators/tag","text":"title"},"$:/config/flibbles/relink/operators/title":{"title":"$:/config/flibbles/relink/operators/title","text":"title"},"$:/config/flibbles/relink/operators/field:title":{"title":"$:/config/flibbles/relink/operators/field:title","text":"title"},"$:/language/EditTemplate/Title/Impossibles/Prompt":{"title":"$:/language/EditTemplate/Title/Impossibles/Prompt","text":"''Warning:'' Not all references in the following tiddlers can be updated by //Relink// due to the complexity of the new title:"},"$:/language/EditTemplate/Title/References/Prompt":{"title":"$:/language/EditTemplate/Title/References/Prompt","text":"The following tiddlers will be updated if relinking:"},"$:/language/EditTemplate/Title/Relink/Prompt":{"title":"$:/language/EditTemplate/Title/Relink/Prompt","text":"Use //Relink// to update ''<$text text=<>/>'' to ''<$text text=<>/>'' across all other tiddlers"},"$:/core/ui/EditTemplate/title":{"title":"$:/core/ui/EditTemplate/title","tags":"$:/tags/EditTemplate","text":"\\whitespace trim\n<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\" tabindex={{$:/config/EditTabIndex}}/>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title]\" variable=\"listItem\">\n\n
\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n
\n\n\n\n\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n
\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n
\n\n\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}\n\n<$tiddler tiddler=<> >\n\n<$list filter=\"[relink:wouldchangelimit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<> >\n\n<$set\n\tname=\"prompt\"\n\tfilter=\"[relink:wouldchangerelink:impossible]\"\n\tvalue=\"EditTemplate/Title/Impossibles/Prompt\"\n\temptyValue=\"EditTemplate/Title/References/Prompt\" >\n<$reveal type=\"nomatch\" state=<> text=\"show\">\n<$button set=<> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n \n<$macrocall $name=lingo title=<> />\n\n\n<$reveal type=\"match\" state=<> text=\"show\">\n<$button set=<> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n \n<$macrocall $name=lingo title=<> />\n\n\n\n\n<$reveal type=\"match\" state=<> text=\"show\">\n<$list variable=\"listItem\" filter=\"[relink:wouldchange!title[$:/StoryList]sort[title]]\" template=\"$:/plugins/flibbles/relink/ui/ListItemTemplate\">\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},"$:/config/flibbles/relink/PluginLibrary":{"title":"$:/config/flibbles/relink/PluginLibrary","caption":"//Relink// Library","url":"https://flibbles.github.io/tw5-relink/library/index.html","tags":"$:/tags/PluginLibrary","text":"The //Relink// library contains //Relink// as well as its supplemental plugins. It is maintained by Flibbles. See the [[github page|https://github.com/flibbles/tw5-relink]] for more information.\n"},"$:/plugins/flibbles/relink/readme":{"title":"$:/plugins/flibbles/relink/readme","type":"text/vnd.tiddlywiki","text":"When renaming a tiddler, Relink can update the fields, filters, and widgets\nof all other tiddlers. However, it works through whitelisting.\n\nIt's already configured to update tiddler titles for all core widgets, filters,\nand fields, but the whitelists can be customized for each of this in the\nconfiguration panel.\n\nSee the tw5-relink website for more details and examples.\n"},"$:/config/flibbles/relink/settings/default-type":{"title":"$:/config/flibbles/relink/settings/default-type","text":"title"},"$:/plugins/flibbles/relink/ui/ListItemTemplate":{"title":"$:/plugins/flibbles/relink/ui/ListItemTemplate","text":"\\whitespace trim\n<$set\n\tname=\"classes\"\n\tfilter=\"[relink:impossible]\"\n\tvalue=\"tc-menu-list-item tc-relink-impossible\"\n\temptyValue=\"tc-menu-list-item\">\n
>>\n<$link to=<>><$text text=<> />\n
\n\n"},"$:/plugins/flibbles/relink/ui/TiddlerInfo/References":{"title":"$:/plugins/flibbles/relink/ui/TiddlerInfo/References","caption":"{{$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption}}","tags":"$:/tags/TiddlerInfo","text":"\\define lingo-base() $:/plugins/flibbles/relink/language/TiddlerInfo/\n\\define filter() [all[current]relink:backreferences[]!title[$:/StoryList]!prefix[$:/temp/]sort[title]]\n\\whitespace trim\n<$list filter=\"[subfilterfirst[]]\">\n<>\n\n\n\n<$list filter=<> emptyMessage=<> variable=\"listItem\" template=\"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate\" />\n\n\n"},"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate":{"title":"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate","text":"\\whitespace trim\n\n\n<$link to=<>/>\n\n\n<$list filter=\"[relink:report]\">\n\n<$text text=<> />\n\n\n\n\n"},"$:/plugins/flibbles/relink/ui/components/button-delete":{"title":"$:/plugins/flibbles/relink/ui/components/button-delete","text":"\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define prefix() $:/config/flibbles/relink/\n\\whitespace trim\n\n<$list\n\tfilter=\"[all[current]prefix]\"\n\temptyMessage=\"<$link><$button class='tc-btn-invisible' tooltip={{$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint}}>{{$:/core/images/link}}\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/plugins/flibbles/relink/language/Buttons/Delete/Hint}}><$list filter=\"[all[current]is[tiddler]]\">\n<$action-deletetiddler $tiddler=<> />\n<$list filter=\"[all[current]is[shadow]]\">\n<$action-setfield $tiddler=<> text=\"\" />\n\n{{$:/core/images/delete-button}}\n\n\n"},"$:/plugins/flibbles/relink/ui/components/select-fieldtype":{"title":"$:/plugins/flibbles/relink/ui/components/select-fieldtype","text":"\\define prefix() $:/config/flibbles/relink/\n\\whitespace trim\n\n<$vars type={{{ [relink:type[]] }}} >\n<$list filter=\"[all[current]prefix]\" >\n<$select tiddler=<> >\n<$list variable=\"option\" filter=\"[relink:types[]]\">\n\n\n\n<$list filter=\"[all[current]!prefix]\">\n<$text text=<> />\n\n\n"},"$:/plugins/flibbles/relink/ui/components/tables":{"title":"$:/plugins/flibbles/relink/ui/components/tables","text":"\\define .make-table(title, plugin, default-table-state:yes)\n\\whitespace trim\n\n<$list variable=\"render\" filter=\"[relink:signatures<__plugin__>prefix<__category__>first[]]\">\n<$set name=\"table-state\" value=<>>\n> >\n<$reveal type=\"nomatch\" state=<> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<> setTo=\"yes\">\n{{$:/core/images/right-arrow}} ''<$text text=\"\"\"$title$\"\"\"/>''\n\n\n<$reveal type=\"match\" state=<> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<> setTo=\"no\">\n{{$:/core/images/down-arrow}} ''<$text text=\"\"\"$title$\"\"\"/>''\n\n\n\n<$list\n\tvariable=\"signature\"\n\tfilter=\"[relink:signatures<__plugin__>prefix<__category__>sort[]]\">\n<$vars key={{{ [removeprefix<__category__>removeprefix[/]] }}} >\n<$tiddler tiddler={{{[relink:source[]]}}} >\n<$reveal tag=\"tr\" type=\"match\" state=<> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$macrocall $name=<<__list-row-macro__>> signature=<> />\n{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}\n{{||$:/plugins/flibbles/relink/ui/components/button-delete}}\n\n\n\n\n\n\n\\end\n\n\\define tables(category, list-row-macro, header-list)\n\\whitespace trim\n<$vars\n\tcolumn-count={{{[enlist<__header-list__>] [[DeleteColumn]] +[count[]]}}}>\n\n\n<$list variable=\"header\" filter=\"[enlist<__header-list__>butlast[]]\">\n\n\n\n<<.make-table Custom \"\" yes>>\n\n<$list\n\tfilter=\"[plugin-type[plugin]![$:/core]![$:/plugins/flibbles/relink]]\">\n<$set name=\"subtitle\" value={{!!description}} emptyValue={{!!title}} >\n<$macrocall $name=\".make-table\" title=<> plugin=<> />\n\n\n<<.make-table Core \"$:/plugins/flibbles/relink\">>\n\n\n\n\\end\n"},"$:/plugins/flibbles/relink/ui/configuration/Attributes":{"title":"$:/plugins/flibbles/relink/ui/configuration/Attributes","caption":"{{$:/plugins/flibbles/relink/language/ui/Attributes/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-attr() $:/config/flibbles/relink/attributes/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define element-name-tiddler() $:/state/flibbles/relink/element-name\n\\define attribute-name-tiddler() $:/state/flibbles/relink/attribute-name\n\n\\define row()\n\\whitespace trim\n<$set name='element'\n value={{{[splitbefore[/]removesuffix[/]]}}}>\n<$set name=\"attribute\"\n value={{{[removeprefixremoveprefix[/]]}}}>\n<$text text=<> />\n<$text text=<> />\n\n\\end\n\\define body()\n\\whitespace trim\n\nAdd a new attribute:\n \n<$edit-text\n\ttiddler=<>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"widget/element\" />\n \n<$edit-text\n\ttiddler=<>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"attribute\" />\n \n<$reveal type=\"nomatch\" text=\"\" state=<> >\n<$reveal type=\"nomatch\" text=\"\" state=<> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewAttribute/Hint}}\n\taria-label={{$(lingo-base)$NewAttribute/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-attribute\"\n\telement={{$(element-name-tiddler)$}}\n\tattribute={{$(attribute-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<> />\n<$action-deletetiddler $tiddler=<> />\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n\n\n\n<$reveal type=\"match\" text=\"\" state=<> >\n<$button>\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n\n\n\n<$reveal type=\"match\" text=\"\" state=<> >\n<$button>\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"attributes\"\n\theader-list=\"[[Widget/HTML Element]] Attribute Type\"\n\tlist-row-macro=\"row\" />\n\\end\n\n{{$:/plugins/flibbles/relink/language/Help/Attributes}}\n\n<>\n"},"$:/plugins/flibbles/relink/ui/configuration/Fields":{"title":"$:/plugins/flibbles/relink/ui/configuration/Fields","caption":"{{$:/plugins/flibbles/relink/language/ui/Fields/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define field-name-tiddler() $:/state/flibbles/relink/field-name\n\n\\define row()\n<$text text=<> />\n\\end\n\n\\define body()\n\\whitespace trim\n\nAdd a new field:\n \n<$edit-text\n\ttiddler=<>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"field name\" />\n \n<$reveal type=\"nomatch\" text=\"\" state=<> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewField/Hint}}\n\taria-label={{$(lingo-base)$NewField/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-field\"\n\tfield={{$(field-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<> />\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n\n\n\n<$reveal type=\"match\" text=\"\" state=<> >\n<$button>\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"fields\"\n\theader-list=\"[[Field Name]] [[Field Type]]\"\n\tlist-row-macro=\"row\" />\n\\end\n\n{{$:/plugins/flibbles/relink/language/Help/Fields}}\n\n<>\n"},"$:/plugins/flibbles/relink/ui/configuration/Macros":{"title":"$:/plugins/flibbles/relink/ui/configuration/Macros","caption":"{{$:/plugins/flibbles/relink/language/ui/Macros/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-macro() $:/config/flibbles/relink/macros/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define macro-name-tiddler() $:/state/flibbles/relink/macro-name\n\\define parameter-name-tiddler() $:/state/flibbles/relink/parameter-name\n\n\\define row()\n\\whitespace trim\n<$set name=\"parameter\"\n value={{{[relink:splitafter[/]]}}}>\n<$set name='macro'\n value={{{[removesuffixremovesuffix[/]]}}}>\n<$text text=<> />\n<$text text=<> />\n\n\\end\n\n\\define body()\n\\whitespace trim\n\nAdd a new macro parameter:\n \n<$edit-text\n\ttiddler=<>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"macro\" />\n \n<$edit-text\n\ttiddler=<>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"parameter\" />\n \n<$reveal type=\"nomatch\" text=\"\" state=<> >\n<$reveal type=\"nomatch\" text=\"\" state=<> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewParameter/Hint}}\n\taria-label={{$(lingo-base)$NewParameter/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-parameter\"\n\tmacro={{$(macro-name-tiddler)$}}\n\tparameter={{$(parameter-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<> />\n<$action-deletetiddler $tiddler=<> />\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n\n\n\n<$reveal type=\"match\" text=\"\" state=<> >\n<$button>\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n\n\n\n<$reveal type=\"match\" text=\"\" state=<> >\n<$button>\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"macros\"\n\theader-list=\"Macro Parameter Type\"\n\tlist-row-macro=\"row\" />\n\\end\n\n{{$:/plugins/flibbles/relink/language/Help/Macros}}\n\n<>\n"},"$:/plugins/flibbles/relink/ui/configuration/Operators":{"title":"$:/plugins/flibbles/relink/ui/configuration/Operators","caption":"{{$:/plugins/flibbles/relink/language/ui/Operators/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define operator-name-tiddler() $:/state/flibbles/relink/operator-name\n\n\\define row()\n<$text text=<> />\n\\end\n\n\\define body()\n\\whitespace trim\n\nAdd a new filter operator:\n \n<$edit-text\n\ttiddler=<>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"operator name\" />\n \n<$reveal type=\"nomatch\" text=\"\" state=<>>\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewOperator/Hint}}\n\taria-label={{$(lingo-base)$NewOperator/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-operator\"\n\toperator={{$(operator-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<> />\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n\n\n\n<$reveal type=\"match\" text=\"\" state=<>>\n<$button>\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"operators\"\n\theader-list=\"[[Filter Operator]] [[Operand Type]]\"\n\tlist-row-macro=\"row\" />\n\\end\n\n{{$:/plugins/flibbles/relink/language/Help/Operators}}\n\n<>\n"},"$:/plugins/flibbles/relink/ui/stylesheet.css":{"title":"$:/plugins/flibbles/relink/ui/stylesheet.css","text":".tc-relink-references {\n}\n\n.tc-relink-references-table {\n\twidth: 100%;\n\tborder: none;\n}\n\n.tc-relink-references-table td {\n\tborder-left: none;\n}\n\n.tc-relink-references-table tr:first-child td {\n\tborder-top: none;\n}\n\n.tc-relink-references-title {\n\ttext-align: left;\n\tvertical-align: top;\n}\n\n.tc-relink-references-occurrence {\n\tfont-style: italic;\n\ttext-align: left;\n\tfont-weight: 200;\n\tpadding-left: 25px;\n\tvertical-align: top;\n}\n\n.tc-relink-header-plugin {\n\ttext-align: left;\n}\n\n.tc-relink-header-plugin button {\n\twidth: 100%\n}\n\n.tc-relink-column-type {\n\twidth: 8em;\n}\n\n.tc-relink-column-type select {\n\twidth: 100%;\n}\n\n.tc-relink-column-delete {\n\tborder-left: none;\n\ttext-align: left;\n}\n\n.tc-relink-column-delete button {\n\tpadding-left: 1em;\n}\n\n.tc-relink-impossible a.tc-tiddlylink {\n\tcolor: red;\n}\n","tags":"$:/tags/Stylesheet","type":"text/css"}}} \ No newline at end of file +{"tiddlers":{"$:/plugins/flibbles/relink/js/bulkops.js":{"text":"/*\\\nmodule-type: startup\n\nReplaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js\n\nThis is a startup instead of a wikimethods module-type because it's the only\nway to ensure this runs after the old relinkTiddler method is applied.\n\n\\*/\n(function(){\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\n\nexports.name = \"redefine-relinkTiddler\";\nexports.synchronous = true;\n// load-modules is when wikimethods are applied in\n// ``$:/core/modules/startup/load-modules.js``\nexports.after = ['load-modules'];\n\nexports.startup = function() {\n\t$tw.Wiki.prototype.relinkTiddler = relinkTiddler;\n};\n\n/** Walks through all relinkable tiddlers and relinks them.\n * This replaces the existing function in core Tiddlywiki.\n */\nfunction relinkTiddler(fromTitle, toTitle, options) {\n\toptions = options || {};\n\tvar failures = [];\n\tvar indexer = utils.getIndexer(this);\n\tvar records = indexer.relinkLookup(fromTitle, toTitle, options);\n\tfor (var title in records) {\n\t\tvar entries = records[title],\n\t\t\tchanges = Object.create(null),\n\t\t\tupdate = false,\n\t\t\tfails = false;\n\t\tfor (var field in entries) {\n\t\t\tvar entry = entries[field];\n\t\t\tfails = fails || entry.impossible;\n\t\t\tif (entry.output !== undefined) {\n\t\t\t\tchanges[field] = entry.output;\n\t\t\t\tupdate = true;\n\t\t\t}\n\t\t}\n\t\tif (fails) {\n\t\t\tfailures.push(title);\n\t\t}\n\t\t// If any fields changed, update tiddler\n\t\tif (update) {\n\t\t\tconsole.log(\"Renaming '\"+fromTitle+\"' to '\"+toTitle+\"' in '\" + title + \"'\");\n\n\t\t\tvar tiddler = this.getTiddler(title);\n\t\t\tvar modifyField = utils.touchModifyField(this) ? this.getModificationFields() : undefined;\n\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,changes,modifyField)\n\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\tthis.addTiddler(newTiddler);\n\t\t\t// If the title changed, we need to perform a nested rename\n\t\t\tif (newTiddler.fields.title !== title) {\n\t\t\t\tthis.deleteTiddler(title);\n\t\t\t\tthis.relinkTiddler(title, newTiddler.fields.title,options);\n\t\t\t}\n\t\t}\n\t};\n\tif (failures.length > 0) {\n\t\tvar options = $tw.utils.extend(\n\t\t\t{ variables: {to: toTitle, from: fromTitle},\n\t\t\t wiki: this},\n\t\t\toptions );\n\t\tlanguage.reportFailures(failures, options);\n\t}\n};\n\n})();\n","module-type":"startup","title":"$:/plugins/flibbles/relink/js/bulkops.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/indexer.js":{"text":"/*\\\nmodule-type: indexer\n\nIndexes results from tiddler reference reports so we don't have to call them\nso much.\n\n\\*/\n\n\"use strict\";\n\nvar utils = require(\"./utils.js\");\nvar TiddlerContext = utils.getContext('tiddler');\n\nfunction Indexer(wiki) {\n\tthis.wiki = wiki;\n};\n\nIndexer.prototype.init = function() {\n\tthis.rebuild();\n};\n\nIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n\tthis.backIndex = null;\n\tthis.contexts = Object.create(null);\n\tthis.changedTiddlers = undefined;\n\tthis.lastRelinkFrom = undefined;\n};\n\nIndexer.prototype.update = function(updateDescriptor) {\n\tif (!this.index) {\n\t\treturn;\n\t}\n\tvar title;\n\tif (!this.changedTiddlers) {\n\t\tthis.changedTiddlers = Object.create(null);\n\t}\n\tif (updateDescriptor.old.exists) {\n\t\ttitle = updateDescriptor.old.tiddler.fields.title;\n\t\tthis.changedTiddlers[title] = {deleted: true};\n\t\tthis._purge(title);\n\t}\n\tif (updateDescriptor['new'].exists) {\n\t\t// If its the same tiddler as old, this overrides the 'deleted' entry\n\t\ttitle = updateDescriptor['new'].tiddler.fields.title;\n\t\tthis.changedTiddlers[title] = {modified: true};\n\t}\n};\n\nIndexer.prototype.lookup = function(title) {\n\tthis._upkeep();\n\treturn this.index[title];\n};\n\nIndexer.prototype.reverseLookup = function(title) {\n\tthis._upkeep();\n\treturn this.backIndex[title] || Object.create(null);\n};\n\nIndexer.prototype.relinkLookup = function(fromTitle, toTitle, options) {\n\tthis._upkeep();\n\tvar shortlist = undefined;\n\tif (this.lastRelinkFrom === fromTitle) {\n\t\tif (this.lastRelinkTo === toTitle) {\n\t\t\t// We need to reintroduce the relink cache, where temporary info\n\t\t\t// was stored.\n\t\t\toptions.cache = this.lastRelinkCache;\n\t\t\treturn this.lastRelinkResult;\n\t\t}\n\t\tshortlist = Object.keys(this.lastRelinkResult);\n\t}\n\tthis.lastRelinkResult = utils.getRelinkResults(this.wiki, fromTitle, toTitle, this.context, shortlist, options);\n\tthis.lastRelinkTo = toTitle;\n\tthis.lastRelinkFrom = fromTitle;\n\tthis.lastRelinkCache = options.cache;\n\treturn this.lastRelinkResult;\n};\n\nIndexer.prototype._upkeep = function() {\n\tvar title;\n\tif (this.changedTiddlers && (this.context.changed(this.changedTiddlers) || this.context.parent.changed(this.changedTiddlers))) {\n\t\t// If global macro context or whitelist context changed, wipe all\n\t\tthis.rebuild();\n\t}\n\tif (!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tthis.backIndex = Object.create(null);\n\t\tthis.context = utils.getWikiContext(this.wiki);\n\t\tvar titles = this.wiki.getRelinkableTitles();\n\t\tfor (var i = 0; i < titles.length; i++) {\n\t\t\tthis._populate(titles[i]);\n\t\t};\n\t} else if (this.changedTiddlers) {\n\t\t// If there are cached changes, we apply them now.\n\t\tfor (title in this.contexts) {\n\t\t\tvar tiddlerContext = this.contexts[title];\n\t\t\tif (tiddlerContext.changed(this.changedTiddlers)) {\n\t\t\t\tthis._purge(title);\n\t\t\t\tthis._populate(title);\n\t\t\t\tthis._dropResults(title);\n\t\t\t\t// Wipe this change, so we don't risk updating it twice.\n\t\t\t\tthis.changedTiddlers[title] = undefined;\n\t\t\t}\n\t\t}\n\t\tfor (title in this.changedTiddlers) {\n\t\t\tvar change = this.changedTiddlers[title];\n\t\t\tif (change && change.modified) {\n\t\t\t\tthis._purge(title);\n\t\t\t\tthis._populate(title);\n\t\t\t\tthis._dropResults(title);\n\t\t\t}\n\t\t}\n\t\tthis.changedTiddlers = undefined;\n\t}\n};\n\nIndexer.prototype._purge = function(title) {\n\tfor (var entry in this.index[title]) {\n\t\tdelete this.backIndex[entry][title];\n\t}\n\tdelete this.contexts[title];\n\tdelete this.index[title];\n};\n\n// This drops the cached relink results if unsanctioned tiddlers were changed\nIndexer.prototype._dropResults = function(title) {\n\tvar tiddler = this.wiki.getTiddler(title);\n\tif (title !== this.lastRelinkFrom\n\t&& title !== this.lastRelinkTo\n\t&& (!tiddler\n\t\t|| !$tw.utils.hop(tiddler.fields, 'draft.of') // is a draft\n\t\t|| tiddler.fields['draft.of'] !== this.lastRelinkFrom // draft of target\n\t\t|| references(this.index[title], this.lastRelinkFrom))) { // draft references target\n\t\t// This is not the draft of the last relinked title,\n\t\t// so our cached results should be wiped.\n\t\tthis.lastRelinkFrom = undefined;\n\t}\n};\n\nfunction references(list, item) {\n\treturn list !== undefined && list[item];\n};\n\nIndexer.prototype._populate = function(title) {\n\t// Fetch the report for a title, and populate the indexes with result\n\tvar tiddlerContext = new TiddlerContext(this.wiki, this.context, title);\n\tvar references = utils.getTiddlerRelinkReferences(this.wiki, title, tiddlerContext);\n\tthis.index[title] = references;\n\tif (tiddlerContext.hasImports()) {\n\t\tthis.contexts[title] = tiddlerContext;\n\t}\n\tfor (var ref in references) {\n\t\tthis.backIndex[ref] = this.backIndex[ref] || Object.create(null);\n\t\tthis.backIndex[ref][title] = references[ref];\n\t}\n};\n\nexports.RelinkIndexer = Indexer;\n","module-type":"indexer","title":"$:/plugins/flibbles/relink/js/indexer.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/language.js":{"text":"/*\\\nmodule-type: library\n\nThis handles all logging and alerts Relink emits.\n\n\\*/\n\nexports.getString = function(outputType, title, options) {\n\ttitle = \"$:/plugins/flibbles/relink/language/\" + title;\n\treturn options.wiki.renderTiddler(outputType, title, options);\n};\n\nvar logger;\n\nexports.warn = function(string, options) {\n\tif (!logger) {\n\t\tlogger = new $tw.utils.Logger(\"Relinker\");\n\t}\n\tlogger.alert(string);\n};\n\nexports.reportFailures = function(failureList, options) {\n\tvar alertString = this.getString(\"text/html\", \"Error/ReportFailedRelinks\", options)\n\tvar alreadyReported = Object.create(null);\n\tvar reportList = [];\n\t$tw.utils.each(failureList, function(f) {\n\t\tif (!alreadyReported[f]) {\n\t\t\tif ($tw.browser) {\n\t\t\t\t// This might not make the link if the title is complicated.\n\t\t\t\t// Whatever.\n\t\t\t\treportList.push(\"\\n* [[\" + f + \"]]\");\n\t\t\t} else {\n\t\t\t\treportList.push(\"\\n* \" + f);\n\t\t\t}\n\t\t\talreadyReported[f] = true;\n\t\t}\n\t});\n\tthis.warn(alertString + \"\\n\" + reportList.join(\"\"));\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/language.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/mangler.js":{"text":"/*\\\nmodule-type: widget\n\nCreates a mangler widget for field validation. This isn't meant to be used\nby the user. It's only used in Relink configuration.\n\n\\*/\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nvar RelinkManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"relink-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"relink-add-operator\", handler: \"handleAddOperatorEvent\"},\n\t\t{type: \"relink-add-parameter\", handler: \"handleAddParameterEvent\"},\n\t\t{type: \"relink-add-attribute\", handler: \"handleAddAttributeEvent\"}\n\t]);\n};\n\nexports.relinkmangler = RelinkManglerWidget;\n\nRelinkManglerWidget.prototype = new Widget();\n\n// This wraps alert so it can be monkeypatched during testing.\nRelinkManglerWidget.prototype.alert = function(message) {\n\talert(message);\n};\n\nRelinkManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (typeof param !== \"object\" || !param.field) {\n\t\t// Can't handle it.\n\t\treturn true;\n\t}\n\tvar trimmedName = param.field.trim();\n\tif (!trimmedName) {\n\t\t// Still can't handle it, but don't warn.\n\t\treturn true;\n\t}\n\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\tthis.alert($tw.language.getString(\n\t\t\t\"InvalidFieldName\",\n\t\t\t{variables:\n\t\t\t\t{fieldName: trimmedName}\n\t\t\t}\n\t\t));\n\t} else {\n\t\tadd(this.wiki, \"fields\", trimmedName);\n\t}\n\treturn true;\n};\n\n/**Not much validation, even though there are definitely illegal\n * operator names. If you input on, Relink won't relink it, but it\n * won't choke on it either. Tiddlywiki will...\n */\nRelinkManglerWidget.prototype.handleAddOperatorEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param) {\n\t\tadd(this.wiki, \"operators\", param.operator);\n\t}\n\treturn true;\n};\n\nRelinkManglerWidget.prototype.handleAddParameterEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param && param.macro && param.parameter) {\n\t\tif (/\\s/.test(param.macro.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"text/plain\",\n\t\t\t\t\"Error/InvalidMacroName\",\n\t\t\t\t{ variables: {macroName: param.macro},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else if (/[ \\/]/.test(param.parameter.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"text/plain\",\n\t\t\t\t\"Error/InvalidParameterName\",\n\t\t\t\t{ variables: {parameterName: param.parameter},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else {\n\t\t\tadd(this.wiki, \"macros\", param.macro, param.parameter);\n\t\t}\n\t}\n\treturn true;\n};\n\nRelinkManglerWidget.prototype.handleAddAttributeEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param && param.element && param.attribute) {\n\t\tif (/[ \\/]/.test(param.element.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"text/plain\",\n\t\t\t\t\"Error/InvalidElementName\",\n\t\t\t\t{ variables: {elementName: param.element},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else if (/[ \\/]/.test(param.attribute.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"text/plain\",\n\t\t\t\t\"Error/InvalidAttributeName\",\n\t\t\t\t{ variables: {attributeName: param.attribute},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else {\n\t\t\tadd(this.wiki, \"attributes\", param.element, param.attribute);\n\t\t}\n\t}\n\treturn true;\n};\n\nfunction add(wiki, category/*, path parts*/) {\n\tvar path = \"$:/config/flibbles/relink/\" + category;\n\tfor (var x = 2; x < arguments.length; x++) {\n\t\tvar part = arguments[x];\n\t\t// Abort if it's falsy, or only whitespace. Also, trim spaces\n\t\tif (!part || !(part = part.trim())) {\n\t\t\treturn;\n\t\t}\n\t\tpath = path + \"/\" + part;\n\t}\n\tvar def = utils.getDefaultType(wiki);\n\twiki.addTiddler({title: path, text: def});\n};\n","module-type":"widget","title":"$:/plugins/flibbles/relink/js/mangler.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/settings.js":{"text":"/*\\\nmodule-type: library\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar utils = require('./utils');\n\n///// Legacy. You used to be able to access the type from utils.\nexports.getType = utils.getType;\n/////\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/settings.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils.js":{"text":"/*\\\nmodule-type: library\n\nUtility methods for relink.\n\n\\*/\n\nvar macroFilter = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\n/**This works nearly identically to $tw.modules.getModulesByTypeAsHashmap\n * except that this also takes care of migrating V1 relink modules.\n */\nexports.getModulesByTypeAsHashmap = function(moduleType, nameField) {\n\tvar results = Object.create(null);\n\t$tw.modules.forEachModuleOfType(moduleType, function(title, module) {\n\t\tvar key = module[nameField];\n\t\tif (key !== undefined) {\n\t\t\tresults[key] = module;\n\t\t} else {\n\t\t\tfor (var entry in module) {\n\t\t\t\tresults[entry] = {\n\t\t\t\t\trelink: module[entry],\n\t\t\t\t\treport: function() {}};\n\t\t\t\tresults[entry][nameField] = entry;\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.getTiddlerRelinkReferences = function(wiki, title, context) {\n\tvar tiddler = wiki.getTiddler(title),\n\t\treferences = Object.create(null),\n\t\toptions = {settings: context, wiki: wiki};\n\tif (tiddler) {\n\t\ttry {\n\t\t\tfor (var relinker in getRelinkOperators()) {\n\t\t\t\tgetRelinkOperators()[relinker].report(tiddler, function(title, blurb) {\n\t\t\t\t\treferences[title] = references[title] || [];\n\t\t\t\t\treferences[title].push(blurb || '');\n\t\t\t\t}, options);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tif (e.message) {\n\t\t\t\te.message = e.message + \"\\nWhen reporting '\" + title + \"' Relink references\";\n\t\t\t}\n\t\t\tthrow e;\n\t\t}\n\t}\n\treturn references;\n};\n\n/** Returns a pair like this,\n * { title: {field: entry, ... }, ... }\n */\nexports.getRelinkResults = function(wiki, fromTitle, toTitle, context, tiddlerList, options) {\n\toptions = options || {};\n\toptions.wiki = options.wiki || wiki;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\tvar changeList = Object.create(null);\n\tif(fromTitle && toTitle !== undefined) {\n\t\tif (tiddlerList === undefined) {\n\t\t\ttiddlerList = wiki.getRelinkableTitles();\n\t\t}\n\t\tfor (var i = 0; i < tiddlerList.length; i++) {\n\t\t\tvar title = tiddlerList[i];\n\t\t\tvar tiddler = wiki.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\ttry {\n\t\t\t\t\tvar entries = Object.create(null),\n\t\t\t\t\t\toperators = getRelinkOperators();\n\t\t\t\t\toptions.settings = new Contexts.tiddler(wiki, context, title);\n\t\t\t\t\tfor (var operation in operators) {\n\t\t\t\t\t\toperators[operation].relink(tiddler, fromTitle, toTitle, entries, options);\n\t\t\t\t\t}\n\t\t\t\t\tfor (var field in entries) {\n\t\t\t\t\t\t// So long as there is one key,\n\t\t\t\t\t\t// add it to the change list.\n\t\t\t\t\t\tif (tiddler.fields[\"plugin-type\"]) {\n\t\t\t\t\t\t\t// We never change plugins, even if they have links\n\t\t\t\t\t\t\tchangeList[title] = {};\n\t\t\t\t\t\t\tchangeList[title][field] = {impossible: true};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tchangeList[title] = entries;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Should we test for instanceof Error instead?: yes\n\t\t\t\t\t// Does that work in the testing environment?: no\n\t\t\t\t\tif (e.message) {\n\t\t\t\t\t\te.message = e.message + \"\\nWhen relinking '\" + title + \"'\";\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn changeList;\n};\n\nvar Contexts = $tw.modules.applyMethods('relinkcontext');\n\nexports.getContext = function(name) {\n\treturn Contexts[name];\n};\n\nexports.getWikiContext = function(wiki) {\n\t// This gives a fresh context every time. It is up to the indexer or\n\t// the cache to preserve those contexts for as long as needed.\n\tvar whitelist = new Contexts.whitelist(wiki);\n\treturn new Contexts.import(wiki, whitelist, macroFilter);\n};\n\n/** Returns the Relink indexer, or a dummy object which pretends to be one.\n */\nexports.getIndexer = function(wiki) {\n\tif (!wiki._relink_indexer) {\n\t\twiki._relink_indexer = (wiki.getIndexer && wiki.getIndexer(\"RelinkIndexer\")) || new (require('$:/plugins/flibbles/relink/js/utils/backupIndexer.js'))(wiki);\n\t}\n\treturn wiki._relink_indexer;\n};\n\n/**Relinking supports a cache that persists throughout a whole relink op.\n * This is because the Tiddlywiki caches may get wiped multiple times\n * throughout the course of a relink.\n */\nexports.getCacheForRun = function(options, cacheName, initializer) {\n\toptions.cache = options.cache || Object.create(null);\n\tif (!$tw.utils.hop(options.cache, cacheName)) {\n\t\toptions.cache[cacheName] = initializer();\n\t}\n\treturn options.cache[cacheName];\n};\n\n/**Returns a specific relinker.\n * This is useful for wikitext rules which need to parse a filter or a list\n */\nexports.getType = function(name) {\n\tvar Handler = getFieldTypes()[name];\n\treturn Handler ? new Handler() : undefined;\n};\n\nexports.getTypes = function() {\n\t// We don't return fieldTypes, because we don't want it modified,\n\t// and we need to filter out legacy names.\n\tvar rtn = Object.create(null);\n\tfor (var type in getFieldTypes()) {\n\t\tvar typeObject = getFieldTypes()[type];\n\t\trtn[typeObject.typeName] = typeObject;\n\t}\n\treturn rtn;\n};\n\nexports.getDefaultType = function(wiki) {\n\tvar tiddler = wiki.getTiddler(\"$:/config/flibbles/relink/settings/default-type\");\n\tvar defaultType = tiddler && tiddler.fields.text;\n\t// make sure the default actually exists, otherwise default\n\treturn fieldTypes[defaultType] ? defaultType : \"title\";\n};\n\nexports.touchModifyField = function(wiki) {\n\tvar tiddler = wiki.getTiddler(\"$:/config/flibbles/relink/touch-modify\");\n\treturn tiddler && tiddler.fields.text.trim() === \"yes\";\n};\n\nvar fieldTypes;\n\nfunction getFieldTypes() {\n\tif (!fieldTypes) {\n\t\tfieldTypes = Object.create(null);\n\t\t$tw.modules.forEachModuleOfType(\"relinkfieldtype\", function(title, exports) {\n\t\t\tfunction NewType() {};\n\t\t\tNewType.prototype = exports;\n\t\t\tNewType.typeName = exports.name;\n\t\t\tfieldTypes[exports.name] = NewType;\n\t\t\t// For legacy, if the NewType doesn't have a report method, we add one\n\t\t\tif (!exports.report) {\n\t\t\t\texports.report = function() {};\n\t\t\t}\n\t\t\t// Also for legacy, some of the field types can go by other names\n\t\t\tif (exports.aliases) {\n\t\t\t\t$tw.utils.each(exports.aliases, function(alias) {\n\t\t\t\t\tfieldTypes[alias] = NewType;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\treturn fieldTypes;\n}\n\nvar relinkOperators;\n\nfunction getRelinkOperators() {\n\tif (!relinkOperators) {\n\t\trelinkOperators = exports.getModulesByTypeAsHashmap('relinkoperator', 'name');\n\t}\n\treturn relinkOperators;\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/wikimethods.js":{"text":"/*\\\nmodule-type: wikimethod\n\nIntroduces some utility methods used by Relink.\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.getTiddlerRelinkReferences = function(title) {\n\treturn utils.getIndexer(this).lookup(title);\n};\n\nexports.getTiddlerRelinkBackreferences = function(title) {\n\treturn utils.getIndexer(this).reverseLookup(title);\n};\n\nexports.getRelinkableTitles = function() {\n\tvar toUpdate = \"$:/config/flibbles/relink/to-update\";\n\tvar wiki = this;\n\treturn this.getCacheForTiddler(toUpdate, \"relink-toUpdate\", function() {\n\t\tvar tiddler = wiki.getTiddler(toUpdate);\n\t\tif (tiddler) {\n\t\t\treturn wiki.compileFilter(tiddler.fields.text);\n\t\t} else {\n\t\t\treturn wiki.allTitles;\n\t\t}\n\t})();\n};\n","module-type":"wikimethod","title":"$:/plugins/flibbles/relink/js/wikimethods.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js":{"text":"/*\\\nmodule-type: allfilteroperator\n\nFilter function for [all[relinkable]].\nReturns all tiddlers subject to relinking.\n\n\\*/\n\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.relinkable = function(source,prefix,options) {\n\treturn options.wiki.getRelinkableTitles();\n};\n\n})();\n","module-type":"allfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/references.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns all non-shadow tiddlers that have any\nsort of updatable reference to it.\n\n`relink:backreferences[]]`\n`relink:references[]]`\n\nReturns all tiddlers that reference `fromTiddler` somewhere inside them.\n\nInput is ignored. Maybe it shouldn't do this.\n\\*/\n\nvar LinkedList = $tw.utils.LinkedList;\n\nif (!LinkedList) {\n\t/* If the linked list isn't available, make a quick crappy version. */\n\tLinkedList = function() {this.array=[];};\n\n\tLinkedList.prototype.pushTop = function(array) {\n\t\t$tw.utils.pushTop(this.array, array);\n\t};\n\n\tLinkedList.prototype.toArray = function() {\n\t\treturn this.array;\n\t};\n};\n\nexports.backreferences = function(source,operator,options) {\n\tvar results = new LinkedList();\n\tsource(function(tiddler,title) {\n\t\tresults.pushTop(Object.keys(options.wiki.getTiddlerRelinkBackreferences(title,options)));\n\t});\n\treturn results.toArray();\n};\n\nexports.references = function(source,operator,options) {\n\tvar results = new LinkedList();\n\tsource(function(tiddler,title) {\n\t\tvar refs = options.wiki.getTiddlerRelinkReferences(title,options);\n\t\tif (refs) {\n\t\t\tresults.pushTop(Object.keys(refs));\n\t\t}\n\t});\n\treturn results.toArray();\n};\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/references.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/relink.js":{"text":"/*\\\nmodule-type: filteroperator\n\nThis filter acts as a namespace for several small, simple filters, such as\n\n`[relink:impossible[]]`\n\n\\*/\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nvar relinkFilterOperators;\n\nfunction getRelinkFilterOperators() {\n\tif(!relinkFilterOperators) {\n\t\trelinkFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"relinkfilteroperator\",\n\t\t relinkFilterOperators);\n\t}\n\treturn relinkFilterOperators;\n}\n\nexports.relink = function(source,operator,options) {\n\tvar suffixPair = parseSuffix(operator.suffix);\n\tvar relinkFilterOperator = getRelinkFilterOperators()[suffixPair[0]];\n\tif (relinkFilterOperator) {\n\t\tvar newOperator = $tw.utils.extend({}, operator);\n\t\tnewOperator.suffix = suffixPair[1];\n\t\treturn relinkFilterOperator(source, newOperator, options);\n\t} else {\n\t\treturn [language.getString(\"text/plain\", \"Error/RelinkFilterOperator\", options)];\n\t}\n};\n\nfunction parseSuffix(suffix) {\n\tvar index = suffix? suffix.indexOf(\":\"): -1;\n\tif (index >= 0) {\n\t\treturn [suffix.substr(0, index), suffix.substr(index+1)];\n\t} else {\n\t\treturn [suffix];\n\t}\n}\n","module-type":"filteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/relink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/report.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns a string for each occurrence of that title\nwithin each input title.\n\n[[title]] +[relink:report[fromTiddler]]`\n\nReturns string representation of fromTiddler occurrences in title.\n\\*/\n\nexports.report = function(source,operator,options) {\n\tvar fromTitle = operator.operand,\n\t\tresults = [];\n\tif (fromTitle) {\n\t\tvar blurbs = options.wiki.getTiddlerRelinkBackreferences(fromTitle);\n\t\tsource(function(tiddler, title) {\n\t\t\tif (blurbs[title]) {\n\t\t\t\tresults = results.concat(blurbs[title]);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/report.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/signatures.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nThis filter returns all input tiddlers which are a source of\nrelink configuration.\n\n`[all[tiddlers+system]relink:source[macros]]`\n\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nexports.signatures = function(source,operator,options) {\n\tvar plugin = operator.operand || null;\n\tvar set = getSet(options);\n\tif (plugin === \"$:/core\") {\n\t\t// Core doesn't actually have any settings. We mean Relink\n\t\tplugin = \"$:/plugins/flibbles/relink\";\n\t}\n\tvar signatures = [];\n\tfor (var signature in set) {\n\t\tvar source = set[signature].source;\n\t\tif (options.wiki.getShadowSource(source) === plugin) {\n\t\t\tsignatures.push(signature);\n\t\t}\n\t}\n\treturn signatures;\n};\n\nexports.type = function(source,operator,options) {\n\tvar results = [];\n\tvar set = getSet(options);\n\tsource(function(tiddler, signature) {\n\t\tif (set[signature]) {\n\t\t\tresults.push(set[signature].name);\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.types = function(source,operator,options) {\n\tvar def = utils.getDefaultType(options.wiki);\n\tvar types = Object.keys(utils.getTypes());\n\ttypes.sort();\n\t// move default to front\n\ttypes.sort(function(x,y) { return x === def ? -1 : y === def ? 1 : 0; });\n\treturn types;\n};\n\nexports.source = function(source,operator,options) {\n\tvar results = [];\n\tvar category = operator.suffix;\n\tvar set = getSet(options);\n\tsource(function(tiddler, signature) {\n\t\tif (set[signature]) {\n\t\t\tresults.push(set[signature].source);\n\t\t}\n\t});\n\treturn results;\n};\n\nfunction getSet(options) {\n\treturn options.wiki.getGlobalCache(\"relink-signatures\", function() {\n\t\tvar config = utils.getWikiContext(options.wiki);\n\t\tvar set = Object.create(null);\n\t\tvar categories = {\n\t\t\tattributes: config.getAttributes(),\n\t\t\tfields: config.getFields(),\n\t\t\tmacros: config.getMacros(),\n\t\t\toperators: config.getOperators()};\n\t\t$tw.utils.each(categories, function(list, category) {\n\t\t\t$tw.utils.each(list, function(item, key) {\n\t\t\t\tset[category + \"/\" + key] = item;\n\t\t\t});\n\t\t});\n\t\treturn set;\n\t});\n};\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/signatures.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js":{"text":"/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: relinkfilteroperator\n\nFilter operator that splits each result on the last occurance of the specified separator and returns the last bit.\n\nWhat does this have to do with relink? Nothing. I need this so I can render\nthe configuration menu. I //could// use [splitregexp[]], but then I'd be\nlimited to Tiddlywiki v5.1.20 or later.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitafter = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar index = title.lastIndexOf(operator.operand);\n\t\tif(index < 0) {\n\t\t\t$tw.utils.pushTop(results,title);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,title.substr(index+1));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n\n","title":"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js","type":"application/javascript","module-type":"relinkfilteroperator"},"$:/plugins/flibbles/relink/js/filteroperators/wouldchange.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nwouldchange: Generator.\n\nGiven each input title, it returns all the tiddlers that would be changed if the currentTiddler were to be renamed to the operand.\n\nimpossible: filters all source titles for ones that encounter errors on failure.\n\nTHESE ARE INTERNAL FILTER OPERATOR AND ARE NOT INTENDED TO BE USED BY USERS.\n\n\\*/\n\nvar language = require(\"$:/plugins/flibbles/relink/js/language.js\");\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\n\nexports.wouldchange = function(source,operator,options) {\n\tvar from = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tto = operator.operand,\n\t\tindexer = utils.getIndexer(options.wiki),\n\t\trecords = indexer.relinkLookup(from, to, options);\n\treturn Object.keys(records);\n};\n\nexports.impossible = function(source,operator,options) {\n\tvar from = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tto = operator.operand,\n\t\tresults = [],\n\t\tindexer = utils.getIndexer(options.wiki),\n\t\trecords = indexer.relinkLookup(from, to, options);\n\tsource(function(tiddler, title) {\n\t\tvar fields = records[title];\n\t\tif (fields) {\n\t\t\tfor (var field in fields) {\n\t\t\t\tif (fields[field].impossible) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/wouldchange.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/filter.js":{"text":"/*\\\nThis specifies logic for updating filters to reflect title changes.\n\\*/\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\n\nexports.name = \"filter\";\n\nexports.report = function(filter, callback, options) {\n\t// I cheat here for now. Relink handles reporting too in cases where\n\t// fromTitle is undefined. toTitle is the callback in those cases.\n\texports.relink(filter, undefined, callback, options);\n};\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(filter, fromTitle, toTitle, options) {\n\tvar relinker = new Rebuilder(filter),\n\t\tp = 0, // Current position in the filter string\n\t\tmatch, noPrecedingWordBarrier,\n\t\twordBarrierRequired=false;\n\tvar whitespaceRegExp = /\\s+/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=|\\:\\w+)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg,\n\t\tblurbs = [];\n\twhile(p < filter.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filter);\n\t\tnoPrecedingWordBarrier = false;\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t} else if (p != 0) {\n\t\t\tif (wordBarrierRequired) {\n\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\twordBarrierRequired = false;\n\t\t\t} else {\n\t\t\t\tnoPrecedingWordBarrier = true;\n\t\t\t}\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filter.length) {\n\t\t\tvar val;\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filter);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\t// It's a bad filter\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif(match[1]) { // prefix\n\t\t\t\tp += match[1].length;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\t// We check if this is a standalone title,\n\t\t\t\t// like `[[MyTitle]]`. We treat those like\n\t\t\t\t// `\"MyTitle\"` or `MyTitle`. Not like a run.\n\t\t\t\tvar standaloneTitle = /\\[\\[([^\\]]+)\\]\\]/g;\n\t\t\t\tstandaloneTitle.lastIndex = p;\n\t\t\t\tvar alone = standaloneTitle.exec(filter);\n\t\t\t\tif (!alone || alone.index != p) {\n\t\t\t\t\tif (fromTitle === undefined) {\n\t\t\t\t\t\t// toTitle is a callback method in this case.\n\t\t\t\t\t\tp =reportFilterOperation(filter, function(title, blurb){\n\t\t\t\t\t\t\tif (match[1]) {\n\t\t\t\t\t\t\t\tblurbs.push([title, match[1] + (blurb || '')]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tblurbs.push([title, blurb]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},p,options.settings,options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tp =relinkFilterOperation(relinker,fromTitle,toTitle,filter,p,options.settings,options);\n\t\t\t\t\t}\n\t\t\t\t\t// It's a legit run\n\t\t\t\t\tif (p === undefined) {\n\t\t\t\t\t\t// The filter is malformed\n\t\t\t\t\t\t// We do nothing.\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbracketTitle = alone[1];\n\t\t\t\toperandRegExp.lastIndex = standaloneTitle.lastIndex;\n\t\t\t\tval = alone[1];\n\t\t\t} else {\n\t\t\t\t// standalone Double quoted string, single\n\t\t\t\t// quoted string, or noquote ahead.\n\t\t\t\tval = match[3] || match[4] || match[5];\n\t\t\t}\n\t\t\t// From here on, we're dealing with a standalone title\n\t\t\t// expression. like `\"MyTitle\"` or `[[MyTitle]]`\n\t\t\t// We're much more flexible about relinking these.\n\t\t\tvar preference = undefined;\n\t\t\tif (match[3]) {\n\t\t\t\tpreference = '\"';\n\t\t\t} else if (match[4]) {\n\t\t\t\tpreference = \"'\";\n\t\t\t} else if (match[5]) {\n\t\t\t\tpreference = '';\n\t\t\t}\n\t\t\tif (fromTitle === undefined) {\n\t\t\t\t// Report it\n\t\t\t\tblurbs.push([val, match[1]]);\n\t\t\t} else if (val === fromTitle) {\n\t\t\t\t// Relink it\n\t\t\t\tvar entry = {name: \"title\"};\n\t\t\t\tvar newVal = wrapTitle(toTitle, preference);\n\t\t\t\tif (newVal === undefined || (options.inBraces && newVal.indexOf('}}}') >= 0)) {\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\trelinker.impossible = true;\n\t\t\t\t\t\tp = operandRegExp.lastIndex;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVal = \"[<\"+options.placeholder.getPlaceholderFor(toTitle)+\">]\";\n\t\t\t\t}\n\t\t\t\tif (newVal[0] != '[') {\n\t\t\t\t\t// not bracket enclosed\n\t\t\t\t\t// this requires whitespace\n\t\t\t\t\t// arnound it\n\t\t\t\t\tif (noPrecedingWordBarrier && !match[1]) {\n\t\t\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\t\t}\n\t\t\t\t\twordBarrierRequired = true;\n\t\t\t\t}\n\t\t\t\tentry.output = toTitle;\n\t\t\t\tentry.operator = {operator: \"title\"};\n\t\t\t\tentry.quotation = preference;\n\t\t\t\tif (entry.impossible) {\n\t\t\t\t\trelinker.impossible = true;\n\t\t\t\t}\n\t\t\t\trelinker.add(newVal,p,operandRegExp.lastIndex);\n\t\t\t}\n\t\t\tp = operandRegExp.lastIndex;\n\t\t}\n\t}\n\tif (fromTitle === undefined) {\n\t\t// We delay the blurb calls until now in case it's a malformed\n\t\t// filter string. We don't want to report some, only to find out\n\t\t// it's bad.\n\t\tfor (var i = 0; i < blurbs.length; i++) {\n\t\t\ttoTitle(blurbs[i][0], blurbs[i][1]);\n\t\t}\n\t}\n\tif (relinker.changed() || relinker.impossible) {\n\t\treturn {output: relinker.results(), impossible: relinker.impossible };\n\t}\n\treturn undefined;\n};\n\n/* Same as this.relink, except this has the added constraint that the return\n * value must be able to be wrapped in curly braces. (i.e. '{{{...}}}')\n */\nexports.relinkInBraces = function(filter, fromTitle, toTitle, options) {\n\tvar braceOptions = $tw.utils.extend({inBraces: true}, options);\n\tvar entry = this.relink(filter, fromTitle, toTitle, braceOptions);\n\tif (entry && entry.output && !canBeInBraces(entry.output)) {\n\t\t// It was possible, but it won't fit in braces, so we must give up\n\t\tdelete entry.output;\n\t\tentry.impossible = true;\n\t}\n\treturn entry;\n};\n\nfunction wrapTitle(value, preference) {\n\tvar choices = {\n\t\t\"\": function(v) {return /^[^\\s\\[\\]]*[^\\s\\[\\]\\}]$/.test(v); },\n\t\t\"[\": canBePrettyOperand,\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; }\n\t};\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"[\": function(v) {return \"[[\"+v+\"]]\"; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; }\n\t};\n\tif (choices[preference]) {\n\t\tif (choices[preference](value)) {\n\t\t\treturn wrappers[preference](value);\n\t\t}\n\t}\n\tfor (var quote in choices) {\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrappers[quote](value);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n}\n\nfunction relinkFilterOperation(relinker, fromTitle, toTitle, filterString, p, context, options) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\t// Missing [ in filter expression\n\t\treturn undefined;\n\t}\n\t// Process each operator in turn\n\toperator = parseOperator(filterString, p);\n\tdo {\n\t\tvar entry = undefined, type;\n\t\tif (operator === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tp = operator.opStart;\n\t\tswitch (operator.bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\ttype = \"indirect\";\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// We've got a live reference. relink or report\n\t\t\t\tentry = refHandler.relinkInBraces(operand, fromTitle, toTitle, options);\n\t\t\t\tif (entry && entry.output) {\n\t\t\t\t\t// We don't check the context.\n\t\t\t\t\t// All indirect operands convert.\n\t\t\t\t\trelinker.add(entry.output,p,nextBracketPos);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\ttype = \"string\";\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// Check if this is a relevant operator\n\t\t\t\tvar handler = fieldType(context, operator, options);\n\t\t\t\tif (!handler) {\n\t\t\t\t\t// This operator isn't managed. Bye.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tentry = handler.relink(operand, fromTitle, toTitle, options);\n\t\t\t\tif (!entry || !entry.output) {\n\t\t\t\t\t// The fromTitle wasn't in the operand.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvar wrapped;\n\t\t\t\tif (!canBePrettyOperand(entry.output) || (options.inBraces && entry.output.indexOf('}}}') >= 0)) {\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\tdelete entry.output;\n\t\t\t\t\t\tentry.impossible = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tvar ph = options.placeholder.getPlaceholderFor(entry.output, handler.name);\n\t\t\t\t\twrapped = \"<\"+ph+\">\";\n\t\t\t\t} else {\n\t\t\t\t\twrapped = \"[\"+entry.output+\"]\";\n\t\t\t\t}\n\t\t\t\trelinker.add(wrapped, p-1, nextBracketPos+1);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Unterminated regular expression\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\tif (entry) {\n\t\t\tif (entry.impossible) {\n\t\t\t\trelinker.impossible = true;\n\t\t\t}\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\t// Missing closing bracket in filter expression\n\t\t\treturn undefined;\n\t\t}\n\t\tp = nextBracketPos + 1;\n\t\t// Check for multiple operands\n\t\tswitch (filterString.charAt(p)) {\n\t\tcase ',':\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\toperator.bracket = filterString.charAt(p);\n\t\t\t\toperator.opStart = p + 1;\n\t\t\t\toperator.index++;\n\t\t\t} else {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcontinue;\n\t\tdefault:\n\t\t\toperator = parseOperator(filterString, p);\n\t\t\tcontinue;\n\t\tcase ']':\n\t\t}\n\t\tbreak;\n\t} while(true);\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\t// Missing ] in filter expression\n\t\treturn undefined;\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\nfunction reportFilterOperation(filterString, callback, p, context, options) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\t// Missing [ in filter expression\n\t\treturn undefined;\n\t}\n\toperator = parseOperator(filterString, p);\n\t// Process each operator in turn\n\tdo {\n\t\tif (operator === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tp = operator.opStart;\n\t\tswitch (operator.bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// Just report it\n\t\t\t\trefHandler.report(operand, function(title, blurb) {\n\t\t\t\t\tcallback(title, operatorBlurb(operator, '{' + (blurb || '') + '}'));\n\t\t\t\t}, options);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// Check if this is a relevant operator\n\t\t\t\tvar handler = fieldType(context, operator, options);\n\t\t\t\tif (!handler) {\n\t\t\t\t\t// This operator isn't managed. Bye.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// We just have to report it. Nothing more.\n\t\t\t\thandler.report(operand, function(title, blurb) {\n\t\t\t\t\tcallback(title, operatorBlurb(operator, '[' + (blurb || '') + ']'));\n\t\t\t\t}, options);\n\t\t\t\tbreak;\n\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Unterminated regular expression\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\t// Missing closing bracket in filter expression\n\t\t\treturn undefined;\n\t\t}\n\t\tp = nextBracketPos + 1;\n\t\t// Check for multiple operands\n\t\tswitch (filterString.charAt(p)) {\n\t\tcase ',':\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\toperator.bracket = filterString.charAt(p);\n\t\t\t\toperator.opStart = p + 1;\n\t\t\t\toperator.index++;\n\t\t\t} else {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcontinue;\n\t\tdefault:\n\t\t\toperator = parseOperator(filterString, p);\n\t\t\tcontinue;\n\t\tcase ']':\n\t\t}\n\t\tbreak;\n\t} while(true);\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\t// Missing ] in filter expression\n\t\treturn undefined;\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\nfunction parseOperator(filterString, p) {\n\tvar nextBracketPos, operator = {index: 1};\n\t// Check for an operator prefix\n\tif(filterString.charAt(p) === \"!\") {\n\t\toperator.prefix = \"!\";\n\t\tp++;\n\t}\n\t// Get the operator name\n\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\tif(nextBracketPos === -1) {\n\t\t// Missing [ in filter expression\n\t\treturn undefined;\n\t}\n\tnextBracketPos += p;\n\toperator.bracket = filterString.charAt(nextBracketPos);\n\toperator.operator = filterString.substring(p,nextBracketPos);\n\n\t// Any suffix?\n\tvar colon = operator.operator.indexOf(':');\n\tif(colon > -1) {\n\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t}\n\t// Empty operator means: title\n\telse if(operator.operator === \"\") {\n\t\toperator.operator = \"title\";\n\t\toperator.default = true;\n\t}\n\toperator.opStart = nextBracketPos + 1;\n\treturn operator;\n};\n\nfunction operatorBlurb(operator, enquotedOperand) {\n\tvar suffix = operator.suffix ? (':' + operator.suffix) : '';\n\t// commas to indicate which number operand\n\tsuffix += (new Array(operator.index)).join(',');\n\tvar op = operator.default ? '' : operator.operator;\n\treturn '[' + (operator.prefix || '') + op + suffix + enquotedOperand + ']';\n};\n\n// Returns the relinker needed for a given operator, or returns undefined.\nfunction fieldType(context, operator, options) {\n\tvar op = operator.operator,\n\t\tsuffix = operator.suffix,\n\t\tind = operator.index,\n\t\trtn = (suffix && context.getOperator(op + ':' + suffix, ind))\n\t\t || context.getOperator(op, ind);\n\tif (!rtn && ind == 1) {\n\t\t// maybe it's a field operator?\n\t\trtn = (op === 'field' && context.getFields()[suffix])\n\t\t || (!suffix && !options.wiki.getFilterOperators()[op] && context.getFields()[op]);\n\t}\n\treturn rtn;\n};\n\nfunction canBePrettyOperand(value) {\n\treturn value.indexOf(']') < 0;\n};\n\nfunction canBeInBraces(value) {\n\treturn value.indexOf(\"}}}\") < 0 && value.substr(value.length-2) !== '}}';\n};\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/filter.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/list.js":{"text":"/*\\\nThis manages replacing titles that occur within stringLists, like,\n\nTiddlerA [[Tiddler with spaces]] [[Another Title]]\n\\*/\n\nexports.name = \"list\";\n\nexports.report = function(value, callback, options) {\n\tvar list = $tw.utils.parseStringArray(value);\n\tfor (var i = 0; i < list.length; i++) {\n\t\tcallback(list[i]);\n\t}\n};\n\n/**Returns undefined if no change was made.\n * Parameter: value can literally be a list. This can happen for builtin\n * types 'list' and 'tag'. In those cases, we also return list.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar isModified = false,\n\t\tactualList = false,\n\t\tlist;\n\tif (typeof value !== \"string\") {\n\t\t// Not a string. Must be a list.\n\t\t// clone it, since we may make changes to this possibly\n\t\t// frozen list.\n\t\tlist = (value || []).slice(0);\n\t\tactualList = true;\n\t} else {\n\t\tlist = $tw.utils.parseStringArray(value || \"\");\n\t}\n\t$tw.utils.each(list,function (title,index) {\n\t\tif(title === fromTitle) {\n\t\t\tlist[index] = toTitle;\n\t\t\tisModified = true;\n\t\t}\n\t});\n\tif (isModified) {\n\t\tvar entry = {name: \"list\"};\n\t\t// It doesn't parse correctly alone, it won't\n\t\t// parse correctly in any list.\n\t\tif (!canBeListItem(toTitle)) {\n\t\t\tentry.impossible = true;\n\t\t} else if (actualList) {\n\t\t\tentry.output = list;\n\t\t} else {\n\t\t\tentry.output = $tw.utils.stringifyList(list);\n\t\t}\n\t\treturn entry;\n\t}\n\treturn undefined;\n};\n\nfunction canBeListItem(value) {\n\tvar regexp = /\\]\\][^\\S\\xA0]/m;\n\treturn !regexp.test(value);\n};\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/list.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/reference.js":{"text":"/*\\\nThis manages replacing titles that occur inside text references,\n\ntiddlerTitle\ntiddlerTitle!!field\n!!field\ntiddlerTitle##propertyIndex\n\\*/\n\nexports.name = \"reference\";\n\nexports.report = function(value, callback, options) {\n\tif (value) {\n\t\tvar reference = $tw.utils.parseTextReference(value),\n\t\t\ttitle = reference.title,\n\t\t\tblurb;\n\t\tif (title) {\n\t\t\tif (reference.field) {\n\t\t\t\tblurb = '!!' + reference.field;\n\t\t\t} else if (reference.index) {\n\t\t\t\tblurb = '##' + reference.index;\n\t\t\t}\n\t\t\tcallback(title, blurb);\n\t\t}\n\t}\n};\n\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar entry;\n\tif (value) {\n\t\tvar reference = $tw.utils.parseTextReference(value);\n\t\tif (reference.title === fromTitle) {\n\t\t\tif (!exports.canBePretty(toTitle)) {\n\t\t\t\tentry = {impossible: true};\n\t\t\t} else {\n\t\t\t\treference.title = toTitle;\n\t\t\t\tentry = {output: exports.toString(reference)};\n\t\t\t}\n\t\t}\n\t}\n\treturn entry;\n};\n\n/* Same as this.relink, except this has the added constraint that the return\n * value must be able to be wrapped in curly braces.\n */\nexports.relinkInBraces = function(value, fromTitle, toTitle, options) {\n\tvar log = this.relink(value, fromTitle, toTitle, options);\n\tif (log && log.output && toTitle.indexOf(\"}\") >= 0) {\n\t\tdelete log.output;\n\t\tlog.impossible = true;\n\t}\n\treturn log;\n};\n\nexports.toString = function(textReference) {\n\tvar title = textReference.title || '';\n\tif (textReference.field) {\n\t\treturn title + \"!!\" + textReference.field;\n\t} else if (textReference.index) {\n\t\treturn title + \"##\" + textReference.index;\n\t}\n\treturn title;\n};\n\nexports.canBePretty = function(title) {\n\treturn !title || (title.indexOf(\"!!\") < 0 && title.indexOf(\"##\") < 0);\n};\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/reference.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/title.js":{"text":"/*\\\nThis specifies logic for replacing a single-tiddler field. This is the\nsimplest kind of field type. One title swaps out for the other.\n\\*/\n\n// NOTE TO MODDERS: If you're making your own field types, the name must be\n// alpha characters only.\nexports.name = 'title';\n\nexports.report = function(value, callback, options) {\n\tcallback(value);\n};\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tif (value === fromTitle) {\n\t\treturn {output: toTitle};\n\t}\n\treturn undefined;\n};\n\n// This is legacy support for when 'title' was known as 'field'\nexports.aliases = ['field', 'yes'];\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/title.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js":{"text":"/*\\\nThis specifies logic for updating filters to reflect title changes.\n\\*/\n\nexports.name = \"wikitext\";\n\nvar type = 'text/vnd.tiddlywiki';\n\nvar WikiParser = require(\"$:/core/modules/parsers/wikiparser/wikiparser.js\")[type];\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\");\nvar utils = require('$:/plugins/flibbles/relink/js/utils');\nvar WikitextContext = utils.getContext('wikitext');\n\nfunction collectRules() {\n\tvar rules = Object.create(null);\n\t$tw.modules.forEachModuleOfType(\"relinkwikitextrule\", function(title, exports) {\n\t\tvar names = exports.name;\n\t\tif (typeof names === \"string\") {\n\t\t\tnames = [names];\n\t\t}\n\t\tif (names !== undefined) {\n\t\t\tfor (var i = 0; i < names.length; i++) {\n\t\t\t\trules[names[i]] = exports;\n\t\t\t}\n\t\t}\n\t});\n\treturn rules;\n}\n\nfunction WikiWalker(type, text, options) {\n\tthis.options = options;\n\tif (!this.relinkMethodsInjected) {\n\t\tvar rules = collectRules();\n\t\t$tw.utils.each([this.pragmaRuleClasses, this.blockRuleClasses, this.inlineRuleClasses], function(classList) {\n\t\t\tfor (var name in classList) {\n\t\t\t\tif (rules[name]) {\n\t\t\t\t\tdelete rules[name].name;\n\t\t\t\t\t$tw.utils.extend(classList[name].prototype, rules[name]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tWikiWalker.prototype.relinkMethodsInjected = true;\n\t}\n\tthis.context = new WikitextContext(options.settings);\n\tWikiParser.call(this, type, text, options);\n};\n\nWikiWalker.prototype = Object.create(WikiParser.prototype);\n\nWikiWalker.prototype.parsePragmas = function() {\n\tvar entries = this.tree;\n\twhile (true) {\n\t\tthis.skipWhitespace();\n\t\tif (this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules, this.pos);\n\t\tif (!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\tentries.push.apply(entries, this.handleRule(nextMatch));\n\t}\n\treturn entries;\n};\n\nWikiWalker.prototype.parseInlineRunUnterminated = function(options) {\n\tvar entries = [];\n\tvar nextMatch = this.findNextMatch(this.inlineRules, this.pos);\n\twhile (this.pos < this.sourceLength && nextMatch) {\n\t\tif (nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\tentries.push.apply(entries, this.handleRule(nextMatch));\n\t\tnextMatch = this.findNextMatch(this.inlineRules, this.pos);\n\t}\n\tthis.pos = this.sourceLength;\n\treturn entries;\n};\n\nWikiWalker.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\tvar entries = [];\n\toptions = options || {};\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\tif (terminatorMatch) {\n\t\t\tif (!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif (options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn entries;\n\t\t\t}\n\t\t}\n\t\tif (inlineRuleMatch) {\n\t\t\tif (inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\tentries.push.apply(entries, this.handleRule(inlineRuleMatch));\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules, this.pos);\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\tthis.pos = this.sourceLength;\n\treturn entries;\n\n};\n\nWikiWalker.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif (this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\tvar nextMatch = this.findNextMatch(this.blockRules, this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn this.handleRule(nextMatch);\n\t}\n\treturn this.parseInlineRun(terminatorRegExp);\n};\n\nWikiWalker.prototype.amendRules = function(type, names) {\n\tvar only;\n\tWikiParser.prototype.amendRules.call(this, type, names);\n\tif (type === \"only\") {\n\t\tonly = true;\n\t} else if (type === \"except\") {\n\t\tonly = false;\n\t} else {\n\t\treturn;\n\t}\n\tif (only !== (names.indexOf(\"macrodef\") >= 0) && this.options.macrodefCanBeDisabled) {\n\t\tthis.options.placeholder = undefined\n\t}\n\tif (only !== (names.indexOf(\"html\") >= 0)) {\n\t\tthis.context.allowWidgets = disabled;\n\t}\n\tif (only !== (names.indexOf(\"prettylink\") >= 0)) {\n\t\tthis.context.allowPrettylinks = disabled;\n\t}\n};\n\nfunction disabled() { return false; };\n\n/// Reporter\n\nfunction WikiReporter(type, text, callback, options) {\n\tthis.callback = callback;\n\tWikiWalker.call(this, type, text, options);\n};\n\nWikiReporter.prototype = Object.create(WikiWalker.prototype);\n\nWikiReporter.prototype.handleRule = function(ruleInfo) {\n\tif (ruleInfo.rule.report) {\n\t\truleInfo.rule.report(this.source, this.callback, this.options);\n\t} else {\n\t\tif (ruleInfo.rule.matchRegExp !== undefined) {\n\t\t\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\n\t\t} else {\n\t\t\t// We can't easily determine the end of this\n\t\t\t// rule match. We'll \"parse\" it so that\n\t\t\t// parser.pos gets updated, but we throw away\n\t\t\t// the results.\n\t\t\truleInfo.rule.parse();\n\t\t}\n\t}\n};\n\nexports.report = function(wikitext, callback, options) {\n\t// Unfortunately it's the side-effect of creating this that reports.\n\tnew WikiReporter(options.type, wikitext, callback, options);\n};\n\n/// Relinker\n\nfunction WikiRelinker(type, text, fromTitle, toTitle, options) {\n\tthis.fromTitle = fromTitle;\n\tthis.toTitle = toTitle;\n\tthis.placeholder = options.placeholder;\n\tif (this.placeholder) {\n\t\tthis.placeholder.parser = this;\n\t}\n\tWikiWalker.call(this, type, text, options);\n};\n\nWikiRelinker.prototype = Object.create(WikiWalker.prototype);\n\nWikiRelinker.prototype.handleRule = function(ruleInfo) {\n\tif (ruleInfo.rule.relink) {\n\t\tvar start = ruleInfo.matchIndex;\n\t\tvar newEntry = ruleInfo.rule.relink(this.source, this.fromTitle, this.toTitle, this.options);\n\t\tif (newEntry !== undefined) {\n\t\t\tif (newEntry.output) {\n\t\t\t\tnewEntry.start = start;\n\t\t\t\tnewEntry.end = this.pos;\n\t\t\t}\n\t\t\treturn [newEntry];\n\t\t}\n\t} else {\n\t\tif (ruleInfo.rule.matchRegExp !== undefined) {\n\t\t\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\n\t\t} else {\n\t\t\t// We can't easily determine the end of this\n\t\t\t// rule match. We'll \"parse\" it so that\n\t\t\t// parser.pos gets updated, but we throw away\n\t\t\t// the results.\n\t\t\truleInfo.rule.parse();\n\t\t}\n\t}\n\treturn [];\n};\n\nexports.relink = function(wikitext, fromTitle, toTitle, options) {\n\tvar parser = new WikiRelinker(options.type, wikitext, fromTitle, toTitle, options),\n\t\twikiEntry = undefined;\n\t// Now that we have an array of entries, let's produce the wikiText entry\n\t// containing them all.\n\tif (parser.tree.length > 0) {\n\t\tvar builder = new Rebuilder(wikitext);\n\t\twikiEntry = {};\n\t\tfor (var i = 0; i < parser.tree.length; i++) {\n\t\t\tvar entry = parser.tree[i];\n\t\t\tif (entry.impossible) {\n\t\t\t\twikiEntry.impossible = true;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\tbuilder.add(entry.output, entry.start, entry.end);\n\t\t\t}\n\t\t}\n\t\twikiEntry.output = builder.results();\n\t}\n\treturn wikiEntry;\n};\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/fields.js":{"text":"/*\\\n\nHandles all fields specified in the plugin configuration. Currently, this\nonly supports single-value fields.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = 'fields';\n\nexports.report = function(tiddler, callback, options) {\n\tvar fields = options.settings.getFields();\n\t$tw.utils.each(fields, function(handler, field) {\n\t\tvar input = tiddler.fields[field];\n\t\tif (input) {\n\t\t\tif (field === 'list' && tiddler.fields['plugin-type']) {\n\t\t\t\t// We have a built-in exception here. plugins use their list\n\t\t\t\t// field differently. There's a whole mechanism for what\n\t\t\t\t// they actually point to, but let's not bother with that now\n\t\t\t\treturn;\n\t\t\t}\n\t\t\thandler.report(input, function(title, blurb) {\n\t\t\t\tif (blurb) {\n\t\t\t\t\tcallback(title, field + ': ' + blurb);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(title, field);\n\t\t\t\t}\n\t\t\t}, options);\n\t\t}\n\t});\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = options.settings.getFields();\n\t$tw.utils.each(fields, function(handler, field) {\n\t\tvar input = tiddler.fields[field];\n\t\tif (input) {\n\t\t\tif (field === 'list' && tiddler.fields['plugin-type']) {\n\t\t\t\t// Same deal as above. Skip.\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar entry = handler.relink(input, fromTitle, toTitle, options);\n\t\t\tif (entry !== undefined) {\n\t\t\t\tchanges[field] = entry;\n\t\t\t}\n\t\t}\n\t});\n};\n","module-type":"relinkoperator","title":"$:/plugins/flibbles/relink/js/relinkoperations/fields.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text.js":{"text":"/*\\\n\nDepending on the tiddler type, this will apply textOperators which may\nrelink titles within the body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar defaultOperator = \"text/vnd.tiddlywiki\";\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nexports.name = 'text';\n\nvar textOperators = utils.getModulesByTypeAsHashmap('relinktext', 'type');\n\n// These are deprecated. Don't use them.\nvar oldTextOperators = utils.getModulesByTypeAsHashmap('relinktextoperator', 'type');\n\n// $:/DefaultTiddlers is a tiddler which has type \"text/vnd.tiddlywiki\",\n// but it lies. It doesn't contain wikitext. It contains a filter, so\n// we pretend it has a filter type.\n// If you want to be able to add more exceptions for your plugin, let me know.\nvar exceptions = {\n\t\"$:/DefaultTiddlers\": \"text/x-tiddler-filter\"\n};\n\nexports.report = function(tiddler, callback, options) {\n\tvar fields = tiddler.fields;\n\tif (fields.text) {\n\t\tvar type = exceptions[fields.title] || fields.type || defaultOperator;\n\t\tif (textOperators[type]) {\n\t\t\ttextOperators[type].report(tiddler.fields.text, callback, options);\n\t\t} else if (oldTextOperators[type]) {\n\t\t\t// For the deprecated text operators\n\t\t\toldTextOperators[type].report(tiddler, callback, options);\n\t\t}\n\t}\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = tiddler.fields;\n\tif (fields.text) {\n\t\tvar type = exceptions[fields.title] || fields.type || defaultOperator,\n\t\t\tentry;\n\t\tif (textOperators[type]) {\n\t\t\tentry = textOperators[type].relink(tiddler.fields.text, fromTitle, toTitle, options);\n\t\t} else if (oldTextOperators[type]) {\n\t\t\t// For the deprecated text operators\n\t\t\tentry = oldTextOperators[type].relink(tiddler, fromTitle, toTitle, options);\n\t\t}\n\t\tif (entry) {\n\t\t\tchanges.text = entry;\n\t\t}\n\t}\n};\n","module-type":"relinkoperator","title":"$:/plugins/flibbles/relink/js/relinkoperations/text.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js":{"text":"/*\\\n\nThis relinks tiddlers which contain filters in their body, as oppose to\nwikitext.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('filter');\n\nexports.type = 'text/x-tiddler-filter';\n\nexports.report = filterHandler.report;\nexports.relink = filterHandler.relink;\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/listtext.js":{"text":"/*\\\n\nThis relinks tiddlers which contain a tiddler list as their body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar listHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('list');\n\nexports.type = 'text/x-tiddler-list';\n\nexports.report = listHandler.report;\nexports.relink = listHandler.relink;\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/listtext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/referencetext.js":{"text":"/*\\\n\nThis relinks tiddlers which contain a tiddler reference as their body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('reference');\n\nexports.type = 'text/x-tiddler-reference';\n\nexports.report = refHandler.report;\nexports.relink = refHandler.relink;\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/referencetext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/titletext.js":{"text":"/*\\\n\nThis relinks tiddlers which contain a single title as their body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar titleHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('title');\n\nexports.type = 'text/x-tiddler-title';\n\nexports.report = titleHandler.report;\nexports.relink = titleHandler.relink;\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/titletext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js":{"text":"/*\\\n\nChecks for fromTitle in text. If found, sees if it's relevant,\nand tries to swap it out if it is.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Placeholder = require(\"$:/plugins/flibbles/relink/js/utils/placeholder.js\");\nvar wikitextHandler = require('$:/plugins/flibbles/relink/js/utils.js').getType('wikitext');\n\nexports.type = 'text/vnd.tiddlywiki';\n\nexports.report = wikitextHandler.report;\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar placeholder = new Placeholder();\n\tvar currentOptions = Object.create(options);\n\tcurrentOptions.placeholder = placeholder;\n\tvar entry = wikitextHandler.relink(text, fromTitle, toTitle, currentOptions);\n\tif (entry && entry.output) {\n\t\t// If there's output, we've also got to prepend any macros\n\t\t// that the placeholder defined.\n\t\tvar preamble = placeholder.getPreamble();\n\t\tentry.output = preamble + entry.output;\n\t}\n\treturn entry;\n};\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles code blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"`` [[Renamed Title]] ``\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"codeinline\", \"codeblock\"];\n\nexports.relink = function(text) {\n\tvar reEnd;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// I'm lazy. This relink method works for both codeblock and codeinline\n\tif (this.match[0].length > 2) {\n\t\t// Must be a codeblock\n\t\treEnd = /\\r?\\n```$/mg;\n\t} else {\n\t\t// Must be a codeinline\n\t\treEnd = new RegExp(this.match[1], \"mg\");\n\t}\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(text);\n\tif (match) {\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn undefined;\n};\n\n// Same thing. Just skip the pos ahead.\nexports.report = exports.relink;\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles comment blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"commentinline\", \"commentblock\"];\n\nexports.relink = function(text) {\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\treturn undefined;\n};\n\nexports.report = exports.relink;\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of filtered transclusions in wiki text like,\n\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n\nThis renames both the list and the template field.\n\n\\*/\n\nexports.name = ['filteredtranscludeinline', 'filteredtranscludeblock'];\n\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('filter');\nvar utils = require(\"./utils.js\");\n\nexports.report = function(text, callback, options) {\n\tvar m = this.match,\n\t\tfilter = m[1],\n\t\ttemplate = $tw.utils.trim(m[3]),\n\t\tappend = template ? '||' + template + '}}}' : '}}}';\n\tfilterHandler.report(filter, function(title, blurb) {\n\t\tcallback(title, '{{{' + blurb + append);\n\t}, options);\n\tif (template) {\n\t\tcallback(template, '{{{' + $tw.utils.trim(filter).replace(/\\r?\\n/mg, ' ') + '||}}}');\n\t}\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar m = this.match,\n\t\tfilter = m[1],\n\t\ttooltip = m[2],\n\t\ttemplate = m[3],\n\t\tstyle = m[4],\n\t\tclasses = m[5],\n\t\tparser = this.parser,\n\t\tentry = {};\n\tparser.pos = this.matchRegExp.lastIndex;\n\tvar modified = false;\n\n\tvar filterEntry = filterHandler.relink(filter, fromTitle, toTitle, options);\n\tif (filterEntry !== undefined) {\n\t\tif (filterEntry.output) {\n\t\t\tfilter = filterEntry.output;\n\t\t\tmodified = true;\n\t\t}\n\t\tif (filterEntry.impossible) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\t// preserves user-inputted whitespace\n\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tif (!modified) {\n\t\tif (!entry.impossible) {\n\t\t\treturn undefined;\n\t\t}\n\t} else {\n\t\tvar output = this.makeFilteredtransclude(this.parser, filter, tooltip, template, style, classes);\n\t\tif (output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t} else {\n\t\t\t// By copying over the ending newline of the original\n\t\t\t// text if present, thisrelink method thus works for\n\t\t\t// both the inline and block rule\n\t\t\tentry.output = output + utils.getEndingNewline(m[0]);\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeFilteredtransclude = function(parser, filter, tooltip, template, style, classes) {\n\tif (canBePretty(filter) && canBePrettyTemplate(template)) {\n\t\treturn prettyList(filter, tooltip, template, style, classes);\n\t}\n\tif (classes !== undefined) {\n\t\tclasses = classes.split('.').join(' ');\n\t}\n\treturn utils.makeWidget(parser, '$list', {\n\t\tfilter: filter,\n\t\ttooltip: tooltip,\n\t\ttemplate: template,\n\t\tstyle: style || undefined,\n\t\titemClass: classes});\n};\n\nfunction prettyList(filter, tooltip, template, style, classes) {\n\tif (tooltip === undefined) {\n\t\ttooltip = '';\n\t} else {\n\t\ttooltip = \"|\" + tooltip;\n\t}\n\tif (template === undefined) {\n\t\ttemplate = '';\n\t} else {\n\t\ttemplate = \"||\" + template;\n\t}\n\tif (classes === undefined) {\n\t\tclasses = '';\n\t} else {\n\t\tclasses = \".\" + classes;\n\t}\n\tstyle = style || '';\n\treturn \"{{{\"+filter+tooltip+template+\"}}\"+style+\"}\"+classes;\n};\n\nfunction canBePretty(filter) {\n\treturn filter.indexOf('|') < 0 && filter.indexOf('}}') < 0;\n};\n\nfunction canBePrettyTemplate(template) {\n\treturn !template || (\n\t\ttemplate.indexOf('|') < 0\n\t\t&& template.indexOf('{') < 0\n\t\t&& template.indexOf('}') < 0);\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in attributes of widgets and html elements\nThis is configurable to select exactly which attributes of which elements\nshould be changed.\n\n<$link to=\"TiddlerTitle\" />\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar refHandler = relinkUtils.getType('reference');\nvar filterHandler = relinkUtils.getType('filter');\nvar ImportContext = relinkUtils.getContext('import');\nvar macrocall = require(\"./macrocall.js\");\n\nexports.name = \"html\";\n\nexports.report = function(text, callback, options) {\n\tvar managedElement = this.parser.context.getAttribute(this.nextTag.tag);\n\tvar importFilterAttr;\n\tvar element = this.nextTag.tag;\n\tfor (var attributeName in this.nextTag.attributes) {\n\t\tvar attr = this.nextTag.attributes[attributeName];\n\t\tvar nextEql = text.indexOf('=', attr.start);\n\t\t// This is the rare case of changing tiddler\n\t\t// \"true\" to something else when \"true\" is\n\t\t// implicit, like <$link to /> We ignore those.\n\t\tif (nextEql < 0 || nextEql > attr.end) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\timportFilterAttr = attr;\n\t\t}\n\t\tvar oldLength, quotedValue = undefined, entry;\n\t\tif (attr.type === \"string\") {\n\t\t\tvar handler = getAttributeHandler(this.parser.context, this.nextTag, attributeName, options);\n\t\t\tif (!handler) {\n\t\t\t\t// We don't manage this attribute. Bye.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thandler.report(attr.value, function(title, blurb) {\n\t\t\t\tif (blurb) {\n\t\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + '=\"' + blurb + '\" />');\n\t\t\t\t} else {\n\t\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + ' />');\n\t\t\t\t}\n\t\t\t}, options);\n\t\t} else if (attr.type === \"indirect\") {\n\t\t\tentry = refHandler.report(attr.textReference, function(title, blurb) {\n\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + '={{' + (blurb || '') + '}} />');\n\t\t\t}, options);\n\t\t} else if (attr.type === \"filtered\") {\n\t\t\tentry = filterHandler.report(attr.filter, function(title, blurb) {\n\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + '={{{' + blurb + '}}} />');\n\t\t\t}, options);\n\t\t} else if (attr.type === \"macro\") {\n\t\t\tvar macro = attr.value;\n\t\t\tentry = macrocall.reportAttribute(this.parser, macro, function(title, blurb) {\n\t\t\t\tcallback(title, '<' + element + ' ' + attributeName + '=' + blurb + ' />');\n\t\t\t}, options);\n\t\t}\n\t\tif (quotedValue === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\t// If this is an import variable filter, we gotta\n\t\t\t// remember this new value when we import lower down.\n\t\t\timportFilterAttr = quotedValue;\n\t\t}\n\t}\n\tif (importFilterAttr) {\n\t\tprocessImportFilter(this.parser, importFilterAttr, options);\n\t}\n\tthis.parse();\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar managedElement = this.parser.context.getAttribute(this.nextTag.tag),\n\t\tbuilder = new Rebuilder(text, this.nextTag.start);\n\tvar importFilterAttr;\n\tvar widgetEntry = {};\n\twidgetEntry.attributes = Object.create(null);\n\twidgetEntry.element = this.nextTag.tag;\n\tfor (var attributeName in this.nextTag.attributes) {\n\t\tvar attr = this.nextTag.attributes[attributeName];\n\t\tvar nextEql = text.indexOf('=', attr.start);\n\t\t// This is the rare case of changing tiddler\n\t\t// \"true\" to something else when \"true\" is\n\t\t// implicit, like <$link to /> We ignore those.\n\t\tif (nextEql < 0 || nextEql > attr.end) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\timportFilterAttr = attr;\n\t\t}\n\t\tvar oldLength, quotedValue = undefined, entry;\n\t\tvar nestedOptions = Object.create(options);\n\t\tnestedOptions.settings = this.parser.context;\n\t\tswitch (attr.type) {\n\t\tcase 'string':\n\t\t\tvar handler = getAttributeHandler(this.parser.context, this.nextTag, attributeName, options);\n\t\t\tif (!handler) {\n\t\t\t\t// We don't manage this attribute. Bye.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tentry = handler.relink(attr.value, fromTitle, toTitle, nestedOptions);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\tvar quote = utils.determineQuote(text, attr);\n\t\t\t\toldLength = attr.value.length + (quote.length * 2);\n\t\t\t\tquotedValue = utils.wrapAttributeValue(entry.output,quote);\n\t\t\t\tif (quotedValue === undefined) {\n\t\t\t\t\t// The value was unquotable. We need to make\n\t\t\t\t\t// a macro in order to replace it.\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\t// but we can't...\n\t\t\t\t\t\tentry.impossible = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar value = options.placeholder.getPlaceholderFor(entry.output,handler.name)\n\t\t\t\t\t\tquotedValue = \"<<\"+value+\">>\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'indirect':\n\t\t\tentry = refHandler.relinkInBraces(attr.textReference, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\t// +4 for '{{' and '}}'\n\t\t\t\toldLength = attr.textReference.length + 4;\n\t\t\t\tquotedValue = \"{{\"+entry.output+\"}}\";\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'filtered':\n\t\t\tentry = filterHandler.relinkInBraces(attr.filter, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\t// +6 for '{{{' and '}}}'\n\t\t\t\toldLength = attr.filter.length + 6;\n\t\t\t\tquotedValue = \"{{{\"+ entry.output +\"}}}\";\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'macro':\n\t\t\tvar macro = attr.value;\n\t\t\tentry = macrocall.relinkAttribute(this.parser, macro, text, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\t// already includes '<<' and '>>'\n\t\t\t\toldLength = macro.end-macro.start;\n\t\t\t\tquotedValue = entry.output;\n\t\t\t}\n\t\t}\n\t\tif (entry.impossible) {\n\t\t\twidgetEntry.impossible = true;\n\t\t}\n\t\tif (quotedValue === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\t// If this is an import variable filter, we gotta\n\t\t\t// remember this new value when we import lower down.\n\t\t\timportFilterAttr = quotedValue;\n\t\t}\n\t\t// We count backwards from the end to preserve whitespace\n\t\tvar valueStart = attr.end - oldLength;\n\t\tbuilder.add(quotedValue, valueStart, attr.end);\n\t}\n\tif (importFilterAttr) {\n\t\tprocessImportFilter(this.parser, importFilterAttr, options);\n\t}\n\tvar tag = this.parse()[0];\n\tif (tag.children) {\n\t\tfor (var i = 0; i < tag.children.length; i++) {\n\t\t\tvar child = tag.children[i];\n\t\t\tif (child.output) {\n\t\t\t\tbuilder.add(child.output, child.start, child.end);\n\t\t\t}\n\t\t\tif (child.impossible) {\n\t\t\t\twidgetEntry.impossible = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (builder.changed() || widgetEntry.impossible) {\n\t\twidgetEntry.output = builder.results(this.parser.pos);\n\t\treturn widgetEntry;\n\t}\n\treturn undefined;\n};\n\n/** Returns the field handler for the given attribute of the given widget.\n * If this returns undefined, it means we don't handle it. So skip.\n */\nfunction getAttributeHandler(context, widget, attributeName, options) {\n\tif (widget.tag === \"$macrocall\") {\n\t\tvar nameAttr = widget.attributes[\"$name\"];\n\t\tif (nameAttr) {\n\t\t\tvar macro = context.getMacro(nameAttr.value);\n\t\t\tif (macro) {\n\t\t\t\treturn macro[attributeName];\n\t\t\t}\n\t\t}\n\t} else {\n\t\tvar element = context.getAttribute(widget.tag);\n\t\tif (element) {\n\t\t\treturn element[attributeName];\n\t\t}\n\t}\n\treturn undefined;\n};\n\nfunction computeAttribute(context, attribute, options) {\n\tvar value;\n\tif(attribute.type === \"filtered\") {\n\t\tvar parentWidget = context.widget;\n\t\tvalue = options.wiki.filterTiddlers(attribute.filter,parentWidget)[0] || \"\";\n\t} else if(attribute.type === \"indirect\") {\n\t\tvar parentWidget = context.widget;\n\t\tvalue = options.wiki.getTextReference(attribute.textReference,\"\",parentWidget.variables.currentTiddler.value);\n\t} else if(attribute.type === \"macro\") {\n\t\tvar parentWidget = context.widget;\n\t\tvalue = parentWidget.getVariable(attribute.value.name,{params: attribute.value.params});\n\t} else { // String attribute\n\t\tvalue = attribute.value;\n\t}\n\treturn value;\n};\n\n// This processes a <$importvariables> filter attribute and adds any new\n// variables to our parser.\nfunction processImportFilter(parser, importAttribute, options) {\n\tif (typeof importAttribute === \"string\") {\n\t\t// It was changed. Reparse it. It'll be a quoted\n\t\t// attribute value. Add a dummy attribute name.\n\t\timportAttribute = $tw.utils.parseAttribute(\"p=\"+importAttribute, 0)\n\t}\n\tvar context = parser.context;\n\tvar importFilter = computeAttribute(context, importAttribute, options);\n\tparser.context = new ImportContext(options.wiki, context, importFilter);\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[img[tiddler.jpg]]\n\n[img width=23 height=24 [Description|tiddler.jpg]]\n\n\\*/\n\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('filter');\nvar macrocall = require(\"./macrocall.js\");\nvar utils = require(\"./utils.js\");\n\nexports.name = \"image\";\n\nexports.report = function(text, callback, options) {\n\tvar ptr = this.nextImage.start + 4; //[img\n\tvar inSource = false;\n\tfor (var attributeName in this.nextImage.attributes) {\n\t\tvar attr = this.nextImage.attributes[attributeName];\n\t\tif (attributeName === \"source\" || attributeName === \"tooltip\") {\n\t\t\tif (inSource) {\n\t\t\t\tptr = text.indexOf('|', ptr);\n\t\t\t} else {\n\t\t\t\tptr = text.indexOf('[', ptr);\n\t\t\t\tinSource = true;\n\t\t\t}\n\t\t\tptr += 1;\n\t\t}\n\t\tif (attributeName === \"source\") {\n\t\t\tvar tooltip = this.nextImage.attributes.tooltip;\n\t\t\tvar blurb = '[img[' + (tooltip ? tooltip.value : '') + ']]';\n\t\t\tcallback(attr.value, blurb);\n\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\tptr = text.indexOf(']]', ptr) + 2;\n\t\t} else if (attributeName !== \"tooltip\") {\n\t\t\tptr = reportAttribute(this.parser, attr, callback, options);\n\t\t}\n\t}\n\tthis.parser.pos = ptr;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar ptr = this.nextImage.start,\n\t\tbuilder = new Rebuilder(text, ptr),\n\t\tmakeWidget = false,\n\t\tskipSource = false,\n\t\timageEntry;\n\tif (this.nextImage.attributes.source.value === fromTitle && !canBePretty(toTitle, this.nextImage.attributes.tooltip)) {\n\t\tif (this.parser.context.allowWidgets() && (utils.wrapAttributeValue(toTitle) || options.placeholder)) {\n\t\t\tmakeWidget = true;\n\t\t\tbuilder.add(\"<$image\", ptr, ptr+4);\n\t\t} else {\n\t\t\t// We won't be able to make a placeholder to replace\n\t\t\t// the source attribute. We check now so we don't\n\t\t\t// prematurely convert into a widget.\n\t\t\t// Keep going in case other attributes need replacing.\n\t\t\tskipSource = true;\n\t\t}\n\t}\n\tptr += 4; //[img\n\tvar inSource = false;\n\tfor (var attributeName in this.nextImage.attributes) {\n\t\tvar attr = this.nextImage.attributes[attributeName];\n\t\tif (attributeName === \"source\" || attributeName === \"tooltip\") {\n\t\t\tif (inSource) {\n\t\t\t\tptr = text.indexOf('|', ptr);\n\t\t\t} else {\n\t\t\t\tptr = text.indexOf('[', ptr);\n\t\t\t\tinSource = true;\n\t\t\t}\n\t\t\tif (makeWidget) {\n\t\t\t\tif (\" \\t\\n\".indexOf(text[ptr-1]) >= 0) {\n\t\t\t\t\tbuilder.add('', ptr, ptr+1);\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.add(' ', ptr, ptr+1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tptr += 1;\n\t\t}\n\t\tif (attributeName === \"source\") {\n\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\tif (attr.value === fromTitle) {\n\t\t\t\tif (makeWidget) {\n\t\t\t\t\tvar quotedValue = utils.wrapAttributeValue(toTitle);\n\t\t\t\t\tif (quotedValue === undefined) {\n\t\t\t\t\t\tvar key = options.placeholder.getPlaceholderFor(toTitle);\n\t\t\t\t\t\tbuilder.add(\"source=<<\"+key+\">>\", ptr, ptr+fromTitle.length);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuilder.add(\"source=\"+quotedValue, ptr, ptr+fromTitle.length);\n\t\t\t\t\t}\n\t\t\t\t} else if (!skipSource) {\n\t\t\t\t\tbuilder.add(toTitle, ptr, ptr+fromTitle.length);\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.impossible = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tptr = text.indexOf(']]', ptr);\n\t\t\tif (makeWidget) {\n\t\t\t\tbuilder.add(\"/>\", ptr, ptr+2);\n\t\t\t}\n\t\t\tptr += 2;\n\t\t} else if (attributeName === \"tooltip\") {\n\t\t\tif (makeWidget) {\n\t\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\t\tvar quotedValue = utils.wrapAttributeValue(attr.value);\n\t\t\t\tbuilder.add(\"tooltip=\"+quotedValue, ptr, ptr+attr.value.length);\n\t\t\t}\n\t\t} else {\n\t\t\tptr = relinkAttribute(this.parser, attr, builder, fromTitle, toTitle, options);\n\t\t}\n\t}\n\tthis.parser.pos = ptr;\n\tif (builder.changed() || builder.impossible) {\n\t\timageEntry = {\n\t\t\toutput: builder.results(ptr),\n\t\t\timpossible: builder.impossible };\n\t}\n\treturn imageEntry;\n};\n\nfunction reportAttribute(parser, attribute, callback, options) {\n\tvar text = parser.source;\n\tvar ptr = text.indexOf(attribute.name, attribute.start);\n\tvar end;\n\tptr += attribute.name.length;\n\tptr = text.indexOf('=', ptr);\n\tif (attribute.type === \"string\") {\n\t\tptr = text.indexOf(attribute.value, ptr)\n\t\tvar quote = utils.determineQuote(text, attribute);\n\t\t// ignore first quote. We already passed it\n\t\tend = ptr + quote.length + attribute.value.length;\n\t} else if (attribute.type === \"indirect\") {\n\t\tptr = text.indexOf('{{', ptr);\n\t\tvar end = ptr + attribute.textReference.length + 4;\n\t\trefHandler.report(attribute.textReference, function(title, blurb) {\n\t\t\tcallback(title, '[img ' + attribute.name + '={{' + (blurb || '') + '}}]');\n\t\t}, options);\n\t} else if (attribute.type === \"filtered\") {\n\t\tptr = text.indexOf('{{{', ptr);\n\t\tvar end = ptr + attribute.filter.length + 6;\n\t\tfilterHandler.report(attribute.filter, function(title, blurb) {\n\t\t\tcallback(title, '[img ' + attribute.name + '={{{' + blurb + '}}}]');\n\t\t}, options);\n\t} else if (attribute.type === \"macro\") {\n\t\tptr = text.indexOf(\"<<\", ptr);\n\t\tvar end = attribute.value.end;\n\t\tvar macro = attribute.value;\n\t\toldValue = attribute.value;\n\t\tmacrocall.reportAttribute(parser, macro, function(title, blurb) {\n\t\t\tcallback(title, '[img ' + attribute.name + '=' + blurb + ']');\n\t\t}, options);\n\t}\n\treturn end;\n};\n\nfunction relinkAttribute(parser, attribute, builder, fromTitle, toTitle, options) {\n\tvar text = builder.text;\n\tvar ptr = text.indexOf(attribute.name, attribute.start);\n\tvar end;\n\tptr += attribute.name.length;\n\tptr = text.indexOf('=', ptr);\n\tif (attribute.type === \"string\") {\n\t\tptr = text.indexOf(attribute.value, ptr)\n\t\tvar quote = utils.determineQuote(text, attribute);\n\t\t// ignore first quote. We already passed it\n\t\tend = ptr + quote.length + attribute.value.length;\n\t} else if (attribute.type === \"indirect\") {\n\t\tptr = text.indexOf('{{', ptr);\n\t\tvar end = ptr + attribute.textReference.length + 4;\n\t\tvar ref = refHandler.relinkInBraces(attribute.textReference, fromTitle, toTitle, options);\n\t\tif (ref) {\n\t\t\tif (ref.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t\tif (ref.output) {\n\t\t\t\tbuilder.add(\"{{\"+ref.output+\"}}\", ptr, end);\n\t\t\t}\n\t\t}\n\t} else if (attribute.type === \"filtered\") {\n\t\tptr = text.indexOf('{{{', ptr);\n\t\tvar end = ptr + attribute.filter.length + 6;\n\t\tvar filter = filterHandler.relinkInBraces(attribute.filter, fromTitle, toTitle, options);\n\t\tif (filter !== undefined) {\n\t\t\tif (filter.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t\tif (filter.output) {\n\t\t\t\tvar quoted = \"{{{\"+filter.output+\"}}}\";\n\t\t\t\tbuilder.add(quoted, ptr, end);\n\t\t\t}\n\t\t}\n\t} else if (attribute.type === \"macro\") {\n\t\tptr = text.indexOf(\"<<\", ptr);\n\t\tvar end = attribute.value.end;\n\t\tvar macro = attribute.value;\n\t\toldValue = attribute.value;\n\t\tvar macroEntry = macrocall.relinkAttribute(parser, macro, text, fromTitle, toTitle, options);\n\t\tif (macroEntry !== undefined) {\n\t\t\tif (macroEntry.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t\tif (macroEntry.output) {\n\t\t\t\tbuilder.add(macroEntry.output, ptr, end);\n\t\t\t}\n\t\t}\n\t}\n\treturn end;\n};\n\nfunction canBePretty(title, tooltip) {\n\treturn title.indexOf(']') < 0 && (tooltip || title.indexOf('|') < 0);\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles import pragmas\n\n\\import [tag[MyTiddler]]\n\\*/\n\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\nvar filterRelinker = utils.getType('filter');\nvar ImportContext = utils.getContext('import');\n\nexports.name = \"import\";\n\nexports.report = function(text, callback, options) {\n\t// This moves the pos for us\n\tvar parseTree = this.parse();\n\tvar filter = parseTree[0].attributes.filter.value || '';\n\tfilterRelinker.report(filter, function(title, blurb) {\n\t\tif (blurb) {\n\t\t\tblurb = '\\\\import ' + blurb;\n\t\t} else {\n\t\t\tblurb = '\\\\import';\n\t\t}\n\t\tcallback(title, blurb);\n\t}, options);\n\t// Before we go, we need to actually import the variables\n\t// it's calling for, and any /relink pragma\n\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\t// In this one case, I'll let the parser parse out the filter and move\n\t// the ptr.\n\tvar start = this.matchRegExp.lastIndex,\n\t\tparseTree = this.parse(),\n\t\tfilter = parseTree[0].attributes.filter.value || '',\n\t\tentry = filterRelinker.relink(filter, fromTitle, toTitle, options);\n\tif (entry !== undefined && entry.output) {\n\t\tvar newline = text.substring(start+filter.length, this.parser.pos);\n\t\tfilter = entry.output;\n\t\tentry.output = \"\\\\import \" + filter + newline;\n\t}\n\n\t// Before we go, we need to actually import the variables\n\t// it's calling for, and any /relink pragma\n\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\n\n\treturn entry;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles macro calls.\n\n<>\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\n\nexports.name = [\"macrocallinline\", \"macrocallblock\"];\n\n// Error thrown when a macro's definition is needed, but can't be found.\nfunction CannotFindMacroDef() {};\nCannotFindMacroDef.prototype.impossible = true;\nCannotFindMacroDef.prototype.name = \"macroparam\";\n// Failed relinks due to missing definitions aren't reported for now.\n// I may want to do something special later on.\nCannotFindMacroDef.prototype.report = function() { return []; };\n\nexports.report = function(text, callback, options) {\n\tvar macroInfo = getInfoFromRule(this);\n\tthis.parser.pos = macroInfo.end;\n\tthis.reportAttribute(this.parser, macroInfo, callback, options);\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar macroInfo = getInfoFromRule(this);\n\tvar managedMacro = this.parser.context.getMacro(macroInfo.name);\n\tthis.parser.pos = macroInfo.end;\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tvar mayBeWidget = this.parser.context.allowWidgets();\n\tvar names = getParamNames(this.parser, macroInfo.name, macroInfo.params, options);\n\tif (names === undefined) {\n\t\t// Needed the definition, and couldn't find it. So if a single\n\t\t// parameter needs to placeholder, just fail.\n\t\tmayBeWidget = false;\n\t}\n\tvar entry = relinkMacroInvocation(this.parser, macroInfo, text, fromTitle, toTitle, mayBeWidget, options);\n\tif (entry && entry.output) {\n\t\tentry.output = macroToString(entry.output, text, names, options);\n\t}\n\treturn entry;\n};\n\n/** Relinks macros that occur as attributes, like <$element attr=<<...>> />\n * Processes the same, except it can't downgrade into a widget if the title\n * is complicated.\n */\nexports.relinkAttribute = function(parser, macro, text, fromTitle, toTitle, options) {\n\tvar entry = relinkMacroInvocation(parser, macro, text, fromTitle, toTitle, false, options);\n\tif (entry && entry.output) {\n\t\tentry.output = macroToStringMacro(entry.output, text, options);\n\t}\n\treturn entry;\n};\n\n/** As in, report a macrocall invocation that is an html attribute. */\nexports.reportAttribute = function(parser, macro, callback, options) {\n\tvar managedMacro = parser.context.getMacro(macro.name);\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tfor (var managedArg in managedMacro) {\n\t\tvar index;\n\t\ttry {\n\t\t\tindex = getParamIndexWithinMacrocall(parser, macro.name, managedArg, macro.params, options);\n\t\t} catch (e) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (index < 0) {\n\t\t\t// The argument was not supplied. Move on to next.\n\t\t\tcontinue;\n\t\t}\n\t\tvar param = macro.params[index];\n\t\tvar handler = managedMacro[managedArg];\n\t\tvar nestedOptions = Object.create(options);\n\t\tnestedOptions.settings = parser.context;\n\t\tvar entry = handler.report(param.value, function(title, blurb) {\n\t\t\tvar rtn = managedArg;\n\t\t\tif (blurb) {\n\t\t\t\trtn += ': \"' + blurb + '\"';\n\t\t\t}\n\t\t\tcallback(title, '<<' + macro.name + ' ' + rtn + '>>');\n\t\t}, nestedOptions);\n\t}\n};\n\n/**Processes the given macro,\n * macro: {name:, params:, start:, end:}\n * each parameters: {name:, end:, value:}\n * Macro invocation returned is the same, but relinked, and may have new keys:\n * parameters: {type: macro, start:, newValue: (quoted replacement value)}\n * Output of the returned entry isn't a string, but a macro object. It needs\n * to be converted.\n */\nfunction relinkMacroInvocation(parser, macro, text, fromTitle, toTitle, mayBeWidget, options) {\n\tvar managedMacro = parser.context.getMacro(macro.name);\n\tvar modified = false;\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tvar outMacro = $tw.utils.extend({}, macro);\n\tvar macroEntry = {};\n\toutMacro.params = macro.params.slice();\n\tfor (var managedArg in managedMacro) {\n\t\tvar index;\n\t\ttry {\n\t\t\tindex = getParamIndexWithinMacrocall(parser, macro.name, managedArg, macro.params, options);\n\t\t} catch (e) {\n\t\t\tif (e instanceof CannotFindMacroDef) {\n\t\t\t\tmacroEntry.impossible = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (index < 0) {\n\t\t\t// this arg either was not supplied, or we can't find\n\t\t\t// the definition, so we can't tie it to an anonymous\n\t\t\t// argument. Either way, move on to the next.\n\t\t\tcontinue;\n\t\t}\n\t\tvar param = macro.params[index];\n\t\tvar handler = managedMacro[managedArg];\n\t\tvar nestedOptions = Object.create(options);\n\t\tnestedOptions.settings = parser.context;\n\t\tvar entry = handler.relink(param.value, fromTitle, toTitle, nestedOptions);\n\t\tif (entry === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\t// Macro parameters can only be string parameters, not\n\t\t// indirect, or macro, or filtered\n\t\tif (entry.impossible) {\n\t\t\tmacroEntry.impossible = true;\n\t\t}\n\t\tif (!entry.output) {\n\t\t\tcontinue;\n\t\t}\n\t\tvar quote = utils.determineQuote(text, param);\n\t\tvar quoted = utils.wrapParameterValue(entry.output, quote);\n\t\tvar newParam = $tw.utils.extend({}, param);\n\t\tif (quoted === undefined) {\n\t\t\tif (!mayBeWidget || !options.placeholder) {\n\t\t\t\tmacroEntry.impossible = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar ph = options.placeholder.getPlaceholderFor(entry.output,handler.name);\n\t\t\tnewParam.newValue = \"<<\"+ph+\">>\";\n\t\t\tnewParam.type = \"macro\";\n\t\t} else {\n\t\t\tnewParam.start = newParam.end - (newParam.value.length + (quote.length*2));\n\t\t\tnewParam.value = entry.output;\n\t\t\tnewParam.newValue = quoted;\n\t\t}\n\t\toutMacro.params[index] = newParam;\n\t\tmodified = true;\n\t}\n\tif (modified || macroEntry.impossible) {\n\t\tif (modified) {\n\t\t\tmacroEntry.output = outMacro;\n\t\t}\n\t\treturn macroEntry;\n\t}\n\treturn undefined;\n};\n\nfunction getInfoFromRule(rule) {\n\t// Get all the details of the match\n\tvar macroInfo = rule.nextCall;\n\tif (!macroInfo) {\n\t\t// rule.match is used \";\n\t} else {\n\t\treturn macroToStringMacro(macro, text, options);\n\t}\n};\n\nfunction macroToStringMacro(macro, text, options) {\n\tvar builder = new Rebuilder(text, macro.start);\n\tfor (var i = 0; i < macro.params.length; i++) {\n\t\tvar param = macro.params[i];\n\t\tif (param.newValue) {\n\t\t\tbuilder.add(param.newValue, param.start, param.end);\n\t\t}\n\t}\n\treturn builder.results(macro.end);\n};\n\n/** Returns -1 if param definitely isn't in macrocall.\n */\nfunction getParamIndexWithinMacrocall(parser, macroName, param, params, options) {\n\tvar index, i, anonsExist = false;\n\tfor (i = 0; i < params.length; i++) {\n\t\tvar name = params[i].name;\n\t\tif (name === param) {\n\t\t\treturn i;\n\t\t}\n\t\tif (name === undefined) {\n\t\t\tanonsExist = true;\n\t\t}\n\t}\n\tif (!anonsExist) {\n\t\t// If no anonymous parameters are present, and we didn't find\n\t\t// it among the named ones, it must not be there.\n\t\treturn -1;\n\t}\n\tvar expectedIndex = indexOfParameterDef(parser, macroName, param, options);\n\t// We've got to skip over all the named parameter instances.\n\tif (expectedIndex >= 0) {\n\t\tvar anonI = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (params[i].name === undefined) {\n\t\t\t\tif (anonI === expectedIndex) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t\tanonI++;\n\t\t\t} else {\n\t\t\t\tvar indexOfOther = indexOfParameterDef(parser, macroName, params[i].name, options);\n\t\t\t\tif (indexOfOther < expectedIndex) {\n\t\t\t\t\tanonI++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn -1;\n};\n\n// Looks up the definition of a macro, and figures out what the expected index\n// is for the given parameter.\nfunction indexOfParameterDef(parser, macroName, paramName, options) {\n\tvar def = parser.context.getMacroDefinition(macroName);\n\tif (def === undefined) {\n\t\tthrow new CannotFindMacroDef();\n\t}\n\tvar params = def.params || [];\n\tfor (var i = 0; i < params.length; i++) {\n\t\tif (params[i].name === paramName) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\nfunction getParamNames(parser, macroName, params, options) {\n\tvar used = Object.create(null);\n\tvar rtn = new Array(params.length);\n\tvar anonsExist = false;\n\tvar i;\n\tfor (i = 0; i < params.length; i++) {\n\t\tvar name = params[i].name;\n\t\tif (name) {\n\t\t\trtn[i] = name;\n\t\t\tused[name] = true;\n\t\t} else {\n\t\t\tanonsExist = true;\n\t\t}\n\t}\n\tif (anonsExist) {\n\t\tvar def = parser.context.getMacroDefinition(macroName);\n\t\tif (def === undefined) {\n\t\t\t// If there are anonymous parameters, and we can't\n\t\t\t// find the definition, then we can't hope to create\n\t\t\t// a widget.\n\t\t\treturn undefined;\n\t\t}\n\t\tvar defParams = def.params || [];\n\t\tvar defPtr = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (rtn[i] === undefined) {\n\t\t\t\twhile(defPtr < defParams.length && used[defParams[defPtr].name]) {\n\t\t\t\t\tdefPtr++;\n\t\t\t\t}\n\t\t\t\tif (defPtr >= defParams.length) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\trtn[i] = defParams[defPtr].name;\n\t\t\t\tused[defParams[defPtr].name] = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn rtn;\n};\n\nfunction parseParams(paramString, pos) {\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = { };\n\t\t// We need to find the group match that isn't undefined.\n\t\tfor (var i = 2; i <= 6; i++) {\n\t\t\tif (paramMatch[i] !== undefined) {\n\t\t\t\tparamInfo.value = paramMatch[i];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\t//paramInfo.start = pos;\n\t\tparamInfo.end = reParam.lastIndex + pos;\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn params;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles pragma macro definitions. Except we only update placeholder macros\nthat we may have previously install.\n\n\\define relink-?() Tough title\n\n\\*/\n\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils\");\nvar VariableContext = utils.getContext('variable');\n\nexports.name = \"macrodef\";\n\nexports.report = function(text, callback, options) {\n\tvar setParseTreeNode = this.parse(),\n\t\tm = this.match,\n\t\tname = m[1];\n\tthis.parser.context = new VariableContext(this.parser.context, setParseTreeNode[0]);\n\t// Parse set the pos pointer, but we don't want to skip the macro body.\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar endMatch = getBodyMatch(text, this.parser.pos, m[3]);\n\tif (endMatch) {\n\t\tvar value = endMatch[2],\n\t\t\thandler = utils.getType(getActiveType(name, m[2]) || 'wikitext');\n\t\tif (handler) {\n\t\t\tvar entry = handler.report(value, function(title, blurb) {\n\t\t\t\tvar macroStr = '\\\\define ' + name + '()';\n\t\t\t\tif (blurb) {\n\t\t\t\t\tmacroStr += ' ' + blurb;\n\t\t\t\t}\n\t\t\t\tcallback(title, macroStr);\n\t\t\t}, options);\n\t\t}\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar setParseTreeNode = this.parse(),\n\t\tentry,\n\t\tm = this.match,\n\t\tname = m[1],\n\t\tparams = m[2],\n\t\tmultiline = m[3];\n\tthis.parser.context = new VariableContext(this.parser.context, setParseTreeNode[0]);\n\t// Parse set the pos pointer, but we don't want to skip the macro body.\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar endMatch = getBodyMatch(text, this.parser.pos, multiline);\n\tif (endMatch) {\n\t\tvar value = endMatch[2],\n\t\t\ttype = getActiveType(name, params),\n\t\t\thandler = utils.getType(type || 'wikitext');\n\t\tif (handler) {\n\t\t\t// If this is an active relink placeholder, then let's remember it\n\t\t\tif (type && options.placeholder) {\n\t\t\t\toptions.placeholder.registerExisting(name, value);\n\t\t\t}\n\t\t\t// Relink the contents\n\t\t\tentry = handler.relink(value, fromTitle, toTitle, options);\n\t\t\tif (entry && entry.output) {\n\t\t\t\tentry.output = m[0] + endMatch[1] + entry.output + endMatch[0];\n\t\t\t}\n\t\t}\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t}\n\treturn entry;\n};\n\n// Return another match for the body, but tooled uniquely\n// m[1] = whitespace before body\n// m[2] = body\n// m.index + m[0].length -> end of match\nfunction getBodyMatch(text, pos, isMultiline) {\n\tvar whitespace,\n\t\tvalueRegExp;\n\tif (isMultiline) {\n\t\tvalueRegExp = /\\r?\\n\\\\end[^\\S\\n\\r]*(?:\\r?\\n|$)/mg;\n\t\twhitespace = '';\n\t} else {\n\t\tvalueRegExp = /(?:\\r?\\n|$)/mg;\n\t\tvar newPos = $tw.utils.skipWhiteSpace(text, pos);\n\t\twhitespace = text.substring(pos, newPos);\n\t\tpos = newPos;\n\t}\n\tvalueRegExp.lastIndex = pos;\n\tvar match = valueRegExp.exec(text);\n\tif (match) {\n\t\tmatch[1] = whitespace;\n\t\tmatch[2] = text.substring(pos, match.index);\n\t}\n\treturn match;\n};\n\nfunction getActiveType(macroName, parameters) {\n\tvar placeholder = /^relink-(?:(\\w+)-)?\\d+$/.exec(macroName);\n\t// normal macro or special placeholder?\n\tif (placeholder && parameters === '') {\n\t\treturn placeholder[1] || 'title';\n\t}\n\treturn undefined;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[[Introduction]]\n\n[[link description|TiddlerTitle]]\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.name = \"prettylink\";\n\nexports.report = function(text, callback, options) {\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif (!$tw.utils.isLinkExternal(link)) {\n\t\tcallback(link, '[[' + text + ']]');\n\t}\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar caption, m = this.match;\n\tif (m[2] === fromTitle) {\n\t\t// format is [[caption|MyTiddler]]\n\t\tcaption = m[1];\n\t} else if (m[2] !== undefined || m[1] !== fromTitle) {\n\t\t// format is [[MyTiddler]], and it doesn't match\n\t\treturn undefined;\n\t}\n\tvar entry = { output: utils.makePrettylink(this.parser, toTitle, caption) };\n\tif (entry.output === undefined) {\n\t\tentry.impossible = true;\n\t}\n\treturn entry;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/quoteblock.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles the quote blocks, as in:\n\n<<<\n...\n<<<\n\n\\*/\n\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\n\nexports.name = \"quoteblock\";\n\nexports.type = {block: true};\n\nexports.report = function(text, callback, options) {\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\tthis.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\n\t// Parse the optional cite\n\treportCite(this.parser, this.match[1]);\n\t// Now parse the body of the quote\n\tthis.parser.parseBlocks(reEndString);\n\t// Now parse the closing cite\n\treportCite(this.parser, this.match[1]);\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\tvar builder = new Rebuilder(text, this.parser.pos);\n\tvar entry;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\tthis.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\n\t// Parse the optional cite\n\tmergeRelinks(builder, this.parser.parseInlineRun(/(\\r?\\n)/mg));\n\t// Now parse the body of the quote\n\tmergeRelinks(builder, this.parser.parseBlocks(reEndString));\n\t// Now parse the closing cite\n\tmergeRelinks(builder, this.parser.parseInlineRun(/(\\r?\\n)/mg));\n\n\tif (builder.changed() || builder.impossible) {\n\t\tentry = {};\n\t\tentry.output = builder.results(this.parser.pos);\n\t\tif (builder.impossible) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nfunction reportCite(parser, delimeter) {\n\tvar callback = parser.callback;\n\ttry {\n\t\tparser.callback = function(title, blurb) {\n\t\t\treturn callback(title, delimeter + \" \" + blurb);\n\t\t};\n\t\tparser.parseInlineRun(/(\\r?\\n)/mg);\n\t} finally {\n\t\tparser.callback = callback;\n\t}\n};\n\nfunction mergeRelinks(builder, output) {\n\tif (output.length > 0) {\n\t\tfor (var i = 0; i < output.length; i++) {\n\t\t\tvar o = output[i];\n\t\t\tif (o.output) {\n\t\t\t\tbuilder.add(o.output, o.start, o.end);\n\t\t\t}\n\t\t\tif (o.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t}\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/quoteblock.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js":{"text":"/*\\\nmodule-type: wikirule\n\nThis defines the \\relink inline pragma used to locally declare\nrelink rules for macros.\n\nIt takes care of providing its own relink and report rules.\n\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nexports.name = \"relink\";\nexports.types = {pragma: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /^\\\\relink[^\\S\\n]+([^(\\s]+)([^\\r\\n]*)(\\r?\\n)?/mg;\n};\n\n/**This makes the widget that the macro library will later parse to determine\n * new macro relink state.\n *\n * It's a <$set> widget so it can appear BEFORE \\define pragma and not\n * prevent that pragma from being scooped up by importvariables.\n * (importvariables stops scooping as soon as it sees something besides $set) */\nexports.parse = function() {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar macroName;\n\tvar macroParams = Object.create(null);\n\tvar error = undefined;\n\tvar rtn = [];\n\tvar self = this;\n\tthis.interpretSettings(function(macro, parameter, type) {\n\t\tmacroName = macro;\n\t\tif (type && !utils.getType(type)) {\n\t\t\terror = language.getString(\"text/plain\", \"Error/UnrecognizedType\",\n\t\t\t\t{variables: {type: type}, wiki: self.parser.wiki});\n\t\t}\n\t\tmacroParams[parameter] = type;\n\t});\n\t// If no macroname. Return nothing, this rule will be ignored by parsers\n\tif (macroName) {\n\t\tvar relink = Object.create(null);\n\t\trelink[macroName] = macroParams;\n\t\trtn.push({\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: \"\"}\n\t\t\t},\n\t\t\tchildren: [],\n\t\t\tisMacroDefinition: true,\n\t\t\trelink: relink});\n\t}\n\tif (error) {\n\t\trtn.push({\n\t\t\ttype: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tc-error tc-relink-error\"\n\t\t\t\t}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: error}\n\t\t\t]});\n\t}\n\treturn rtn;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar parser = this.parser;\n\tvar currentTiddler = parser.context.widget.variables.currentTiddler.value;\n\tparser.pos = this.matchRegExp.lastIndex;\n\tthis.interpretSettings(function(macro, parameter, type) {\n\t\toptions.settings.addSetting(parser.wiki, macro, parameter, type, currentTiddler);\n\t});\n\t// Return nothing, because this rule is ignored by the parser\n\treturn undefined;\n};\n\nexports.interpretSettings = function(block) {\n\tvar paramString = this.match[2];\n\tif (paramString !== \"\") {\n\t\tvar macro = this.match[1];\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*([^\\s]+))?/mg;\n\t\tvar paramMatch = reParam.exec(paramString);\n\t\twhile (paramMatch) {\n\t\t\tvar parameter = paramMatch[1];\n\t\t\tvar type = paramMatch[2];\n\t\t\tblock(macro, parameter, type);\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n};\n","module-type":"wikirule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nParses and acknowledges any pragma rules a tiddler has.\n\n\\rules except html wikilink\n\n\\*/\n\nexports.name = \"rules\";\n\n/**This is all we have to do. The rules rule doesn't parse. It just amends\n * the rules, which is exactly what I want it to do too.\n * It also takes care of moving the pos pointer forward.\n */\nexports.relink = function() {\n\tthis.parse();\n\treturn undefined;\n};\n\n// Same deal\nexports.report = exports.relink;\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles sys links\n\n$:/sys/link\n\nbut not:\n\n~$:/sys/link\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.name = \"syslink\";\n\nexports.report = function(text, callback, options) {\n\tvar title = this.match[0];\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (title[0] !== \"~\") {\n\t\tcallback(title, '~' + title);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar entry = undefined;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (this.match[0] === fromTitle && this.match[0][0] !== \"~\") {\n\t\tentry = {output: this.makeSyslink(toTitle, options)};\n\t\tif (entry.output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeSyslink = function(title, options) {\n\tvar match = title.match(this.matchRegExp);\n\tif (match && match[0] === title && title[0] !== \"~\") {\n\t\treturn title;\n\t} else {\n\t\treturn utils.makePrettylink(this.parser, title);\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/table.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles tables. Or rather handles the cells inside the tables, since tables\nthemselves aren't relinked.\n\n\\*/\n\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\n\nexports.name = \"table\";\n\nexports.types = {block: true};\n\nexports.report = function(text, callback, options) {\n\tvar rowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else if(rowType === \"c\") {\n\t\t\t// Is this a caption row?\n\t\t\t// If so, move past the opening `|` of the row\n\t\t\tthis.parser.pos++;\n\t\t\t// Parse the caption\n\t\t\tvar oldCallback = this.parser.callback;\n\t\t\tthis.parser.callback = function(title, blurb) {\n\t\t\t\tcallback(title, '|' + blurb + '|c');\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tthis.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} finally {\n\t\t\t\tthis.parser.callback = oldCallback;\n\t\t\t}\n\t\t} else {\n\t\t\t// Process the row\n\t\t\tprocessRow.call(this, rowType, callback);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar rowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tbuilder = new Rebuilder(text, this.parser.pos),\n\t\timpossible = false,\n\t\toutput,\n\t\tentry;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Is this a caption row?\n\t\t\tif(rowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Parse the caption\n\t\t\t\toutput = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Process the row\n\t\t\t\toutput = processRow.call(this);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t}\n\t\t\tif (output.length > 0) {\n\t\t\t\tfor (var i = 0; i < output.length; i++) {\n\t\t\t\t\tvar o = output[i];\n\t\t\t\t\tif (o.output) {\n\t\t\t\t\t\tbuilder.add(o.output, o.start, o.end);\n\t\t\t\t\t}\n\t\t\t\t\tif (o.impossible) {\n\t\t\t\t\t\timpossible = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\tif (builder.changed() || impossible) {\n\t\tentry = {}\n\t\tentry.output = builder.results(this.parser.pos);\n\t\tif (impossible) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nvar processRow = function(rowType, callback) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\tchildren = [];\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t}\n\t\tswitch (cellMatch[1]) {\n\t\tcase '~':\n\t\tcase '>':\n\t\tcase '<':\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvar prefix = '|';\n\t\t\tvar suffix = '|';\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tprefix += '^';\n\t\t\t\tthis.parser.pos++;\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tprefix += ',';\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\tif (spaceLeft) {\n\t\t\t\tprefix += ' ';\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tprefix += '!';\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tvar oldCallback = this.parser.callback;\n\t\t\tvar reports = [];\n\t\t\tthis.parser.callback = function(title, blurb) {\n\t\t\t\treports.push(title, blurb);\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar output = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t\tif (output.length > 0) {\n\t\t\t\t\tchildren.push(output[0]);\n\t\t\t\t}\n\t\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t\tsuffix = ' |';\n\t\t\t\t}\n\t\t\t\tfor (var i = 0; i < reports.length; i += 2) {\n\t\t\t\t\tcallback(reports[i], prefix + reports[i+1] + suffix + rowType);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.parser.callback = oldCallback;\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn children;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/table.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of transclusions in wiki text like,\n\n{{RenamedTiddler}}\n{{RenamedTiddler||TemplateTitle}}\n\nThis renames both the tiddler and the template field.\n\n\\*/\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar utils = require(\"./utils.js\");\n\nexports.name = ['transcludeinline', 'transcludeblock'];\n\nexports.report = function(text, callback, options) {\n\tvar m = this.match,\n\t\trefString = $tw.utils.trim(m[1]),\n\t\tref = parseTextReference(refString);\n\t\ttemplate = $tw.utils.trim(m[2]);\n\tif (ref.title) {\n\t\tvar suffix = '';\n\t\tif (ref.index) {\n\t\t\tsuffix = '##' + ref.index;\n\t\t} else if (ref.field) {\n\t\t\tsuffix = '!!' + ref.field;\n\t\t}\n\t\tif (template) {\n\t\t\tsuffix = suffix + '||' + template;\n\t\t}\n\t\tcallback(ref.title, '{{' + suffix + '}}')\n\t}\n\tif (template) {\n\t\tcallback(template, '{{' + refString + '||}}');\n\t}\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar m = this.match,\n\t\treference = parseTextReference(m[1]),\n\t\ttemplate = m[2],\n\t\tentry = undefined,\n\t\tmodified = false;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif ($tw.utils.trim(reference.title) === fromTitle) {\n\t\t// preserve user's whitespace\n\t\treference.title = reference.title.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tif (modified) {\n\t\tvar output = this.makeTransclude(this.parser, reference, template);\n\t\tif (output) {\n\t\t\t// Adding any newline that might have existed is\n\t\t\t// what allows this relink method to work for both\n\t\t\t// the block and inline filter wikitext rule.\n\t\t\tentry = {output: output + utils.getEndingNewline(m[0])};\n\t\t} else {\n\t\t\tentry = {impossible: true}\n\t\t}\n\t}\n\treturn entry;\n};\n\n// I have my own because the core one is deficient for my needs.\nfunction parseTextReference(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /^([\\w\\W]*?)(?:!!(\\S[\\w\\W]*)|##(\\S[\\w\\W]*))?$/g;\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match) {\n\t\t// Return the parts\n\t\tresult.title = match[1];\n\t\tresult.field = match[2];\n\t\tresult.index = match[3];\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/** This converts a reference and a template into a string representation\n * of a transclude.\n */\nexports.makeTransclude = function(parser, reference, template) {\n\tvar rtn;\n\tif (!canBePrettyTemplate(template)) {\n\t\tvar widget = utils.makeWidget(parser, '$transclude', {\n\t\t\ttiddler: $tw.utils.trim(template),\n\t\t\tfield: reference.field,\n\t\t\tindex: reference.index});\n\t\tif (reference.title && widget !== undefined) {\n\t\t\trtn = utils.makeWidget(parser, '$tiddler', {tiddler: $tw.utils.trim(reference.title)}, widget);\n\t\t} else {\n\t\t\trtn = widget;\n\t\t}\n\t} else if (!canBePrettyTitle(reference.title)) {\n\t\t// This block and the next account for the 1%...\n\t\tvar reducedRef = {field: reference.field, index: reference.index};\n\t\trtn = utils.makeWidget(parser, '$tiddler', {tiddler: $tw.utils.trim(reference.title)}, prettyTransclude(reducedRef, template));\n\t} else {\n\t\t// This block takes care of 99% of all cases\n\t\trtn = prettyTransclude(reference, template);\n\t}\n\treturn rtn;\n};\n\nfunction canBePrettyTitle(value) {\n\treturn refHandler.canBePretty(value) && canBePrettyTemplate(value);\n};\n\nfunction canBePrettyTemplate(value) {\n\treturn !value || (value.indexOf('}') < 0 && value.indexOf('{') < 0 && value.indexOf('|') < 0);\n};\n\nfunction prettyTransclude(textReference, template) {\n\tif (typeof textReference !== \"string\") {\n\t\ttextReference = refHandler.toString(textReference);\n\t}\n\tif (!textReference) {\n\t\ttextReference = '';\n\t}\n\tif (template !== undefined) {\n\t\treturn \"{{\"+textReference+\"||\"+template+\"}}\";\n\t} else {\n\t\treturn \"{{\"+textReference+\"}}\";\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/typedblock.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles the typeed blocks, as in:\n\n$$$text/vnd.tiddlywiki>text/html\n...\n$$$\n\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nexports.name = \"typedblock\";\n\nexports.types = {block: true};\n\nvar textOperators;\nvar oldTextOperators;\n\nfunction getTextOperator(type, options) {\n\tvar operator;\n\tif (textOperators === undefined) {\n\t\ttextOperators = utils.getModulesByTypeAsHashmap('relinktext', 'type');\n\t\toldTextOperators = utils.getModulesByTypeAsHashmap('relinktextoperator', 'type');\n\t}\n\toperator = textOperators[type];\n\tif (operator) {\n\t\treturn operator;\n\t}\n\tvar info = $tw.utils.getFileExtensionInfo(type);\n\tif (info && textOperators[info.type]) {\n\t\treturn textOperators[info.type];\n\t}\n\tvar old = oldTextOperators[type] || (info && oldTextOperators[info.type]);\n\tif (old) {\n\t\tvar vars = Object.create(options);\n\t\tvars.variables = {type: old.type, keyword: type};\n\t\tvar warnString = language.getString(\"text/html\", \"Warning/OldRelinkTextOperator\", vars)\n\t\tlanguage.warn(warnString);\n\t\toldTextOperators[type] = undefined;\n\t}\n};\n\nfunction getText() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn text;\n};\n\nexports.report = function(text, callback, options) {\n\tvar innerText = getText.call(this),\n\t\toperator = getTextOperator(this.match[1], options);\n\tif (operator) {\n\t\treturn operator.report(innerText, callback, options);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar start = this.parser.pos,\n\t\tinnerStart = this.matchRegExp.lastIndex,\n\t\tinnerText = getText.call(this),\n\t\toperator = getTextOperator(this.match[1], options);\n\tif (operator) {\n\t\tvar innerOptions = Object.create(options);\n\t\tinnerOptions.settings = this.parser.context;\n\t\tvar results = operator.relink(innerText, fromTitle, toTitle, innerOptions);\n\t\tif (results && results.output) {\n\t\t\tvar builder = new Rebuilder(text, start);\n\t\t\tbuilder.add(results.output, innerStart, innerStart + innerText.length);\n\t\t\tresults.output = builder.results(this.parser.pos);\n\t\t}\n\t\treturn results;\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/typedblock.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js":{"text":"/*\\\nmodule-type: library\n\nUtility methods for the wikitext relink rules.\n\n\\*/\n\nexports.makeWidget = function(parser, tag, attributes, body) {\n\tif (!parser.context.allowWidgets()) {\n\t\treturn undefined;\n\t}\n\tvar string = '<' + tag;\n\tfor (var attr in attributes) {\n\t\tvar value = attributes[attr];\n\t\tif (value !== undefined) {\n\t\t\tvar quoted = exports.wrapAttributeValue(value);\n\t\t\tif (!quoted) {\n\t\t\t\tif (!parser.options.placeholder) {\n\t\t\t\t\t// It's not possible to make this widget\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tvar category = getPlaceholderCategory(parser.context, tag, attr);\n\t\t\t\tquoted = '<<' + parser.placeholder.getPlaceholderFor(value, category) + '>>';\n\t\t\t}\n\t\t\tstring += ' ' + attr + '=' + quoted;\n\t\t}\n\t}\n\tif (body !== undefined) {\n\t\tstring += '>' + body + '';\n\t} else {\n\t\tstring += '/>';\n\t}\n\treturn string;\n};\n\nfunction getPlaceholderCategory(context, tag, attribute) {\n\tvar element = context.getAttribute(tag);\n\tvar rule = element && element[attribute];\n\t// titles go to relink-\\d\n\t// plaintext goes to relink-plaintext-\\d\n\t// because titles are way more common, also legacy\n\tif (rule === undefined) {\n\t\treturn 'plaintext';\n\t} else {\n\t\trule = rule.fields.text;\n\t\tif (rule === 'title') {\n\t\t\trule = undefined;\n\t\t}\n\t\treturn rule;\n\t}\n};\n\nexports.makePrettylink = function(parser, title, caption) {\n\tvar output;\n\tif (parser.context.allowPrettylinks() && canBePrettylink(title, caption)) {\n\t\tif (caption !== undefined) {\n\t\t\toutput = \"[[\" + caption + \"|\" + title + \"]]\";\n\t\t} else {\n\t\t\toutput = \"[[\" + title + \"]]\";\n\t\t}\n\t} else if (caption !== undefined) {\n\t\tvar safeCaption = sanitizeCaption(parser, caption);\n\t\tif (safeCaption !== undefined) {\n\t\t\toutput = exports.makeWidget(parser, '$link', {to: title}, safeCaption);\n\t\t}\n\t} else if (exports.shorthandPrettylinksSupported(parser.wiki)) {\n\t\toutput = exports.makeWidget(parser, '$link', {to: title});\n\t} else if (parser.context.allowWidgets() && parser.placeholder) {\n\t\t// If we don't have a caption, we must resort to\n\t\t// placeholders anyway to prevent link/caption desync\n\t\t// from later relinks.\n\t\t// It doesn't matter whether the tiddler is quotable.\n\t\tvar ph = parser.placeholder.getPlaceholderFor(title);\n\t\toutput = \"<$link to=<<\"+ph+\">>><$text text=<<\"+ph+\">>/>\";\n\t}\n\treturn output;\n};\n\n/**In version 5.1.20, Tiddlywiki made it so <$link to\"something\" /> would\n * use \"something\" as a caption. This is preferable. However, Relink works\n * going back to 5.1.14, so we need to have different handling for both\n * cases.\n */\nvar _supported;\nexports.shorthandPrettylinksSupported = function(wiki) {\n\tif (_supported === undefined) {\n\t\tvar test = wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", \"<$link to=test/>\");\n\t\t_supported = (test === \"test\");\n\t}\n\treturn _supported;\n};\n\n/**Return true if value can be used inside a prettylink.\n */\nfunction canBePrettylink(value, customCaption) {\n\treturn value.indexOf(\"]]\") < 0 && value[value.length-1] !== ']' && (customCaption !== undefined || value.indexOf('|') < 0);\n};\n\nfunction sanitizeCaption(parser, caption) {\n\tvar plaintext = parser.wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", caption);\n\tif (plaintext === caption && caption.indexOf(\"\") <= 0) {\n\t\treturn caption;\n\t} else {\n\t\treturn exports.makeWidget(parser, '$text', {text: caption});\n\t}\n};\n\n/**Finds an appropriate quote mark for a given value.\n *\n *Tiddlywiki doesn't have escape characters for attribute values. Instead,\n * we just have to find the type of quotes that'll work for the given title.\n * There exist titles that simply can't be quoted.\n * If it can stick with the preference, it will.\n *\n * return: Returns the wrapped value, or undefined if it's impossible to wrap\n */\nexports.wrapAttributeValue = function(value, preference) {\n\tvar whitelist = [\"\", \"'\", '\"', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\/\\s<>\"'=])/.test(v) && v.length > 0; },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';}\n\t};\n\tif (choices[preference] && choices[preference](value)) {\n\t\treturn wrap(value, preference);\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrap(value, quote);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\n/**Like wrapAttribute value, except for macro parameters, not attributes.\n *\n * These are more permissive. Allows brackets,\n * and slashes and '<' in unquoted values.\n */\nexports.wrapParameterValue = function(value, preference) {\n\tvar whitelist = [\"\", \"'\", '\"', '[[', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\s>\"'=])/.test(v); },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t\"[[\": canBePrettyOperand,\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';}\n\t};\n\tif (choices[preference] && choices[preference](value)) {\n\t\treturn wrap(value, preference);\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrap(value, quote);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\nfunction wrap(value, wrapper) {\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; },\n\t\t'\"\"\"': function(v) {return '\"\"\"'+v+'\"\"\"'; },\n\t\t\"[[\": function(v) {return \"[[\"+v+\"]]\"; }\n\t};\n\tvar chosen = wrappers[wrapper];\n\tif (chosen) {\n\t\treturn chosen(value);\n\t} else {\n\t\treturn undefined;\n\t}\n};\n\nfunction canBePrettyOperand(value) {\n\treturn value.indexOf(']') < 0;\n};\n\n/**Given some text, and a param or attribute within that text, this returns\n * what type of quotation that attribute is using.\n *\n * param: An object in the form {end:, ...}\n */\nexports.determineQuote = function(text, param) {\n\tvar pos = param.end-1;\n\tif (text[pos] === \"'\") {\n\t\treturn \"'\";\n\t}\n\tif (text[pos] === '\"') {\n\t\tif (text.substr(pos-2, 3) === '\"\"\"') {\n\t\t\treturn '\"\"\"';\n\t\t} else {\n\t\t\treturn '\"';\n\t\t}\n\t}\n\tif (text.substr(pos-1,2) === ']]' && text.substr((pos-param.value.length)-3, 2) === '[[') {\n\t\treturn \"[[\";\n\t}\n\treturn '';\n};\n\n// Finds the newline at the end of a string and returns it. Empty string if\n// none exists.\nexports.getEndingNewline = function(string) {\n\tvar l = string.length;\n\tif (string[l-1] === '\\n') {\n\t\treturn (string[l-2] === '\\r') ? \"\\r\\n\" : \"\\n\";\n\t}\n\treturn \"\";\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles CamelCase links\n\nWikiLink\n\nbut not:\n\n~WikiLink\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.name = \"wikilink\";\n\nexports.report = function(text, callback, options) {\n\tvar title = this.match[0],\n\t\tunlink = $tw.config.textPrimitives.unWikiLink;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (title[0] !== unlink) {\n\t\tcallback(title, unlink + title);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar entry = undefined,\n\t\ttitle = this.match[0];\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (title === fromTitle && title[0] !== $tw.config.textPrimitives.unWikiLink) {\n\t\tentry = { output: this.makeWikilink(toTitle, options) };\n\t\tif (entry.output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeWikilink = function(title, options) {\n\tif (title.match(this.matchRegExp) && title[0] !== $tw.config.textPrimitives.unWikiLink) {\n\t\treturn title;\n\t} else {\n\t\treturn utils.makePrettylink(this.parser, title);\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/context.js":{"text":"/*\\\n\nBase class for relink contexts.\n\n\\*/\n\nfunction Context() {\n};\n\nexports.context = Context;\n\n// This class does no special handling of fields, operators, or attributes.\n// we pass it along to the parent.\nContext.prototype.getFields = function() {\n\treturn this.parent.getFields();\n};\n\nContext.prototype.getOperator = function(name, index) {\n\treturn this.parent.getOperator(name, index);\n};\n\nContext.prototype.getOperators = function() {\n\treturn this.parent.getOperators();\n};\n\nContext.prototype.getAttribute = function(elementName) {\n\treturn this.parent.getAttribute(elementName);\n};\n\nContext.prototype.getAttributes = function() {\n\treturn this.parent.getAttributes();\n};\n\nContext.prototype.getMacro = function(macroName) {\n\treturn this.parent.getMacro(macroName);\n};\n\nContext.prototype.getMacros = function() {\n\treturn this.parent.getMacros();\n};\n\nContext.prototype.allowPrettylinks = function() {\n\treturn this.parent.allowPrettylinks();\n};\n\nContext.prototype.allowWidgets = function() {\n\treturn this.parent.allowWidgets();\n};\n\nContext.prototype.hasImports = function(value) {\n\treturn this.parent.hasImports(value);\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/context.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/import.js":{"text":"/*\\\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar WidgetContext = require('./widget').widget;\n\nfunction ImportContext(wiki, parent, filter) {\n\tthis.parent = parent;\n\tthis.wiki = wiki;\n\tvar importWidget = createImportWidget(filter, this.wiki, this.parent.widget);\n\tthis._compileList(importWidget.tiddlerList);\n\t// This only works if only one filter is imported\n\tthis.widget = this.getBottom(importWidget);\n\t// Trickle this up, so that any containing tiddlercontext knows that this\n\t// tiddler does some importing, and must be checked regularly.\n\tparent.hasImports(true);\n};\n\nexports.import = ImportContext;\n\nImportContext.prototype = new WidgetContext();\n\nImportContext.prototype.changed = function(changes) {\n\treturn this.widget && this.widget.refresh(changes)\n};\n\nfunction createImportWidget(filter, wiki, parent) {\n\tvar widget = wiki.makeWidget( { tree: [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\t\"filter\": {\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: filter\n\t\t\t}\n\t\t}\n\t}] }, { parentWidget: parent} );\n\tif (parent) {\n\t\tparent.children.push(widget);\n\t}\n\twidget.execute();\n\twidget.renderChildren();\n\tvar importWidget = widget.children[0];\n\treturn importWidget;\n};\n\nImportContext.prototype._compileList = function(titleList) {\n\tfor (var i = 0; i < titleList.length; i++) {\n\t\tvar parser = this.wiki.parseTiddler(titleList[i]);\n\t\tif (parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile (parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tif (parseTreeNode.relink) {\n\t\t\t\t\tfor (var macroName in parseTreeNode.relink) {\n\t\t\t\t\t\tvar parameters = parseTreeNode.relink[macroName];\n\t\t\t\t\t\tfor (paramName in parameters) {\n\t\t\t\t\t\t\tthis.addSetting(this.wiki, macroName, paramName, parameters[paramName], titleList[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t}\n\t}\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/import.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/tiddler.js":{"text":"/*\\\n\nContext for a tiddler. Defines nothing but makes an entry point to test if\na tiddler must be refreshed.\n\n\\*/\n\nvar WidgetContext = require('./widget.js').widget;\n\nfunction TiddlerContext(wiki, parentContext, title) {\n\tthis.title = title;\n\tthis.parent = parentContext;\n\tvar globalWidget = parentContext && parentContext.widget;\n\tvar parentWidget = wiki.makeWidget(null, {parentWidget: globalWidget});\n\tparentWidget.setVariable('currentTiddler', title);\n\tthis.widget = wiki.makeWidget(null, {parentWidget: parentWidget});\n};\n\nexports.tiddler = TiddlerContext;\n\nTiddlerContext.prototype = new WidgetContext();\n\nTiddlerContext.prototype.changed = function(changes) {\n\treturn this.widget && this.widget.refresh(changes);\n};\n\n// By default, a tiddler context does not use imports, unless an import\n// statement is later discovered somewhere in the fields.\nTiddlerContext.prototype.hasImports = function(value) {\n\treturn this._hasImports || (this._hasImports = value);\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/tiddler.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/variable.js":{"text":"/*\\\n\nThis handles the context for variables. Either from $set, $vars, or \\define\n\n\\*/\n\nvar WidgetContext = require('./widget').widget;\n\nfunction VariableContext(parent, setParseTreeNode) {\n\tthis.parent = parent;\n\t// Now create a new widget and attach it.\n\tvar attachPoint = parent.widget;\n\tvar setWidget = attachPoint.makeChildWidget(setParseTreeNode);\n\tattachPoint.children.push(setWidget);\n\tsetWidget.computeAttributes();\n\tsetWidget.execute();\n\t// point our widget to bottom, where any other contexts would attach to\n\tthis.widget = this.getBottom(setWidget);\n};\n\nexports.variable = VariableContext;\n\nVariableContext.prototype = new WidgetContext();\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/variable.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/whitelist.js":{"text":"/*\\\n\nThis top-level context manages settings inside the whitelist. It never has\na parent.\n\n\\*/\n\nvar utils = require('../utils');\nvar Context = require('./context').context;\n\nvar prefix = \"$:/config/flibbles/relink/\";\n\nfunction WhitelistContext(wiki) {\n\tbuild(this, wiki);\n};\n\nexports.whitelist = WhitelistContext;\n\nWhitelistContext.prototype = new Context();\n\n/**Hot directories are directories for which if anything changes inside them,\n * then Relink must completely rebuild its index.\n * By default, this includes the whitelist settings, but relink-titles also\n * includes its rules disabling directory.\n * This is the FIRST solution I came up with to this problem. If you're\n * looking at this, please make a github issue so I have a chance to understand\n * your needs. This is currently a HACK solution.\n */\nWhitelistContext.hotDirectories = [prefix];\n\nWhitelistContext.prototype.getAttribute = function(elementName) {\n\treturn this.attributes[elementName];\n};\n\nWhitelistContext.prototype.getAttributes = function() {\n\treturn flatten(this.attributes);\n};\n\nWhitelistContext.prototype.getFields = function() {\n\treturn this.fields;\n};\n\nWhitelistContext.prototype.getOperator = function(operatorName, operandIndex) {\n\tvar op = this.operators[operatorName];\n\treturn op && op[operandIndex || 1];\n};\n\nWhitelistContext.prototype.getOperators = function() {\n\tvar signatures = Object.create(null);\n\tfor (var op in this.operators) {\n\t\tvar operandSet = this.operators[op];\n\t\tfor (var index in operandSet) {\n\t\t\tvar entry = operandSet[index];\n\t\t\tsignatures[entry.key] = entry;\n\t\t}\n\t}\n\treturn signatures;\n};\n\nWhitelistContext.prototype.getMacro = function(macroName) {\n\treturn this.macros[macroName];\n};\n\nWhitelistContext.prototype.getMacros = function() {\n\treturn flatten(this.macros);\n};\n\nWhitelistContext.prototype.changed = function(changedTiddlers) {\n\tfor (var i = 0; i < WhitelistContext.hotDirectories.length; i++) {\n\t\tvar dir = WhitelistContext.hotDirectories[i];\n\t\tfor (var title in changedTiddlers) {\n\t\t\tif (title.substr(0, dir.length) === dir) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nWhitelistContext.prototype.hasImports = function(value) {\n\t// We don't care if imports are used. This is the global level.\n\treturn false;\n};\n\n/**Factories define methods that create settings given config tiddlers.\n * for factory method 'example', it will be called once for each:\n * \"$:/config/flibbles/relink/example/...\" tiddler that exists.\n * the argument \"key\" will be set to the contents of \"...\"\n *\n * The reason I build relink settings in this convoluted way is to minimize\n * the number of times tiddlywiki has to run through EVERY tiddler looking\n * for relink config tiddlers.\n *\n * Also, by exporting \"factories\", anyone who extends relink can patch in\n * their own factory methods to create settings that are generated exactly\n * once per rename.\n */\nvar factories = {\n\tattributes: function(attributes, data, key) {\n\t\tvar elem = root(key);\n\t\tvar attr = key.substr(elem.length+1);\n\t\tattributes[elem] = attributes[elem] || Object.create(null);\n\t\tattributes[elem][attr] = data;\n\t},\n\tfields: function(fields, data, name) {\n\t\tfields[name] = data;\n\t},\n\tmacros: function(macros, data, key) {\n\t\t// We take the last index, not the first, because macro\n\t\t// parameters can't have slashes, but macroNames can.\n\t\tvar name = dir(key);\n\t\tvar arg = key.substr(name.length+1);\n\t\tmacros[name] = macros[name] || Object.create(null);\n\t\tmacros[name][arg] = data;\n\t},\n\toperators: function(operators, data, key) {\n\t\t// We take the last index, not the first, because the operator\n\t\t// may have a slash to indicate parameter number\n\t\tvar pair = key.split('/');\n\t\tvar name = pair[0];\n\t\tdata.key = key;\n\t\toperators[name] = operators[name] || Object.create(null);\n\t\toperators[name][pair[1] || 1] = data;\n\t}\n};\n\nfunction build(settings, wiki) {\n\tfor (var name in factories) {\n\t\tsettings[name] = Object.create(null);\n\t}\n\twiki.eachShadowPlusTiddlers(function(tiddler, title) {\n\t\tif (title.substr(0, prefix.length) === prefix) {\n\t\t\tvar remainder = title.substr(prefix.length);\n\t\t\tvar category = root(remainder);\n\t\t\tvar factory = factories[category];\n\t\t\tif (factory) {\n\t\t\t\tvar name = remainder.substr(category.length+1);\n\t\t\t\tvar data = utils.getType(tiddler.fields.text.trim());\n\t\t\t\tif (data) {\n\t\t\t\t\tdata.source = title;\n\t\t\t\t\t// Secret feature. You can access a config tiddler's\n\t\t\t\t\t// fields from inside the fieldtype handler. Cool\n\t\t\t\t\t// tricks can be done with this.\n\t\t\t\t\tdata.fields = tiddler.fields;\n\t\t\t\t\tfactory(settings[category], data, name);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/* Returns first bit of a path. path/to/tiddler -> path\n */\nfunction root(string) {\n\tvar index = string.indexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n};\n\n/* Returns all but the last bit of a path. path/to/tiddler -> path/to\n */\nfunction dir(string) {\n\tvar index = string.lastIndexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n}\n\n/* Turns {dir: {file1: 'value1', file2: 'value2'}}\n * into {dir/file1: 'value1', dir/file2: 'value2'}\n */\nfunction flatten(set) {\n\tvar signatures = Object.create(null);\n\tfor (var outerName in set) {\n\t\tvar setItem = set[outerName];\n\t\tfor (var innerName in setItem) {\n\t\t\tsignatures[outerName + \"/\" + innerName] = setItem[innerName];\n\t\t}\n\t}\n\treturn signatures;\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/whitelist.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/widget.js":{"text":"/*\\\n\nThis is a virtual subclass of context for contexts that exist within widgets\nof a specific tiddler.\n\nAll widget contexts must have a widget member.\n\n\\*/\n\nvar Context = require('./context.js').context;\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nfunction WidgetContext() {};\n\nexports.widget = WidgetContext;\n\nWidgetContext.prototype = new Context();\n\nWidgetContext.prototype.getMacroDefinition = function(variableName) {\n\t// widget.variables is prototyped, so it looks up into all its parents too\n\treturn this.widget.variables[variableName] || $tw.macros[variableName];\n};\n\nWidgetContext.prototype.addSetting = function(wiki, macroName, parameter, type, sourceTitle) {\n\tthis.macros = this.macros || Object.create(null);\n\tvar macro = this.macros[macroName];\n\ttype = type || utils.getDefaultType(wiki);\n\tif (macro === undefined) {\n\t\tmacro = this.macros[macroName] = Object.create(null);\n\t}\n\tvar handler = utils.getType(type);\n\tif (handler) {\n\t\thandler.source = sourceTitle;\n\t\t// We attach the fields of the defining tiddler for the benefit\n\t\t// of any 3rd party field types that want access to them.\n\t\tvar tiddler = wiki.getTiddler(sourceTitle);\n\t\thandler.fields = tiddler.fields;\n\t\tmacro[parameter] = handler;\n\t}\n};\n\nWidgetContext.prototype.getMacros = function() {\n\tvar signatures = this.parent.getMacros();\n\tif (this.macros) {\n\t\tfor (var macroName in this.macros) {\n\t\t\tvar macro = this.macros[macroName];\n\t\t\tfor (var param in macro) {\n\t\t\t\tsignatures[macroName + \"/\" + param] = macro[param];\n\t\t\t}\n\t\t}\n\t}\n\treturn signatures;\n};\n\n/**This does strange handling because it's possible for a macro to have\n * its individual parameters whitelisted in separate places.\n * Don't know WHY someone would do this, but it can happen.\n */\nWidgetContext.prototype.getMacro = function(macroName) {\n\tvar theseSettings = this.macros && this.macros[macroName];\n\tvar parentSettings;\n\tif (this.parent) {\n\t\tparentSettings = this.parent.getMacro(macroName);\n\t}\n\tif (theseSettings && parentSettings) {\n\t\t// gotta merge them without changing either. This is expensive,\n\t\t// but it'll happen rarely.\n\t\tvar rtnSettings = $tw.utils.extend(Object.create(null), theseSettings, parentSettings);\n\t\treturn rtnSettings;\n\t}\n\treturn theseSettings || parentSettings;\n};\n\n/**Returns the deepest descendant of the given widget.\n */\nWidgetContext.prototype.getBottom = function(widget) {\n\twhile (widget.children.length > 0) {\n\t\twidget = widget.children[0];\n\t}\n\treturn widget;\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/widget.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/wikitext.js":{"text":"/*\\\n\nContext for wikitext. It can contain rules about what's allowed in this\ncurrent layer of wikitext.\n\n\\*/\n\nvar WidgetContext = require('./widget.js').widget;\n\nfunction WikitextContext(parentContext) {\n\tthis.parent = parentContext;\n\tthis.widget = parentContext.widget;\n};\n\nexports.wikitext = WikitextContext;\n\nWikitextContext.prototype = new WidgetContext();\n\n// Unless this specific context has rules about it, widgets and prettyLInks are allowed.\nWikitextContext.prototype.allowWidgets = enabled;\nWikitextContext.prototype.allowPrettylinks = enabled;\n\nfunction enabled() { return true; };\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/wikitext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/backupIndexer.js":{"text":"/*\\\nmodule-type: library\n\nThis is a backup indexer Relink uses if the real one is disabled, or we're\n [\"string\", ...]\n */\n\nEntryNode.newType = function() {\n\treturn EntryNode;\n};\n\nEntryNode.prototype.add = function(entry) {\n\tthis.children.push(entry);\n};\n\nfunction EntryCollection() {\n\tthis.children = Object.create(null);\n\tthis.types = Object.create(null);\n};\n\nEntryNode.newCollection = function(name) {\n\treturn EntryCollection;\n};\n\n// Again. I reiterate. Don't use this. All this is just legacy support.\nObject.defineProperty(EntryCollection, 'impossible', {\n\tget: function() {\n\t\tvar imp = this._impossible;\n\t\tthis.eachChild(function(child) { imp = imp || child.impossible; });\n\t\treturn imp;\n\t},\n\tset: function(impossible) {\n\t\tthis._impossible = true;\n\t}\n});\n\nEntryCollection.prototype.eachChild = function(method) {\n\tfor (var child in this.children) {\n\t\tmethod(this.children[child]);\n\t}\n};\n\nEntryCollection.prototype.addChild = function(child, name, type) {\n\tthis.children[name] = child;\n\tthis.types[name] = type;\n};\n\nEntryCollection.prototype.hasChildren = function() {\n\treturn Object.keys(this.children).length > 0;\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils/entry.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/placeholder.js":{"text":"/*\\\n\nA method which doles out placeholders when requested, and constructs\nthe necessary supporting pragma when requested.\n\n\\*/\n\nvar utils = require('../utils');\n\nfunction Placeholder() {\n\tthis.placeholders = Object.create(null);\n\tthis.reverseMap = {};\n\tthis.used = Object.create(null);\n};\n\nmodule.exports = Placeholder;\n\nPlaceholder.prototype.getPlaceholderFor = function(value, category) {\n\tthis.reverseMap[category] = this.reverseMap[category] || Object.create(null);\n\tvar placeholder = this.reverseMap[category][value];\n\tif (placeholder) {\n\t\treturn placeholder;\n\t}\n\tvar config = (this.parser && this.parser.context) || utils.getWikiContext(this.parser.wiki);\n\tvar number = 0;\n\tvar prefix = \"relink-\"\n\tif (category && category !== \"title\") {\n\t\t// I don't like \"relink-title-1\". \"relink-1\" should be for\n\t\t// titles. lists, and filters can have descriptors though.\n\t\tprefix += category + \"-\";\n\t}\n\tdo {\n\t\tnumber += 1;\n\t\tplaceholder = prefix + number;\n\t} while (config.getMacroDefinition(placeholder) || this.used[placeholder]);\n\tthis.placeholders[placeholder] = value;\n\tthis.reverseMap[category][value] = placeholder;\n\tthis.used[placeholder] = true;\n\treturn placeholder;\n};\n\n// For registering placeholders that already existed\nPlaceholder.prototype.registerExisting = function(key, value) {\n\tthis.reverseMap[value] = key;\n\tthis.used[key] = true;\n};\n\nPlaceholder.prototype.getPreamble = function() {\n\tvar results = [];\n\tvar keys = Object.keys(this.placeholders);\n\tif (keys.length > 0) {\n\t\tkeys.sort();\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tvar name = keys[i];\n\t\t\tvar val = this.placeholders[name];\n\t\t\tresults.push(\"\\\\define \"+name+\"() \"+val+\"\\n\");\n\t\t}\n\t}\n\treturn results.join('');\n};\n\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils/placeholder.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/rebuilder.js":{"text":"/*\\\n\nThis helper class aids in reconstructing an existing string with new parts.\n\n\\*/\n\nfunction Rebuilder(text, start) {\n\tthis.text = text;\n\tthis.index = start || 0;\n\tthis.pieces = [];\n};\n\nmodule.exports = Rebuilder;\n\n/**Pieces must be added consecutively.\n * Start and end are the indices in the old string specifying where to graft\n * in the new piece.\n */\nRebuilder.prototype.add = function(value, start, end) {\n\tthis.pieces.push(this.text.substring(this.index, start), value);\n\tthis.index = end;\n};\n\nRebuilder.prototype.changed = function() {\n\treturn this.pieces.length > 0;\n};\n\nRebuilder.prototype.results = function(end) {\n\tif (this.changed()) {\n\t\tthis.pieces.push(this.text.substring(this.index, end));\n\t\treturn this.pieces.join('');\n\t}\n\treturn undefined;\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils/rebuilder.js","type":"application/javascript"},"$:/config/flibbles/relink/attributes/$button/actions":{"title":"$:/config/flibbles/relink/attributes/$button/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$button/set":{"title":"$:/config/flibbles/relink/attributes/$button/set","text":"reference"},"$:/config/flibbles/relink/attributes/$button/setTo":{"title":"$:/config/flibbles/relink/attributes/$button/setTo","text":"title"},"$:/config/flibbles/relink/attributes/$button/to":{"title":"$:/config/flibbles/relink/attributes/$button/to","text":"title"},"$:/config/flibbles/relink/attributes/$checkbox/actions":{"title":"$:/config/flibbles/relink/attributes/$checkbox/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$checkbox/checkactions":{"title":"$:/config/flibbles/relink/attributes/$checkbox/checkactions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$checkbox/tiddler":{"title":"$:/config/flibbles/relink/attributes/$checkbox/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$checkbox/tag":{"title":"$:/config/flibbles/relink/attributes/$checkbox/tag","text":"title"},"$:/config/flibbles/relink/attributes/$checkbox/uncheckactions":{"title":"$:/config/flibbles/relink/attributes/$checkbox/uncheckactions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$count/filter":{"title":"$:/config/flibbles/relink/attributes/$count/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$draggable/tiddler":{"title":"$:/config/flibbles/relink/attributes/$draggable/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$draggable/filter":{"title":"$:/config/flibbles/relink/attributes/$draggable/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$droppable/actions":{"title":"$:/config/flibbles/relink/attributes/$droppable/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$dropzone/actions":{"title":"$:/config/flibbles/relink/attributes/$dropzone/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler":{"title":"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$edit-text/tiddler":{"title":"$:/config/flibbles/relink/attributes/$edit-text/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$edit/tiddler":{"title":"$:/config/flibbles/relink/attributes/$edit/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$encrypt/filter":{"title":"$:/config/flibbles/relink/attributes/$encrypt/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler":{"title":"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$fields/tiddler":{"title":"$:/config/flibbles/relink/attributes/$fields/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$image/source":{"title":"$:/config/flibbles/relink/attributes/$image/source","text":"title"},"$:/config/flibbles/relink/attributes/$importvariables/filter":{"title":"$:/config/flibbles/relink/attributes/$importvariables/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$keyboard/actions":{"title":"$:/config/flibbles/relink/attributes/$keyboard/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$linkcatcher/to":{"title":"$:/config/flibbles/relink/attributes/$linkcatcher/to","text":"title"},"$:/config/flibbles/relink/attributes/$linkcatcher/set":{"title":"$:/config/flibbles/relink/attributes/$linkcatcher/set","text":"title"},"$:/config/flibbles/relink/attributes/$link/to":{"title":"$:/config/flibbles/relink/attributes/$link/to","text":"title"},"$:/config/flibbles/relink/attributes/$link/tooltip":{"title":"$:/config/flibbles/relink/attributes/$link/tooltip","text":"wikitext"},"$:/config/flibbles/relink/attributes/$linkcatcher/actions":{"title":"$:/config/flibbles/relink/attributes/$linkcatcher/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$list/filter":{"title":"$:/config/flibbles/relink/attributes/$list/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$list/template":{"title":"$:/config/flibbles/relink/attributes/$list/template","text":"title"},"$:/config/flibbles/relink/attributes/$list/editTemplate":{"title":"$:/config/flibbles/relink/attributes/$list/editTemplate","text":"title"},"$:/config/flibbles/relink/attributes/$list/emptyMessage":{"title":"$:/config/flibbles/relink/attributes/$list/emptyMessage","text":"wikitext"},"$:/config/flibbles/relink/attributes/$list/history":{"title":"$:/config/flibbles/relink/attributes/$list/history","text":"title"},"$:/config/flibbles/relink/attributes/$messagecatcher/actions":{"title":"$:/config/flibbles/relink/attributes/$messagecatcher/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$navigator/story":{"title":"$:/config/flibbles/relink/attributes/$navigator/story","text":"title"},"$:/config/flibbles/relink/attributes/$navigator/history":{"title":"$:/config/flibbles/relink/attributes/$navigator/history","text":"title"},"$:/config/flibbles/relink/attributes/$radio/actions":{"title":"$:/config/flibbles/relink/attributes/$radio/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$radio/tiddler":{"title":"$:/config/flibbles/relink/attributes/$radio/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$range/actions":{"title":"$:/config/flibbles/relink/attributes/$range/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$range/actionsStart":{"title":"$:/config/flibbles/relink/attributes/$range/actionsStart","text":"wikitext"},"$:/config/flibbles/relink/attributes/$range/actionsStop":{"title":"$:/config/flibbles/relink/attributes/$range/actionsStop","text":"wikitext"},"$:/config/flibbles/relink/attributes/$range/tiddler":{"title":"$:/config/flibbles/relink/attributes/$range/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$reveal/state":{"title":"$:/config/flibbles/relink/attributes/$reveal/state","text":"reference"},"$:/config/flibbles/relink/attributes/$reveal/stateTitle":{"title":"$:/config/flibbles/relink/attributes/$reveal/stateTitle","text":"title"},"$:/config/flibbles/relink/attributes/$select/actions":{"title":"$:/config/flibbles/relink/attributes/$select/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$select/tiddler":{"title":"$:/config/flibbles/relink/attributes/$select/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$setvariable/tiddler":{"title":"$:/config/flibbles/relink/attributes/$setvariable/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$setvariable/subtiddler":{"title":"$:/config/flibbles/relink/attributes/$setvariable/subtiddler","text":"title"},"$:/config/flibbles/relink/attributes/$setvariable/filter":{"title":"$:/config/flibbles/relink/attributes/$setvariable/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$set/tiddler":{"title":"$:/config/flibbles/relink/attributes/$set/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$set/subtiddler":{"title":"$:/config/flibbles/relink/attributes/$set/subtiddler","text":"title"},"$:/config/flibbles/relink/attributes/$set/filter":{"title":"$:/config/flibbles/relink/attributes/$set/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$tiddler/tiddler":{"title":"$:/config/flibbles/relink/attributes/$tiddler/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$transclude/tiddler":{"title":"$:/config/flibbles/relink/attributes/$transclude/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$transclude/subtiddler":{"title":"$:/config/flibbles/relink/attributes/$transclude/subtiddler","text":"title"},"$:/config/flibbles/relink/attributes/$view/tiddler":{"title":"$:/config/flibbles/relink/attributes/$view/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$view/subtiddler":{"title":"$:/config/flibbles/relink/attributes/$view/subtiddler","text":"title"},"$:/config/flibbles/relink/attributes/$wikify/text":{"title":"$:/config/flibbles/relink/attributes/$wikify/text","text":"wikitext"},"$:/plugins/flibbles/relink/configuration":{"title":"$:/plugins/flibbles/relink/configuration","text":"/whitespace trim\n
\n<>\n
\n"},"$:/config/flibbles/relink/fields/caption":{"title":"$:/config/flibbles/relink/fields/caption","text":"wikitext"},"$:/config/flibbles/relink/fields/filter":{"title":"$:/config/flibbles/relink/fields/filter","text":"filter"},"$:/config/flibbles/relink/fields/list":{"title":"$:/config/flibbles/relink/fields/list","text":"list"},"$:/config/flibbles/relink/fields/list-after":{"title":"$:/config/flibbles/relink/fields/list-after","text":"title"},"$:/config/flibbles/relink/fields/list-before":{"title":"$:/config/flibbles/relink/fields/list-before","text":"title"},"$:/config/flibbles/relink/fields/tags":{"title":"$:/config/flibbles/relink/fields/tags","text":"list"},"$:/plugins/flibbles/relink/language/Buttons/Delete/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/Delete/Hint","text":"delete"},"$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint","text":"go to defining tiddler"},"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint","text":"Specify a new widget/element attribute to be updated whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption","text":"add"},"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint","text":"Specify a new field to be updated whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption","text":"add"},"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint","text":"Specify a new filter operator to be considered whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption","text":"add"},"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint","text":"Specify a new macro parameter to be updated whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption","text":"add"},"$:/plugins/flibbles/relink/language/Error/InvalidAttributeName":{"title":"$:/plugins/flibbles/relink/language/Error/InvalidAttributeName","text":"Illegal characters in attribute name \"<$text text=<>/>\". Attributes cannot contain slashes ('/'), closing angle or square brackets ('>' or ']'), quotes or apostrophes ('\"' or \"'\"), equals ('='), or whitespace"},"$:/plugins/flibbles/relink/language/Error/InvalidElementName":{"title":"$:/plugins/flibbles/relink/language/Error/InvalidElementName","text":"Illegal characters in element/widget name \"<$text text=<>/>\". Element tags can only contain letters and the characters hyphen (`-`) and dollar sign (`$`)"},"$:/plugins/flibbles/relink/language/Error/InvalidMacroName":{"title":"$:/plugins/flibbles/relink/language/Error/InvalidMacroName","text":"Illegal characters in macro name \"<$text text=<>/>\". Macros cannot contain whitespace"},"$:/plugins/flibbles/relink/language/Error/InvalidParameterName":{"title":"$:/plugins/flibbles/relink/language/Error/InvalidParameterName","text":"Illegal characters in parameter name \"<$text text=<>/>\". Parameters can only contain letters, digits, and the characters underscore (`_`) and hyphen (`-`)"},"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator":{"title":"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator","text":"Filter Error: Unknown suffix for the 'relink' filter operator"},"$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks":{"title":"$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks","text":"Relink could not update '<>' to '<>' inside the following tiddlers:"},"$:/plugins/flibbles/relink/language/Error/UnrecognizedType":{"title":"$:/plugins/flibbles/relink/language/Error/UnrecognizedType","text":"Relink parse error: Unrecognized field type '<>'"},"$:/plugins/flibbles/relink/language/Help/Attributes":{"title":"$:/plugins/flibbles/relink/language/Help/Attributes","text":"See the Attributes documentation page for details."},"$:/plugins/flibbles/relink/language/Help/Fields":{"title":"$:/plugins/flibbles/relink/language/Help/Fields","text":"See the Fields documentation page for details."},"$:/plugins/flibbles/relink/language/Help/Macros":{"title":"$:/plugins/flibbles/relink/language/Help/Macros","text":"See the Macros documentation page for details."},"$:/plugins/flibbles/relink/language/Help/Operators":{"title":"$:/plugins/flibbles/relink/language/Help/Operators","text":"See the Operators documentation page for details."},"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty":{"title":"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty","text":"No tiddlers contain any fields, links, macros, transclusions, or widgets referencing this one"},"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description":{"title":"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description","text":"The following tiddlers contain fields, links, macros, transclusions, or widgets referencing this one:"},"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption":{"title":"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption","text":"//Relink// References"},"$:/plugins/flibbles/relink/language/ui/Attributes/Caption":{"title":"$:/plugins/flibbles/relink/language/ui/Attributes/Caption","text":"Attributes"},"$:/plugins/flibbles/relink/language/ui/Fields/Caption":{"title":"$:/plugins/flibbles/relink/language/ui/Fields/Caption","text":"Fields"},"$:/plugins/flibbles/relink/language/ui/Macros/Caption":{"title":"$:/plugins/flibbles/relink/language/ui/Macros/Caption","text":"Macros"},"$:/plugins/flibbles/relink/language/ui/Operators/Caption":{"title":"$:/plugins/flibbles/relink/language/ui/Operators/Caption","text":"Operators"},"$:/plugins/flibbles/relink/language/Warning/OldRelinkTextOperator":{"title":"$:/plugins/flibbles/relink/language/Warning/OldRelinkTextOperator","text":"Relink cannot parse your $$$<> wikitext until you migrate your \"<>\" relink module from the deprecated ''relinktextoperator'' module-type to ''relinktext''.

See the online documentation for details."},"$:/plugins/flibbles/relink/license":{"title":"$:/plugins/flibbles/relink/license","type":"text/vnd.tiddlywiki","text":"Relink Plugin Copyright (c) 2019-<> Cameron Fischer\n\n[[BSD 3-Clause License|https://raw.githubusercontent.com/flibbles/tw5-relink/master/LICENSE]]\n"},"$:/config/flibbles/relink/macros/csvtiddlers/filter":{"title":"$:/config/flibbles/relink/macros/csvtiddlers/filter","text":"filter"},"$:/config/flibbles/relink/macros/datauri/title":{"title":"$:/config/flibbles/relink/macros/datauri/title","text":"title"},"$:/config/flibbles/relink/macros/jsontiddler/title":{"title":"$:/config/flibbles/relink/macros/jsontiddler/title","text":"title"},"$:/config/flibbles/relink/macros/jsontiddlers/filter":{"title":"$:/config/flibbles/relink/macros/jsontiddlers/filter","text":"filter"},"$:/config/flibbles/relink/macros/list-links/filter":{"title":"$:/config/flibbles/relink/macros/list-links/filter","text":"filter"},"$:/config/flibbles/relink/macros/list-links-draggable/tiddler":{"title":"$:/config/flibbles/relink/macros/list-links-draggable/tiddler","text":"title"},"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate":{"title":"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate","text":"title"},"$:/config/flibbles/relink/macros/list-tagged-draggable/tag":{"title":"$:/config/flibbles/relink/macros/list-tagged-draggable/tag","text":"title"},"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate":{"title":"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate","text":"title"},"$:/config/flibbles/relink/macros/tabs/buttonTemplate":{"title":"$:/config/flibbles/relink/macros/tabs/buttonTemplate","text":"title"},"$:/config/flibbles/relink/macros/tabs/default":{"title":"$:/config/flibbles/relink/macros/tabs/default","text":"title"},"$:/config/flibbles/relink/macros/tabs/tabsList":{"title":"$:/config/flibbles/relink/macros/tabs/tabsList","text":"filter"},"$:/config/flibbles/relink/macros/tabs/template":{"title":"$:/config/flibbles/relink/macros/tabs/template","text":"title"},"$:/config/flibbles/relink/macros/tag/tag":{"title":"$:/config/flibbles/relink/macros/tag/tag","text":"title"},"$:/config/flibbles/relink/macros/tag-pill/tag":{"title":"$:/config/flibbles/relink/macros/tag-pill/tag","text":"title"},"$:/config/flibbles/relink/macros/timeline/subfilter":{"title":"$:/config/flibbles/relink/macros/timeline/subfilter","text":"filter"},"$:/config/flibbles/relink/macros/toc/tag":{"title":"$:/config/flibbles/relink/macros/toc/tag","text":"title"},"$:/config/flibbles/relink/macros/toc/itemClassFilter":{"title":"$:/config/flibbles/relink/macros/toc/itemClassFilter","text":"filter"},"$:/config/flibbles/relink/macros/toc-expandable/tag":{"title":"$:/config/flibbles/relink/macros/toc-expandable/tag","text":"title"},"$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter":{"title":"$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter","text":"filter"},"$:/config/flibbles/relink/macros/toc-expandable/exclude":{"title":"$:/config/flibbles/relink/macros/toc-expandable/exclude","text":"list"},"$:/config/flibbles/relink/macros/toc-selective-expandable/tag":{"title":"$:/config/flibbles/relink/macros/toc-selective-expandable/tag","text":"title"},"$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter":{"title":"$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter","text":"filter"},"$:/config/flibbles/relink/macros/toc-selective-expandable/exclude":{"title":"$:/config/flibbles/relink/macros/toc-selective-expandable/exclude","text":"list"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText","text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText","text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText","text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText","text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template","text":"title"},"$:/config/flibbles/relink/operators/list":{"title":"$:/config/flibbles/relink/operators/list","text":"reference"},"$:/config/flibbles/relink/operators/tag":{"title":"$:/config/flibbles/relink/operators/tag","text":"title"},"$:/config/flibbles/relink/operators/title":{"title":"$:/config/flibbles/relink/operators/title","text":"title"},"$:/config/flibbles/relink/operators/field:title":{"title":"$:/config/flibbles/relink/operators/field:title","text":"title"},"$:/language/EditTemplate/Title/Impossibles/Prompt":{"title":"$:/language/EditTemplate/Title/Impossibles/Prompt","text":"''Warning:'' Not all references in the following tiddlers can be updated by //Relink// due to the complexity of the new title:"},"$:/language/EditTemplate/Title/References/Prompt":{"title":"$:/language/EditTemplate/Title/References/Prompt","text":"The following tiddlers will be updated if relinking:"},"$:/language/EditTemplate/Title/Relink/Prompt":{"title":"$:/language/EditTemplate/Title/Relink/Prompt","text":"Use //Relink// to update ''<$text text=<>/>'' to ''<$text text=<>/>'' across all other tiddlers"},"$:/core/ui/EditTemplate/title":{"title":"$:/core/ui/EditTemplate/title","tags":"$:/tags/EditTemplate","text":"\\whitespace trim\n<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\" tabindex={{$:/config/EditTabIndex}}/>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title]\" variable=\"listItem\">\n\n
\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n
\n\n\n\n\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n
\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n
\n\n\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}\n\n<$tiddler tiddler=<> >\n\n<$list filter=\"[relink:wouldchangelimit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<> >\n\n<$set\n\tname=\"prompt\"\n\tfilter=\"[relink:wouldchangerelink:impossible]\"\n\tvalue=\"EditTemplate/Title/Impossibles/Prompt\"\n\temptyValue=\"EditTemplate/Title/References/Prompt\" >\n<$reveal type=\"nomatch\" state=<> text=\"show\">\n<$button set=<> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n \n<$macrocall $name=lingo title=<> />\n\n\n<$reveal type=\"match\" state=<> text=\"show\">\n<$button set=<> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n \n<$macrocall $name=lingo title=<> />\n\n\n\n\n<$reveal type=\"match\" state=<> text=\"show\">\n<$list variable=\"listItem\" filter=\"[relink:wouldchange!title[$:/StoryList]sort[title]]\" template=\"$:/plugins/flibbles/relink/ui/ListItemTemplate\">\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},"$:/config/flibbles/relink/PluginLibrary":{"title":"$:/config/flibbles/relink/PluginLibrary","caption":"//Relink// Library","url":"https://flibbles.github.io/tw5-relink/library/index.html","tags":"$:/tags/PluginLibrary","text":"The //Relink// library contains //Relink// as well as its supplemental plugins. It is maintained by Flibbles. See the [[github page|https://github.com/flibbles/tw5-relink]] for more information.\n"},"$:/plugins/flibbles/relink/readme":{"title":"$:/plugins/flibbles/relink/readme","type":"text/vnd.tiddlywiki","text":"When renaming a tiddler, Relink can update the fields, filters, and widgets\nof all other tiddlers. However, it works through whitelisting.\n\nIt's already configured to update tiddler titles for all core widgets, filters,\nand fields, but the whitelists can be customized for each of this in the\nconfiguration panel.\n\nSee the tw5-relink website for more details and examples.\n"},"$:/config/flibbles/relink/settings/default-type":{"title":"$:/config/flibbles/relink/settings/default-type","text":"title"},"$:/config/flibbles/relink/touch-modify":{"title":"$:/config/flibbles/relink/touch-modify","text":"yes"},"$:/config/DefaultColourMappings/relink-impossible":{"title":"$:/config/DefaultColourMappings/relink-impossible","text":"<>"},"$:/language/Docs/PaletteColours/relink-impossible":{"title":"$:/language/Docs/PaletteColours/relink-impossible","text":"Relink link impossible"},"$:/plugins/flibbles/relink/ui/ListItemTemplate":{"title":"$:/plugins/flibbles/relink/ui/ListItemTemplate","text":"\\whitespace trim\n<$set\n\tname=\"classes\"\n\tfilter=\"[relink:impossible]\"\n\tvalue=\"tc-menu-list-item tc-relink-impossible\"\n\temptyValue=\"tc-menu-list-item\">\n
>>\n<$link to=<>><$text text=<> />\n
\n\n"},"$:/plugins/flibbles/relink/ui/TiddlerInfo/References":{"title":"$:/plugins/flibbles/relink/ui/TiddlerInfo/References","caption":"{{$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption}}","tags":"$:/tags/TiddlerInfo","text":"\\define lingo-base() $:/plugins/flibbles/relink/language/TiddlerInfo/\n\\define filter() [all[current]relink:backreferences[]!title[$:/StoryList]!prefix[$:/temp/]sort[title]]\n\\whitespace trim\n<$list filter=\"[subfilterfirst[]]\">\n<>\n\n\n\n<$list filter=<> emptyMessage=<> variable=\"listItem\" template=\"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate\" />\n\n\n"},"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate":{"title":"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate","text":"\\whitespace trim\n\n\n<$link to=<>/>\n\n\n<$list filter=\"[relink:report]\">\n\n<$text text=<> />\n\n\n\n\n"},"$:/plugins/flibbles/relink/ui/components/button-delete":{"title":"$:/plugins/flibbles/relink/ui/components/button-delete","text":"\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define prefix() $:/config/flibbles/relink/\n\\whitespace trim\n\n<$list\n\tfilter=\"[all[current]prefix]\"\n\temptyMessage=\"<$link><$button class='tc-btn-invisible' tooltip={{$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint}}>{{$:/core/images/link}}\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/plugins/flibbles/relink/language/Buttons/Delete/Hint}}><$list filter=\"[all[current]is[tiddler]]\">\n<$action-deletetiddler $tiddler=<> />\n<$list filter=\"[all[current]is[shadow]]\">\n<$action-setfield $tiddler=<> text=\"\" />\n\n{{$:/core/images/delete-button}}\n\n\n"},"$:/plugins/flibbles/relink/ui/components/select-fieldtype":{"title":"$:/plugins/flibbles/relink/ui/components/select-fieldtype","text":"\\define prefix() $:/config/flibbles/relink/\n\\whitespace trim\n\n<$vars type={{{ [relink:type[]] }}} >\n<$list filter=\"[all[current]prefix]\" >\n<$select tiddler=<> >\n<$list variable=\"option\" filter=\"[relink:types[]]\">\n\n\n\n<$list filter=\"[all[current]!prefix]\">\n<$text text=<> />\n\n\n"},"$:/plugins/flibbles/relink/ui/components/tables":{"title":"$:/plugins/flibbles/relink/ui/components/tables","text":"\\define .make-table(title, plugin, default-table-state:yes)\n\\whitespace trim\n\n<$list variable=\"render\" filter=\"[relink:signatures<__plugin__>prefix<__category__>first[]]\">\n<$set name=\"table-state\" value=<>>\n> >\n<$reveal type=\"nomatch\" state=<> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<> setTo=\"yes\">\n{{$:/core/images/right-arrow}} ''<$text text=\"\"\"$title$\"\"\"/>''\n\n\n<$reveal type=\"match\" state=<> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<> setTo=\"no\">\n{{$:/core/images/down-arrow}} ''<$text text=\"\"\"$title$\"\"\"/>''\n\n\n\n<$list\n\tvariable=\"signature\"\n\tfilter=\"[relink:signatures<__plugin__>prefix<__category__>sort[]]\">\n<$vars key={{{ [removeprefix<__category__>removeprefix[/]] }}} >\n<$tiddler tiddler={{{[relink:source[]]}}} >\n<$reveal tag=\"tr\" type=\"match\" state=<> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$macrocall $name=<<__list-row-macro__>> signature=<> />\n{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}\n{{||$:/plugins/flibbles/relink/ui/components/button-delete}}\n\n\n\n\n\n\n\\end\n\n\\define tables(category, list-row-macro, header-list)\n\\whitespace trim\n<$vars\n\tcolumn-count={{{[enlist<__header-list__>] [[DeleteColumn]] +[count[]]}}}>\n\n\n<$list variable=\"header\" filter=\"[enlist<__header-list__>butlast[]]\">\n\n\n\n<<.make-table Custom \"\" yes>>\n\n<$list\n\tfilter=\"[plugin-type[plugin]![$:/core]![$:/plugins/flibbles/relink]]\">\n<$set name=\"subtitle\" value={{!!description}} emptyValue={{!!title}} >\n<$macrocall $name=\".make-table\" title=<> plugin=<> />\n\n\n<<.make-table Core \"$:/plugins/flibbles/relink\">>\n\n\n\n\\end\n"},"$:/plugins/flibbles/relink/ui/configuration/Attributes":{"title":"$:/plugins/flibbles/relink/ui/configuration/Attributes","caption":"{{$:/plugins/flibbles/relink/language/ui/Attributes/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-attr() $:/config/flibbles/relink/attributes/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define element-name-tiddler() $:/state/flibbles/relink/element-name\n\\define attribute-name-tiddler() $:/state/flibbles/relink/attribute-name\n\n\\define row()\n\\whitespace trim\n<$set name='element'\n value={{{[splitbefore[/]removesuffix[/]]}}}>\n<$set name=\"attribute\"\n value={{{[removeprefixremoveprefix[/]]}}}>\n<$text text=<> />\n<$text text=<> />\n\n\\end\n\\define body()\n\\whitespace trim\n\nAdd a new attribute:\n \n<$edit-text\n\ttiddler=<>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"widget/element\" />\n \n<$edit-text\n\ttiddler=<>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"attribute\" />\n \n<$reveal type=\"nomatch\" text=\"\" state=<> >\n<$reveal type=\"nomatch\" text=\"\" state=<> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewAttribute/Hint}}\n\taria-label={{$(lingo-base)$NewAttribute/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-attribute\"\n\telement={{$(element-name-tiddler)$}}\n\tattribute={{$(attribute-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<> />\n<$action-deletetiddler $tiddler=<> />\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n\n\n\n<$reveal type=\"match\" text=\"\" state=<> >\n<$button>\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n\n\n\n<$reveal type=\"match\" text=\"\" state=<> >\n<$button>\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"attributes\"\n\theader-list=\"[[Widget/HTML Element]] Attribute Type\"\n\tlist-row-macro=\"row\" />\n\\end\n\n{{$:/plugins/flibbles/relink/language/Help/Attributes}}\n\n<>\n"},"$:/plugins/flibbles/relink/ui/configuration/Fields":{"title":"$:/plugins/flibbles/relink/ui/configuration/Fields","caption":"{{$:/plugins/flibbles/relink/language/ui/Fields/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define field-name-tiddler() $:/state/flibbles/relink/field-name\n\n\\define row()\n<$text text=<> />\n\\end\n\n\\define body()\n\\whitespace trim\n\nAdd a new field:\n \n<$edit-text\n\ttiddler=<>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"field name\" />\n \n<$reveal type=\"nomatch\" text=\"\" state=<> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewField/Hint}}\n\taria-label={{$(lingo-base)$NewField/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-field\"\n\tfield={{$(field-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<> />\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n\n\n\n<$reveal type=\"match\" text=\"\" state=<> >\n<$button>\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"fields\"\n\theader-list=\"[[Field Name]] [[Field Type]]\"\n\tlist-row-macro=\"row\" />\n\\end\n\n{{$:/plugins/flibbles/relink/language/Help/Fields}}\n\n<>\n"},"$:/plugins/flibbles/relink/ui/configuration/Macros":{"title":"$:/plugins/flibbles/relink/ui/configuration/Macros","caption":"{{$:/plugins/flibbles/relink/language/ui/Macros/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-macro() $:/config/flibbles/relink/macros/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define macro-name-tiddler() $:/state/flibbles/relink/macro-name\n\\define parameter-name-tiddler() $:/state/flibbles/relink/parameter-name\n\n\\define row()\n\\whitespace trim\n<$set name=\"parameter\"\n value={{{[relink:splitafter[/]]}}}>\n<$set name='macro'\n value={{{[removesuffixremovesuffix[/]]}}}>\n<$text text=<> />\n<$text text=<> />\n\n\\end\n\n\\define body()\n\\whitespace trim\n\nAdd a new macro parameter:\n \n<$edit-text\n\ttiddler=<>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"macro\" />\n \n<$edit-text\n\ttiddler=<>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"parameter\" />\n \n<$reveal type=\"nomatch\" text=\"\" state=<> >\n<$reveal type=\"nomatch\" text=\"\" state=<> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewParameter/Hint}}\n\taria-label={{$(lingo-base)$NewParameter/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-parameter\"\n\tmacro={{$(macro-name-tiddler)$}}\n\tparameter={{$(parameter-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<> />\n<$action-deletetiddler $tiddler=<> />\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n\n\n\n<$reveal type=\"match\" text=\"\" state=<> >\n<$button>\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n\n\n\n<$reveal type=\"match\" text=\"\" state=<> >\n<$button>\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"macros\"\n\theader-list=\"Macro Parameter Type\"\n\tlist-row-macro=\"row\" />\n\\end\n\n{{$:/plugins/flibbles/relink/language/Help/Macros}}\n\n<>\n"},"$:/plugins/flibbles/relink/ui/configuration/Operators":{"title":"$:/plugins/flibbles/relink/ui/configuration/Operators","caption":"{{$:/plugins/flibbles/relink/language/ui/Operators/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define operator-name-tiddler() $:/state/flibbles/relink/operator-name\n\n\\define row()\n<$text text=<> />\n\\end\n\n\\define body()\n\\whitespace trim\n\nAdd a new filter operator:\n \n<$edit-text\n\ttiddler=<>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"operator name\" />\n \n<$reveal type=\"nomatch\" text=\"\" state=<>>\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewOperator/Hint}}\n\taria-label={{$(lingo-base)$NewOperator/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-operator\"\n\toperator={{$(operator-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<> />\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n\n\n\n<$reveal type=\"match\" text=\"\" state=<>>\n<$button>\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"operators\"\n\theader-list=\"[[Filter Operator]] [[Operand Type]]\"\n\tlist-row-macro=\"row\" />\n\\end\n\n{{$:/plugins/flibbles/relink/language/Help/Operators}}\n\n<>\n"},"$:/plugins/flibbles/relink/ui/stylesheet.css":{"title":"$:/plugins/flibbles/relink/ui/stylesheet.css","tags":"$:/tags/Stylesheet","text":".tc-relink-references {\n}\n\n.tc-relink-references-table {\n\twidth: 100%;\n\tborder: none;\n}\n\n.tc-relink-references-table td {\n\tborder-left: none;\n}\n\n.tc-relink-references-table tr:first-child td {\n\tborder-top: none;\n}\n\n.tc-relink-references-title {\n\ttext-align: left;\n\tvertical-align: top;\n}\n\n.tc-relink-references-occurrence {\n\tfont-style: italic;\n\ttext-align: left;\n\tfont-weight: 200;\n\tpadding-left: 25px;\n\tvertical-align: top;\n}\n\n.tc-relink-header-plugin {\n\ttext-align: left;\n}\n\n.tc-relink-header-plugin button {\n\twidth: 100%\n}\n\n.tc-relink-column-type {\n\twidth: 8em;\n}\n\n.tc-relink-column-type select {\n\twidth: 100%;\n}\n\n.tc-relink-column-delete {\n\tborder-left: none;\n\ttext-align: left;\n}\n\n.tc-relink-column-delete button {\n\tpadding-left: 1em;\n}\n\n.tc-relink-impossible a.tc-tiddlylink {\n\tcolor: <>;\n}\n"}}} \ No newline at end of file diff --git a/tiddlers/$__plugins_flibbles_relink.json.meta b/tiddlers/$__plugins_flibbles_relink.json.meta index 8aef5e6..a971c47 100644 --- a/tiddlers/$__plugins_flibbles_relink.json.meta +++ b/tiddlers/$__plugins_flibbles_relink.json.meta @@ -9,4 +9,4 @@ plugin-type: plugin source: https://github.com/flibbles/tw5-relink title: $:/plugins/flibbles/relink type: application/json -version: 2.1.2 \ No newline at end of file +version: 2.1.3 \ No newline at end of file diff --git a/tiddlers/$__plugins_kookma_refnotes.json b/tiddlers/$__plugins_kookma_refnotes.json index 07e2c1a..8b31055 100644 --- a/tiddlers/$__plugins_kookma_refnotes.json +++ b/tiddlers/$__plugins_kookma_refnotes.json @@ -1 +1 @@ -{"tiddlers":{"$:/plugins/kookma/refnotes/history":{"title":"$:/plugins/kookma/refnotes/history","created":"20201211095732935","modified":"20210918162309893","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-Refnotes/#ChangeLog\n\n* ''1.7.2'' -- 2021.09.19 -- stable release based on TW 5.2.0\n* ''1.6.0'' -- 2021.04.02 -- development (beta) of new release\n* ''1.0.3'' -- 2019.03.20 -- first stable release\n"},"$:/plugins/kookma/refnotes/license":{"title":"$:/plugins/kookma/refnotes/license","created":"20201211095732937","modified":"20210917161905837","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2019-2021 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/refnotes/macros/abbr":{"title":"$:/plugins/kookma/refnotes/macros/abbr","created":"20181022071907838","modified":"20210917161905845","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define abbr(term:\"\", dict:\"Glossary\")\n<$set name=\"abbreviation\" \n tiddler=<<__dict__>>\n index=<<__term__>>\n emptyValue=\"Term not found\">\n > ><$text text=<<__term__>> />\n\n\\end\n"},"$:/plugins/kookma/refnotes/macros/apa/authors":{"title":"$:/plugins/kookma/refnotes/macros/apa/authors","created":"20210918154536732","modified":"20210918182843051","tags":"","type":"text/vnd.tiddlywiki","text":"\\define show-authors-in-citation()\n\n<$vars number-authors={{{[<__tid__>get[bibtex-author]split[ and ]count[]]}}}>\n<$list filter=\"[compare:number:gt[2]]\" emptyMessage=\"\"\"<$view tiddler=<<__tid__>> field=\"bibtex-author\"/>\"\"\">\n<$text text={{{[<__tid__>get[bibtex-author]split[ and ]first[]addsuffix[, et al.]]}}} />\n\n\n\\end\n\n\\define show-authors-in-references()\n\n\n\\whitespace trim\n<$vars authorlist={{!!bibtex-author}} replace1=\" and \" replace2=\",([^,]*)$\" >\n<$vars authors={{{ [search-replace:g:regexp,[, ]search-replace:g:regexp,[, and $1]]}}} >\n<>\n\n\n\\end\n\n\n\n"},"$:/plugins/kookma/refnotes/macros/apa/ref":{"title":"$:/plugins/kookma/refnotes/macros/apa/ref","created":"20210407044450831","modified":"20210918174611274","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define ref(tid)\n\\import $:/plugins/kookma/refnotes/macros/apa/authors\n\\whitespace trim\n<$set name=\"ref-tid\" tiddler=<<__tid__>> field=\"title\" emptyValue=\"RefNotFound\">\n
\n<$reveal type=\"match\" default=<> text=\"RefNotFound\">\n<$link overrideClass=\"link-refcls\">[<$view tiddler=<<__tid__>> field=\"title\"/>]\n
Warning: Reference Not Found.
Click to create it:<>
\n\n<$reveal type=\"nomatch\" default=<> text=\"RefNotFound\">\n<> (<$view tiddler=<<__tid__>> field=\"bibtex-year\"/>)\n
\n<$macrocall $name=\"displayref-onhover\" refTid=<> />\n
\n\n
\n\n\\end"},"$:/plugins/kookma/refnotes/macros/apa/showrefs":{"title":"$:/plugins/kookma/refnotes/macros/apa/showrefs","created":"20190117195536649","modified":"20210918174611753","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define showrefs(filter:\"[]\", title:\"Empty\", class:\"ref-list\", emptyMessage:\"\")\n\\import $:/plugins/kookma/refnotes/macros/apa/authors\n<$vars leftDelimiter=\"<\n<$list filter=\"[subfilter<__filter__>search:text:literallimit[1]]\" variable=null emptyMessage=<<__emptyMessage__>> >\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n

$title$

\n\n<$wikify name=\"mylist\" text=\"\"\"\n<$list filter=<<__filter__>> >\n<$macrocall $name=\"find-refs\" tid=<> />\n\n\"\"\">\n
    \n<$list filter=\"[enlisttrim[]sort[]]\" variable=\"reference\">\n\n<$vars currentType={{{[get[bibtex-entry-type]lowercase[]] ~[[miscellaneous]]}}} >\n<$set name=\"bodyLookup\" \n filter=\"[all[tiddlers+shadows]tag[$:/tags/Refnotes/ReflistTemplate]contains:list] +[limit[1]get[title]]\"\n value=<> \n emptyValue=\"$:/plugins/kookma/refnotes/templates/reflist/default\">\n<$transclude tiddler=<> field=\"text\" mode=\"inline\"/>\n\n\n\n\n
\n\n\n\n\\end"},"$:/plugins/kookma/refnotes/macros/bibtex/find-refs":{"title":"$:/plugins/kookma/refnotes/macros/bibtex/find-refs","created":"20181213121411187","modified":"20210917161905873","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define find-refs(tid)\n<$vars regexp=\"(?g)<>\"\nregexp2='<>'\nregexp3=\"^'(.*?)'\"\nregexp4=\"\\[\\[(.*?)\\]\\]\"\n>\n<$list filter=\"[[$tid$]regexprefs:text]\">\n<$list filter=\"[all[current]regexprefs]\">\n<$list filter=\"[all[current]regexprefs] ~[all[current]]\" >\n<$list filter=\"[all[current]regexprefs] ~[all[current]]\" variable=p>\n<>\n\n\n\n\n\n\\end\n\n\\define pwrapper() \n[[[[$(p)$]]]]\n\\end"},"$:/plugins/kookma/refnotes/macros/bibtex/process-entries":{"title":"$:/plugins/kookma/refnotes/macros/bibtex/process-entries","created":"20210405065852415","modified":"20210917161905883","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define title-tolowercase()\n<$vars curTitle=<> newTitle={{{[lowercase[]]}}}>\n<$list filter=\"[!match]\" variable=null>\n<$action-sendmessage $message=\"tm-rename-tiddler\" from=<> to=<> />\n\n\n\\end\n\n\\define tag-entries()\n\n<$action-setfield $tiddler=<> bibtex-entry-type={{{[get[bibtex-entry-type]lowercase[]]}}} />\n\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-tag\" $param=\"bibtex-entry\" />\n\n\\end\n\n\\define process-entries(title:\"Process New Bibtex Entries\")\n<$button> $title$\n<$list filter=\"[has[bibtex-title]]\">\n<>\n<>\n\n\n\\end"},"$:/plugins/kookma/refnotes/macros/bibtex/regexprefs.js":{"title":"$:/plugins/kookma/refnotes/macros/bibtex/regexprefs.js","text":"/*\\\ntitle: $:/plugins/kookma/macro/bibtex/regexprefs.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching and returning result. All results are returned if global flag used. All sub-groups are returned if not global and sub-group hits are found.\n\nThis is a hacked version of core macro: $:/core/modules/filters/regexp.js\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexprefs = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match, global,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\n\tglobal = /g/.test(flags) ;\n\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title), ret=\"\";\n\t\t\tif(text !== null) {\n\t\t\t\tret = text.match(regexp) ;\n\t\t\t\tif(ret !==null) {\n\t\t\t\t\tif(global) {\n\t\t\t\t\t\tresults.push.apply(results,ret) ; //DEBUG\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// if there are sub groups return sub groups START\n\t\t\t\t\t\tif(ret.length > 1) { // return sub groups\n\t\t\t\t\t\t\tresults = results.concat(ret.slice(1)) ;\n\t\t\t\t\t\t} else { // if no sub-groups\n\t\t\t\t\t\t\tresults.push(ret[0]);\n\t\t\t\t\t\t} \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();","type":"application/javascript","module-type":"filteroperator","created":"20190120190755258","modified":"20210917161905893"},"$:/plugins/kookma/refnotes/macros/bibtex/utility":{"title":"$:/plugins/kookma/refnotes/macros/bibtex/utility","created":"20210407045329557","modified":"20210917161905902","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define displayref-onhover(refTid)\n<$set name=\"ref-tid\" value=<<__refTid__>> >\n<$link overrideClass=\"link-refcls\" to=<> >\n<$list filter=\"[get[bibtex-entry-type]lowercase[]!match[website]]\" variable=null\nemptyMessage=\"\"\"<$view tiddler=<> field=\"bibtex-url\"/>.\"\"\">\n<$view tiddler=<> field=\"bibtex-author\"/>.\n\n\n<$view tiddler=<> field=\"bibtex-title\"/>. (<$view tiddler=<> field=\"bibtex-year\"/>)\n\n\\end\n\n\\define create-notexisted-ref(refTid)\n<$set name=\"myTid\" value=<<__refTid__>> >\n<$button class=\"tc-btn-invisible tc-tiddlylink\">\n<$action-sendmessage $message=\"tm-new-tiddler\"\n title=<> \n bibtex-author=\"\" bibtex-year=\"\"\n bibtex-title=\"\" bibtex-abstract=\"\"\n bibtex-entry-type=\"\" bibtex-keywords=\"\"\n bibtex-doi=\"\" bibtex-url=\"\"\n tags=\"bibtex-entry\"\n /><> \n\n \n\\end"},"$:/plugins/kookma/refnotes/macros/find":{"title":"$:/plugins/kookma/refnotes/macros/find","created":"20181213121411187","modified":"20211105070807510","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define find(text, begin, end, output:\"simple\", mode:\"all\")\n<$vars \n fulltext=<<__text__>>\n start=<<__begin__>>\n stop=<<__end__>>\n output-macro=<<__output__>>\n>\n<$list variable=p1 filter=\"[splitbefore]\">\n<$list variable=p2 filter=\"[removeprefix]\">\n<$list variable=p3 filter=\"[splitbeforeremovesuffix]\">\n<$macrocall $name=<> p=<> />\n<$reveal type=\"match\" text=\"all\" default=<<__mode__>> >\n<$macrocall $name=\"find\"\n text={{{[removeprefixremoveprefix]}}}\n begin=<>\n end=<>\n output=<>\n/>\n\n\n\n\n\n\\end\n\n\\define simple(p)\n<$text text=<<__p__>> />\n\\end\n\n\\define simple-list(p)\n
  • <$text text=<<__p__>>/>
  • \n\\end\n"},"$:/plugins/kookma/refnotes/macros/footnote":{"title":"$:/plugins/kookma/refnotes/macros/footnote","created":"20181214095749808","modified":"20210917161905912","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define fnote(note)\n
    $note$
    \n\\end"},"$:/plugins/kookma/refnotes/macros/numbered/refnum":{"title":"$:/plugins/kookma/refnotes/macros/numbered/refnum","created":"20181210155346225","modified":"20210917161905920","tags":"disp","type":"text/vnd.tiddlywiki","text":"\\define refnum(tid)\n<$set name=\"ref-tid\" tiddler=<<__tid__>> field=\"title\" emptyValue=\"RefNotFound\">\n
    \n<$reveal type=\"match\" default=<> text=\"RefNotFound\">\n<$link overrideClass=\"link-refcls\">\n[<$view tiddler=<<__tid__>> field=\"title\"/>]\n\n
    Warning: Reference Not Found.
    Click to create it:<>
    \n\n<$reveal type=\"nomatch\" default=<> text=\"RefNotFound\">\n[<$view tiddler=<<__tid__>> field=\"caption\"><$view tiddler=<<__tid__>> field=\"title\"/>]\n
    \n<$macrocall $name=\"displayref-onhover\" refTid=<> />\n
    \n\n
    \n\n\\end\n"},"$:/plugins/kookma/refnotes/macros/search-ui":{"title":"$:/plugins/kookma/refnotes/macros/search-ui","created":"20141231095518178","modified":"20210917161905924","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define searchTid() xx$:/temp/search\n\\define bibtexFields() [!is[shadow]!is[system]has[bibtex-title]fields[]prefix[bibtex-]sort[]]\n\\define mainFields() bibtex-title bibtex-author bibtex-year\n\\define searchUi()\n
    \n<$edit-text tiddler=<> type=\"search\" tag=\"input\" placeholder=\"search terms\" default=\"\"/> <$select field=\"field\" tiddler=<> default=\"bibtex-author\">\n<$set name=allfields filter= \"[subfiltersplit[ ]join[,]]\" >\n\n\n\n<$list filter=\"[enlistremoveprefix[bibtex-]]\" variable=\"field\">\n\n\n\n\n<$list filter=\"[subfilter] -[enlist] +[removeprefix[bibtex-]]\" variable=\"field\">\n\n\n\n\n\n<$reveal state=<> type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=<> text=\"\"/>\n{{$:/core/images/close-button}}\n\n\n
    \n\\end"},"$:/plugins/kookma/refnotes/macros/showabbrs":{"title":"$:/plugins/kookma/refnotes/macros/showabbrs","created":"20210404111656614","modified":"20211106193550015","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define showabbrs(filter:\"[]\", dtiddler:\"Glossary\", title:\"Empty\", emptyMessage:\"\")\n<$wikify name=\"indexes\" text=<> > \n<$macrocall $name=\"abbr-list\" indexes=<> dtiddler=<<__dtiddler__>> title=<<__title__>> emptyMessage=<<__emptyMessage__>> />\n\n\\end\n\n\\define patterndb() \\[\\[|\\]\\]\n\\define pattern() ('.*?'|\".*?\"|\\S+)\n\\define output-item(p)\n<$list filter=\"\"\"[<__p__>search-replace:g:regexp,[\"]]\"\"\" variable=pars>\n<$list filter=\"\"\"[trim[]!prefix[dict:]search-replace[term:],[]splitregexptrim[]!is[blank]!prefix[dict:]first[]]\"\"\">\n<$text text=<>/>\n\n<$list filter=\"\"\"[trim[]prefix[dict:]search-replace[term:],[]splitregexptrim[]!is[blank]!prefix[dict:]last[]]\"\"\">\n<$text text=<>/>\n\n\n\\end\n\n\\define find-all-items()\n<$list filter=<<__filter__>> >\n<$macrocall $name=\"find\" text={{!!text}} begin=\"<>\" output=\"output-item\"/>\n\n\\end\n\n\n\\define abbr-list(dtiddler, indexes, title:\"Empty\", emptyMessage:\"\")\n<$list filter=\"[limit[1]]\" variable=null emptyMessage=<<__emptyMessage__>> >\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n

    <$text text=<<__title__>> />

    \n\n\n<$list filter=\"\"\"[subfilter<__indexes__>]\"\"\" variable=\"item\">\n\n\n\n\n\n
    <$text text=<> />\n <$set name=\"term\" tiddler=<<__dtiddler__>> index=<> emptyValue=<> >\n <>\n \n
    \n\n\\end\n\n\n\\define term-not-found()\nTerm not found\n\\end\n\n\n"},"$:/plugins/kookma/refnotes/macros/showfnotes":{"title":"$:/plugins/kookma/refnotes/macros/showfnotes","created":"20210404111935949","modified":"20210917161905937","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define showfnotes(filter:\"[]\", title:\"Empty\" class:\"fnote-list\", emptyMessage:\"\")\n<$vars leftDelimiter=\"<\n<$list filter=\"[subfilter<__filter__>search:text:literallimit[1]]\" variable=null emptyMessage=<<__emptyMessage__>> >\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n

    $title$

    \n\n
      \n<$list filter=<<__filter__>> >\n<$macrocall $name=\"find\" \n text={{!!text}}\n begin=\"<>\"\n output=\"output-fnote\"\n/>\n\n
    \n\n\n\\end\n\n\\define output-fnote(p)\n<$vars output=$p$>\n
  • <>
  • \n\n\\end\n\n"},"$:/plugins/kookma/refnotes/macros/stretch-text":{"title":"$:/plugins/kookma/refnotes/macros/stretch-text","created":"20210407132815001","modified":"20210917161905943","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define tTemp() xx$:/temp/refnotes/library/$(currentTiddler)$\n\n\\define stretchText(text, title:\"...\")\n<$button class=\"tc-btn-invisible\">$title$\n<$action-listops $tiddler=<> $field=\"text\" $subfilter=\"+[toggle[show]]\" />\n <$reveal type=\"match\" stateTitle=<> sateField=text text=\"show\">$text$\n\\end\n"},"$:/plugins/kookma/refnotes/readme":{"title":"$:/plugins/kookma/refnotes/readme","created":"20201211095732939","modified":"20211107080244453","tags":"","type":"text/vnd.tiddlywiki","text":"; Refnotes\nRefnotes is a Tiddlywiki plugin to create and manage footnotes, abbreviations, citations, and references. Refnotes can create bibliography, but for the best performance, and to use import bibtex entries, the use of the official ''bibtex importer'' plugin is required.\n\n;Code and demo\nFor learning Refnotes features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Refnotes/\n* Code: https://github.com/kookma/TW-Refnotes\n"},"$:/plugins/kookma/refnotes/styles/abbr":{"title":"$:/plugins/kookma/refnotes/styles/abbr","text":"/* Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS3 */ \n.refnotes-abbr abbr[title] {\n\tcolor: inherit;\n\tfont-style: normal;\n\ttext-decoration: none;\n\tborder-bottom: 1px dotted #aaa;\n\tcursor: help;\n}\n\n.refnotes-abbr-term-not-found{\n/*\tcolor:red;*/\n\tfont-style: oblique;\n}\n\n.refnotes-abbr-term{\n/*\tcolor:blue;*/\n}\n\n\n/* Ref:https://aarontgrogg.com/lab/\nShow the title for small screen\n*/ \n/* this works based on the max-width*/\n@media only screen and (max-width: 960px) {\n.refnotes-abbr abbr:hover:after { content: ' ('attr(title)')'; }\n}\n\n@media (hover: none) {\n/* Push the title attribute into generated content after the abbr. */\n.refnotes-abbr abbr[title]::after { \n content: ' ('attr(title)')'; }\n}\n","created":"20181022085407237","modified":"20210917161905961","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/bibtex-details":{"title":"$:/plugins/kookma/refnotes/styles/bibtex-details","text":".refnotes-details > summary{\n\tpadding-left:0;\n\tpadding-top:15px;\n\tpadding-bottom:15px;\n\twidth: 160px;\n\tcursor: pointer;\n\tfont-weight:bold;\n}\n\n","created":"20210405105138630","modified":"20210917161905977","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/bibtex-entryview":{"title":"$:/plugins/kookma/refnotes/styles/bibtex-entryview","text":"/* used for viewtemplate displaying the bibtex entry */\n.refnotes-bibtex-field{\n\tdisplay:table-row\n}\n.refnotes-bibtex-field span{\n\tdisplay:table-cell\n}\n.refnotes-bibtex-field span:first-of-type{\n\tfont-weight:bold;\n\tpadding-right:10px;\n\twhite-space: nowrap;\n}","created":"20210403171918460","modified":"20210917161905986","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/bibtex":{"title":"$:/plugins/kookma/refnotes/styles/bibtex","created":"20181220161713706","modified":"20210917161905970","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":".ref-nonumber{\n/* color:blue;*/\n font-size:90%;\n list-style-type:none;\n}\n\n.ref-nonumber li{\n padding-bottom:8px;\n}\n\n.ref-list{\n/* color:blue;*/\n font-size:90%;\n}\n\n.link-refcls{\n font-weight:400;\n/* color:#00008B;*/ /*darkblue*/\n text-decoration:none;\n color: <>; \t\n}\n\n.refcls{\n/* color:#00008B;*/\n color: <>; \n/* text-transform: capitalize;*/\n}\n\n.ref-notfound{\n/* color: #856404 !important;*/\n/* background-color: #fff3cd !important;*/\n}\n\n.ref-author{\n/* color:#00008B;*/ /*color for author in tooltip*/\n}"},"$:/plugins/kookma/refnotes/styles/dropzone":{"title":"$:/plugins/kookma/refnotes/styles/dropzone","text":".bibtex-dropzone{\n\tmin-height:30px;\n\tmax-width:100%;\n\tmargin:4px auto;\n\tborder:2px dotted green;\n\ttext-align:center;\n}\n\n.bibtex-dropzone:focus {\n\tbackground: #fffedd;\n}","created":"20210813153817949","modified":"20210917161905993","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/footnote-counter":{"title":"$:/plugins/kookma/refnotes/styles/footnote-counter","text":"/*automatic counter for fnote macro. The counter resets at the begining of each tiddler*/\n.tc-tiddler-frame {\n counter-reset: fnote-count;\n}\n.refnotes-footnote {\n counter-increment: fnote-count;\n}\n.refnotes-footnote:after {\n content: counter(fnote-count);\n font-size:small;\n /* color:#0000ee;*/\n vertical-align: super;\n line-height: 1.5;\n margin-left: -0.1em;\n}\n","created":"20181214085707714","modified":"20210917161906001","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/library":{"title":"$:/plugins/kookma/refnotes/styles/library","text":"/* in folding-editor*/\n.refnotes-library button svg{\n\tfont-size:0.8em;\n\tvertical-align: middle;\n\tmargin-right:0;\n\tmargin-left:0;\n\n}\n\n","created":"20210407142636629","modified":"20210917161906006","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/showfnotes":{"title":"$:/plugins/kookma/refnotes/styles/showfnotes","text":"/* Footnote class*/\n\n.fnote-list{\n/* color:blue;*/\n font-size:90%;\n}\n\n.fnote-pretty{\n display: block;\n margin: 0.5em;\n margin-right: auto;\n width: 100% !important;\n border-collapse: collapse;\n padding: 15px 15px 15px 25px; /*left padding=25px*/\n border-width: 0px;\n border-style: solid;\n border-left-width: 1px;\n background-color: rgb(255,248,220);\n color: rgb(91,49,7);\n line-height: 1.2em; \n font-size:0.9em;\n}\n","created":"20181219144814573","modified":"20210917161906014","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/table-borderless":{"title":"$:/plugins/kookma/refnotes/styles/table-borderless","text":"/*Borderless table*/\n.refnotes-table-borderless, \n.refnotes-table-borderless th, \n.refnotes-table-borderless tr, \n.refnotes-table-borderless td{\n border:0;\n}","created":"20190320094538299","modified":"20210917161906022","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/tooltip":{"title":"$:/plugins/kookma/refnotes/styles/tooltip","text":"/* tooltip class used for ref, fnote and other macros */\n.refnotes-tooltip {\n\tposition: relative;\n\tdisplay: inline-block;\n\tcursor: pointer; \n}\n\n.refnotes-tooltip .refnotes-tooltiptext{\n\tfont-size: 0.90em; /* change if it is too small */\n}\n\n.refnotes-tooltip .refnotes-tooltiptext {\n\tvisibility: hidden;\n\tbackground-color: #fff;\n\tcolor: #222222; \n\ttext-align: left;\n\tborder-radius: 2px;\n\tpadding: 5px 10px;\n\tmax-width: 30vw;\n\tmax-height:20em;\n\toverflow-y: auto;\n\tcursor: auto;\n\twidth: max-content;\n\twidth: -moz-max-content;\n\twidth: -webkit-max-content;\n\twidth: -o-max-content;\n\n\t/* Position the tooltip */\n\tposition: absolute;\n\tz-index: 1;\n\tbottom: 100%;\n\tleft: 50%;\n\tmargin-left: -40px;\n\tbox-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19);\n}\n\n.refnotes-tooltip:hover .refnotes-tooltiptext {\n\tvisibility: visible;\n\t/*opacity: 0.9;*/\n}\n\n/* for small screens */\n\n@media screen and (max-width: 960px) {\n.refnotes-tooltip .refnotes-tooltiptext {\n /* Position the tooltip */\n \tposition:fixed;\n top:0;\n left: 0;\n margin-left: 0px;\n bottom: unset;\n width:100%;\n max-width: 100vw;\n z-index: 9999;\n} \n\n.refnotes-tooltip:hover .refnotes-tooltiptext {\n opacity: 1;\n} \n \n}","created":"20181215201115750","modified":"20210917161906027","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/templates/reflist/article":{"title":"$:/plugins/kookma/refnotes/templates/reflist/article","created":"20210406035737424","list":"article","modified":"20210918154925145","tags":"$:/tags/Refnotes/ReflistTemplate","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=title emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <>. (<$view field=\"bibtex-year\"/>). <$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />. <$view field=\"bibtex-journal\"/>. <$view field=\"bibtex-volume\"/>. <$view field=\"bibtex-pages\"/>. get[bibtex-doi]]}}}><$view field=\"bibtex-doi\"/>
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference <$text text=<>/> NOT FOUND. Check your input.
  • \n\n\n\n"},"$:/plugins/kookma/refnotes/templates/reflist/book":{"title":"$:/plugins/kookma/refnotes/templates/reflist/book","created":"20210406035831544","list":"book incollection","modified":"20210918173607385","tags":"$:/tags/Refnotes/ReflistTemplate","type":"text/vnd.tiddlywiki","text":"\\define disp-bibtex-edition()\n<$list filter=\"[has[bibtex-edition]]\" variable=null>(<$view field=\"bibtex-edition\"/>).\n\\end\n\n\n<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=title emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <>. (<$view field=\"bibtex-year\"/>). <$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />. <> <$view field=\"bibtex-publisher\"/>.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference <$text text=<>/> NOT FOUND. Check your input.
  • \n\n\n\n"},"$:/plugins/kookma/refnotes/templates/reflist/default":{"title":"$:/plugins/kookma/refnotes/templates/reflist/default","created":"20210406035344521","modified":"20210918173547862","tags":"$:/tags/Refnotes/ReflistTemplate","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=\"title\" emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <>. (<$view field=\"bibtex-year\"/>). <$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference <$text text=<>/> NOT FOUND. Check your input.
  • \n\n"},"$:/plugins/kookma/refnotes/templates/reflist/inproceedings":{"title":"$:/plugins/kookma/refnotes/templates/reflist/inproceedings","created":"20210411092205967","list":"inproceedings","modified":"20210918173627363","tags":"$:/tags/Refnotes/ReflistTemplate","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=title emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <>. (<$view field=\"bibtex-year\"/>). <$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />. In <$view field=\"bibtex-booktitle\"/>. pp. <$view field=\"bibtex-pages\"/>. get[bibtex-doi]]}}}><$view field=\"bibtex-doi\"/>
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference <$text text=<>/> NOT FOUND. Check your input.
  • \n\n\n\n"},"$:/plugins/kookma/refnotes/templates/reflist/numbered/article":{"title":"$:/plugins/kookma/refnotes/templates/reflist/numbered/article","created":"20210407034252960","list":"article","modified":"20210917161906073","tags":"","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=title emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$view field=\"bibtex-author\"/>, <$view field=\"bibtex-title\"/>, <$view field=\"bibtex-journal\"/>, <$view field=\"bibtex-year\"/>.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference $p$ NOT FOUND. Check your input.
  • \n\n"},"$:/plugins/kookma/refnotes/templates/reflist/numbered/book":{"title":"$:/plugins/kookma/refnotes/templates/reflist/numbered/book","created":"20210407034324705","list":"book","modified":"20210918164607908","tags":"","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=title emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <>, <$view field=\"bibtex-title\"/>, <$view field=\"bibtex-edition\"/>, <$view field=\"bibtex-year\"/>, <$view field=\"bibtex-address\"/>, <$view field=\"bibtex-publisher\"/>.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference $p$ NOT FOUND. Check your input.
  • \n\n"},"$:/plugins/kookma/refnotes/templates/reflist/numbered/default":{"title":"$:/plugins/kookma/refnotes/templates/reflist/numbered/default","created":"20210407034401566","modified":"20210917161906089","tags":"","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=\"title\" emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$view field=\"bibtex-author\"/>, <$view field=\"bibtex-title\"/>,<$view field=\"bibtex-journal\"/>, <$view field=\"bibtex-year\"/>.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference $p$ NOT FOUND. Check your input.
  • \n\n"},"$:/plugins/kookma/refnotes/templates/reflist/numbered/website":{"title":"$:/plugins/kookma/refnotes/templates/reflist/numbered/website","created":"20210407034338287","list":"website","modified":"20210917161906093","tags":"","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=\"curtid\" tiddler=<> field=\"title\" emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$view field=\"bibtex-title\" tiddler=<>/>, get[bibtex-url]]}}} target=\"_blank\"><$text text={{{ [get[bibtex-url]] }}}/>, <$view field=\"bibtex-year\" tiddler=<>/>.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference $p$ NOT FOUND. Check your input.
  • \n\n"},"$:/plugins/kookma/refnotes/templates/reflist/website":{"title":"$:/plugins/kookma/refnotes/templates/reflist/website","created":"20210406040657728","list":"website","modified":"20210917161906098","tags":"$:/tags/Refnotes/ReflistTemplate","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=\"title\" emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />. (<$view field=\"bibtex-year\"/>). <$text text={{!!bibtex-url}} />.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference <$text text=<>/> NOT FOUND. Check your input.
  • \n\n"},"$:/plugins/kookma/refnotes/ui/bibtexlibrary":{"title":"$:/plugins/kookma/refnotes/ui/bibtexlibrary","caption":"Bibliography","created":"20181220153648454","description":"This code adds the `bibtex-entry` tag to all tiddlers imported by `BibTeX Importer` plugin thus having a `bibtex-title` field.","modified":"20210917161906108","tags":"$:/tags/SideBar","type":"text/vnd.tiddlywiki","text":"\\define dispEntry()\n<$link/>\n<$macrocall $name=stretchText text=\"\"\"\n<$view field=\"bibtex-author\"/>. (<$view field=\"bibtex-year\"/>). <$view field=\"bibtex-title\"/>.\"\"\" />\n\\end\n\n\n\\define searchFilter() [has[bibtex-title]search:$(sField)$[$(sTerm)$]]\n\n\\define bibLibrary()\n<$vars sField={{{[get[field]] ~[[bibtex-author]]}}} sTerm={{{[get[text]]}}}>\n\n\n\n\n\n
      \n<$list filter=\"[subfilter]\">\n
    1. <>
    2. \n\n
    \n\n\\end\n\n\n
    \n<>\n{{$:/plugins/kookma/refnotes/ui/dropzone}}\n
    \n\n\n\n<>\n\n<>\n\n\n\n"},"$:/plugins/kookma/refnotes/ui/dropzone":{"title":"$:/plugins/kookma/refnotes/ui/dropzone","caption":"Dropzone","created":"20210813153727310","modified":"20210917161906113","tags":"","type":"text/vnd.tiddlywiki","text":"<$dropzone \n deserializer=\"application/x-bibtex\"\n filesOnly=no \n\timportTitle=\"Import Bibtex\">\n
    \nPaste your Bibtex Entry here\n
    \n"},"$:/plugins/kookma/refnotes/viewtemplates/article":{"title":"$:/plugins/kookma/refnotes/viewtemplates/article","created":"20210403164845276","list":"article","modified":"20210917161906128","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-journal bibtex-year bibtex-pages bibtex-number bibtex-volume bibtex-doi bibtex-entry-type\n\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\"/>"},"$:/plugins/kookma/refnotes/viewtemplates/book":{"title":"$:/plugins/kookma/refnotes/viewtemplates/book","created":"20210403164856132","list":"book","modified":"20210917161906138","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-publisher bibtex-entry-type\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\"/>"},"$:/plugins/kookma/refnotes/viewtemplates/default":{"title":"$:/plugins/kookma/refnotes/viewtemplates/default","created":"20210403165027581","modified":"20210917161906146","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-doi bibtex-entry-type\n\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\"/>"},"$:/plugins/kookma/refnotes/viewtemplates/helper":{"title":"$:/plugins/kookma/refnotes/viewtemplates/helper","created":"20210405112132790","modified":"20210917161906155","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define display-bibtex-field()\n
    \n<$text text={{{ [removeprefix[bibtex-]titlecase[]] }}} />\n<$transclude tiddler=<> field=<> mode=inline />\n
    \n\\end\n\n\n<$list filter=\"[enlist]\" variable=currentField>\n<>\n\n\n\n
    \n More details\n<$list filter=\"[fields[]prefix[bibtex]sort[]] -[enlist]\" variable=currentField>\n<>\n\n
    "},"$:/plugins/kookma/refnotes/viewtemplates/incollection":{"title":"$:/plugins/kookma/refnotes/viewtemplates/incollection","created":"20210411044534237","list":"incollection","modified":"20210917161906165","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-booktitle bibtex-editor bibtex-publisher bibtex-entry-type\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\"/>"},"$:/plugins/kookma/refnotes/viewtemplates/inproceedings":{"title":"$:/plugins/kookma/refnotes/viewtemplates/inproceedings","created":"20210411094926217","list":"inproceedings","modified":"20210917161906174","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-booktitle bibtex-editor bibtex-doi bibtex-entry-type\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\"/>"},"$:/plugins/kookma/refnotes/viewtemplates/main":{"title":"$:/plugins/kookma/refnotes/viewtemplates/main","created":"20181220142502642","modified":"20210917161906181","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[all[current]has[bibtex-title]]\">\n<$vars currentType={{{[get[bibtex-entry-type]lowercase[]] ~[[miscellaneous]]}}} >\n<$set name=\"bodyLookup\" \n filter=\"[all[tiddlers+shadows]tag[$:/tags/Refnotes/Template]contains:list] +[limit[1]get[title]]\"\n\t\t\tvalue=<> \n emptyValue=\"$:/plugins/kookma/refnotes/viewtemplates/default\">\n<$transclude tiddler=<> field=\"text\" mode=\"inline\"/>\n\n\n"},"$:/plugins/kookma/refnotes/viewtemplates/thesis":{"title":"$:/plugins/kookma/refnotes/viewtemplates/thesis","created":"20210410200742891","list":"phdthesis mastersthesis thesis","modified":"20210917161906189","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-school bibtex-entry-type\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\"/>"},"$:/plugins/kookma/refnotes/viewtemplates/unpublished":{"title":"$:/plugins/kookma/refnotes/viewtemplates/unpublished","created":"20210411041928587","list":"unpublished","modified":"20210917161906197","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-note bibtex-entry-type\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\"/>"},"$:/plugins/kookma/refnotes/viewtemplates/website":{"title":"$:/plugins/kookma/refnotes/viewtemplates/website","created":"20210403164529700","list":"website","modified":"20210917161906202","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-url bibtex-year bibtex-entry-type\n\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\"/>"}}} \ No newline at end of file +{"tiddlers":{"$:/plugins/kookma/refnotes/history":{"title":"$:/plugins/kookma/refnotes/history","created":"20201211095732935","modified":"20220603192229351","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-Refnotes/#ChangeLog\n\n* ''1.8.1'' -- 2022.06.03 -- many improvements to APA7 and BibTeX support in Refnotes\n* ''1.8.0'' -- 2022.05.27 -- many improvements, refrence manager has APA7 as default style\n* ''1.7.4'' -- 2022.05.18 -- stable release based on TW 5.2.2, minor bugs fixed\n* ''1.7.2'' -- 2021.09.19 -- stable release based on TW 5.2.0\n* ''1.6.0'' -- 2021.04.02 -- development (beta) of new release\n* ''1.0.3'' -- 2019.03.20 -- first stable release\n"},"$:/plugins/kookma/refnotes/license":{"title":"$:/plugins/kookma/refnotes/license","created":"20201211095732937","modified":"20210917161905837","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2019-2021 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/refnotes/macros/abbr":{"title":"$:/plugins/kookma/refnotes/macros/abbr","created":"20181022071907838","modified":"20210917161905845","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define abbr(term:\"\", dict:\"Glossary\")\n<$set name=\"abbreviation\" \n tiddler=<<__dict__>>\n index=<<__term__>>\n emptyValue=\"Term not found\">\n > ><$text text=<<__term__>> />\n\n\\end\n"},"$:/plugins/kookma/refnotes/macros/apa/authors":{"title":"$:/plugins/kookma/refnotes/macros/apa/authors","created":"20210918154536732","modified":"20220604115254375","tags":"","type":"text/vnd.tiddlywiki","text":"\\define show-authors-in-citation(conjunction:\"&\")\n\n<$let authorlist= {{{ [<__tid__>get[bibtex-author]] }}}\n number-authors= {{{ [split[ and ]!is[blank]count[]] }}}\n>\n\n<$list filter=\"[compare:number:eq[1]]\" variable=null>\n<$list filter=\"[split[ and ]first[]]\" variable=author>\n<>\n\n\n\n\n<$list filter=\"[compare:number:eq[2]]\" variable=null>\n<$list filter=\"[split[ and ]first[]]\" variable=author><> $conjunction$\n<$list filter=\"[split[ and ]last[]]\" variable=author><>\n\n\n\n<$list filter=\"[compare:number:gt[2]]\" variable=null>\n<$list filter=\"[split[ and ]first[]]\" variable=author>\n<> et al.\n\n\n\n\n<$list filter=\"[compare:number:eq[0]]\" variable=null>\n<$text text={{{ [<__tid__>get[bibtex-title]split[ ]!is[blank]first[3]join[ ]] :else[<__tid__>]}}}/>\n\n\n\\end\n\n\n\\define parse-fullname()\n\n\n<$list filter=\"[!search[,]]\" emptyMessage=<> variable=null>\n<$let \n pattern1=\"\\s+([a-z][a-zA-Z]*?)\\s+\"\n pname={{{\n [search-replace:g:regexp,[ $1°]]\n +[splitregexp[\\s]trim[]]\n +[search-replace:g:regexp[°],[ ]]\n +[join[°_°]]\n }}}\n><$text text={{{ [split[°_°]!is[blank]last[]addsuffix[,]] [split[°_°]!is[blank]butlast[]] +[join[ ]] }}}/>\n\n\n\\end\n\n\n\n\\define authorName(format:\"\")\n\n\\whitespace trim\n<$wikify name=pname text=<> >\n<$let last= {{{ [split[,]!is[blank]trim[]first[]]}}}\n initials={{{ [split[,]!is[blank]trim[]butfirst[]split[ ]!is[blank]] :map[split[]!is[blank]first[]addsuffix[.]] +[join[ ]]}}}\n dispname={{{ [addsuffix[, ]addsuffix] }}}\n>\n<$list filter=\"[<__format__>!match[LastName]]\" variable=null emptyMessage=<>><>\n\n\n\\end\n\n\\define show-authors-in-references()\n\n<$let authorslist= {{!!bibtex-author}}\n number-authors= {{{ [split[ and ]!is[blank]count[]] }}}\n >\t\t\n<$set name=authors filter=\"[split[ and ]trim[]]\" >\t\n\n<$list filter=\"[compare:integer:eq[1]]\" variable=null>\n<$vars author={{{ [enlistlast[]] }}}><>\n\n\n<$list filter=\"[compare:integer:gt[1]]\" variable=null>\n<$list filter=\"[enlistbutlast[]]\" variable=author>\n<>,\n\n<$vars author={{{ [enlistlast[]] }}}>& <>\n\n\n<$list filter=\"[compare:number:eq[0]]\" variable=null>\n<$text text={{{ [{!!bibtex-title}split[ ]!is[blank]first[3]join[ ]] :else[[Unknown author]]}}}/>\n\n\n\t\t\t\n\\end\n\n\n"},"$:/plugins/kookma/refnotes/macros/apa/ref":{"title":"$:/plugins/kookma/refnotes/macros/apa/ref","created":"20210407044450831","modified":"20220603185720053","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define ref(tid, type:\"p\", pages:\"\")\n\\import $:/plugins/kookma/refnotes/macros/apa/authors\n\\whitespace trim\n<$set name=\"ref-tid\" tiddler=<<__tid__>> field=\"title\" emptyValue=\"RefNotFound\">\n
    \n<$reveal type=\"match\" default=<> text=\"RefNotFound\">\n<$link overrideClass=\"link-refcls\">[<$view tiddler=<<__tid__>> field=\"title\"/>]\n
    Warning: Reference Not Found.
    Click to create it:<>
    \n\n<$reveal type=\"nomatch\" default=<> text=\"RefNotFound\">\n<$list filter=\"[[$type$]lowercase[]match[p]]\" variable=null><>\n<$list filter=\"[[$type$]lowercase[]match[n]]\" variable=null><>\n<$list filter=\"[[$type$]lowercase[]match[m]]\" variable=null><>\n
    \n<$macrocall $name=\"displayref-onhover\" refTid=<> />\n
    \n\n
    \n\n\\end\n\n\n\n\n\\define pranthetical()\n<$wikify name=authors text=<> >\n(<$text text={{{ [trim[]addsuffix[, ]] }}}/><$text text={{{ [<__tid__>get[bibtex-year]] :else[[n.d.]] }}}/><$text text={{{[<__pages__>!is[blank]then<__pages__>addprefix[, ]]}}}/>)\n\n\\end\n\n\n\\define narrative()\n<$wikify name=authors text=<> >\n<$text text={{{ [trim[]addsuffix[ ]] }}}/>(<$text text={{{ [<__tid__>get[bibtex-year]] :else[[n.d.]] }}}/><$text text={{{[<__pages__>!is[blank]then<__pages__>addprefix[, ]]}}}/>)\n\n\\end\n\n\n\\define multiwork-pranthetical()\n<$wikify name=authors text=<> >\n<$text text={{{ [trim[]addsuffix[, ]] }}}/><$text text={{{ [<__tid__>get[bibtex-year]] :else[[n.d.]] }}}/><$text text={{{[<__pages__>!is[blank]then<__pages__>addprefix[, ]]}}}/>\n\n\\end"},"$:/plugins/kookma/refnotes/macros/apa/showrefs":{"title":"$:/plugins/kookma/refnotes/macros/apa/showrefs","created":"20190117195536649","modified":"20220604084614098","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define showrefs(filter:\"[]\", title:\"Empty\", class:\"ref-list\", emptyMessage:\"\")\n\\import $:/plugins/kookma/refnotes/macros/apa/authors\n<$vars leftDelimiter=\"<\n<$list filter=\"[subfilter<__filter__>search:text:literallimit[1]]\" variable=null emptyMessage=<<__emptyMessage__>> >\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n

    $title$

    \n\n\n<$wikify name=\"mylist\" text=\"\"\"\n<$list filter=<<__filter__>> >\n<$macrocall $name=\"find-refs\" tid=<> />\n\n\"\"\">\n\n
      \n<$list filter=\"[enlisttrim[]sort[]]\" variable=\"reference\">\n\n<$vars currentType={{{[get[bibtex-entry-type]lowercase[]] ~[[miscellaneous]]}}} >\n<$set name=\"bodyLookup\" \n filter=\"[all[tiddlers+shadows]tag[$:/tags/Refnotes/ReflistTemplate]contains:list] +[limit[1]get[title]]\"\n value=<> \n emptyValue=\"$:/plugins/kookma/refnotes/templates/reflist/apa/default\">\n<$transclude tiddler=<> field=\"text\" mode=\"inline\"/>\n\n\n\n\n
    \n\n\n\n\\end"},"$:/plugins/kookma/refnotes/macros/bibtex/find-refs":{"title":"$:/plugins/kookma/refnotes/macros/bibtex/find-refs","created":"20181213121411187","modified":"20220602041210656","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define find-refs(tid)\n<$vars regexp=\"(?g)<>\"\nregexp2='<>'\nregexp3='^\"(.*?)\"'\nregexp4=\"^'(.*?)'\"\nregexp5=\"\\[\\[(.*?)\\]\\]\"\nregexp6=\"^(.*?)\\s\"\n>\n<$list filter=\"[[$tid$]regexprefs:text]\">\n<$list filter=\"[all[current]regexprefs]\">\n<$list filter=\"\"\"\n [all[current]regexprefs] \n:else[all[current]regexprefs]\n:else[all[current]regexprefs]\n:else[all[current]regexprefs]\n:else[all[current]]\n\"\"\" variable=p >\n<>\n\n\n\n\n\\end\n\n\\define pwrapper() \n[[[[$(p)$]]]]\n\\end\n"},"$:/plugins/kookma/refnotes/macros/bibtex/process-entries":{"title":"$:/plugins/kookma/refnotes/macros/bibtex/process-entries","created":"20210405065852415","modified":"20220604205143425","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define title-slugify()\n<$vars curTitle=<> newTitle={{{[slugify[]]}}}>\n<$list filter=\"[!match]\" variable=null>\n<$action-sendmessage $message=\"tm-rename-tiddler\" from=<> to=<> />\n\n\n\\end\n\n\\define correct-doi()\n<$list filter=\"[has[bibtex-doi]get[bibtex-doi]!prefix[https://doi.org]]\" variable=null>\n<$action-setfield $field=\"bibtex-doi\" $value={{{ [{!!bibtex-doi}addprefix[https://doi.org/]] }}}/>\n\n\\end\n\n\\define tag-entries()\n\n<$action-setfield $tiddler=<> bibtex-entry-type={{{[get[bibtex-entry-type]lowercase[]]}}} />\n\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-tag\" $param=\"bibtex-entry\" />\n\n\\end\n\n\\define process-entries(title:\"Process New Bibtex Entries\")\n<$button> $title$\n<$wikify name=chkDuplicates text=<> >\n<$action-confirm $message=<> >\n<$list filter=\"[has[bibtex-title]!tag[bibtex-entry]]\">\n<>\n<>\n<>\n\n\n\n\n\\end\n\n\n\\define check-duplicates()\n<$list filter=\"[has[bibtex-title]duplicateslugs[]limit[1]]\" emptyMessage=\"There are no duplicate entries, do you want to process new entries?\">\nThe following tiddlers have duplicate slugs, so they will overwrite eachother, do you want to continue?\n\n<$list filter=\"[has[bibtex-title]duplicateslugs[]] +[join[, ]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n\\end"},"$:/plugins/kookma/refnotes/macros/bibtex/regexprefs.js":{"title":"$:/plugins/kookma/refnotes/macros/bibtex/regexprefs.js","text":"/*\\\ntitle: $:/plugins/kookma/macro/bibtex/regexprefs.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching and returning result. All results are returned if global flag used. All sub-groups are returned if not global and sub-group hits are found.\n\nThis is a hacked version of core macro: $:/core/modules/filters/regexp.js\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexprefs = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match, global,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\n\tglobal = /g/.test(flags) ;\n\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title), ret=\"\";\n\t\t\tif(text !== null) {\n\t\t\t\tret = text.match(regexp) ;\n\t\t\t\tif(ret !==null) {\n\t\t\t\t\tif(global) {\n\t\t\t\t\t\tresults.push.apply(results,ret) ; //DEBUG\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// if there are sub groups return sub groups START\n\t\t\t\t\t\tif(ret.length > 1) { // return sub groups\n\t\t\t\t\t\t\tresults = results.concat(ret.slice(1)) ;\n\t\t\t\t\t\t} else { // if no sub-groups\n\t\t\t\t\t\t\tresults.push(ret[0]);\n\t\t\t\t\t\t} \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();","type":"application/javascript","module-type":"filteroperator","created":"20190120190755258","modified":"20210917161905893"},"$:/plugins/kookma/refnotes/macros/bibtex/utility":{"title":"$:/plugins/kookma/refnotes/macros/bibtex/utility","created":"20210407045329557","modified":"20210917161905902","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define displayref-onhover(refTid)\n<$set name=\"ref-tid\" value=<<__refTid__>> >\n<$link overrideClass=\"link-refcls\" to=<> >\n<$list filter=\"[get[bibtex-entry-type]lowercase[]!match[website]]\" variable=null\nemptyMessage=\"\"\"<$view tiddler=<> field=\"bibtex-url\"/>.\"\"\">\n<$view tiddler=<> field=\"bibtex-author\"/>.\n\n\n<$view tiddler=<> field=\"bibtex-title\"/>. (<$view tiddler=<> field=\"bibtex-year\"/>)\n\n\\end\n\n\\define create-notexisted-ref(refTid)\n<$set name=\"myTid\" value=<<__refTid__>> >\n<$button class=\"tc-btn-invisible tc-tiddlylink\">\n<$action-sendmessage $message=\"tm-new-tiddler\"\n title=<> \n bibtex-author=\"\" bibtex-year=\"\"\n bibtex-title=\"\" bibtex-abstract=\"\"\n bibtex-entry-type=\"\" bibtex-keywords=\"\"\n bibtex-doi=\"\" bibtex-url=\"\"\n tags=\"bibtex-entry\"\n /><> \n\n \n\\end"},"$:/plugins/kookma/refnotes/macros/find":{"title":"$:/plugins/kookma/refnotes/macros/find","created":"20181213121411187","modified":"20211105070807510","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define find(text, begin, end, output:\"simple\", mode:\"all\")\n<$vars \n fulltext=<<__text__>>\n start=<<__begin__>>\n stop=<<__end__>>\n output-macro=<<__output__>>\n>\n<$list variable=p1 filter=\"[splitbefore]\">\n<$list variable=p2 filter=\"[removeprefix]\">\n<$list variable=p3 filter=\"[splitbeforeremovesuffix]\">\n<$macrocall $name=<> p=<> />\n<$reveal type=\"match\" text=\"all\" default=<<__mode__>> >\n<$macrocall $name=\"find\"\n text={{{[removeprefixremoveprefix]}}}\n begin=<>\n end=<>\n output=<>\n/>\n\n\n\n\n\n\\end\n\n\\define simple(p)\n<$text text=<<__p__>> />\n\\end\n\n\\define simple-list(p)\n
  • <$text text=<<__p__>>/>
  • \n\\end\n"},"$:/plugins/kookma/refnotes/macros/footnote":{"title":"$:/plugins/kookma/refnotes/macros/footnote","created":"20181214095749808","modified":"20210917161905912","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define fnote(note)\n
    $note$
    \n\\end"},"$:/plugins/kookma/refnotes/macros/numbered/refnum":{"title":"$:/plugins/kookma/refnotes/macros/numbered/refnum","created":"20181210155346225","modified":"20220526042056665","tags":"","type":"text/vnd.tiddlywiki","text":"\\define refnum(tid)\n<$set name=\"ref-tid\" tiddler=<<__tid__>> field=\"title\" emptyValue=\"RefNotFound\">\n
    \n<$reveal type=\"match\" default=<> text=\"RefNotFound\">\n<$link overrideClass=\"link-refcls\">\n[<$view tiddler=<<__tid__>> field=\"title\"/>]\n\n
    Warning: Reference Not Found.
    Click to create it:<>
    \n\n<$reveal type=\"nomatch\" default=<> text=\"RefNotFound\">\n[<$view tiddler=<<__tid__>> field=\"caption\"><$view tiddler=<<__tid__>> field=\"title\"/>]\n
    \n<$macrocall $name=\"displayref-onhover\" refTid=<> />\n
    \n\n
    \n\n\\end\n"},"$:/plugins/kookma/refnotes/macros/search-ui":{"title":"$:/plugins/kookma/refnotes/macros/search-ui","created":"20141231095518178","modified":"20220602080144009","tags":"","type":"text/vnd.tiddlywiki","text":"\\define searchTid() $:/temp/refnotes/search\n\\define bibtexFields() [!is[shadow]!is[system]has[bibtex-title]fields[]prefix[bibtex-]sort[]]\n\\define mainFields() bibtex-title bibtex-author bibtex-year\n\\define searchUi()\n
    \n<$edit-text tiddler=<> type=\"search\" tag=\"input\" placeholder=\"search terms\" default=\"\"/> <$select field=\"field\" tiddler=<> default=\"bibtex-author\">\n<$set name=allfields filter= \"[subfiltersplit[ ]join[,]]\" >\n\n\n\n<$list filter=\"[enlistremoveprefix[bibtex-]]\" variable=\"field\">\n\n\n\n\n<$list filter=\"[subfilter] -[enlist] +[removeprefix[bibtex-]]\" variable=\"field\">\n\n\n\n\n\n<$reveal state=<> type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=<> text=\"\"/>\n{{$:/core/images/close-button}}\n\n\n
    \n\\end"},"$:/plugins/kookma/refnotes/macros/showabbrs":{"title":"$:/plugins/kookma/refnotes/macros/showabbrs","created":"20210404111656614","modified":"20211106193550015","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define showabbrs(filter:\"[]\", dtiddler:\"Glossary\", title:\"Empty\", emptyMessage:\"\")\n<$wikify name=\"indexes\" text=<> > \n<$macrocall $name=\"abbr-list\" indexes=<> dtiddler=<<__dtiddler__>> title=<<__title__>> emptyMessage=<<__emptyMessage__>> />\n\n\\end\n\n\\define patterndb() \\[\\[|\\]\\]\n\\define pattern() ('.*?'|\".*?\"|\\S+)\n\\define output-item(p)\n<$list filter=\"\"\"[<__p__>search-replace:g:regexp,[\"]]\"\"\" variable=pars>\n<$list filter=\"\"\"[trim[]!prefix[dict:]search-replace[term:],[]splitregexptrim[]!is[blank]!prefix[dict:]first[]]\"\"\">\n<$text text=<>/>\n\n<$list filter=\"\"\"[trim[]prefix[dict:]search-replace[term:],[]splitregexptrim[]!is[blank]!prefix[dict:]last[]]\"\"\">\n<$text text=<>/>\n\n\n\\end\n\n\\define find-all-items()\n<$list filter=<<__filter__>> >\n<$macrocall $name=\"find\" text={{!!text}} begin=\"<>\" output=\"output-item\"/>\n\n\\end\n\n\n\\define abbr-list(dtiddler, indexes, title:\"Empty\", emptyMessage:\"\")\n<$list filter=\"[limit[1]]\" variable=null emptyMessage=<<__emptyMessage__>> >\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n

    <$text text=<<__title__>> />

    \n\n\n<$list filter=\"\"\"[subfilter<__indexes__>]\"\"\" variable=\"item\">\n\n\n\n\n\n
    <$text text=<> />\n <$set name=\"term\" tiddler=<<__dtiddler__>> index=<> emptyValue=<> >\n <>\n \n
    \n\n\\end\n\n\n\\define term-not-found()\nTerm not found\n\\end\n\n\n"},"$:/plugins/kookma/refnotes/macros/showfnotes":{"title":"$:/plugins/kookma/refnotes/macros/showfnotes","created":"20210404111935949","modified":"20210917161905937","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define showfnotes(filter:\"[]\", title:\"Empty\" class:\"fnote-list\", emptyMessage:\"\")\n<$vars leftDelimiter=\"<\n<$list filter=\"[subfilter<__filter__>search:text:literallimit[1]]\" variable=null emptyMessage=<<__emptyMessage__>> >\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n

    $title$

    \n\n
      \n<$list filter=<<__filter__>> >\n<$macrocall $name=\"find\" \n text={{!!text}}\n begin=\"<>\"\n output=\"output-fnote\"\n/>\n\n
    \n\n\n\\end\n\n\\define output-fnote(p)\n<$vars output=$p$>\n
  • <>
  • \n\n\\end\n\n"},"$:/plugins/kookma/refnotes/macros/stretch-text":{"title":"$:/plugins/kookma/refnotes/macros/stretch-text","created":"20210407132815001","modified":"20220526043522425","tags":"","type":"text/vnd.tiddlywiki","text":"\\define tmpTidDetails() $:/temp/refnotes/library/$(currentTiddler)$\n\n\\define stretchText(text, title:\"...\")\n<$button class=\"tc-btn-invisible\">$title$\n<$action-listops $tiddler=<> $field=\"text\" $subfilter=\"+[toggle[show]]\" />\n <$reveal type=\"match\" stateTitle=<> sateField=text text=\"show\">$text$\n\\end\n"},"$:/plugins/kookma/refnotes/readme":{"title":"$:/plugins/kookma/refnotes/readme","created":"20201211095732939","modified":"20220526142832253","tags":"","type":"text/vnd.tiddlywiki","text":"; Refnotes\nRefnotes is a Tiddlywiki plugin to create and manage footnotes, abbreviations, citations, and references. Refnotes can create bibliography, but for the best performance, and to use import bibtex entries, the use of the official ''bibtex importer'' plugin is required. APA7 style is used as default. Refnotes output is very close to APA7 standard.\n\n;Code and demo\nFor learning Refnotes features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Refnotes/\n* Code: https://github.com/kookma/TW-Refnotes\n"},"$:/plugins/kookma/refnotes/styles/abbr":{"title":"$:/plugins/kookma/refnotes/styles/abbr","text":"/* Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS3 */ \n.refnotes-abbr abbr[title] {\n\tcolor: inherit;\n\tfont-style: normal;\n\ttext-decoration: none;\n\tborder-bottom: 1px dotted #aaa;\n\tcursor: help;\n}\n\n.refnotes-abbr-term-not-found{\n/*\tcolor:red;*/\n\tfont-style: oblique;\n}\n\n.refnotes-abbr-term{\n/*\tcolor:blue;*/\n}\n\n/* Ref:https://aarontgrogg.com/lab/\nShow the title for small screen\n*/ \n/* this works based on the max-width*/\n@media only screen and (max-width: 960px) {\n.refnotes-abbr abbr:hover:after { content: ' ('attr(title)')'; }\n}\n\n@media (hover: none) {\n/* Push the title attribute into generated content after the abbr. */\n.refnotes-abbr abbr[title]::after { \n content: ' ('attr(title)')'; }\n}\n","created":"20181022085407237","modified":"20220604061440698","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/bibtex-details":{"title":"$:/plugins/kookma/refnotes/styles/bibtex-details","text":".refnotes-details > summary{\n\tpadding-left:0;\n\tpadding-top:15px;\n\tpadding-bottom:15px;\n\twidth: 160px;\n\tcursor: pointer;\n\tfont-weight:bold;\n}\n\n","created":"20210405105138630","modified":"20210917161905977","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/bibtex-entryview":{"title":"$:/plugins/kookma/refnotes/styles/bibtex-entryview","text":"/* used for viewtemplate displaying the bibtex entry */\n.refnotes-bibtex-field{\n\tdisplay:table-row\n}\n.refnotes-bibtex-field > span{\n\tdisplay:table-cell\n}\n.refnotes-bibtex-field > span:first-of-type{\n\tfont-weight:bold;\n\tpadding-right:10px;\n\twhite-space: nowrap;\n}","created":"20210403171918460","modified":"20220603135107011","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/bibtex":{"title":"$:/plugins/kookma/refnotes/styles/bibtex","created":"20181220161713706","modified":"20210917161905970","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":".ref-nonumber{\n/* color:blue;*/\n font-size:90%;\n list-style-type:none;\n}\n\n.ref-nonumber li{\n padding-bottom:8px;\n}\n\n.ref-list{\n/* color:blue;*/\n font-size:90%;\n}\n\n.link-refcls{\n font-weight:400;\n/* color:#00008B;*/ /*darkblue*/\n text-decoration:none;\n color: <>; \t\n}\n\n.refcls{\n/* color:#00008B;*/\n color: <>; \n/* text-transform: capitalize;*/\n}\n\n.ref-notfound{\n/* color: #856404 !important;*/\n/* background-color: #fff3cd !important;*/\n}\n\n.ref-author{\n/* color:#00008B;*/ /*color for author in tooltip*/\n}"},"$:/plugins/kookma/refnotes/styles/dropzone":{"title":"$:/plugins/kookma/refnotes/styles/dropzone","text":".bibtex-dropzone{\n\tmin-height:30px;\n\tmax-width:100%;\n\tmargin:4px auto;\n\tborder:2px dotted green;\n\ttext-align:center;\n}\n\n.bibtex-dropzone:focus {\n\tbackground: #fffedd;\n}","created":"20210813153817949","modified":"20210917161905993","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/footnote-counter":{"title":"$:/plugins/kookma/refnotes/styles/footnote-counter","text":"/*automatic counter for fnote macro. The counter resets at the begining of each tiddler*/\n.tc-tiddler-frame {\n counter-reset: fnote-count;\n}\n.refnotes-footnote {\n counter-increment: fnote-count;\n}\n.refnotes-footnote:after {\n content: counter(fnote-count);\n font-size:small;\n /* color:#0000ee;*/\n vertical-align: super;\n line-height: 1.5;\n margin-left: -0.1em;\n}\n","created":"20181214085707714","modified":"20210917161906001","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/library":{"title":"$:/plugins/kookma/refnotes/styles/library","text":"/* in folding-editor*/\n.refnotes-library button svg{\n\tfont-size:0.8em;\n\tvertical-align: middle;\n\tmargin-right:0;\n\tmargin-left:0;\n\n}\n\n","created":"20210407142636629","modified":"20210917161906006","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/showfnotes":{"title":"$:/plugins/kookma/refnotes/styles/showfnotes","text":"/* Footnote class*/\n\n.fnote-list{\n/* color:blue;*/\n font-size:90%;\n}\n\n.fnote-pretty{\n display: block;\n margin: 0.5em;\n margin-right: auto;\n width: 100% !important;\n border-collapse: collapse;\n padding: 15px 15px 15px 25px; /*left padding=25px*/\n border-width: 0px;\n border-style: solid;\n border-left-width: 1px;\n background-color: rgb(255,248,220);\n color: rgb(91,49,7);\n line-height: 1.2em; \n font-size:0.9em;\n}\n","created":"20181219144814573","modified":"20210917161906014","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/table-borderless":{"title":"$:/plugins/kookma/refnotes/styles/table-borderless","text":"/*Borderless table*/\n.refnotes-table-borderless, \n.refnotes-table-borderless th, \n.refnotes-table-borderless tr, \n.refnotes-table-borderless td{\n border:0;\n}","created":"20190320094538299","modified":"20210917161906022","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/styles/tooltip":{"title":"$:/plugins/kookma/refnotes/styles/tooltip","text":"/* tooltip class used for ref, fnote and other macros */\n.refnotes-tooltip {\n\tposition: relative;\n\tdisplay: inline-block;\n\tcursor: pointer; \n}\n\n.refnotes-tooltip .refnotes-tooltiptext{\n\tfont-size: 0.90em; /* change if it is too small */\n}\n\n.refnotes-tooltip .refnotes-tooltiptext {\n\tvisibility: hidden;\n\tbackground-color: #fff;\n\tcolor: #222222; \n\ttext-align: left;\n\tborder-radius: 2px;\n\tpadding: 5px 10px;\n\tmax-width: 30vw;\n\tmax-height:20em;\n\toverflow-y: auto;\n\tcursor: auto;\n\twidth: max-content;\n\twidth: -moz-max-content;\n\twidth: -webkit-max-content;\n\twidth: -o-max-content;\n\n\t/* Position the tooltip */\n\tposition: absolute;\n\tz-index: 1;\n\tbottom: 100%;\n\tleft: 50%;\n\tmargin-left: -40px;\n\tbox-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19);\n}\n\n.refnotes-tooltip:hover .refnotes-tooltiptext {\n\tvisibility: visible;\n\t/*opacity: 0.9;*/\n}\n\n/* for small screens */\n\n@media screen and (max-width: 960px) {\n.refnotes-tooltip .refnotes-tooltiptext {\n /* Position the tooltip */\n \tposition:fixed;\n top:0;\n left: 0;\n margin-left: 0px;\n bottom: unset;\n width:100%;\n max-width: 100vw;\n z-index: 9999;\n} \n\n.refnotes-tooltip:hover .refnotes-tooltiptext {\n opacity: 1;\n} \n \n}","created":"20181215201115750","modified":"20220527062029942","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/refnotes/templates/reflist/apa/article":{"title":"$:/plugins/kookma/refnotes/templates/reflist/apa/article","created":"20210406035737424","list":"article","modified":"20220604195935448","tags":"$:/tags/Refnotes/ReflistTemplate","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=title emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$link to=<>><> (<$text text={{{ [{!!bibtex-year}!is[blank]] :else[[n.d.]] }}}/>). <$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />. <$view field=\"bibtex-journal\"/>. <$view field=\"bibtex-volume\"/>. <$view field=\"bibtex-pages\"/>. get[bibtex-doi]!prefix[https://doi.org/]addprefix[https://doi.org/]else{!!bibtex-doi}]}}} target=_blank><$view field=\"bibtex-doi\"/>
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference <$text text=<>/> NOT FOUND. Check your input.
  • \n\n\n\n"},"$:/plugins/kookma/refnotes/templates/reflist/apa/book":{"title":"$:/plugins/kookma/refnotes/templates/reflist/apa/book","created":"20210406035831544","list":"book incollection","modified":"20220603190516603","tags":"$:/tags/Refnotes/ReflistTemplate","type":"text/vnd.tiddlywiki","text":"\\define disp-bibtex-edition()\n<$list filter=\"[has[bibtex-edition]]\" variable=null>(<$view field=\"bibtex-edition\"/>).\n\\end\n\n\n<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=title emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$link to=<>><> (<$text text={{{ [{!!bibtex-year}!is[blank]] :else[[n.d.]] }}}/>). <$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />. <> <$view field=\"bibtex-publisher\"/>.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference <$text text=<>/> NOT FOUND. Check your input.
  • \n\n\n\n"},"$:/plugins/kookma/refnotes/templates/reflist/apa/default":{"title":"$:/plugins/kookma/refnotes/templates/reflist/apa/default","created":"20210406035344521","modified":"20220603190526260","tags":"$:/tags/Refnotes/ReflistTemplate","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=\"title\" emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$link to=<>><> (<$text text={{{ [{!!bibtex-year}!is[blank]] :else[[n.d.]] }}}/>). <$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference <$text text=<>/> NOT FOUND. Check your input.
  • \n\n"},"$:/plugins/kookma/refnotes/templates/reflist/apa/inproceedings":{"title":"$:/plugins/kookma/refnotes/templates/reflist/apa/inproceedings","created":"20210411092205967","list":"inproceedings","modified":"20220603190537258","tags":"$:/tags/Refnotes/ReflistTemplate","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=title emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$link to=<>><> (<$text text={{{ [{!!bibtex-year}!is[blank]] :else[[n.d.]] }}}/>). <$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />. In <$view field=\"bibtex-booktitle\"/>. pp. <$view field=\"bibtex-pages\"/>. get[bibtex-doi]]}}}><$view field=\"bibtex-doi\"/>
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference <$text text=<>/> NOT FOUND. Check your input.
  • \n\n\n\n"},"$:/plugins/kookma/refnotes/templates/reflist/apa/patent":{"title":"$:/plugins/kookma/refnotes/templates/reflist/apa/patent","created":"20220620185030475","list":"patent","modified":"20220620200652191","tags":"$:/tags/Refnotes/ReflistTemplate","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=title emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$link to=<>><> (<$text text={{{ [{!!bibtex-year}!is[blank]] :else[[n.d.]] }}}/>). <$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />. (<$view field=\"bibtex-nationality\"/> Patent No. <$view field=\"bibtex-number\"/>). <$view field=\"bibtex-url\"/>
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference <$text text=<>/> NOT FOUND. Check your input.
  • \n\n\n\n"},"$:/plugins/kookma/refnotes/templates/reflist/apa/thesis":{"title":"$:/plugins/kookma/refnotes/templates/reflist/apa/thesis","created":"20220603153022689","list":"thesis mastersthesis phdthesis","modified":"20220603190548554","tags":"$:/tags/Refnotes/ReflistTemplate","type":"text/vnd.tiddlywiki","text":"\\define disp-thesis-type()\n\\whitespace trim\n<$list filter=\"[get[bibtex-entry-type]]\" variable=thesisType>\n<$text text={{{ \n [match[mastersthesis]then[Master's thesis]]\n [match[phdthesis]then[PhD thesis]]\n :else[[Thesis]] }}} />\n\n\\end\n\n\n<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=title emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$link to=<>><> (<$text text={{{ [{!!bibtex-year}!is[blank]] :else[[n.d.]] }}}/>). <$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />. <>, <$view field=\"bibtex-school\"/>.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference <$text text=<>/> NOT FOUND. Check your input.
  • \n\n\n\n"},"$:/plugins/kookma/refnotes/templates/reflist/apa/website":{"title":"$:/plugins/kookma/refnotes/templates/reflist/apa/website","created":"20210406040657728","list":"website","modified":"20220604125044677","tags":"$:/tags/Refnotes/ReflistTemplate","type":"text/vnd.tiddlywiki","text":"\\define retrieved-date()\n<$list filter=\"[has[bibtex-urldate]]\" variable=null>Retrieved <$text text={{{ [{!!bibtex-urldate}search-replace:g[.],[]search-replace:g[-],[]] :map[format:date[MMM 0DD, YYYY]] }}}/><$list filter=\"[!has[bibtex-urldate]has[bibtex-note]]\" variable=null><$view field=\"bibtex-note\"/><$list filter=\"[!has[bibtex-urldate]!has[bibtex-note]]\" variable=null>Retrieved n.d.\n\\end\n\n<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=\"title\" emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$link to=<>><$text text={{{ [{!!bibtex-title}lowercase[]sentencecase[]] }}} />. <>, <$text text={{!!bibtex-url}} />.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference <$text text=<>/> NOT FOUND. Check your input.
  • \n\n"},"$:/plugins/kookma/refnotes/templates/reflist/numbered/article":{"title":"$:/plugins/kookma/refnotes/templates/reflist/numbered/article","created":"20210407034252960","list":"article","modified":"20210917161906073","tags":"","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=title emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$view field=\"bibtex-author\"/>, <$view field=\"bibtex-title\"/>, <$view field=\"bibtex-journal\"/>, <$view field=\"bibtex-year\"/>.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference $p$ NOT FOUND. Check your input.
  • \n\n"},"$:/plugins/kookma/refnotes/templates/reflist/numbered/book":{"title":"$:/plugins/kookma/refnotes/templates/reflist/numbered/book","created":"20210407034324705","list":"book","modified":"20210918164607908","tags":"","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=title emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <>, <$view field=\"bibtex-title\"/>, <$view field=\"bibtex-edition\"/>, <$view field=\"bibtex-year\"/>, <$view field=\"bibtex-address\"/>, <$view field=\"bibtex-publisher\"/>.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference $p$ NOT FOUND. Check your input.
  • \n\n"},"$:/plugins/kookma/refnotes/templates/reflist/numbered/default":{"title":"$:/plugins/kookma/refnotes/templates/reflist/numbered/default","created":"20210407034401566","modified":"20210917161906089","tags":"","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=currentTiddler tiddler=<> field=\"title\" emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$view field=\"bibtex-author\"/>, <$view field=\"bibtex-title\"/>,<$view field=\"bibtex-journal\"/>, <$view field=\"bibtex-year\"/>.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference $p$ NOT FOUND. Check your input.
  • \n\n"},"$:/plugins/kookma/refnotes/templates/reflist/numbered/website":{"title":"$:/plugins/kookma/refnotes/templates/reflist/numbered/website","created":"20210407034338287","list":"website","modified":"20210917161906093","tags":"","type":"text/vnd.tiddlywiki","text":"<$wikify name=bibtexEntryTiddler text=<> >\n<$set name=\"curtid\" tiddler=<> field=\"title\" emptyValue=\"RefNotFound\">\n<$reveal type=\"nomatch\" default=\"RefNotFound\" text=<> >\n
  • <$view field=\"bibtex-title\" tiddler=<>/>, get[bibtex-url]]}}} target=\"_blank\"><$text text={{{ [get[bibtex-url]] }}}/>, <$view field=\"bibtex-year\" tiddler=<>/>.
  • \n\n<$reveal type=\"match\" default=\"RefNotFound\" text=<> >\n
  • Reference $p$ NOT FOUND. Check your input.
  • \n\n"},"$:/plugins/kookma/refnotes/ui/bibtexlibrary":{"title":"$:/plugins/kookma/refnotes/ui/bibtexlibrary","caption":"Bibliography","created":"20181220153648454","modified":"20220602082029429","tags":"$:/tags/SideBar","type":"text/vnd.tiddlywiki","text":"\\import [[$:/plugins/kookma/refnotes/macros/search-ui]]\n\n\\define dispEntry()\n<$link/>\n<$macrocall $name=stretchText text=\"\"\"\n<$view field=\"bibtex-author\"/>. (<$view field=\"bibtex-year\"/>). <$view field=\"bibtex-title\"/>.\"\"\" />\n\\end\n\n\n\\define searchFilter() [has[bibtex-title]search:$(sField)$[$(sTerm)$]]\n\n\\define bibLibrary()\n\\import [[$:/plugins/kookma/refnotes/macros/stretch-text]]\n<$vars sField={{{[get[field]] ~[[bibtex-author]]}}} sTerm={{{[get[text]]}}}>\n\n\n\n\n\n
      \n<$list filter=\"[subfilter]\">\n
    1. <>
    2. \n\n
    \n\n\\end\n\n\n
    \n<>\n{{$:/plugins/kookma/refnotes/ui/dropzone}}\n
    \n\n\n\n<>\n\n<>\n\n\n\n"},"$:/plugins/kookma/refnotes/ui/dropzone":{"title":"$:/plugins/kookma/refnotes/ui/dropzone","caption":"Dropzone","created":"20210813153727310","modified":"20210917161906113","tags":"","type":"text/vnd.tiddlywiki","text":"<$dropzone \n deserializer=\"application/x-bibtex\"\n filesOnly=no \n\timportTitle=\"Import Bibtex\">\n
    \nPaste your Bibtex Entry here\n
    \n"},"$:/plugins/kookma/refnotes/viewtemplates/article":{"title":"$:/plugins/kookma/refnotes/viewtemplates/article","created":"20210403164845276","list":"article","modified":"20220525120243573","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-journal bibtex-year bibtex-pages bibtex-number bibtex-volume bibtex-doi bibtex-entry-type\n\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\" mode=block/>"},"$:/plugins/kookma/refnotes/viewtemplates/book":{"title":"$:/plugins/kookma/refnotes/viewtemplates/book","created":"20210403164856132","list":"book","modified":"20220525120405214","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-publisher bibtex-entry-type\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\" mode=block/>"},"$:/plugins/kookma/refnotes/viewtemplates/default":{"title":"$:/plugins/kookma/refnotes/viewtemplates/default","created":"20210403165027581","modified":"20220603133635843","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-doi bibtex-entry-type\n\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\" mode=block/>"},"$:/plugins/kookma/refnotes/viewtemplates/helper":{"title":"$:/plugins/kookma/refnotes/viewtemplates/helper","created":"20210405112132790","modified":"20220604200709606","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define citedIn(refname)\n <$vars pattern=\"\"\"<>\"\"\" >\n <$list filter=\"[all[tiddlers]search:text:regexpsort[title]]\" \n template=\"$:/core/ui/ListItemTemplate\" \n emptyMessage=\"\"\"//No tiddler has cited this reference//\"\"\" />\n \n\\end\n\n\\define display-bibtex-field()\n
    \n<$text text={{{ [removeprefix[bibtex-]titlecase[]] }}} />\n<$transclude tiddler=<> field=<> mode=inline />\n
    \n\\end\n\n<$let tv-wikilinks=\"no\">\n\n<$list filter=\"[enlist]\" variable=currentField>\n<>\n\n\n\n
    \n More details\n<$list filter=\"[fields[]prefix[bibtex]sort[]] -[enlist]\" variable=currentField>\n<>\n\n
    \n\n\n\n; Cited in\n: <$macrocall $name=citedIn refname=<> /> "},"$:/plugins/kookma/refnotes/viewtemplates/incollection":{"title":"$:/plugins/kookma/refnotes/viewtemplates/incollection","created":"20210411044534237","list":"incollection","modified":"20220602131547399","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-booktitle bibtex-editor bibtex-publisher bibtex-doi bibtex-entry-type\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\" mode=block/>"},"$:/plugins/kookma/refnotes/viewtemplates/inproceedings":{"title":"$:/plugins/kookma/refnotes/viewtemplates/inproceedings","created":"20210411094926217","list":"inproceedings","modified":"20220525120447625","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-booktitle bibtex-editor bibtex-doi bibtex-entry-type\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\" mode=block/>"},"$:/plugins/kookma/refnotes/viewtemplates/main":{"title":"$:/plugins/kookma/refnotes/viewtemplates/main","created":"20181220142502642","modified":"20220525120325438","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[all[current]has[bibtex-title]]\">\n<$vars currentType={{{[get[bibtex-entry-type]lowercase[]] ~[[miscellaneous]]}}} >\n<$set name=\"bodyLookup\" \n filter=\"[all[tiddlers+shadows]tag[$:/tags/Refnotes/Template]contains:list] +[limit[1]get[title]]\"\n\t\t\tvalue=<> \n emptyValue=\"$:/plugins/kookma/refnotes/viewtemplates/default\">\t\t\n<$transclude tiddler=<> field=\"text\" mode=\"inline\"/>\n\n\n"},"$:/plugins/kookma/refnotes/viewtemplates/thesis":{"title":"$:/plugins/kookma/refnotes/viewtemplates/thesis","created":"20210410200742891","list":"phdthesis mastersthesis thesis","modified":"20220525120502605","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-school bibtex-entry-type\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\" mode=block/>"},"$:/plugins/kookma/refnotes/viewtemplates/unpublished":{"title":"$:/plugins/kookma/refnotes/viewtemplates/unpublished","created":"20210411041928587","list":"unpublished","modified":"20220525120512493","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-author bibtex-year bibtex-note bibtex-entry-type\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\" mode=block/>"},"$:/plugins/kookma/refnotes/viewtemplates/website":{"title":"$:/plugins/kookma/refnotes/viewtemplates/website","created":"20210403164529700","list":"website","modified":"20220604123055342","tags":"$:/tags/Refnotes/Template","type":"text/vnd.tiddlywiki","text":"\\define mainFields() bibtex-title bibtex-url bibtex-urldate bibtex-note bibtex-entry-type\n\n\n<$transclude tiddler=\"$:/plugins/kookma/refnotes/viewtemplates/helper\" mode=block/>"}}} \ No newline at end of file diff --git a/tiddlers/$__plugins_kookma_refnotes.json.meta b/tiddlers/$__plugins_kookma_refnotes.json.meta index 41ed198..62657ca 100644 --- a/tiddlers/$__plugins_kookma_refnotes.json.meta +++ b/tiddlers/$__plugins_kookma_refnotes.json.meta @@ -8,4 +8,4 @@ plugin-type: plugin source: https://github.com/kookma/TW-Refnotes title: $:/plugins/kookma/refnotes type: application/json -version: 1.7.3 \ No newline at end of file +version: 1.8.4 \ No newline at end of file diff --git a/tiddlers/$__plugins_kookma_shiraz.json b/tiddlers/$__plugins_kookma_shiraz.json index 3bc5a1c..f48ce7a 100644 --- a/tiddlers/$__plugins_kookma_shiraz.json +++ b/tiddlers/$__plugins_kookma_shiraz.json @@ -1 +1 @@ -{"tiddlers":{"$:/plugins/kookma/shiraz/history":{"title":"$:/plugins/kookma/shiraz/history","created":"20210225163850252","modified":"20210918195716110","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log: [[https://kookma.github.io/TW-Shiraz/#ChangeLog]]\n\n* ''2.4.4'' -- 2021.09.19 -- added css class for tbl-expand customization\n* ''2.4.2'' -- 2021.09.10 -- quick table with bunch of column formatting\n* ''2.3.3'' -- 2021.05.20 -- small bug fixes in switch palette\n* ''2.3.1'' -- 2021.05.19 -- tbl-linktype template to be used for generating node-explorer\n* ''2.3.0'' -- 2021.05.10 -- switch palette for dim/dark and light palette selection\n* ''2.2.2'' -- 2021.04.22 -- several issues fixed for pagination, notebook and image classes\n* ''2.2.0'' -- 2021.02.26 -- updated to TW 5.1.23 and pagination added to dynamic tables\n* ''2.1.1'' -- 2020.03.25 -- slider macro with initial status\n* ''2.1.0'' -- 2020.03.23 -- stable release on TW-5.1.22pre\n* ''1.0.0'' -- 2018.10.05 -- first public release\n"},"$:/plugins/kookma/shiraz/images/palette-switch":{"title":"$:/plugins/kookma/shiraz/images/palette-switch","created":"20210510155317562","modified":"20210808052511840","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/shiraz/license":{"title":"$:/plugins/kookma/shiraz/license","created":"20210225163850253","modified":"20210808052511119","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2021 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/shiraz/macros/alerts":{"title":"$:/plugins/kookma/shiraz/macros/alerts","created":"20180821095049685","modified":"20210808052511127","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define alert(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n
    \n$src$\n
    \n\\end\n\n\\define alert-leftbar(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n
    \n$src$\n
    \n\\end\n"},"$:/plugins/kookma/shiraz/macros/badge":{"title":"$:/plugins/kookma/shiraz/macros/badge","created":"20181124042103310","modified":"20210808052511132","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define badge(type:\"primary\" src:\"\")\n$src$\n\\end\n\n\\define badge-pill(type:\"primary\" src:\"\")\n$src$\n\\end\n"},"$:/plugins/kookma/shiraz/macros/card":{"title":"$:/plugins/kookma/shiraz/macros/card","created":"20181124111624466","modified":"20210808052511138","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define card(header:\"Empty\", title:\"Empty\" subtitle:\"Empty\" text:\"Empty\",footer:\"Empty\", width:\"100%\" class:\"\")\n
    \n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__header__>> >\n
    $header$
    \n\n
    \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n
    $title$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__subtitle__>> >\n
    $subtitle$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n
    <<__text__>>
    \n \n
    \n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n \n\n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/csvtables/apps":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/apps","created":"20210913061439446","modified":"20210914163550428","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define nomenclature(id:nomenclature)\n<>\n\\end\n\n\\define mathbox(id:\"\", format:\"\", delimiter:\",\")\n<>\n\\end\n\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-basic":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-basic","created":"20210910071657253","modified":"20210910081659382","tags":"","type":"text/vnd.tiddlywiki","text":"\\define text() <$text text=<> />\n\\define code() <>\n\\define transclude() <$transclude tiddler=<> field=title/>\n\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-date":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-date","created":"20210910072339252","modified":"20210910081720853","tags":"","type":"text/vnd.tiddlywiki","text":"\\define date() <$view field=title tiddler={{{[splitregexp[\\D+]!is[blank]join[]]}}} format=date template=\"YYYY-0MM-0DD\"/>\n\\define shortdate() <$view field=title tiddler={{{[splitregexp[\\D+]!is[blank]join[]]}}} format=date template=\"mmm DDth, YYYY\"/>\n\\define longdate() <$view field=title tiddler={{{[splitregexp[\\D+]!is[blank]join[]]}}} format=date template=\"DDD, MMM 0DD, YYYY\"/>\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-math":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-math","created":"20210913061042429","modified":"20210914124704452","tags":"","type":"text/vnd.tiddlywiki","text":"\\define katex() <$latex text=<> displayMode=\"true\">\n\\define katex-inline() <$latex text=<> displayMode=\"false\">\n\\define pu() <$latex text={{{ [addprefix[\\pu{]addsuffix[}]] }}} displayMode=\"false\">\n\\define equation() <$latex text={{{ [addprefix[\\begin{equation}]addsuffix[\\end{equation}]] }}} displayMode=\"true\">\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-misc":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-misc","created":"20210910072420649","modified":"20210913204706883","tags":"","type":"text/vnd.tiddlywiki","text":"\\define email() <>\n\n\\define rate()\n<$list filter=\"[split[]match[*]]\" variable=ignore>\n<$transclude tiddler=\"$:/core/images/star-filled\" />\n\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-task":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-task","created":"20210910071727034","modified":"20210910072526774","tags":"","type":"text/vnd.tiddlywiki","text":"\\define checkbox()\n\n<$list filter=\"[trim[]match[x]]\" variable=ignore>\n\n<$list filter=\"[trim[]match[-]]\" variable=ignore>\n\\end\n\n\n\\define todo-action(param)\n\n <$vars in=<> out={{{[splitregexprest[]join[,]addprefix[$param$,]]}}} >\n <$action-setfield $tiddler=<> text={{{ [get[text]search-replace:g:,] }}}/>\n \n\\end\n\n\\define todo()\n\n<$list filter=\"[trim[]match[-]]\" variable=ignore>\n<$button class=\"tc-btn-invisible\" actions=<>>\n\n\n<$list filter=\"[trim[]match[x]]\" variable=ignore>\n<$button class=\"tc-btn-invisible\" actions=<>>\n\n\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/table-csv-utility":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/table-csv-utility","created":"20210806160339977","modified":"20210910081553596","tags":"","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\n\\define mainFilter() [enlist:rawbutfirst] :sort:$(sortType)$:$(sortNegate)$[split!is[blank]trim[]nth]\n\\define tempTableSort() $:/state/tablecsv/$(currentTiddler)$/$(stateTiddler)$\n\n\n\\define column-header-template()\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"sortIndex\" text=<> tag=\"th\">\n<$button setTitle=<> setIndex=\"sortIndex\" setTo=<> class=\"tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<> $index=\"hasnegate\" $value=\"false\"/>\n<$action-setfield $tiddler=<> $index=\"negate\" $value=\"\"/>\n<$text text=<>/>\n\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"sortIndex\" text=<> tag=\"th\">\n<$list filter=\"[getindex[hasnegate]match[false]]\" variable=ignore>\n<$button setTitle=<> setIndex=\"hasnegate\" setTo=\"true\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<> $index=\"negate\" $value=\"reverse\"/>\n<$text text=<>/> {{$:/core/images/down-arrow}}\n\n\n<$list filter=\"[getindex[hasnegate]match[true]]\" variable=ignore>\n<$button setTitle=<> setIndex=\"hasnegate\" setTo=\"false\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<> $index=\"negate\" $value=\"\"/>\n<$text text=<>/> {{$:/core/images/up-arrow}}\n\n\n\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/table-csv":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/table-csv","created":"20210806160408697","modified":"20210910114432541","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define table-csv(tiddler:\"\", delimiter:\",\", sortType:\"alphanumeric\", format:\"\", caption:\"\", class:\"\", header:\"yes\", stateTiddler:\"\", id:\"\" )\n\\whitespace trim\n\\import [[$:/plugins/kookma/shiraz/macros/csvtables/table-csv-utility]]\n\\import [all[tiddlers+shadows]prefix[$:/plugins/kookma/shiraz/macros/csvtables/formats]]\n\n<$vars src = {{{ [<__tiddler__>is[tiddler]then<__tiddler__>else] }}} \n stateTiddler = {{{ [<__stateTiddler__>!is[blank]then<__stateTiddler__>else[01]] }}} >\n<$vars sortCol = {{{ [getindex[sortIndex]] }}} \n sortNegate = {{{ [getindex[negate]] }}} \n delimiter = {{{ [<__delimiter__>match[\\t]then[°≡°]else<__delimiter__>] }}}\n dataBlockStartDelimiter ={{{ [<__id__>is[blank]then[\" >\n\n\n<$vars dblock0 = {{{ [get[text]splitregexpbutfirst[1]] }}} >\n<$vars dblock1 = {{{ [splitregexpbutlast[1]] }}} >\n<$vars dblock = {{{ [!match[°≡°]then] :else[search-replace:g:regexp[\\t],[°≡°]] }}} >\n\n\n\n<$list filter=\"[<__caption__>!is[blank]]\" variable=ignorw>\n\n<$list filter=\"[<__header__>match[yes]then[1]else[0]]\" variable=header_row>\n\n<$set name=allRows filter=\"\"\"[splitregexp[\\n]!is[blank]]\"\"\">\n\n<$list filter=\"[enlist:rawfirst]\" variable=row >\n<$list filter=\"[splitregexp!is[blank]trim[]]\" variable=currentColumn><>\n\n\n<$vars sortPos = {{{ [enlist:rawfirstsplitregexp!is[blank]trim[]] +[allbefore:includecount[]] }}} >\n<$vars sortType = {{{ [enlist:raw<__sortType__>nthelse[alphanumeric]] }}} >\n<$list filter=<> variable=row>\n<$list filter=\"[splitregexp!is[blank]trim[]]\" variable=entry counter=pos>\n\n\n\n\n\n\n\n
    $caption$
    <$macrocall $name={{{ [enlist:raw<__format__>nthelse[text]] }}} />
    \n\n\n\n\n\n\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dbadge":{"title":"$:/plugins/kookma/shiraz/macros/dbadge","created":"20181203212737578","modified":"20210808052511146","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define dbadge(subject,status, type:\"primary\")\n
    $subject$$status$
    \n\\end\n"},"$:/plugins/kookma/shiraz/macros/details":{"title":"$:/plugins/kookma/shiraz/macros/details","created":"20181101185833098","modified":"20210808052511151","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define details(label:\"\", src:\"source\", status:\"\", labelClass:\"\", srcClass:\"\")\n<$vars source = {{{ [<__src__>get[text]else<__src__>] }}} >\n
    \n $label$\n
    \n\t\n <>\n
    \n
    \n\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/confirm-delete":{"title":"$:/plugins/kookma/shiraz/macros/dtables/confirm-delete","created":"20191129201531051","modified":"20210808052511159","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define confirm-delete()\n\n<$list filter=\"[subfilterlimit[1]]\" variable=ignore>\n<$reveal class=\"tbl-delete-confirm\" type=\"match\" state=\"$:/temp/tables/delete-all!!text\" text=<> tag=\"tr\">\n> >\n<$list filter=\"[[$:/temp/tables/delete-all]get[confirm]match[yes]]\" \n variable=ignore emptyMessage=<> >\n <>\n\n\n\n\n\\end\n\n\\define ask-for-delete()\n<$set name=ntids filter=\"[subfiltercount[]]\">\n Delete all <> records?\n\t<$button class=\"tc-btn-invisible\">\n <$action-setfield $tiddler=\"$:/temp/tables/delete-all\" $field=\"confirm\" $value=\"yes\"/>\n {{$:/core/images/delete-button}} yes\n or \n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n {{$:/core/images/close-button}} no\n \n\t\t\t\t\n\\end\n\n\\define perform-delete()\n Warning! this action cannot be undone!\n\t<$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n <$list filter=<> variable=\"currentRecord\">\n <$action-deletetiddler $tiddler=<>/>\n \n\t\t {{$:/core/images/delete-button}} delete\n or \n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n\t\t\t{{$:/core/images/close-button}} cancel \n \n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/helper":{"title":"$:/plugins/kookma/shiraz/macros/dtables/helper","created":"20191203102929722","modified":"20210808052511172","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define columnFilter() $(columns)$ tbl-clone tbl-delete\n\n\\define tempTable() $:/state/dynamictables/$(currentTable)$\n\n\\define tempTableSort() $(tempTable)$/sortby\n\\define tempTagPopup() $(tempTable)$/$(currentRecord)$/$(currentTiddler)$\n\\define tempTableExpand() $(tempTable)$/expand\n\\define tempPathExpand() $(tempTableExpand)$##$(currentRecord)$\n\\define tempTableEdit() $(tempTable)$/edit-view-status\n\n\\define keepstate() $:/keepstate/dynamictables/$(currentTable)$\n\n\\define tempTableFooter() $(keepstate)$/footer\n\\define tempTableStyle() $(keepstate)$/style\n\\define tempWarningMsg() $(keepstate)$/warning\n\n\\define pageStateTiddler() $(keepstate)$/page-number\n\\define entryPerPageStateTiddler() $(keepstate)$/entry-per-page\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/maths":{"title":"$:/plugins/kookma/shiraz/macros/dtables/maths","created":"20200209153246553","modified":"20210808073255865","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define average(pn:0) <$text text={{{ [subfilter$(getFieldOrIndex)$average[]] }}}/>\n\\define median(pn:0) <$text text={{{ [subfilter$(getFieldOrIndex)$median[]] }}}/>\n\n\\define count() <$text text={{{ [subfilter$(getFieldOrIndex)$count[]] }}}/>\n\\define sum() <$text text={{{ [subfilter$(getFieldOrIndex)$sum[]] }}}/>\n\\define product() <$text text={{{ [subfilter$(getFieldOrIndex)$product[]] }}}/>\n\n\\define minall() <$text text={{{ [subfilter$(getFieldOrIndex)$minall[]] }}}/>\n\\define maxall() <$text text={{{ [subfilter$(getFieldOrIndex)$maxall[]] }}}/>\n\n\n\n\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/pagination":{"title":"$:/plugins/kookma/shiraz/macros/dtables/pagination","created":"20210224180410216","modified":"20210808052511185","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define prev-button()\n\n<$list filter=\"[compare:number:lt[2]then[yes]else[no]]\" variable=state>\n<$button disabled=<> class=\"shiraz-dtable-page-prev tc-btn-invisible\">\n{{$:/core/images/chevron-left}} Prev\n<$action-listops $tiddler=<> $field=text $subfilter=\"+[subtract[1]] ~[[1]]\"/>\n\n\n\\end\n\n\\define next-button()\n\n<$list filter=\"[compare:number:gteqthen[yes]else[no]]\" variable=state> \n<$button disabled=<> class=\"shiraz-dtable-page-next tc-btn-invisible\">\nNext {{$:/core/images/chevron-right}} \n<$action-listops $tiddler=<> $field=text $subfilter=\"+[add[1]] ~[[2]]\"/>\n\n\n\\end\n\n\\define limit-entries()\n\n<$select tiddler=<> default=25 actions=\"\"\"<$action-setfield $tiddler=<> text=1/>\"\"\">\n<$list filter='5 10 15 20 25 30 40 50' variable=num>\n\n\n\n\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/show-edit-cell":{"title":"$:/plugins/kookma/shiraz/macros/dtables/show-edit-cell","created":"20200209135600453","modified":"20210808052511192","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n <$list filter=\"[]-index\">\n <$transclude tiddler=<> field=<> mode=\"inline\" />\n \n <$list filter=\"[]-field\">\n <$transclude tiddler=<> index=<> mode=\"inline\" />\n \n\\end\t\n\\define editCell()\n <$list filter=\"[]-index\">\n <$edit-text tiddler=<> field=<> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n \n <$list filter=\"[]-field\">\n <$edit-text tiddler=<> index=<> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n \n\\end\n\n\\define showCell_Locked()\n <>\n\\end "},"$:/plugins/kookma/shiraz/macros/dtables/table-dynamic":{"title":"$:/plugins/kookma/shiraz/macros/dtables/table-dynamic","created":"20200209100939116","modified":"20210808052511219","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define table-dynamic(filter, fields:\"\", indexes:\"\", sortOp:\"sort\", caption:\"\", class:\"\",\n footerRows:\"0\", stateTiddler:\"\", editButton:\"yes\", pagination:\"no\", emptyMessage:\"filter input is empty\")\n\n\\import [all[shadows+tiddlers]tag[$:/tags/Table/Macro]]\n\n\n<$vars \n inputFilter=\"[subfilter<__filter__>!has[draft.of]]\"\n sortType=<<__sortOp__>>\n pagination=<<__pagination__>>\n> \n<$set name=currentTable value=<<__stateTiddler__>> emptyValue=<> >\n\n<$set name=fieldOrIndex filter=\"[<__fields__>!is[blank]]\" value=\"field\" emptyValue=\"index\">\n<>\n<$set name=columns filter=\"[]-index\" value=<<__fields__>> emptyValue=<<__indexes__>> >\n\n<$list filter=\"[subfilterlimit[1]]\" emptyMessage=<<__emptyMessage__>> variable=ignore>\n<$set name=sortneg tiddler=<> index=\"negate\">\n\n<$set name=ncols filter=\"[getindex[mode]match[edit]]\" value={{{ [subfiltercount[]] }}} emptyValue= {{{ [subfiltercount[]subtract[2]] }}}>\n
    \n> style=\"caption-side:top\">\n\n\n\n\n\n<>\n\n<$list filter=<> variable=currentColumn>\n<$set name=\"headerLookup\" filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/HeaderTemplate]contains:tbl-column-listlimit[1]get[title]]\" value=<> emptyValue=\"$:/plugins/kookma/shiraz/templates/header/default\">\n <$transclude tiddler=<> field=\"text\" mode=\"inline\"/>\n\n\n\n\n\n\n<$reveal type=\"gt\" default=<<__footerRows__>> text=\"0\" tag=\"tfoot\" class=\"shiraz-dtable-footer\">\n\n<$list filter=\"[range[1,$footerRows$]addprefix[footer-]]\" variable=footerRow>\n\n<$list filter=<> variable=currentColumn>\n<$set name=\"footerLookup\" filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/FooterTemplate]contains:tbl-column-listlimit[1]get[title]]\" value=<> emptyValue=\"$:/plugins/kookma/shiraz/templates/footer/default\">\n<$transclude tiddler=<> field=\"text\" mode=\"inline\"/>\n\n\n\n\n\n\n\n\n<$set name=tableBody filter=\"[]-index\" value=\"display_body_fields\" emptyValue=\"display_body_indexes\" >\n\n<$vars total-entries={{{[subfiltercount[]] }}}\n\t\t\t page-number={{{[get[text]] ~[[1]]}}} \n\t\t\t entries-per-page={{{ [get[text]] ~[[25]] }}} >\n<$vars low={{{ [subtract[1]multiply] }}} \n high={{{[multiply] }}} >\t \n<$macrocall $name=<> />\n\n<$reveal type=\"match\" default=<> text=\"yes\" tag=\"tr\" class=\"shiraz-dtable-page-footer\">\n\n\n\n\n\n\n
    \n<$list filter=\"[<__editButton__>match[yes]]\" variavle=ignore>\n<>\n$caption$
    > style=\"font-weight:bold;background-color:transparent;\">Numerical summary
    > >\n<>\nDisplaying <$text text={{{[add[1]]}}}/> through <$text text={{{ [compare:number:ltthenelse] }}}/> of <> Results | <>\n<>\n
    \n
    \n\n\n\n\n\n\n\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/table-utility":{"title":"$:/plugins/kookma/shiraz/macros/dtables/table-utility","created":"20200209195541061","modified":"20210918193243499","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define tableFilter_fields() $(inputFilter)$+[$(sortneg)$$(sortType)${$(tempTableSort)$##sortIndex}]\n\\define tableFilter_indexes() [enlist]+[$(sortneg)$$(sortType)$[]]\n\n\\define getitems()\n<$set name=Index tiddler=<> index=\"sortIndex\">\n<$list filter=\"[subfilter!has[draft.of]]\" >\n<$text text=\"[[\"/>{{{ [getindexaddsuffix[°≡°]] }}}<><$text text=\"]]\"/>\n\n\n\\end\n\n\\define display_one_record()\n<$wikify name=\"rowStyle\" text=\"\"\"<$transclude tiddler=<> index=<> />\"\"\" mode=\"inline\">\n>>\n<$list filter=<> variable=currentColumn>\n<$set name=\"bodyLookup\" \n filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/BodyTemplate]contains:tbl-column-list]\n +[limit[1]get[title]]\"\n value=<> \n emptyValue=\"$:/plugins/kookma/shiraz/templates/body/default\">\n<$transclude tiddler=<> field=\"text\" mode=\"inline\"/>\n\n\n\n\n<$reveal type=\"match\" state=<> text=\"show\" tag=\"tr\">\n<>\n\n\n\\end\n\n\\define display_body_fields() \n<$set name=finalFilter filter=\"[match[yes]]\" value=\"[subfilterfirst] -[subfilterfirst]\" emptyValue=\"[subfilter]\">\n<$list filter=\"[subfilter]\" variable=\"currentRecord\">\n<>\n\n\n\\end\n\n\\define display_body_indexes()\n<$wikify name=\"items\" text=<> > \n<$set name=finalFilter filter=\"[match[yes]]\" value=\"[subfilterfirst] -[subfilterfirst]\" emptyValue=\"[subfilter]\">\n<$list filter=\"[subfilter]\" variable=\"currentItem\">\n<$list filter=\"[split[°≡°]last[]]\" variable=\"currentRecord\">\n <>\n\n\n\n\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/tbl-expand":{"title":"$:/plugins/kookma/shiraz/macros/dtables/tbl-expand","created":"20191203155802107","modified":"20210918193738145","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define display-expanded-record()\n> class=\"shiraz-dtable-expanded-record\">\n<$tiddler tiddler=<> >\n<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore\n emptyMessage=\"\"\"<$transclude tiddler=<> field=text mode=block/>\"\"\" >\n <$edit-text class=\"tbl-inpt-edit\" tiddler=<> field=\"text\" tag=textarea/>\n\n\n\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/toggle-edit-view":{"title":"$:/plugins/kookma/shiraz/macros/dtables/toggle-edit-view","created":"20191128215812372","modified":"20210808052511239","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define toggle-edit-view()\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" setTitle=<> setIndex=\"mode\" setTo=\"edit\">{{$:/core/images/edit-button}}\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" setTitle=<> setIndex=\"mode\" setTo=\"view\">{{$:/core/images/done-button}}\n\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/warning_message":{"title":"$:/plugins/kookma/shiraz/macros/dtables/warning_message","created":"20200210083402839","modified":"20210808052511245","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define show_tiddler_types()\n
    \n List tiddlers with wrong type\n\t
    \n <$list filter=\"[subfilter]\">\n\t<$list filter=\"[get[type]match[application/x-tiddler-dictionary]][get[type]match[application/json]]\" variable=ignore\n\temptyMessage=\"\"\"
    <$link/>
    <$view field=type/>
    \"\"\">\n\t\n\t\n\t
    \n
    \n\\end\n\n\n\\define show_warning_message()\nDynamic editable table from ''indexes'' expects all input tiddlers are of dataTiddler (json or dictionary) types. Using tiddlers of non //json// or //x-tiddler-dictionary// types as input can unintentionally overwrite the data in the text field of those tiddlers.
    \n
    \nCheck the tiddler types to find which tiddlers are not of dataTiddler types!
    \n<>\n\\end\n\n\n\\define check_tiddlers_type_for_table_from_indexes(isEditable)\n <$list filter=\"[]-field\" variable=ignore>\n\t<$list filter=\"[<__isEditable__>match[yes]]\" variable=ignore> \n\t<$list filter=\"[is[missing]]\" variable=ignore>\n\t<$list filter=\"[subfiltereach[type]get[type]]-[[application/x-tiddler-dictionary]]-[[application/json]]\" variable=ignore>\n\t
    \n\t Danger: Editable dynamic table from idexes with mixed types of tiddlers!  \n\t <$button class=\"tc-btn-invisible tc-tiddlylink\" style=\"fill:white;\" tooltip=\"Dismiss alert and continue with the current selection!\">{{$:/core/images/close-button}}\n <$action-setfield $tiddler=<> text=\"dissmiss\"/>\n \n\t
    \n\t
    \n\t <>\n\t
    \n \n\t\n\t\n\t\n\\end\t\n"},"$:/plugins/kookma/shiraz/macros/image-basic":{"title":"$:/plugins/kookma/shiraz/macros/image-basic","created":"20181119183704246","modified":"20210808052511253","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-basic(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n
    \n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>> /> \n
    $caption$
    \n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/image-card-utility":{"title":"$:/plugins/kookma/shiraz/macros/image-card-utility","created":"20191209113750505","modified":"20210808052511268","type":"text/vnd.tiddlywiki","text":"\\define image-card-top(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n
    \n <$image class=\"card-img-top\" source=<<__img__>> alt=<<__alt__>> />\n
    \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n
    $title$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n
    $text$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n

    $footer$

    \n \n
    \n
    \n\\end\n\n\\define image-card-bottom(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n
    \n
    \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n
    $title$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n
    $text$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n

    $footer$

    \n \n
    \n <$image class=\"card-img-bottom\" source=<<__img__>> alt=<<__alt__>> />\n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/image-card":{"title":"$:/plugins/kookma/shiraz/macros/image-card","created":"20190913094619863","modified":"20210808052511263","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-card(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", pos:\"top\", alt:\"\")\n\\import $:/plugins/kookma/shiraz/macros/image-card-utility\n<$reveal tag=\"div\" type=\"match\" default=\"top\" text=<<__pos__>> >\n<$macrocall $name=image-card-top img=<<__img__>> title=<<__title__>> text=<<__text__>>\n footer=<<__footer__>> width=<<__width__>> align=<<__align__>> alt=<<__alt__>> />\n\n<$reveal tag=\"div\" type=\"nomatch\" default=\"top\" text=<<__pos__>> >\n<$macrocall $name=image-card-bottom img=<<__img__>> title=<<__title__>> text=<<__text__>>\n footer=<<__footer__>> width=<<__width__>> align=<<__align__>> alt=<<__alt__>> />\n\n\\end\n\n\\define image-card-top(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n
    \n <$image class=\"card-img-top\" source=<<__img__>> alt=<<__alt__>> />\n
    \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n
    $title$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n
    $text$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n

    $footer$

    \n \n
    \n
    \n\\end\n\n\\define image-card-bottom(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n
    \n
    \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n
    $title$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n
    $text$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n

    $footer$

    \n \n
    \n <$image class=\"card-img-bottom\" source=<<__img__>> alt=<<__alt__>> />\n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/image-overlay-utility":{"title":"$:/plugins/kookma/shiraz/macros/image-overlay-utility","created":"20191209114338849","modified":"20210808052511284","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define _cls-content-details() image-overlay-content-details $(fdcls)$"},"$:/plugins/kookma/shiraz/macros/image-overlay":{"title":"$:/plugins/kookma/shiraz/macros/image-overlay","created":"20181117203737197","modified":"20210808052511276","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-overlay(img, width:\"30%\", align:\"none\", caption:\"\", title:\"\", text:\"\", fadein:\"left\", alt:\"\")\n\\import $:/plugins/kookma/shiraz/macros/image-overlay-utility\n
    \n

    $caption$

    \n
    \n
    \n <$image class=\"image-overlay-content-image\" source=<<__img__>> alt=<<__alt__>>/>\n <$set name=\"fdcls\" filter=\"$fadein$ +[splitbefore[ ]] +[addprefix[image-overlay-fadeIn-]]\">\n
    > >\n

    $title$

    \n

    $text$

    \n
    \n \n
    \n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/image-polaroid":{"title":"$:/plugins/kookma/shiraz/macros/image-polaroid","created":"20181117203654803","modified":"20210808052511292","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-polaroid(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n
    \n <$image source=\"\"\"$img$\"\"\" tooltip=\"\"\"$tooltip$\"\"\"/>\n
    $caption$
    \n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/image-pretty":{"title":"$:/plugins/kookma/shiraz/macros/image-pretty","created":"20181117203541398","modified":"20210808052511297","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-pretty(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n
    \n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>> /> \n
    $caption$
    \n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/image-slidein":{"title":"$:/plugins/kookma/shiraz/macros/image-slidein","created":"20181117040544570","modified":"20210808052511301","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-slidein(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", slidein:\"left\", alt:\"\")\n
    \n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>>/>\n
    $caption$
    \n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/list-search":{"title":"$:/plugins/kookma/shiraz/macros/list-search","author":"Jeremy Ruston","created":"20191209101857832","creator":"Mohammad","description":"creates few paragraphs of dumy text","modified":"20210808052511310","modifier":"Mohammad","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define list-search( filter:\"[!is[system]]\", search:\"search:title\", template:\"$:/core/ui/ListItemTemplate\",\n class:\"\", stateTiddler:\"\", placeholder:\"keywords\")\n<$set name=\"state\" filter=\"[[$:/temp/list-search]addsuffix[/$stateTiddler$]addsuffix]\">\n
    > >\n<$edit-text tiddler=<> type=\"search\" tag=\"input\" default=\"\" placeholder=\"$placeholder$\"/>\n
    \n<$reveal state=<> type=\"match\" text=\"\" class=<<__class__>> tag=div>\n<$list filter=\"$filter$\" template=<<__template__>>/>\n\n<$reveal state=<> type=\"nomatch\" text=\"\" class=<<__class__>> tag=div>\n<$set name=term tiddler=<> field=\"text\">\n<$list filter=\"$filter$+[$search$]\" template=<<__template__>>/>\n\n\n\n\\end\n"},"$:/plugins/kookma/shiraz/macros/multicol":{"title":"$:/plugins/kookma/shiraz/macros/multicol","created":"20191018063242993","modified":"20210808052511318","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define multicol(src, ncol:\"\", class:\"\")\n
    \n\n$src$\n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/slider":{"title":"$:/plugins/kookma/shiraz/macros/slider","created":"20190322161929431","description":"Slider macro shows (hides) its content.","modified":"20210808052511326","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define slider(label, src, labelClass, srcClass, status:\"closed\")\n<$vars revealState = \"\"\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\"\"\"\n source = {{{ [<__src__>get[text]else<__src__>] }}} >\n\n\n

    \n <$reveal type=\"nomatch\" state=<> text=\"open\" default=\"$status$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<> setTo=\"open\">\n <$transclude tiddler=\"$:/core/images/right-arrow\" />\n \n \n <$reveal type=\"match\" state=<> text=\"open\" default=\"$status$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<> setTo=\"closed\">\n <$transclude tiddler=\"$:/core/images/down-arrow\" />\n \n \n $label$\n

    \n\n<$reveal type=\"match\" state=<> text=\"open\" default=\"$status$\" class=\"$srcClass$\" tag=div>\n\n<>\n\n\n\n\\end"},"$:/plugins/kookma/shiraz/macros/space":{"title":"$:/plugins/kookma/shiraz/macros/space","created":"20170629183034888","modified":"20210808052511332","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define vspace(height:\"25px\")\n

    \n\\end\n\n\\define hspace(width:\"25px\")\n\n\\end\n"},"$:/plugins/kookma/shiraz/macros/text-utility":{"title":"$:/plugins/kookma/shiraz/macros/text-utility","created":"20181101154956345","modified":"20210808052511341","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define tc(src:\"\", color:\"red\") $src$\n\\define bc(src:\"\", color:\"yellow\") $src$\n\\define mono(src:\"\", class:\"\") $src$\n\\define transform(case:\"\", src:\"\", class:\"\") $src$"},"$:/plugins/kookma/shiraz/readme":{"title":"$:/plugins/kookma/shiraz/readme","created":"20210225163850254","modified":"20210808052511349","tags":"","type":"text/vnd.tiddlywiki","text":"; Shiraz\nShiraz is a small framework of stylesheets, templates and macros to create stylish contents in Tiddlywiki. Shiraz has customized elements like alerts, cards, panels, images, static tables, dynamic tables, badges, texts, etc. Shiraz uses some modified CSS classes from [[Bootstrap|https://getbootstrap.com/]] 4.3.1.\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Shiraz/\n* Code: https://github.com/kookma/TW-Shiraz\n"},"$:/plugins/kookma/shiraz/styles/alerts-leftbar":{"title":"$:/plugins/kookma/shiraz/styles/alerts-leftbar","text":".leftbar{\n border-width:0px !important;\n border-radius:0px !important;\n border-left-width: 5px !important;\n}","created":"20181208184228896","modified":"20210808052511357","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bglowtone-colors":{"title":"$:/plugins/kookma/shiraz/styles/bglowtone-colors","text":"/* Colors taked from [1] https://www.bg-w3schools.bg-com/colors/colors_names.bg-asp \n[2] http://www.bg-workwithcolor.bg-com/color-chart-full-01.bg-htm*/\n/*Low tone background colors*/\n.bg-mistyrose{background-color:#ffe4e1;}\n.bg-lemonchiffon{background-color:#fffacd;}\n.bg-lavenderblush{background-color:#fff0f5;}\n.bg-lavender{background-color:#e6e6fa;}\n.bg-honeydew{background-color:#f0fff0;}\n.bg-lightcyan{background-color:#e0ffff;}\n.bg-aliceblue{background-color:#f0f8ff;}\n.bg-cornsilk{background-color:#fff8dc;}\n.bg-gainsboro{background-color:#dcdcdc;}\n.bg-bisque{background-color:#ffe4c4;}\n.bg-snow{background-color:#fffafa;}","created":"20181029071532524","list":"mistyrose lemonchiffon lavenderblush lavender honeydew lightcyan aliceblue cornsilk gainsboro bisque snow","modified":"20210808052511365","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/alerts":{"title":"$:/plugins/kookma/shiraz/styles/bs/alerts","text":"/*Was taken from bootstrap 4.1.3*/\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n","created":"20180820171551129","modified":"20210808052511374","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/background-colors":{"title":"$:/plugins/kookma/shiraz/styles/bs/background-colors","text":".bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}","created":"20180820170518161","modified":"20210808052511382","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/badge":{"title":"$:/plugins/kookma/shiraz/styles/bs/badge","text":"/* Extracted from bootstrap 4.1.3 */\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #545b62;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n}\n\n","created":"20181122140031075","modified":"20210808052511390","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/borders":{"title":"$:/plugins/kookma/shiraz/styles/bs/borders","text":".border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n","created":"20180820174710383","modified":"20210808052511397","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/btn":{"title":"$:/plugins/kookma/shiraz/styles/bs/btn","text":"/* Button and btn classes Mohammad*/\n.btn {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n\n.btn:hover, .btn:focus {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n border-color: transparent;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n/* button size */\n\n.btn-lg{\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm{\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}","created":"20180822044340070","modified":"20210808052511406","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-column":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-column","text":"/* Extracted from bootstrap 4.3.1 */\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n -moz-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n -moz-column-gap: 1.25rem;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}","created":"20181122175345419","modified":"20210808052511418","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-deck":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-deck","text":"/* Extracted from bootstrap 4.1.3 */\n\n.card-deck {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}","created":"20180822174847352","modified":"20210808052511426","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-group":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-group","text":"/* Extracted from bootstrap 4.1.3 */\n.card-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n }\n .card-group > .card {\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-top,\n .card-group > .card:first-child .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-bottom,\n .card-group > .card:first-child .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-top,\n .card-group > .card:last-child .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-bottom,\n .card-group > .card:last-child .card-footer {\n border-bottom-left-radius: 0;\n }\n .card-group > .card:only-child {\n border-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-top,\n .card-group > .card:only-child .card-header {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-bottom,\n .card-group > .card:only-child .card-footer {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0;\n }\n}\n","created":"20181122175111676","modified":"20210808052511431","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card":{"title":"$:/plugins/kookma/shiraz/styles/bs/card","text":"/* Extracted from bootstrap 4.1.3 */\n.card {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n","created":"20180822174608965","modified":"20210808052511411","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/clearfix":{"title":"$:/plugins/kookma/shiraz/styles/bs/clearfix","text":".clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}","created":"20190919042042391","modified":"20210808052511439","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/float":{"title":"$:/plugins/kookma/shiraz/styles/bs/float","text":".float-left {\n float: left;\n}\n\n.float-right {\n float: right;\n}\n\n.float-none {\n float: none;\n}\n","created":"20180823142040855","modified":"20210808052511446","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/my-adjustment":{"title":"$:/plugins/kookma/shiraz/styles/bs/my-adjustment","text":"/* My adjustments to bootstrap 4.1.3 css classes */\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n/* Link is hacked to be compatible with bootstrap \nclasses remove it if the TW core objects break\n*/\n\n","created":"20180822044831813","modified":"20210808052511454","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/shadow":{"title":"$:/plugins/kookma/shiraz/styles/bs/shadow","text":".shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}","created":"20180823114259911","modified":"20210808052511462","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/sizing-spacing":{"title":"$:/plugins/kookma/shiraz/styles/bs/sizing-spacing","text":"/* Extracted from bootstrap 4.3.1 */\n/*Defines margins, paddings, width and height*/\n.w-25 {\n width: 25% !important;\n}\n.w-50 {\n width: 50% !important;\n}\n.w-75 {\n width: 75% !important;\n}\n.w-100 {\n width: 100% !important;\n}\n.w-auto {\n width: auto !important;\n}\n.h-25 {\n height: 25% !important;\n}\n.h-50 {\n height: 50% !important;\n}\n.h-75 {\n height: 75% !important;\n}\n.h-100 {\n height: 100% !important;\n}\n.h-auto {\n height: auto !important;\n}\n.mw-100 {\n max-width: 100% !important;\n}\n.mh-100 {\n max-height: 100% !important;\n}\n.m-0 {\n margin: 0 !important;\n}\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n.m-1 {\n margin: 0.25rem !important;\n}\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n.m-2 {\n margin: 0.5rem !important;\n}\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n","created":"20180822191952379","modified":"20210808052511469","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-alignment":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-alignment","text":".text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}","created":"20180822051223866","modified":"20210808052511477","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-colors":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-colors","text":"/* from bootstrap 4.1.3 */\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0062cc !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #545b62 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #1e7e34 !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #117a8b !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #d39e00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #bd2130 !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #dae0e5 !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #1d2124 !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n","created":"20180820173351023","modified":"20210808052511485","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-utility":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-utility","text":"/* Can be removed latter. This is used for illustration of bootstrap cards */\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n color: inherit;\n}\n\n.h1 {\n font-size: 2.5rem;\n}\n\n.h2 {\n font-size: 2rem;\n}\n\n.h3 {\n font-size: 1.75rem;\n}\n\n.h4 {\n font-size: 1.5rem;\n}\n\n.h5 {\n font-size: 1.25rem;\n}\n\n.h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n","created":"20180822130528002","modified":"20210808052511493","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/clear-float":{"title":"$:/plugins/kookma/shiraz/styles/clear-float","text":"/* Resolve issue for floating objects which cross the tiddler frame!\nThe below code should force the tiddler to always wrap around floating elements, so that they are always inside\nRef: https://groups.google.com/d/msg/tiddlywiki/5bZwwj6cyac/2LzFeA7AAwAJ\n*/\n\n.tc-tiddler-body:before, .tc-tiddler-body:after {\n content: \"\";\n display: table;\n}\n.tc-tiddler-body:after {\n clear: both;\n}\n.tc-tiddler-body {\n zoom: 1;\n}","created":"20190902043605186","modified":"20210808052511498","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab":{"title":"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab","text":".tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n background: none;\n border: none;\n border-bottom: solid 1px #737373;\n font-weight: bold;\n color: #DB4C3F;\n}","created":"20191209105546612","modified":"20211117172558880","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/csvtable-katex":{"title":"$:/plugins/kookma/shiraz/styles/csvtable-katex","text":".falign .katex-display > .katex {text-align:left;}\n.ralign .katex-display > .katex {text-align:right;}\n.table-mathbox tr td{vertical-align: baseline;} /* baseline aligned text and fomula in table cell*/\n\n/*\nOnly used with csv table + katex\nSee $:/plugins/kookma/shiraz/macros/csvtables/formats-math\n*/","created":"20210913204223405","modified":"20210914150205318","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dbadge":{"title":"$:/plugins/kookma/shiraz/styles/dbadge","text":"/*Credits: \nNishant Srivastava https://codepen.io/nisrulz/pen/bpQWLW\nMohammad Rahmani: https://github.com/kookma\n*/\n.dbadge {\n display: inline-block;\n margin: 0.0em;\n}\n.dbadge > span {\n color: #ffffff;\n font-size: 0.8em;\n font-weight: 400;\n line-height: 1;\n padding: .2em .6em;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;}\n\n.dbadge-subject{\n background-color: #656565;\n border-bottom-left-radius: 0.25em;\n border-top-left-radius: 0.25em;}\n.dbadge-status {\n border-bottom-right-radius: 0.25em;\n border-top-right-radius: 0.25em;}\n\n.dbadge-primary {\n background-color: #337ab7;}\n.dbadge-success {\n background-color: #5cb85c;}\n.dbadge-info {\n background-color: #5bc0de;}\n.dbadge-warning {\n background-color: #f0ad4e;}\n.dbadge-danger {\n background-color: #d9534f;}","created":"20181204192835967","modified":"20210808052511511","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/details-slider":{"title":"$:/plugins/kookma/shiraz/styles/details-slider","text":"/*details html5 macro*/\ndetails > summary {\n padding: 2px 6px;\n font-weight:500;\n outline:none;\n}\ndetails > div {\n padding: 2px 6px;\n margin: 0;\n}\n\nbutton .kk-sh-slider svg{\nwidth: 0.8em;\nheight: 0.8em;\nvertical-align: middle;}","created":"20181101185908941","modified":"20210808052511516","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dynamic-tables-var":{"title":"$:/plugins/kookma/shiraz/styles/dynamic-tables-var","created":"20210224171009495","modified":"20210808052511528","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"/* these are dynamic or variable properties based on the tiddlywiki palette */\n\n.shiraz-dtable-page-footer select{\n background-color: <>;\n color:<>;\n}\n\n.shiraz-dtable-page-footer > td{\nbackground-color: <>;\n}\n\n/* customize the table footer used for numerical summary*/\n.shiraz-dtable-footer tr td{\n\tbackground-color: <>;\n border:none;\n}\n"},"$:/plugins/kookma/shiraz/styles/dynamic-tables":{"title":"$:/plugins/kookma/shiraz/styles/dynamic-tables","text":"/* edit-text box for dynamic table */\n.shiraz-dtable-textbox {\n width:100%;\n padding-left: 5px;\n border: none;\n}\n\n.shiraz-dtable-textbox:focus {\n outline: none;\n border: 1px solid #5778d8;\n background: transparent;\n}\n\n.tbl-inpt-edit { width: 100%; background-color: transparent; border: none; color: #000000;}\n\nbutton.tbl-sort-svg > svg { text-shadow: none; fill:#000000; height:10px; padding:0 0 2px 0; }\n\nth .tc-tiddlylink, th a { text-shadow: none; margin: 0 0 0 0; padding: 0 0 0 0; color:#000000; font-weight: bold; }\n\n\n/* DELETE CONFIRMATION */\ntable thead .tbl-delete-confirm > th {\n color: white;\n background-color:#ff0033;\n padding: 8px;\n margin: 0px;\n text-align:center;\n\tfont-weight:normal;\n}\n\ntable thead .tbl-delete-confirm > th > button {\n color: white;\n fill: white;\n}\n\n/* -- pagination --*/\n.shiraz-dtable-page-footer td{\n\tmargin: 0 0 0 0;\n\tpadding: 4px 7px 4px 7px;\n}\n\n.shiraz-dtable-page-footer select{\n\tpadding:0;\n\tmargin:0;\n\tborder:none;\t\n}\n\n.shiraz-dtable-page-footer {\n\ttext-align:center;\n}\n\n.shiraz-dtable-page-prev{\n\tfloat:left;\n\tmargin-right:8px;\n}\n\n.shiraz-dtable-page-next{\n\tfloat:right;\n\tmargin-left:8px;\n}\n\n.shiraz-dtable-page-footer button svg {height:0.7em;}\n.shiraz-dtable-page-footer button {outline: none; line-height:normal;}\n.shiraz-dtable-page-footer button:disabled {display:none;}\n\n/* to format the expanded record (tiddler body) - for local customization like KaTeX numbering */\n.shiraz-dtable-expanded-record{ }\n\n/*to adjust the column width for date/due-date fields*/\n.shiraz-dtable-date{\n\twidth:7em;\n}","created":"20191128184537594","modified":"20211117172018885","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-alignment":{"title":"$:/plugins/kookma/shiraz/styles/image-alignment","text":"/*Image aligning classes*/\n.image-align-right{\n float:right;\n margin:0.5em 0 1.3em 1.4em;\n}\n.image-align-left{\n float:left;\n margin: 0.5em 1.4em 1.3em 0;\n}\n.image-align-center{\n display:block;\n margin: 0.5em auto 1.3em; \n}\n\n.image-float-none {\n float: none !important;\n}","created":"20190918193736314","modified":"20210808052511534","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-basic":{"title":"$:/plugins/kookma/shiraz/styles/image-basic","text":".image-basic {\n text-align: center;\n font-style: italic;\n font-size: smaller;\n text-indent: 0;\n padding: 0.5em;\n}","created":"20181119182848505","modified":"20210808052511542","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-overlay":{"title":"$:/plugins/kookma/shiraz/styles/image-overlay","text":".image-overlay-container{\n width: 50%; \n box-sizing: border-box;\n}\n\n@media screen and (max-width: 640px){\n .image-overlay-container{\n display: block;\n width: 100%;\n }\n}\n\n@media screen and (min-width: 900px){\n .image-overlay-container{\n width: 33.33%;\n }\n}\n\n.image-overlay-container .image-overlay-title{\n color: #1a1a1a;\n text-align: center;\n margin-bottom:10px;\n}\n\n.image-overlay-content {\n position: relative;\n width: 90%;\n max-width: 400px;\n margin: auto;\n overflow: hidden;\n}\n\n.image-overlay-content .image-overlay-content-overlay {\n background: rgba(0,0,0,0.7);\n position: absolute;\n height: 99%;\n width: 100%;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n opacity: 0;\n -webkit-transition: all 0.4s ease-in-out 0s;\n -moz-transition: all 0.4s ease-in-out 0s;\n transition: all 0.4s ease-in-out 0s;\n}\n\n.image-overlay-content:hover .image-overlay-content-overlay{\n opacity: 1;\n}\n\n.image-overlay-content-image{\n width: 100%;\n}\n\n.image-overlay-content-details {\n position: absolute;\n text-align: center;\n padding-left: 1em;\n padding-right: 1em;\n width: 100%;\n top: 50%;\n left: 50%;\n opacity: 0;\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transition: all 0.3s ease-in-out 0s;\n -moz-transition: all 0.3s ease-in-out 0s;\n transition: all 0.3s ease-in-out 0s;\n}\n\n.image-overlay-content:hover .image-overlay-content-details{\n top: 50%;\n left: 50%;\n opacity: 1;\n}\n\n.image-overlay-content-details h3{\n color: #fff;\n font-weight: 500;\n letter-spacing: 0.15em;\n margin-bottom: 0.5em;\n text-transform: uppercase;\n}\n\n.image-overlay-content-details p{\n color: #fff;\n font-size: 0.8em;\n}\n\n.image-overlay-fadeIn-bottom{\n top: 80%;\n}\n\n.image-overlay-fadeIn-top{\n top: 20%;\n}\n\n.image-overlay-fadeIn-left{\n left: 20%;\n}\n\n.image-overlay-fadeIn-right{\n left: 80%;\n}","created":"20181116173704182","modified":"20210808052511547","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-polaroid":{"title":"$:/plugins/kookma/shiraz/styles/image-polaroid","text":".image-polaroid {\n min-width:64px;\n background-color: #f8f9fa;\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n.image-polaroid img {\n width: 100%;\n padding:10px;\n height: auto;\n}\n.image-polaroid .image-polaroid-caption {\n padding:10px 15px 10px;\n text-align: center; \n line-height: 1.4em;\n font-weight:300;\n font-size: 0.9em; \n}","created":"20181116094450565","modified":"20210808052511555","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-pretty":{"title":"$:/plugins/kookma/shiraz/styles/image-pretty","text":".image-pretty {\n min-width:64px;\n border: 1px solid #c8ccd1;\n background-color:#f8f9fa;\n}\n.image-pretty:hover {\n border: 1px solid #777;\n}\n.image-pretty img {\n padding:2px;\n width: 100%;\n height: auto;\n}\n.image-pretty .image-pretty-caption {\n padding:10px 15px 10px;\n text-align: center; \n line-height: 1.4em;\n font-weight:300;\n font-size: 0.9em; \n}\n\n","created":"20181115182806512","modified":"20210808052511563","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-slidein":{"title":"$:/plugins/kookma/shiraz/styles/image-slidein","text":".image-slidein { \n display: block; \n position: relative; \n /*float: left;*/\n overflow: hidden; \n /* margin: 0 20px 20px 0;*/\n}\n\n.image-slidein img {\n width: 100%;\n height: auto;\n}\n\n.image-slidein figcaption { \n position: absolute; \n background: rgba(0,0,0,0.75); \n color: white; \n padding: 10px 20px; \n opacity: 0;\n -webkit-transition: all 0.6s ease;\n -moz-transition: all 0.6s ease;\n -o-transition: all 0.6s ease;\n}\n.image-slidein:hover figcaption {\n opacity: 1;\n}\n.image-slidein:before { \n content: \"?\"; \n position: absolute; \n font-weight: 800; \n background: rgba(255,255,255,0.75); \n text-shadow: 0 0 5px white;\n color: black;\n width: 24px;\n height: 24px;\n -webkit-border-radius: 12px;\n -moz-border-radius: 12px;\n border-radius: 12px;\n text-align: center;\n font-size: 14px;\n line-height: 24px;\n -moz-transition: all 0.6s ease;\n opacity: 0.75;\t\n}\n.image-slidein:hover:before {\n opacity: 0;\n}\n\n.mr-cap-left:before { bottom: 10px; left: 10px; }\n.mr-cap-left figcaption { bottom: 0; left: -30%; }\n.mr-cap-left:hover figcaption { left: 0; }\n\n.mr-cap-right:before { bottom: 10px; right: 10px; }\n.mr-cap-right figcaption { bottom: 0; right: -30%; }\n.mr-cap-right:hover figcaption { right: 0; }\n\n.mr-cap-top:before { top: 10px; left: 10px; }\n.mr-cap-top figcaption { left: 0; top: -30%; }\n.mr-cap-top:hover figcaption { top: 0; }\n\n.mr-cap-bottom:before { bottom: 10px; left: 10px; }\n.mr-cap-bottom figcaption { left: 0; bottom: -30%;}\n.mr-cap-bottom:hover figcaption { bottom: 0; }\n","created":"20181117040213926","modified":"20210808052511579","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/details":{"title":"$:/plugins/kookma/shiraz/styles/misc/details","text":"/* Styles for summary cursor\nurl: https://css-tricks.com/two-issues-styling-the-details-element-and-how-to-solve-them/\n*/\n\nsummary {\n cursor: pointer;\n}\n\nsummary > * {\n display: inline;\n}","created":"20210812081549226","modified":"20210812082029378","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/edit-buttons":{"title":"$:/plugins/kookma/shiraz/styles/misc/edit-buttons","text":"/*Edit buttons as traffic lights*/\n.tc-tiddler-controls .tc-image-delete-button {fill:#ebb;}\n.tc-tiddler-controls .tc-image-cancel-button {fill:#ed9;}\n.tc-tiddler-controls .tc-image-done-button {fill:#beb;}","created":"20191029091851469","modified":"20210808052511585","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/table-csv":{"title":"$:/plugins/kookma/shiraz/styles/misc/table-csv","text":"/* Styles for star rating used with table-csv macro */\n.shiraz-star svg{\nwidth: 1.2em;\nheight: 1.2em;\nvertical-align: middle;\nfill:#FF9529; /*Deep Saffron*/\n}","created":"20210808144209865","modified":"20210808144511445","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility":{"title":"$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility","text":"/* Mouseover toolbar visibility: courtesy from Tobias Beer*/\n.tc-tiddler-frame .tc-titlebar button {\n opacity: 0;\n transition: opacity .5s ease-in-out;\n}\n.tc-tiddler-frame:hover .tc-titlebar button {\n zoom: 1;\n filter: alpha(opacity=100);\n opacity: 1;\n}\n","created":"20191029094209435","modified":"20210808052511590","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/ui-buttons":{"title":"$:/plugins/kookma/shiraz/styles/misc/ui-buttons","text":"/* These css rules makes TW UI buttons in beatiful color */\n\n/*page control buttons*/\n.tc-page-controls .tc-image-new-button { fill: #5EB95E; } /*New tiddler button*/\n.tc-page-controls .tc-image-options-button { fill:#8058A5; } /*Open control pannel*/\n\n/*tiddler buttons in beautiful color*/\n.tc-tiddler-controls .tc-image-edit-button { fill:#F37B1D; }/*edit tiddler*/\n.tc-tiddler-controls .tc-image-info-button { fill: #0e90d2; } /*Info button*/\n","created":"20191029092047069","modified":"20210808052511595","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/mono":{"title":"$:/plugins/kookma/shiraz/styles/mono","text":".mono {\n\tcolor:unset;\n\tbackground-color: #f7f7f9;\n\tborder: 1px solid #e1e1e8;\n\twhite-space: pre-wrap;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: \"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace;\n}","created":"20181010192406005","modified":"20210808052511602","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/column":{"title":"$:/plugins/kookma/shiraz/styles/multicols/column","text":"/* multicolumn layouts with fixed column number works on the whole tiddler */\n.multicol .tc-tiddler-body {\n column-width: 14em;\n column-rule: 1px solid #ccc;\n}\n/* two columns responsive*/\n.multicol2 .tc-tiddler-body {\n\tcolumn-count:2; \n\tcolumn-width:15em;\n}\n/* three columns responsive*/\n.multicol3 .tc-tiddler-body {\n\tcolumn-count:3; \n\tcolumn-width:10em;\n}\n\n\n/* remove the extra space from first paragraph */\n.multicol .tc-tiddler-body > :first-child, \n.multicol2 .tc-tiddler-body > :first-child, \n.multicol3 .tc-tiddler-body > :first-child { margin-top: 0;}\n\n/*-------------------------------------------------------------------------------*/\n/* Classes for using with macro and div elements */\n.sh-multicol {\n column-width: 14em;\n column-rule: 1px solid #ccc;\n}\n/* two columns responsive*/\n.sh-multicol2 {\n\tcolumn-count:2; \n\tcolumn-width:15em;\n}\n/* three columns responsive*/\n.sh-multicol3 {\n\tcolumn-count:3; \n\tcolumn-width:10em;\n}\n\n/* remove the extra space from first paragraph */\n.sh-multicol > :first-child,\n.sh-multicol2 > :first-child,\n.sh-multicol3 > :first-child { margin-top: 0;}","created":"20190627204703061","modified":"20210808052511607","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/flex backup":{"title":"$:/plugins/kookma/shiraz/styles/multicols/flex backup","text":"/* multicolumn layout using flexbox courtesy from Bootstrap 4.3.1*/\n.flex-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n.flex-col-1, \n.flex-col-2, \n.flex-col-3 {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.flex-col-1{flex: 1 1 0;}\n.flex-col-2{flex: 2 1 0;}\n.flex-col-3{flex: 3 1 0;}\n\n.flex-col-1 > :first-child,\n.flex-col-2 > :first-child,\n.flex-col-3 > :first-child {\n\tmargin-top: 0;}","created":"20191030140900552","modified":"20210808052511618","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/flex":{"title":"$:/plugins/kookma/shiraz/styles/multicols/flex","text":"/* multicolumn layout using flexbox courtesy from Bootstrap 4.3.1*/\n.flex-row {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n/* margin-right: -15px;\n margin-left: -15px;*/\n}\n\n.flex-col,\n.flex-col-1, \n.flex-col-2, \n.flex-col-3,\n.flex-col-4 {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n/* for small screen width>=576px\nhttps://getbootstrap.com/docs/4.3/layout/grid/\n*/\n@media (min-width: 576px) {\n.flex-col {flex: 1 1 0; max-width: 100%;}\n.flex-col-1 {flex: 0 0 25%; max-width:25%}\n.flex-col-2 {flex: 0 0 50%; max-width:50%}\n.flex-col-3 {flex: 0 0 75%; max-width:75%}\n.flex-col-4 {flex: 0 0 100%; max-width:100%}\n}\n\n.flex-col > :first-child,\n.flex-col-1 > :first-child,\n.flex-col-2 > :first-child,\n.flex-col-3 > :first-child,\n.flex-col-4 > :first-child {\n margin-top: 0;}\n\n\n/* Alignment */\n.flex-align-items-center {\n align-items: center !important;\n}\n.flex-justify-content-center {\n justify-content: center !important;\n}\n\n.flex-no-gutters {\n margin-right: 0;\n margin-left: 0;\n}","created":"20191014193910006","modified":"20210808052511613","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/storyriver":{"title":"$:/plugins/kookma/shiraz/styles/multicols/storyriver","text":"/* create story river in two column layout */\n.tc-story-river {\n display: flex;\n flex-wrap: wrap;\n}\n\n.tc-tiddler-frame\n{\n max-width: 49%; margin-right: 1%;\n /*max-width: 32%; margin-right: 1%; */\n}\n","created":"20140523214749659","modified":"20210808150936240","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/notebook":{"title":"$:/plugins/kookma/shiraz/styles/notebook","text":"@media print{\n .notebook .tc-tiddler-body {\n padding-left:60px;\n margin-top:25px;\n }\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n\t.notebook .tc-tags-wrapper {\n padding-left:60px;\n }\n}\n\n@media screen{\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n\t.notebook .tc-tags-wrapper,\n\t.notebook .tc-tiddler-body {\n padding-left:30px;\n }\n\n}\t\n\n@media screen and (max-width:960px) {\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n .notebook .tc-tags-wrapper,\n .notebook .tc-tiddler-body {\n padding-left:60px;\n }\n\n}\n/*prevent applying left border in edit mode */\n.notebook:not([data-tiddler-title^=\"Draft of\"]):before {\n content: '';\n position: absolute;\n top: 0; bottom: 0; left: 0;\n width: 50px;\n background: radial-gradient(#575450 6px, transparent 7px) repeat-y;\n background-size: 30px 30px;\n border-right: 3px solid #D44147;\n\t z-index:1;\n}\n\n.notebook .tc-tiddler-body {\n\t position: relative;\n background: linear-gradient(transparent, transparent 1.95em, #91D1D3 1.95em);\n background-size: 2em 2em;\n\t min-height:90px; \n}\n\n.notebook .tc-tiddler-body{\n\t padding-top:20px;\n font-family: \"Handlee\", cursive;\n font-weight:300;\n line-height:2em;\n color:#696969;\n}\n\n/* Setting font for other elements */\n.notebook .tc-tiddler-body pre,\n.notebook .tc-tiddler-body code,\n.notebook .tc-tiddler-body pre code\n{\n font-family: \"Handlee\", cursive;\n font-weight:300;\n}","created":"20210420164111716","modified":"20210808052511631","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/sticky-footer":{"title":"$:/plugins/kookma/shiraz/styles/sticky-footer","text":".sticky-footer {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 0.5rem;\n background-color: #efefef;\n text-align: center;\n margin-top: 5px;\n box-sizing: border-box;\n width: 100%;\n}\n","created":"20180907070611557","modified":"20210808052511635","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/tables":{"title":"$:/plugins/kookma/shiraz/styles/tables","text":".table-tight{\n\tfont-size:0.8em;\n}\n\n\n/*\nThis tiddler defines the custom stylesheet for tables \nApril 13, 2018\n*/\n\n/*center aligned table*/\n.table-center {\n margin:0 auto;\n}\n\n/* Table caption at top */\n.table-caption-top caption {\n caption-side:top;\n margin-bottom:0.2rem;\n}\n\n/* Striped row table */\n.table-striped-row tr:nth-child(even) td{\n background-color:#F3F6F6; \n}\n\n/* Striped column table */\n.table-striped-col tbody tr td:nth-child(odd) {\n\tbackground-color: #F3F6F6;\n}\n\n/*Borderless table*/\n.table-borderless, \n.table-borderless thead td, \n.table-borderless th, \n.table-borderless tr, \n.table-borderless td{\n border:0;\n}\n\n/* Table lines should be used with table-borderless for abbreviations and two column layout */\n\n.table-lines thead td, .table-lines th{\n border-bottom: 2px solid #dddddd;\n\t background-color:unset;\n }\n.table-lines td{\n border-bottom: 1px solid #dddddd;\n background-color:unset;\n }\n\n/* Table hover (yellow background on mouse over) */\n.table-hover tbody tr:hover{\n color: #212529;\n background-color: #e6e6e6;\n}\n.table-hover-yellow tbody tr:hover{background-color: #ffffcc;}\n.table-hover-cyan tbody tr:hover{background-color: #e6ffff;}\n\n/* Table with colored header */\n.thead-primary thead td, .thead-primary th{background-color: #007bff; color: #fff;}\n.thead-secondary thead td, .thead-secondary th{background-color: #6c757d; color: #fff;}\n.thead-success thead td, .thead-success th{background-color: #28a745; color: #fff;}\n.thead-warning thead td, .thead-warning th{background-color: #ffc107; color: #fff;}\n.thead-danger thead td, .thead-danger th{background-color: #dc3545; color: #fff;}\n.thead-info thead td, .thead-info th{background-color: #17a2b8; color: #fff;}\n.thead-dark thead td, .thead-dark th{background-color: #343a40; color: #fff;}\n.thead-light thead td, .thead-light th{background-color: #f8f9fa; color: #212529;}\n\n/* Table with colored header correct to fill svgs with white color */\n.thead-primary > thead> tr > td svg, .thead-primary > thead> tr > th svg,\n.thead-secondary > thead> tr > td svg, .thead-secondary > thead> tr > th svg,\n.thead-success > thead> tr > td svg, .thead-success > thead> tr > th svg,\n.thead-warning > thead> tr > td svg, .thead-warning > thead> tr > th svg,\n.thead-danger > thead> tr > td svg, .thead-danger > thead> tr > th svg,\n.thead-info > thead> tr > td svg, .thead-info > thead> tr > th svg,\n.thead-dark > thead> tr > td svg, .thead-dark > thead> tr > th svg\n {fill:#ffffff; padding:0 0 3px 0; }\n\n\n.thead-primary th .tc-tiddlylink, .thead-primary th a,\n.thead-secondary th .tc-tiddlylink, .thead-primary th a,\n.thead-success th .tc-tiddlylink, .thead-primary th a,\n.thead-warning th .tc-tiddlylink, .thead-primary th a,\n.thead-danger th .tc-tiddlylink, .thead-primary th a,\n.thead-info th .tc-tiddlylink, .thead-primary th a,\n.thead-dark th .tc-tiddlylink, .thead-primary th a{color:#ffffff}\n","created":"20180413092232257","modified":"20210808052511640","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/tiddler-title-class":{"title":"$:/plugins/kookma/shiraz/styles/tiddler-title-class","text":".title-primary .tc-title {\n color: #007bff;\n}\n.title-secondary .tc-title {\n color: #6c757d;\n}\n.title-success .tc-title {\n color: #28a745;\n}\n.title-info .tc-title {\n color: #17a2b8;\n}\n.title-warning .tc-title {\n color: #ffc107;\n}\n.title-danger .tc-title {\n color: #dc3545;\n}\n.title-light .tc-title {\n color: #f8f9fa;\n}\n.title-dark .tc-title {\n color: #343a40;\n}\n.title-white .tc-title {\n color: #fff;\n}","created":"20191101112257846","modified":"20210808052511648","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/templates/body/color":{"title":"$:/plugins/kookma/shiraz/templates/body/color","created":"20200210160016959","modified":"20210808052511653","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"color","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n\n<$link overrideClass=\"dt disabled\" to=\"\">\n<$edit-text tag=input type=color tiddler=<> field=color/>\n\n\\end\n\n\\define edit_color() <$edit-text tag=input type=color tiddler=<> field=<>/>\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<>\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n <>\n\n"},"$:/plugins/kookma/shiraz/templates/body/date":{"title":"$:/plugins/kookma/shiraz/templates/body/date","created":"20170128100657312","modified":"20211117172100619","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"created modified","type":"text/vnd.tiddlywiki","text":"\n<$view tiddler=<> field=<> format=\"date\" template=\"YYYY.0MM.0DD\"/>\n"},"$:/plugins/kookma/shiraz/templates/body/default":{"title":"$:/plugins/kookma/shiraz/templates/body/default","created":"20191125202328213","modified":"20210808052511665","tags":"$:/tags/Table/BodyTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<>\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n <>\n\n"},"$:/plugins/kookma/shiraz/templates/body/due-date":{"title":"$:/plugins/kookma/shiraz/templates/body/due-date","created":"20200206191120454","modified":"20211117172046922","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"due-date","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n<$set tiddler=<> field=<> name=due-date>\n<$text text={{{[split[-]split[.]join[]format:date[YYYY.0MM.0DD]]}}} />\n\n\\end\n\\define showCell_Locked() <>\n\\define edit_date() <$edit-text tag=input type=date tiddler=<> field=<>/>\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\" class=\"shiraz-dtable-date\">\n<>\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n <>\n\n\n\n"},"$:/plugins/kookma/shiraz/templates/body/email":{"title":"$:/plugins/kookma/shiraz/templates/body/email","created":"20191202210913762","modified":"20210808052511678","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"email","type":"text/vnd.tiddlywiki","text":"\\define display-email-address()\n\n<>\n\n\\end\n\\define display-email-address_Locked()\n\n<>\n\n\\end\n\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<>\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n<>\n\n\n\n"},"$:/plugins/kookma/shiraz/templates/body/priority":{"title":"$:/plugins/kookma/shiraz/templates/body/priority","created":"20200424102701026","modified":"20210808052511686","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"priority","type":"text/vnd.tiddlywiki","text":"\\define circle(color, fill)\n\n> fill=<<__fill__>> stroke-width=\"1\"/>\n\n\\end\n\n\\define showCell()\n<$list filter=\"[getmatch[very high]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#dc3545\" fill=\"#f8d7da\"/>\n\n<$list filter=\"[getmatch[high]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#ff8c00\" fill=\"#fff3cd\"/>\n\n<$list filter=\"[getmatch[normal]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#17a2b8\" fill=\"#d1ecf1\"/>\n\n<$list filter=\"[getmatch[low]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#007bff\" fill=\"#cce5ff\"/>\n\n<$list filter=\"[getmatch[very low]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#6c757d\" fill=\"#e2e3e5\"/>\n\n  <$transclude tiddler=<> field=<> />\n\\end\n\n\\define showCell_Locked() <>\n\n\\define select_priority()\n<$select tiddler=<> field=<> default=\"\">\n\\end\n\n\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<>\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n <>\n\n<$reveal>\n\n"},"$:/plugins/kookma/shiraz/templates/body/status":{"title":"$:/plugins/kookma/shiraz/templates/body/status","created":"20200424100127763","modified":"20210808052511690","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"status","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<> field=<> mode=\"inline\" />\n\\define showCell_Locked() <>\n\\define select_status()\n<$select tiddler=<> field=<> default=\"\">\n\\end\n\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<>\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n <>\n\n\n\n"},"$:/plugins/kookma/shiraz/templates/body/tags":{"title":"$:/plugins/kookma/shiraz/templates/body/tags","created":"20191125193831767","modified":"20210808052511699","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tags","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$list filter=\"[titletags[]]\">\n\n<$set name=\"transclusion\" value=<>>\n<$macrocall $name=\"tag-pill-body\" tag=<> icon={{!!icon}} color={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<> style=\"position:absolute; z-index:9999;\" type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<>/> \n\n
    \n<$macrocall $name=\"list-tagged-draggable\" tag=<>/>\n\n\n
    \n\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n <>\n\n"},"$:/plugins/kookma/shiraz/templates/body/tbl-checkbox":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-checkbox","created":"20200206150644636","modified":"20210808052511704","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-checkbox","type":"text/vnd.tiddlywiki","text":"\n<$checkbox tiddler=<> tag=\"done\"\ncheckactions=\"\"\"<$action-setfield $tiddler=<> $index=<> $value=\"color:#155724;background-color:#d4edda;\" /><$action-setfield $tiddler=<> status=\"complete\"/>\"\"\"\nuncheckactions=\"\"\"<$action-setfield $tiddler=<> $index=<> /><$action-setfield $tiddler=<> status=\"rework\"/>\"\"\" />\n"},"$:/plugins/kookma/shiraz/templates/body/tbl-clone":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-clone","created":"20201203153613838","modified":"20210808052511708","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-clone","type":"text/vnd.tiddlywiki","text":"\\define cloneTiddler() <$action-createtiddler $basetitle=<> $template=<> />\n\n<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore>\n\n <$button actions=<> class=\"tc-btn-invisible\">\n\t {{$:/core/images/clone-button}}\n\t\n\n"},"$:/plugins/kookma/shiraz/templates/body/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-delete","created":"20170212101814663","modified":"20210808052511715","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore>\n\n <$button class=\"tc-btn-invisible\">\n <$action-sendmessage $message=\"tm-delete-tiddler\" $param=<>/>\n {{$:/core/images/delete-button}}\n \n\n"},"$:/plugins/kookma/shiraz/templates/body/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-expand","created":"20200209072642825","modified":"20210808052511720","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" state=<> text=\"show\" tag=\"td\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\">\n <$action-setfield $tiddler=<> $index=<> $value=\"show\" />\n {{$:/core/images/right-arrow}}\n \n\n<$reveal type=\"match\" state=<> text=\"show\" tag=\"td\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\">\n <$action-setfield $tiddler=<> $index=<>/>\n {{$:/core/images/down-arrow}}\n \n"},"$:/plugins/kookma/shiraz/templates/body/tbl-linktype":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-linktype","created":"20210501184147078","modified":"20210808052511724","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-linktype","type":"text/vnd.tiddlywiki","text":"\n<$text text={{{ [all[current]links[]matchthen[link]] [all[current]backlinks[]matchthen[backlink]] [all[current]tagging[]matchthen[tagging]] ~[[transclusion]] }}} />\n\n"},"$:/plugins/kookma/shiraz/templates/body/title":{"title":"$:/plugins/kookma/shiraz/templates/body/title","created":"20170128100357203","modified":"20210808052511731","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"title","type":"text/vnd.tiddlywiki","text":"\n<$link to=<>><$text text=<> />\n"},"$:/plugins/kookma/shiraz/templates/body/type":{"title":"$:/plugins/kookma/shiraz/templates/body/type","created":"20200210063953546","modified":"20210808052511737","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"type","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<> field=<> mode=\"inline\" />\n\n<>\n\n"},"$:/plugins/kookma/shiraz/templates/footer/default":{"title":"$:/plugins/kookma/shiraz/templates/footer/default","created":"20200130171717175","modified":"20210808052511744","tags":"$:/tags/Table/FooterTemplate","type":"text/vnd.tiddlywiki","text":"<$vars idx={{{ [addsuffix[/]addsuffix] }}}>\n<$set name=getFieldOrIndex filter=\"[]-index\" value=\"get\" emptyValue=\"getindex\">\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$transclude tiddler=<> index=<> mode=\"inline\" />\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$edit-text tiddler=<> index=<> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n\n\n"},"$:/plugins/kookma/shiraz/templates/footer/tbl-clone":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-clone","created":"20201203155343568","modified":"20210808052511749","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-clone","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore>\n\n"},"$:/plugins/kookma/shiraz/templates/footer/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-delete","created":"20200130174835714","modified":"20210808052511757","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore>\n\n"},"$:/plugins/kookma/shiraz/templates/footer/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-expand","created":"20200130173518861","modified":"20210808052511762","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/shiraz/templates/header/default":{"title":"$:/plugins/kookma/shiraz/templates/header/default","created":"20170205223914688","modified":"20210808165151493","tags":"$:/tags/Table/HeaderTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"sortIndex\" text=<> tag=\"th\">\n<$button setTitle=<> setIndex=\"sortIndex\" setTo=<> class=\"tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<> $index=\"hasnegate\" $value=\"false\"/>\n<$action-setfield $tiddler=<> $index=\"negate\" $value=\"\"/>\n<$text text=<>/>\n\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"sortIndex\" text=<> tag=\"th\">\n<$list filter=\"[getindex[hasnegate]match[false]]\" variable=ignore>\n<$button setTitle=<> setIndex=\"hasnegate\" setTo=\"true\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<> $index=\"negate\" $value=\"!\"/>\n<$text text=<>/> {{$:/core/images/down-arrow}}\n\n\n<$list filter=\"[getindex[hasnegate]match[true]]\" variable=ignore>\n<$button setTitle=<> setIndex=\"hasnegate\" setTo=\"false\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<> $index=\"negate\" $value=\"\"/>\n<$text text=<>/> {{$:/core/images/up-arrow}}\n\n\n\n"},"$:/plugins/kookma/shiraz/templates/header/tbl-checkbox":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-checkbox","created":"20200206151157578","modified":"20220109164156311","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-checkbox","type":"text/vnd.tiddlywiki","text":"\\define chk-checkactions()\n<$list filter=\"[subfilter]\" variable=\"currentRecord\">\n<$action-listops $tiddler=<> $tags=\"+[append[done]]\" />\n<$action-setfield $tiddler=<> status=\"complete\"/>\n<$action-setfield $tiddler=<> $index=<> $value=\"color:#155724;background-color:#d4edda;\" />\n\n\\end\n\\define chk-uncheckactions()\n<$list filter=\"[subfilter]\" variable=\"currentRecord\">\n<$action-listops $tiddler=<> $tags=\"+[remove[done]]\" />\n<$action-setfield $tiddler=<> status=\"rework\"/>\n<$action-setfield $tiddler=<> $index=<> />\n\n\\end\n\n\n<$checkbox checkactions=<> uncheckactions=<> />\n"},"$:/plugins/kookma/shiraz/templates/header/tbl-clone":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-clone","created":"20201203155440168","modified":"20210808052511782","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-clone","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore>\n\n\n<$button class=\"tc-btn-invisible\" disabled=yes tooltip=\"disabled button\" style=\"cursor:default\">\n{{$:/core/images/clone-button}}\n\n\n\n"},"$:/plugins/kookma/shiraz/templates/header/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-delete","created":"20170212102107998","modified":"20210808052511788","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore>\n\n \n <$button class=\"tc-btn-invisible\">\n <$action-setfield $tiddler=\"$:/temp/tables/delete-all\" text=<>/>\n {{$:/core/images/delete-button}}\n \n \n\n"},"$:/plugins/kookma/shiraz/templates/header/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-expand","created":"20200209072944418","modified":"20220109164215950","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"\n <$list filter=\"[indexes[]limit[1]]\">\n <$button class=\"tc-btn-invisible\">{{$:/core/images/fold-button}}\n <$action-setfield $tiddler=<> text=\"\"/>\n \n \n"},"$:/plugins/kookma/shiraz/templates/header/tbl-linktype":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-linktype","created":"20210517200330994","modified":"20210808052511806","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-linktype","type":"text/vnd.tiddlywiki","text":"Linktype\n"},"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette":{"title":"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette","caption":"{{$:/plugins/kookma/shiraz/images/palette-switch}} {{$:/language/Buttons/Shiraz/Caption}}","created":"20201210171047824","dark-palette":"$:/palettes/SolarFlare","description":"Toggle between light/dark color palette","light-palette":"$:/palettes/Vanilla","modified":"20210808064214879","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n<$vars \ndarkPalette ={{$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette!!dark-palette}}\nlightPalette={{$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette!!light-palette}}\n> \n<$button \n tooltip={{$:/language/Buttons/Shiraz/Hint}} \n aria-label={{$:/language/Buttons/Shiraz/Caption}} \n class=<>\n>\n <$list filter=\"[match[yes]]\">\n {{$:/plugins/kookma/shiraz/images/palette-switch}}\n \n\n <$list filter=\"[match[yes]]\">\n switch palettes\n \n\n <$reveal type=\"match\" state=\"$:/palette\" text=<> > \n <$action-setfield $tiddler=\"$:/palette\" text=<> />\n \n <$reveal type=\"nomatch\" state=\"$:/palette\" text=<> >\n <$action-setfield $tiddler=\"$:/palette\" text=<> >\n \n\n"},"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings":{"title":"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings","caption":"Shiraz","created":"20191018054657077","list-after":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20210808064559781","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"These settings let you customise the behaviour of Shiraz plugin.\n\n---\n\n;Show Shiraz setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar\n\n;Options\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/multicols/storyriver\" tag=\"$:/tags/Stylesheet\"> Multicolumn story river\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/misc/ui-buttons\" tag=\"$:/tags/Stylesheet\"> Colorful UI buttons\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility\" tag=\"$:/tags/Stylesheet\"> Tiddler visibility on mouse hover\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/misc/edit-buttons\" tag=\"$:/tags/Stylesheet\"> Traffic lights for edit toolbar buttons\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab\" tag=\"$:/tags/Stylesheet\"> Colorify sidebar tabs\n\n;Set dark and light palettes\n{{$:/plugins/kookma/shiraz/ui/set-dark-light-palette}}\n\n\n"},"$:/plugins/kookma/shiraz/ui/set-dark-light-palette":{"title":"$:/plugins/kookma/shiraz/ui/set-dark-light-palette","created":"20210510155820574","dark-palette":"$:/palettes/SolarFlare","light-palette":"$:/palettes/Vanilla","modified":"20210808052511827","tags":"","type":"text/vnd.tiddlywiki","text":"\\define switchpaletteTid() $:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette\n\n\\define selectPelette(title, default, tiddler, field)\n\n<$select tiddler=<<__tiddler__>> field=<<__field__>> default=\"\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Palette]]\" >\n\n\n\n\\end\n\n
    \n\n<$macrocall $name=selectPelette \n title=\"Dark palette\" filter=<> \n\tdefault=\"$:/palettes/SolarizedDark\" field=\"dark-palette\" \n\ttiddler=<> />
    \n\n<$macrocall $name=selectPelette \n title=\"Light palette\" filter=<> \n\tdefault=\"$:/palettes/Vanilla\" field=\"light-palette\" \n\ttiddler=<> />\n\n\n<$button> {{$:/core/images/erase}}\n<$action-setfield \n $tiddler=<> \n\t$field=dark-palette \n\t$value={{!!dark-palette}} />\n<$action-setfield \n $tiddler=<> \n\t$field=light-palette \n\t$value={{!!light-palette}} />\t\n\t\n<$action-setfield \n $tiddler=\"$:/palette\" \n\t$field=text\n\t$value={{!!light-palette}} />\t\t\n\n
    \n\t"},"$:/plugins/kookma/shiraz/viewtemplates/sticky-footer":{"title":"$:/plugins/kookma/shiraz/viewtemplates/sticky-footer","created":"20180907071314793","modified":"20210808052511833","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[all[current]has[sticky-footer]]\">\n
    \n{{!!sticky-footer}}\n
    \n\n"}}} \ No newline at end of file +{"tiddlers":{"$:/plugins/kookma/shiraz/history":{"title":"$:/plugins/kookma/shiraz/history","created":"20210225163850252","modified":"20220802180108923","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log: [[https://kookma.github.io/TW-Shiraz/#ChangeLog]]\n\n* ''2.5.0'' -- 2022.08.02 -- new data block, updated to Tiddlywiki 5.2.3\n* ''2.4.4'' -- 2021.09.19 -- added css class for tbl-expand customization\n* ''2.4.2'' -- 2021.09.10 -- quick table with bunch of column formatting\n* ''2.3.3'' -- 2021.05.20 -- small bug fixes in switch palette\n* ''2.3.1'' -- 2021.05.19 -- tbl-linktype template to be used for generating node-explorer\n* ''2.3.0'' -- 2021.05.10 -- switch palette for dim/dark and light palette selection\n* ''2.2.2'' -- 2021.04.22 -- several issues fixed for pagination, notebook and image classes\n* ''2.2.0'' -- 2021.02.26 -- updated to TW 5.1.23 and pagination added to dynamic tables\n* ''2.1.1'' -- 2020.03.25 -- slider macro with initial status\n* ''2.1.0'' -- 2020.03.23 -- stable release on TW-5.1.22pre\n* ''1.0.0'' -- 2018.10.05 -- first public release\n"},"$:/plugins/kookma/shiraz/images/palette-switch":{"title":"$:/plugins/kookma/shiraz/images/palette-switch","created":"20210510155317562","modified":"20210808052511840","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/language/Buttons/Shiraz/Caption":{"title":"$:/language/Buttons/Shiraz/Caption","created":"20210520125335245","modified":"20210808054312009","tags":"","type":"text/vnd.tiddlywiki","text":"Switch dark/light color palette"},"$:/language/Buttons/Shiraz/Hint":{"title":"$:/language/Buttons/Shiraz/Hint","created":"20210520125309893","modified":"20210808054302552","tags":"","type":"text/vnd.tiddlywiki","text":"Switch dark/light color palette"},"$:/plugins/kookma/shiraz/license":{"title":"$:/plugins/kookma/shiraz/license","created":"20210225163850253","modified":"20220726105824045","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2018-2022 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/shiraz/macros/alerts":{"title":"$:/plugins/kookma/shiraz/macros/alerts","created":"20180821095049685","modified":"20210808052511127","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define alert(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n
    \n$src$\n
    \n\\end\n\n\\define alert-leftbar(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n
    \n$src$\n
    \n\\end\n"},"$:/plugins/kookma/shiraz/macros/badge":{"title":"$:/plugins/kookma/shiraz/macros/badge","created":"20181124042103310","modified":"20210808052511132","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define badge(type:\"primary\" src:\"\")\n$src$\n\\end\n\n\\define badge-pill(type:\"primary\" src:\"\")\n$src$\n\\end\n"},"$:/plugins/kookma/shiraz/macros/card":{"title":"$:/plugins/kookma/shiraz/macros/card","created":"20181124111624466","modified":"20210808052511138","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define card(header:\"Empty\", title:\"Empty\" subtitle:\"Empty\" text:\"Empty\",footer:\"Empty\", width:\"100%\" class:\"\")\n
    \n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__header__>> >\n
    $header$
    \n\n
    \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n
    $title$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__subtitle__>> >\n
    $subtitle$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n
    <<__text__>>
    \n \n
    \n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n \n\n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/csvtables/apps":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/apps","created":"20210913061439446","modified":"20210914163550428","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define nomenclature(id:nomenclature)\n<>\n\\end\n\n\\define mathbox(id:\"\", format:\"\", delimiter:\",\")\n<>\n\\end\n\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-basic":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-basic","created":"20210910071657253","modified":"20210910081659382","tags":"","type":"text/vnd.tiddlywiki","text":"\\define text() <$text text=<> />\n\\define code() <>\n\\define transclude() <$transclude tiddler=<> field=title/>\n\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-date":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-date","created":"20210910072339252","modified":"20210910081720853","tags":"","type":"text/vnd.tiddlywiki","text":"\\define date() <$view field=title tiddler={{{[splitregexp[\\D+]!is[blank]join[]]}}} format=date template=\"YYYY-0MM-0DD\"/>\n\\define shortdate() <$view field=title tiddler={{{[splitregexp[\\D+]!is[blank]join[]]}}} format=date template=\"mmm DDth, YYYY\"/>\n\\define longdate() <$view field=title tiddler={{{[splitregexp[\\D+]!is[blank]join[]]}}} format=date template=\"DDD, MMM 0DD, YYYY\"/>\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-math":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-math","created":"20210913061042429","modified":"20220722160253916","tags":"","type":"text/vnd.tiddlywiki","text":"\\define katex() <$latex text=<> displayMode=\"true\">\n\\define katex-inline() <$latex text=<> displayMode=\"false\">\n\\define pu() <$latex text={{{ [addprefix[\\pu{]addsuffix[}]] }}} displayMode=\"false\">\n\\define equation() <$latex text={{{ [addprefix[\\begin{equation}]addsuffix[\\end{equation}]] }}} displayMode=\"true\">\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-misc":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-misc","created":"20210910072420649","modified":"20210913204706883","tags":"","type":"text/vnd.tiddlywiki","text":"\\define email() <>\n\n\\define rate()\n<$list filter=\"[split[]match[*]]\" variable=ignore>\n<$transclude tiddler=\"$:/core/images/star-filled\" />\n\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-task":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-task","created":"20210910071727034","modified":"20220724122008067","tags":"","type":"text/vnd.tiddlywiki","text":"\\define checkbox()\n\n<$list filter=\"[trim[]match[x]]\" variable=ignore>\n\n<$list filter=\"[trim[]match[-]]\" variable=ignore>\n\\end\n\n\n\\define todo-action(param)\n\n<$vars lbr=\"\n\">\n <$vars in={{{ [addsuffix] }}} out={{{[splitregexprest[]join[,]addprefix[$param$,]addsuffix]}}} >\n <$action-setfield $tiddler=<> text={{{ [get[text]search-replace:g:,] }}}/>\n \n\t\n\\end\n\n\\define todo()\n\n<$list filter=\"[trim[]match[-]]\" variable=ignore>\n<$button class=\"tc-btn-invisible\" actions=<>>\n\n\n<$list filter=\"[trim[]match[x]]\" variable=ignore>\n<$button class=\"tc-btn-invisible\" actions=<>>\n\n\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/table-csv-utility":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/table-csv-utility","created":"20210806160339977","modified":"20220724180943956","tags":"","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\n\\define mainFilter() [subfilterbutfirst] :sort:$(sortType)$:$(sortNegate)$[split!is[blank]trim[]nth]\n\\define tempTableSort() $:/state/tablecsv/$(currentTiddler)$/$(stateTiddler)$\n\n\n\\define column-header-template()\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"sortIndex\" text=<> tag=\"th\">\n<$button setTitle=<> setIndex=\"sortIndex\" setTo=<> class=\"tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<> $index=\"hasnegate\" $value=\"false\"/>\n<$action-setfield $tiddler=<> $index=\"negate\" $value=\"\"/>\n<$text text=<>/>\n\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"sortIndex\" text=<> tag=\"th\">\n<$list filter=\"[getindex[hasnegate]match[false]]\" variable=ignore>\n<$button setTitle=<> setIndex=\"hasnegate\" setTo=\"true\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<> $index=\"negate\" $value=\"reverse\"/>\n<$text text=<>/> {{$:/core/images/down-arrow}}\n\n\n<$list filter=\"[getindex[hasnegate]match[true]]\" variable=ignore>\n<$button setTitle=<> setIndex=\"hasnegate\" setTo=\"false\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<> $index=\"negate\" $value=\"\"/>\n<$text text=<>/> {{$:/core/images/up-arrow}}\n\n\n\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/csvtables/table-csv":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/table-csv","created":"20210806160408697","modified":"20220725145558979","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define table-csv(tiddler:\"\", delimiter:\",\", sortType:\"alphanumeric\", format:\"\", caption:\"\", class:\"\", header:\"yes\", stateTiddler:\"\", id:\"\", dclass:\"dblock\" )\n\\whitespace trim\n\\import [[$:/plugins/kookma/shiraz/macros/csvtables/table-csv-utility]]\n\\import [all[tiddlers+shadows]prefix[$:/plugins/kookma/shiraz/macros/csvtables/formats]]\n\n<$vars src = {{{ [<__tiddler__>is[tiddler]then<__tiddler__>else] }}} \n stateTiddler = {{{ [<__stateTiddler__>!is[blank]then<__stateTiddler__>else[01]] }}} >\n<$vars sortCol = {{{ [getindex[sortIndex]] }}} \n sortNegate = {{{ [getindex[negate]] }}} \n delimiter = {{{ [<__delimiter__>match[\\t]then[°≡°]else<__delimiter__>] }}}\n dataBlockStartDelimiter ={{{ [<__id__>is[blank]then[@@.$dclass$]] ~[[@.$dclass$.]addsuffix<__id__>] }}}\n dataBlockEndDelimiter = \"@@\" >\n\n\n<$let dblock0 = {{{ [get[text]splitregexpbutfirst[1]] }}}\n dblock1 = {{{ [splitregexpbutlast[1]] }}}\n dblock = {{{ [!match[°≡°]then] :else[search-replace:g:regexp[\\t],[°≡°]] }}} >\n\n\n\n<$list filter=\"[<__caption__>!is[blank]]\" variable=ignorw>\n\n<$list filter=\"[<__header__>match[yes]then[1]else[0]]\" variable=header_row>\n\n<$vars allRows=\"[splitregexp[\\n]!is[blank]]\">\n\n<$list filter=\"[subfilterfirst]\" variable=row >\n<$list filter=\"[splitregexp!is[blank]trim[]]\" variable=currentColumn><>\n\n\n<$vars sortPos = {{{ [subfilterfirstsplitregexp!is[blank]trim[]] +[allbefore:includecount[]] }}} >\n<$vars sortType = {{{ [enlist:raw<__sortType__>nthelse[alphanumeric]] }}} >\n<$list filter=<> variable=row>\n<$list filter=\"[splitregexp!is[blank]trim[]]\" variable=entry counter=pos>\n\n\n\n\n\n\n\n
    $caption$
    <$macrocall $name={{{ [enlist:raw<__format__>nthelse[text]] }}} />
    \n\n\n\n\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dbadge":{"title":"$:/plugins/kookma/shiraz/macros/dbadge","created":"20181203212737578","modified":"20210808052511146","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define dbadge(subject,status, type:\"primary\")\n
    $subject$$status$
    \n\\end\n"},"$:/plugins/kookma/shiraz/macros/details":{"title":"$:/plugins/kookma/shiraz/macros/details","created":"20181101185833098","modified":"20210808052511151","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define details(label:\"\", src:\"source\", status:\"\", labelClass:\"\", srcClass:\"\")\n<$vars source = {{{ [<__src__>get[text]else<__src__>] }}} >\n
    \n $label$\n
    \n\t\n <>\n
    \n
    \n\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/confirm-delete":{"title":"$:/plugins/kookma/shiraz/macros/dtables/confirm-delete","created":"20191129201531051","modified":"20210808052511159","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define confirm-delete()\n\n<$list filter=\"[subfilterlimit[1]]\" variable=ignore>\n<$reveal class=\"tbl-delete-confirm\" type=\"match\" state=\"$:/temp/tables/delete-all!!text\" text=<> tag=\"tr\">\n> >\n<$list filter=\"[[$:/temp/tables/delete-all]get[confirm]match[yes]]\" \n variable=ignore emptyMessage=<> >\n <>\n\n\n\n\n\\end\n\n\\define ask-for-delete()\n<$set name=ntids filter=\"[subfiltercount[]]\">\n Delete all <> records?\n\t<$button class=\"tc-btn-invisible\">\n <$action-setfield $tiddler=\"$:/temp/tables/delete-all\" $field=\"confirm\" $value=\"yes\"/>\n {{$:/core/images/delete-button}} yes\n or \n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n {{$:/core/images/close-button}} no\n \n\t\t\t\t\n\\end\n\n\\define perform-delete()\n Warning! this action cannot be undone!\n\t<$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n <$list filter=<> variable=\"currentRecord\">\n <$action-deletetiddler $tiddler=<>/>\n \n\t\t {{$:/core/images/delete-button}} delete\n or \n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n\t\t\t{{$:/core/images/close-button}} cancel \n \n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/helper":{"title":"$:/plugins/kookma/shiraz/macros/dtables/helper","created":"20191203102929722","modified":"20210808052511172","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define columnFilter() $(columns)$ tbl-clone tbl-delete\n\n\\define tempTable() $:/state/dynamictables/$(currentTable)$\n\n\\define tempTableSort() $(tempTable)$/sortby\n\\define tempTagPopup() $(tempTable)$/$(currentRecord)$/$(currentTiddler)$\n\\define tempTableExpand() $(tempTable)$/expand\n\\define tempPathExpand() $(tempTableExpand)$##$(currentRecord)$\n\\define tempTableEdit() $(tempTable)$/edit-view-status\n\n\\define keepstate() $:/keepstate/dynamictables/$(currentTable)$\n\n\\define tempTableFooter() $(keepstate)$/footer\n\\define tempTableStyle() $(keepstate)$/style\n\\define tempWarningMsg() $(keepstate)$/warning\n\n\\define pageStateTiddler() $(keepstate)$/page-number\n\\define entryPerPageStateTiddler() $(keepstate)$/entry-per-page\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/maths":{"title":"$:/plugins/kookma/shiraz/macros/dtables/maths","created":"20200209153246553","modified":"20210808073255865","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define average(pn:0) <$text text={{{ [subfilter$(getFieldOrIndex)$average[]] }}}/>\n\\define median(pn:0) <$text text={{{ [subfilter$(getFieldOrIndex)$median[]] }}}/>\n\n\\define count() <$text text={{{ [subfilter$(getFieldOrIndex)$count[]] }}}/>\n\\define sum() <$text text={{{ [subfilter$(getFieldOrIndex)$sum[]] }}}/>\n\\define product() <$text text={{{ [subfilter$(getFieldOrIndex)$product[]] }}}/>\n\n\\define minall() <$text text={{{ [subfilter$(getFieldOrIndex)$minall[]] }}}/>\n\\define maxall() <$text text={{{ [subfilter$(getFieldOrIndex)$maxall[]] }}}/>\n\n\n\n\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/pagination":{"title":"$:/plugins/kookma/shiraz/macros/dtables/pagination","created":"20210224180410216","modified":"20210808052511185","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define prev-button()\n\n<$list filter=\"[compare:number:lt[2]then[yes]else[no]]\" variable=state>\n<$button disabled=<> class=\"shiraz-dtable-page-prev tc-btn-invisible\">\n{{$:/core/images/chevron-left}} Prev\n<$action-listops $tiddler=<> $field=text $subfilter=\"+[subtract[1]] ~[[1]]\"/>\n\n\n\\end\n\n\\define next-button()\n\n<$list filter=\"[compare:number:gteqthen[yes]else[no]]\" variable=state> \n<$button disabled=<> class=\"shiraz-dtable-page-next tc-btn-invisible\">\nNext {{$:/core/images/chevron-right}} \n<$action-listops $tiddler=<> $field=text $subfilter=\"+[add[1]] ~[[2]]\"/>\n\n\n\\end\n\n\\define limit-entries()\n\n<$select tiddler=<> default=25 actions=\"\"\"<$action-setfield $tiddler=<> text=1/>\"\"\">\n<$list filter='5 10 15 20 25 30 40 50' variable=num>\n\n\n\n\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/show-edit-cell":{"title":"$:/plugins/kookma/shiraz/macros/dtables/show-edit-cell","created":"20200209135600453","modified":"20210808052511192","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n <$list filter=\"[]-index\">\n <$transclude tiddler=<> field=<> mode=\"inline\" />\n \n <$list filter=\"[]-field\">\n <$transclude tiddler=<> index=<> mode=\"inline\" />\n \n\\end\t\n\\define editCell()\n <$list filter=\"[]-index\">\n <$edit-text tiddler=<> field=<> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n \n <$list filter=\"[]-field\">\n <$edit-text tiddler=<> index=<> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n \n\\end\n\n\\define showCell_Locked()\n <>\n\\end "},"$:/plugins/kookma/shiraz/macros/dtables/table-dynamic":{"title":"$:/plugins/kookma/shiraz/macros/dtables/table-dynamic","created":"20200209100939116","modified":"20210808052511219","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define table-dynamic(filter, fields:\"\", indexes:\"\", sortOp:\"sort\", caption:\"\", class:\"\",\n footerRows:\"0\", stateTiddler:\"\", editButton:\"yes\", pagination:\"no\", emptyMessage:\"filter input is empty\")\n\n\\import [all[shadows+tiddlers]tag[$:/tags/Table/Macro]]\n\n\n<$vars \n inputFilter=\"[subfilter<__filter__>!has[draft.of]]\"\n sortType=<<__sortOp__>>\n pagination=<<__pagination__>>\n> \n<$set name=currentTable value=<<__stateTiddler__>> emptyValue=<> >\n\n<$set name=fieldOrIndex filter=\"[<__fields__>!is[blank]]\" value=\"field\" emptyValue=\"index\">\n<>\n<$set name=columns filter=\"[]-index\" value=<<__fields__>> emptyValue=<<__indexes__>> >\n\n<$list filter=\"[subfilterlimit[1]]\" emptyMessage=<<__emptyMessage__>> variable=ignore>\n<$set name=sortneg tiddler=<> index=\"negate\">\n\n<$set name=ncols filter=\"[getindex[mode]match[edit]]\" value={{{ [subfiltercount[]] }}} emptyValue= {{{ [subfiltercount[]subtract[2]] }}}>\n
    \n> style=\"caption-side:top\">\n\n\n\n\n\n<>\n\n<$list filter=<> variable=currentColumn>\n<$set name=\"headerLookup\" filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/HeaderTemplate]contains:tbl-column-listlimit[1]get[title]]\" value=<> emptyValue=\"$:/plugins/kookma/shiraz/templates/header/default\">\n <$transclude tiddler=<> field=\"text\" mode=\"inline\"/>\n\n\n\n\n\n\n<$reveal type=\"gt\" default=<<__footerRows__>> text=\"0\" tag=\"tfoot\" class=\"shiraz-dtable-footer\">\n\n<$list filter=\"[range[1,$footerRows$]addprefix[footer-]]\" variable=footerRow>\n\n<$list filter=<> variable=currentColumn>\n<$set name=\"footerLookup\" filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/FooterTemplate]contains:tbl-column-listlimit[1]get[title]]\" value=<> emptyValue=\"$:/plugins/kookma/shiraz/templates/footer/default\">\n<$transclude tiddler=<> field=\"text\" mode=\"inline\"/>\n\n\n\n\n\n\n\n\n<$set name=tableBody filter=\"[]-index\" value=\"display_body_fields\" emptyValue=\"display_body_indexes\" >\n\n<$vars total-entries={{{[subfiltercount[]] }}}\n\t\t\t page-number={{{[get[text]] ~[[1]]}}} \n\t\t\t entries-per-page={{{ [get[text]] ~[[25]] }}} >\n<$vars low={{{ [subtract[1]multiply] }}} \n high={{{[multiply] }}} >\t \n<$macrocall $name=<> />\n\n<$reveal type=\"match\" default=<> text=\"yes\" tag=\"tr\" class=\"shiraz-dtable-page-footer\">\n\n\n\n\n\n\n
    \n<$list filter=\"[<__editButton__>match[yes]]\" variavle=ignore>\n<>\n$caption$
    > style=\"font-weight:bold;background-color:transparent;\">Numerical summary
    > >\n<>\nDisplaying <$text text={{{[add[1]]}}}/> through <$text text={{{ [compare:number:ltthenelse] }}}/> of <> Results | <>\n<>\n
    \n
    \n\n\n\n\n\n\n\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/table-utility":{"title":"$:/plugins/kookma/shiraz/macros/dtables/table-utility","created":"20200209195541061","modified":"20210918193243499","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define tableFilter_fields() $(inputFilter)$+[$(sortneg)$$(sortType)${$(tempTableSort)$##sortIndex}]\n\\define tableFilter_indexes() [enlist]+[$(sortneg)$$(sortType)$[]]\n\n\\define getitems()\n<$set name=Index tiddler=<> index=\"sortIndex\">\n<$list filter=\"[subfilter!has[draft.of]]\" >\n<$text text=\"[[\"/>{{{ [getindexaddsuffix[°≡°]] }}}<><$text text=\"]]\"/>\n\n\n\\end\n\n\\define display_one_record()\n<$wikify name=\"rowStyle\" text=\"\"\"<$transclude tiddler=<> index=<> />\"\"\" mode=\"inline\">\n>>\n<$list filter=<> variable=currentColumn>\n<$set name=\"bodyLookup\" \n filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/BodyTemplate]contains:tbl-column-list]\n +[limit[1]get[title]]\"\n value=<> \n emptyValue=\"$:/plugins/kookma/shiraz/templates/body/default\">\n<$transclude tiddler=<> field=\"text\" mode=\"inline\"/>\n\n\n\n\n<$reveal type=\"match\" state=<> text=\"show\" tag=\"tr\">\n<>\n\n\n\\end\n\n\\define display_body_fields() \n<$set name=finalFilter filter=\"[match[yes]]\" value=\"[subfilterfirst] -[subfilterfirst]\" emptyValue=\"[subfilter]\">\n<$list filter=\"[subfilter]\" variable=\"currentRecord\">\n<>\n\n\n\\end\n\n\\define display_body_indexes()\n<$wikify name=\"items\" text=<> > \n<$set name=finalFilter filter=\"[match[yes]]\" value=\"[subfilterfirst] -[subfilterfirst]\" emptyValue=\"[subfilter]\">\n<$list filter=\"[subfilter]\" variable=\"currentItem\">\n<$list filter=\"[split[°≡°]last[]]\" variable=\"currentRecord\">\n <>\n\n\n\n\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/tbl-expand":{"title":"$:/plugins/kookma/shiraz/macros/dtables/tbl-expand","created":"20191203155802107","modified":"20210918193738145","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define display-expanded-record()\n> class=\"shiraz-dtable-expanded-record\">\n<$tiddler tiddler=<> >\n<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore\n emptyMessage=\"\"\"<$transclude tiddler=<> field=text mode=block/>\"\"\" >\n <$edit-text class=\"tbl-inpt-edit\" tiddler=<> field=\"text\" tag=textarea/>\n\n\n\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/toggle-edit-view":{"title":"$:/plugins/kookma/shiraz/macros/dtables/toggle-edit-view","created":"20191128215812372","modified":"20210808052511239","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define toggle-edit-view()\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" setTitle=<> setIndex=\"mode\" setTo=\"edit\">{{$:/core/images/edit-button}}\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" setTitle=<> setIndex=\"mode\" setTo=\"view\">{{$:/core/images/done-button}}\n\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/warning_message":{"title":"$:/plugins/kookma/shiraz/macros/dtables/warning_message","created":"20200210083402839","modified":"20210808052511245","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define show_tiddler_types()\n
    \n List tiddlers with wrong type\n\t
    \n <$list filter=\"[subfilter]\">\n\t<$list filter=\"[get[type]match[application/x-tiddler-dictionary]][get[type]match[application/json]]\" variable=ignore\n\temptyMessage=\"\"\"
    <$link/>
    <$view field=type/>
    \"\"\">\n\t\n\t\n\t
    \n
    \n\\end\n\n\n\\define show_warning_message()\nDynamic editable table from ''indexes'' expects all input tiddlers are of dataTiddler (json or dictionary) types. Using tiddlers of non //json// or //x-tiddler-dictionary// types as input can unintentionally overwrite the data in the text field of those tiddlers.
    \n
    \nCheck the tiddler types to find which tiddlers are not of dataTiddler types!
    \n<>\n\\end\n\n\n\\define check_tiddlers_type_for_table_from_indexes(isEditable)\n <$list filter=\"[]-field\" variable=ignore>\n\t<$list filter=\"[<__isEditable__>match[yes]]\" variable=ignore> \n\t<$list filter=\"[is[missing]]\" variable=ignore>\n\t<$list filter=\"[subfiltereach[type]get[type]]-[[application/x-tiddler-dictionary]]-[[application/json]]\" variable=ignore>\n\t
    \n\t Danger: Editable dynamic table from idexes with mixed types of tiddlers!  \n\t <$button class=\"tc-btn-invisible tc-tiddlylink\" style=\"fill:white;\" tooltip=\"Dismiss alert and continue with the current selection!\">{{$:/core/images/close-button}}\n <$action-setfield $tiddler=<> text=\"dissmiss\"/>\n \n\t
    \n\t
    \n\t <>\n\t
    \n \n\t\n\t\n\t\n\\end\t\n"},"$:/plugins/kookma/shiraz/macros/image-basic":{"title":"$:/plugins/kookma/shiraz/macros/image-basic","created":"20181119183704246","modified":"20210808052511253","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-basic(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n
    \n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>> /> \n
    $caption$
    \n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/image-card-utility":{"title":"$:/plugins/kookma/shiraz/macros/image-card-utility","created":"20191209113750505","modified":"20210808052511268","type":"text/vnd.tiddlywiki","text":"\\define image-card-top(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n
    \n <$image class=\"card-img-top\" source=<<__img__>> alt=<<__alt__>> />\n
    \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n
    $title$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n
    $text$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n

    $footer$

    \n \n
    \n
    \n\\end\n\n\\define image-card-bottom(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n
    \n
    \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n
    $title$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n
    $text$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n

    $footer$

    \n \n
    \n <$image class=\"card-img-bottom\" source=<<__img__>> alt=<<__alt__>> />\n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/image-card":{"title":"$:/plugins/kookma/shiraz/macros/image-card","created":"20190913094619863","modified":"20210808052511263","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-card(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", pos:\"top\", alt:\"\")\n\\import $:/plugins/kookma/shiraz/macros/image-card-utility\n<$reveal tag=\"div\" type=\"match\" default=\"top\" text=<<__pos__>> >\n<$macrocall $name=image-card-top img=<<__img__>> title=<<__title__>> text=<<__text__>>\n footer=<<__footer__>> width=<<__width__>> align=<<__align__>> alt=<<__alt__>> />\n\n<$reveal tag=\"div\" type=\"nomatch\" default=\"top\" text=<<__pos__>> >\n<$macrocall $name=image-card-bottom img=<<__img__>> title=<<__title__>> text=<<__text__>>\n footer=<<__footer__>> width=<<__width__>> align=<<__align__>> alt=<<__alt__>> />\n\n\\end\n\n\\define image-card-top(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n
    \n <$image class=\"card-img-top\" source=<<__img__>> alt=<<__alt__>> />\n
    \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n
    $title$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n
    $text$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n

    $footer$

    \n \n
    \n
    \n\\end\n\n\\define image-card-bottom(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n
    \n
    \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n
    $title$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n
    $text$
    \n \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n

    $footer$

    \n \n
    \n <$image class=\"card-img-bottom\" source=<<__img__>> alt=<<__alt__>> />\n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/image-overlay-utility":{"title":"$:/plugins/kookma/shiraz/macros/image-overlay-utility","created":"20191209114338849","modified":"20210808052511284","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define _cls-content-details() image-overlay-content-details $(fdcls)$"},"$:/plugins/kookma/shiraz/macros/image-overlay":{"title":"$:/plugins/kookma/shiraz/macros/image-overlay","created":"20181117203737197","modified":"20210808052511276","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-overlay(img, width:\"30%\", align:\"none\", caption:\"\", title:\"\", text:\"\", fadein:\"left\", alt:\"\")\n\\import $:/plugins/kookma/shiraz/macros/image-overlay-utility\n
    \n

    $caption$

    \n
    \n
    \n <$image class=\"image-overlay-content-image\" source=<<__img__>> alt=<<__alt__>>/>\n <$set name=\"fdcls\" filter=\"$fadein$ +[splitbefore[ ]] +[addprefix[image-overlay-fadeIn-]]\">\n
    > >\n

    $title$

    \n

    $text$

    \n
    \n \n
    \n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/image-polaroid":{"title":"$:/plugins/kookma/shiraz/macros/image-polaroid","created":"20181117203654803","modified":"20210808052511292","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-polaroid(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n
    \n <$image source=\"\"\"$img$\"\"\" tooltip=\"\"\"$tooltip$\"\"\"/>\n
    $caption$
    \n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/image-pretty":{"title":"$:/plugins/kookma/shiraz/macros/image-pretty","created":"20181117203541398","modified":"20210808052511297","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-pretty(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n
    \n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>> /> \n
    $caption$
    \n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/image-slidein":{"title":"$:/plugins/kookma/shiraz/macros/image-slidein","created":"20181117040544570","modified":"20210808052511301","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-slidein(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", slidein:\"left\", alt:\"\")\n
    \n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>>/>\n
    $caption$
    \n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/list-search":{"title":"$:/plugins/kookma/shiraz/macros/list-search","author":"Jeremy Ruston","created":"20191209101857832","creator":"Mohammad","description":"creates few paragraphs of dumy text","modified":"20210808052511310","modifier":"Mohammad","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define list-search( filter:\"[!is[system]]\", search:\"search:title\", template:\"$:/core/ui/ListItemTemplate\",\n class:\"\", stateTiddler:\"\", placeholder:\"keywords\")\n<$set name=\"state\" filter=\"[[$:/temp/list-search]addsuffix[/$stateTiddler$]addsuffix]\">\n
    > >\n<$edit-text tiddler=<> type=\"search\" tag=\"input\" default=\"\" placeholder=\"$placeholder$\"/>\n
    \n<$reveal state=<> type=\"match\" text=\"\" class=<<__class__>> tag=div>\n<$list filter=\"$filter$\" template=<<__template__>>/>\n\n<$reveal state=<> type=\"nomatch\" text=\"\" class=<<__class__>> tag=div>\n<$set name=term tiddler=<> field=\"text\">\n<$list filter=\"$filter$+[$search$]\" template=<<__template__>>/>\n\n\n\n\\end\n"},"$:/plugins/kookma/shiraz/macros/multicol":{"title":"$:/plugins/kookma/shiraz/macros/multicol","created":"20191018063242993","modified":"20210808052511318","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define multicol(src, ncol:\"\", class:\"\")\n
    \n\n$src$\n
    \n\\end"},"$:/plugins/kookma/shiraz/macros/slider":{"title":"$:/plugins/kookma/shiraz/macros/slider","created":"20190322161929431","description":"Slider macro shows (hides) its content.","modified":"20210808052511326","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define slider(label, src, labelClass, srcClass, status:\"closed\")\n<$vars revealState = \"\"\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\"\"\"\n source = {{{ [<__src__>get[text]else<__src__>] }}} >\n\n\n

    \n <$reveal type=\"nomatch\" state=<> text=\"open\" default=\"$status$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<> setTo=\"open\">\n <$transclude tiddler=\"$:/core/images/right-arrow\" />\n \n \n <$reveal type=\"match\" state=<> text=\"open\" default=\"$status$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<> setTo=\"closed\">\n <$transclude tiddler=\"$:/core/images/down-arrow\" />\n \n \n $label$\n

    \n\n<$reveal type=\"match\" state=<> text=\"open\" default=\"$status$\" class=\"$srcClass$\" tag=div>\n\n<>\n\n\n\n\\end"},"$:/plugins/kookma/shiraz/macros/space":{"title":"$:/plugins/kookma/shiraz/macros/space","created":"20170629183034888","modified":"20210808052511332","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define vspace(height:\"25px\")\n

    \n\\end\n\n\\define hspace(width:\"25px\")\n\n\\end\n"},"$:/plugins/kookma/shiraz/macros/text-utility":{"title":"$:/plugins/kookma/shiraz/macros/text-utility","created":"20181101154956345","modified":"20210808052511341","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define tc(src:\"\", color:\"red\") $src$\n\\define bc(src:\"\", color:\"yellow\") $src$\n\\define mono(src:\"\", class:\"\") $src$\n\\define transform(case:\"\", src:\"\", class:\"\") $src$"},"$:/plugins/kookma/shiraz/readme":{"title":"$:/plugins/kookma/shiraz/readme","created":"20210225163850254","modified":"20220726105755934","tags":"","type":"text/vnd.tiddlywiki","text":"; Shiraz\nShiraz is a small framework of stylesheets, templates and macros to create stylish contents in Tiddlywiki. Shiraz has customized elements like alerts, cards, panels, images, static tables, dynamic tables, quick table, badges, texts, etc. Shiraz uses some modified CSS classes from [[Bootstrap|https://getbootstrap.com/]] 4.3.1.\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Shiraz/\n* Code: https://github.com/kookma/TW-Shiraz\n"},"$:/plugins/kookma/shiraz/styles/alerts-leftbar":{"title":"$:/plugins/kookma/shiraz/styles/alerts-leftbar","text":".leftbar{\n border-width:0px !important;\n border-radius:0px !important;\n border-left-width: 5px !important;\n}","created":"20181208184228896","modified":"20210808052511357","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bglowtone-colors":{"title":"$:/plugins/kookma/shiraz/styles/bglowtone-colors","text":"/* Colors taked from [1] https://www.bg-w3schools.bg-com/colors/colors_names.bg-asp \n[2] http://www.bg-workwithcolor.bg-com/color-chart-full-01.bg-htm*/\n/*Low tone background colors*/\n.bg-mistyrose{background-color:#ffe4e1;}\n.bg-lemonchiffon{background-color:#fffacd;}\n.bg-lavenderblush{background-color:#fff0f5;}\n.bg-lavender{background-color:#e6e6fa;}\n.bg-honeydew{background-color:#f0fff0;}\n.bg-lightcyan{background-color:#e0ffff;}\n.bg-aliceblue{background-color:#f0f8ff;}\n.bg-cornsilk{background-color:#fff8dc;}\n.bg-gainsboro{background-color:#dcdcdc;}\n.bg-bisque{background-color:#ffe4c4;}\n.bg-snow{background-color:#fffafa;}","created":"20181029071532524","list":"mistyrose lemonchiffon lavenderblush lavender honeydew lightcyan aliceblue cornsilk gainsboro bisque snow","modified":"20210808052511365","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/alerts":{"title":"$:/plugins/kookma/shiraz/styles/bs/alerts","text":"/*Was taken from bootstrap 4.1.3*/\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n","created":"20180820171551129","modified":"20210808052511374","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/background-colors":{"title":"$:/plugins/kookma/shiraz/styles/bs/background-colors","text":".bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}","created":"20180820170518161","modified":"20210808052511382","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/badge":{"title":"$:/plugins/kookma/shiraz/styles/bs/badge","text":"/* Extracted from bootstrap 4.1.3 */\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #545b62;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n}\n\n","created":"20181122140031075","modified":"20210808052511390","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/borders":{"title":"$:/plugins/kookma/shiraz/styles/bs/borders","text":".border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n","created":"20180820174710383","modified":"20210808052511397","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/btn":{"title":"$:/plugins/kookma/shiraz/styles/bs/btn","text":"/* Button and btn classes Mohammad*/\n.btn {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n\n.btn:hover, .btn:focus {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n border-color: transparent;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n/* button size */\n\n.btn-lg{\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm{\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}","created":"20180822044340070","modified":"20210808052511406","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-column":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-column","text":"/* Extracted from bootstrap 4.3.1 */\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n -moz-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n -moz-column-gap: 1.25rem;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}","created":"20181122175345419","modified":"20210808052511418","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-deck":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-deck","text":"/* Extracted from bootstrap 4.1.3 */\n\n.card-deck {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}","created":"20180822174847352","modified":"20210808052511426","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-group":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-group","text":"/* Extracted from bootstrap 4.1.3 */\n.card-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n }\n .card-group > .card {\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-top,\n .card-group > .card:first-child .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-bottom,\n .card-group > .card:first-child .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-top,\n .card-group > .card:last-child .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-bottom,\n .card-group > .card:last-child .card-footer {\n border-bottom-left-radius: 0;\n }\n .card-group > .card:only-child {\n border-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-top,\n .card-group > .card:only-child .card-header {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-bottom,\n .card-group > .card:only-child .card-footer {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0;\n }\n}\n","created":"20181122175111676","modified":"20210808052511431","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card":{"title":"$:/plugins/kookma/shiraz/styles/bs/card","text":"/* Extracted from bootstrap 4.1.3 */\n.card {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n","created":"20180822174608965","modified":"20210808052511411","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/clearfix":{"title":"$:/plugins/kookma/shiraz/styles/bs/clearfix","text":".clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}","created":"20190919042042391","modified":"20210808052511439","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/float":{"title":"$:/plugins/kookma/shiraz/styles/bs/float","text":".float-left {\n float: left;\n}\n\n.float-right {\n float: right;\n}\n\n.float-none {\n float: none;\n}\n","created":"20180823142040855","modified":"20210808052511446","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/my-adjustment":{"title":"$:/plugins/kookma/shiraz/styles/bs/my-adjustment","text":"/* My adjustments to bootstrap 4.1.3 css classes */\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n/* Link is hacked to be compatible with bootstrap \nclasses remove it if the TW core objects break\n*/\n\n","created":"20180822044831813","modified":"20210808052511454","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/shadow":{"title":"$:/plugins/kookma/shiraz/styles/bs/shadow","text":".shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}","created":"20180823114259911","modified":"20210808052511462","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/sizing-spacing":{"title":"$:/plugins/kookma/shiraz/styles/bs/sizing-spacing","text":"/* Extracted from bootstrap 4.3.1 */\n/*Defines margins, paddings, width and height*/\n.w-25 {\n width: 25% !important;\n}\n.w-50 {\n width: 50% !important;\n}\n.w-75 {\n width: 75% !important;\n}\n.w-100 {\n width: 100% !important;\n}\n.w-auto {\n width: auto !important;\n}\n.h-25 {\n height: 25% !important;\n}\n.h-50 {\n height: 50% !important;\n}\n.h-75 {\n height: 75% !important;\n}\n.h-100 {\n height: 100% !important;\n}\n.h-auto {\n height: auto !important;\n}\n.mw-100 {\n max-width: 100% !important;\n}\n.mh-100 {\n max-height: 100% !important;\n}\n.m-0 {\n margin: 0 !important;\n}\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n.m-1 {\n margin: 0.25rem !important;\n}\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n.m-2 {\n margin: 0.5rem !important;\n}\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n","created":"20180822191952379","modified":"20210808052511469","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-alignment":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-alignment","text":".text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}","created":"20180822051223866","modified":"20210808052511477","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-colors":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-colors","text":"/* from bootstrap 4.1.3 */\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0062cc !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #545b62 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #1e7e34 !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #117a8b !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #d39e00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #bd2130 !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #dae0e5 !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #1d2124 !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n","created":"20180820173351023","modified":"20210808052511485","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-utility":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-utility","text":"/* Can be removed latter. This is used for illustration of bootstrap cards */\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n color: inherit;\n}\n\n.h1 {\n font-size: 2.5rem;\n}\n\n.h2 {\n font-size: 2rem;\n}\n\n.h3 {\n font-size: 1.75rem;\n}\n\n.h4 {\n font-size: 1.5rem;\n}\n\n.h5 {\n font-size: 1.25rem;\n}\n\n.h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n","created":"20180822130528002","modified":"20210808052511493","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/clear-float":{"title":"$:/plugins/kookma/shiraz/styles/clear-float","text":"/* Resolve issue for floating objects which cross the tiddler frame!\nThe below code should force the tiddler to always wrap around floating elements, so that they are always inside\nRef: https://groups.google.com/d/msg/tiddlywiki/5bZwwj6cyac/2LzFeA7AAwAJ\n*/\n\n.tc-tiddler-body:before, .tc-tiddler-body:after {\n content: \"\";\n display: table;\n}\n.tc-tiddler-body:after {\n clear: both;\n}\n.tc-tiddler-body {\n zoom: 1;\n}","created":"20190902043605186","modified":"20210808052511498","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab":{"title":"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab","text":".tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n background: none;\n border: none;\n border-bottom: solid 1px #737373;\n font-weight: bold;\n color: #DB4C3F;\n}","created":"20191209105546612","modified":"20211117172558880","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/csvtable-katex":{"title":"$:/plugins/kookma/shiraz/styles/csvtable-katex","text":".falign .katex-display > .katex {text-align:left;}\n.ralign .katex-display > .katex {text-align:right;}\n.table-mathbox tr td{vertical-align: baseline;} /* baseline aligned text and fomula in table cell*/\n\n/*\nOnly used with csv table + katex\nSee $:/plugins/kookma/shiraz/macros/csvtables/formats-math\n*/","created":"20210913204223405","modified":"20210914150205318","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/csvtable-star":{"title":"$:/plugins/kookma/shiraz/styles/csvtable-star","text":"/* Styles for star rating used with table-csv macro */\n.shiraz-star svg{\nwidth: 1.2em;\nheight: 1.2em;\nvertical-align: middle;\nfill:#FF9529; /*Deep Saffron*/\n}","created":"20210808144209865","modified":"20220801113747091","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/csvtable":{"title":"$:/plugins/kookma/shiraz/styles/csvtable","text":"/* todo section ------------*/\n.tc-tiddler-body p.dblock {\n\tdisplay:none;\n}\n\n/*\nOnly used with csv table\nSee $:/plugins/kookma/shiraz/macros/csvtables/table-csv\nThe @@ produces a p tag.\n*/","created":"20220724164156072","modified":"20220804042939414","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dbadge":{"title":"$:/plugins/kookma/shiraz/styles/dbadge","text":"/*Credits: \nNishant Srivastava https://codepen.io/nisrulz/pen/bpQWLW\nMohammad Rahmani: https://github.com/kookma\n*/\n.dbadge {\n display: inline-block;\n margin: 0.0em;\n}\n.dbadge > span {\n color: #ffffff;\n font-size: 0.8em;\n font-weight: 400;\n line-height: 1;\n padding: .2em .6em;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;}\n\n.dbadge-subject{\n background-color: #656565;\n border-bottom-left-radius: 0.25em;\n border-top-left-radius: 0.25em;}\n.dbadge-status {\n border-bottom-right-radius: 0.25em;\n border-top-right-radius: 0.25em;}\n\n.dbadge-primary {\n background-color: #337ab7;}\n.dbadge-success {\n background-color: #5cb85c;}\n.dbadge-info {\n background-color: #5bc0de;}\n.dbadge-warning {\n background-color: #f0ad4e;}\n.dbadge-danger {\n background-color: #d9534f;}","created":"20181204192835967","modified":"20210808052511511","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/details-slider":{"title":"$:/plugins/kookma/shiraz/styles/details-slider","text":"/*details html5 macro*/\ndetails > summary {\n padding: 2px 6px;\n font-weight:500;\n outline:none;\n}\ndetails > div {\n padding: 2px 6px;\n margin: 0;\n}\n\n\n/* Styles for summary cursor\nurl: https://css-tricks.com/two-issues-styling-the-details-element-and-how-to-solve-them/\n*/\n\nsummary {\n cursor: pointer;\n}\n\nsummary > * {\n display: inline;\n}\n\n\nbutton .kk-sh-slider svg{\nwidth: 0.8em;\nheight: 0.8em;\nvertical-align: middle;\n}\n\n","created":"20181101185908941","modified":"20220801113903959","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dynamic-tables-var":{"title":"$:/plugins/kookma/shiraz/styles/dynamic-tables-var","created":"20210224171009495","modified":"20220803192224020","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"/* these are dynamic or variable properties based on the tiddlywiki palette */\n\n.shiraz-dtable-page-footer select{\n\tbackground-color: <>;\n\tcolor:<>;\n}\n\n.shiraz-dtable-page-footer > td{\n\tbackground-color: <>;\n}\n\n/* customize the table footer used for numerical summary*/\n.shiraz-dtable-footer tr td{\n\tbackground-color: <>;\n\tborder:none;\n}\n\n/* correct button color to support dark theme */\n.tbl-container table thead th button{\n\tcolor:<>\n}\n.tbl-container table thead th button svg {\n\tfill:<>;\n}"},"$:/plugins/kookma/shiraz/styles/dynamic-tables":{"title":"$:/plugins/kookma/shiraz/styles/dynamic-tables","text":"/* edit-text box for dynamic table */\n.shiraz-dtable-textbox {\n width:100%;\n padding-left: 5px;\n border: none;\n}\n\n.shiraz-dtable-textbox:focus {\n outline: none;\n border: 1px solid #5778d8;\n background: transparent;\n}\n\n.tbl-inpt-edit { width: 100%; background-color: transparent; border: none; color: #000000;}\n\nbutton.tbl-sort-svg > svg { text-shadow: none; fill:#000000; height:10px; padding:0 0 2px 0; }\n\nth .tc-tiddlylink, th a { text-shadow: none; margin: 0 0 0 0; padding: 0 0 0 0; color:#000000; font-weight: bold; }\n\n\n/* DELETE CONFIRMATION */\ntable thead .tbl-delete-confirm > th {\n color: white;\n background-color:#ff0033;\n padding: 8px;\n margin: 0px;\n text-align:center;\n\tfont-weight:normal;\n}\n\ntable thead .tbl-delete-confirm > th > button {\n color: white;\n fill: white;\n}\n\n/* -- pagination --*/\n.shiraz-dtable-page-footer td{\n\tmargin: 0 0 0 0;\n\tpadding: 4px 7px 4px 7px;\n}\n\n.shiraz-dtable-page-footer select{\n\tpadding:0;\n\tmargin:0;\n\tborder:none;\t\n}\n\n.shiraz-dtable-page-footer {\n\ttext-align:center;\n}\n\n.shiraz-dtable-page-prev{\n\tfloat:left;\n\tmargin-right:8px;\n}\n\n.shiraz-dtable-page-next{\n\tfloat:right;\n\tmargin-left:8px;\n}\n\n.shiraz-dtable-page-footer button svg {height:0.7em;}\n.shiraz-dtable-page-footer button {outline: none; line-height:normal;}\n.shiraz-dtable-page-footer button:disabled {display:none;}\n\n/* to format the expanded record (tiddler body) - for local customization like KaTeX numbering */\n.shiraz-dtable-expanded-record{ }\n\n/*to adjust the column width for date/due-date fields*/\n.shiraz-dtable-date{\n\twidth:7em;\n}","created":"20191128184537594","modified":"20211117172018885","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-alignment":{"title":"$:/plugins/kookma/shiraz/styles/image-alignment","text":"/*Image aligning classes*/\n.image-align-right{\n float:right;\n margin:0.5em 0 1.3em 1.4em;\n}\n.image-align-left{\n float:left;\n margin: 0.5em 1.4em 1.3em 0;\n}\n.image-align-center{\n display:block;\n margin: 0.5em auto 1.3em; \n}\n\n.image-float-none {\n float: none !important;\n}","created":"20190918193736314","modified":"20210808052511534","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-basic":{"title":"$:/plugins/kookma/shiraz/styles/image-basic","text":".image-basic {\n text-align: center;\n font-style: italic;\n font-size: smaller;\n text-indent: 0;\n padding: 0.5em;\n}","created":"20181119182848505","modified":"20210808052511542","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-overlay":{"title":"$:/plugins/kookma/shiraz/styles/image-overlay","text":".image-overlay-container{\n width: 50%; \n box-sizing: border-box;\n}\n\n@media screen and (max-width: 640px){\n .image-overlay-container{\n display: block;\n width: 100%;\n }\n}\n\n@media screen and (min-width: 900px){\n .image-overlay-container{\n width: 33.33%;\n }\n}\n\n.image-overlay-container .image-overlay-title{\n color: #1a1a1a;\n text-align: center;\n margin-bottom:10px;\n}\n\n.image-overlay-content {\n position: relative;\n width: 90%;\n max-width: 400px;\n margin: auto;\n overflow: hidden;\n}\n\n.image-overlay-content .image-overlay-content-overlay {\n background: rgba(0,0,0,0.7);\n position: absolute;\n height: 99%;\n width: 100%;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n opacity: 0;\n -webkit-transition: all 0.4s ease-in-out 0s;\n -moz-transition: all 0.4s ease-in-out 0s;\n transition: all 0.4s ease-in-out 0s;\n}\n\n.image-overlay-content:hover .image-overlay-content-overlay{\n opacity: 1;\n}\n\n.image-overlay-content-image{\n width: 100%;\n}\n\n.image-overlay-content-details {\n position: absolute;\n text-align: center;\n padding-left: 1em;\n padding-right: 1em;\n width: 100%;\n top: 50%;\n left: 50%;\n opacity: 0;\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transition: all 0.3s ease-in-out 0s;\n -moz-transition: all 0.3s ease-in-out 0s;\n transition: all 0.3s ease-in-out 0s;\n}\n\n.image-overlay-content:hover .image-overlay-content-details{\n top: 50%;\n left: 50%;\n opacity: 1;\n}\n\n.image-overlay-content-details h3{\n color: #fff;\n font-weight: 500;\n letter-spacing: 0.15em;\n margin-bottom: 0.5em;\n text-transform: uppercase;\n}\n\n.image-overlay-content-details p{\n color: #fff;\n font-size: 0.8em;\n}\n\n.image-overlay-fadeIn-bottom{\n top: 80%;\n}\n\n.image-overlay-fadeIn-top{\n top: 20%;\n}\n\n.image-overlay-fadeIn-left{\n left: 20%;\n}\n\n.image-overlay-fadeIn-right{\n left: 80%;\n}","created":"20181116173704182","modified":"20210808052511547","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-polaroid":{"title":"$:/plugins/kookma/shiraz/styles/image-polaroid","text":".image-polaroid {\n min-width:64px;\n background-color: #f8f9fa;\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n.image-polaroid img {\n width: 100%;\n padding:10px;\n height: auto;\n}\n.image-polaroid .image-polaroid-caption {\n padding:10px 15px 10px;\n text-align: center; \n line-height: 1.4em;\n font-weight:300;\n font-size: 0.9em; \n}","created":"20181116094450565","modified":"20210808052511555","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-pretty":{"title":"$:/plugins/kookma/shiraz/styles/image-pretty","text":".image-pretty {\n min-width:64px;\n border: 1px solid #c8ccd1;\n background-color:#f8f9fa;\n}\n.image-pretty:hover {\n border: 1px solid #777;\n}\n.image-pretty img {\n padding:2px;\n width: 100%;\n height: auto;\n}\n.image-pretty .image-pretty-caption {\n padding:10px 15px 10px;\n text-align: center; \n line-height: 1.4em;\n font-weight:300;\n font-size: 0.9em; \n}\n\n","created":"20181115182806512","modified":"20210808052511563","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-slidein":{"title":"$:/plugins/kookma/shiraz/styles/image-slidein","text":".image-slidein { \n display: block; \n position: relative; \n /*float: left;*/\n overflow: hidden; \n /* margin: 0 20px 20px 0;*/\n}\n\n.image-slidein img {\n width: 100%;\n height: auto;\n}\n\n.image-slidein figcaption { \n position: absolute; \n background: rgba(0,0,0,0.75); \n color: white; \n padding: 10px 20px; \n opacity: 0;\n -webkit-transition: all 0.6s ease;\n -moz-transition: all 0.6s ease;\n -o-transition: all 0.6s ease;\n}\n.image-slidein:hover figcaption {\n opacity: 1;\n}\n.image-slidein:before { \n content: \"?\"; \n position: absolute; \n font-weight: 800; \n background: rgba(255,255,255,0.75); \n text-shadow: 0 0 5px white;\n color: black;\n width: 24px;\n height: 24px;\n -webkit-border-radius: 12px;\n -moz-border-radius: 12px;\n border-radius: 12px;\n text-align: center;\n font-size: 14px;\n line-height: 24px;\n -moz-transition: all 0.6s ease;\n opacity: 0.75;\t\n}\n.image-slidein:hover:before {\n opacity: 0;\n}\n\n.mr-cap-left:before { bottom: 10px; left: 10px; }\n.mr-cap-left figcaption { bottom: 0; left: -30%; }\n.mr-cap-left:hover figcaption { left: 0; }\n\n.mr-cap-right:before { bottom: 10px; right: 10px; }\n.mr-cap-right figcaption { bottom: 0; right: -30%; }\n.mr-cap-right:hover figcaption { right: 0; }\n\n.mr-cap-top:before { top: 10px; left: 10px; }\n.mr-cap-top figcaption { left: 0; top: -30%; }\n.mr-cap-top:hover figcaption { top: 0; }\n\n.mr-cap-bottom:before { bottom: 10px; left: 10px; }\n.mr-cap-bottom figcaption { left: 0; bottom: -30%;}\n.mr-cap-bottom:hover figcaption { bottom: 0; }\n","created":"20181117040213926","modified":"20210808052511579","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/mono":{"title":"$:/plugins/kookma/shiraz/styles/mono","text":".mono {\n\tcolor:unset;\n\tbackground-color: #f7f7f9;\n\tborder: 1px solid #e1e1e8;\n\twhite-space: pre-wrap;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: \"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace;\n}","created":"20181010192406005","modified":"20210808052511602","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/column":{"title":"$:/plugins/kookma/shiraz/styles/multicols/column","text":"/* multicolumn layouts with fixed column number works on the whole tiddler */\n.multicol .tc-tiddler-body {\n column-width: 14em;\n column-rule: 1px solid #ccc;\n}\n/* two columns responsive*/\n.multicol2 .tc-tiddler-body {\n\tcolumn-count:2; \n\tcolumn-width:15em;\n}\n/* three columns responsive*/\n.multicol3 .tc-tiddler-body {\n\tcolumn-count:3; \n\tcolumn-width:10em;\n}\n\n\n/* remove the extra space from first paragraph */\n.multicol .tc-tiddler-body > :first-child, \n.multicol2 .tc-tiddler-body > :first-child, \n.multicol3 .tc-tiddler-body > :first-child { margin-top: 0;}\n\n/*-------------------------------------------------------------------------------*/\n/* Classes for using with macro and div elements */\n.sh-multicol {\n column-width: 14em;\n column-rule: 1px solid #ccc;\n}\n/* two columns responsive*/\n.sh-multicol2 {\n\tcolumn-count:2; \n\tcolumn-width:15em;\n}\n/* three columns responsive*/\n.sh-multicol3 {\n\tcolumn-count:3; \n\tcolumn-width:10em;\n}\n\n/* remove the extra space from first paragraph */\n.sh-multicol > :first-child,\n.sh-multicol2 > :first-child,\n.sh-multicol3 > :first-child { margin-top: 0;}","created":"20190627204703061","modified":"20210808052511607","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/flex backup":{"title":"$:/plugins/kookma/shiraz/styles/multicols/flex backup","text":"/* multicolumn layout using flexbox courtesy from Bootstrap 4.3.1*/\n.flex-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n.flex-col-1, \n.flex-col-2, \n.flex-col-3 {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.flex-col-1{flex: 1 1 0;}\n.flex-col-2{flex: 2 1 0;}\n.flex-col-3{flex: 3 1 0;}\n\n.flex-col-1 > :first-child,\n.flex-col-2 > :first-child,\n.flex-col-3 > :first-child {\n\tmargin-top: 0;}","created":"20191030140900552","modified":"20210808052511618","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/flex":{"title":"$:/plugins/kookma/shiraz/styles/multicols/flex","text":"/* multicolumn layout using flexbox courtesy from Bootstrap 4.3.1*/\n.flex-row {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n/* margin-right: -15px;\n margin-left: -15px;*/\n}\n\n.flex-col,\n.flex-col-1, \n.flex-col-2, \n.flex-col-3,\n.flex-col-4 {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n/* for small screen width>=576px\nhttps://getbootstrap.com/docs/4.3/layout/grid/\n*/\n@media (min-width: 576px) {\n.flex-col {flex: 1 1 0; max-width: 100%;}\n.flex-col-1 {flex: 0 0 25%; max-width:25%}\n.flex-col-2 {flex: 0 0 50%; max-width:50%}\n.flex-col-3 {flex: 0 0 75%; max-width:75%}\n.flex-col-4 {flex: 0 0 100%; max-width:100%}\n}\n\n.flex-col > :first-child,\n.flex-col-1 > :first-child,\n.flex-col-2 > :first-child,\n.flex-col-3 > :first-child,\n.flex-col-4 > :first-child {\n margin-top: 0;}\n\n\n/* Alignment */\n.flex-align-items-center {\n align-items: center !important;\n}\n.flex-justify-content-center {\n justify-content: center !important;\n}\n\n.flex-no-gutters {\n margin-right: 0;\n margin-left: 0;\n}","created":"20191014193910006","modified":"20210808052511613","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/storyriver":{"title":"$:/plugins/kookma/shiraz/styles/multicols/storyriver","text":"/* create story river in two column layout */\n.tc-story-river {\n display: flex;\n flex-wrap: wrap;\n}\n\n.tc-tiddler-frame\n{\n max-width: 49%; margin-right: 1%;\n /*max-width: 32%; margin-right: 1%; */\n}\n","created":"20140523214749659","modified":"20210808150936240","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/notebook":{"title":"$:/plugins/kookma/shiraz/styles/notebook","text":"@media print{\n .notebook .tc-tiddler-body {\n padding-left:60px;\n margin-top:25px;\n }\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n\t.notebook .tc-tags-wrapper {\n padding-left:60px;\n }\n}\n\n@media screen{\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n\t.notebook .tc-tags-wrapper,\n\t.notebook .tc-tiddler-body {\n padding-left:30px;\n }\n\n}\t\n\n@media screen and (max-width:960px) {\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n .notebook .tc-tags-wrapper,\n .notebook .tc-tiddler-body {\n padding-left:60px;\n }\n\n}\n/*prevent applying left border in edit mode */\n.notebook:not([data-tiddler-title^=\"Draft of\"]):before {\n content: '';\n position: absolute;\n top: 0; bottom: 0; left: 0;\n width: 50px;\n background: radial-gradient(#575450 6px, transparent 7px) repeat-y;\n background-size: 30px 30px;\n border-right: 3px solid #D44147;\n\t z-index:1;\n}\n\n.notebook .tc-tiddler-body {\n\t position: relative;\n background: linear-gradient(transparent, transparent 1.95em, #91D1D3 1.95em);\n background-size: 2em 2em;\n\t min-height:90px; \n}\n\n.notebook .tc-tiddler-body{\n\t padding-top:20px;\n font-family: \"Handlee\", cursive;\n font-weight:300;\n line-height:2em;\n color:#696969;\n}\n\n/* Setting font for other elements */\n.notebook .tc-tiddler-body pre,\n.notebook .tc-tiddler-body code,\n.notebook .tc-tiddler-body pre code\n{\n font-family: \"Handlee\", cursive;\n font-weight:300;\n}","created":"20210420164111716","modified":"20210808052511631","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/sticky-footer":{"title":"$:/plugins/kookma/shiraz/styles/sticky-footer","text":".sticky-footer {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 0.5rem;\n background-color: #efefef;\n text-align: center;\n margin-top: 5px;\n box-sizing: border-box;\n width: 100%;\n}\n","created":"20180907070611557","modified":"20210808052511635","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/tables":{"title":"$:/plugins/kookma/shiraz/styles/tables","text":".table-tight{\n\tfont-size:0.8em;\n}\n\n\n/*\nThis tiddler defines the custom stylesheet for tables \nApril 13, 2018\n*/\n\n/*center aligned table*/\n.table-center {\n margin:0 auto;\n}\n\n/* Table caption at top */\n.table-caption-top caption {\n caption-side:top;\n margin-bottom:0.2rem;\n}\n\n/* Striped row table */\n.table-striped-row tr:nth-child(even) td{\n background-color:#F3F6F6; \n}\n\n/* Striped column table */\n.table-striped-col tbody tr td:nth-child(odd) {\n\tbackground-color: #F3F6F6;\n}\n\n/*Borderless table*/\n.table-borderless, \n.table-borderless thead td, \n.table-borderless th, \n.table-borderless tr, \n.table-borderless td{\n border:0;\n}\n\n/* Table lines should be used with table-borderless for abbreviations and two column layout */\n\n.table-lines thead td, .table-lines th{\n border-bottom: 2px solid #dddddd;\n\t background-color:unset;\n }\n.table-lines td{\n border-bottom: 1px solid #dddddd;\n background-color:unset;\n }\n\n/* Table hover (yellow background on mouse over) */\n.table-hover tbody tr:hover{\n color: #212529;\n background-color: #e6e6e6;\n}\n.table-hover-yellow tbody tr:hover{background-color: #ffffcc;}\n.table-hover-cyan tbody tr:hover{background-color: #e6ffff;}\n\n/* Table with colored header */\n.thead-primary thead td, .thead-primary th{background-color: #007bff; color: #fff;}\n.thead-secondary thead td, .thead-secondary th{background-color: #6c757d; color: #fff;}\n.thead-success thead td, .thead-success th{background-color: #28a745; color: #fff;}\n.thead-warning thead td, .thead-warning th{background-color: #ffc107; color: #fff;}\n.thead-danger thead td, .thead-danger th{background-color: #dc3545; color: #fff;}\n.thead-info thead td, .thead-info th{background-color: #17a2b8; color: #fff;}\n.thead-dark thead td, .thead-dark th{background-color: #343a40; color: #fff;}\n.thead-light thead td, .thead-light th{background-color: #f8f9fa; color: #212529;}\n\n/* Table with colored header correct to fill svgs with white color */\n.thead-primary > thead> tr > td svg, .thead-primary > thead> tr > th svg,\n.thead-secondary > thead> tr > td svg, .thead-secondary > thead> tr > th svg,\n.thead-success > thead> tr > td svg, .thead-success > thead> tr > th svg,\n.thead-warning > thead> tr > td svg, .thead-warning > thead> tr > th svg,\n.thead-danger > thead> tr > td svg, .thead-danger > thead> tr > th svg,\n.thead-info > thead> tr > td svg, .thead-info > thead> tr > th svg,\n.thead-dark > thead> tr > td svg, .thead-dark > thead> tr > th svg\n {fill:#ffffff; padding:0 0 3px 0; }\n\n\n.thead-primary th .tc-tiddlylink, .thead-primary th a,\n.thead-secondary th .tc-tiddlylink, .thead-primary th a,\n.thead-success th .tc-tiddlylink, .thead-primary th a,\n.thead-warning th .tc-tiddlylink, .thead-primary th a,\n.thead-danger th .tc-tiddlylink, .thead-primary th a,\n.thead-info th .tc-tiddlylink, .thead-primary th a,\n.thead-dark th .tc-tiddlylink, .thead-primary th a{color:#ffffff}\n","created":"20180413092232257","modified":"20210808052511640","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/tiddler-title-class":{"title":"$:/plugins/kookma/shiraz/styles/tiddler-title-class","text":".title-primary .tc-title {\n color: #007bff;\n}\n.title-secondary .tc-title {\n color: #6c757d;\n}\n.title-success .tc-title {\n color: #28a745;\n}\n.title-info .tc-title {\n color: #17a2b8;\n}\n.title-warning .tc-title {\n color: #ffc107;\n}\n.title-danger .tc-title {\n color: #dc3545;\n}\n.title-light .tc-title {\n color: #f8f9fa;\n}\n.title-dark .tc-title {\n color: #343a40;\n}\n.title-white .tc-title {\n color: #fff;\n}","created":"20191101112257846","modified":"20210808052511648","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/ui/colorify-buttons":{"title":"$:/plugins/kookma/shiraz/styles/ui/colorify-buttons","text":"/* These css rules makes page control buttons in beatiful color */\n\n/*page control buttons*/\n.tc-page-controls .tc-image-new-button { fill: #5EB95E; } /*New tiddler button*/\n.tc-page-controls .tc-image-options-button { fill:#8058A5; } /*Open control pannel*/\n\n/* These css rules makes tiddler viewtoolbar buttons in beatiful color */\n\n.tc-tiddler-controls .tc-image-edit-button{fill:#f37b1d}\n.tc-tiddler-controls .tc-image-info-button{fill:#0e90d2}","created":"20191029092047069","modified":"20220801115310318","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/ui/edit-toolbar-buttons":{"title":"$:/plugins/kookma/shiraz/styles/ui/edit-toolbar-buttons","text":"/*Tiddler edit toolbar buttons as traffic lights*/\n.tc-tiddler-controls .tc-image-delete-button {fill:#ebb;}\n.tc-tiddler-controls .tc-image-cancel-button {fill:#ed9;}\n.tc-tiddler-controls .tc-image-done-button {fill:#beb;}","created":"20191029091851469","modified":"20220801114726830","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/ui/view-toolbar-button-visibility":{"title":"$:/plugins/kookma/shiraz/styles/ui/view-toolbar-button-visibility","text":"/* Mouseover toolbar visibility: courtesy from Tobias Beer*/\n.tc-tiddler-frame .tc-titlebar button {\n opacity: 0;\n transition: opacity .5s ease-in-out;\n}\n.tc-tiddler-frame:hover .tc-titlebar button {\n zoom: 1;\n filter: alpha(opacity=100);\n opacity: 1;\n}\n","created":"20191029094209435","modified":"20220801114522318","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/templates/body/color":{"title":"$:/plugins/kookma/shiraz/templates/body/color","created":"20200210160016959","modified":"20210808052511653","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"color","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n\n<$link overrideClass=\"dt disabled\" to=\"\">\n<$edit-text tag=input type=color tiddler=<> field=color/>\n\n\\end\n\n\\define edit_color() <$edit-text tag=input type=color tiddler=<> field=<>/>\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<>\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n <>\n\n"},"$:/plugins/kookma/shiraz/templates/body/date":{"title":"$:/plugins/kookma/shiraz/templates/body/date","created":"20170128100657312","modified":"20211117172100619","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"created modified","type":"text/vnd.tiddlywiki","text":"\n<$view tiddler=<> field=<> format=\"date\" template=\"YYYY.0MM.0DD\"/>\n"},"$:/plugins/kookma/shiraz/templates/body/default":{"title":"$:/plugins/kookma/shiraz/templates/body/default","created":"20191125202328213","modified":"20210808052511665","tags":"$:/tags/Table/BodyTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<>\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n <>\n\n"},"$:/plugins/kookma/shiraz/templates/body/due-date":{"title":"$:/plugins/kookma/shiraz/templates/body/due-date","created":"20200206191120454","modified":"20211117172046922","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"due-date","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n<$set tiddler=<> field=<> name=due-date>\n<$text text={{{[split[-]split[.]join[]format:date[YYYY.0MM.0DD]]}}} />\n\n\\end\n\\define showCell_Locked() <>\n\\define edit_date() <$edit-text tag=input type=date tiddler=<> field=<>/>\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\" class=\"shiraz-dtable-date\">\n<>\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n <>\n\n\n\n"},"$:/plugins/kookma/shiraz/templates/body/email":{"title":"$:/plugins/kookma/shiraz/templates/body/email","created":"20191202210913762","modified":"20210808052511678","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"email","type":"text/vnd.tiddlywiki","text":"\\define display-email-address()\n\n<>\n\n\\end\n\\define display-email-address_Locked()\n\n<>\n\n\\end\n\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<>\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n<>\n\n\n\n"},"$:/plugins/kookma/shiraz/templates/body/priority":{"title":"$:/plugins/kookma/shiraz/templates/body/priority","created":"20200424102701026","modified":"20210808052511686","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"priority","type":"text/vnd.tiddlywiki","text":"\\define circle(color, fill)\n\n> fill=<<__fill__>> stroke-width=\"1\"/>\n\n\\end\n\n\\define showCell()\n<$list filter=\"[getmatch[very high]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#dc3545\" fill=\"#f8d7da\"/>\n\n<$list filter=\"[getmatch[high]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#ff8c00\" fill=\"#fff3cd\"/>\n\n<$list filter=\"[getmatch[normal]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#17a2b8\" fill=\"#d1ecf1\"/>\n\n<$list filter=\"[getmatch[low]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#007bff\" fill=\"#cce5ff\"/>\n\n<$list filter=\"[getmatch[very low]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#6c757d\" fill=\"#e2e3e5\"/>\n\n  <$transclude tiddler=<> field=<> />\n\\end\n\n\\define showCell_Locked() <>\n\n\\define select_priority()\n<$select tiddler=<> field=<> default=\"\">\n\\end\n\n\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<>\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n <>\n\n<$reveal>\n\n"},"$:/plugins/kookma/shiraz/templates/body/status":{"title":"$:/plugins/kookma/shiraz/templates/body/status","created":"20200424100127763","modified":"20210808052511690","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"status","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<> field=<> mode=\"inline\" />\n\\define showCell_Locked() <>\n\\define select_status()\n<$select tiddler=<> field=<> default=\"\">\n\\end\n\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<>\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n <>\n\n\n\n"},"$:/plugins/kookma/shiraz/templates/body/tags":{"title":"$:/plugins/kookma/shiraz/templates/body/tags","created":"20191125193831767","modified":"20210808052511699","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tags","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$list filter=\"[titletags[]]\">\n\n<$set name=\"transclusion\" value=<>>\n<$macrocall $name=\"tag-pill-body\" tag=<> icon={{!!icon}} color={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<> style=\"position:absolute; z-index:9999;\" type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<>/> \n\n
    \n<$macrocall $name=\"list-tagged-draggable\" tag=<>/>\n\n\n
    \n\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n\n<$list filter=\"[getindex[sortIndex]match]\" variable=ignore\nemptyMessage=<> >\n <>\n\n"},"$:/plugins/kookma/shiraz/templates/body/tbl-checkbox":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-checkbox","created":"20200206150644636","modified":"20220803160452747","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-checkbox","type":"text/vnd.tiddlywiki","text":"\\define rowStyle() color:<>; background-color:<>;\n\n<$checkbox tiddler=<> tag=\"Done\"\ncheckactions=\"\"\"<$action-setfield $tiddler=<> $index=<> $value=<> /><$action-setfield $tiddler=<> status=\"complete\"/>\"\"\"\nuncheckactions=\"\"\"<$action-setfield $tiddler=<> $index=<> /><$action-setfield $tiddler=<> status=\"rework\"/>\"\"\" />\n\n\n"},"$:/plugins/kookma/shiraz/templates/body/tbl-clone":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-clone","created":"20201203153613838","modified":"20210808052511708","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-clone","type":"text/vnd.tiddlywiki","text":"\\define cloneTiddler() <$action-createtiddler $basetitle=<> $template=<> />\n\n<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore>\n\n <$button actions=<> class=\"tc-btn-invisible\">\n\t {{$:/core/images/clone-button}}\n\t\n\n"},"$:/plugins/kookma/shiraz/templates/body/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-delete","created":"20170212101814663","modified":"20210808052511715","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore>\n\n <$button class=\"tc-btn-invisible\">\n <$action-sendmessage $message=\"tm-delete-tiddler\" $param=<>/>\n {{$:/core/images/delete-button}}\n \n\n"},"$:/plugins/kookma/shiraz/templates/body/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-expand","created":"20200209072642825","modified":"20210808052511720","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" state=<> text=\"show\" tag=\"td\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\">\n <$action-setfield $tiddler=<> $index=<> $value=\"show\" />\n {{$:/core/images/right-arrow}}\n \n\n<$reveal type=\"match\" state=<> text=\"show\" tag=\"td\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\">\n <$action-setfield $tiddler=<> $index=<>/>\n {{$:/core/images/down-arrow}}\n \n"},"$:/plugins/kookma/shiraz/templates/body/tbl-linktype":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-linktype","created":"20210501184147078","modified":"20210808052511724","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-linktype","type":"text/vnd.tiddlywiki","text":"\n<$text text={{{ [all[current]links[]matchthen[link]] [all[current]backlinks[]matchthen[backlink]] [all[current]tagging[]matchthen[tagging]] ~[[transclusion]] }}} />\n\n"},"$:/plugins/kookma/shiraz/templates/body/title":{"title":"$:/plugins/kookma/shiraz/templates/body/title","created":"20170128100357203","modified":"20210808052511731","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"title","type":"text/vnd.tiddlywiki","text":"\n<$link to=<>><$text text=<> />\n"},"$:/plugins/kookma/shiraz/templates/body/type":{"title":"$:/plugins/kookma/shiraz/templates/body/type","created":"20200210063953546","modified":"20210808052511737","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"type","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<> field=<> mode=\"inline\" />\n\n<>\n\n"},"$:/plugins/kookma/shiraz/templates/footer/default":{"title":"$:/plugins/kookma/shiraz/templates/footer/default","created":"20200130171717175","modified":"20210808052511744","tags":"$:/tags/Table/FooterTemplate","type":"text/vnd.tiddlywiki","text":"<$vars idx={{{ [addsuffix[/]addsuffix] }}}>\n<$set name=getFieldOrIndex filter=\"[]-index\" value=\"get\" emptyValue=\"getindex\">\n<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$transclude tiddler=<> index=<> mode=\"inline\" />\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$edit-text tiddler=<> index=<> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n\n\n"},"$:/plugins/kookma/shiraz/templates/footer/tbl-clone":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-clone","created":"20201203155343568","modified":"20210808052511749","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-clone","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore>\n\n"},"$:/plugins/kookma/shiraz/templates/footer/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-delete","created":"20200130174835714","modified":"20210808052511757","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore>\n\n"},"$:/plugins/kookma/shiraz/templates/footer/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-expand","created":"20200130173518861","modified":"20210808052511762","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/shiraz/templates/header/default":{"title":"$:/plugins/kookma/shiraz/templates/header/default","created":"20170205223914688","modified":"20210808165151493","tags":"$:/tags/Table/HeaderTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<> stateIndex=\"sortIndex\" text=<> tag=\"th\">\n<$button setTitle=<> setIndex=\"sortIndex\" setTo=<> class=\"tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<> $index=\"hasnegate\" $value=\"false\"/>\n<$action-setfield $tiddler=<> $index=\"negate\" $value=\"\"/>\n<$text text=<>/>\n\n\n<$reveal type=\"match\" stateTitle=<> stateIndex=\"sortIndex\" text=<> tag=\"th\">\n<$list filter=\"[getindex[hasnegate]match[false]]\" variable=ignore>\n<$button setTitle=<> setIndex=\"hasnegate\" setTo=\"true\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<> $index=\"negate\" $value=\"!\"/>\n<$text text=<>/> {{$:/core/images/down-arrow}}\n\n\n<$list filter=\"[getindex[hasnegate]match[true]]\" variable=ignore>\n<$button setTitle=<> setIndex=\"hasnegate\" setTo=\"false\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<> $index=\"negate\" $value=\"\"/>\n<$text text=<>/> {{$:/core/images/up-arrow}}\n\n\n\n"},"$:/plugins/kookma/shiraz/templates/header/tbl-checkbox":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-checkbox","created":"20200206151157578","modified":"20220803160745475","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-checkbox","type":"text/vnd.tiddlywiki","text":"\\define rowStyle() color:<>; background-color:<>;\n\n\\define chk-checkactions()\n<$list filter=\"[subfilter]\" variable=\"currentRecord\">\n<$action-listops $tiddler=<> $tags=\"+[append[Done]]\" />\n<$action-setfield $tiddler=<> status=\"complete\"/>\n<$action-setfield $tiddler=<> $index=<> $value=<> />\n\n\\end\n\\define chk-uncheckactions()\n<$list filter=\"[subfilter]\" variable=\"currentRecord\">\n<$action-listops $tiddler=<> $tags=\"+[remove[Done]]\" />\n<$action-setfield $tiddler=<> status=\"rework\"/>\n<$action-setfield $tiddler=<> $index=<> />\n\n\\end\n\n\n<$checkbox checkactions=<> uncheckactions=<> />\n\n\n"},"$:/plugins/kookma/shiraz/templates/header/tbl-clone":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-clone","created":"20201203155440168","modified":"20210808052511782","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-clone","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore>\n\n\n<$button class=\"tc-btn-invisible\" disabled=yes tooltip=\"disabled button\" style=\"cursor:default\">\n{{$:/core/images/clone-button}}\n\n\n\n"},"$:/plugins/kookma/shiraz/templates/header/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-delete","created":"20170212102107998","modified":"20210808052511788","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[getindex[mode]match[edit]]\" variable=ignore>\n\n \n <$button class=\"tc-btn-invisible\">\n <$action-setfield $tiddler=\"$:/temp/tables/delete-all\" text=<>/>\n {{$:/core/images/delete-button}}\n \n \n\n"},"$:/plugins/kookma/shiraz/templates/header/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-expand","created":"20200209072944418","modified":"20220109164215950","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"\n <$list filter=\"[indexes[]limit[1]]\">\n <$button class=\"tc-btn-invisible\">{{$:/core/images/fold-button}}\n <$action-setfield $tiddler=<> text=\"\"/>\n \n \n"},"$:/plugins/kookma/shiraz/templates/header/tbl-linktype":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-linktype","created":"20210517200330994","modified":"20210808052511806","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-linktype","type":"text/vnd.tiddlywiki","text":"Linktype\n"},"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette":{"title":"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette","caption":"{{$:/plugins/kookma/shiraz/images/palette-switch}} {{$:/language/Buttons/Shiraz/Caption}}","created":"20201210171047824","dark-palette":"$:/palettes/SolarFlare","description":"Toggle between light/dark color palette","light-palette":"$:/palettes/Vanilla","list-after":"","modified":"20220803185853934","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n<$vars \ndarkPalette ={{$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette!!dark-palette}}\nlightPalette={{$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette!!light-palette}}\n> \n<$button \n tooltip={{$:/language/Buttons/Shiraz/Hint}} \n aria-label={{$:/language/Buttons/Shiraz/Caption}} \n class=<>\n>\n <$list filter=\"[match[yes]]\">\n {{$:/plugins/kookma/shiraz/images/palette-switch}}\n \n\n <$list filter=\"[match[yes]]\">\n switch palettes\n \n\n <$reveal type=\"match\" state=\"$:/palette\" text=<> > \n <$action-setfield $tiddler=\"$:/palette\" text=<> />\n \n <$reveal type=\"nomatch\" state=\"$:/palette\" text=<> >\n <$action-setfield $tiddler=\"$:/palette\" text=<> >\n \n\n"},"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings":{"title":"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings","caption":"Shiraz","created":"20191018054657077","list-after":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20220801115256994","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"These settings let you customise the behaviour of Shiraz plugin.\n\n---\n\n;Show Shiraz setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar\n\n;Options\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/multicols/storyriver\" tag=\"$:/tags/Stylesheet\"> Multicolumn story river\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/ui/colorify-buttons\" tag=\"$:/tags/Stylesheet\"> Colorful UI buttons\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/ui/view-toolbar-button-visibility\" tag=\"$:/tags/Stylesheet\"> Tiddler visibility on mouse hover\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/ui/edit-toolbar-buttons\" tag=\"$:/tags/Stylesheet\"> Traffic lights for edit toolbar buttons\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab\" tag=\"$:/tags/Stylesheet\"> Colorify sidebar tabs\n\n;Set dark and light palettes\n{{$:/plugins/kookma/shiraz/ui/set-dark-light-palette}}\n\n\n"},"$:/plugins/kookma/shiraz/ui/set-dark-light-palette":{"title":"$:/plugins/kookma/shiraz/ui/set-dark-light-palette","created":"20210510155820574","dark-palette":"$:/palettes/SolarFlare","light-palette":"$:/palettes/Vanilla","modified":"20210808052511827","tags":"","type":"text/vnd.tiddlywiki","text":"\\define switchpaletteTid() $:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette\n\n\\define selectPelette(title, default, tiddler, field)\n\n<$select tiddler=<<__tiddler__>> field=<<__field__>> default=\"\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Palette]]\" >\n\n\n\n\\end\n\n
    \n\n<$macrocall $name=selectPelette \n title=\"Dark palette\" filter=<> \n\tdefault=\"$:/palettes/SolarizedDark\" field=\"dark-palette\" \n\ttiddler=<> />
    \n\n<$macrocall $name=selectPelette \n title=\"Light palette\" filter=<> \n\tdefault=\"$:/palettes/Vanilla\" field=\"light-palette\" \n\ttiddler=<> />\n\n\n<$button> {{$:/core/images/erase}}\n<$action-setfield \n $tiddler=<> \n\t$field=dark-palette \n\t$value={{!!dark-palette}} />\n<$action-setfield \n $tiddler=<> \n\t$field=light-palette \n\t$value={{!!light-palette}} />\t\n\t\n<$action-setfield \n $tiddler=\"$:/palette\" \n\t$field=text\n\t$value={{!!light-palette}} />\t\t\n\n
    \n\t"},"$:/plugins/kookma/shiraz/viewtemplates/sticky-footer":{"title":"$:/plugins/kookma/shiraz/viewtemplates/sticky-footer","created":"20180907071314793","modified":"20210808052511833","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[all[current]has[sticky-footer]]\">\n
    \n{{!!sticky-footer}}\n
    \n\n"}}} \ No newline at end of file diff --git a/tiddlers/$__plugins_kookma_shiraz.json.meta b/tiddlers/$__plugins_kookma_shiraz.json.meta index 3310bf5..541ac21 100644 --- a/tiddlers/$__plugins_kookma_shiraz.json.meta +++ b/tiddlers/$__plugins_kookma_shiraz.json.meta @@ -1,5 +1,5 @@ author: Mohammad Rahmani -core-version: >=5.2.0 +core-version: >=5.2.1 dependents: description: extended markups, styles, images, tables, and macros list: readme license history @@ -8,4 +8,4 @@ plugin-type: plugin source: https://github.com/kookma/TW-Shiraz title: $:/plugins/kookma/shiraz type: application/json -version: 2.4.6 \ No newline at end of file +version: 2.5.1 \ No newline at end of file diff --git a/tiddlers/$__plugins_kookma_thinkup.json b/tiddlers/$__plugins_kookma_thinkup.json new file mode 100644 index 0000000..a765818 --- /dev/null +++ b/tiddlers/$__plugins_kookma_thinkup.json @@ -0,0 +1 @@ +{"tiddlers":{"Comment":{"title":"Comment","caption":"{{$:/plugins/kookma/thinkup/images/comments}} Comments","color":"#c1e1ea","created":"20211029131331684","icon":"$:/plugins/kookma/thinkup/images/comments","modified":"20211029131811984","tags":"$:/tags/Thinkup","type":"text/vnd.tiddlywiki","text":"{{$:/plugins/kookma/thinkup/comments/sidebar}}"},"$:/plugins/kookma/thinkup/comments/add-comment-button-actions backup":{"title":"$:/plugins/kookma/thinkup/comments/add-comment-button-actions backup","created":"20211112055817669","modified":"20211112055830656","tags":"show-content","type":"text/vnd.tiddlywiki","text":"<$set name=\"username\" value={{$:/status/UserName}} emptyValue=\"(anonymous)\">\n<$set name=\"target\" filter=\"[]\">\n<$action-createtiddler $basetitle={{{ [[Comment by ']addsuffixaddsuffix[' on ']addsuffixaddsuffix[']] }}} role=\"comment\" list=<> text=\"\" edit-mode=\"yes\"/>\n\n\n"},"$:/plugins/kookma/thinkup/comments/add-comment-button-actions":{"title":"$:/plugins/kookma/thinkup/comments/add-comment-button-actions","created":"20211029125936197","modified":"20211112060256426","tags":"show-content","type":"text/vnd.tiddlywiki","text":"<$set name=\"username\" value={{$:/status/UserName}} emptyValue=\"(anonymous)\">\n<$set name=\"target\" filter=\"[]\">\n<$action-createtiddler $basetitle={{{ [[Comment by ]addsuffixaddprefix[/]addprefix] }}} role=\"comment\" list=<> text=\"\" edit-mode=\"yes\"/>\n\n\n"},"$:/plugins/kookma/thinkup/comments/add-comment-button":{"title":"$:/plugins/kookma/thinkup/comments/add-comment-button","created":"20211029125816609","modified":"20211029134634377","tags":"show-content","type":"text/vnd.tiddlywiki","text":"<$reveal state=\"$:/status/IsReadOnly\" type=\"match\" text=\"no\" default=\"no\" tag=\"div\" class=\"tc-comment-button\">\n<$button class=\"tc-btn-invisible\" tooltip=\"add comment\" actions={{$:/plugins/kookma/thinkup/comments/add-comment-button-actions}}>\n{{$:/plugins/kookma/thinkup/images/add-comment}}\n\n\n"},"$:/plugins/kookma/thinkup/comments/comments-template":{"title":"$:/plugins/kookma/thinkup/comments/comments-template","created":"20211029124219377","modified":"20211112095801056","tags":"show-content","type":"text/vnd.tiddlywiki","text":"
    \n
    \n<$list filter=\"[all[tiddlers+shadows]role[comment]containssort[created]!has[draft.of]]\">\n
    \n
    \n
    \n<$link>{{!!creator}} at <$view field=\"modified\" format=\"date\" template=\"0hh:0mm:0ss DDD DDth MMM YYYY\"/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Thinkup/CommentsToolbarButton]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<> mode=\"inline\"/>\n\n
    \n
    \n<$reveal type=\"match\" state=\"!!edit-mode\" text=\"yes\">\n\n\n<$keyboard actions=\"\"\"<$action-setfield $tiddler=<> $field=\"edit-mode\" $value=\"no\"/>\"\"\" key=\"ctrl+enter\">\n<$keyboard actions=\"\"\"<$action-setfield $tiddler=<> $field=\"edit-mode\" $value=\"no\"/><$action-setfield $tiddler=<> $field=\"text\" $value={{!!saved-text}}/>\"\"\" key=\"escape\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body\" mode=block/>\n\n\n\n<$reveal type=\"nomatch\" state=\"!!edit-mode\" text=\"yes\">\n<$transclude tiddler=<> mode=\"block\"/>\n\n\n
    \n
    \n\n
    \n\n
    \n
    "},"$:/plugins/kookma/thinkup/comments/filter-all-comments":{"title":"$:/plugins/kookma/thinkup/comments/filter-all-comments","created":"20211029122811467","description":"All comments","filter":"[role[comment]!sort[modified]]","modified":"20211102110650145","tags":"$:/tags/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/thinkup/comments/header-view-template-segment":{"title":"$:/plugins/kookma/thinkup/comments/header-view-template-segment","created":"20211029132237328","modified":"20211217092150604","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"\\define display-original-comment()\n<$link><$text text=<>/>\n\\end\n\n\\define find-original-comment(exclude)\n<$list filter=\"[role[comment]]\" emptyMessage=<> variable=\"ignore\">\n<$list filter=\"[listsort[title]] -[enlist<__exclude__>]\">\n<$set name=\"newExclude\" filter=\"[enlist<__exclude__>] []\">\n<$macrocall $name=\"find-original-comment\" exclude=<>/>\n\n\n\n\\end\n\n<$list filter=\"[all[current]role[comment]]\" variable=\"ignore\">\n
    \nThis tiddler is a comment on\n<$list filter=\"[listsort[title]]\">\n<>\n\n<$list filter=\"[listrole[comment]sort[title]limit[1]]\" variable=\"ignore\">\n

    \nParent comments:\n

    \n
      \n<$list filter=\"[listrole[comment]sort[title]]\">\n
    • \n<$link to=<>><$text text=<>/>\n
    • \n\n
    \n\n
    \n\n"},"$:/plugins/kookma/thinkup/comments/sidebar":{"title":"$:/plugins/kookma/thinkup/comments/sidebar","caption":"Comments","created":"20211029131237923","modified":"20211112064213900","tags":"show-content","type":"text/vnd.tiddlywiki","text":"
    \n<$list filter=\"[all[tiddlers+shadows]role[comment]has[modified]!sort[modified]eachday[modified]]\">\n
    \n<$view field=\"modified\" format=\"date\" template=\"DDth MMM YYYY\"/>\n<$list filter=\"[all[tiddlers+shadows]role[comment]sameday:modified{!!modified}!sort[modified]]\">\n
    \n<$link>Comment by '<$view field=\"modifier\">(anonymous)' on\n<$list filter=\"[listsort[title]]\">\n<$link to=<>><$text text=<>/>\n\n
    \n\n
    \n\n
    \n"},"$:/plugins/kookma/thinkup/comments/styles":{"title":"$:/plugins/kookma/thinkup/comments/styles","created":"20211029130710247","modified":"20211112055151270","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n\n.tc-is-comment-header {\n\tpadding:0.25em;\n border-radius: 4px;\n/*\tborder: 2px solid #c1e1ea;\n\tbackground: #f1fcff; */\n\tborder: 2px solid <>;\n\tbackground: <>;\n}\n\n/*\n.tc-comments-segment {\n\tborder-top: 2px solid #d7eef4;\n}\n*/\n\n.tc-comment-button button {\n\twidth: 100%;\n\ttext-align: right;\n}\n\n.tc-sidebar-scrollable .tc-comment-button button {\n\twidth: auto;\n\ttext-align: right;\n}\n\n\n.tc-comment-button button svg {\n/*\tfill: #26cb56;*/\n fill: <>;\n height: 1.5em; /* by mohammad */\n width: 1.5em;\n}\n\n/* Mohammad --------------*/\n.tc-comment-button:hover button svg{\nfill: <> ;\n}\n\n\n.tc-comments {}\n\n.tc-comment-list {\n\tlist-style: none;\n padding-left: 0;\n}\n\n.tc-comment-list .tc-comments {\n\tpadding-left: 1em;\n}\n\n.tc-comment-entry {\n\tposition: relative;\n\tborder-radius: 4px;\n\tmargin: 0.5em 0 0 0;\n/* background: #f1fcff;*/\n/* border: 2px solid #c1e1ea; */\n\tborder: 2px solid <>;\n\tbackground: <>;\n}\n\n.tc-comment-entry-heading {\n\tfont-size: 0.7em;\n\tfont-weight: bold;\n\ttext-transform: uppercase;\n/*\tbackground: #d7eef4;\n\tcolor: #5B6D80; */\n\tbackground: <>;\n color: <>;\n\tpadding: 0 0.5em;\n}\n\n.tc-comment-entry-body {\n\tfont-size: 0.8em; /* affects view mode and toolbars in edit mode */\n\tline-height:1.25em;\n\tpadding: 0 0.5em;\n}\n\n/* font size of comment editor */\n.tc-comment-entry-body textarea {\n\tfont-size: 0.9em;\n\twidth: 100%;\n min-height: 40px;\n resize: vertical; /* user can resize vertically, but width is fixed */\n}\n\n.tc-comment-entry-body .CodeMirror { /* if CodeMirror is in use */\n\tfont-size: 1.2em;\n}"},"$:/plugins/kookma/thinkup/comments/toolbar-button-cancel":{"title":"$:/plugins/kookma/thinkup/comments/toolbar-button-cancel","created":"20211029121235226","modified":"20211029121235226","tags":"$:/tags/Thinkup/CommentsToolbarButton","type":"text/vnd.tiddlywiki","text":"<$reveal state=\"$:/status/IsReadOnly\" type=\"match\" text=\"no\" default=\"no\" tag=\"span\">\n<$reveal type=\"match\" state=\"!!edit-mode\" text=\"yes\">\n<$button>\n<$action-setfield $tiddler=<> $field=\"edit-mode\" $value=\"no\"/>\n<$action-setfield $tiddler=<> $field=\"text\" $value={{!!saved-text}}/>\ncancel\n\n\n\n"},"$:/plugins/kookma/thinkup/comments/toolbar-button-delete":{"title":"$:/plugins/kookma/thinkup/comments/toolbar-button-delete","created":"20211029121235207","modified":"20211029121235208","tags":"$:/tags/Thinkup/CommentsToolbarButton","type":"text/vnd.tiddlywiki","text":"<$reveal state=\"$:/status/IsReadOnly\" type=\"match\" text=\"no\" default=\"no\" tag=\"span\">\n<$reveal type=\"match\" state=\"!!edit-mode\" text=\"yes\">\n<$button>\n<$action-deletetiddler $tiddler=<>/>\ndelete\n\n\n\n"},"$:/plugins/kookma/thinkup/comments/toolbar-button-edit":{"title":"$:/plugins/kookma/thinkup/comments/toolbar-button-edit","created":"20211029121235186","modified":"20211029121235186","tags":"$:/tags/Thinkup/CommentsToolbarButton","type":"text/vnd.tiddlywiki","text":"<$reveal state=\"$:/status/IsReadOnly\" type=\"match\" text=\"no\" default=\"no\" tag=\"span\">\n<$reveal type=\"nomatch\" state=\"!!edit-mode\" text=\"yes\">\n<$button>\n<$action-setfield $tiddler=<> $field=\"edit-mode\" $value=\"yes\"/>\n<$action-setfield $tiddler=<> $field=\"saved-text\" $value={{!!text}}/>\nedit\n\n\n\n"},"$:/plugins/kookma/thinkup/comments/toolbar-button-save":{"title":"$:/plugins/kookma/thinkup/comments/toolbar-button-save","created":"20211029182025545","modified":"20211029182411382","tags":"$:/tags/Thinkup/CommentsToolbarButton","type":"text/vnd.tiddlywiki","text":"<$reveal state=\"$:/status/IsReadOnly\" type=\"match\" text=\"no\" default=\"no\" tag=\"span\">\n<$reveal type=\"match\" state=\"!!edit-mode\" text=\"yes\">\n<$button>\n<$action-setfield $tiddler=<> $field=\"edit-mode\" $value=\"no\"/>\nsave\n\n\n\n"},"$:/tags/Thinkup/CommentsToolbarButton":{"title":"$:/tags/Thinkup/CommentsToolbarButton","created":"20211029121210888","list":"$:/plugins/tiddlywiki/comments/toolbar-button-cancel $:/plugins/tiddlywiki/comments/toolbar-button-delete $:/plugins/tiddlywiki/comments/toolbar-button-save $:/plugins/tiddlywiki/comments/toolbar-button-edit","modified":"20211029121235245","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/thinkup/config/ctabs":{"title":"$:/plugins/kookma/thinkup/config/ctabs","created":"20211102113552196","modified":"20211102113659442","tags":"","type":"text/vnd.tiddlywiki","text":"Category Tabs"},"$:/plugins/kookma/thinkup/config/main":{"title":"$:/plugins/kookma/thinkup/config/main","created":"20211102113428852","modified":"20211102113450297","tags":"","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/thinkup/config/node-explorer":{"text":"{\n \"display\": \"table\",\n \"visibility\": \"closed\",\n \"links\": \"yes\",\n \"backlinks\": \"yes\",\n \"tagging\": \"yes\",\n \"transclusion\": \"yes\"\n}","type":"application/json","created":"20210803175705000","modified":"20211029083605709","title":"$:/plugins/kookma/thinkup/config/node-explorer"},"$:/config/ShortcutInfo/goto-today-journal":{"title":"$:/config/ShortcutInfo/goto-today-journal","created":"20211118174422894","modified":"20211118174832764","tags":"","type":"text/vnd.tiddlywiki","text":"Thinkup - Open today journal"},"$:/config/ShortcutInfo/new-idea":{"title":"$:/config/ShortcutInfo/new-idea","created":"20211112191448029","modified":"20211118174819171","tags":"","type":"text/vnd.tiddlywiki","text":"Thinkup - Create a new idea"},"$:/config/ShortcutInfo/new-people":{"title":"$:/config/ShortcutInfo/new-people","created":"20211112122606312","modified":"20211118174754388","tags":"","type":"text/vnd.tiddlywiki","text":"Thinkup - Create a new people"},"$:/config/ShortcutInfo/new-source":{"title":"$:/config/ShortcutInfo/new-source","created":"20211112123050021","modified":"20211118174732140","tags":"","type":"text/vnd.tiddlywiki","text":"Thinkup - Create a new source"},"$:/config/ShortcutInfo/new-task":{"title":"$:/config/ShortcutInfo/new-task","created":"20211112103420316","modified":"20211118174714395","tags":"","type":"text/vnd.tiddlywiki","text":"Thinkup - Create a new task"},"$:/config/shortcuts/goto-today-journal":{"title":"$:/config/shortcuts/goto-today-journal","created":"20211117162646414","modified":"20211119070623311","tags":"","type":"text/vnd.tiddlywiki","text":"alt-J"},"$:/config/shortcuts/new-idea":{"title":"$:/config/shortcuts/new-idea","created":"20211112191508934","modified":"20211115064407641","tags":"","type":"text/vnd.tiddlywiki","text":"alt-A"},"$:/config/shortcuts/new-people":{"title":"$:/config/shortcuts/new-people","created":"20211112122456391","modified":"20211112123013244","tags":"","type":"text/vnd.tiddlywiki","text":"alt+P"},"$:/config/shortcuts/new-source":{"title":"$:/config/shortcuts/new-source","created":"20211112122949821","modified":"20211112123004573","tags":"","type":"text/vnd.tiddlywiki","text":"alt+S"},"$:/config/shortcuts/new-task":{"title":"$:/config/shortcuts/new-task","created":"20211112102456319","modified":"20211112122538614","tags":"","type":"text/vnd.tiddlywiki","text":"alt+T"},"done":{"title":"done","color":"#0a8017","created":"20211217082521275","modified":"20211217202618738","type":"text/vnd.tiddlywiki"},"$:/config/Thinkup/Journal/EnableFilter":{"title":"$:/config/Thinkup/Journal/EnableFilter","created":"20211117104937921","modified":"20211122051543011","status":"disabled","tags":"","type":"text/vnd.tiddlywiki","text":" [all[current]tag[Journal]] "},"$:/plugins/kookma/thinkup/history":{"title":"$:/plugins/kookma/thinkup/history","created":"20211024153442212","modified":"20211119160859417","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-???/#ChangeLog\n\n* ''0.2.5'' -- 2021.11.19 -- first beta release (public)\n* ''0.2.1'' -- 2021.09.19 -- node explorer is added\n* ''0.2.0'' -- 2021.04.21 -- first concept\n\n"},"Idea":{"title":"Idea","caption":"{{$:/plugins/kookma/thinkup/images/lightbulb}} Ideas","color":"#0ac711","created":"20210425110232734","icon":"$:/plugins/kookma/thinkup/images/lightbulb","list":"[[New Idea 1]] [[New Idea 4]] [[New Idea 6]] TEST [[New Idea 5]] [[New Idea 2]] [[New Idea]] [[New Idea 7]] [[New Idea 3]]","modified":"20211217192453678","tags":"$:/tags/Thinkup","type":"text/vnd.tiddlywiki","text":"{{||$:/plugins/kookma/thinkup/templates/new-from-sidebar}}"},"$:/plugins/kookma/thinkup/images/add-comment":{"title":"$:/plugins/kookma/thinkup/images/add-comment","caption":"comment-plus-outline","collection":"","created":"20211029130612605","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211110220054264","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/bookshelf":{"title":"$:/plugins/kookma/thinkup/images/bookshelf","caption":"bookshelf","collection":"","created":"20210507151145654","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211029075811592","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/close":{"title":"$:/plugins/kookma/thinkup/images/close","caption":"window-close","collection":"","created":"20211029052941100","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211110220039320","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/comments":{"title":"$:/plugins/kookma/thinkup/images/comments","caption":"comment-text-multiple-outline","collection":"","created":"20211028182856751","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211110215934776","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/keywords":{"title":"$:/plugins/kookma/thinkup/images/keywords","caption":"app-indicator","collection":"","created":"20211110215853991","library":"Bootstrap","library_version":"1.3.0","modified":"20211110215911041","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/lightbulb":{"title":"$:/plugins/kookma/thinkup/images/lightbulb","caption":"lightbulb-on-outline","collection":"","created":"20210507151145661","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211029075811602","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/list-status":{"title":"$:/plugins/kookma/thinkup/images/list-status","caption":"list-status","collection":"","created":"20210507185109803","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211029075811609","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/mr_avatar":{"title":"$:/plugins/kookma/thinkup/images/mr_avatar","text":"iVBORw0KGgoAAAANSUhEUgAAAfMAAAHyCAMAAADIjdfcAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYBQTFRFg4B7vLq3SEVBl5OOYFxX8erbcGxns7Gu4oWPoJ2Yp6KajYqEycK5W1dSbGhjgXx26+bf6tzM22Rw6Ofn2djWenZxVFFN0c3Hrqmi3dbNwryz4t7Xk4+I8cTK+fXu+/n1d3Rup1JZm5eQtq+m9vHm7be6+PXw9dXZWkdFvbWrxsTC29TK6aGoTElF2NTNiU5S////yFZi2dXQ6cO6Z2Nd3nqB7Ojk0cm/ioaA9vPu9fHs9PDq9vPtyMS+8+/o9fHt49/b7+fV9PDr6+fh9fHr2Vln9O/o8u3l9fDr9PDp8+7m8u3m8ezj8uzk8ezk9vLt8evi7+vh7+vi7+rg8evj7ung7+rh7unf+Pby7uje8+/n7ejd7ujd8uzl9fX04uHg7Ovqqaejz87M/v388OjX9/TvZGBa+PXx8/Pz+vfx8+3g9/Tw3NzbUE1I9/Pq3NXL/fz5o6Kg7Kyz/PT1jIqI0dDP9/Purq2r5KCe99/i3tbG+urs5rGr1c6+5Zec7M3EdO9bTQAAKA5JREFUeNrs3ftjE8edAPCVHyvL8gOIZCu2g1UBpagx2ZAFufjsIoI5uPf1Xr3LnSQbSokLJJDQPJq2//rtrF77mNmd93xH2vkxLeDdj+c73/nO7Izz21/NX/sb6vbPQft1frvP2x4l2pNxe4htR7Tt6bA9jrSTSXN+W5DPGfk8ms87+Ryazz35/JkX5HNnXpDPnXlBPnfmBfncmRfkc2dekM+deUE+d+YF+dyZF+RzZ16Qz515QT535gX53JkX5HNnXpDPnXlBPnfmBfncmRfkc2dekM+deUE+d+YF+dyZF+RzZ16Qz515QT535gX53JkX5HNnXpDPnXlBPnfmBfncmRfkc2dekM+deUE+d+YF+dyZF+RzZ16Qz515QT535gX53JkX5HNnXpDPnXlBTtf+Z3bMC3JK8tkxL8hpyf9uVswLcmryWTEvyOnJZ8S8IGcgnw3zgpyFfCbMC3Im8lkwL8jZyGfAvCBnJLffvCBnJbfevCBnJrfdvCBnJ7fcvCDnILfbvCDnIbfavCDnIrfZvCDnI7fYvCDnJP97a80Lcl5ya80Lcm5yW80Lcn5yS80LcgFyO80LchFyK80LciFyG80LcjFyC80LckFy+8wLclFy68wLcmFy28wLcnFyy8wLcgnkdpkX5DLIrTIvyKWQ22RekMsh/1t7zAtySeT2mBfkssitMS/IpZHbYl6QyyO3xLwgl0huh3lBLpPcCvOCXCq5DebSyO9tHzcah4eHrh9rbvCfGo3y9p05IbfAXAb5ve1y69DPbe5hq7H9YNbJ4ZsLkz8otTZ9pna4Wrozw+TgzcXI7x23mhFMp3pWbtdqAy/WBrXaebm8WK3Hu3xje0bJoZuLkN8r7U0I64vlJDWm9WvlSjXa4ct3ZpAcuLkA+fEEvFqu9TyGNjgvT+Hd1vG9GSOHbc5N/mB1lJvXz849rtYvLU7S+73SvVkiB23OS77dGoP3PZEWuBPYrSaHbM5Jvj2clLkVMfBROz+rj4P89oyQAzbnIx+JO+2eJ6v1x+zN8r1ZIIdrzkX+YBjVqzVPbpuwt+7YTw7WnIu84SoRHwb5ymj+dmw7OVRzHvLtTXXiqPVKw87eLNlNDtSch3w1TNXPPZXtvDpRt5ccpjkH+Z2wk5d7nuI2GIb45ra95CDNOchLaCR3+p6GNlI/vGMrOURzDvIwrpc9TW2kvvq5neQAzdnJH6DSulvz9LVBWKBzS1aSwzNnJN9ujIowPU9rqzlhgN+1kBycORP5cWu8DlLxtLcwhZh2dXvI/w+YOQP5vUZzulrqGWi9MMDvfW4bOTBzevJRldV3K+2+Z6qdo67evGMZ+T+CMqcW/83qCPzcM9rCrh7Ed6vIQZlTk5fDYbxe6nnGWymctVlFDsmcVrwWZur1tgei9dHvX8smckDm1J18ODX2oLSeQ4sOhByOOe1IHm5tPOt5cFo4qLfsIQdjThvX0fysXvNgtQoNOhhyKOaU5Mdo8FzseR5A9LIt5EDMKcl3UFwveQAbWlc/toQchjkDuVuDSB4mcu6uHeQgzFnI+x7MNghGnU07yCGYM5A7PQ9qqwU/XsMKcgDms0HueahusG0DuXlz2klaEDvrkMk9zyFEd2jkxs1pSzEu4LF8XIXFR3dw5P9k2Jy24IpK7MDJw+iezt3hkRs2pyVvBORt6ORer54uxwEkN2tOS75tZvcT+x6KVBoHkdyoOfUOiSbwlD1ajjsET27SnHqLxKoNg/lkkr4NndygOTV5Tef3CjI7OlByc+b02x2DnN2xhDzs6HeAkxszpydHBbiaLeaoo7eAk5syZ9jH3rQjZ4909F3Y5IbMGciDbu4O7DH36sNiHGByM+YsHyg17Ungwtb2/SZsciPmLOSom/dsMu+5vn8MmtyEOdNniJu+f+ZZ1Sq+vwea3IA5Ezmqug7sMkfLa59DJv8H7eZs35e3rEraJ1ncDmRy7eZs5PesmptPl1Q3IZPrNmc8RaLk+3XbyL0BmqIDJtdsznpWzJ5lE7XJJqkSYHK95qzk9+zL4EbBfQ8wuVZz5hOhShatriQy90twyXWasx8CZmdoDzP3Y7jkGs05jvpzbdkrkS7LrMIl12fOc4ar77s2kqN9cU245NrMeU5qDnKhRSvNe6PZGkxyXeZcR/DvAf3wmGq2dg0suSZzvrtVmhYW4YbtzPerH0Il12POR45m53aSowHd7XwIlFyLOe+lWXbOzscD+hozuiZyHea8V+OVLVxTiwzojQ4jui5yDebcF2CuWlqRGc3QWx02dG3k6s35r7k99P1zW83bvr/ZYULXR67cXOBm401r0/aw5L7RYUHXSK7aXOT+8iAP6tlq7gU//A4Duk5yxeYi5L+2d6o2qsp0qNG1kv+7UnMh8ge2VtujSRwdul5ypeZC5Gh6XrXXPJhoVjuU6JrJVZqLkVtuXhsl7hTouskVmguSW26ONkJ2qNC1k6szFyWXY96vVA0tzYXVVwp0/eTKzIXJZZi3g+y5rukaVXLinolugPxfFJmLkwubD85cv14eoLvvKgbm+VXfX+3kopsgV2QugVzQvLYY/PFh6XawaOIIyfJ0skZGN0KuxlwGuYh5r1333bPpzviaq/+osVJkskZCN0OuxFwKOb95GNTbvfiSh/ZV2dhkDY9uiFyFuRxyXvN+ZRLUY2Wxtn7zeicT3RS5AnNJ5HzmtSB1qmA+d+o52tdlYxN0DLoxcvnmssh5zAPx6DAeQ6/rzuNw5hF0c+TSzaWRs5sj8TIxV+u7mtHrvn+LjG6QXLa5PHL0FUtdmrgB9Gq8KBNHN0ku2VwiOdv6+aCSI64fnWAeohsll2sulZzFvOxiM7fUJjWd6MH8odLBo5sll2oul5zevFb3q1SYNZ09PVWIm6KbJZdpLpmc1rx35ru0k2+d4Z1s3vnQKPlv5JnLJqc079dZLs0N0M/Nm8fRdZPLM5dOfp/KvOSzIQa/Ipoqcue+73Qo0LWTSzOXT36fZn97xXcYDxnqOdjDROtnsldhMAV3HLp+clnmCsjvH+aaB37saye9RdxgUKVPCqSYj9ENkEsyV0Gebx6Qc218OsMEB3SZdXWg0XyIboJcjrkS8nxzh3dobmOuUQ9vMC9pNEfoRsilmKshzzWv8J880nfTfxbdYC6zq+eadz40Qy7DXBF5nrnQPoigV6cG9b7rnPnypnL55gl0XeQSzFWR38/+/nwguN/pLL0ftu0vBlM5WRsmKcxj6NrIxc2Vkd9vZJpXRY8LbLupTP3ML/cqsvZG05hH0PWRC5urI882Pxc/g6LvpPp0NRhNML8L6swn6BrJRc0Vkmeb1+viITjdp3uu2wt/F7SZj9B1kv+rmLlK8kzztpwKaqpP19DJkz326h6/eYiulVzMXCn5/VLG0Z91Sdc39JP5+1m4V7KEmcBHavxUwZ/WPEDXSy5krpb8fsaGuLa0hZKgT9f7sb2S4aARTODbWZplieadD/WSi5grJs8yr0u8peU8Xp8ZJYeZpfw6zcl19OZkdCXkAuaqyTPMa1LP/h04frUXzd0H4wSvR5zbV/PRGcxJ6GrI+c2Vk2eYL0q+TrMcLb/1x5yleNSPZgF+u5Ib3lnM8eiKyLnN1ZPff0DaNNGT/vVZrR5ZVK+M7/05J87U3cUgHLQlmuPQVZHzmmsgv0/cKNOW/x1Sb3E6VR9MfqWCrL5MCDTBgJ+zta7NZJ5GV0bOaa6FnGi+qOKevdK0U0+Hjl4VX34v+X20JMO9H44CXR05n7kecpJ5T82HxdOpejRFxJdn+iiwt7NvbGY1j6MrJOcy10R+v4m/dqmt6BPT3tk4aas7sf0VmB8i5F7MXOZhNo+iqyTnMddFTlpAryg7EnQ8VS9Hb2/Elmeq1eFybsZftpg4UIYFXSk5h7k2cpJ5Xd2xcYNhfB/E5v8DTHmm4g6H9XbWYi/+ezUKdLXk7Ob6yO/jD3AfKD3Jfxjf605y/a2XDNy5q3s85kN0xeTM5hrJCRtl2mpPdT9HofwscYp4as2lPRzK2xm/f5PTvFnRVZOzmuskJyymnik+4RuF8vPk71UtsWmyNvo/OOSKIPacCQp05eT/yWaulRyZY2ZDVdWXMaGlttQvW2LT5Ni8Taz8T25qYEZXTc5mrpf8/jG24K7h2C/syv1ZtPxeG2dvxBU+ttIrEV0BOZO5ZnI0njuaU7hJKK/iRvpI+X38UxBX8kvc5lF0FeQs5rrJW8GI6C/WUv1Hx8U8vQF5Jhcz77nYmeOg5Pjs8/MUuhJyBnPd5MFo7tcrbnJIL/kDz1SbVuom5kHIT/88g4rvu+izmGti6GrI6c11k98JXlmlhxa8qj3MzNhQm2yqmZgP0nlm2/UrffSlu++uiaArIqc2102OCjLDQkg5PqhXzd6hOtpUU5tWi5x6qjY8XJbtu8wV9xi6KnJac+3kqJvXxtG8kqx0m2zhpppIVlFKrLRUJsuvZXQ7Mje6MvJ/ozPXTo5y9ur0LUZyY9f4vbloU02kaJMI7pXpb2jPDW/KlYEuk5zOXD85WkdtT+sh7iA1STLYghzDjXTuWHDvR4NSJXWGOye6VHIqcwPkD2IXZ9YiJRIQdyUHqVx800ykcjOI7psWCO4RdLnkNOYGyNE3LNVYwKxN+EHclTzoR6tEkfprbEWuF798iRddMjmFuQny5JLatPJRA3hXcmRBP77ynrx8iQ9dNnm+uRHy1NJ5eUwN0Tyy8ppI4hf5a3ETdOnkueZmyFNbZCb7HiGanxMn62WBGfoIXT55nrkh8vSW10V3vKYxAGfem8zWkkU5cXMcuiB5jrkp8rT5aGOK4dIroTlVQn0mSEX3OrLRRcmzzY2Rp83HfQmk+WTrTt2RtYhORhcmzzQ3R475nGEU3EGaj7fo9ZO7ZqSYx9HFybPMDZJjzEdfMoA0H8/QUuuqcsyj6BLI/4NsbpIcYz7K3EGajxcB3MXUeoz4eB5Dl0FONjdKjvtUrRLOgmGaDxd40/ukJOTtMXQp5ERzs+Q48+GXgzDNh0lc1fVUmQ/R5ZCTzA2TYz9PDLeYwjQPZ5KYHTPEu5e40CWRE8xNk2M/VSuh/wTTPFz5weyMqwrW22Possjx5sbJkXlqD3G40ALTPFzhxeyArUs073wliRxrbp4c/9kSWmgpAay9DhN33E53zu+XyOgyyHHmAMjvl3Ffkgz8Ksg1luEuPcwXLTWxPRNpdCnkGHMI5OicsDouPa4BNa+4NUxgasspyeDRucnT5iDICWfJBCM6UPOyX8V8oXombaqWRucnT5kDIUeTtRru1S7CNC9hP5t2RPa9ZqMLkP9XwhwKOfpYDbfZ0fFh7IfDjNyY3JLv2AEadBHyhDkYcpTE4T5e6Psg9r1izCue8hRuii5EHjeHQ/7oDuFwuDJMc6/Uw6WcItvbM9DFyGPmgMgfPWoSbtpq9z1bmiO6A5KELkYeNQdF/qjlZx+zCL8NBHe306DzkEfMYZE/OsbO0G1qwey83ukoRecin5oDI3/0yPX9vtXmi/IW1QjofOQTc3Dk1gf3gYqZWgydk3xsDo/c+uBeUhfah+i85CNzgORhcD+32LyuKGufoPOSD81Bkj9aJd+7ZEGr+f7GWkcfOj15aA6T/BH6Bn1grXlVTUGGhM5A/t+BOVDyR48Ofb9icwZ3q6MNnYU8MAdL/mjb4o5ekb10nonORM5irpv8yZNNazt635e5Ey4PnY2cwVw/+ZNgumZpXaaqpZuP0BnJ6c0NkD95cmhp6n6uqZuH6Kzk1OZGyJ+gEb1kH3kvmJs7HU3tK1ZyWnMz5E+e7Pm+a18ad6a07IpHpyenNDdF/uRz18LojiJ7q9PRis5ATmdujPzhQ5TGWbbUgs72rXc6WtFZyKnMDZI/fBhE97wbiIEN5o7vb9zq6EVnIacxN0r+8PNNu9B7Ihc0SEDPJ//ffHOz5A8f3nFtQg/JW52OKXQK8nxz0+QjdEvG9FowS1O+tpKBTkOea26efIRet6Cro3tYDJEP0anI88whkD98uIvG9OBlgu7s/Srq4/7GaqdjCp2OPMccBnnQGm6oDrn4Xg1/ws1bHWPtKzrybHMw5EH63mgCr8OiPl691jHZvqIizzQHRI5aGXRJ7lzJx2l86NnkWebAyI92Y/d1AKyxVzsw0HPIM8yhkR8dNSFvhK3L/9acEz2PnGwOj/wI8lcO6j5OY0XPJf+CZA6Q/AjyVw4lXRtjWNDx5CRziORHnwOeran8OI0XnUBOMAdJfnS0B3a21tOxtZkRnUSONwdKfhTM1hyY5m0IM7U4OpEcaw6VHPBsrSLpoHZ56GRynDlY8qOjTairqq62fa6U6BnkGHPA5EeruCNBYRThNjqg2i/J5GlzyORHd4AG9wqIIhwWPU2eMgdNDrYU58IowmHQMeRJc+DkKLhXitBOj44jT5hDJ0fB3S1COzU6ljxuDp4caHCHGNpDdCx5zNwCcpDBHWZoj6J/QTK3gRxk5r4IM7RP0b8gmVtBHgZ3YGUZULV2HPoXJHNLyAGWZWDV2tPoX5DMbSEHGNwdIx+u0KOTzK0hD2vuoBZUB1o/NpeBPjS3iBzcguoZmB0ytOihuU3k4YIqpN0ydQOfoYqhI3OryMPdMoCm6OfKz/iUjh6YW0Z+VAryZDhZHODJOQnd+a1t5EdHLqDLlwaQJ+cEdOf31pGjKTqYjl7WfXaMBHRkbhl5mMVBqcW58DO4FHpgbhv50dEhmI8b2jZkcEl05/f2kaMsDkhHr8Pa70qHTmMOjfzoaRNIR29Dr8Fh0SnM4ZE/bQDp6DrPdZWHnm8OkPwpOhK0DqObX+tYh55rDpH86dMWiI5et2WiFkfPM4dJ/hRN1+o9AN18tWMfeo45UPKnj1FHN1yM67mgN0uQ0bPNwZI/vu0bL8aVbezmCD3THC7548eHpg8EtbSbBy3LHDL5Y3Rth9GbuCo+7D1RXOagyR8/RueBGjwvDt2mZU3ZldYcODkK7nW/Zsy8am03J5tDJ3/cCMZz11hhBt254q7Nljl4cmRebpuar6HbtKxM2jPM4ZOH5l7V0E1caJ7mdmbK3ALyx8coheubSeNQAmdtN8eb20B+sh2m7WUjnyajBG6zM0vmVpCPzHt1A9U4tGfDsgW1HHM7yE8uBe89eP81/Z8sDlx0uVJnhswtIT85GZp7Z9qje9XvQznFWY65NeRjc+3RvRTMF5xZiu32kJ80R9+t1fTm7n3XCZO4mTG3iPzk0B+VXstaP0523H64wFKZEXObyKfmQaTV96HqWfgLVra22J40t4o8Yj5wte2TOh9OE8o27WvPMreL/KQ1PXDiXNeErT/67arNSE3GMvKTRmRH3JmexZZeOJjPjrlt5DHzIJHWsfW5Mv5XBmCPAWQxt448bj7pgWpX0yYHXNhciBub20ceNw9GWuWlmXakEGBzIW5kbiF5wjwYYh216LF/wOaizNDcRvKkedANlaIHgWTgzY65leQpc7XoAXk0YWhZXIhD5naSnxyn9jorRE+Qe6sWF+ICc0vJR5smEnOpRT3kyHzPXnNbyXHmAXpFC7l3y+KiDL+5aXKsuRr0NLm3No/mxsnx5irQMeTeL63e62wrOcFcPnrfxey+urC4EMdpDoD8pET4RlEyekCOKeXPnzkE8vT8XAl6ENhxH0JeNO0tynCZgyAnmwfo1Z7CsTw0PwR6p5oicxjkJ6vkE2UqsoozJHJv2eIJOoc5EHK0N6pNXgKTgl4jkXvdHfvOCeM3h0J+4voZRw4E6OLr6W2fuCjfvWzXsZ9C5mDId0ffNJC8XOFNFCXfIX7p3O0eWrvKwmoOhhxN1Rz2ORbD3rfMpKDbvWVtVYbRHA45Gs6z9z0OHJHDxII/nTXj64bB/docmAMiR6H9QU5PXcwIznn72HOiRLfbXbS15M5kDogc7W4/fJM/IrtcnzUFvy317GwgMP/Rt3SKzmIOiRx181tv8ufXjl9l7+pt1z/Lmep1hx3dyqOjGMwhkaPRvNl9Q+FX9nP9kpPyql/PPXcOmf/o2lmXoTcHRY5O91jrXlAlY4u+Wx6wiLv538TsI/PuNTvTOGpzUOS3gx5WDV76M1pGv0J1YmSv7QTiFGHhemje3fT9jZ2ZNQdFfqkZRPbLwTu/Sls2r/h+/SyHfdAOBuh6mWogeD40R9G9vjaj5rDI0fG+f0bvfJk+E2+jc3+q5XN8lK+1K8H/7lYoj6a52h21HRsPDaMzh0d+a/jOr7JMwNoVdGKn71TPyuXz2rCVyuXFavifq2XqA4OfPR+bd1d9K+7IZTeHNZZHyLvPv2aceNfKZ1XU4yPNrS6W20y1+evdaVu0D53GHBT5thsh79Kl7rhgPmo8dbr9bjeBvrk2Y+agyNFtehFytugup0Ui+wTdqkQu3xxU9Q3dwuLuxF75l7rNl7vdNPrGrRkyh0ReRnF988/xN/58Xy/59W6qoatZLFpMzzOHtJKGOrm/eDn5xvWiY8jDtXSLBvUcczjkl1b9dFzXj44l73b/3ETxvTEL5nDIw7DuVy9j37g+dAJ5t3u5Gnb1HevNwZCXUDfymzukN/5cT/b+7KJLbrfC38rWmt3mUMiH4u5qxgvXMmX7ejnrJxh19Y1Vm81hkF8aimNyt3i7/kw1+f7zbk5bG/1yWmsOgvxSwx2K/5j3vrvLigf1N12Kthr+uG5lzUpzCOS3Wz6tuOpBPXMojwb4ofpGdcc+c+Pku8erw6Durv7YpWwXyuL7l89pf4axul+9Zpm5UfJL24295mjRq3ntcpe+Pf/SaCcfq18b/bbuXbPI3Bz57VJrc7rMuV563mVrKrr6l6w/RLdbXho9wWarsWaFuSHy3VKrOfVeWt9aWHj/Jevblj6qf33BLN69KC28Xn8xfpL6Hix3nLkJ8u3ynhvlfr0QtpLH/sYvpCbwb9g7eff5sxb64SPsyH0HsLlu8t3jxmGke4+5w/Y2tVpN0+TN1feXuxxt32uOfv6DrfWl6YYcp3VtDaS5TnKUrbmxjUrrC7HmBKMpx0uXFOB5wjr6lfO86DME7tGdWObhU+a6yKPJeaQtxc2b6OgWnve+LK7+9XUu8e7yM+99/Cm2kk8ZwBsM9UlzHeRBMMdx48wXMHuR9Azrz97w/bMosnvf5ZiHbWNzb/UaAHPV5Ld3Goeun9US5h94fNFdUJ1fPPyIzok/xFLG89aDWL9j0lwl+Xa5dejnt4P46wo/Ar/o6lUXEB9+ZpH4xX2R99B6u3zMXBH57jY5lqfa6/jreuvxR3dO9a8FxIcb7hPD+QHlo9c1pXdRcwXkaB7m+ixtK53E8Ud3jmyON3OLruO3aIZzYpdXXrmLmEsn321s+sxtPZ3EiUT3sO+9oZ6v7wv9Q+NPLBKJ6DrzS6hXdrSYyyb/vOXztGTi/soTjO7DKTNNiH92dVnsX+k+D3+5PmAdznFtb029uWzykstF7r9IvLDvPOHoPgrxOZ19/3pXuA2X9b7jG86Tc/hbqs0lk3N2ckziPj4D7kIYJDPE74v//WEBDrUNgeE82lbVmksm393kJk8m7luEr8T41FWKowIcLrSvc7+KqkpzyeR3XH7yVBL3ypMU3cmb5t50pbTR3/028QAC76KqzhwSeSqJe+tJi+74nTTPLuSQj4PIkqTQrgwdmYMiT1VfNzyJ0R2zE/7Zshzy8Tkn76WFdlXogTkw8uSAvvDSkxndUx8vSyIfR3bvWxkzNaXozu9lZ+yi5MlK3ML09E45QTh+Hsl1SeTj8PFyQWJoV/ONs/NzyeSbos+YGtAdT3J0vyCeEyLh7/xOamj3VZw6mDQXLcW0fPG2QAruQtH9+fV9b3+4fHI1Edkvvnz29dULObFjSV7WPq7A76g1FyUvSyDPCO4C0f1iqPL1Z6jdfPfu3Uc3g/bXyMmCV59LyBHaskO7L//el7i5KPkdGeSpGXrTE4/uN2+++3hl5RTX7q68++gHiu9OqUaLptwMblR7V2guvKzSlGKeLLmHm2UEovvl7++e5raVGz9wz9SfT4q6rxI/+WspL0TykB41F148XZXzhKnZ2ltPKLp/fErX7n504yehaVp6orYu54XIPSY+Yi5Mvi2JPBXclzyh6L5ySt8+419awZTaD2S9kT015sLkkiI7Lri/90Si+10G8yt/5V1awXXzLVlvRGp0n5iLb4RalfaAqcz9W08gun9/ytKuXOaP7MluLieDG0Z3Bebi5HfkkaeCezSLY43uN07Z2l3OpRWl3dz3W9LNJWx3PJT4gKmyzFuPN7pfvsJofvoXrqUVtd1camVmaC6BvCSTPBXctzze6H73lLl9xlWAS8/Nt6S+kqpccwnk8hI4fBZX8vii+/fs5ExDeqSM+15lN5eZxiFzGZ8uNOQ+X2qKvuRxRfe/nvK0Fa7lGrXdXOIdIIG5DHLxFdS8LK7EFd3vcpmf3mAuwHleSXE3l9fRnZ9L+UBpVfbzJbe/Jjo6ZXT/no+cOrpHtl+8XFLczeWttTh/kEG+K/358jo6VXS/fMrbVhgLcOmdj/K7ubTNzxNzoc8QW/KfL5XFxTs6VXS/y21OlbtHCnDpeZr8bi6tMDM2FyJX0M3T07VER6eI7j/xk59eYSrApRM4Fd1cVkcfmYt9bNxS8Xx5Hf1L+dWYaPueKbKnErh1Fa9EUkcfmouRS0/aqTp6bnT/iwh5fhoXvcPx5ZaqBTUVqXtoLniKREPN86U6+tZLluh++VSsrTBEdicVkxSZb8oyFyRX1M0xHf0tS3S/K2iek8ZFP41IboKTtT1GUUcPzEXPiimrer50R/+A8naUoH0mSp69wHaRFdnVJHDSqu7OH4SPB2oqe8DUu3ToPzu6Imx++hPldxGOjnnauO0oM2cgP1b3fC8OsjbMZH6R8JM4edZ8LTOyHygkl7FLCm/OcgjYocIHXM+ZrxGj+2UJ3TxjvhaN7B9s6Urghuvoa2rMWch3VT5gquqeTONI0f17GeTE+Vp0aSVdjdlS+kYk1GVw5kxH/bWUPmBy4SK+S4oY3eV0c2JH38+qsx+oJZdQl8GYM5Erm6gR1tGjH7WQo/uKHPIrHy/nFeBSGyXURnYp07W0OdsZrjuKHzA1XxsfJJUV3S9LEV/56Bvvas7SSnqatqWaXHy6ljJnPLZ3U/UTrudN0vdVdPMrCJxwIkHm0sqBr76tSTZnJL+j/gkPmKP78kcfrwh5v/th8pdfzdrbnDzkU2k1Ztoqcs1ZD+duqX/CJeboHk6eb97ggL8y/kSVfPTIctZqmqLlNMlZXNyc+Tx2V8MjpobMyfFh+OgeUfnm5kfv/rJCm8Tf+AZzjthVcgHulYHBPGy3JJozk+9oecRUdN94mRXdcec4/0Dj/ifseYHLpL88tQNu4eCFHvOqPHP2izb2tDxiOrp/mxHdl7FyFIvpV/BnRF4lFeA29E/TxrU4aebs5LuanjEd3Uvk6I4/rv1P+eYfEw4GXcYX4L41M5hLqMVNzTmu0ynresZUdN96RYruywS5/ITuIy+3o0f2Nn+3YGgwR82RY85zg9KmrmdMR/fEkD6N7qRbGfI7+jdeXke/npWyH/ga25oMcx7yXX3PmKrMJJfS93O6ueflnTCyQvyTV9MFuFcLRmbmcqboI3Oue9IaGh/ydd4s/Xp2Nw/mbTmbpW6QD3dfThbg0rM0bfnbsNXFzfluQ2xqfMj09onhNVyJ6P484yKGb7LNb3o5Hf16xpK5xvxNfLtMaM5HflvrQ6aH9EQet58sjKYadz8Pd9hOR42XGybzN/Hgjsw57zxd1fuU6SF96WUyuj/PunPlJt9UbXyo/34G+Wvd5ELBPTDnvea2qfkxt3KS92cXF5lXqd3kzeHifzWG/OCFdnOR4O78gZf8tvbHPMirx2W3j7jKcMkGhFwkuDu/473MelX7Y6b3TzChv+Odn+eQa07ZxYM7tXnqyvpN/c+ZzuOSMzYR85s2kYsEd1rzFPmuiedM53HJyntGyyvK3OAjXzdDLhDcKc1T5Ppq7Tl5HD36yil/4g6PXCC405mnyU2EdkH0lVP+xB0euUBwpzLHkF8y9aTpImxy2wypXTkVS9xx5FvmyPkXVGnMMeQnJVNPiinCbtGh8y+sgSTnX1ClMMeRn+z51qHnmmcm7q+gkfMvqOabY8lPDD4qZsa21c4n/yF/D2QW+RY4cr+hyhxPfuzDQqdI5G5yb45CnygBJOfeCplnjic/WfWtQ883JyfupQWA5NxbIXPMCeQnTd869He8G18x356CIOfe555tTiLfNf20OPS3ouakxP1boOS8Z05kmpPIT8rGHxdThc1ZcKEwv0k7RzNZihEvxWWZE8kNztQy0Z2XAmU4QuL+agksOW8pLsOcTH4C4XlxFhsvhcwxiXt7CzA5ZymObJ5BfuxDRc+oztDcn0mVvcEh5yzFEc0zyA3P1LLRS9xluHTi/tLBkS+BIeecrZHMs8hPNn246MT0neZr5G/yh/IDQOScszWCeSb5JTCPvHRAncn9icY8lriXcEO5kb1v5NaSZ55Jbm5NjWrBJcjkXnGV4eKJ+0vcrHzhNSxyvtka1jyb/KTlA0fHDepU5h9nLqMBqcQIr63hzHPITRdeEw0XgRdaKXOqa1NXMuM6oIRdaG0NY55HvgvssbE8qfj+7pQ+ccfn6xDJucqvafM8ckjDObkkl4rvVObDxP09dj4AK2EfN1eGeS45hMIrzZwtkb/THRx2E3voG8TsTaD8mjTPJz9x4T04ds62sPWe2fwdIXkDmL3xl18T5hTktyE++YvXWKnWS0bzv2CLrTCH8mGrippTkANYR6XP5BaW3rOU4U4//cWCPUM594AeM6chBzicZ2Ry065OQ/7JglVDOe+AHjWnIoc4nGcN6gtLbYqDRVD7Gb6Twx3KeQf0iDkd+S7cpycM6gvOBxRluE8JnXxhCTY5x4A+Nacjhzc7zx/UF7be5pr/7MDGuM43oE/MKclBFdtpZ+pBZ23w5G7g4zrfgD42pyUHVmynju8Ln3zKHtbBx3W+AX1kTk2+C/4VbC0wqpPCugVxnW9AH5pTkwPZCseTvwfT7E8YsnXIdRjBAT00pyeHshUuO74Tu/ovfkY7kIOuwwgO6MicgRzMVjiu+kxSnTyQW5G8jVuD3ZyF/MSS10BM5SLqGeIWdXKffQ3d+R0T+bY1L4Lc1Yfqn35yQO7kL2wiZ94UNzanIz9p2PMmMrp6oJ4hblcnR43PnJIc7AILa1fPaJZ1ctSu8ZjTksNdYGHu6jPTyX3mXe6hOTX5rm1vY332O3nQNtnNqclhL7AwztVnpZP7zJ+tBeb05FZUZKjLclbPyePtFqM5A7klFZlko+vqr19YS864zOL8kYH8xNJXQpPLrfsWtyq3eS75trUvJS/Ab72wmZyxKhMxzyWHuuVVOMC/XvItb2t85vnkwPfI8GbwB+u+9e0alzkFOfQ9MrkB/vUMhnWOqszYnIb8kvWvZv1glrJ13qrMyJyG3OIUjlSYO1jyZ6NtsJtTkdu0qEY1rM/CQD5uO6zmdOR2Larlq2+9mB1ypr0yyJyS3PYULq4+U+Jse2UCc1rySzP0il7MljhbEuf8kZZ8JlK42W0s5r+iNm8ULxZwu6XEfK94sYDbqhLzZvFiZyOJoze/VLzXGUni6M2LFG5Wkjh68yKFm5Ukjt68SOFmJYmjN98sXuuMJHH05sVbnZUk7v8FGACLAaatqFARCwAAAABJRU5ErkJggg==","type":"image/png","created":"20190902045638284","modified":"20211110220024704","tags":""},"$:/plugins/kookma/thinkup/images/ms_avatar":{"title":"$:/plugins/kookma/thinkup/images/ms_avatar","text":"iVBORw0KGgoAAAANSUhEUgAAAfMAAAHyCAMAAADIjdfcAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYBQTFRFwG4mvm0m76uxtmUl9c3RalA7o1Ii/eXN1oEn15ln1LCPx3QmsWIlwm8mjXxspY136cCYyHUm5HB6kGQ21o5NxHIm0kZLpUkp6o6X7beF/Nu702M5/vDi11dErl8ktHItvGolu2olVktDuGglt0g3xUdCn2oyZ19XzH0o+eLkzHIq0HMs/fTyf0gtkUkmTEVBm0oi3UZU0Wk0xHoq0YU+c2hdoE8i0YApz38q/dKouWglRUVF20xO3YcntGQlT0dC////fVw53YYn24Qn2YMn1H8nvncr1YAn3IYnyXUm24Un14In034n0Xwn24YnzHgn0Hsnz3snzXon0Hwn2IInynYmy3cm0X0nznonzXkn0n0n2oQnxnMmxHEmz3onzXkmuGclvGsmy3cnyncnzHgmumkl8smg31Fe53+Ju5+E/vz54V1pn0kl2EZQ/dWvrUkvXFZR/vn0fnFjqF00xHElx3Ml0HcpxXImznYpyHQlyXcm0G4wrW411mpHyXYm2busyi6ewwAAHBNJREFUeNrs3f1bW0d2B/CJgmzMegGLVGCDoKvyYmwBc3GcWCsaRBtMt7ZrG9v4pW2cTby8+DVO2qwbaPdfryTe9K5775xz5juXOT/lyQ/yM3yeOXPO0dwr9Y+Q8U+R4186xL/Vx782xT/3iH+vxrdd4/FJ3GmK/k6x0S7W28Xd+nhRjae1uFcXj47iwXE8PI7vvntWi83jeF6Ll8qTnzVyTHNPzkn+Snnys0Z+X3nys0YOaO7JmcnxzD05NzmcuSdnJ0cz9+T85GDmnlyAHMvck0uQQ5l7chFyJHNPLkMOZO7JhchxzD25FDmMuScXI99SnvyskYOYe3JBcgxzTy5JDmHuyUXJEcw9uSw5gLknFya3b+7Jpcmtm3tycXLb5p5cntyyuSe3QP6D8uRnjdyquSe3Qv6j8uRnjdyiuSe3RP5EefKzRm7N3JNbI7dl7sntkVsy9+QWye2Ye3Kb5FbMPblVchvmntwuuQVzT26ZXN7ck9smFzf35NbJpc09uX1yYXNPDkAua+7JEchFzT05BPmflCc/a+SXlCc/a+Ry5p4chVzM3JPDkEuZe3IcciFzTw5ELmPuyZHIRcw9ORS5hLknxyIXMPfkYOT85p4cjZzd3JPDkXObe3I8cmZzTw5I/jvlyc8aOau5J4ck5zT35JjkjOaeHJScz9yTo5KzmXtyWHIuc0+OS85k7smByXnMPTkyOYu5J4cm5zD35NjkDOaeHJyc3tyTo5OTm3tyeHJqc0+OT/4fypOfNXJac0/uAjmpuSd3gpzS3JO7QU5o7skdIacz9+SukJOZe3JnyKnMPbk75ETmntwhchpzT+4S+V+VJz9r5H+nPPlZIycwd4L89tTU7MjISLoapcOo/Xfl/01NnTFyc3No8lsV6bV0vtQr0msjUzfOCrmxOSz5rYOR9GopSqymR6aungFyU3NM8lsHa/lSvEivTSWd3NAckfzW7FrJLNKzV5NMbmYOSH5gCn7CnlhyI3M48luz+RJZpA8SSm5ijkZ+a2S1RBr5katJJDcwRyOnFq/F2o3kkcc3ByM/yJd4Ij2VNPLY5ljkN9IlvjhSTwz5f6okkM+ullgjfSNJ5DHNochvrZXYY+1qcsjjmUOR386XBGJ1NjHkscyhyGdLQpG+nRDyOOZQ5GsluRhJBnkMcyTyryXJG7e6u+TRzaHI0yXZOD3VHSaPbH6myasFvPvkUc3POnmplL/tOnlEc09eye9TjpNHM0civ2GJvBKzbpNHMgcin7Un3ojuIPnvlYPkX4+sluzGmsvkEcxRyO2Ln6I7SR7eHIQcQvwY3U3y0OYg5Af5EkisOUse1hyD/Gq6hBNrrpKHNMcgn10tIcWso+ThzCHIhb9PCYXuJHkocwjy23k08tLqlJPkYcwhyGdLgLH6m4vkIcwhyEdKkJF+6SB5b3MI8rUSaCy8dI+8p7kn7x6Lr5wj72XuyXvE0rlXrpH3MPfkve9QHKG7Q97d3FfsYY70GrpD5F3NIcgPwMlLS4sVdJfIu5ljjGJW0c1LaX3ulUvkXcwxBq7pEn4sHqM7Qq6wv1ZZc4C8lNeH6K6QK2jyqZITsVBDd4ZcIZN/nXfDvLLRK+jOkCvkWzFrpZIzG12f23KFXAGT33aFvLbRj9AdIFfAN1zTzpjXNnoN3QVyhUs+5Q754UavoDtBrnAfXcg7ZF7p0RvQockVLPmsS+SltK5HxyZXsM+kpZ0yX1qsQwcnV6jkUyW3YkGfoKOTK9QnT9ccM1/VJ+jo5AqU/EbJtVg8Rccm/0yBvlJgxDnz4+ReQf8RmrzeHOq9b3nnzE+Sew0dmLzOHOuFnqWSu8m9ig5MfmqO9abmNQfNT5N7Bf03XPITc7BX8OcdNK9L7sfokOTH5mDkLqb2huR+iI5JfmQO99sqTprXJ/cqOij5oTncj2alnTRP60b0/8Mkr5nj/U6ak+SlJd2KDkheNcf7NcQpN80bD/QaOiJ5xRzwBzBHHDVf0C3ogOSfKcSfuTU+zvMDe3n7B3oV/RIeeQxzgR+zNn1eaW67WBy+aeuGVCd0FPLo5gLkpt+p3ayQV2JIfqvrLugw5JHNJX6y3vBR1MHiUchv9cXO6DjkUc0lyA1LuBPySkif6gu6EzoQeURzEXKzL1j2ivWxPWi5iDtCRyKPZi5DblS2N5JXYuCm3SKuhv4/SOSRzIXIv6Ukl03wq7oHOgJ5FHMp8m9pySsJfshm4V6PDkEewVyMfIqYvFrBD1os3E/RMcjDm4uRxzfvSC53rC/oLugg5KHN5chj/9JxN/Kq+k9WzSvoIORhzQXJ47bnQ8VescevntZd0H+HQf5nBUce03ywGCLYx7HdzCvoEOThzEXJ441kQpFXS3he9bzuiv7fCOShzGXJY41k5raLRQT17ub16PbIw5gLk8cxz4cmZ1bvYX6KbpE8hLk0eQzz/EAxUvC166s6HLpN8t7m4uQxzPeKUYNNXYdCt0re01yePLr5YDFGMKnrMOh2yXuZWyCPbD63XSzCqOsw6HbJe5jbII9qHvUwr1f/2Ya5PvdXq+Tdza2QRzUfKhoE+RheR0S3QN7V3A55RPObRbMgVtfR0G2QdzO3RB7NPD9cNA3SMbyOhG6F/A8KjvxxWiyzM6jrKOh2yDubWyOPZD5XJAm60ZyOgG6JvKO5PfJI5gNFoqC6IKvDo/+XJfJO5hbJo5gPFumCppjTcdHlyDuY2yR/HOG71OEiZVAc6zomuiB5e3Or5I9HrGxzoguyOh66JHlbc7vk4c3z20XqMH3EbUnHQhclb2dumTy8+WCRIcyegMjrOOiy5G3MbZM/PrBzmp8k+J8FzWvowuR/UXDkj6dsbnPDrR7ZvIIuTd5ibp/8zm3p3rx1q8c+1dPaAF2I/I8KjvzOHdERXIdL0XLmJ+hS5E3mEOQhzfc4zeM+9RLH/AhdjLzRHIP8TtpSo0ZQyi3ouOhy5A3mIOR31qxWcEb5PZ55BV2QvN4chfzOiP3UHrd+X9Qx0X8vR15nDkN+J8yDqfmiQAzkWUevHdC5yU/NccjvTEGk9toodo74kYYQ6OzkJ+ZA5KEK9z0R8+L2HPNIpgWdn/zYHIr8ToiUul1ERE9rU3QB8iNzLPIQhftcsYiIvqAN0SXI/0EBkoco3AeLkOhm5hV0CfLvFSB5iCJurwiJvqgN0ZUAedUcjvzOVUtfo5q2bEtaU6EzklfM8cj7+/MI3XkdukDZ3ojOSf69QiTv71XE3ZQ1L+4JlO316KzkHc2tkvf3KuKGhM2LgxIl3Ak6L3knc7vk/beBSrjDOu4niRLuGJ2XvIO5ZfL+/lVbV2RMjvQlTRPnPmMlb29unbw/jTGFi/bNal7zoBOTtzW3T97f46u1ooX4SaSEa4NOTd7OHIC8/wbI5DVSdl8gM9dffcZH3sYcgbxHh37Thnmx52UprRnQ6ck/V5jk3Tv0n62YD0sd5/XoDOQt5iDk/QdQ7XmoJj2t6dE5yJvNUci7d2uWzIfFjvNjdBbyJnMc8q7J3ZJ5j42uNTk6C3mjORB5125tz5L5gNxxfoj+Zw7yBnMk8v6rUGO4o5gTTO2N6ITk9eZQ5F1HcdbM99iH7R3QKcnrzMHIuyV3a+bFPPuwvS06KfmpORp5/9VVQPNBqU6tAZ2W/MQcjrxb5W7PfFj0OD9CJyY/Ngck3zgANO9YxS1ptvjq72nJj8wRyTc28oDme8KpvTN6bPJDc0zyjTVA823p1F5D/wMlec0clHzjBqB5h2/XlrSWRTcgr5qjkm9spAHN98RTezt0E/KKOS75xiyg+bZ8am9FNyL/XAGTb2ysYs3bOyb3Jc0eX/2FirzRHI18YwTre7WOyT2tJdENyRvM4cg7VXFWzbelZu2d0E3J683xyDu1a1bN24xlVrWWQzcm/0ZBk29M2X76PNRN9wUth25OfmoOSd6hXbtp1bzl5sTSohZDJyA/MQclb9+u2TUv2qjgjtH/aE5+bI5K3n7obtn8po0KrgU9NvmROS55+41u13yQ/SJcCPT45IfmwOTr63k48z07FVwDugF5zRyafH0W47nUjkXcktby6CbkVXNs8rYbfQCoiFvQ8uhG5BVzdPJ2G92y+ZyVRq0NeizybxQ8ebuNPoRTuKe1toYej7zFHJC8zUYfwincF7U19JjkzeaI5G02+s92zYcsb/ND9LjkTeaY5OtTYEOZIdvbvIr+fVzyRnNQ8vX1tN33QHZu1mxt8yr65zHJG8xhyVs3Oor5ogZAj0heb45Lvr6+BtWsDQBs81P0qOR15sjk65uriOZLi9o+emTyi8oJ8vX1EaRmbQBimx+iRyc/MQcnX7+bx7spY3ub19Cjkx+bw5PfnQJq1oZsTdq7ooclPzLHJ797t6GM+wnAfElrJPTQ5IfmLpDf3czDNGs3Ybb5KXp48pq5E+R37x7AFO4/yV+P6YUegbxq7gh5Y3a3+fjStvVxTAt6FPKKuTPkDdl9yHarltYaCD0K+UXlDnlDdh+0XMItaaT46psI5D3NkcjvvliDaNbmcAq4juhdyHuZY5G/eJEHKNyHwTJ7O/Ru5D3M0chf3F618kuKzal9aVFDo3cl724OR/7i6az9Zm0OLrM3o3cn72oOSP706Zrtwn0AMLM3ovcg72YOSf70adpy4T6ImNnr0XuRdzEHJX/6W95q4T6MmdlP0XuSdzZHJb9376iOs7bN01oDo/cm72iOS37v3tSqvSJuWOpFIjHRL/Ym72SOTH6EbmfiPoh6mHdAvxjaHJv8EH3ITtG+oLVD6BdDm6OT19CtPMsyl9baIfSLoc3xye/d+y1t46rMUF5rh9AvhjZ3gfzRoy8tnOfD+UXtEPrF0OZukD96dNnCnSgnyI/RL4Y2d4X80Rfymd0R8kP0i6HNnSGX3+jbI1q7g945JpWz5I8uSO/zX3QS0CebzF0if/BA+O1RF7ROAPpkk7lb5A8u+G0eGX2yydwxcuGN7tY2r6JPtievN3eOXHaj/6LdR59sMneP/MGDy36bR0GfbDJ3kfyBXI++/Yt2Hn2yydxJ8ocPL/ttHhp9ssncUfKHUht9+5x2HX2yydxVcrGN/oXWjqNPNpm7S/7wS5F+bVhrx9Enm8wdJn/4UKRfO9COo082mTtN/vCWwEa/rLXb6JNN5m6Tf/fdF34cExFduU7+7Nll36dFQ1fOkz/7kruAO6eTha6cJ3/27IIv4CKhK/fJn22yPos+oHXC0FUCyDe/8BO4KOgqAeSbm5d9Zo+ArpJAvnlr2Gf28OgqCeSbm1/6zB4eXSWCfHPzgs/sodFVMsifPx/205iw6Coh5M85yrjLWicRXSWEnMX8gk4kukoIuTcPj64SQu7Nw6OrhJC/9OahQyWE/KWv4YzMXSR/5c1NzJ0kv+/NDczdJPfmBuaOkrOYF8+Guavk97e9eUxzZ8nv+wuvMc3dJecxP0i+ucPkPOYXEm/uMvktbx7H3GXy+zzXIC8n3NxpcibzYrLN3Sa/z3Q36pckmztOzmX+ZYLNXSfnGcMltIhTySDfYjIfTqy5++RbXA81/JJQ8wSQb/mXB0UyTwI52zPolxNpngTyLb4nUxOY3FUiyLf4nkC/kGRzl8kHJvjeLDKUXHOXyb8o85kXr/wtqeYuk29NsJqXU9OJNHeafLjMaf6+XN6deZs8c6fJbxXK5QLjG2Velws77z4kzdxp8uo2L5cZzSfK5VQQJGirK+fJtwrM5ucrH/8mCN5NJ8jccfKBKnn5PWcRVy73BZXIfkiKuePkW1dq5ld493l1oydGXblO/r81cs7CvWaeCoLEqCu3yfdXxg7NP7LWcJXYCY7VpxNm7hb5tVwQ9B2aMyb317XPHwuCU/XRBJm7RT6+UgEolJmT+2G9UJ4P6iM7/TYh5k6R18SDTLnMvNEnjj4/EzTGjLPsyk3ya4fiQZA6MS+wpvbTKq6BfdRxc3fIr+VWjv/sfSfm5fN8VXtrcj9J8jMfHDZ3hfxki9eicGr+mmUu8/Hk8zNBh8hOf3DT3A3yT+O5hj/36XHOlN3Pn358KugSlf3+1jVzF8j3G3Z4LcbqzRlq9/evTz99PugR2Rk3NrxyhHx/PLfS5s+cajCnP9In6j99JwgRWfzCTuGTf1puSuh10ddoTt2wXWn48N0gbGDveAVN/qnD9j6J+Sbz17TohYYPTwWRogr/FtUcknx/uQd3LcplTvSJxs+eD6JHFX4UzxyNvLq5c+H+opkW83LhPVNmD3ugt4l3WIe8giIPr30Yu+U26FcYavaoBzp0rlcg5OFSeY+ynTS9vy+0fHIqMI7szCiuuRj59f042l3MidAnWj+4L6AI69culE3y/eVoqbxnq0aIPtHugwOamIE0Zye/Hn9z9zYnGM6cb/uxGSL07Fs8c2by6zmiv125Y0xwkNdfljFEH0Uz5yX/lUq8m7lZz9aBnKKIO27fRrHMecmXyf5uwZsu5iaHeidyoiLONrqSJqfb5G1HMhSH+vnOHxkkAV3Jkv9KSd7LvDzxnpicrIizWsgpWfIVSvK2Y7jG/H6eltxwEteMDmLuEnmHkYzZVu9KTljEWezTlcPkYcyjnuoT3T+sj3YB0wDm7pRv4c3LH8MX8O97kMf6OhWujlMOk4c0D7/Vr3zs+VHEK8jaNnemL+85eo13qp9/3fuTMoH72V1JkV8PLJqHugY9EeaDqM2DUZvmzAPXFavmIebvociJC3c72V0Jfa2SC+ya93z5SDhyenML2V3JkC8Hts0nSMipmzUr2V2JkP/KQt5y0zn+Rg9LTt2sWcnuSuSKRI7HPAp514ZtIvzHMCzjgw1zbvL9AMB8Iu68tTHeuL/RlcRFqBUE84/h77GLNmvyZZwSIB8PEMw7HujvX0f5lDGGdbx7K2zOTv5rgGF+PtRDafLNmvhGV/yXmnMg5hPG9RubuWy/ptjJrwcg5h+N6zemBl36m3TF/uhCDsW87YEelZzJXHSjK27y/QDG/Lxhyc7WoAtvdMX9gFIOx7z1QL/yGsVccqMrZnLObR7VvCW5xyHnGMoIb3TF/BhiDsm8Kbm//xiDnGUoI7vRFS/59QDJfMKkMec2n7FkTv58eQ7K/LVJY87boEsO4xQrOe82j2ze8CqxsCX7/JiMudwwTrG+RSInZ16ImNxDT9n7ml42yWaetWBOT/5rIGbel4o4ipuIMIRJCQxlBDe64nxXzDiz+endqPmdsWjJ/Uqk8zslYp6VNud4PdCKmHmm5zOqTd3ax2g127yEudSFGcVIzr3NT80rLjuR7rmfj1in78yzD+Lk2jXF+N63nJR5X/gi/n3kaxKH/XimIGAuNJdRfOTXAyHzwpvwF5/PR/427WgGsythPi1nzvN2x5yU+W4Q3rwQ+TbU8Xw9xTxwl6viFBv5J3byI4ZUk0nv5B7pS/OWkyTj+kZXbO9wHRcyn99pTr49k/vrWObHdRyneVbGnOu1vTkh82OCcM1adSwTaZvXtWYZfnORKk5xkfNXcIfmqajT9yvRvk+rb8fH2G47i7Zriuvl3ALbvGowf/oe/ZBPr01Euw+VaikaU4HjyV1xvYJ/RcA805Bowz6lOhHf/E2B21xiFqeYyJcDEfNUSxVPHWNdThNHk7ti+qGNnIh5YafltKWOpoptnts8eCtvTkP+KRAxH2vK9AzRNIHZZf2SRaZFVzw/pzMuYr5jeG0mztXmPm7zrLQ51S8oiaT25phnIC80/yNvuM35W3TFQv7JBnmk18vEf1QpxW0+I2pO9jtp41bMUyLmO9zmWUlzul9DtJLaw07cTW82ZwLHk7viILeT2lkK9zEL65gRMyf8zVM7qZ2lcM9YWMY7KXPKn7nNWTKfZ2/PZeKDjDkluaXUzlLEWVnHjIg56Y9ZjyfHfN7KOt5JmNP+ZL2t1M5QxPXZWcgHfnNa8k1b5CHvuCM8hGo1uSt68mVr5vRF3FiQwOSuyMmf5+yZ9yWhVWNP7oqc/PmKPfNUIlo17uSuyMn37ZHTT19tLeSdmDkF+fNxi+ZvEtGqcSd3RU1uM7UHQSERrRpzclfU5J9sklMXcSlrC8mKmNOQW03t5EXcrr2VjAqYE5Hb7NToi7hMkMTkrojJX1olp57EWVxJlt2cjHzfrjntJG7e5kpGmc3JyF/mLJv3JaNsDzjvuSta8lcrls1TySjbWQ90RUt+zTI57depY1aX8pbRnJD8/rht8yAhZTtnclek5Pdz1s3nk1G2cyZ3RUp+3zo55YE+b3cl71jNyciX7ZuPJaSEY/yeRVGSA6R2yiLOtvkMnzkd+f0V++aEX61lLK8ky2ZOSL4PQE44ldmxvRSmUZwiJAfo1CiLuHnrS5nmNKchRzjOCQ/0PutLyTKaE5F/CiAiKSUc2yhO0ZEjdGqUU5ndIKHJXdGRY6R2ugP9jf2lzDCZk5FDdGoB2V2ZAsJaeMzpyPcxyKnuyvQhrOUDt7kZOUanRnegpxCWMsNsbkiOcpxTHegZhKVkec1Nya+hkBN9zbIDsZZRTnNT8q1lGPM3yZjCsSV3RUW+BZPaaQ70FMZSsnzm5uRbKzjmFAf6GMhaRrnMCchxjnOaAz0DspZpJnMC8q1xIHOKDh1lLTM85hTkSMc5xYHeB7OWtxzmJORbSOQEB3oKZi3TDOY05MtQ5ruJOc45kruiIcdK7QQH+g7MWt6xmRuSI3VqFAf6PNBaPjCZm5JfwyI3PtBTQGuZ4TE3JYfq1KpheiluF2gtWRZzY3Kw4zwwvuW+g7SWUQZzc/IfVtDM+xJznNN3a4qEfBmN3HD8moJaS5bcnID8h3E48zeJOc7pR3GKgvxHuNRu2K3tBElO7oqC/BoeuVG3Ng+2lhkecxPyH8cBzXcTc5yTj+IUAfmTHKB5kJzjnHoUpwjIn6wgmve5/905U3JXBOT7iOQG3Vof3Fqy5OaG5E/GIc3jd2tjeIsZJTY3Jcc8zg26tQzeWqZpzY3Jn2CSx+7WCoBrIU3uypx8GdQ8k5BOjTy5K2Ny1NQeO7mPIa5lmsE8Pjlmp2aQ3HcQ1zJDb25Afg2VPOYorg9zMeTmBuSgnVotColJ7aSjOGVKjnucxxzFZTDXMkNrbkSOe5zHG8XNg64lS2puRr6PSx7rmnsKdTGjhOZm5MjHeazknkFdC123pgzJkY/zOMm9ALuWLKG5GfkTZPIYyT2Fuxiy5K4MyZehzaMn913ctUzTmscmx07t0ZN7AXgtM6Tm8cn/tBIkKrmnkBfzltDcgPxaECQquY8hr+UDnbkB+aVxdPOxBHy/Qp3clRH5pRy6+U4Svl85Cqorz8qI/NJKkKjkPoa9llFi81jk8Md5tOReAF/LDK15LHL847yS3AsJqdrpRnHKhBz/OA8i3ZbZRV/LKKF5TPJL7xww301MaqcaxSkT8v3AhSgkJbVTHejKgNyF4zxKcs/gr+UtkXlscieO8/D33OcdWMsHGvP45E4c50Hoe+4pB5ZCktyVAfmyG+RhW/Q3DizlHZ15LHJHjvOwT6j2ObGWUSrzeOSOHOdh569jTixlmsg8JvklV8hDJffCjhNLydKYxyVfdsY8TIuecmQpoxTmccmdOc7DtegZR5ZCkNz/X4ABAOvxKndlnCEqAAAAAElFTkSuQmCC","type":"image/png","created":"20190902045638265","modified":"20211110220011320","tags":""},"$:/plugins/kookma/thinkup/images/nodes":{"title":"$:/plugins/kookma/thinkup/images/nodes","caption":"source-branch","collection":"","created":"20211028181158677","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211110215954120","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/people":{"title":"$:/plugins/kookma/thinkup/images/people","caption":"people-fill","collection":"","created":"20211024164103699","library":"Bootstrap","library_version":"1.3.0","modified":"20211024164129076","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/question":{"title":"$:/plugins/kookma/thinkup/images/question","caption":"account-question-outline","collection":"","created":"20210507151145637","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211029075811618","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/tag-text-outline":{"title":"$:/plugins/kookma/thinkup/images/tag-text-outline","caption":"tag-text-outline","collection":"","created":"20210831143053333","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211029075811635","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/tasks":{"title":"$:/plugins/kookma/thinkup/images/tasks","caption":"clipboard-clock-outline","collection":"","created":"20211112164723163","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211112165041063","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/today-activities":{"title":"$:/plugins/kookma/thinkup/images/today-activities","caption":"file-document-multiple-outline","collection":"","created":"20211119065956424","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211119070005361","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/todo":{"title":"$:/plugins/kookma/thinkup/images/todo","caption":"order-bool-descending-variant","collection":"","created":"20211029090928703","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211112164756831","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/thinkup/images/user-tab":{"title":"$:/plugins/kookma/thinkup/images/user-tab","caption":"newspaper-variant-outline","collection":"","created":"20211111183348990","library":"Templarian Material Design","library_version":"5.9.55","modified":"20211111183358066","tags":"","type":"text/vnd.tiddlywiki","text":""},"Journal":{"title":"Journal","caption":"{{$:/core/images/new-journal-button}} Journals","color":"#fff12e","created":"20210425103745538","icon":"$:/core/images/new-journal-button","modified":"20211116191202385","tags":"$:/tags/Thinkup","type":"text/vnd.tiddlywiki","text":"{{||$:/plugins/kookma/thinkup/templates/new-from-sidebar}}"},"$:/plugins/kookma/thinkup/KeyboardShortcuts/goto-today-journal":{"title":"$:/plugins/kookma/thinkup/KeyboardShortcuts/goto-today-journal","created":"20211117161924350","key":"((goto-today-journal))","modified":"20211119063418906","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"\\define goto-today-journal()\n<$wikify name=journal text=\"\"\"<$macrocall $name=now format={{$:/config/NewJournal/Title}}/>\"\"\">\n<$list filter=\"[is[tiddler]]\" emptyMessage={{$:/core/ui/Actions/new-journal}} variable=null>\n<$action-navigate $to=<> $scroll=yes/>\n\n\n\\end\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n<>\n"},"$:/plugins/kookma/thinkup/KeyboardShortcuts/new-idea":{"title":"$:/plugins/kookma/thinkup/KeyboardShortcuts/new-idea","created":"20211112191646333","key":"((new-idea))","modified":"20211112191708988","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"<$tiddler tiddler=\"Idea\" >\n{{||$:/plugins/kookma/thinkup/KeyboardShortcuts/new-item-template}}\n"},"$:/plugins/kookma/thinkup/KeyboardShortcuts/new-item-template":{"title":"$:/plugins/kookma/thinkup/KeyboardShortcuts/new-item-template","created":"20211112153514375","modified":"20211112154428983","tags":"show-content","type":"text/vnd.tiddlywiki","text":"\\define create-new-item-from-this-category()\n\n<$vars new-item-title={{{ [removesuffix[s]] ~[] }}}>\n<$importvariables filter=\"[all[tiddlers+shadows]tag[$:/tags/Thinkup/Entry]contains] ~[[$:/plugins/kookma/thinkup/templates/default]]\">\n<>\n\n\n\\end\n\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n<>\n"},"$:/plugins/kookma/thinkup/KeyboardShortcuts/new-people":{"title":"$:/plugins/kookma/thinkup/KeyboardShortcuts/new-people","created":"20211112122334519","key":"((new-people))","modified":"20211112154040149","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"<$tiddler tiddler=\"People\" >\n{{||$:/plugins/kookma/thinkup/KeyboardShortcuts/new-item-template}}\n"},"$:/plugins/kookma/thinkup/KeyboardShortcuts/new-source":{"title":"$:/plugins/kookma/thinkup/KeyboardShortcuts/new-source","created":"20211112123146766","key":"((new-source))","modified":"20211112154017525","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"<$tiddler tiddler=\"Source\" >\n{{||$:/plugins/kookma/thinkup/KeyboardShortcuts/new-item-template}}\n"},"$:/plugins/kookma/thinkup/KeyboardShortcuts/new-task":{"title":"$:/plugins/kookma/thinkup/KeyboardShortcuts/new-task","created":"20211112102218607","key":"((new-task))","modified":"20211114065029814","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"<$tiddler tiddler=\"Task\" >\n{{||$:/plugins/kookma/thinkup/KeyboardShortcuts/new-item-template}}\n"},"$:/plugins/kookma/thinkup/license":{"title":"$:/plugins/kookma/thinkup/license","created":"20211024153442213","modified":"20211024160621917","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2021 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/thinkup/macros/definition":{"title":"$:/plugins/kookma/thinkup/macros/definition","created":"20210803141955154","modified":"20211117100658126","tags":"show-content","type":"text/vnd.tiddlywiki","text":"\\define tidNodeExplorerConfig() $:/config/Thinkup/NodeExplorer\n\\define tidStabsConfig() $:/config/Thinkup/Stabs/EnableFilter\n\\define tidJournalConfig() $:/config/Thinkup/Journal/EnableFilter\n\n\n\\define tidExcludeStabsConfig() $:/config/Thinkup/Stabs/ExcludeFilter\n\\define tidExcludeCtabsConfig() $:/config/Thinkup/Ctabs/ExcludeFilter\n\\define tidShowSearchCategoryTab() $:/config/Thinkup/Ctabs/EnableSearch\n\\define tidSearchinCtab() $:/temp/thinkup/ctabs-search/$(currentTiddler)$"},"$:/plugins/kookma/thinkup/macros/node-explorer":{"title":"$:/plugins/kookma/thinkup/macros/node-explorer","created":"20210801192651059","modified":"20211109051323911","tags":"show-content","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/thinkup/macros/definition\n\n\\define xtext-pattern-transclude() {{.*}}\n\n\\define text-pattern-transclude()\n{{$(currentTiddler)$.*}}\n\\end\n\n\\define linksFilter() [all[current]!is[system]links[]]\n\\define backlinksFilter() [all[current]!is[system]backlinks[]]\n\\define tagsFilter() [all[current]!is[system]tagging[]]\n\\define transclusionFilter() [regexp:text]\n\n<$set name=mainfilter filter=\"[getindex[links]match[yes]then] [getindex[backlinks]match[yes]then] [getindex[tagging]match[yes]then] [getindex[transclusion]match[yes]then]\">\n\n\n<$list filter=\"[subfilter] +[count[]compare:number:gteq[1]]\" variable=null>\n\n\n\n<$transclude tiddler=\"$:/plugins/kookma/thinkup/ui/node-explorer\" />\n\n\n"},"$:/plugins/kookma/thinkup/macros/people":{"title":"$:/plugins/kookma/thinkup/macros/people","created":"20211030190945011","modified":"20211030192613094","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define pcontact(\nemail:\"not-passed\",\nwebpage:\"not-passed\",\nphoto:\"not-passed\",\nresearch-gate:\"not-passed\",\ngoogle-scholar:\"not-passed\"\n)\n\n<$list filter=\"email webpage research-gate google-scholar\" variable=currentItem>\n<$list filter=\"[trim[]!is[blank]]\" variable=null>\n\n\n\\end\n\n<$list filter=\"[all[current]tag[Source]]\">\n
    <>\n\n\n\\end\n\n<>"},"$:/plugins/kookma/thinkup/macros/searchbox":{"title":"$:/plugins/kookma/thinkup/macros/searchbox","created":"20211108080705516","modified":"20211113160744710","tags":"show-content","type":"text/vnd.tiddlywiki","text":"\\define search-box(tempTiddler)\n<$keyboard key=\"escape\" actions=\"\"\"<$action-setfield $tiddler=<<__tempTiddler__>> $field=text $value=\"\"/>\"\"\" >\n<$edit-text tiddler=<<__tempTiddler__>>\n field=text \ttag=input \ttype=search\n\tdefault=\"\" placeholder=\" enter your search terms\"\n\tclass=\"search-box\" />\n\n\\end"},"$:/plugins/kookma/thinkup/macros/stabs":{"title":"$:/plugins/kookma/thinkup/macros/stabs","created":"20211028173456201","modified":"20211112063835757","tags":"show-content","type":"text/vnd.tiddlywiki","text":"\\define make-caption() <$transclude tiddler={{$(currentTiddler)$!!icon}} mode=inline/>\n\\define hide-tabs-button()\n<$list filter=\"[!is[blank]]\">\n<$button class=\"tc-btn-invisible tab-button\" actions=\"\"\"<$action-setfield $tiddler=<> text=\"\" />\"\"\">{{$:/plugins/kookma/thinkup/images/close}}\n\n\\end\n\n\\define thinkup-stabs(filter)\n
    \n<$vars tempdataTid=\"$:/temp/thinkup-tabs/$(currentTiddler)$\">\n\n
    \n<$vars currentTab= {{{ [get[text]] }}} >\n<>\n<$list filter=<<__filter__>> >\n<$vars btnClass= {{{ [matchthen[tc-btn-invisible tab-button selected]else[tc-btn-invisible tab-button]] }}} > \n<$button class=<> tooltip={{{[get[tooltip]]}}} actions=\"\"\"<$action-setfield $tiddler=<> text=<> />\"\"\" ><>\n\n\n\n
    \n\n\n<$vars currentTab= {{{ [get[text]] }}} >\n<$list filter=\"[subfilter<__filter__>match] ~[subfilter<__filter__>first[]]\" variable=tab>\n<$vars contentStyle= {{{ [matchthen[display:block;]] }}} > \n
    > > \n <$transclude tiddler=<> mode=block/>\n
    \n\n\n\n\n\n
    \n\\end"},"$:/plugins/kookma/thinkup/macros/tag-cloud":{"title":"$:/plugins/kookma/thinkup/macros/tag-cloud","created":"20210831144029397","modified":"20211102190815667","tags":"show-content","type":"text/vnd.tiddlywiki","text":"\\define getTags()\n<$list filter=\"[all[tiddlers]!prefix[$:/]tags[]] +[!prefix[$:/]] $(extra_filter)$\">\n <$text text=\"[[\"/>{{{ [tagging[]count[]] }}}°≈°<><$text text=\"]]\"/>\n\n\\end\n\n\\define sortTags()\n<$list filter=\"[enlist!sortan[]] :filter[split[°≈°]first[]compare:integer:gteq<__n__>]\" >\n <$list filter=\"[split[°≈°]last[]]\"><$text text=\"[[\"/><><$text text=\"]]\"/>\n\n\\end\n\n\\define tagcloud_showbycount(n:5, extrafilter:\"\")\n<$vars extra_filter=<<__extrafilter__>> >\n<$wikify name=\"items\" text=<> >\n <$wikify name=\"sorted\" text=<> >\n <$list filter=<>>\n <$vars count={{{ [tagging[]count[]] }}}>\n <><>\n \n \n \n\n\n\\end\n\n\n\n"},"$:/plugins/kookma/thinkup/macros/tinyurl":{"title":"$:/plugins/kookma/thinkup/macros/tinyurl","created":"20211118044823660","modified":"20211118050611724","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define tinyurl(address, label:\"\", n:3)\n> target=_blank>\n<$list filter=\"[[$label$]is[blank]]\" emptyMessage=<<__label__>> >\n<$text text={{{[<__address__>split[/]first[$n$]join[/]]}}}/>\n\n\n\\end"},"People":{"title":"People","caption":"{{$:/plugins/kookma/thinkup/images/people}} People","color":"#800080","created":"20211024163205613","icon":"$:/plugins/kookma/thinkup/images/people","list":"[[Bengt Fornberg]] [[New People]] [[New People 5]] [[New People 6]] [[New People 2]] [[Mr Nik Samson]] [[New People 4]] [[Ms Lena Willson]] [[New People 3]]","modified":"20211217192305022","tags":"$:/tags/Thinkup","type":"text/vnd.tiddlywiki","text":"{{||$:/plugins/kookma/thinkup/templates/new-from-sidebar}}"},"Question":{"title":"Question","caption":"{{$:/plugins/kookma/thinkup/images/question}} Questions","color":"#af002a","created":"20210507085035852","icon":"$:/plugins/kookma/thinkup/images/question","list":"[[New Question]] [[New Question 1]] [[New Question 2]] TEST [[New Question 3]] [[New Question 4]] [[New Question 5]] [[New Question 6]]","modified":"20211217192516789","tags":"$:/tags/Thinkup","type":"text/vnd.tiddlywiki","text":"{{||$:/plugins/kookma/thinkup/templates/new-from-sidebar}}"},"$:/plugins/kookma/thinkup/readme":{"title":"$:/plugins/kookma/thinkup/readme","created":"20211024153442213","modified":"20211111204406875","tags":"","type":"text/vnd.tiddlywiki","text":"; Thinkup\nThink Up in [[Lexico|https://www.lexico.com/definition/think_up]] means: use one's ingenuity to invent or devise something. Thinkup is a Tiddlywiki plugin uses Zettlekasten method for note taking\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Thinkup/\n* Code: https://github.com/kookma/TW-Thinkup\n"},"$:/plugins/kookma/thinkup/settings/category-tabs":{"title":"$:/plugins/kookma/thinkup/settings/category-tabs","caption":"Category Tabs","created":"20211109051121813","modified":"20211109063201947","tags":"","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/thinkup/macros/definition\n\n;Category tabs search box\n:<$checkbox tiddler=<> field=text checked=yes> Enable searchbox on category tabs\n\n
    \n
    Exclude tabs (select to hide a category)
    \n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Thinkup]]\" >\n
    <$checkbox tiddler=<> index=<> checked=yes> <$view field=title/>
    \n\n
    "},"$:/plugins/kookma/thinkup/settings/node-explorer":{"title":"$:/plugins/kookma/thinkup/settings/node-explorer","caption":"Node Explorer","created":"20211102191128372","modified":"20211109063358515","tags":"","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/thinkup/macros/definition\n\n;Node explorer filters (what shows node explorer)\n:<$checkbox tiddler=<> index=\"links\" checked=yes> links\n:<$checkbox tiddler=<> index=\"backlinks\" checked=yes> backlinks\n:<$checkbox tiddler=<> index=\"tagging\" checked=yes> tagging\n:<$checkbox tiddler=<> index=\"transclusion\" checked=yes> transclusion\n\n;Node explorer display format\n:<$radio tiddler=<> index=\"display\" value=table> dynamic table \n:<$radio tiddler=<> index=\"display\" value=flat > simple flat list\n"},"$:/plugins/kookma/thinkup/settings/smart-tabs":{"title":"$:/plugins/kookma/thinkup/settings/smart-tabs","caption":"Smart Tabs","created":"20211102113355962","modified":"20211121200757882","tags":"","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/thinkup/macros/definition\n\n\\define activateAction() <$action-setfield $tiddler=<> $field=text $value=\"[all[current]tag[myTag]]\" />\n\n\\define radioAction(status:\"disabled\") <$action-setfield $tiddler=<> $field=status $value=\"$status$\" />\n\n\\define select(description,filter)\n<$radio tiddler=<> field=\"text\" value=<<__filter__>> actions=<> > $description$\n\\end\n\n;Disable smart tabs\n:<$checkbox tiddler=<> \n field=\"text\" checked=\".__smart__tabs__disabled__\" unchecked=\" [all[current]!is[system]] \" \n\tuncheckactions=<>> Swith smart tabs\n\t\n:<$checkbox tiddler=<> \n field=\"text\" checked=\".__smart__tabs__disabled__\" unchecked=\" [all[current]tag[Journal]] \" \n\t > Swith smart tabs on Journals\t\n\n<$reveal type=nomatch stateTitle=<> stateField=\"text\" text=\".__smart__tabs__disabled__\" default=\"show\">\n\n; Smart tabs filters (where display smart tabs)\n: <>\n: <
    <$text text=<> /><$transclude field=<> />
    \n\n<$list filter=\"[enlist]\" variable=field><>\n
    Title<$transclude field=\"caption\" />
    \n"},"$:/plugins/kookma/thinkup/viewtemplates/task-button":{"title":"$:/plugins/kookma/thinkup/viewtemplates/task-button","created":"20211118212231202","list-after":"$:/core/ui/ViewTemplate/tags","modified":"20211217201222877","tags":"show-content $:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"\n\\define btncheckactions() \n<$action-setfield $tiddler=<> $index=<> $value=\"color:#155724;background-color:#d4edda;\" />\n<$action-setfield $tiddler=<> status=\"complete\"/>\n\\end\n\\define btnuncheckactions()\n<$action-setfield $tiddler=<> $index=<> /><$action-setfield $tiddler=<> status=\"rework\"/>\n\\end\n\n<$list filter=\"[all[current]tag[Task]]\">\n
    \n<$button to=\"Tasks Explorer\" tooltip=\"Open Tasks Explorer\" class=\"tc-btn-invisible\">{{$:/plugins/kookma/thinkup/images/tasks}} Tasks Explorer\n<$vars currentRecord=<> tempTableStyle=\"$:/keepstate/dynamictables/tasks-state-tid/style\">\n<$checkbox class=thinkup-btn-task-done \n tiddler=<> tag=\"done\"\n checkactions=<> \n uncheckactions=<> \n> {{$:/plugins/kookma/thinkup/images/todo}}\n<$list filter=\"[contains:tags[done]]\" emptyMessage=Done>\nUndone\n\n\n\n
    \n"}}} \ No newline at end of file diff --git a/tiddlers/$__plugins_kookma_thinkup.json.meta b/tiddlers/$__plugins_kookma_thinkup.json.meta new file mode 100644 index 0000000..aa598dc --- /dev/null +++ b/tiddlers/$__plugins_kookma_thinkup.json.meta @@ -0,0 +1,11 @@ +author: Mohammad Rahmani +core-version: >=5.2.0 +dependents: Shiraz +description: Personal knowledge management with Tiddlywiki +list: readme license history +name: Thinkup +plugin-type: plugin +source: https://github.com/kookma/TW-Thinkup +title: $:/plugins/kookma/thinkup +type: application/json +version: 0.2.6 \ No newline at end of file diff --git a/tiddlers/$__plugins_kookma_trashbin.json b/tiddlers/$__plugins_kookma_trashbin.json new file mode 100644 index 0000000..c4441be --- /dev/null +++ b/tiddlers/$__plugins_kookma_trashbin.json @@ -0,0 +1 @@ +{"tiddlers":{"$:/plugins/kookma/trashbin/history":{"title":"$:/plugins/kookma/trashbin/history","created":"20200325121105806","modified":"20220111044147290","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-Trashbin/#ChangeLog\n\n* ''1.2.3'' -- 2022.01.11 -- update to TW 5.2.1\n* ''1.2.2'' -- 2020.04.10 -- bug fix in remove draft tiddlers to trashbin\n* ''1.2.1'' -- 2020.03.30 -- bug fix and doc improvement and UI fade correction\n* ''1.1.2'' -- 2020.03.28 -- stable release with new features and bug fixes\n* ''0.1.0'' -- 2019.02.12 -- mature public release\n"},"$:/plugins/kookma/trashbin/images/recycle":{"title":"$:/plugins/kookma/trashbin/images/recycle","created":"20190723043410550","modified":"20200325115955820","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/trashbin/images/sort-alpha-down":{"title":"$:/plugins/kookma/trashbin/images/sort-alpha-down","caption":"sort-alpha-down","created":"20200327153959154","modified":"20200327185043770","tags":"$:/tags/Image","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/trashbin/images/sort-alpha-up":{"title":"$:/plugins/kookma/trashbin/images/sort-alpha-up","caption":"sort-alpha-up (Solid)","created":"20200327155639132","modified":"20200327162316327","tags":"$:/tags/Image","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/trashbin/images/sort-numeric-down":{"title":"$:/plugins/kookma/trashbin/images/sort-numeric-down","caption":"sort-numeric-down","created":"20200327153929866","modified":"20200327185052283","tags":"$:/tags/Image","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/trashbin/images/sort-numeric-up":{"title":"$:/plugins/kookma/trashbin/images/sort-numeric-up","caption":"sort-numeric-up (Solid)","created":"20200327155701392","modified":"20200327162214617","tags":"$:/tags/Image","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/trashbin/images/times.svg":{"title":"$:/plugins/kookma/trashbin/images/times.svg","created":"20190716033811299","modified":"20200325115955828","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/plugins/kookma/trashbin/images/trash-alt":{"title":"$:/plugins/kookma/trashbin/images/trash-alt","caption":"trash-alt","created":"20190710102513532","modified":"20200327173632794","type":"text/vnd.tiddlywiki","text":""},"$:/language/Buttons/Trashbin/Caption/Move":{"title":"$:/language/Buttons/Trashbin/Caption/Move","created":"20200325181608623","modified":"20200327192039481","tags":"","type":"text/vnd.tiddlywiki","text":"trashbin"},"$:/language/Buttons/Trashbin/Caption/Recycle":{"title":"$:/language/Buttons/Trashbin/Caption/Recycle","created":"20200327192303891","modified":"20200327192322259","tags":"","type":"text/vnd.tiddlywiki","text":"recycle"},"$:/language/Buttons/Trashbin/Hint/Move":{"title":"$:/language/Buttons/Trashbin/Hint/Move","created":"20200325181718189","modified":"20200327192226676","tags":"","type":"text/vnd.tiddlywiki","text":"Move this tiddler to Trashbin"},"$:/language/Buttons/Trashbin/Hint/Recycle":{"title":"$:/language/Buttons/Trashbin/Hint/Recycle","created":"20200327192150450","modified":"20200327194553902","tags":"","type":"text/vnd.tiddlywiki","text":"Recycle this tiddler from Trashbin"},"$:/plugins/kookma/trashbin/license":{"title":"$:/plugins/kookma/trashbin/license","created":"20200325121133911","modified":"20220111051224757","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2019-2022 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/trashbin/macros/bulk-operation":{"title":"$:/plugins/kookma/trashbin/macros/bulk-operation","created":"20190723115934925","modified":"20200327170128541","type":"text/vnd.tiddlywiki","text":"\\define delete-trashed-tiddlers()\n<$list filter=\"[tag[$:/tags/trashbin]search:title[$:/trashbin/]]\" variable=\"Item\">\n<$action-deletetiddler $tiddler=<> />\n\n\\end\n\n\\define trashbin-empty-bin()\n<$macrocall $name=\"trashbin-confirm-delete\"\nbtnLabel=\"Empty Trashbin\"\ncountFilter=\"[tag[$:/tags/trashbin]search:title[$:/trashbin/]]\"\nactionMacro=<>\nstateTiddler=\"$:/state/trashbin/emptyTrashBin\"\n/>\n\\end\n\n\\define restore-all()\n<$button tooltip=\"Restore all\" class=\"tc-btn-invisible tc-tiddlylink\"> {{$:/plugins/kookma/trashbin/images/recycle}}\n<$list filter=\"[tag[$:/tags/trashbin]search:title[$:/trashbin/]sort[]]\" variable=\"Item\">\n<$macrocall $name=\"restore\" tiddler=<> />\n\n\n\\end"},"$:/plugins/kookma/trashbin/macros/confirm-empty":{"title":"$:/plugins/kookma/trashbin/macros/confirm-empty","created":"20190723114948285","modified":"20200327170306636","type":"text/vnd.tiddlywiki","text":"\\define trashbin-confirm-delete(\nbtnLabel:\"Delete these tiddlers\", \nconfirmMessage:\"Are you sure you wish to delete\", \nstateTiddler:\"\", \ncountFilter:\"\", \nactionMacro:\"\")\n\n<$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Empty Trashbin\" popup=<> > {{$:/core/images/delete-button}}\n\n\n<$reveal state=<> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n
    \n
    \n
    \n<$set name=\"resultCount\" value=\"\"\"<$count filter=<<__countFilter__>> />\"\"\">\n$confirmMessage$ <> tiddler(s)?\n\n
    \n
    \n<$button class=\"tc-btn-invisible tc-tiddlylink\" tooltip=\"Empty archive\"\nactions=<<__actionMacro__>> > \n{{$:/core/images/delete-button}} Delete all?\n\n
    \n
    \n
    \n\n\\end"},"$:/plugins/kookma/trashbin/macros/move-to-trashbin":{"title":"$:/plugins/kookma/trashbin/macros/move-to-trashbin","created":"20190710071039480","modified":"20200410061108463","type":"text/vnd.tiddlywiki","text":"\\define trashTidName() <>\n\n\\define move-to-trashbin(tiddler)\n<$list filter=\"[<__tiddler__>has[title]]\" variable=ignore> \n<$vars trashTiddler={{{ [<__tiddler__>addprefix[$:/trashbin/]] }}}>\n<$wikify name=\"trashTid\" text=<> >\n<$list filter=\"[<__tiddler__>fields[]]\" variable=\"fieldName\">\n<$action-setfield \n $tiddler=<>\n $index=<>\n $value={{{[<__tiddler__>get] }}}\n/>\n\n<$action-setfield $tiddler=<> tags=\"$:/tags/trashbin\"/>\n\n<$action-sendmessage $message=\"tm-close-tiddler\" $param=<<__tiddler__>> />\n<$list filter=\"[<__tiddler__>has[draft.of]]\" variable=ignore emptyMessage=\"\"\"<$action-deletetiddler $tiddler=<<__tiddler__>> />\"\"\">\n<$action-deletetiddler $tiddler={{{[<__tiddler__>get[draft.of]]}}} />\n<$action-deletetiddler $tiddler=<<__tiddler__>> /> \n\n\n\n\\end\n"},"$:/plugins/kookma/trashbin/macros/preview-option":{"title":"$:/plugins/kookma/trashbin/macros/preview-option","created":"20200327203154169","modified":"20200327205705076","tags":"","type":"text/vnd.tiddlywiki","text":"\\define viewTemplateTid() $:/plugins/kookma/trashbin/viewtemplate/trash-item\n\\define styleTid() $:/plugins/kookma/trashbin/styles/show-trashed\n\n\\define preview-option()\n<$reveal type=\"nomatch\" stateTitle=<> stateField=\"tags\" text=\"$:/tags/ViewTemplate\" default=\"\">\n<$button setTitle=<> setField=\"tags\" setTo=\"$:/tags/ViewTemplate\" class=\"tc-btn-invisible\" tooltip=\"Show trash item preview\"> \n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=<> tags=\"$:/tags/Stylesheet\"/> \n\n\n<$reveal type=\"match\" stateTitle=<> stateField=\"tags\" text=\"$:/tags/ViewTemplate\" default=\"\">\n<$button setTitle=<> setField=\"tags\" setTo=\"\" class=\"tc-btn-invisible\" tooltip=\"Hide trash item preview\"> \n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=<> tags=\"\"/> \n\n\n\\end\n\n<>"},"$:/plugins/kookma/trashbin/macros/restore":{"title":"$:/plugins/kookma/trashbin/macros/restore","created":"20190710105439064","modified":"20200327170445307","type":"text/vnd.tiddlywiki","text":"\\define open-restoredTid-in-story-river()\n<$action-listops $tiddler=\"$:/StoryList\" $field='list' $subfilter=\"\"\"[[$(restoredTid)$]]+[putfirst[]]\"\"\"/>\n\\end\n\n\\define restoreTid(tiddler)\n<$list filter=\"[<__tiddler__>indexes[]] -title\" variable=\"fieldName\">\n <$action-setfield \n $tiddler=<> \n\t $field=<> \n\t $value={{{ [<__tiddler__>getindex] }}} \n />\n\n<$action-sendmessage $message=\"tm-close-tiddler\" $param=<<__tiddler__>> />\n<$action-deletetiddler $tiddler=<<__tiddler__>> />\n<$macrocall $name=\"open-restoredTid-in-story-river\" />\n\\end\n\n\n\\define restore(tiddler)\n<$vars \n restoredTid={{{ [<__tiddler__>getindex[title]] }}} \n isExisted= {{{ [<__tiddler__>getindex[title]has[title]] }}} \n >\n<$reveal type=\"nomatch\" text=<> default=<> >\n<$macrocall $name=\"restoreTid\" tiddler=<<__tiddler__>> />\n\n\n<$reveal type=\"match\" text=<> default=<> >\n <$action-sendmessage $message=\"tm-notify\" \n $param=\"$:/plugins/kookma/trashbin/restore-notification\" \n\t restoredTiddler=<>\n\t/>\n\n\n\n\\end"},"$:/plugins/kookma/trashbin/macros/sort":{"title":"$:/plugins/kookma/trashbin/macros/sort","created":"20200327141043944","modified":"20200327201042137","type":"text/vnd.tiddlywiki","text":"\\define tempSortTid() $:/keepstate/trashbin/sort\n\n\\define show-icons()\n<$vars state-alpha-down=\"sortan[title]\" state-alpha-up=\"!sortan[title]\"\n state-numeric-down=\"sort[modified]\" state-numeric-up=\"!sort[modified]\" >\n<$list filter=\"[get[text]match]\">\n{{$:/plugins/kookma/trashbin/images/sort-alpha-down}}\n\n<$list filter=\"[get[text]match]\">\n{{$:/plugins/kookma/trashbin/images/sort-alpha-up}}\n\n<$list filter=\"[get[text]match]\">\n{{$:/plugins/kookma/trashbin/images/sort-numeric-down}}\n\n<$list filter=\"[get[text]match]\">\n{{$:/plugins/kookma/trashbin/images/sort-numeric-up}}\n\n<$list filter=\"[!has[title]]\">\nClick to sort\n\n\n\\end\n\n\n\\define trashbin-cycle(arraySet:\"\", stateTiddler:\"\", stateField:\"text\")\n<$vars array=<<__arraySet__>> currentItem={{{[<__stateTiddler__>get<__stateField__>]}}} \n tooltip={{{[get[text]]}}} >\n <$button tooltip=<> class=\"tc-btn-invisible\"> <>\n <$set\n filter='[enlistafter]'\n name=NextItem\n emptyValue={{{[enlistfirst[]]}}}\n >\n <$action-setfield\n $tiddler=<<__stateTiddler__>>\n $field=<<__stateField__>>\n $value=<> />\n \n \n\t\n\\end\n\n\\define sort-by()\n<$macrocall $name=\"trashbin-cycle\" \n arraySet=\"sortan[title] !sortan[title] sort[modified] !sort[modified]\" \n stateTiddler=<> />\n\\end"},"$:/plugins/kookma/trashbin/readme":{"title":"$:/plugins/kookma/trashbin/readme","created":"20200325121220142","modified":"20200325171839260","tags":"","type":"text/vnd.tiddlywiki","text":"; Trashbin\nThe concept behind Trashbin plugin is to have a simple mechanism to move deleted tiddlers to Trashbin and be able to restore them later if required.\n\n; Code and demo\nFor learning plugin features, mechanism, terminology, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Trashbin/\n* Code: https://github.com/kookma/TW-Trashbin\n"},"$:/plugins/kookma/trashbin/restore-notification":{"title":"$:/plugins/kookma/trashbin/restore-notification","created":"20190711130503628","modified":"20200325115955867","tags":"","type":"text/vnd.tiddlywiki","text":"{{$:/plugins/kookma/trashbin/images/recycle}} \n\n''Warning''
    \nThe target tiddler <$text text=<>/> already exists.
    \nIt cannot be overwritten!"},"$:/plugins/kookma/trashbin/sidebar-tab":{"title":"$:/plugins/kookma/trashbin/sidebar-tab","caption":"Trashbin","created":"20190613131234955","modified":"20200330082257793","tags":"$:/tags/SideBar","type":"text/vnd.tiddlywiki","text":"{{$:/plugins/kookma/trashbin/ui/sidebar}}"},"$:/plugins/kookma/trashbin/styles/main.css":{"title":"$:/plugins/kookma/trashbin/styles/main.css","text":"/* trashbin main ui */\n.kk-trashbin-ui{\n\tmin-width:320px; /* controls the minimum width of whole ui */\n}\n\n.kk-trahbin-ui svg{\n fill:#aaaaaa;\n}\n\n.kk-trahbin-ui .kk-trahbin-ui-controls svg{\n width:1.2em;\n height:1.2em;\t\n}\n\n\n/* trashbin items list ui */\n.kk-trashbin-row{\n\tdisplay: flex;\t\n\twidth: 95%;\n\tflex-wrap: wrap;\n}\n\n\n.kk-trashbin-row .kk-trashbin-delete,\n.kk-trashbin-row .kk-trashbin-restore {\n\tflex-grow:0; width:20px;\n\tmargin-left:5px;\n}\n\n.kk-trashbin-row .kk-trashbin-link{\n\tflex-grow:1; \n\twidth: calc(100% - 50px); \n\tpadding-right: 10px;\n}\n\n.kk-trashbin-row:hover { background-color: #f6f6f6; }\n\n/* UI button fade-in*/\n.kk-trahbin-ui button:hover svg { fill: #000000; }\n.kk-trahbin-ui .kk-trashbin-ui-btn { opacity:0.5; }\n.kk-trahbin-ui .kk-trashbin-ui-btn:hover { opacity:1.0; }","created":"20190716040116074","modified":"20200330103433380","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/trashbin/styles/show-trashed":{"title":"$:/plugins/kookma/trashbin/styles/show-trashed","created":"20200327100826751","modified":"20200330123344137","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"[data-tags~=\"$:/tags/trashbin\"] .tc-tiddler-body,\n[data-tags~=\"$:/tags/trashbin\"] .tc-tags-wrapper\n{\n display:none;\n}\n"},"$:/plugins/kookma/trashbin/styles/toolbar-buttons":{"title":"$:/plugins/kookma/trashbin/styles/toolbar-buttons","text":"html body.tc-body .tc-tiddler-controls .tc-image-trash-alt {stroke: white;fill:#660000;}\nhtml body.tc-body .tc-tiddler-controls .tc-image-recycle {stroke: white;fill:#138808;}","created":"20200329162056060","modified":"20200406191049638","type":"text/css"},"$:/plugins/kookma/trashbin/styles/trashed-item":{"title":"$:/plugins/kookma/trashbin/styles/trashed-item","text":"/* set style for trashed tiddlers */\n[data-tags ~=\"$:/tags/trashbin\"] { border: 1px solid crimson; }","created":"20200329161931981","modified":"20200329162224824","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/trashbin/templates/body":{"title":"$:/plugins/kookma/trashbin/templates/body","created":"20200329133632160","modified":"20200329155701084","tags":"","type":"text/vnd.tiddlywiki","text":"\\define show-plain() \n
    \n
    <$transclude index=\"text\" mode=\"block\"/>
    \n
    \n\\end\n\n\\define show() \n
    \n<$transclude index=\"text\" mode=\"block\"/>\n
    \n\\end\n\n\n\n<$list filter=\"[getindex[type]match[application/json]]\" variable=ignore>\n<$list filter=\"[getindex[plugin-type]]\" variable=ignore emptyMessage=<> >\n
    \nThis tiddler contains plugin!\n
    \n\n\n\n<$list filter=\"[getindex[type]match[application/x-tiddler-dictionary]]\n[getindex[type]match[text/plain]]\n[getindex[type]match[text/css]]\" variable=ignore>\n<>\n\n\n\n\n<$list filter=\"[getindex[type]]\" variable=type emptyMessage=<> >\n<$list filter=\"[match[text/vnd.tiddlywiki]]\" variable=ignore>\n<$transclude index=\"text\" mode=\"block\"/>\n\n<$list filter=\"[search:title[image]]\" variable=ignore>\n
    \nThis tiddler contains image data!\n
    \n\n"},"$:/plugins/kookma/trashbin/templates/subtitle":{"title":"$:/plugins/kookma/trashbin/templates/subtitle","text":"
    \n<$link to={{##modifier}}>\n<$view index=\"modifier\"/>\n <$view index=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n
    ","created":"20200327082525694","modified":"20200327083014840","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/trashbin/templates/tags":{"title":"$:/plugins/kookma/trashbin/templates/tags","created":"20200327084049139","modified":"20200327120921036","tags":"","type":"text/vnd.tiddlywiki","text":"
    \n<$vars tagsIndex={{{[getindex[tags]]}}}>\n<$list filter=\"[enlist]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/>\n\n
    "},"$:/plugins/kookma/trashbin/templates/title":{"title":"$:/plugins/kookma/trashbin/templates/title","created":"20200327085342927","modified":"20200327195225059","tags":"","type":"text/vnd.tiddlywiki","text":"\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n
    \n
    \n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{##color}}>\n>>\n<$transclude tiddler={{##icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n\n\n\n<$list filter=\"[{##title}removeprefix[$:/]]\">\n

    \n$:/<$text text=<>/>\n

    \n\n<$list filter=\"[{##title}!prefix[$:/]]\">\n

    \n<$view field=\"title\"/>\n

    \n\n\n\n
    "},"$:/plugins/kookma/trashbin/ui/sidebar":{"title":"$:/plugins/kookma/trashbin/ui/sidebar","caption":"Trashbin","created":"20200330082034854","modified":"20200330123325985","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/trashbin/macros/sort\n\\import $:/plugins/kookma/trashbin/macros/restore\n\\import $:/plugins/kookma/trashbin/macros/confirm-empty\n\\import $:/plugins/kookma/trashbin/macros/bulk-operation\n\\import $:/plugins/kookma/trashbin/macros/preview-option\n\n\\define show-link()\n<$link to=<> ><$text text={{{ [removeprefix[$:/trashbin/]] }}} />  <$view field=\"modified\" format=\"date\" template=\"0MM/0DD/YYYY 0hh:0mm AM\"/>\n\\end\n\n\\define recycle-button()\n{{||$:/plugins/kookma/trashbin/ui/toolbar-button}}\n\\end\n\n\\define delete-button()\n<$button class=\"tc-btn-invisible\" tooltip=\"Delete permanently\">\n{{$:/plugins/kookma/trashbin/images/times.svg}}\n<$list filter=\"[list[$:/StoryList]] +[field:title>]\" variable=ignore>\n<$action-sendmessage $message=\"tm-close-tiddler\" $param=<<> />\n\n<$action-deletetiddler $tiddler=<> />\n\n\\end\n\n\\define trashbin-siderbar-ui()\n
    \n\n\n<> <> <> <>\n\n \n\n<$list filter='[tag[$:/tags/trashbin]prefix[$:/trashbin/]limit[1]]' variable=null emptyMessage=\"Trash bin is empty\">\n<$count filter='[tag[$:/tags/trashbin]]'/> items in Trashbin\n\n\n\n\n<$list filter=\"[tag[$:/tags/trashbin]prefix[$:/trashbin/]$(sortType)$]\">\n
    \n\t
    <>
    \n\t
    <>
    \n\t
    <>
    \n
    \n\n\n
    \n\\end\n\n<$vars sortType={{{[get[text]] ~[[]] }}}>\n<>\n"},"$:/plugins/kookma/trashbin/ui/toolbar-button":{"title":"$:/plugins/kookma/trashbin/ui/toolbar-button","caption":"{{$:/plugins/kookma/trashbin/images/trash-alt}} {{$:/language/Buttons/Trashbin/Caption/Move}}","created":"20190623140751496","creator":"Mohammad","description":"<$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\" emptyMessage={{$:/language/Buttons/Trashbin/Hint/Move}}>{{$:/language/Buttons/Trashbin/Hint/Recycle}}","list-after":"$:/core/ui/Buttons/delete","modified":"20200328140420576","modifier":"Mohammad","tags":"$:/tags/ViewToolbar $:/tags/EditToolbar","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/trashbin/macros/move-to-trashbin\n\\import $:/plugins/kookma/trashbin/macros/restore\n\\whitespace trim\n\n\n<$list filter=\"[all[current]!tag[$:/tags/trashbin]!prefix[$:/trashbin/]]\">\n<$button \n aria-label={{$:/language/Buttons/Trashbin/Caption/Move}}\n tooltip={{$:/language/Buttons/Trashbin/Hint/Move}} class=<> >\n <$macrocall $name=\"move-to-trashbin\" tiddler=<> />\t\n <$list filter=\"[prefix[yes]]\">\n {{$:/plugins/kookma/trashbin/images/trash-alt}}\n \n <$list filter=\"[prefix[yes]]\">\n \n\t\t  <$text text={{$:/language/Buttons/Trashbin/Caption/Move}}/>\n \n \n\n\n\n\n<$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\">\n<$button\n aria-label={{$:/language/Buttons/Trashbin/Caption/Recycle}}\n tooltip={{$:/language/Buttons/Trashbin/Hint/Recycle}} class=<> >\n <$macrocall $name=\"restore\" tiddler=<> />\n <$list filter=\"[prefix[yes]]\">\n {{$:/plugins/kookma/trashbin/images/recycle}}\n \n <$list filter=\"[prefix[yes]]\">\n  \n <$text text={{$:/language/Buttons/Trashbin/Caption/Recycle}}/>\n \n \n\n"},"$:/plugins/kookma/trashbin/viewtemplate/trash-item":{"title":"$:/plugins/kookma/trashbin/viewtemplate/trash-item","created":"20200327081227209","modified":"20200330123344172","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[all[current]tag[$:/tags/trashbin]prefix[$:/trashbin/]]\">\n
    \n{{||$:/plugins/kookma/trashbin/templates/title}}\n{{||$:/plugins/kookma/trashbin/templates/subtitle}}\n{{||$:/plugins/kookma/trashbin/templates/tags}}\n{{||$:/plugins/kookma/trashbin/templates/body}}\n
    \n
    \n

    Tiddler fields

    \n<$list filter=\"[indexes[]] -title -tags -text -created -modified\" variable=idx>\n <$transclude index=<>/>
    \n\n
    \n\n"}}} \ No newline at end of file diff --git a/tiddlers/$__plugins_kookma_trashbin.json.meta b/tiddlers/$__plugins_kookma_trashbin.json.meta new file mode 100644 index 0000000..a735ef7 --- /dev/null +++ b/tiddlers/$__plugins_kookma_trashbin.json.meta @@ -0,0 +1,11 @@ +author: Mohammad Rahmani +core-version: >= 5.1.22 +dependents: +description: A trashbin mechanism for Tiddlywiki +list: readme license history +name: Trashbin +plugin-type: plugin +source: https://github.com/kookma/TW-Trashbin +title: $:/plugins/kookma/trashbin +type: application/json +version: 1.2.3 \ No newline at end of file diff --git a/tiddlers/$__plugins_kookma_utility.json b/tiddlers/$__plugins_kookma_utility.json index fa95005..5783574 100644 --- a/tiddlers/$__plugins_kookma_utility.json +++ b/tiddlers/$__plugins_kookma_utility.json @@ -1 +1 @@ -{"tiddlers":{"$:/plugins/kookma/utility/author/author-tools":{"title":"$:/plugins/kookma/utility/author/author-tools","created":"20190912082519234","key":"((author-tools))","modified":"20210520135718576","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/kookma/utility/author/modal\" />"},"$:/plugins/kookma/utility/author/exclude-items":{"title":"$:/plugins/kookma/utility/author/exclude-items","caption":"Exclude items","created":"20200313124437263","modified":"20200322115519909","tags":"","type":"text/vnd.tiddlywiki","text":"\\define showItems(label, filter)\n

    $label$

    \n<$list filter=<<__filter__>> >\n<$checkbox tiddler=<> tag=\"excluded\"/> <$link to=<>><$text text=<>/>
    \n\n\\end\n\n<>\n\n<>\n\n<>\n\n<>\n<$list filter=\"\">"},"$:/plugins/kookma/utility/author/individual-items":{"title":"$:/plugins/kookma/utility/author/individual-items","caption":"Hide individual UI element","created":"20200313141533701","modified":"20200322130601872","tags":"","type":"text/vnd.tiddlywiki","text":"Select individual items to hide in reader mode.\n\n! Site options\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/site-title\" tag=\"$:/tags/SideBarSegment\"/> Show site title
    \n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/site-subtitle\" tag=\"$:/tags/SideBarSegment\"/> Show site subtitle
    \n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/page-controls\" tag=\"$:/tags/SideBarSegment\"/> Show page controls
    \n\n! Right sidebar elements\n<$checkbox tiddler=\"$:/core/ui/TopBar/menu\" tag=\"$:/tags/TopRightBar\"/> Show right sidebar toggle button
    \n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/search\" tag=\"$:/tags/SideBarSegment\"/> Show search bar
    \n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/tabs\" tag=\"$:/tags/SideBarSegment\"/> Show sidebar tabs
    \n\n\n! Sidebar tabs\n<$checkbox tiddler=\"$:/core/ui/SideBar/Open\" tag=\"$:/tags/SideBar\"/> Show Open tab
    \n<$checkbox tiddler=\"$:/core/ui/SideBar/Recent\" tag=\"$:/tags/SideBar\"/> Show Recent tab
    \n<$checkbox tiddler=\"$:/core/ui/SideBar/Tools\" tag=\"$:/tags/SideBar\"/> Show Tools tab
    \n<$checkbox tiddler=\"$:/core/ui/SideBar/More\" tag=\"$:/tags/SideBar\"/> Show More tab
    \n\n! Tiddler options\n<$checkbox tiddler=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/edit\" field=text checked=show unchecked=hide default=show /> Show edit button in the tiddler toolbar
    \n<$checkbox tiddler=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close\" field=text checked=show unchecked=hide default=show /> Show close button in the tiddler toolbar
    \n<$checkbox tiddler=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions\" field=text checked=show unchecked=hide default=show /> Show more actions button in the tiddler toolbar\n\n! Other items\n<$checkbox tiddler=\"$:/config/DragAndDrop/Enable\" field=text checked=no unchecked=yes default=yes /> Disable page dropzone\n"},"$:/plugins/kookma/utility/author/modal":{"title":"$:/plugins/kookma/utility/author/modal","created":"20190912073245120","modified":"20200316124818329","tags":"","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/kookma/utility/author/switch-author":{"title":"$:/plugins/kookma/utility/author/switch-author","created":"20200315203327216","key":"((switch-author))","modified":"20210520135718587","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/utility/author/tools\n\n<$reveal type=nomatch state=<> text=\"\">\n<>\n\n<$reveal type=match state=<> text=\"\" default=\"\">\n<>\n"},"$:/plugins/kookma/utility/author/tools":{"title":"$:/plugins/kookma/utility/author/tools","caption":"Hide bulk of UI elements","created":"20200313111922410","modified":"20200322160845236","type":"text/vnd.tiddlywiki","text":"\\define configTid() $:/config/utility/author\n\\define add-remove-tag(msg:\"\", tag:\"\")\n<$fieldmangler>\n<$action-sendmessage $message=\"$msg$\" $param=\"$tag$\"/>\n\n\\end\n\n\\define hide-elements()\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!tag[excluded]]\">\n<$action-setfield $tiddler=<> $index=<> $value=\"$:/tags/SideBar\"/>\n<$macrocall $name=\"add-remove-tag\" msg=\"tm-remove-tag\" tag=\"$:/tags/SideBar\"/>\n\n\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/ViewToolbarButtons/Visibility]!tag[excluded]]\">\n<$reveal type=match stateTitle=<> stateField=\"text\" text=\"show\">\n<$action-setfield $tiddler=<> $index=<> $value=\"show\"/>\n<$action-setfield $tiddler=<> $field=\"text\" $value=\"hide\"/>\n\n\n\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/PageControlButtons/Visibility]!tag[excluded]]\">\n<$reveal type=match stateTitle=<> stateField=\"text\" text=\"show\">\n<$action-setfield $tiddler=<> $index=<> $value=\"show\"/>\n<$action-setfield $tiddler=<> $field=\"text\" $value=\"hide\"/>\n\n\n\n<$list filter=\"[[$:/config/DragAndDrop/Enable]!tag[excluded]]\" variable=ignore>\n<$action-setfield $tiddler=\"$:/config/DragAndDrop/Enable\" $field=\"text\" $value=\"no\"/>\n\n\\end\n\n\\define unhide-elements()\n\n<$list filter=\"[indexes[]]\">\n<$reveal type=match stateTitle=<> stateIndex=<> text=\"show\">\n<$action-setfield $tiddler=<> $field=\"text\" $value=\"show\"/>\n\n\n\n<$list filter=\"[indexes[]]\">\n<$reveal type=match stateTitle=<> stateIndex=<> text=\"$:/tags/SideBar\">\n<$macrocall $name=\"add-remove-tag\" msg=\"tm-add-tag\" tag=\"$:/tags/SideBar\"/>\n\n\n\n<$action-deletetiddler $tiddler=<>/>\n\n<$list filter=\"[[$:/config/DragAndDrop/Enable]!tag[excluded]]\" variable=ignore>\n<$action-deletetiddler $tiddler=\"$:/config/DragAndDrop/Enable\"/>\n\n\\end\n\n<$reveal type=nomatch state=<> text=\"\">\n<$button actions=<> tooltip=\"Unhide UI elements\">Author mode\n\n<$reveal type=match state=<> text=\"\" default=\"\">\n<$button actions=<> tooltip=\"Hide UI elements\">Reader mode\n\n
      \n
    • Author mode: all UI elements are visible
    • \n
    • Redaer mode: all UI elements are hidden except those excluded
    • \n
    \n<$reveal type=match state=<> text=\"\" default=\"\">\n
    \nSelect items to be excluded\n
    {{$:/plugins/kookma/utility/author/exclude-items}}\n
    \n
    \n"},"$:/plugins/kookma/utility/config/reveal-tags":{"title":"$:/plugins/kookma/utility/config/reveal-tags","created":"20200123085623608","modified":"20200123200112351","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/config/ShortcutInfo/author-tools":{"title":"$:/config/ShortcutInfo/author-tools","created":"20190912083358612","modified":"20210520135718623","tags":"","type":"text/vnd.tiddlywiki","text":"Show Author tools dialog"},"$:/config/ShortcutInfo/switch-author":{"title":"$:/config/ShortcutInfo/switch-author","created":"20200315203528401","modified":"20210520135718641","type":"text/vnd.tiddlywiki","text":"Toggle the author-reader mode"},"$:/config/shortcuts/author-tools":{"title":"$:/config/shortcuts/author-tools","created":"20191121050813703","modified":"20210520135718631","type":"text/vnd.tiddlywiki","text":"ctrl-alt-A"},"$:/config/shortcuts/switch-author":{"title":"$:/config/shortcuts/switch-author","created":"20200315203409995","modified":"20210520135718649","type":"text/vnd.tiddlywiki","text":"ctrl+alt+L"},"$:/plugins/kookma/utility/history":{"title":"$:/plugins/kookma/utility/history","created":"20190930044127683","modified":"20210520143148996","tags":"","type":"text/vnd.tiddlywiki","text":"* ''2.1.6'' -- 2021.05.20 -- bug fixes, new state tiddler for view fields\n* ''2.1.4'' -- 2021.04.09 -- new viewtemplate for show fields used\n* ''2.1.2'' -- 2020.04.03 -- page control button issue fixed\n* ''2.1.1'' -- 2020.03.25 -- page control button improved and minor issues in css fixed\n* ''2.1.0'' -- 2020.03.23 -- new transclusion output for fields macro and disable drag and drop globally\n* ''2.0.0'' -- 2020.03.16 -- new author-reader mode switch\n* ''1.8.0'' -- 2020.03.13 -- admin panel added\n* ''1.7.0'' -- 2020.02.23 -- show tiddler raw content including the macros on demand\n* ''1.0.0'' -- 2019.10.13 -- stable release\n* ''0.5.0'' -- 2019.10.10 -- first beta release"},"$:/plugins/kookma/utility/images/view-fields.svg":{"title":"$:/plugins/kookma/utility/images/view-fields.svg","created":"20181010193706723","modified":"20200123200937680","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/language/Buttons/Utility/Caption":{"title":"$:/language/Buttons/Utility/Caption","created":"20190930171340202","modified":"20210520135718612","tags":"","type":"text/vnd.tiddlywiki","text":"show fields"},"$:/language/Buttons/Utility/Hint":{"title":"$:/language/Buttons/Utility/Hint","created":"20190930171301401","modified":"20210520135718597","tags":"","type":"text/vnd.tiddlywiki","text":"Show fields"},"$:/plugins/kookma/utility/license":{"title":"$:/plugins/kookma/utility/license","created":"20190930044127683","modified":"20200325141629992","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2019-2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<\n"},"$:/plugins/kookma/utility/macro/doc-svg":{"title":"$:/plugins/kookma/utility/macro/doc-svg","created":"20190722141637145","modified":"20200123200937669","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define doc-svg(tiddler:\"\", color:\"\")\n<$transclude tiddler=<<__tiddler__>> />\n\\end"},"$:/plugins/kookma/utility/macro/find":{"title":"$:/plugins/kookma/utility/macro/find","created":"20181213121411187","modified":"20200325124037811","tags":"$:/tags/Macro","type":"application/x-tiddler","text":"\\define find(text, begin, end, output:\"simple\", mode:\"all\")\n<$vars \n fulltext=<<__text__>>\n start=<<__begin__>>\n stop=<<__end__>>\n output-macro=<<__output__>>\n>\n<$list variable=\"p1\" filter=\"[splitbefore]\">\n<$list variable=\"p2\" filter=\"[removeprefix]\">\n<$list variable=\"p3\" filter=\"[splitbeforeremovesuffix]\">\n<$macrocall $name=<> p=<> />\n<$reveal type=\"match\" text=\"all\" default=<<__mode__>> >\n<$macrocall $name=\"find\"\n text={{{[removeprefixremoveprefix]}}}\n begin=<>\n end=<>\n output=<>\n/>\n\n\n\n\n\n\\end\n\n\\define simple(p)\n<$text text=<<__p__>> />\n\\end\n\n\\define simple-list(p)\n
  • <$text text=<<__p__>>/>
  • \n\\end\n\n\n!! Summary\n* `find` is a macro to search a text and find all snippets delimited between values of `begin` and `end` delimiters\n* `simple` is a macro used by `find` to show the output in a simple format\n* `simple-list` is a macro used by `find` to show the output in a simple list format. The ordered and unordered list\ncan be used if the call to `find` macro wrapped in a `div` with suitable type e.g `ol` or `ul`."},"$:/plugins/kookma/utility/macro/lorem":{"title":"$:/plugins/kookma/utility/macro/lorem","author":"Jeremy Ruston","created":"20190316214433792","description":"creates few paragraphs of dumy text","modified":"20200123200937645","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define .lorem(np:1)\n<$list filter=\"[range[1,$np$]]\" variable=null>\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n<$list filter=\"[<__np__>!match[1]]\">

    \n\n\\end"},"$:/plugins/kookma/utility/macro/show-macro":{"title":"$:/plugins/kookma/utility/macro/show-macro","created":"20190317174614898","modified":"20201130152604002","tags":"$:/tags/Macro","type":"application/x-tiddler","text":"\\define disp-macro-contents(p)\n

    \\define<$text text=<<__p__>> />\\end
    \n\\end\n\n\\define show-macro(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<> >\n<$macrocall $name='find'\n text={{{[get[text]]}}}\n begin=\"\\define\"\n end=\"\\end\"\n output=\"disp-macro-contents\"/>\n\n\\end"},"$:/plugins/kookma/utility/macro/simple-navigation":{"title":"$:/plugins/kookma/utility/macro/simple-navigation","created":"20190823062102008","description":"create a new tiddler tagged with $:/tags/Viewtemplate and call simple-navigation with desired tag","modified":"20200126151115600","tags":"$:/tags/Macro","type":"application/x-tiddler","text":"\\define simple-navigation(tag:\"demo\", class, close:\"no\")\n<$list filter=\"[all[current]tag[$tag$]]\">\n
    \n<$list filter=\"[tag[$tag$]before]\" variable=\"prevTiddler\">\n<$button to=<> tooltip=<> class=\"tc-btn-invisible $class$\">previous\n<$list filter=\"[<__close__>match[yes]]\" variable=ignore><$action-sendmessage $message=\"tm-close-tiddler\" $param=<>/>\n\n\n<$list filter=\"[tag[$tag$]after] [tag[$tag$]before] +[count[]] -1\" variable=ignore>|\n<$list filter=\"[tag[$tag$]after]\" variable=\"nextTiddler\">\n<$button to=<> tooltip=<> class=\"tc-btn-invisible $class$\">next\n<$list filter=\"[<__close__>match[yes]]\" variable=ignore><$action-sendmessage $message=\"tm-close-tiddler\" $param=<>/>\n\n\n
    \n\n\\end"},"$:/plugins/kookma/utility/macro/transclusion":{"title":"$:/plugins/kookma/utility/macro/transclusion","created":"20190930050545887","modified":"20200324201449425","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define code(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<> >\n<$codeblock language={{{[get[type]]}}} code={{{[get[text]]}}}/>\n\n\\end\n\n\\define code-link(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<> >\n<$link to=<>/>\n<$codeblock language={{{[get[type]]}}} code={{{[get[text]]}}}/>\n\n\\end\n\n\\define content(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<> >\n<$link to=<>/>\n<$transclude tiddler=<> mode=\"block\"/>\n\n\\end\n\n\\define fields(tiddler)\n\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<> >\n<$link to=<>/>\n<$list filter='[fields[]] -[enlist[text title created modified tags creator modifier]] +[limit[1]]' variable=\"ignore\">\n\n<$list filter='[fields[]] -[enlist[text title created modified tags creator modifier]]' variable=\"fld\">\n\n\n
    <>:<$text text={{{[get]}}}/>
    \n\n\n\\end\n\n\\define description(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<> >\n
    <$link to=<>/>
    <$transclude tiddler=<> field=\"description\"/>
    \n\n\\end"},"$:/plugins/kookma/utility/macro/unique-id":{"title":"$:/plugins/kookma/utility/macro/unique-id","author":"Jeremy Ruston","created":"20200210134515855","description":"creates a unique id for permanent state tiddler","modified":"20200210134635362","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define create_id_from_timedata(prefix) $prefix$-<>\n\n\\define unique-id(prefix:id)\n<$wikify name=id text=<> >\n<$button tooltip=\"create unique id\" class=\"tc-btn-invisible\" message=\"tm-copy-to-clipboard\" param=<> >{{$:/core/images/copy-clipboard}} \n <$text text=<>/>\n\n\\end\n"},"$:/plugins/kookma/utility/macro/wikitext-macros":{"title":"$:/plugins/kookma/utility/macro/wikitext-macros","created":"20150117184156000","modified":"20200123200937571","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define wikitext-example(src)\n
    \n\n<$macrocall $name=\"copy-to-clipboard-above-right\" src=<<__src__>>/>\n\n```\n$src$\n```\n\nThat renders as:\n\n$src$\n\n... and the underlying HTML is:\n\n$$$text/vnd.tiddlywiki>text/html\n$src$\n$$$\n
    \n\\end\n\n\\define wikitext-example-without-html(src)\n
    \n\n<$macrocall $name=\"copy-to-clipboard-above-right\" src=<<__src__>>/>\n\n```\n$src$\n```\n\nThat renders as:\n\n$src$\n
    \n\\end\n"},"$:/plugins/kookma/utility/readme":{"title":"$:/plugins/kookma/utility/readme","created":"20190930044127683","modified":"20210520140912417","tags":"","type":"text/vnd.tiddlywiki","text":"; Utility plugin\nThe utility plugin objective is to provide set of tools for authors. These tools includes simple transclusions, show raw contents of tiddlers, author tools, wikitext macros, show fields in view mode, and much more!\n\n; Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Utility/\n* Code: https://github.com/kookma/TW-Utility\n"},"$:/plugins/kookma/utility/snippet/macrocall-wikitext-example":{"title":"$:/plugins/kookma/utility/snippet/macrocall-wikitext-example","caption":"Wikitext-example macrocall","created":"20181023161605661","modified":"20200123200937811","tags":"$:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<$macrocall $name=\"wikitext-example-without-html\" \nsrc=\"\"\"\n\"\"\"/>"},"$:/plugins/kookma/utility/snippet/wikitext-macro":{"title":"$:/plugins/kookma/utility/snippet/wikitext-macro","caption":"Wikitext-example","created":"20181007154126921","modified":"20200123200937797","tags":"$:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/kookma/utility/styles/doc-svg":{"title":"$:/plugins/kookma/utility/styles/doc-svg","text":".kk-doc svg{\nwidth: 1.2em;\nheight: 1.2em;\nvertical-align: middle;}\n\n.kk-ut-txt{\nmin-width:50%}","created":"20190722142023425","modified":"20200322091202744","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/utility/styles/tw-version":{"title":"$:/plugins/kookma/utility/styles/tw-version","text":"
    /* TW-version added to site title */\n.tc-site-title:before {\n  content:\"TW <>\";\n  position:absolute;\n  margin-top:-1.9em;\n  color:silver;\n  font-size:13px;\n}\n
    ","created":"20180906042308596","modified":"20200325164200123","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/utility/styles/wikitext-macro":{"title":"$:/plugins/kookma/utility/styles/wikitext-macro","text":".doc-example { margin: 1em 0; padding: 0.8em 0; } .doc-example:hover { background-color: #f7f7f9; } .doc-example ul { margin-bottom: 0; padding-bottom: 0; margin-top: 0.2em; } .doc-example pre:first-child { margin-top: 0; } .doc-example-result { border-left: 5px solid #bbb; border-right: 5px solid #bbb; margin-left: 0; margin-right: 0; padding: 0 10px; } .doc-example-result ul { margin-left: 0; padding-left: 10px; } .doc-example-result ol { margin-left: 0; padding-left: 20px; }","created":"20180909042646908","modified":"20200325141241379","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/utility/ui/Buttons/ViewFields":{"title":"$:/plugins/kookma/utility/ui/Buttons/ViewFields","caption":"{{$:/plugins/kookma/utility/images/view-fields.svg}} {{$:/language/Buttons/Utility/Caption}}","created":"20181010190533135","description":"Show a toggle button for view fields","list-before":"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette","modified":"20210520141427208","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\define stateTid() $:/state/utility/view-fields\n\n\\define show-fields-button()\n\\whitespace trim\n\n<$reveal type=\"nomatch\" state=<> text=\"show\" default=\"hide\">\n <$button set=<> setTo=\"show\" \n\t tooltip={{$:/language/Buttons/Utility/Hint}} \n\t\t\t\t\t aria-label={{$:/language/Buttons/Utility/Caption}} \n\t\t\t\t\t class=<> >\n <>\n \n\n\n<$reveal type=\"match\" state=<> text=\"show\" default=\"hide\">\n <$button set=<> setTo=\"hide\" \n tooltip={{$:/language/Buttons/Utility/Hint}} \n\t\t\t\t aria-label={{$:/language/Buttons/Utility/Caption}} \n\t\t\t\t class=\"\"\"$(tv-config-toolbar-class)$ tc-selected\"\"\">\n <>\n \n\n\\end\n\n\\define disp-on-pagecontrols() \n<$list filter=\"[prefix[yes]]\">\n{{$:/plugins/kookma/utility/images/view-fields.svg}} \n\n<$list filter=\"[prefix[yes]]\">\n<$text text={{$:/language/Buttons/Utility/Caption}}/>\n\n\\end\n\n\n<>"},"$:/plugins/kookma/utility/ui/ControlPanel/Settings":{"title":"$:/plugins/kookma/utility/ui/ControlPanel/Settings","caption":"Utility","created":"20190930212747824","list-after":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20210518040658129","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"These settings let you customise the behaviour of Utility plugin.\n\n---\n\n;Show Utility setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar\n\n;Options\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/ui/Buttons/ViewFields\" tag=\"$:/tags/PageControls\"> Enable show fields\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/styles/tw-version\" tag=\"$:/tags/Stylesheet\"> Show the Tiddlywiki version badge\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content\" tag=\"$:/tags/ViewTemplate\"> Display the tiddler raw content
    \n<$list filter=\"[[$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content]tags[]search[$:/tags/ViewTemplate]]\" variable=ignore>\nFilters to reveal tiddlers content   <$edit-text tiddler=\"$:/plugins/kookma/utility/config/reveal-tags\" field=\"text\" tag=input defualt=\"\" placeholder=\"enter a filter e.g. [tag[myTag]] \" class=\"kk-ut-txt\"/>\n
    \n\n"},"$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content":{"title":"$:/plugins/kookma/utility/viewtemplate/display-tiddler-raw-content","created":"20181212041419278","description":"this view template displays the content of global macro tiddlers","modified":"20200126142626441","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$set name=\"revealFilters\" tiddler=\"$:/plugins/kookma/utility/config/reveal-tags\" field=text>\n<$list filter=\"[all[current]tag[show-content]]\n [all[current]tag[$:/tags/EditTemplate]]\n [all[current]tag[$:/tags/ViewTemplate]] \n [all[current]tag[$:/tags/Macro]]\n [all[current]subfilter] +[limit[1]]\">\n<$codeblock code={{!!text}} language=\"xml\" />\n\n\n\n"},"$:/plugins/kookma/utility/viewtemplate/view-fields":{"title":"$:/plugins/kookma/utility/viewtemplate/view-fields","created":"20181010162537613","description":"Toggle field handling in view mode","list-after":"$:/core/ui/ViewTemplate/tags","modified":"20210520132401305","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=match stateTiddler stateTitle=\"$:/state/utility/view-fields\" stateField=text default=\"hide\" text=show>\n<$vars newFieldNameTiddler=<>\nnewFieldValueTiddler=<> \nsearchListState=<> \nstoreTitle=<> \n>\n<$transclude tiddler=\"$:/core/ui/EditTemplate/fields\"/>\n\n"}}} \ No newline at end of file +{"tiddlers":{"$:/config/ShortcutInfo/customize-ui":{"title":"$:/config/ShortcutInfo/customize-ui","created":"20190912083358612","modified":"20220718184143379","tags":"","type":"text/vnd.tiddlywiki","text":"Show customize UI dialog"},"$:/config/ShortcutInfo/switch-reader-mode":{"title":"$:/config/ShortcutInfo/switch-reader-mode","created":"20200315203528401","modified":"20220717145854499","type":"text/vnd.tiddlywiki","text":"Toggle the reader mode"},"$:/config/shortcuts/customize-ui":{"title":"$:/config/shortcuts/customize-ui","created":"20191121050813703","modified":"20220719060947163","type":"text/vnd.tiddlywiki","text":"ctrl-shift-Period"},"$:/config/shortcuts/switch-reader-mode":{"title":"$:/config/shortcuts/switch-reader-mode","created":"20200315203409995","modified":"20220717145840238","type":"text/vnd.tiddlywiki","text":"ctrl-shift-Slash"},"$:/plugins/kookma/utility/customize-ui/actions":{"title":"$:/plugins/kookma/utility/customize-ui/actions","created":"20190912082519234","key":"((customize-ui))","modified":"20220718190413606","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/kookma/utility/customize-ui/modal\" />"},"$:/plugins/kookma/utility/customize-ui/modal":{"title":"$:/plugins/kookma/utility/customize-ui/modal","caption":"Customize UI elements","created":"20220718180953381","modified":"20220719061637220","tags":"","type":"text/vnd.tiddlywiki","text":"''Show/hide selected UI elements''\n\n
    \n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]] [all[shadows+tiddlers]tag[$:/tags/Utility/UI]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" class=\"tc-vertical\" explicitState=\"$:/state/tabs/controlpanel/toolbars-1345989671\"/>\n
    "},"$:/plugins/kookma/utility/customize-ui/sidebar-elements":{"title":"$:/plugins/kookma/utility/customize-ui/sidebar-elements","caption":"Sidebar elements","created":"20220718171410198","modified":"20220718190032126","tags":"$:/tags/Utility/UI","type":"text/vnd.tiddlywiki","text":"Choose which elements are displayed in right sidebar. \n\n<$checkbox tiddler=\"$:/core/ui/TopBar/menu\" tag=\"$:/tags/TopRightBar\"/> Show right sidebar toggle button
    \n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/search\" tag=\"$:/tags/SideBarSegment\"/> Show search bar
    \n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/tabs\" tag=\"$:/tags/SideBarSegment\"/> Show sidebar tabs
    \n"},"$:/plugins/kookma/utility/customize-ui/sidebar-tabs":{"title":"$:/plugins/kookma/utility/customize-ui/sidebar-tabs","caption":"Sidebar tabs","created":"20220718171455342","list-after":"$:/plugins/kookma/utility/customize-ui/sidebar-elements","modified":"20220718190032129","tags":"$:/tags/Utility/UI","type":"text/vnd.tiddlywiki","text":"Choose which tabs are displayed in right sidebar tabs. \n\n<$checkbox tiddler=\"$:/core/ui/SideBar/Open\" tag=\"$:/tags/SideBar\"/> Show Open tab
    \n<$checkbox tiddler=\"$:/core/ui/SideBar/Recent\" tag=\"$:/tags/SideBar\"/> Show Recent tab
    \n<$checkbox tiddler=\"$:/core/ui/SideBar/Tools\" tag=\"$:/tags/SideBar\"/> Show Tools tab
    \n<$checkbox tiddler=\"$:/core/ui/SideBar/More\" tag=\"$:/tags/SideBar\"/> Show More tab
    "},"$:/plugins/kookma/utility/customize-ui/site-option":{"title":"$:/plugins/kookma/utility/customize-ui/site-option","caption":"Site options","created":"20220718171056778","list-before":"","modified":"20220718190055392","tags":"$:/tags/Utility/UI","type":"text/vnd.tiddlywiki","text":"Choose which elements are displayed for site. \n\n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/site-title\" tag=\"$:/tags/SideBarSegment\"/> Show site title
    \n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/site-subtitle\" tag=\"$:/tags/SideBarSegment\"/> Show site subtitle
    \n<$checkbox tiddler=\"$:/core/ui/SideBarSegments/page-controls\" tag=\"$:/tags/SideBarSegment\"/> Show page controls
    "},"$:/plugins/kookma/utility/history":{"title":"$:/plugins/kookma/utility/history","created":"20190930044127683","modified":"20220802180348579","tags":"","type":"text/vnd.tiddlywiki","text":"* ''2.3.0'' -- 2022.08.02 -- new macros, update to Tiddlywiki 5.2.3\n* ''2.1.6'' -- 2022.07.06 -- bug fixes, update to Tiddlywiki 5.2.2\n* ''2.1.6'' -- 2021.05.20 -- bug fixes, new state tiddler for view fields\n* ''2.1.4'' -- 2021.04.09 -- new viewtemplate for show fields used\n* ''2.1.2'' -- 2020.04.03 -- page control button issue fixed\n* ''2.1.1'' -- 2020.03.25 -- page control button improved and minor issues in css fixed\n* ''2.1.0'' -- 2020.03.23 -- new transclusion output for fields macro and disable drag and drop globally\n* ''2.0.0'' -- 2020.03.16 -- new author-reader mode switch\n* ''1.8.0'' -- 2020.03.13 -- admin panel added\n* ''1.7.0'' -- 2020.02.23 -- show tiddler raw content including the macros on demand\n* ''1.0.0'' -- 2019.10.13 -- stable release\n* ''0.5.0'' -- 2019.10.10 -- first beta release"},"$:/plugins/kookma/utility/images/view-fields.svg":{"title":"$:/plugins/kookma/utility/images/view-fields.svg","created":"20181010193706723","modified":"20200123200937680","tags":"","type":"text/vnd.tiddlywiki","text":""},"$:/language/Buttons/Utility/Caption":{"title":"$:/language/Buttons/Utility/Caption","created":"20190930171340202","modified":"20210520135718612","tags":"","type":"text/vnd.tiddlywiki","text":"show fields"},"$:/language/Buttons/Utility/Hint":{"title":"$:/language/Buttons/Utility/Hint","created":"20190930171301401","modified":"20210520135718597","tags":"","type":"text/vnd.tiddlywiki","text":"Show fields"},"$:/plugins/kookma/utility/license":{"title":"$:/plugins/kookma/utility/license","created":"20190930044127683","modified":"20220712151015279","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2019-2022 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<\n"},"$:/plugins/kookma/utility/macros/doc-svg":{"title":"$:/plugins/kookma/utility/macros/doc-svg","created":"20190722141637145","modified":"20220710131718333","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define doc-svg(tiddler:\"\", color:\"\")\n<$transclude tiddler=<<__tiddler__>> />\n\\end"},"$:/plugins/kookma/utility/macros/docit":{"title":"$:/plugins/kookma/utility/macros/docit","created":"20220710131905827","modified":"20220710170129455","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define docit()\n
    \n''To Be Documented''. Created on <$view field=created format=date template=\"YYYY.0MM.0DD\"/>\n
    \n\\end\n\n\n"},"$:/plugins/kookma/utility/macros/find":{"title":"$:/plugins/kookma/utility/macros/find","created":"20181213121411187","modified":"20220710131718383","tags":"$:/tags/Macro","type":"application/x-tiddler","text":"\\define find(text, begin, end, output:\"simple\", mode:\"all\")\n<$vars \n fulltext=<<__text__>>\n start=<<__begin__>>\n stop=<<__end__>>\n output-macro=<<__output__>>\n>\n<$list variable=\"p1\" filter=\"[splitbefore]\">\n<$list variable=\"p2\" filter=\"[removeprefix]\">\n<$list variable=\"p3\" filter=\"[splitbeforeremovesuffix]\">\n<$macrocall $name=<> p=<> />\n<$reveal type=\"match\" text=\"all\" default=<<__mode__>> >\n<$macrocall $name=\"find\"\n text={{{[removeprefixremoveprefix]}}}\n begin=<>\n end=<>\n output=<>\n/>\n\n\n\n\n\n\\end\n\n\\define simple(p)\n<$text text=<<__p__>> />\n\\end\n\n\\define simple-list(p)\n
  • <$text text=<<__p__>>/>
  • \n\\end\n\n\n!! Summary\n* `find` is a macro to search a text and find all snippets delimited between values of `begin` and `end` delimiters\n* `simple` is a macro used by `find` to show the output in a simple format\n* `simple-list` is a macro used by `find` to show the output in a simple list format. The ordered and unordered list\ncan be used if the call to `find` macro wrapped in a `div` with suitable type e.g `ol` or `ul`.","\\define find(text, begin, end, output":"\"simple\", mode:\"all\")"},"$:/plugins/kookma/utility/macros/linkify":{"title":"$:/plugins/kookma/utility/macros/linkify","created":"20220710131053669","modified":"20220710131718430","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define linkify(tiddler:\"\", field:\"caption\")\n<$link to=<<__tiddler__>> >\n<$view tiddler=<<__tiddler__>> field=<<__field__>> >\n<$view tiddler=<<__tiddler__>> field=\"title\" />\n\n\n\\end"},"$:/plugins/kookma/utility/macros/lorem":{"title":"$:/plugins/kookma/utility/macros/lorem","author":"Jeremy Ruston","created":"20190316214433792","description":"creates few paragraphs of dumy text","modified":"20220710131718478","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define .lorem(np:1)\n<$list filter=\"[range[1,$np$]]\" variable=null>\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n<$list filter=\"[<__np__>!match[1]]\">

    \n\n\\end"},"$:/plugins/kookma/utility/macros/reveal-code":{"title":"$:/plugins/kookma/utility/macros/reveal-code","created":"20220711163148385","modified":"20220722055638530","tags":"","type":"text/vnd.tiddlywiki","text":"\\define reveal-tiddler-code(title:\"\", status:\"\")\n

    \n$title$\n<$macrocall $name=\"code\" language=xml src={{!!text}} />\n
    \n\\end\n\n<$set name=revealFilter tiddler=\"$:/config/Utility/Reveal-code-filter\" field=text>\n<$let systemFilter={{{ [[$:/config/ViewTemplateBodyFilters/system]get[text]split[+]butlast[]] }}}\n showFilter =\"[all[current]tag[show-content]]\n [all[current]tag[$:/tags/EditTemplate]]\n [all[current]tag[$:/tags/ViewTemplate]] \n [all[current]tag[$:/tags/Macro]!prefix[$:/core]]\n [all[current]subfilter]\"\n stylesFilter=\"[all[current]tag[$:/tags/Stylesheet]] [type[text/css]]\"\n\t\t\thasCodebody =\"[all[current]field:code-body[yes]]\"\n>\n\n<$list filter=\"[all[current]] -[subfilter] -[subfilter] -[subfilter] -[subfilter] +[limit[1]]\">\n<>\n\n\n<$list filter=\"[subfilter] +[limit[1]]\">\n <>\n\n\n"},"$:/plugins/kookma/utility/macros/show-macro":{"title":"$:/plugins/kookma/utility/macros/show-macro","created":"20190317174614898","modified":"20220710131718525","tags":"$:/tags/Macro","type":"application/x-tiddler","text":"\\define show-macro(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<> >\n<$macrocall $name='find'\n text={{{[get[text]]}}}\n begin=\"\\define\"\n end=\"\\end\"\n output=\"disp-macro-contents\"/>\n\n\\end\n\n\\define disp-macro-contents(p)\n
    \\define<$text text=<<__p__>> />\\end
    \n\\end"},"$:/plugins/kookma/utility/macros/simple-navigation":{"title":"$:/plugins/kookma/utility/macros/simple-navigation","created":"20190823062102008","modified":"20220712171248838","tags":"$:/tags/Macro","type":"application/x-tiddler","text":"\\define simple-navigation(tag:\"demo\", class, close:\"no\")\n<$list filter=\"[all[current]tag[$tag$]]\">\n
    \n<$list filter=\"[tag[$tag$]before]\" variable=\"prevTiddler\">\n<$button to=<> tooltip=<> class=\"tc-btn-invisible $class$\">previous\n<$list filter=\"[<__close__>match[yes]]\" variable=ignore><$action-sendmessage $message=\"tm-close-tiddler\" $param=<>/>\n\n\n<$list filter=\"[tag[$tag$]after] [tag[$tag$]before] +[count[]] -1\" variable=ignore>|\n<$list filter=\"[tag[$tag$]after]\" variable=\"nextTiddler\">\n<$button to=<> tooltip=<> class=\"tc-btn-invisible $class$\">next\n<$list filter=\"[<__close__>match[yes]]\" variable=ignore><$action-sendmessage $message=\"tm-close-tiddler\" $param=<>/>\n\n\n
    \n\n\\end"},"$:/plugins/kookma/utility/macros/simple-transclusion":{"title":"$:/plugins/kookma/utility/macros/simple-transclusion","created":"20190930050545887","modified":"20220713134030839","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define code(src, language, caption:\"\")\n<$let code = {{{ [<__src__>is[tiddler]get[text]] [<__src__>is[blank]then{!!text}else<__src__>] }}} >\n
    \n<$list filter=\"[<__caption__>!is[blank]]\">
    >>$caption$
    \n
    \n<$button class=\"tc-btn-invisible kk-utility-copy-btn\"\n style=\"\" message=\"tm-copy-to-clipboard\"\n param=<>\n tooltip={{$:/language/Buttons/CopyToClipboard/Hint}} >\n{{$:/core/images/copy-clipboard}}\n\n<$codeblock language=<<__language__>> code=<> />\n
    \n
    \n\n\\end\n\n\n\\define code-link(tiddler, caption)\n
    \n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<> >\n\n<$link to=<>/>\n\n<$macrocall $name=\"code\" language={{{[get[type]]}}} src={{{[get[text]]}}} caption=<<__caption__>>/>\n\n
    \n\\end\n\n\\define content(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<> >\n<$link to=<>/>\n<$transclude tiddler=<> mode=\"block\"/>\n\n\\end\n\n\\define fields(tiddler)\n\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<> >\n<$link to=<>/>\n<$list filter='[fields[]] -[enlist[text title created modified tags creator modifier]] +[limit[1]]' variable=\"ignore\">\n\n<$list filter='[fields[]] -[enlist[text title created modified tags creator modifier]]' variable=\"fld\">\n\n\n
    <>:<$text text={{{[get]}}}/>
    \n\n\n\\end\n\n\\define description(tiddler)\n<$set name=selected-tiddler value=\"$tiddler$\" emptyValue=<> >\n
    <$link to=<>/>
    <$transclude tiddler=<> field=\"description\"/>
    \n\n\\end"},"$:/plugins/kookma/utility/macros/unique-id":{"title":"$:/plugins/kookma/utility/macros/unique-id","author":"Jeremy Ruston","created":"20200210134515855","description":"creates a unique id for permanent state tiddler","modified":"20220710131718668","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define create_id_from_timedata(prefix) $prefix$-<>\n\n\\define unique-id(prefix:id)\n<$wikify name=id text=<> >\n<$button tooltip=\"create unique id\" class=\"tc-btn-invisible\" message=\"tm-copy-to-clipboard\" param=<> >{{$:/core/images/copy-clipboard}} \n <$text text=<>/>\n\n\\end\n"},"$:/plugins/kookma/utility/macros/wikitext-macros":{"title":"$:/plugins/kookma/utility/macros/wikitext-macros","created":"20150117184156000","modified":"20220712071109950","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define wikitext-example(src)\n
    \n\n<$macrocall $name=\"copy-to-clipboard-above-right\" src=<<__src__>>/>\n\n```\n$src$\n```\n\nThat renders as:\n\n$$$text/vnd.tiddlywiki\n$src$\n$$$\n\n... and the underlying HTML is:\n\n$$$text/vnd.tiddlywiki>text/html\n$src$\n$$$\n
    \n\\end\n\n\\define wikitext-example-without-html(src)\n
    \n\n<$macrocall $name=\"copy-to-clipboard-above-right\" src=<<__src__>>/>\n\n```\n$src$\n```\n\nThat renders as:\n\n$$$text/vnd.tiddlywiki\n$src$\n$$$\n
    \n\\end\n\n"},"$:/plugins/kookma/utility/reader-mode/styles":{"title":"$:/plugins/kookma/utility/reader-mode/styles","created":"20220714070826639","modified":"20220720183739439","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"\n\\define button-selector(title)\nbutton.$title$, .tc-drop-down button.$title$, div.$title$\n\\end\n\n\\define hide-edit-controls()\n<>,\n<>,\n<>,\n<>,\n<>,\n<>,\n<>,\n<>,\n<>,\n<>{\n\tdisplay: none;\n}\n\\end\n\n\\define hide-user-selected-controls()\n<>,\n<>,\n<>,\n<>,\n<>,\n<>,\n<> {\n\tdisplay: none;\n}\n\\end\n\n<$reveal state=\"$:/status/IsReaderMode\" type=\"match\" text=\"yes\" default=\"no\"> \n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n<>\n<>\n"},"$:/plugins/kookma/utility/reader-mode/switch-actions":{"title":"$:/plugins/kookma/utility/reader-mode/switch-actions","created":"20200315203327216","key":"((switch-reader-mode))","modified":"20220718185241018","tags":"$:/tags/KeyboardShortcut","type":"text/vnd.tiddlywiki","text":"\n<$action-listops $tiddler=\"$:/status/IsReaderMode\" $field=text $subfilter=\"+[toggle[yes]]\"/>\n\n\n\n<$list filter=\"$:/core/ui/SideBar/Tools $:/core/ui/SideBar/More\">\n<$action-listops $tiddler=<> $field=tags $subfilter=\"+[toggle[$:/tags/SideBar]]\"/>\n\n\n\n<$list filter=\"\"\"\n $:/plugins/kookma/trashbin/sidebar-tab \n $:/plugins/kookma/favorites/sidebar-tab\n +[is[shadow]]\n \"\"\">\n<$action-listops $tiddler=<> $field=tags $subfilter=\"+[toggle[$:/tags/SideBar]]\"/>\n\n\n\n\n\n<$action-listops $tiddler=\"$:/config/DragAndDrop/Enable\" $field=text $subfilter=\"+[toggle[no]]\"/>\n"},"$:/plugins/kookma/utility/readme":{"title":"$:/plugins/kookma/utility/readme","created":"20190930044127683","modified":"20220719182236860","tags":"","type":"text/vnd.tiddlywiki","text":"; Utility plugin\nThe utility plugin objective is to provide set of tools for authors. These tools includes simple transclusions, show raw contents of tiddlers, reader mode, wikitext macros, show fields in view mode, linkify, code, docit, and much more!\n\n; Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Utility/\n* Code: https://github.com/kookma/TW-Utility\n"},"$:/plugins/kookma/utility/snippet/code-macro":{"title":"$:/plugins/kookma/utility/snippet/code-macro","caption":"Code","created":"20220712171754435","modified":"20220720193631856","tags":"$:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/kookma/utility/snippet/macrocall-wikitext-example":{"title":"$:/plugins/kookma/utility/snippet/macrocall-wikitext-example","caption":"Wikitext-example macrocall","created":"20181023161605661","modified":"20200123200937811","tags":"$:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<$macrocall $name=\"wikitext-example-without-html\" \nsrc=\"\"\"\n\"\"\"/>"},"$:/plugins/kookma/utility/snippet/wikitext-macro":{"title":"$:/plugins/kookma/utility/snippet/wikitext-macro","caption":"Wikitext-example","created":"20181007154126921","modified":"20200123200937797","tags":"$:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/kookma/utility/styles/code":{"title":"$:/plugins/kookma/utility/styles/code","text":"figure.kk-utility-fig {\n\t/* for future use*/\n\tmargin-left:0;\n\tmargin-right:0;\n}\n\n/*figcaption structure */\nfigure.kk-utility-fig figcaption {\n\tpadding: 4.5px 7.5px 7.5px 7.5px;;\n\tborder-top-left-radius: 3px;\n\tborder-top-right-radius: 3px;\n\tmargin-bottom: -3px;\n}\n\n/* figcaption skin: colors */\nfigure.kk-utility-fig figcaption{\n\topacity: 0.7;\n\tbackground-color:black;\n\tcolor:white;\n}\n\n/* correct the style of codeblock pre element */\nfigure.kk-utility-fig pre{\n\tmargin-top:0;\n\t/*\tused to have inner top border straight */\n\t/*\tborder-top-left-radius: 0; \n\tborder-top-right-radius: 0; */\n}\n\n\n/* the code block and copy-to-clipboard button */\n.kk-utility-code{\n\tposition: relative;\n}\n\n.kk-utility-copy-btn{\n\tposition: absolute;\n\ttop: 3px;\n\tright: 5px;\n}","created":"20220712041153594","modified":"20220712081206928","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/utility/styles/doc-svg":{"title":"$:/plugins/kookma/utility/styles/doc-svg","text":".kk-doc svg{\nwidth: 1.2em;\nheight: 1.2em;\nvertical-align: middle;}\n\n.kk-ut-txt{\nmin-width:50%}","created":"20190722142023425","modified":"20220713134043559","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/utility/styles/main":{"title":"$:/plugins/kookma/utility/styles/main","text":"/* view feilds area */\n.kk-ut-viewfields { /* prevents overlapping with other elements */\n\tmargin-top: 12px;\n\tmargin-bottom: 12px;\n}\n","created":"20220708194011846","modified":"20220708194314421","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/utility/styles/reveal-code":{"title":"$:/plugins/kookma/utility/styles/reveal-code","text":"details.kk-utility-details summary {\n\topacity:0.2;\n\tfont-size:0.9em;\n\tdisplay: inline;\n\tcursor: pointer;\n\tpadding: 10px;\n\ttransition: 0.3s;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\ndetails.kk-utility-details summary:hover{\n\n}\ndetails.kk-utility-details[open] > summary {\n\topacity:1;\n}","created":"20220710174738520","modified":"20220720090927269","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/utility/styles/tw-version":{"title":"$:/plugins/kookma/utility/styles/tw-version","created":"20180906042308596","modified":"20220708194146038","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"/* TW-version added to site title */\n.tc-site-title:before {\n content:\"TW <>\";\n position:absolute;\n margin-top:-1.9em;\n color:silver;\n font-size:13px;\n}"},"$:/plugins/kookma/utility/styles/wikitext-macro":{"title":"$:/plugins/kookma/utility/styles/wikitext-macro","text":".doc-example { margin: 1em 0; padding: 0.8em 0; } .doc-example:hover { background-color: #f7f7f9; } .doc-example ul { margin-bottom: 0; padding-bottom: 0; margin-top: 0.2em; } .doc-example pre:first-child { margin-top: 0; } .doc-example-result { border-left: 5px solid #bbb; border-right: 5px solid #bbb; margin-left: 0; margin-right: 0; padding: 0 10px; } .doc-example-result ul { margin-left: 0; padding-left: 10px; } .doc-example-result ol { margin-left: 0; padding-left: 20px; }","created":"20180909042646908","modified":"20200325141241379","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/utility/ui/Buttons/ViewFields":{"title":"$:/plugins/kookma/utility/ui/Buttons/ViewFields","caption":"{{$:/plugins/kookma/utility/images/view-fields.svg}} {{$:/language/Buttons/Utility/Caption}}","created":"20181010190533135","description":"Show a toggle button for view fields","list-before":"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette","modified":"20220706064239696","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\define stateTid() $:/state/utility/view-fields\n\\define show-fields-button()\n\\whitespace trim\n<$reveal type=\"nomatch\" state=<> text=\"show\" default=\"hide\" tag=span>\n <$button set=<> setTo=\"show\" \n\t tooltip={{$:/language/Buttons/Utility/Hint}} \n\t\t\t\t\t aria-label={{$:/language/Buttons/Utility/Caption}} \n\t\t\t\t\t class=<>\n >\n <>\n \n\n<$reveal type=\"match\" state=<> text=\"show\" default=\"hide\" tag=span>\n <$button set=<> setTo=\"hide\" \n tooltip={{$:/language/Buttons/Utility/Hint}} \n\t\t\t\t aria-label={{$:/language/Buttons/Utility/Caption}} \n\t\t\t\t class=\"\"\"$(tv-config-toolbar-class)$ tc-selected\"\"\"\n >\n <>\n \n\n\\end\n\n\\define disp-on-pagecontrols() \n<$list filter=\"[prefix[yes]]\">\n{{$:/plugins/kookma/utility/images/view-fields.svg}} \n\n<$list filter=\"[prefix[yes]]\">\n<$text text={{$:/language/Buttons/Utility/Caption}}/>\n\n\\end\n\n<>"},"$:/plugins/kookma/utility/ui/ControlPanel/Settings":{"title":"$:/plugins/kookma/utility/ui/ControlPanel/Settings","caption":"Utility","created":"20190930212747824","list-after":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20220720184448685","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"These settings let you customise the behaviour of Utility plugin.\n\n---\n\n;Show Utility setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar\n\n;Options\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/ui/Buttons/ViewFields\" tag=\"$:/tags/PageControls\"> Enable show fields\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/styles/tw-version\" tag=\"$:/tags/Stylesheet\"> Show the Tiddlywiki version badge\n:<$checkbox tiddler=\"$:/plugins/kookma/utility/viewtemplates/reveal-code\" tag=\"$:/tags/ViewTemplate\"> Display code button at tiddler bottom
    \n<$list filter=\"[[$:/plugins/kookma/utility/viewtemplates/reveal-code]tag[$:/tags/ViewTemplate]]\" variable=ignore>\nFilter to show tiddler code (default to open)   <$edit-text tiddler=\"$:/config/Utility/Reveal-code-filter\" field=\"text\" tag=input default=\"\" placeholder=\"enter a filter e.g. [tag[myTag]] \" class=\"kk-ut-txt\"/>\n
    \n\n;Customize UI elements\n: [[Show/hide selected UI elements|$:/plugins/kookma/utility/customize-ui/modal]]"},"$:/plugins/kookma/utility/viewtemplates/reveal-code":{"title":"$:/plugins/kookma/utility/viewtemplates/reveal-code","created":"20211202063626412","list-after":"$:/core/ui/ViewTemplate/body","modified":"20220801185424995","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<$transclude tiddler=\"$:/plugins/kookma/utility/macros/reveal-code\" />\n\n"},"$:/plugins/kookma/utility/viewtemplates/view-fields":{"title":"$:/plugins/kookma/utility/viewtemplates/view-fields","created":"20181010162537613","description":"Toggle field handling in view mode","list-before":"$:/core/ui/ViewTemplate/body","modified":"20220720142640449","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=match stateTiddler stateTitle=\"$:/state/utility/view-fields\" stateField=text default=\"hide\" text=show tag=div class=\"kk-ut-viewfields\">\n<$importvariables filter=\"[[$:/core/ui/EditTemplate]]\">\n\n<$vars \n newFieldNameTiddler=<>\n newFieldValueTiddlerPrefix=<>\n newFieldNameInputTiddler=<>\n newFieldNameSelectionTiddler=<>\n searchListState=<> \n storeTitle=<> \n>\n<$transclude tiddler=\"$:/core/ui/EditTemplate/fields\"/>\n\n\n\n\n"}}} \ No newline at end of file diff --git a/tiddlers/$__plugins_kookma_utility.json.meta b/tiddlers/$__plugins_kookma_utility.json.meta index 77d4511..ed574ad 100644 --- a/tiddlers/$__plugins_kookma_utility.json.meta +++ b/tiddlers/$__plugins_kookma_utility.json.meta @@ -1,13 +1,11 @@ author: Mohammad Rahmani -core-version: >=5.1.24 -created: 20211017131654739 +core-version: >=5.2.3 dependents: description: Small tools for authors and developers list: readme license history -modified: 20211017131654739 name: Utility plugin-type: plugin source: https://github.com/kookma/TW-Utility title: $:/plugins/kookma/utility type: application/json -version: 2.1.6 \ No newline at end of file +version: 2.3.0 \ No newline at end of file diff --git a/tiddlers/$__plugins_linonetwo_copy-on-select.json b/tiddlers/$__plugins_linonetwo_copy-on-select.json index 05396c5..08f749b 100644 --- a/tiddlers/$__plugins_linonetwo_copy-on-select.json +++ b/tiddlers/$__plugins_linonetwo_copy-on-select.json @@ -1 +1 @@ -{"tiddlers":{"$:/plugins/linonetwo/copy-on-select/copy-on-select.html":{"title":"$:/plugins/linonetwo/copy-on-select/copy-on-select.html","text":"\n","type":"text/html","created":"20200411065413157","modified":"20200414150804034","creator":"LinOnetwo","tags":"$:/tags/RawMarkup"},"$:/plugins/linonetwo/copy-on-select/readme":{"title":"$:/plugins/linonetwo/copy-on-select/readme","created":"20200414135748497","modified":"20200602062349232","creator":"LinOnetwo","type":"text/vnd.tiddlywiki","text":"!! 动机\n\n我已经习惯了用方便的[[Copy On Select|https://addons.mozilla.org/en-US/firefox/addon/copy-on-select]] Firefox 插件,现在到了 TiddlyWiki 里我经常还是以为选中了就复制了,然后黏贴到别的地方才发现其实并没有复制,很不习惯。\n\n所以我自己重新写了一个适配 TiddlyWiki 的选中即复制脚本。\n\n!! 用法\n\n选中编辑器、按钮等区域以外的任何文本都会直接复制。\n\n这个插件里的条件语句让它在编辑器等特殊区域内不会起作用,以免干扰「全选黏贴覆盖原有内容」等操作。\n"}}} \ No newline at end of file +{"tiddlers":{"$:/plugins/linonetwo/copy-on-select/copy-on-select.html":{"title":"$:/plugins/linonetwo/copy-on-select/copy-on-select.html","text":"\n","type":"text/html","created":"20200411065413157","modified":"20200414150804034","creator":"LinOnetwo","tags":"$:/tags/RawMarkup"},"$:/plugins/linonetwo/copy-on-select/readme":{"title":"$:/plugins/linonetwo/copy-on-select/readme","created":"20200414135748497","modified":"20200602062349232","creator":"LinOnetwo","type":"text/vnd.tiddlywiki","text":"!! 动机\n\n我已经习惯了用方便的[[Copy On Select|https://addons.mozilla.org/en-US/firefox/addon/copy-on-select]] Firefox 插件,现在到了 TiddlyWiki 里我经常还是以为选中了就复制了,然后黏贴到别的地方才发现其实并没有复制,很不习惯。\n\n所以我自己重新写了一个适配 TiddlyWiki 的选中即复制脚本。\n\n!! 用法\n\n选中编辑器、按钮等区域以外的任何文本都会直接复制。\n\n这个插件里的条件语句让它在编辑器等特殊区域内不会起作用,以免干扰「全选黏贴覆盖原有内容」等操作。\n"}}} \ No newline at end of file diff --git a/tiddlers/$__plugins_linonetwo_copy-on-select.json.meta b/tiddlers/$__plugins_linonetwo_copy-on-select.json.meta index 8bf32a9..4db0f49 100644 --- a/tiddlers/$__plugins_linonetwo_copy-on-select.json.meta +++ b/tiddlers/$__plugins_linonetwo_copy-on-select.json.meta @@ -1,11 +1,10 @@ author: LinOnetwo core-version: >=5.1.22 -created: 20211017092856750 dependents: description: Copy what you are selecting inside the wiki into the clipboard list: readme -modified: 20211017092856750 +name: copy-on-select plugin-type: plugin title: $:/plugins/linonetwo/copy-on-select type: application/json -version: 0.0.1 \ No newline at end of file +version: 0.0.2 \ No newline at end of file diff --git a/tiddlers/$__plugins_linonetwo_flowtiwi-sidebar_state.json b/tiddlers/$__plugins_linonetwo_flowtiwi-sidebar_state.json index 9d59553..f2c1c5f 100644 --- a/tiddlers/$__plugins_linonetwo_flowtiwi-sidebar_state.json +++ b/tiddlers/$__plugins_linonetwo_flowtiwi-sidebar_state.json @@ -4,7 +4,7 @@ "w": 1, "h": 1, "x": 1, - "y": 16, + "y": 13, "i": "$:/core/ui/SideBar/Open", "moved": false, "static": false @@ -13,7 +13,7 @@ "w": 1, "h": 1, "x": 0, - "y": 12, + "y": 9, "i": "$:/plugins/kookma/favorites/sidebar-tab", "moved": false, "static": false @@ -49,11 +49,29 @@ "w": 1, "h": 1, "x": 0, - "y": 16, + "y": 13, "i": "$:/plugins/kookma/refnotes/ui/bibtexlibrary", "moved": false, "static": false }, + { + "w": 1, + "h": 1, + "x": 0, + "y": 14, + "i": "$:/plugins/kookma/thinkup/ui/sidebar", + "moved": false, + "static": false + }, + { + "w": 1, + "h": 1, + "x": 0, + "y": 15, + "i": "$:/plugins/kookma/trashbin/sidebar-tab", + "moved": false, + "static": false + }, { "w": 2, "h": 3, @@ -67,7 +85,7 @@ "w": 2, "h": 2, "x": 0, - "y": 14, + "y": 11, "i": "$:/plugins/linonetwo/itonnote/Sidebar/Locator Fields", "moved": false, "static": false @@ -76,17 +94,17 @@ "w": 1, "h": 2, "x": 1, - "y": 12, + "y": 9, "i": "$:/plugins/linonetwo/source-control-management/SideBarSCMTab", "moved": false, "static": false }, { - "w": 2, - "h": 3, + "w": 1, + "h": 1, "x": 0, - "y": 9, - "i": "$:/core/ui/SideBar/FishingAnalysis", + "y": 16, + "i": "$:/plugins/oflg/fishing-analysis/ui/SideBar/FishingAnalysis", "moved": false, "static": false }, diff --git a/tiddlers/$__plugins_linonetwo_flowtiwi-sidebar_state.json.meta b/tiddlers/$__plugins_linonetwo_flowtiwi-sidebar_state.json.meta index 3184dc1..de392c7 100644 --- a/tiddlers/$__plugins_linonetwo_flowtiwi-sidebar_state.json.meta +++ b/tiddlers/$__plugins_linonetwo_flowtiwi-sidebar_state.json.meta @@ -1,6 +1,6 @@ created: 20220508025054677 creator: 林一二 -modified: 20220508092143588 -modifier: 林一二 +modified: 20220809005557934 +modifier: TidGiUser title: $:/plugins/linonetwo/flowtiwi-sidebar/state type: application/json \ No newline at end of file diff --git a/tiddlers/$__plugins_linonetwo_itonnote.json b/tiddlers/$__plugins_linonetwo_itonnote.json index 2751289..4752483 100644 --- a/tiddlers/$__plugins_linonetwo_itonnote.json +++ b/tiddlers/$__plugins_linonetwo_itonnote.json @@ -1 +1 @@ -{"tiddlers":{"$:/config/DownloadSaver/AutoSave":{"title":"$:/config/DownloadSaver/AutoSave","created":"20190601103555586","creator":"Lin Onetwo","modified":"20200410072837906","modifier":"Lin Onetwo","type":"text/vnd.tiddlywiki","text":"no"},"$:/config/MissingLinks":{"title":"$:/config/MissingLinks","created":"20190419034301891","modified":"20200409033736457","type":"text/vnd.tiddlywiki","text":"yes"},"$:/config/Navigation/UpdateAddressBar":{"title":"$:/config/Navigation/UpdateAddressBar","created":"20190419034459572","creator":"林一二","modified":"20200409033736422","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"permaview"},"$:/config/Navigation/UpdateHistory":{"title":"$:/config/Navigation/UpdateHistory","created":"20190419034422400","modified":"20200409033736411","type":"text/vnd.tiddlywiki","text":"yes"},"$:/config/Navigation/openLinkFromInsideRiver":{"title":"$:/config/Navigation/openLinkFromInsideRiver","created":"20200409033736445","modified":"20200409033736445","type":"text/vnd.tiddlywiki","text":"above"},"$:/config/Navigation/openLinkFromOutsideRiver":{"title":"$:/config/Navigation/openLinkFromOutsideRiver","created":"20200409033736433","modified":"20200409033736433","type":"text/vnd.tiddlywiki","text":"top"},"$:/config/Plugins/Disabled/$:/plugins/sycom/g-analytics":{"title":"$:/config/Plugins/Disabled/$:/plugins/sycom/g-analytics","created":"20190823032141720","creator":"Lin Onetwo - 林一二","modified":"20200409033736354","modifier":"Lin Onetwo - 林一二","type":"text/vnd.tiddlywiki","text":"no"},"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki":{"title":"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki","created":"20200411033813183","modified":"20200411033814242","type":"text/vnd.tiddlywiki","text":"yes"},"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/codemirror":{"title":"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/codemirror","created":"20200530042942722","modified":"20200530043337009","type":"text/vnd.tiddlywiki","text":"no"},"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/highlight":{"title":"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/highlight","created":"20190419154112345","modified":"20200409033736342","type":"text/vnd.tiddlywiki","text":"no"},"$:/config/RelinkOnRename":{"title":"$:/config/RelinkOnRename","created":"20200408113649017","creator":"Lin Onetwo - 林一二","modified":"20211104104033123","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"yes"},"$:/config/Search/MinLength":{"title":"$:/config/Search/MinLength","created":"20190419153747812","modified":"20200409033736319","tags":"","type":"text/vnd.tiddlywiki","text":"1"},"$:/config/Toolbar/ButtonClass":{"title":"$:/config/Toolbar/ButtonClass","created":"20190419034516378","modified":"20200409033736308","type":"text/vnd.tiddlywiki","text":"tc-btn-invisible"},"$:/config/WikiParserRules/Inline/wikilink":{"title":"$:/config/WikiParserRules/Inline/wikilink","created":"20190419034308697","modified":"20200409033736296","type":"text/vnd.tiddlywiki","text":"disable"},"$:/config/codemirror/autoCloseTags":{"title":"$:/config/codemirror/autoCloseTags","text":"true","type":"bool","created":"20210622180509486","creator":"TiddlyGit User","modified":"20210622180509499","modifier":"TiddlyGit User"},"$:/config/codemirror/keyMap":{"title":"$:/config/codemirror/keyMap","text":"sublime\n","type":"string","created":"20210622181242658","creator":"TiddlyGit User","modified":"20210622181242668","modifier":"TiddlyGit User"},"$:/config/markdown/renderWikiTextPragma":{"title":"$:/config/markdown/renderWikiTextPragma","created":"20211104053553213","creator":"林一二","modified":"20211104053830091","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"\\rules only html image macrocallinline syslink transcludeinline wikilink prettylink filteredtranscludeblock macrocallblock transcludeblock "},"$:/config/section-editor/config-editor-type":{"title":"$:/config/section-editor/config-editor-type","created":"20211103170442092","creator":"林一二","modified":"20211103170442098","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"main-editor"},"$:/config/section-editor/config-visibility-toolbar":{"title":"$:/config/section-editor/config-visibility-toolbar","created":"20211103170443459","creator":"林一二","modified":"20211103170443464","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"yes"},"$:/config/section-editor/hlevel":{"title":"$:/config/section-editor/hlevel","created":"20211103170546518","creator":"林一二","modified":"20211228162503797","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"5"},"$:/config/section-editor/reader-mode":{"title":"$:/config/section-editor/reader-mode","created":"20211228162506611","creator":"林一二","modified":"20211228162519164","modifier":"林一二","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts/cancel-edit-tiddler":{"title":"$:/config/shortcuts/cancel-edit-tiddler","created":"20211004052011062","creator":"林一二","modified":"20211004052016698","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"shift-Escape"},"$:/language":{"title":"$:/language","type":"text/vnd.tiddlywiki","text":"$:/languages/zh-Hans"},"$:/themes/tiddlywiki/vanilla/options/sidebarlayout":{"title":"$:/themes/tiddlywiki/vanilla/options/sidebarlayout","created":"20200605100438813","creator":"林一二","modified":"20200605100438836","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"fluid-fixed"},"$:/config/DefaultSidebarTab":{"title":"$:/config/DefaultSidebarTab","creator":"LinOnetwo","type":"text/vnd.tiddlywiki","text":"$:/plugins/linonetwo/itonnote/Sidebar/FolderMenu"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/editor-height":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/editor-height","created":"20220217151940912","creator":"林一二","modified":"20220217151940912","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4","created":"20220217151927360","creator":"林一二","modified":"20220217151927360","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/linkify":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/linkify","created":"20220217152007030","creator":"林一二","modified":"20220217152007030","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/mono-block":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/mono-block","created":"20220217152010844","creator":"林一二","modified":"20220217152010844","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/mono-line":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/mono-line","created":"20220217152001764","creator":"林一二","modified":"20220217152001764","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/rotate-left":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/rotate-left","created":"20220217152027754","creator":"林一二","modified":"20220217152033705","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/size":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/size","created":"20220217151938983","creator":"林一二","modified":"20220217152036687","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/subscript":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/subscript","created":"20220217151958198","creator":"林一二","modified":"20220217151958198","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/transcludify":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/transcludify","created":"20220217152005826","creator":"林一二","modified":"20220217152005826","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/plugins/stobot/sticky/EditorToolbarButton":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/plugins/stobot/sticky/EditorToolbarButton","created":"20220217151956095","creator":"林一二","modified":"20220217151956095","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line","created":"20220217152000867","creator":"林一二","modified":"20220217152000867","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/TextEditor/EditorHeight/Mode":{"title":"$:/config/TextEditor/EditorHeight/Mode","created":"20211030152517217","creator":"林一二","modified":"20211030152521841","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"auto"},"$:/core/ui/EditorToolbar/linkify":{"title":"$:/core/ui/EditorToolbar/linkify","caption":"{{$:/language/Buttons/Linkify/Caption}}","condition":"[!has[type]] [type[text/vnd.tiddlywiki]]","created":"20200408132942967","creator":"林一二","description":"{{$:/language/Buttons/Linkify/Hint}}","icon":"$:/core/images/linkify","modified":"20200409033736283","modifier":"林一二","shortcuts":"((linkify))","tags":"$:/tags/EditorToolbar","type":"text/vnd.tiddlywiki","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"},"$:/core/ui/EditorToolbar/transcludify":{"title":"$:/core/ui/EditorToolbar/transcludify","caption":"{{$:/language/Buttons/Transcludify/Caption}}","condition":"[!has[type]] [type[text/vnd.tiddlywiki]]","created":"20200408132942967","creator":"林一二","description":"{{$:/language/Buttons/Transcludify/Hint}}","icon":"$:/core/images/transcludify","modified":"20200409033736271","modifier":"林一二","shortcuts":"((transcludify))","tags":"$:/tags/EditorToolbar","type":"text/vnd.tiddlywiki","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"},"$:/plugins/linonetwo/itonnote/Configs/SideBarFolderMenuBaseTitle":{"title":"$:/plugins/linonetwo/itonnote/Configs/SideBarFolderMenuBaseTitle","creator":"LinOnetwo","type":"text/vnd.tiddlywiki","text":"Index"},"$:/config/DefaultMoreSidebarTab":{"title":"$:/config/DefaultMoreSidebarTab","created":"20200409060942350","creator":"linonetwo","modified":"20200410073440927","modifier":"linonetwo","type":"text/vnd.tiddlywiki","text":"$:/core/ui/MoreSideBar/Orphans"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search":{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search","created":"20200602124339340","modified":"20200602124339360","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/control-panel":{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/control-panel","created":"20200410174523174","modified":"20200410175230294","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption":{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption","created":"20200410174620924","modified":"20200410174809069","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home":{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home","created":"20200408133027695","creator":"Lin Onetwo - 林一二","modified":"20200409033736388","modifier":"Lin Onetwo - 林一二","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions":{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions","created":"20200408133032024","creator":"Lin Onetwo - 林一二","modified":"20200409033736377","modifier":"Lin Onetwo - 林一二","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/PageControlButtons/Visibility/$:/plugins/kookma/commander/buttons/pagecontrol":{"title":"$:/config/PageControlButtons/Visibility/$:/plugins/kookma/commander/buttons/pagecontrol","created":"20200410174517268","modified":"20200410174518337","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler":{"title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler","created":"20200410064657446","modified":"20200410064708140","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here":{"title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here","created":"20200409065701335","modified":"20200409065702475","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here":{"title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here","created":"20200410064650269","modified":"20200410064651361","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/ViewToolbarButtons/Visibility/$:/plugins/danielo/encryptTiddler/crypt-button":{"title":"$:/config/ViewToolbarButtons/Visibility/$:/plugins/danielo/encryptTiddler/crypt-button","created":"20200410064748749","modified":"20200410175238416","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/ViewToolbarButtons/Visibility/$:/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button":{"title":"$:/config/ViewToolbarButtons/Visibility/$:/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button","created":"20200411035036487","modified":"20200411035037540","type":"text/vnd.tiddlywiki","text":"hide"},"$:/palette":{"title":"$:/palette","type":"text/vnd.tiddlywiki","text":"$:/palettes/Notion"},"$:/tags/PageControls":{"title":"$:/tags/PageControls","created":"20200604080106170","creator":"LinOnetwo","list":"$:/plugins/linonetwo/omni-search-bar/ui/Buttons/search $:/core/ui/Buttons/home $:/core/ui/Buttons/close-all $:/core/ui/Buttons/fold-all $:/core/ui/Buttons/unfold-all $:/core/ui/Buttons/permaview $:/core/ui/Buttons/more-page-actions $:/core/ui/Buttons/new-tiddler $:/plugins/tiddlywiki/markdown/new-markdown-button $:/plugins/kookma/solution/buttons/pagecontrol $:/core/ui/Buttons/new-journal $:/core/ui/Buttons/new-image $:/core/ui/Buttons/import $:/core/ui/Buttons/export-page $:/core/ui/Buttons/control-panel $:/core/ui/Buttons/advanced-search $:/plugins/kookma/commander/buttons/pagecontrol $:/core/ui/Buttons/manager $:/core/ui/Buttons/tag-manager $:/core/ui/Buttons/language $:/core/ui/Buttons/palette $:/core/ui/Buttons/theme $:/core/ui/Buttons/storyview $:/core/ui/Buttons/encryption $:/core/ui/Buttons/timestamp $:/core/ui/Buttons/full-screen $:/core/ui/Buttons/print $:/core/ui/Buttons/refresh $:/plugins/kookma/utility/pagecontrol/view-fields-button $:/core/ui/Buttons/save-wiki $:/plugins/linonetwo/source-control-management/PageControlButton","type":"text/vnd.tiddlywiki"},"$:/theme":{"title":"$:/theme","type":"text/vnd.tiddlywiki","text":"$:/themes/linonetwo/itonnote"},"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint":{"title":"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint","created":"20200409023154184","creator":"林一二","modified":"20200409033737112","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"960px"},"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth":{"title":"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth","created":"20200408112506281","creator":"林一二","modified":"20211017052047040","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"380px"},"$:/themes/tiddlywiki/vanilla/metrics/storywidth":{"title":"$:/themes/tiddlywiki/vanilla/metrics/storywidth","created":"20200409023115883","creator":"林一二","modified":"20200409033737088","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"770px"},"$:/themes/tiddlywiki/vanilla/options/stickytitles":{"title":"$:/themes/tiddlywiki/vanilla/options/stickytitles","created":"20200408115751958","creator":"林一二","modified":"20200409033737062","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"yes"},"$:/themes/tiddlywiki/vanilla/settings/codefontfamily":{"title":"$:/themes/tiddlywiki/vanilla/settings/codefontfamily","created":"20190420032819437","modified":"20200409033737050","type":"text/vnd.tiddlywiki","text":"'Fira Code',\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"},"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily":{"title":"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily","created":"20190421072924643","modified":"20200409033737038","type":"text/vnd.tiddlywiki","text":"'Fira Code',\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"},"$:/themes/tiddlywiki/vanilla/settings/fontfamily":{"title":"$:/themes/tiddlywiki/vanilla/settings/fontfamily","created":"20190420034215366","modified":"20200409033737026","type":"text/vnd.tiddlywiki","text":"'Fira Code',-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\""},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/contents":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/contents","created":"20200415162108079","modified":"20200602041547212","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/hamburger":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/hamburger","created":"20200415162126215","modified":"20200415162128295","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols","created":"20200415162131716","modified":"20200415162330718","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/sidebar":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/sidebar","created":"20200415162109418","modified":"20200415162109442","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/topleftbar":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/topleftbar","created":"20200415162101755","modified":"20200602041539750","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/toprightbar":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/toprightbar","created":"20200415162118824","modified":"20200415163710486","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/shortcuts-mac/bold":{"title":"$:/config/shortcuts-mac/bold","created":"20200602011151844","modified":"20200602011151860","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts-mac/italic":{"title":"$:/config/shortcuts-mac/italic","created":"20200602011428084","modified":"20200602011428114","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts-mac/new-image":{"title":"$:/config/shortcuts-mac/new-image","created":"20200602011526855","modified":"20200602011526866","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts-mac/new-journal":{"title":"$:/config/shortcuts-mac/new-journal","created":"20200602011519033","modified":"20200602011519055","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts-mac/toggle-sidebar":{"title":"$:/config/shortcuts-mac/toggle-sidebar","created":"20200602011322158","modified":"20200602011322171","type":"text/vnd.tiddlywiki","text":"cmd-B"},"$:/config/shortcuts-not-mac/bold":{"title":"$:/config/shortcuts-not-mac/bold","created":"20200602011156768","modified":"20200602011156779","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts-not-mac/new-image":{"title":"$:/config/shortcuts-not-mac/new-image","created":"20200602011529909","modified":"20200602011529924","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts-not-mac/new-journal":{"title":"$:/config/shortcuts-not-mac/new-journal","created":"20200602011521325","modified":"20200602011521342","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts/bold":{"title":"$:/config/shortcuts/bold","created":"20200602011200184","modified":"20200602011200195","type":"text/vnd.tiddlywiki","text":"ctrl-B"},"$:/config/shortcuts/toggle-sidebar":{"title":"$:/config/shortcuts/toggle-sidebar","created":"20200602011309990","modified":"20200602011310003","type":"text/vnd.tiddlywiki"},"$:/plugins/linonetwo/itonnote/ControlPanel":{"title":"$:/plugins/linonetwo/itonnote/ControlPanel","type":"text/vnd.tiddlywiki","text":"!! 设置 Settings\n\n!!! 作为文件目录中根文件夹的笔记的标题 Title of the notes as the root folder in the file tree\n\n以这个标题作为标签的其它笔记相当于放入了根文件夹中:\n\nOther notes with this title as a tag are equivalent to being placed in the root folder:\n\n<$edit-text\n\ttiddler=\"$:/plugins/linonetwo/itonnote/Configs/SideBarFolderMenuBaseTitle\"\n\ttag=\"input\"\n\tdefault=\"Index\"\n\tplaceholder=\"\" />\n"},"导出文件 Export File":{"title":"导出文件 Export File","description":"导出文件 Export File","extension":"","tags":"$:/tags/Exporter","type":"text/vnd.tiddlywiki","text":"\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/plain-text-tiddler}}}\n\\end\n<>"},"$:/plugins/linonetwo/itonnote/Help/TW-Locator基于标签生成的文件夹目录结构使用方法":{"title":"$:/plugins/linonetwo/itonnote/Help/TW-Locator基于标签生成的文件夹目录结构使用方法","created":"20200413072141568","creator":"LinOnetwo","type":"text/vnd.tiddlywiki","text":"侧边栏的「目录结构」标签页里展示了[[通过标签系统自动生成|$:/plugins/linonetwo/itonnote/Help/在 TiddlyWiki 中使用虚拟文件夹]]的文件夹。\n\n若想修改根文件夹,请打开[[设置|$:/plugins/linonetwo/itonnote/ControlPanel]]。\n\n* 打了 A 标签,即相当于将文件存储在文件夹 A 中,并以 A 的内容作为文件夹的 Readme\n* 在任意Tiddler中使用「创建一个标签为此条目名称的新条目」按钮,可以创建以当前Tiddler为文件夹的文件\n* 点击 `>` 按钮(使它变成 `v`)可以展开文件夹\n* 直接点击文件夹的名字可以查看这个文件夹的 Readme\n* 分割线上方是当前目录,再往上是上级目录,点击分割线上方的上级目录名左侧的 `>` 按钮可以回到上级目录\n* 当处在 A 文件夹内时,点击分割线下方的 `+` 可以在当前文件夹里创建新文件(即创建打了 A 标签的新 Tiddler)\n* 点击 Filter by fields 可以展开分面搜索工具,点击分面搜索工具内的 `+` 可以增加筛选条件,点击 `x` 㐓减少筛选条件。\n\n---\n\nThe folder structure [[auto-generated by tag system|$:/plugins/linonetwo/itonnote/Help/在 TiddlyWiki 中使用虚拟文件夹]] is shown in the \"Directory structure\" tab in the sidebar.\n\nIf you want to modify the root folder, please open the [[Settings|$:/plugins/linonetwo/itonnote/ControlPanel]].\n\n* tagged with A, which is equivalent to storing the file in folder A and using the contents of A as the Readme of the folder\n* Use the \"Create a new tiddler with this tag name\" button in any Tiddler to create a file with the current Tiddler as the folder\n* Click the `>` button (to make it `v`) to expand the folder\n* Click directly on the name of a folder to see the Readme of that folder\n* Click the `>` button to the left of the parent directory name above the split line to go back to the parent directory.\n* When you are in the A folder, click `+` below the split line to create a new file in the current folder (i.e. create a new Tiddler with the A tag)\n* Click Filter by fields to expand the faceted search tool, click `+` inside the faceted search tool to increase the filtering criteria, click `x` can decrease the filtering criteria.\n"},"$:/plugins/linonetwo/itonnote/Help/在 TiddlyWiki 中使用虚拟文件夹":{"title":"$:/plugins/linonetwo/itonnote/Help/在 TiddlyWiki 中使用虚拟文件夹","created":"20200410054027122","creator":"LinOnetwo","type":"text/vnd.tiddlywiki","text":"!!! Tag\n\nThe Tag structure can be thought of as a folder directory structure with soft links to form a graphical structure, since Tag relationships are inherently free, and two notes can be tagged to each other and parented to each other in the folder structure.\n\nUsing tw-locator, you can create a \"file directory\" tab in the sidebar, which shows the folder structure generated by the tag. The details are written in [[$:/plugins/bimlas/locator/README/macros]], and the plugin should have it pre-populated in [[$:/plugins/linonetwo/itonnote/Sidebar/FolderMenu]], which can be used immediately or modified to override it.\n\nThen you can set the \"File Directory\" tab to be displayed by default in `$:/ControlPanel` -> \"Settings\" -> \"Default Sidebar Tab\", so that you can use TiddlyWiki as a folder system. And the plugin should already be pre-configured for this.\n\n!!! Slash\n\nTiddlyWiki comes with a way to create folders by using slashes in the header.\n\nThe various folders that come with the system can be seen via the sidebar under \"More\" -> \"Explore\".\n\nIf you use the NodeJS version of TiddlyWiki, these tiddlers will also be placed in the corresponding folders on the real file system.\n"},"$:/plugins/linonetwo/itonnote/Macros/OpenImageInGithub":{"title":"$:/plugins/linonetwo/itonnote/Macros/OpenImageInGithub","created":"20200412034056887","tags":"$:/tags/Macro","caption":"点击在新标签页打开Github大图","type":"text/vnd.tiddlywiki","text":"\\define view-big-image(source)\n\n \n\n\\end"},"$:/plugins/linonetwo/itonnote/Macros/TransclusionWithEditMe":{"title":"$:/plugins/linonetwo/itonnote/Macros/TransclusionWithEditMe","created":"20200408094804792","creator":"LinOnetwo","tags":"$:/tags/Macro 自改TW","caption":"带有「编辑此块」的引用transclusion宏","type":"text/vnd.tiddlywiki","text":"\\define reuse-pane(content)\n\n
    \n $content$\n
    \n\\end\n\n\\define reuse-tiddler(title)\n<$macrocall $name=\"reuse-pane\" content=\"\"\"\n查看引文:[[$title$]]\n\"\"\" />\n\n{{$title$}}\n\n\\end"},"$:/config/ChinesePluginLibrary/GitHub":{"title":"$:/config/ChinesePluginLibrary/GitHub","caption":"<$list filter=\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\" variable=\"lang\"><$list filter=\"[search:title[zh]]\">太微中文社区插件源(~GitHub版)<$list filter=\"[!search:title[zh]]\">TiddlyWiki Chinese CPL(~GitHub Host)","created":"20211210064945704","creator":"Sttot","modified":"20211210070811047","modifier":"Sttot","tags":"$:/tags/PluginLibrary","type":"text/vnd.tiddlywiki","url":"https://tiddly-gittly.github.io/TiddlyWiki-CPL/library/index.html","text":"\n<$list filter=\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\" variable=\"lang\">\n<$list filter=\"[search:title[zh]]\" variable=\"lang\">\n\n欢迎使用''【太微中文社区插件源】''!\n\n本插件源是由[[太微(TiddlyWiki)中文社区|https://github.com/tiddly-gittly]]维护的、致力于搜集网络上所有与 ~TiddlyWiki5 有关插件的、希望为中国以及全世界的太微用户提供一键安装、更新插件体验的公开插件源。\n\n如果还不了解该如何使用太微和本插件源,欢迎阅读[[中文社区共建的太微(TiddlyWiki)教程|https://tw-cn.netlify.app]]里插件相关的部分。如上提到的插件源和教程皆为开源项目,你可以在 [[GitHub|https://github.com/tiddly-gittly]] 中找到并参与贡献!如果乐意,可以通过QQ群等方式加入我们,详情请见如上提到的中文教程。\n\n要添加这个插件库到你的 Wiki 中,只需鼠标拖动这个链接到你的 Wiki 里即可:<$link to=<>>{{!!caption}}\n\n注意:本插件源版本为 ~GitHub Page 的版本,更新更快,但是可能需要科学上网手段。如果你在国内,而且不清楚什么是“科学上网”,请选用另一个经过 netlify.app 加速的[[版本|$:/config/ChinesePluginLibrary/Netlify]],虽然更新有一定的延迟,但对国内用户更加友好。\n\n\n\n<$list filter=\"[!search:title[zh]]\" variable=\"lang\">\n\nWelcome to the ''[TiddlyWiki Chinese Community Plugin Source]''!\n\nThis plugin source is maintained by the [[TiddlyWiki Chinese Community]] and is dedicated to collecting all TiddlyWiki5 related plugins on the web, hoping to provide a one-click installation and update plugin experience for TiddlyWiki users in China and around the world.\n\nIf you don't know how to use TiddlyWiki and this source, you are welcome to read the plugins related section in the [[TiddlyWiki Tutorials for Chinese Communities|https://tw-cn.netlify.app]]. As mentioned above, both the plugin source and the tutorial are open source projects, you can find them in [[GitHub|https://github.com/tiddly-gittly]] and participate in contributing! If you like, you can join us through QQ groups and other means, see the Chinese tutorials mentioned above for details.\n\nTo add this plugin library to your Wiki, just drag this link with your mouse into your Wiki: <$link to=<>{{!!caption}}\n\nNote: The source version of this plugin is the ~GitHub Page version, which is faster to update, but may require scientific Internet access. If you are in China and are not sure what GFW is, please use another [[version|$:/config/ChinesePluginLibrary/Netlify]] that is accelerated by netlify.app, although there is a certain delay in updating, but it is more friendly to domestic users more friendly.\n\n\n"},"$:/config/ChinesePluginLibrary/Netlify":{"title":"$:/config/ChinesePluginLibrary/Netlify","caption":"<$list filter=\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\" variable=\"lang\"><$list filter=\"[search:title[zh]]\">太微中文社区插件源(大陆加速版)<$list filter=\"[!search:title[zh]]\">TiddlyWiki Chinese CPL(Netlify Host)","created":"20211118102827947","creator":"Sttot","modified":"20211210070641055","modifier":"Sttot","tags":"$:/tags/PluginLibrary","type":"text/vnd.tiddlywiki","url":"https://tw-cpl.netlify.app/library/index.html","text":"\n<$list filter=\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\" variable=\"lang\">\n<$list filter=\"[search:title[zh]]\" variable=\"lang\">\n\n欢迎使用''【太微中文社区插件源】''!\n\n本插件源是由[[太微(TiddlyWiki)中文社区|https://github.com/tiddly-gittly]]维护的、致力于搜集网络上所有与 ~TiddlyWiki5 有关插件的、希望为中国以及全世界的太微用户提供一键安装、更新插件体验的公开插件源。\n\n如果还不了解该如何使用太微和本插件源,欢迎阅读[[中文社区共建的太微(TiddlyWiki)教程|https://tw-cn.netlify.app]]里插件相关的部分。如上提到的插件源和教程皆为开源项目,你可以在 [[GitHub|https://github.com/tiddly-gittly]] 中找到并参与贡献!如果乐意,可以通过QQ群等方式加入我们,详情请见如上提到的中文教程。\n\n要添加这个插件库到你的 Wiki 中,只需鼠标拖动这个链接到你的 Wiki 里即可:<$link to=<>>{{!!caption}}\n\n注意:本插件源版本为经过 netlify.app 加速的版本,对国内用户更加友好,但是更新有一定的延迟。还提供另一版本,是直接使用 ~GitHub Page 服务器的版本,更新更快,但是可能需要科学上网手段。\n\n\n\n<$list filter=\"[!search:title[zh]]\" variable=\"lang\">\n\nWelcome to the ''[TiddlyWiki Chinese Community Plugin Source]''!\n\nThis plugin source is maintained by the [[TiddlyWiki Chinese Community]] and is dedicated to collecting all TiddlyWiki5 related plugins on the web, hoping to provide a one-click installation and update plugin experience for TiddlyWiki users in China and around the world.\n\nIf you don't know how to use TiddlyWiki and this source, you are welcome to read the plugins related section in the [[TiddlyWiki Tutorials for Chinese Communities|https://tw-cn.netlify.app]]. As mentioned above, both the plugin source and the tutorial are open source projects, you can find them in [[GitHub|https://github.com/tiddly-gittly]] and participate in contributing! If you like, you can join us through QQ groups and other means, see the Chinese tutorials mentioned above for details.\n\nTo add this plugin library to your Wiki, just drag this link with your mouse into your Wiki: <$link to=<>{{!!caption}}\n\nNote: The source version of this plugin is a version accelerated by netlify.app, which is more friendly to China mainland users, but there is a delay in updating. There is also another version that uses the GitHub Page server directly, which is faster to update, but may require technology to overturn the GFW.\n\n\n"},"$:/config/wikilabs/PluginLibraryWL/latest":{"title":"$:/config/wikilabs/PluginLibraryWL/latest","caption":"Wikilabs Library","tags":"$:/tags/PluginLibrary","type":"text/vnd.tiddlywiki","url":"https://wikilabs.github.io/editions/pluginlibraryWL/library/latest/index.html","text":"~WikiLabs plugin library latest version!\n"},"$:/config/KookmaPluginLibrary":{"title":"$:/config/KookmaPluginLibrary","caption":"Kookma Plugin Library","created":"20200306121057751","modified":"20200410154132754","tags":"$:/tags/PluginLibrary","type":"text/vnd.tiddlywiki","url":"https://kookma.github.io/TW-PluginLibrary/library/index.html","text":"Kookma plugin library is a set of plugins, themes, and scripts, to extend functionality and add new features to Tiddlywiki. For detail information visit the library at [[GitHub|https://github.com/kookma]]. It is recommended to backup your data before installing any plugin, theme, or script. \n\nTo use in other wikis, drag and drop this link to those wikis: [[Kookma Plugin Library|$:/config/KookmaPluginLibrary]]"},"$:/config/OfficialPluginLibrary":{"title":"$:/config/OfficialPluginLibrary","tags":"$:/tags/PluginLibrary","url":"https://tiddlywiki.com/library/v5.2.1/index.html","caption":"{{$:/language/OfficialPluginLibrary}}","text":"{{$:/language/OfficialPluginLibrary/Hint}}"},"$:/plugins/linonetwo/itonnote/Sidebar/FolderMenu":{"title":"$:/plugins/linonetwo/itonnote/Sidebar/FolderMenu","caption":"文件目录","creator":"LinOnetwo","description":"文件夹系统目录结构","is-dropdown":"yes","tags":"$:/tags/SideBar $:/tags/MenuBar","type":"text/vnd.tiddlywiki","text":"<$scrollable fallthrough=\"none\" class=\"tc-popup-keep tc-menubar-dropdown-sidebar\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/focussedTiddler\" text={{$:/plugins/linonetwo/itonnote/Configs/SideBarFolderMenuBaseTitle}}>\n<$macrocall $name=\"locator-view\" baseTitle={{$:/temp/focussedTiddler}} />\n\n\n<$macrocall $name=\"locator-view\" baseTitle={{$:/plugins/linonetwo/itonnote/Configs/SideBarFolderMenuBaseTitle}} />\n\n[[使用帮助|$:/plugins/linonetwo/itonnote/Help/TW-Locator基于标签生成的文件夹目录结构使用方法]]\n\n"},"$:/plugins/linonetwo/itonnote/Sidebar/Locator Fields":{"title":"$:/plugins/linonetwo/itonnote/Sidebar/Locator Fields","caption":"Fields","creator":"LinOnetwo","tags":"$:/tags/SideBar","type":"text/vnd.tiddlywiki","text":"<$vars searchTiddler=\" \">\n <>\n"},"$:/plugins/linonetwo/itonnote/Sidebar/SearchResultByFacets":{"title":"$:/plugins/linonetwo/itonnote/Sidebar/SearchResultByFacets","caption":"Facets","created":"20200408140310432","creator":"LinOnetwo","tags":"$:/tags/SearchResults","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/linonetwo/itonnote/Sidebar/SearchResultByFields":{"title":"$:/plugins/linonetwo/itonnote/Sidebar/SearchResultByFields","caption":"Fields","created":"20200408140310432","creator":"LinOnetwo","tags":"$:/tags/SearchResults","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/linonetwo/itonnote/Snippets/LocatorAboutCurrentTiddler":{"title":"$:/plugins/linonetwo/itonnote/Snippets/LocatorAboutCurrentTiddler","caption":"添加一个使用当前标题的 tw-Locator","created":"20200408133348115","creator":"LinOnetwo","tags":"[[$:/plugins/linonetwo/itonnote/Help/在 TiddlyWiki 中使用虚拟文件夹]] $:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<$macrocall $name=\"locator-view\" baseTitle=<> />"},"$:/plugins/linonetwo/itonnote/Snippets/OpenImageInGithub":{"title":"$:/plugins/linonetwo/itonnote/Snippets/OpenImageInGithub","caption":"图片:点击在新标签页打开大图","created":"20200412041713662","creator":"LinOnetwo","tags":"$:/plugins/linonetwo/itonnote/Macros/OpenImageInGithub $:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/linonetwo/itonnote/Snippets/TransclusionWithEditMe":{"title":"$:/plugins/linonetwo/itonnote/Snippets/TransclusionWithEditMe","caption":"带「编辑此块」的引用Transclusion","created":"20200408132341855","creator":"LinOnetwo","tags":"$:/plugins/linonetwo/itonnote/Macros/TransclusionWithEditMe $:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/linonetwo/itonnote/Startup/closeSidebarOnMobile.js":{"title":"$:/plugins/linonetwo/itonnote/Startup/closeSidebarOnMobile.js","text":"/*\\\ntitle: $:/themes/nico/notebook-mobile/js/notebookSidebarNav.js\ntype: application/javascript\nmodule-type: global\n\nCloses the notebook sidebar on mobile when navigating\n\n\\*/\n(function(){\n\n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n\n const isOnMobile = () => {\n // TODO: use https://github.com/Jermolene/TiddlyWiki5/pull/6675 after next release\n if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)){\n // true for mobile device\n return true\n }\n return false\n };\n\n const closeSidebar = () => {\n\t\t$tw.wiki.setText(\"$:/state/notebook-sidebar\", \"text\", undefined, \"no\");\n };\n\n const closeSidebarOnMobile = () => {\n\t\tif (isOnMobile()) {\n console.log(\"closing sidebar\");\n\t\t\tcloseSidebar();\n\t\t};\n };\n\n const setup = () => {\n\t\t$tw.hooks.addHook(\"th-navigating\",function(event) {\n\t\t\tcloseSidebarOnMobile();\n\t\t\treturn event;\n\t\t});\n };\n\n setup();\n\n exports.closeNotebookSidebar = closeSidebar;\n})();\n","type":"application/javascript","module-type":"global","creator":"NicolasPetton"},"$:/plugins/linonetwo/itonnote/Startup/electron-ipc-cat.js":{"title":"$:/plugins/linonetwo/itonnote/Startup/electron-ipc-cat.js","text":"'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, basedir, module) {\n return module = {\n path: basedir,\n exports: {},\n require: function (path, base) {\n return commonjsRequire(path, base === undefined || base === null ? module.path : base);\n }\n }, fn(module, module.exports), module.exports;\n}\n\nfunction getAugmentedNamespace(n) {\n if (n.__esModule) return n;\n var a = Object.defineProperty({}, '__esModule', {\n value: true\n });\n Object.keys(n).forEach(function (k) {\n var d = Object.getOwnPropertyDescriptor(n, k);\n Object.defineProperty(a, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return n[k];\n }\n });\n });\n return a;\n}\n\nfunction commonjsRequire() {\n throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n\nfunction __spreadArray(to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) to[j] = from[i];\n\n return to;\n}\n\nfunction __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nfunction __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\n\nfunction __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nfunction createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n\nvar UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n\n this.message = errors ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) {\n return i + 1 + \") \" + err.toString();\n }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n\nfunction arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n\nvar Subscription = function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._teardowns = null;\n }\n\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n\n var errors;\n\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n\n if (_parentage) {\n this._parentage = null;\n\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n var initialTeardown = this.initialTeardown;\n\n if (isFunction(initialTeardown)) {\n try {\n initialTeardown();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n var _teardowns = this._teardowns;\n\n if (_teardowns) {\n this._teardowns = null;\n\n try {\n for (var _teardowns_1 = __values(_teardowns), _teardowns_1_1 = _teardowns_1.next(); !_teardowns_1_1.done; _teardowns_1_1 = _teardowns_1.next()) {\n var teardown_1 = _teardowns_1_1.value;\n\n try {\n execTeardown(teardown_1);\n } catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n } else {\n errors.push(err);\n }\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_teardowns_1_1 && !_teardowns_1_1.done && (_b = _teardowns_1.return)) _b.call(_teardowns_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n\n Subscription.prototype.add = function (teardown) {\n var _a;\n\n if (teardown && teardown !== this) {\n if (this.closed) {\n execTeardown(teardown);\n } else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n\n teardown._addParent(this);\n }\n\n (this._teardowns = (_a = this._teardowns) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent);\n };\n\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n\n Subscription.prototype.remove = function (teardown) {\n var _teardowns = this._teardowns;\n _teardowns && arrRemove(_teardowns, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n\n Subscription.EMPTY = function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n }();\n\n return Subscription;\n}();\n\nvar EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nfunction isSubscription(value) {\n return value instanceof Subscription || value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe);\n}\n\nfunction execTeardown(teardown) {\n if (isFunction(teardown)) {\n teardown();\n } else {\n teardown.unsubscribe();\n }\n}\n\nvar config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false\n};\nvar timeoutProvider = {\n setTimeout: function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) || setTimeout).apply(void 0, __spreadArray([], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined\n};\n\nfunction reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n\n if (onUnhandledError) {\n onUnhandledError(err);\n } else {\n throw err;\n }\n });\n}\n\nfunction noop() {}\n\nvar COMPLETE_NOTIFICATION = function () {\n return createNotification('C', undefined, undefined);\n}();\n\nfunction errorNotification(error) {\n return createNotification('E', undefined, error);\n}\n\nfunction nextNotification(value) {\n return createNotification('N', value, undefined);\n}\n\nfunction createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error\n };\n}\n\nvar context = null;\n\nfunction errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n\n if (isRoot) {\n context = {\n errorThrown: false,\n error: null\n };\n }\n\n cb();\n\n if (isRoot) {\n var _a = context,\n errorThrown = _a.errorThrown,\n error = _a.error;\n context = null;\n\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n cb();\n }\n}\n\nfunction captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n\nvar Subscriber = function (_super) {\n __extends(Subscriber, _super);\n\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n\n _this.isStopped = false;\n\n if (destination) {\n _this.destination = destination;\n\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n } else {\n _this.destination = EMPTY_OBSERVER;\n }\n\n return _this;\n }\n\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value);\n }\n };\n\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n\n this._error(err);\n }\n };\n\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n\n this._complete();\n }\n };\n\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n\n _super.prototype.unsubscribe.call(this);\n\n this.destination = null;\n }\n };\n\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n };\n\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n };\n\n return Subscriber;\n}(Subscription);\n\nvar SafeSubscriber = function (_super) {\n __extends(SafeSubscriber, _super);\n\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n\n var next;\n\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n } else if (observerOrNext) {\n next = observerOrNext.next, error = observerOrNext.error, complete = observerOrNext.complete;\n var context_1;\n\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n\n context_1.unsubscribe = function () {\n return _this.unsubscribe();\n };\n } else {\n context_1 = observerOrNext;\n }\n\n next = next === null || next === void 0 ? void 0 : next.bind(context_1);\n error = error === null || error === void 0 ? void 0 : error.bind(context_1);\n complete = complete === null || complete === void 0 ? void 0 : complete.bind(context_1);\n }\n\n _this.destination = {\n next: next ? wrapForErrorHandling(next) : noop,\n error: wrapForErrorHandling(error !== null && error !== void 0 ? error : defaultErrorHandler),\n complete: complete ? wrapForErrorHandling(complete) : noop\n };\n return _this;\n }\n\n return SafeSubscriber;\n}(Subscriber);\n\nfunction wrapForErrorHandling(handler, instance) {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n try {\n handler.apply(void 0, __spreadArray([], __read(args)));\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(err);\n } else {\n reportUnhandledError(err);\n }\n }\n };\n}\n\nfunction defaultErrorHandler(err) {\n throw err;\n}\n\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () {\n return onStoppedNotification(notification, subscriber);\n });\n}\n\nvar EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop\n};\n\nvar observable = function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n}();\n\nfunction identity(x) {\n return x;\n}\n\nfunction pipe() {\n var fns = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n\n return pipeFromArray(fns);\n}\n\nfunction pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input) {\n return fns.reduce(function (prev, fn) {\n return fn(prev);\n }, input);\n };\n}\n\nvar Observable = function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this,\n operator = _a.operator,\n source = _a.source;\n subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n } catch (err) {\n sink.error(err);\n }\n };\n\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();\n }\n }, reject, resolve);\n });\n };\n\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n\n Observable.prototype[observable] = function () {\n return this;\n };\n\n Observable.prototype.pipe = function () {\n var operations = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n\n return pipeFromArray(operations)(this);\n };\n\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n\n _this.subscribe(function (x) {\n return value = x;\n }, function (err) {\n return reject(err);\n }, function () {\n return resolve(value);\n });\n });\n };\n\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n\n return Observable;\n}();\n\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\n\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber(value) {\n return value && value instanceof Subscriber || isObserver(value) && isSubscription(value);\n}\n\nfunction hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\n\nfunction operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n } catch (err) {\n this.error(err);\n }\n });\n }\n\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n\nvar OperatorSubscriber = function (_super) {\n __extends(OperatorSubscriber, _super);\n\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n var _this = _super.call(this, destination) || this;\n\n _this.onFinalize = onFinalize;\n _this._next = onNext ? function (value) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n } : _super.prototype._next;\n _this._error = onError ? function (err) {\n try {\n onError(err);\n } catch (err) {\n destination.error(err);\n } finally {\n this.unsubscribe();\n }\n } : _super.prototype._error;\n _this._complete = onComplete ? function () {\n try {\n onComplete();\n } catch (err) {\n destination.error(err);\n } finally {\n this.unsubscribe();\n }\n } : _super.prototype._complete;\n return _this;\n }\n\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n\n var closed = this.closed;\n\n _super.prototype.unsubscribe.call(this);\n\n !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n };\n\n return OperatorSubscriber;\n}(Subscriber);\n\nfunction refCount() {\n return operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = new OperatorSubscriber(subscriber, undefined, undefined, undefined, function () {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n\n var sharedConnection = source._connection;\n var conn = connection;\n connection = null;\n\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\n\nvar ConnectableObservable = function (_super) {\n __extends(ConnectableObservable, _super);\n\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._subject = null;\n _this._refCount = 0;\n _this._connection = null;\n\n if (hasLift(source)) {\n _this.lift = source.lift;\n }\n\n return _this;\n }\n\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n\n return this._subject;\n };\n\n ConnectableObservable.prototype._teardown = function () {\n this._refCount = 0;\n var _connection = this._connection;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n };\n\n ConnectableObservable.prototype.connect = function () {\n var _this = this;\n\n var connection = this._connection;\n\n if (!connection) {\n connection = this._connection = new Subscription();\n var subject_1 = this.getSubject();\n connection.add(this.source.subscribe(new OperatorSubscriber(subject_1, undefined, function () {\n _this._teardown();\n\n subject_1.complete();\n }, function (err) {\n _this._teardown();\n\n subject_1.error(err);\n }, function () {\n return _this._teardown();\n })));\n\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n\n return connection;\n };\n\n ConnectableObservable.prototype.refCount = function () {\n return refCount()(this);\n };\n\n return ConnectableObservable;\n}(Observable);\n\nvar performanceTimestampProvider = {\n now: function () {\n return (performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined\n};\nvar animationFrameProvider = {\n schedule: function (callback) {\n var request = requestAnimationFrame;\n var cancel = cancelAnimationFrame;\n var delegate = animationFrameProvider.delegate;\n\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n\n var handle = request(function (timestamp) {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(function () {\n return cancel === null || cancel === void 0 ? void 0 : cancel(handle);\n });\n },\n requestAnimationFrame: function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n cancelAnimationFrame: function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n delegate: undefined\n};\n\nfunction animationFrames(timestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\n\nfunction animationFramesFactory(timestampProvider) {\n var schedule = animationFrameProvider.schedule;\n return new Observable(function (subscriber) {\n var subscription = new Subscription();\n var provider = timestampProvider || performanceTimestampProvider;\n var start = provider.now();\n\n var run = function (timestamp) {\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start\n });\n\n if (!subscriber.closed) {\n subscription.add(schedule(run));\n }\n };\n\n subscription.add(schedule(run));\n return subscription;\n });\n}\n\nvar DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\nvar ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n\nvar Subject = function (_super) {\n __extends(Subject, _super);\n\n function Subject() {\n var _this = _super.call(this) || this;\n\n _this.closed = false;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n\n Subject.prototype.next = function (value) {\n var _this = this;\n\n errorContext(function () {\n var e_1, _a;\n\n _this._throwIfClosed();\n\n if (!_this.isStopped) {\n var copy = _this.observers.slice();\n\n try {\n for (var copy_1 = __values(copy), copy_1_1 = copy_1.next(); !copy_1_1.done; copy_1_1 = copy_1.next()) {\n var observer = copy_1_1.value;\n observer.next(value);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (copy_1_1 && !copy_1_1.done && (_a = copy_1.return)) _a.call(copy_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n });\n };\n\n Subject.prototype.error = function (err) {\n var _this = this;\n\n errorContext(function () {\n _this._throwIfClosed();\n\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n\n Subject.prototype.complete = function () {\n var _this = this;\n\n errorContext(function () {\n _this._throwIfClosed();\n\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = null;\n };\n\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n\n this._checkFinalizedStatuses(subscriber);\n\n return this._innerSubscribe(subscriber);\n };\n\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _a = this,\n hasError = _a.hasError,\n isStopped = _a.isStopped,\n observers = _a.observers;\n\n return hasError || isStopped ? EMPTY_SUBSCRIPTION : (observers.push(subscriber), new Subscription(function () {\n return arrRemove(observers, subscriber);\n }));\n };\n\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this,\n hasError = _a.hasError,\n thrownError = _a.thrownError,\n isStopped = _a.isStopped;\n\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n };\n\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n\n return Subject;\n}(Observable);\n\nvar AnonymousSubject = function (_super) {\n __extends(AnonymousSubject, _super);\n\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n\n return AnonymousSubject;\n}(Subject);\n\nvar BehaviorSubject = function (_super) {\n __extends(BehaviorSubject, _super);\n\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n\n _this._value = _value;\n return _this;\n }\n\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n\n BehaviorSubject.prototype.getValue = function () {\n var _a = this,\n hasError = _a.hasError,\n thrownError = _a.thrownError,\n _value = _a._value;\n\n if (hasError) {\n throw thrownError;\n }\n\n this._throwIfClosed();\n\n return _value;\n };\n\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, this._value = value);\n };\n\n return BehaviorSubject;\n}(Subject);\n\nvar dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined\n};\n\nvar ReplaySubject = function (_super) {\n __extends(ReplaySubject, _super);\n\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) {\n _bufferSize = Infinity;\n }\n\n if (_windowTime === void 0) {\n _windowTime = Infinity;\n }\n\n if (_timestampProvider === void 0) {\n _timestampProvider = dateTimestampProvider;\n }\n\n var _this = _super.call(this) || this;\n\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n\n ReplaySubject.prototype.next = function (value) {\n var _a = this,\n isStopped = _a.isStopped,\n _buffer = _a._buffer,\n _infiniteTimeWindow = _a._infiniteTimeWindow,\n _timestampProvider = _a._timestampProvider,\n _windowTime = _a._windowTime;\n\n if (!isStopped) {\n _buffer.push(value);\n\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n\n this._trimBuffer();\n\n _super.prototype.next.call(this, value);\n };\n\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n\n this._trimBuffer();\n\n var subscription = this._innerSubscribe(subscriber);\n\n var _a = this,\n _infiniteTimeWindow = _a._infiniteTimeWindow,\n _buffer = _a._buffer;\n\n var copy = _buffer.slice();\n\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n };\n\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this,\n _bufferSize = _a._bufferSize,\n _timestampProvider = _a._timestampProvider,\n _buffer = _a._buffer,\n _infiniteTimeWindow = _a._infiniteTimeWindow;\n\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n\n var last = 0;\n\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n\n last && _buffer.splice(0, last + 1);\n }\n };\n\n return ReplaySubject;\n}(Subject);\n\nvar AsyncSubject = function (_super) {\n __extends(AsyncSubject, _super);\n\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._value = null;\n _this._hasValue = false;\n _this._isComplete = false;\n return _this;\n }\n\n AsyncSubject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this,\n hasError = _a.hasError,\n _hasValue = _a._hasValue,\n _value = _a._value,\n thrownError = _a.thrownError,\n isStopped = _a.isStopped,\n _isComplete = _a._isComplete;\n\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped || _isComplete) {\n _hasValue && subscriber.next(_value);\n subscriber.complete();\n }\n };\n\n AsyncSubject.prototype.next = function (value) {\n if (!this.isStopped) {\n this._value = value;\n this._hasValue = true;\n }\n };\n\n AsyncSubject.prototype.complete = function () {\n var _a = this,\n _hasValue = _a._hasValue,\n _value = _a._value,\n _isComplete = _a._isComplete;\n\n if (!_isComplete) {\n this._isComplete = true;\n _hasValue && _super.prototype.next.call(this, _value);\n\n _super.prototype.complete.call(this);\n }\n };\n\n return AsyncSubject;\n}(Subject);\n\nvar Action = function (_super) {\n __extends(Action, _super);\n\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n\n Action.prototype.schedule = function (state, delay) {\n return this;\n };\n\n return Action;\n}(Subscription);\n\nvar intervalProvider = {\n setInterval: function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) || setInterval).apply(void 0, __spreadArray([], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined\n};\n\nvar AsyncAction = function (_super) {\n __extends(AsyncAction, _super);\n\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (this.closed) {\n return this;\n }\n\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n\n intervalProvider.clearInterval(id);\n return undefined;\n };\n\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n\n var error = this._execute(state, delay);\n\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this,\n id = _a.id,\n scheduler = _a.scheduler;\n\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null;\n\n _super.prototype.unsubscribe.call(this);\n }\n };\n\n return AsyncAction;\n}(Action);\n\nvar nextHandle = 1;\nvar resolved;\nvar activeHandles = {};\n\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n\n return false;\n}\n\nvar Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n\n if (!resolved) {\n resolved = Promise.resolve();\n }\n\n resolved.then(function () {\n return findAndClearHandle(handle) && cb();\n });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n }\n};\nvar setImmediate = Immediate.setImmediate,\n clearImmediate = Immediate.clearImmediate;\nvar immediateProvider = {\n setImmediate: function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args)));\n },\n clearImmediate: function (handle) {\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined\n};\n\nvar AsapAction = function (_super) {\n __extends(AsapAction, _super);\n\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay != null && delay > 0 || delay == null && this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n\n if (scheduler.actions.length === 0) {\n immediateProvider.clearImmediate(id);\n scheduler._scheduled = undefined;\n }\n\n return undefined;\n };\n\n return AsapAction;\n}(AsyncAction);\n\nvar Scheduler = function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}();\n\nvar AsyncScheduler = function (_super) {\n __extends(AsyncScheduler, _super);\n\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n\n var _this = _super.call(this, SchedulerAction, now) || this;\n\n _this.actions = [];\n _this._active = false;\n _this._scheduled = undefined;\n return _this;\n }\n\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n\n if (this._active) {\n actions.push(action);\n return;\n }\n\n var error;\n this._active = true;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n\n this._active = false;\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n\n throw error;\n }\n };\n\n return AsyncScheduler;\n}(Scheduler);\n\nvar AsapScheduler = function (_super) {\n __extends(AsapScheduler, _super);\n\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AsapScheduler.prototype.flush = function (action) {\n this._active = true;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n action = action || actions.shift();\n var count = actions.length;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this._active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n\n throw error;\n }\n };\n\n return AsapScheduler;\n}(AsyncScheduler);\n\nvar asapScheduler = new AsapScheduler(AsapAction);\nvar asap = asapScheduler;\nvar asyncScheduler = new AsyncScheduler(AsyncAction);\nvar async = asyncScheduler;\n\nvar QueueAction = function (_super) {\n __extends(QueueAction, _super);\n\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n\n QueueAction.prototype.execute = function (state, delay) {\n return delay > 0 || this.closed ? _super.prototype.execute.call(this, state, delay) : this._execute(state, delay);\n };\n\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay != null && delay > 0 || delay == null && this.delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n\n return scheduler.flush(this);\n };\n\n return QueueAction;\n}(AsyncAction);\n\nvar QueueScheduler = function (_super) {\n __extends(QueueScheduler, _super);\n\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return QueueScheduler;\n}(AsyncScheduler);\n\nvar queueScheduler = new QueueScheduler(QueueAction);\nvar queue = queueScheduler;\n\nvar AnimationFrameAction = function (_super) {\n __extends(AnimationFrameAction, _super);\n\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(function () {\n return scheduler.flush(undefined);\n }));\n };\n\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay != null && delay > 0 || delay == null && this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n\n if (scheduler.actions.length === 0) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n\n return undefined;\n };\n\n return AnimationFrameAction;\n}(AsyncAction);\n\nvar AnimationFrameScheduler = function (_super) {\n __extends(AnimationFrameScheduler, _super);\n\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AnimationFrameScheduler.prototype.flush = function (action) {\n this._active = true;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n action = action || actions.shift();\n var count = actions.length;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this._active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n\n throw error;\n }\n };\n\n return AnimationFrameScheduler;\n}(AsyncScheduler);\n\nvar animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nvar animationFrame = animationFrameScheduler;\n\nvar VirtualTimeScheduler = function (_super) {\n __extends(VirtualTimeScheduler, _super);\n\n function VirtualTimeScheduler(schedulerActionCtor, maxFrames) {\n if (schedulerActionCtor === void 0) {\n schedulerActionCtor = VirtualAction;\n }\n\n if (maxFrames === void 0) {\n maxFrames = Infinity;\n }\n\n var _this = _super.call(this, schedulerActionCtor, function () {\n return _this.frame;\n }) || this;\n\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this,\n actions = _a.actions,\n maxFrames = _a.maxFrames;\n\n var error;\n var action;\n\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n }\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n\n throw error;\n }\n };\n\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler);\n\nvar VirtualAction = function (_super) {\n __extends(VirtualAction, _super);\n\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) {\n index = scheduler.index += 1;\n }\n\n var _this = _super.call(this, scheduler, work) || this;\n\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (Number.isFinite(delay)) {\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n } else {\n return Subscription.EMPTY;\n }\n };\n\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return true;\n };\n\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n return undefined;\n };\n\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n } else if (a.index > b.index) {\n return 1;\n } else {\n return -1;\n }\n } else if (a.delay > b.delay) {\n return 1;\n } else {\n return -1;\n }\n };\n\n return VirtualAction;\n}(AsyncAction);\n\nvar EMPTY = new Observable(function (subscriber) {\n return subscriber.complete();\n});\n\nfunction empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) {\n return scheduler.schedule(function () {\n return subscriber.complete();\n });\n });\n}\n\nfunction scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n } else {\n subscriber.next(input[i++]);\n\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n\nvar isArrayLike = function (x) {\n return x && typeof x.length === 'number' && typeof x !== 'function';\n};\n\nfunction isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n\nfunction scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable$1 = input[observable]();\n sub.add(observable$1.subscribe({\n next: function (value) {\n sub.add(scheduler.schedule(function () {\n return subscriber.next(value);\n }));\n },\n error: function (err) {\n sub.add(scheduler.schedule(function () {\n return subscriber.error(err);\n }));\n },\n complete: function () {\n sub.add(scheduler.schedule(function () {\n return subscriber.complete();\n }));\n }\n }));\n }));\n return sub;\n });\n}\n\nfunction schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n return scheduler.schedule(function () {\n return input.then(function (value) {\n subscriber.add(scheduler.schedule(function () {\n subscriber.next(value);\n subscriber.add(scheduler.schedule(function () {\n return subscriber.complete();\n }));\n }));\n }, function (err) {\n subscriber.add(scheduler.schedule(function () {\n return subscriber.error(err);\n }));\n });\n });\n });\n}\n\nfunction getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n\n return Symbol.iterator;\n}\n\nvar iterator = getSymbolIterator();\n\nfunction caughtSchedule(subscriber, scheduler, execute, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n var subscription = scheduler.schedule(function () {\n try {\n execute.call(this);\n } catch (err) {\n subscriber.error(err);\n }\n }, delay);\n subscriber.add(subscription);\n return subscription;\n}\n\nfunction scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator$1;\n subscriber.add(scheduler.schedule(function () {\n iterator$1 = input[iterator]();\n caughtSchedule(subscriber, scheduler, function () {\n var _a = iterator$1.next(),\n value = _a.value,\n done = _a.done;\n\n if (done) {\n subscriber.complete();\n } else {\n subscriber.next(value);\n this.schedule();\n }\n });\n }));\n return function () {\n return isFunction(iterator$1 === null || iterator$1 === void 0 ? void 0 : iterator$1.return) && iterator$1.return();\n };\n });\n}\n\nfunction scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var iterator = input[Symbol.asyncIterator]();\n sub.add(scheduler.schedule(function () {\n var _this = this;\n\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n } else {\n subscriber.next(result.value);\n\n _this.schedule();\n }\n });\n }));\n }));\n return sub;\n });\n}\n\nfunction isInteropObservable(input) {\n return isFunction(input[observable]);\n}\n\nfunction isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[iterator]);\n}\n\nfunction isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n\nfunction createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n\nfunction readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n\n case 1:\n _b.trys.push([1,, 9, 10]);\n\n _b.label = 2;\n\n case 2:\n return [4, __await(reader.read())];\n\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n\n case 4:\n return [2, _b.sent()];\n\n case 5:\n return [4, __await(value)];\n\n case 6:\n return [4, _b.sent()];\n\n case 7:\n _b.sent();\n\n return [3, 2];\n\n case 8:\n return [3, 10];\n\n case 9:\n reader.releaseLock();\n return [7];\n\n case 10:\n return [2];\n }\n });\n });\n}\n\nfunction isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n\nfunction scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n\nfunction scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n\n throw createInvalidObservableTypeError(input);\n}\n\nfunction from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n\nfunction innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n\n if (isPromise(input)) {\n return fromPromise(input);\n }\n\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n\n if (isIterable(input)) {\n return fromIterable(input);\n }\n\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n\n throw createInvalidObservableTypeError(input);\n}\n\nfunction fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[observable]();\n\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\n\nfunction fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n\n subscriber.complete();\n });\n}\n\nfunction fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) {\n return subscriber.error(err);\n }).then(null, reportUnhandledError);\n });\n}\n\nfunction fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n\n if (subscriber.closed) {\n return;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n subscriber.complete();\n });\n}\n\nfunction fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) {\n return subscriber.error(err);\n });\n });\n}\n\nfunction fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\n\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n\n var e_2, _a;\n\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n\n case 1:\n return [4, asyncIterable_1.next()];\n\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n\n if (subscriber.closed) {\n return [2];\n }\n\n _b.label = 3;\n\n case 3:\n return [3, 1];\n\n case 4:\n return [3, 11];\n\n case 5:\n e_2_1 = _b.sent();\n e_2 = {\n error: e_2_1\n };\n return [3, 11];\n\n case 6:\n _b.trys.push([6,, 9, 10]);\n\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n\n case 7:\n _b.sent();\n\n _b.label = 8;\n\n case 8:\n return [3, 10];\n\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n\n case 10:\n return [7];\n\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n\nfunction internalFromArray(input, scheduler) {\n return scheduler ? scheduleArray(input, scheduler) : fromArrayLike(input);\n}\n\nfunction isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n\nfunction last$1(arr) {\n return arr[arr.length - 1];\n}\n\nfunction popResultSelector(args) {\n return isFunction(last$1(args)) ? args.pop() : undefined;\n}\n\nfunction popScheduler(args) {\n return isScheduler(last$1(args)) ? args.pop() : undefined;\n}\n\nfunction popNumber(args, defaultValue) {\n return typeof last$1(args) === 'number' ? args.pop() : defaultValue;\n}\n\nfunction of() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var scheduler = popScheduler(args);\n return scheduler ? scheduleArray(args, scheduler) : internalFromArray(args);\n}\n\nfunction throwError(errorOrErrorFactory, scheduler) {\n var errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function () {\n return errorOrErrorFactory;\n };\n\n var init = function (subscriber) {\n return subscriber.error(errorFactory());\n };\n\n return new Observable(scheduler ? function (subscriber) {\n return scheduler.schedule(init, 0, subscriber);\n } : init);\n}\n\nvar NotificationKind;\n\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\n\nvar Notification = function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n\n Notification.prototype.observe = function (observer) {\n return observeNotification(this, observer);\n };\n\n Notification.prototype.do = function (nextHandler, errorHandler, completeHandler) {\n var _a = this,\n kind = _a.kind,\n value = _a.value,\n error = _a.error;\n\n return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();\n };\n\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n var _a;\n\n return isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next) ? this.observe(nextOrObserver) : this.do(nextOrObserver, error, complete);\n };\n\n Notification.prototype.toObservable = function () {\n var _a = this,\n kind = _a.kind,\n value = _a.value,\n error = _a.error;\n\n var result = kind === 'N' ? of(value) : kind === 'E' ? throwError(function () {\n return error;\n }) : kind === 'C' ? EMPTY : 0;\n\n if (!result) {\n throw new TypeError(\"Unexpected notification kind \" + kind);\n }\n\n return result;\n };\n\n Notification.createNext = function (value) {\n return new Notification('N', value);\n };\n\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n\n Notification.completeNotification = new Notification('C');\n return Notification;\n}();\n\nfunction observeNotification(notification, observer) {\n var _a, _b, _c;\n\n var _d = notification,\n kind = _d.kind,\n value = _d.value,\n error = _d.error;\n\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n\n kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n}\n\nfunction isObservable(obj) {\n return !!obj && (obj instanceof Observable || isFunction(obj.lift) && isFunction(obj.subscribe));\n}\n\nvar EmptyError = createErrorClass(function (_super) {\n return function EmptyErrorImpl() {\n _super(this);\n\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n };\n});\n\nfunction lastValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var _hasValue = false;\n\n var _value;\n\n source.subscribe({\n next: function (value) {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: function () {\n if (_hasValue) {\n resolve(_value);\n } else if (hasConfig) {\n resolve(config.defaultValue);\n } else {\n reject(new EmptyError());\n }\n }\n });\n });\n}\n\nfunction firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: function () {\n if (hasConfig) {\n resolve(config.defaultValue);\n } else {\n reject(new EmptyError());\n }\n }\n });\n source.subscribe(subscriber);\n });\n}\n\nvar ArgumentOutOfRangeError = createErrorClass(function (_super) {\n return function ArgumentOutOfRangeErrorImpl() {\n _super(this);\n\n this.name = 'ArgumentOutOfRangeError';\n this.message = 'argument out of range';\n };\n});\nvar NotFoundError = createErrorClass(function (_super) {\n return function NotFoundErrorImpl(message) {\n _super(this);\n\n this.name = 'NotFoundError';\n this.message = message;\n };\n});\nvar SequenceError = createErrorClass(function (_super) {\n return function SequenceErrorImpl(message) {\n _super(this);\n\n this.name = 'SequenceError';\n this.message = message;\n };\n});\n\nfunction isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n\nvar TimeoutError = createErrorClass(function (_super) {\n return function TimeoutErrorImpl(info) {\n if (info === void 0) {\n info = null;\n }\n\n _super(this);\n\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n };\n});\n\nfunction timeout(config, schedulerArg) {\n var _a = isValidDate(config) ? {\n first: config\n } : typeof config === 'number' ? {\n each: config\n } : config,\n first = _a.first,\n each = _a.each,\n _b = _a.with,\n _with = _b === void 0 ? timeoutErrorFactory : _b,\n _c = _a.scheduler,\n scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c,\n _d = _a.meta,\n meta = _d === void 0 ? null : _d;\n\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n\n return operate(function (source, subscriber) {\n var originalSourceSubscription;\n var timerSubscription;\n var lastValue = null;\n var seen = 0;\n\n var startTimer = function (delay) {\n timerSubscription = caughtSchedule(subscriber, scheduler, function () {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen\n })).subscribe(subscriber);\n }, delay);\n };\n\n originalSourceSubscription = source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n seen++;\n subscriber.next(lastValue = value);\n each > 0 && startTimer(each);\n }, undefined, undefined, function () {\n if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n }\n\n lastValue = null;\n }));\n startTimer(first != null ? typeof first === 'number' ? first : +first - scheduler.now() : each);\n });\n}\n\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n\nfunction subscribeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () {\n return source.subscribe(subscriber);\n }, delay));\n });\n}\n\nfunction map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n\nvar isArray$2 = Array.isArray;\n\nfunction callOrApply(fn, args) {\n return isArray$2(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\n\nfunction mapOneOrManyArgs(fn) {\n return map(function (args) {\n return callOrApply(fn, args);\n });\n}\n\nfunction observeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return subscriber.add(scheduler.schedule(function () {\n return subscriber.next(value);\n }, delay));\n }, function () {\n return subscriber.add(scheduler.schedule(function () {\n return subscriber.complete();\n }, delay));\n }, function (err) {\n return subscriber.add(scheduler.schedule(function () {\n return subscriber.error(err);\n }, delay));\n }));\n });\n}\n\nfunction bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler).apply(this, args).pipe(mapOneOrManyArgs(resultSelector));\n };\n }\n }\n\n if (scheduler) {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return bindCallbackInternals(isNodeStyle, callbackFunc).apply(this, args).pipe(subscribeOn(scheduler), observeOn(scheduler));\n };\n }\n\n return function () {\n var _this = this;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var subject = new AsyncSubject();\n var uninitialized = true;\n return new Observable(function (subscriber) {\n var subs = subject.subscribe(subscriber);\n\n if (uninitialized) {\n uninitialized = false;\n var isAsync_1 = false;\n var isComplete_1 = false;\n callbackFunc.apply(_this, __spreadArray(__spreadArray([], __read(args)), [function () {\n var results = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n results[_i] = arguments[_i];\n }\n\n if (isNodeStyle) {\n var err = results.shift();\n\n if (err != null) {\n subject.error(err);\n return;\n }\n }\n\n subject.next(1 < results.length ? results : results[0]);\n isComplete_1 = true;\n\n if (isAsync_1) {\n subject.complete();\n }\n }]));\n\n if (isComplete_1) {\n subject.complete();\n }\n\n isAsync_1 = true;\n }\n\n return subs;\n });\n };\n}\n\nfunction bindCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals(false, callbackFunc, resultSelector, scheduler);\n}\n\nfunction bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals(true, callbackFunc, resultSelector, scheduler);\n}\n\nvar isArray$1 = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf,\n objectProto = Object.prototype,\n getKeys = Object.keys;\n\nfunction argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n\n if (isArray$1(first_1)) {\n return {\n args: first_1,\n keys: null\n };\n }\n\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) {\n return first_1[key];\n }),\n keys: keys\n };\n }\n }\n\n return {\n args: args,\n keys: null\n };\n}\n\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n\nfunction createObject(keys, values) {\n return keys.reduce(function (result, key, i) {\n return result[key] = values[i], result;\n }, {});\n}\n\nfunction combineLatest$1() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var scheduler = popScheduler(args);\n var resultSelector = popResultSelector(args);\n\n var _a = argsArgArrayOrObject(args),\n observables = _a.args,\n keys = _a.keys;\n\n if (observables.length === 0) {\n return from([], scheduler);\n }\n\n var result = new Observable(combineLatestInit(observables, scheduler, keys ? function (values) {\n return createObject(keys, values);\n } : identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n\nfunction combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) {\n valueTransform = identity;\n }\n\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (! --active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\n\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n subscription.add(scheduler.schedule(execute));\n } else {\n execute();\n }\n}\n\nfunction mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalTeardown) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n\n var outerNext = function (value) {\n return active < concurrent ? doInnerSub(value) : buffer.push(value);\n };\n\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(new OperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n\n if (expand) {\n outerNext(innerValue);\n } else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n innerSubScheduler ? subscriber.add(innerSubScheduler.schedule(function () {\n return doInnerSub(bufferedValue);\n })) : doInnerSub(bufferedValue);\n };\n\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n\n checkComplete();\n } catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalTeardown === null || additionalTeardown === void 0 ? void 0 : additionalTeardown();\n };\n}\n\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Infinity;\n }\n\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) {\n return map(function (b, ii) {\n return resultSelector(a, b, i, ii);\n })(innerFrom(project(a, i)));\n }, concurrent);\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n\n return operate(function (source, subscriber) {\n return mergeInternals(source, subscriber, project, concurrent);\n });\n}\n\nfunction mergeAll(concurrent) {\n if (concurrent === void 0) {\n concurrent = Infinity;\n }\n\n return mergeMap(identity, concurrent);\n}\n\nfunction concatAll() {\n return mergeAll(1);\n}\n\nfunction concat$1() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return concatAll()(internalFromArray(args, popScheduler(args)));\n}\n\nfunction defer(observableFactory) {\n return new Observable(function (subscriber) {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n\nvar DEFAULT_CONFIG$1 = {\n connector: function () {\n return new Subject();\n },\n resetOnDisconnect: true\n};\n\nfunction connectable(source, config) {\n if (config === void 0) {\n config = DEFAULT_CONFIG$1;\n }\n\n var connection = null;\n var connector = config.connector,\n _a = config.resetOnDisconnect,\n resetOnDisconnect = _a === void 0 ? true : _a;\n var subject = connector();\n var result = new Observable(function (subscriber) {\n return subject.subscribe(subscriber);\n });\n\n result.connect = function () {\n if (!connection || connection.closed) {\n connection = defer(function () {\n return source;\n }).subscribe(subject);\n\n if (resetOnDisconnect) {\n connection.add(function () {\n return subject = connector();\n });\n }\n }\n\n return connection;\n };\n\n return result;\n}\n\nfunction forkJoin() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var resultSelector = popResultSelector(args);\n\n var _a = argsArgArrayOrObject(args),\n sources = _a.args,\n keys = _a.keys;\n\n var result = new Observable(function (subscriber) {\n var length = sources.length;\n\n if (!length) {\n subscriber.complete();\n return;\n }\n\n var values = new Array(length);\n var remainingCompletions = length;\n var remainingEmissions = length;\n\n var _loop_1 = function (sourceIndex) {\n var hasValue = false;\n innerFrom(sources[sourceIndex]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n\n values[sourceIndex] = value;\n }, function () {\n if (! --remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject(keys, values) : values);\n }\n\n subscriber.complete();\n }\n }));\n };\n\n for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n _loop_1(sourceIndex);\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\n\nfunction fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n\n var _a = __read(isEventTarget(target) ? eventTargetMethods.map(function (methodName) {\n return function (handler) {\n return target[methodName](eventName, handler, options);\n };\n }) : isNodeStyleEventEmitter(target) ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) : isJQueryStyleEventEmitter(target) ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) : [], 2),\n add = _a[0],\n remove = _a[1];\n\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) {\n return fromEvent(subTarget, eventName, options);\n })(internalFromArray(target));\n }\n }\n\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n\n add(handler);\n return function () {\n return remove(handler);\n };\n });\n}\n\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) {\n return function (handler) {\n return target[methodName](eventName, handler);\n };\n };\n}\n\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\n\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\n\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n\nfunction fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs(resultSelector));\n }\n\n return new Observable(function (subscriber) {\n var handler = function () {\n var e = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n e[_i] = arguments[_i];\n }\n\n return subscriber.next(e.length === 1 ? e[0] : e);\n };\n\n var retValue = addHandler(handler);\n return isFunction(removeHandler) ? function () {\n return removeHandler(handler, retValue);\n } : undefined;\n });\n}\n\nfunction generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) {\n var _a, _b;\n\n var resultSelector;\n var initialState;\n\n if (arguments.length === 1) {\n _a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? identity : _b, scheduler = _a.scheduler;\n } else {\n initialState = initialStateOrOptions;\n\n if (!resultSelectorOrScheduler || isScheduler(resultSelectorOrScheduler)) {\n resultSelector = identity;\n scheduler = resultSelectorOrScheduler;\n } else {\n resultSelector = resultSelectorOrScheduler;\n }\n }\n\n function gen() {\n var state;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n state = initialState;\n _a.label = 1;\n\n case 1:\n if (!(!condition || condition(state))) return [3, 4];\n return [4, resultSelector(state)];\n\n case 2:\n _a.sent();\n\n _a.label = 3;\n\n case 3:\n state = iterate(state);\n return [3, 1];\n\n case 4:\n return [2];\n }\n });\n }\n\n return defer(scheduler ? function () {\n return scheduleIterable(gen(), scheduler);\n } : gen);\n}\n\nfunction iif(condition, trueResult, falseResult) {\n return defer(function () {\n return condition() ? trueResult : falseResult;\n });\n}\n\nfunction timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) {\n dueTime = 0;\n }\n\n if (scheduler === void 0) {\n scheduler = async;\n }\n\n var intervalDuration = -1;\n\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n } else {\n intervalDuration = intervalOrScheduler;\n }\n }\n\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n\n if (due < 0) {\n due = 0;\n }\n\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n } else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n\nfunction interval(period, scheduler) {\n if (period === void 0) {\n period = 0;\n }\n\n if (scheduler === void 0) {\n scheduler = asyncScheduler;\n }\n\n if (period < 0) {\n period = 0;\n }\n\n return timer(period, period, scheduler);\n}\n\nfunction merge$1() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length ? EMPTY : sources.length === 1 ? innerFrom(sources[0]) : mergeAll(concurrent)(internalFromArray(sources, scheduler));\n}\n\nvar NEVER = new Observable(noop);\n\nfunction never() {\n return NEVER;\n}\n\nvar isArray = Array.isArray;\n\nfunction argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n\nfunction onErrorResumeNext$1() {\n var sources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n\n var nextSources = argsOrArgArray(sources);\n return operate(function (source, subscriber) {\n var remaining = __spreadArray([source], __read(nextSources));\n\n var subscribeNext = function () {\n if (!subscriber.closed) {\n if (remaining.length > 0) {\n var nextSource = void 0;\n\n try {\n nextSource = innerFrom(remaining.shift());\n } catch (err) {\n subscribeNext();\n return;\n }\n\n var innerSub = new OperatorSubscriber(subscriber, undefined, noop, noop);\n subscriber.add(nextSource.subscribe(innerSub));\n innerSub.add(subscribeNext);\n } else {\n subscriber.complete();\n }\n }\n };\n\n subscribeNext();\n });\n}\n\nfunction onErrorResumeNext() {\n var sources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n\n return onErrorResumeNext$1(argsOrArgArray(sources))(EMPTY);\n}\n\nfunction pairs(obj, scheduler) {\n return from(Object.entries(obj), scheduler);\n}\n\nfunction not(pred, thisArg) {\n return function (value, index) {\n return !pred.call(thisArg, value, index);\n };\n}\n\nfunction filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return predicate.call(thisArg, value, index++) && subscriber.next(value);\n }));\n });\n}\n\nfunction partition(source, predicate, thisArg) {\n return [filter(predicate, thisArg)(innerFrom(source)), filter(not(predicate, thisArg))(innerFrom(source))];\n}\n\nfunction race() {\n var sources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n\n sources = argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\n\nfunction raceInit(sources) {\n return function (subscriber) {\n var subscriptions = [];\n\n var _loop_1 = function (i) {\n subscriptions.push(innerFrom(sources[i]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (subscriptions) {\n for (var s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n\n subscriptions = null;\n }\n\n subscriber.next(value);\n })));\n };\n\n for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n _loop_1(i);\n }\n };\n}\n\nfunction range(start, count, scheduler) {\n if (count == null) {\n count = start;\n start = 0;\n }\n\n if (count <= 0) {\n return EMPTY;\n }\n\n var end = count + start;\n return new Observable(scheduler ? function (subscriber) {\n var n = start;\n return scheduler.schedule(function () {\n if (n < end) {\n subscriber.next(n++);\n this.schedule();\n } else {\n subscriber.complete();\n }\n });\n } : function (subscriber) {\n var n = start;\n\n while (n < end && !subscriber.closed) {\n subscriber.next(n++);\n }\n\n subscriber.complete();\n });\n}\n\nfunction using(resourceFactory, observableFactory) {\n return new Observable(function (subscriber) {\n var resource = resourceFactory();\n var result = observableFactory(resource);\n var source = result ? innerFrom(result) : EMPTY;\n source.subscribe(subscriber);\n return function () {\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n\nfunction zip$1() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var resultSelector = popResultSelector(args);\n var sources = argsOrArgArray(args);\n return sources.length ? new Observable(function (subscriber) {\n var buffers = sources.map(function () {\n return [];\n });\n var completed = sources.map(function () {\n return false;\n });\n subscriber.add(function () {\n buffers = completed = null;\n });\n\n var _loop_1 = function (sourceIndex) {\n innerFrom(sources[sourceIndex]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n buffers[sourceIndex].push(value);\n\n if (buffers.every(function (buffer) {\n return buffer.length;\n })) {\n var result = buffers.map(function (buffer) {\n return buffer.shift();\n });\n subscriber.next(resultSelector ? resultSelector.apply(void 0, __spreadArray([], __read(result))) : result);\n\n if (buffers.some(function (buffer, i) {\n return !buffer.length && completed[i];\n })) {\n subscriber.complete();\n }\n }\n }, function () {\n completed[sourceIndex] = true;\n !buffers[sourceIndex].length && subscriber.complete();\n }));\n };\n\n for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {\n _loop_1(sourceIndex);\n }\n\n return function () {\n buffers = completed = null;\n };\n }) : EMPTY;\n}\n\nfunction audit(durationSelector) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n var isComplete = false;\n\n var endDuration = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n\n isComplete && subscriber.complete();\n };\n\n var cleanupDuration = function () {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe(durationSubscriber = new OperatorSubscriber(subscriber, endDuration, cleanupDuration));\n }\n }, function () {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n\nfunction auditTime(duration, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n\n return audit(function () {\n return timer(duration, scheduler);\n });\n}\n\nfunction buffer(closingNotifier) {\n return operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return currentBuffer.push(value);\n }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n closingNotifier.subscribe(new OperatorSubscriber(subscriber, function () {\n var b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n }, noop));\n return function () {\n currentBuffer = null;\n };\n });\n}\n\nfunction bufferCount(bufferSize, startBufferEvery) {\n if (startBufferEvery === void 0) {\n startBufferEvery = null;\n }\n\n startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize;\n return operate(function (source, subscriber) {\n var buffers = [];\n var count = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a, e_2, _b;\n\n var toEmit = null;\n\n if (count++ % startBufferEvery === 0) {\n buffers.push([]);\n }\n\n try {\n for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n var buffer = buffers_1_1.value;\n buffer.push(value);\n\n if (bufferSize <= buffer.length) {\n toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : [];\n toEmit.push(buffer);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n if (toEmit) {\n try {\n for (var toEmit_1 = __values(toEmit), toEmit_1_1 = toEmit_1.next(); !toEmit_1_1.done; toEmit_1_1 = toEmit_1.next()) {\n var buffer = toEmit_1_1.value;\n arrRemove(buffers, buffer);\n subscriber.next(buffer);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (toEmit_1_1 && !toEmit_1_1.done && (_b = toEmit_1.return)) _b.call(toEmit_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n }, function () {\n var e_3, _a;\n\n try {\n for (var buffers_2 = __values(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) {\n var buffer = buffers_2_1.value;\n subscriber.next(buffer);\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (buffers_2_1 && !buffers_2_1.done && (_a = buffers_2.return)) _a.call(buffers_2);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n\n subscriber.complete();\n }, undefined, function () {\n buffers = null;\n }));\n });\n}\n\nfunction bufferTime(bufferTimeSpan) {\n var _a, _b;\n\n var otherArgs = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n\n var scheduler = (_a = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;\n var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxBufferSize = otherArgs[1] || Infinity;\n return operate(function (source, subscriber) {\n var bufferRecords = [];\n var restartOnEmit = false;\n\n var emit = function (record) {\n var buffer = record.buffer,\n subs = record.subs;\n subs.unsubscribe();\n arrRemove(bufferRecords, record);\n subscriber.next(buffer);\n restartOnEmit && startBuffer();\n };\n\n var startBuffer = function () {\n if (bufferRecords) {\n var subs = new Subscription();\n subscriber.add(subs);\n var buffer = [];\n var record_1 = {\n buffer: buffer,\n subs: subs\n };\n bufferRecords.push(record_1);\n subs.add(scheduler.schedule(function () {\n return emit(record_1);\n }, bufferTimeSpan));\n }\n };\n\n bufferCreationInterval !== null && bufferCreationInterval >= 0 ? subscriber.add(scheduler.schedule(function () {\n startBuffer();\n !this.closed && subscriber.add(this.schedule(null, bufferCreationInterval));\n }, bufferCreationInterval)) : restartOnEmit = true;\n startBuffer();\n var bufferTimeSubscriber = new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n\n var recordsCopy = bufferRecords.slice();\n\n try {\n for (var recordsCopy_1 = __values(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) {\n var record = recordsCopy_1_1.value;\n var buffer = record.buffer;\n buffer.push(value);\n maxBufferSize <= buffer.length && emit(record);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a = recordsCopy_1.return)) _a.call(recordsCopy_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }, function () {\n while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) {\n subscriber.next(bufferRecords.shift().buffer);\n }\n\n bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe();\n subscriber.complete();\n subscriber.unsubscribe();\n }, undefined, function () {\n return bufferRecords = null;\n });\n source.subscribe(bufferTimeSubscriber);\n });\n}\n\nfunction bufferToggle(openings, closingSelector) {\n return operate(function (source, subscriber) {\n var buffers = [];\n innerFrom(openings).subscribe(new OperatorSubscriber(subscriber, function (openValue) {\n var buffer = [];\n buffers.push(buffer);\n var closingSubscription = new Subscription();\n\n var emitBuffer = function () {\n arrRemove(buffers, buffer);\n subscriber.next(buffer);\n closingSubscription.unsubscribe();\n };\n\n closingSubscription.add(innerFrom(closingSelector(openValue)).subscribe(new OperatorSubscriber(subscriber, emitBuffer, noop)));\n }, noop));\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n\n try {\n for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n var buffer = buffers_1_1.value;\n buffer.push(value);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }, function () {\n while (buffers.length > 0) {\n subscriber.next(buffers.shift());\n }\n\n subscriber.complete();\n }));\n });\n}\n\nfunction bufferWhen(closingSelector) {\n return operate(function (source, subscriber) {\n var buffer = null;\n var closingSubscriber = null;\n\n var openBuffer = function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n var b = buffer;\n buffer = [];\n b && subscriber.next(b);\n innerFrom(closingSelector()).subscribe(closingSubscriber = new OperatorSubscriber(subscriber, openBuffer, noop));\n };\n\n openBuffer();\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return buffer === null || buffer === void 0 ? void 0 : buffer.push(value);\n }, function () {\n buffer && subscriber.next(buffer);\n subscriber.complete();\n }, undefined, function () {\n return buffer = closingSubscriber = null;\n }));\n });\n}\n\nfunction catchError(selector) {\n return operate(function (source, subscriber) {\n var innerSub = null;\n var syncUnsub = false;\n var handledResult;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, undefined, function (err) {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n } else {\n syncUnsub = true;\n }\n }));\n\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n\nfunction scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return function (source, subscriber) {\n var hasState = hasSeed;\n var state = seed;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var i = index++;\n state = hasState ? accumulator(state, value, i) : (hasState = true, value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete && function () {\n hasState && subscriber.next(state);\n subscriber.complete();\n }));\n };\n}\n\nfunction reduce(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n\nvar arrReducer = function (arr, value) {\n return arr.push(value), arr;\n};\n\nfunction toArray() {\n return operate(function (source, subscriber) {\n reduce(arrReducer, [])(source).subscribe(subscriber);\n });\n}\n\nfunction joinAllInternals(joinFn, project) {\n return pipe(toArray(), mergeMap(function (sources) {\n return joinFn(sources);\n }), project ? mapOneOrManyArgs(project) : identity);\n}\n\nfunction combineLatestAll(project) {\n return joinAllInternals(combineLatest$1, project);\n}\n\nvar combineAll = combineLatestAll;\n\nfunction combineLatest() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var resultSelector = popResultSelector(args);\n return resultSelector ? pipe(combineLatest.apply(void 0, __spreadArray([], __read(args))), mapOneOrManyArgs(resultSelector)) : operate(function (source, subscriber) {\n combineLatestInit(__spreadArray([source], __read(argsOrArgArray(args))))(subscriber);\n });\n}\n\nfunction combineLatestWith() {\n var otherSources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n\n return combineLatest.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n\nfunction concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n\nfunction concatMapTo(innerObservable, resultSelector) {\n return isFunction(resultSelector) ? concatMap(function () {\n return innerObservable;\n }, resultSelector) : concatMap(function () {\n return innerObservable;\n });\n}\n\nfunction concat() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var scheduler = popScheduler(args);\n return operate(function (source, subscriber) {\n concatAll()(internalFromArray(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n\nfunction concatWith() {\n var otherSources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n\n return concat.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n\nfunction fromSubscribable(subscribable) {\n return new Observable(function (subscriber) {\n return subscribable.subscribe(subscriber);\n });\n}\n\nvar DEFAULT_CONFIG = {\n connector: function () {\n return new Subject();\n }\n};\n\nfunction connect(selector, config) {\n if (config === void 0) {\n config = DEFAULT_CONFIG;\n }\n\n var connector = config.connector;\n return operate(function (source, subscriber) {\n var subject = connector();\n from(selector(fromSubscribable(subject))).subscribe(subscriber);\n subscriber.add(source.subscribe(subject));\n });\n}\n\nfunction count(predicate) {\n return reduce(function (total, value, i) {\n return !predicate || predicate(value, i) ? total + 1 : total;\n }, 0);\n}\n\nfunction debounce(durationSelector) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n\n var emit = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = new OperatorSubscriber(subscriber, emit, noop);\n innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = durationSubscriber = null;\n }));\n });\n}\n\nfunction debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) {\n scheduler = asyncScheduler;\n }\n\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n\n emit();\n }\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n\nfunction defaultIfEmpty(defaultValue) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n\n subscriber.complete();\n }));\n });\n}\n\nfunction take(count) {\n return count <= 0 ? function () {\n return EMPTY;\n } : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n\nfunction ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, noop));\n });\n}\n\nfunction mapTo(value) {\n return map(function () {\n return value;\n });\n}\n\nfunction delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat$1(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n\n return mergeMap(function (value, index) {\n return delayDurationSelector(value, index).pipe(take(1), mapTo(value));\n });\n}\n\nfunction delay(due, scheduler) {\n if (scheduler === void 0) {\n scheduler = asyncScheduler;\n }\n\n var duration = timer(due, scheduler);\n return delayWhen(function () {\n return duration;\n });\n}\n\nfunction dematerialize() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (notification) {\n return observeNotification(notification, subscriber);\n }));\n });\n}\n\nfunction distinct(keySelector, flushes) {\n return operate(function (source, subscriber) {\n var distinctKeys = new Set();\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var key = keySelector ? keySelector(value) : value;\n\n if (!distinctKeys.has(key)) {\n distinctKeys.add(key);\n subscriber.next(value);\n }\n }));\n flushes === null || flushes === void 0 ? void 0 : flushes.subscribe(new OperatorSubscriber(subscriber, function () {\n return distinctKeys.clear();\n }, noop));\n });\n}\n\nfunction distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) {\n keySelector = identity;\n }\n\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\n\nfunction defaultCompare(a, b) {\n return a === b;\n}\n\nfunction distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged(function (x, y) {\n return compare ? compare(x[key], y[key]) : x[key] === y[key];\n });\n}\n\nfunction throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) {\n errorFactory = defaultErrorFactory;\n }\n\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () {\n return hasValue ? subscriber.complete() : subscriber.error(errorFactory());\n }));\n });\n}\n\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n\nfunction elementAt(index, defaultValue) {\n if (index < 0) {\n throw new ArgumentOutOfRangeError();\n }\n\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(filter(function (v, i) {\n return i === index;\n }), take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () {\n return new ArgumentOutOfRangeError();\n }));\n };\n}\n\nfunction endWith() {\n var values = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n\n return function (source) {\n return concat$1(source, of.apply(void 0, __spreadArray([], __read(values))));\n };\n}\n\nfunction every(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (!predicate.call(thisArg, value, index++, source)) {\n subscriber.next(false);\n subscriber.complete();\n }\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\n\nfunction exhaustAll() {\n return operate(function (source, subscriber) {\n var isComplete = false;\n var innerSub = null;\n source.subscribe(new OperatorSubscriber(subscriber, function (inner) {\n if (!innerSub) {\n innerSub = innerFrom(inner).subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n }));\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n\nvar exhaust = exhaustAll;\n\nfunction exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) {\n return source.pipe(exhaustMap(function (a, i) {\n return innerFrom(project(a, i)).pipe(map(function (b, ii) {\n return resultSelector(a, b, i, ii);\n }));\n }));\n };\n }\n\n return operate(function (source, subscriber) {\n var index = 0;\n var innerSub = null;\n var isComplete = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (outerValue) {\n if (!innerSub) {\n innerSub = new OperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n\nfunction expand(project, concurrent, scheduler) {\n if (concurrent === void 0) {\n concurrent = Infinity;\n }\n\n concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;\n return operate(function (source, subscriber) {\n return mergeInternals(source, subscriber, project, concurrent, undefined, true, scheduler);\n });\n}\n\nfunction finalize(callback) {\n return operate(function (source, subscriber) {\n try {\n source.subscribe(subscriber);\n } finally {\n subscriber.add(callback);\n }\n });\n}\n\nfunction find(predicate, thisArg) {\n return operate(createFind(predicate, thisArg, 'value'));\n}\n\nfunction createFind(predicate, thisArg, emit) {\n var findIndex = emit === 'index';\n return function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var i = index++;\n\n if (predicate.call(thisArg, value, i, source)) {\n subscriber.next(findIndex ? i : value);\n subscriber.complete();\n }\n }, function () {\n subscriber.next(findIndex ? -1 : undefined);\n subscriber.complete();\n }));\n };\n}\n\nfunction findIndex(predicate, thisArg) {\n return operate(createFind(predicate, thisArg, 'index'));\n}\n\nfunction first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) {\n return predicate(v, i, source);\n }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () {\n return new EmptyError();\n }));\n };\n}\n\nfunction groupBy(keySelector, elementOrOptions, duration, connector) {\n return operate(function (source, subscriber) {\n var element;\n\n if (!elementOrOptions || typeof elementOrOptions === 'function') {\n element = elementOrOptions;\n } else {\n duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector;\n }\n\n var groups = new Map();\n\n var notify = function (cb) {\n groups.forEach(cb);\n cb(subscriber);\n };\n\n var handleError = function (err) {\n return notify(function (consumer) {\n return consumer.error(err);\n });\n };\n\n var groupBySourceSubscriber = new GroupBySubscriber(subscriber, function (value) {\n try {\n var key_1 = keySelector(value);\n var group_1 = groups.get(key_1);\n\n if (!group_1) {\n groups.set(key_1, group_1 = connector ? connector() : new Subject());\n var grouped = createGroupedObservable(key_1, group_1);\n subscriber.next(grouped);\n\n if (duration) {\n var durationSubscriber_1 = new OperatorSubscriber(group_1, function () {\n group_1.complete();\n durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe();\n }, undefined, undefined, function () {\n return groups.delete(key_1);\n });\n groupBySourceSubscriber.add(innerFrom(duration(grouped)).subscribe(durationSubscriber_1));\n }\n }\n\n group_1.next(element ? element(value) : value);\n } catch (err) {\n handleError(err);\n }\n }, function () {\n return notify(function (consumer) {\n return consumer.complete();\n });\n }, handleError, function () {\n return groups.clear();\n });\n source.subscribe(groupBySourceSubscriber);\n\n function createGroupedObservable(key, groupSubject) {\n var result = new Observable(function (groupSubscriber) {\n groupBySourceSubscriber.activeGroups++;\n var innerSub = groupSubject.subscribe(groupSubscriber);\n return function () {\n innerSub.unsubscribe();\n --groupBySourceSubscriber.activeGroups === 0 && groupBySourceSubscriber.teardownAttempted && groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\n\nvar GroupBySubscriber = function (_super) {\n __extends(GroupBySubscriber, _super);\n\n function GroupBySubscriber() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.activeGroups = 0;\n _this.teardownAttempted = false;\n return _this;\n }\n\n GroupBySubscriber.prototype.unsubscribe = function () {\n this.teardownAttempted = true;\n this.activeGroups === 0 && _super.prototype.unsubscribe.call(this);\n };\n\n return GroupBySubscriber;\n}(OperatorSubscriber);\n\nfunction isEmpty() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function () {\n subscriber.next(false);\n subscriber.complete();\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\n\nfunction takeLast(count) {\n return count <= 0 ? function () {\n return EMPTY;\n } : operate(function (source, subscriber) {\n var buffer = [];\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n buffer.push(value);\n count < buffer.length && buffer.shift();\n }, function () {\n var e_1, _a;\n\n try {\n for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {\n var value = buffer_1_1.value;\n subscriber.next(value);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n subscriber.complete();\n }, undefined, function () {\n buffer = null;\n }));\n });\n}\n\nfunction last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) {\n return predicate(v, i, source);\n }) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () {\n return new EmptyError();\n }));\n };\n}\n\nfunction materialize() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n subscriber.next(Notification.createNext(value));\n }, function () {\n subscriber.next(Notification.createComplete());\n subscriber.complete();\n }, function (err) {\n subscriber.next(Notification.createError(err));\n subscriber.complete();\n }));\n });\n}\n\nfunction max(comparer) {\n return reduce(isFunction(comparer) ? function (x, y) {\n return comparer(x, y) > 0 ? x : y;\n } : function (x, y) {\n return x > y ? x : y;\n });\n}\n\nvar flatMap = mergeMap;\n\nfunction mergeMapTo(innerObservable, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Infinity;\n }\n\n if (isFunction(resultSelector)) {\n return mergeMap(function () {\n return innerObservable;\n }, resultSelector, concurrent);\n }\n\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n\n return mergeMap(function () {\n return innerObservable;\n }, concurrent);\n}\n\nfunction mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) {\n concurrent = Infinity;\n }\n\n return operate(function (source, subscriber) {\n var state = seed;\n return mergeInternals(source, subscriber, function (value, index) {\n return accumulator(state, value, index);\n }, concurrent, function (value) {\n state = value;\n }, false, undefined, function () {\n return state = null;\n });\n });\n}\n\nfunction merge() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n args = argsOrArgArray(args);\n return operate(function (source, subscriber) {\n mergeAll(concurrent)(internalFromArray(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n\nfunction mergeWith() {\n var otherSources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n\n return merge.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n\nfunction min(comparer) {\n return reduce(isFunction(comparer) ? function (x, y) {\n return comparer(x, y) < 0 ? x : y;\n } : function (x, y) {\n return x < y ? x : y;\n });\n}\n\nfunction multicast(subjectOrSubjectFactory, selector) {\n var subjectFactory = isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () {\n return subjectOrSubjectFactory;\n };\n\n if (isFunction(selector)) {\n return connect(selector, {\n connector: subjectFactory\n });\n }\n\n return function (source) {\n return new ConnectableObservable(source, subjectFactory);\n };\n}\n\nfunction pairwise() {\n return operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n\nfunction pluck() {\n var properties = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = arguments[_i];\n }\n\n var length = properties.length;\n\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n\n return map(function (x) {\n var currentProp = x;\n\n for (var i = 0; i < length; i++) {\n var p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]];\n\n if (typeof p !== 'undefined') {\n currentProp = p;\n } else {\n return undefined;\n }\n }\n\n return currentProp;\n });\n}\n\nfunction publish(selector) {\n return selector ? function (source) {\n return connect(selector)(source);\n } : function (source) {\n return multicast(new Subject())(source);\n };\n}\n\nfunction publishBehavior(initialValue) {\n return function (source) {\n var subject = new BehaviorSubject(initialValue);\n return new ConnectableObservable(source, function () {\n return subject;\n });\n };\n}\n\nfunction publishLast() {\n return function (source) {\n var subject = new AsyncSubject();\n return new ConnectableObservable(source, function () {\n return subject;\n });\n };\n}\n\nfunction publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {\n if (selectorOrScheduler && !isFunction(selectorOrScheduler)) {\n timestampProvider = selectorOrScheduler;\n }\n\n var selector = isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;\n return function (source) {\n return multicast(new ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source);\n };\n}\n\nfunction raceWith() {\n var otherSources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n\n return !otherSources.length ? identity : operate(function (source, subscriber) {\n raceInit(__spreadArray([source], __read(otherSources)))(subscriber);\n });\n}\n\nfunction repeat(count) {\n if (count === void 0) {\n count = Infinity;\n }\n\n return count <= 0 ? function () {\n return EMPTY;\n } : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n\n var subscribeForRepeat = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n if (++soFar < count) {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRepeat();\n } else {\n syncUnsub = true;\n }\n } else {\n subscriber.complete();\n }\n }));\n\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRepeat();\n }\n };\n\n subscribeForRepeat();\n });\n}\n\nfunction repeatWhen(notifier) {\n return operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var completions$;\n var isNotifierComplete = false;\n var isMainComplete = false;\n\n var checkComplete = function () {\n return isMainComplete && isNotifierComplete && (subscriber.complete(), true);\n };\n\n var getCompletionSubject = function () {\n if (!completions$) {\n completions$ = new Subject();\n notifier(completions$).subscribe(new OperatorSubscriber(subscriber, function () {\n if (innerSub) {\n subscribeForRepeatWhen();\n } else {\n syncResub = true;\n }\n }, function () {\n isNotifierComplete = true;\n checkComplete();\n }));\n }\n\n return completions$;\n };\n\n var subscribeForRepeatWhen = function () {\n isMainComplete = false;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n isMainComplete = true;\n !checkComplete() && getCompletionSubject().next();\n }));\n\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRepeatWhen();\n }\n };\n\n subscribeForRepeatWhen();\n });\n}\n\nfunction retry(configOrCount) {\n if (configOrCount === void 0) {\n configOrCount = Infinity;\n }\n\n var config;\n\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n } else {\n config = {\n count: configOrCount\n };\n }\n\n var _a = config.count,\n count = _a === void 0 ? Infinity : _a,\n delay = config.delay,\n _b = config.resetOnSuccess,\n resetOnSuccess = _b === void 0 ? false : _b;\n return count <= 0 ? identity : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n\n var subscribeForRetry = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (resetOnSuccess) {\n soFar = 0;\n }\n\n subscriber.next(value);\n }, undefined, function (err) {\n if (soFar++ < count) {\n var resub_1 = function () {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n } else {\n syncUnsub = true;\n }\n };\n\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(err, soFar));\n var notifierSubscriber_1 = new OperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n resub_1();\n }, function () {\n subscriber.complete();\n });\n notifier.subscribe(notifierSubscriber_1);\n } else {\n resub_1();\n }\n } else {\n subscriber.error(err);\n }\n }));\n\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n\n subscribeForRetry();\n });\n}\n\nfunction retryWhen(notifier) {\n return operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var errors$;\n\n var subscribeForRetryWhen = function () {\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, undefined, function (err) {\n if (!errors$) {\n errors$ = new Subject();\n notifier(errors$).subscribe(new OperatorSubscriber(subscriber, function () {\n return innerSub ? subscribeForRetryWhen() : syncResub = true;\n }));\n }\n\n if (errors$) {\n errors$.next(err);\n }\n }));\n\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRetryWhen();\n }\n };\n\n subscribeForRetryWhen();\n });\n}\n\nfunction sample(notifier) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n }));\n\n var emit = function () {\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n\n notifier.subscribe(new OperatorSubscriber(subscriber, emit, noop));\n });\n}\n\nfunction sampleTime(period, scheduler) {\n if (scheduler === void 0) {\n scheduler = asyncScheduler;\n }\n\n return sample(interval(period, scheduler));\n}\n\nfunction scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n\nfunction sequenceEqual(compareTo, comparator) {\n if (comparator === void 0) {\n comparator = function (a, b) {\n return a === b;\n };\n }\n\n return operate(function (source, subscriber) {\n var aState = createState();\n var bState = createState();\n\n var emit = function (isEqual) {\n subscriber.next(isEqual);\n subscriber.complete();\n };\n\n var createSubscriber = function (selfState, otherState) {\n var sequenceEqualSubscriber = new OperatorSubscriber(subscriber, function (a) {\n var buffer = otherState.buffer,\n complete = otherState.complete;\n\n if (buffer.length === 0) {\n complete ? emit(false) : selfState.buffer.push(a);\n } else {\n !comparator(a, buffer.shift()) && emit(false);\n }\n }, function () {\n selfState.complete = true;\n var complete = otherState.complete,\n buffer = otherState.buffer;\n complete && emit(buffer.length === 0);\n sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe();\n });\n return sequenceEqualSubscriber;\n };\n\n source.subscribe(createSubscriber(aState, bState));\n compareTo.subscribe(createSubscriber(bState, aState));\n });\n}\n\nfunction createState() {\n return {\n buffer: [],\n complete: false\n };\n}\n\nfunction share(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _a = options.connector,\n connector = _a === void 0 ? function () {\n return new Subject();\n } : _a,\n _b = options.resetOnError,\n resetOnError = _b === void 0 ? true : _b,\n _c = options.resetOnComplete,\n resetOnComplete = _c === void 0 ? true : _c,\n _d = options.resetOnRefCountZero,\n resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection = null;\n var resetConnection = null;\n var subject = null;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = null;\n };\n\n var reset = function () {\n cancelReset();\n connection = subject = null;\n hasCompleted = hasErrored = false;\n };\n\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n\n return operate(function (source, subscriber) {\n refCount++;\n\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n\n var dest = subject = subject !== null && subject !== void 0 ? subject : connector();\n subscriber.add(function () {\n refCount--;\n\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n\n if (!connection) {\n connection = new SafeSubscriber({\n next: function (value) {\n return dest.next(value);\n },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n }\n });\n from(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\n\nfunction handleReset(reset, on) {\n var args = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n\n if (on === true) {\n reset();\n return null;\n }\n\n if (on === false) {\n return null;\n }\n\n return on.apply(void 0, __spreadArray([], __read(args))).pipe(take(1)).subscribe(function () {\n return reset();\n });\n}\n\nfunction shareReplay(configOrBufferSize, windowTime, scheduler) {\n var _a, _b;\n\n var bufferSize;\n var refCount = false;\n\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n bufferSize = (_a = configOrBufferSize.bufferSize) !== null && _a !== void 0 ? _a : Infinity;\n windowTime = (_b = configOrBufferSize.windowTime) !== null && _b !== void 0 ? _b : Infinity;\n refCount = !!configOrBufferSize.refCount;\n scheduler = configOrBufferSize.scheduler;\n } else {\n bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity;\n }\n\n return share({\n connector: function () {\n return new ReplaySubject(bufferSize, windowTime, scheduler);\n },\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount\n });\n}\n\nfunction single(predicate) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var singleValue;\n var seenValue = false;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n seenValue = true;\n\n if (!predicate || predicate(value, index++, source)) {\n hasValue && subscriber.error(new SequenceError('Too many matching values'));\n hasValue = true;\n singleValue = value;\n }\n }, function () {\n if (hasValue) {\n subscriber.next(singleValue);\n subscriber.complete();\n } else {\n subscriber.error(seenValue ? new NotFoundError('No matching values') : new EmptyError());\n }\n }));\n });\n}\n\nfunction skip(count) {\n return filter(function (_, index) {\n return count <= index;\n });\n}\n\nfunction skipLast(skipCount) {\n return skipCount <= 0 ? identity : operate(function (source, subscriber) {\n var ring = new Array(skipCount);\n var seen = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var valueIndex = seen++;\n\n if (valueIndex < skipCount) {\n ring[valueIndex] = value;\n } else {\n var index = valueIndex % skipCount;\n var oldValue = ring[index];\n ring[index] = value;\n subscriber.next(oldValue);\n }\n }));\n return function () {\n ring = null;\n };\n });\n}\n\nfunction skipUntil(notifier) {\n return operate(function (source, subscriber) {\n var taking = false;\n var skipSubscriber = new OperatorSubscriber(subscriber, function () {\n skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe();\n taking = true;\n }, noop);\n innerFrom(notifier).subscribe(skipSubscriber);\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return taking && subscriber.next(value);\n }));\n });\n}\n\nfunction skipWhile(predicate) {\n return operate(function (source, subscriber) {\n var taking = false;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return (taking || (taking = !predicate(value, index++))) && subscriber.next(value);\n }));\n });\n}\n\nfunction startWith() {\n var values = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n\n var scheduler = popScheduler(values);\n return operate(function (source, subscriber) {\n (scheduler ? concat$1(values, source, scheduler) : concat$1(values, source)).subscribe(subscriber);\n });\n}\n\nfunction switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n\n var checkComplete = function () {\n return isComplete && !innerSubscriber && subscriber.complete();\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe(innerSubscriber = new OperatorSubscriber(subscriber, function (innerValue) {\n return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue);\n }, function () {\n innerSubscriber = null;\n checkComplete();\n }));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n\nfunction switchAll() {\n return switchMap(identity);\n}\n\nfunction switchMapTo(innerObservable, resultSelector) {\n return isFunction(resultSelector) ? switchMap(function () {\n return innerObservable;\n }, resultSelector) : switchMap(function () {\n return innerObservable;\n });\n}\n\nfunction switchScan(accumulator, seed) {\n return operate(function (source, subscriber) {\n var state = seed;\n switchMap(function (value, index) {\n return accumulator(state, value, index);\n }, function (_, innerValue) {\n return state = innerValue, innerValue;\n })(source).subscribe(subscriber);\n return function () {\n state = null;\n };\n });\n}\n\nfunction takeUntil(notifier) {\n return operate(function (source, subscriber) {\n innerFrom(notifier).subscribe(new OperatorSubscriber(subscriber, function () {\n return subscriber.complete();\n }, noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n\nfunction takeWhile(predicate, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n\nfunction tap(observerOrNext, error, complete) {\n var tapObserver = isFunction(observerOrNext) || error || complete ? {\n next: observerOrNext,\n error: error,\n complete: complete\n } : observerOrNext;\n return tapObserver ? operate(function (source, subscriber) {\n var _a;\n\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var _a;\n\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n }) : identity;\n}\n\nvar defaultThrottleConfig = {\n leading: true,\n trailing: false\n};\n\nfunction throttle(durationSelector, _a) {\n var _b = _a === void 0 ? defaultThrottleConfig : _a,\n leading = _b.leading,\n trailing = _b.trailing;\n\n return operate(function (source, subscriber) {\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n\n var startThrottle = function (value) {\n return throttled = innerFrom(durationSelector(value)).subscribe(new OperatorSubscriber(subscriber, endThrottling, cleanupThrottling));\n };\n\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\n\nfunction throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) {\n scheduler = asyncScheduler;\n }\n\n if (config === void 0) {\n config = defaultThrottleConfig;\n }\n\n var duration$ = timer(duration, scheduler);\n return throttle(function () {\n return duration$;\n }, config);\n}\n\nfunction timeInterval(scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n\n return function (source) {\n return defer(function () {\n return source.pipe(scan(function (_a, value) {\n var current = _a.current;\n return {\n value: value,\n current: scheduler.now(),\n last: current\n };\n }, {\n current: scheduler.now(),\n value: undefined,\n last: undefined\n }), map(function (_a) {\n var current = _a.current,\n last = _a.last,\n value = _a.value;\n return new TimeInterval(value, current - last);\n }));\n });\n };\n}\n\nvar TimeInterval = function () {\n function TimeInterval(value, interval) {\n this.value = value;\n this.interval = interval;\n }\n\n return TimeInterval;\n}();\n\nfunction timeoutWith(due, withObservable, scheduler) {\n var first;\n var each;\n\n var _with;\n\n scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : async;\n\n if (isValidDate(due)) {\n first = due;\n } else if (typeof due === 'number') {\n each = due;\n }\n\n if (withObservable) {\n _with = function () {\n return withObservable;\n };\n } else {\n throw new TypeError('No observable provided to switch to');\n }\n\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n\n return timeout({\n first: first,\n each: each,\n scheduler: scheduler,\n with: _with\n });\n}\n\nfunction timestamp(timestampProvider) {\n if (timestampProvider === void 0) {\n timestampProvider = dateTimestampProvider;\n }\n\n return map(function (value) {\n return {\n value: value,\n timestamp: timestampProvider.now()\n };\n });\n}\n\nfunction window$1(windowBoundaries) {\n return operate(function (source, subscriber) {\n var windowSubject = new Subject();\n subscriber.next(windowSubject.asObservable());\n\n var errorHandler = function (err) {\n windowSubject.error(err);\n subscriber.error(err);\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value);\n }, function () {\n windowSubject.complete();\n subscriber.complete();\n }, errorHandler));\n windowBoundaries.subscribe(new OperatorSubscriber(subscriber, function () {\n windowSubject.complete();\n subscriber.next(windowSubject = new Subject());\n }, noop, errorHandler));\n return function () {\n windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe();\n windowSubject = null;\n };\n });\n}\n\nfunction windowCount(windowSize, startWindowEvery) {\n if (startWindowEvery === void 0) {\n startWindowEvery = 0;\n }\n\n var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;\n return operate(function (source, subscriber) {\n var windows = [new Subject()];\n var starts = [];\n var count = 0;\n subscriber.next(windows[0].asObservable());\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n\n try {\n for (var windows_1 = __values(windows), windows_1_1 = windows_1.next(); !windows_1_1.done; windows_1_1 = windows_1.next()) {\n var window_1 = windows_1_1.value;\n window_1.next(value);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (windows_1_1 && !windows_1_1.done && (_a = windows_1.return)) _a.call(windows_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n var c = count - windowSize + 1;\n\n if (c >= 0 && c % startEvery === 0) {\n windows.shift().complete();\n }\n\n if (++count % startEvery === 0) {\n var window_2 = new Subject();\n windows.push(window_2);\n subscriber.next(window_2.asObservable());\n }\n }, function () {\n while (windows.length > 0) {\n windows.shift().complete();\n }\n\n subscriber.complete();\n }, function (err) {\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n\n subscriber.error(err);\n }, function () {\n starts = null;\n windows = null;\n }));\n });\n}\n\nfunction windowTime(windowTimeSpan) {\n var _a, _b;\n\n var otherArgs = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n\n var scheduler = (_a = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;\n var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxWindowSize = otherArgs[1] || Infinity;\n return operate(function (source, subscriber) {\n var windowRecords = [];\n var restartOnClose = false;\n\n var closeWindow = function (record) {\n var window = record.window,\n subs = record.subs;\n window.complete();\n subs.unsubscribe();\n arrRemove(windowRecords, record);\n restartOnClose && startWindow();\n };\n\n var startWindow = function () {\n if (windowRecords) {\n var subs = new Subscription();\n subscriber.add(subs);\n var window_1 = new Subject();\n var record_1 = {\n window: window_1,\n subs: subs,\n seen: 0\n };\n windowRecords.push(record_1);\n subscriber.next(window_1.asObservable());\n subs.add(scheduler.schedule(function () {\n return closeWindow(record_1);\n }, windowTimeSpan));\n }\n };\n\n windowCreationInterval !== null && windowCreationInterval >= 0 ? subscriber.add(scheduler.schedule(function () {\n startWindow();\n !this.closed && subscriber.add(this.schedule(null, windowCreationInterval));\n }, windowCreationInterval)) : restartOnClose = true;\n startWindow();\n\n var loop = function (cb) {\n return windowRecords.slice().forEach(cb);\n };\n\n var terminate = function (cb) {\n loop(function (_a) {\n var window = _a.window;\n return cb(window);\n });\n cb(subscriber);\n subscriber.unsubscribe();\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n loop(function (record) {\n record.window.next(value);\n maxWindowSize <= ++record.seen && closeWindow(record);\n });\n }, function () {\n return terminate(function (consumer) {\n return consumer.complete();\n });\n }, function (err) {\n return terminate(function (consumer) {\n return consumer.error(err);\n });\n }));\n return function () {\n windowRecords = null;\n };\n });\n}\n\nfunction windowToggle(openings, closingSelector) {\n return operate(function (source, subscriber) {\n var windows = [];\n\n var handleError = function (err) {\n while (0 < windows.length) {\n windows.shift().error(err);\n }\n\n subscriber.error(err);\n };\n\n innerFrom(openings).subscribe(new OperatorSubscriber(subscriber, function (openValue) {\n var window = new Subject();\n windows.push(window);\n var closingSubscription = new Subscription();\n\n var closeWindow = function () {\n arrRemove(windows, window);\n window.complete();\n closingSubscription.unsubscribe();\n };\n\n var closingNotifier;\n\n try {\n closingNotifier = innerFrom(closingSelector(openValue));\n } catch (err) {\n handleError(err);\n return;\n }\n\n subscriber.next(window.asObservable());\n closingSubscription.add(closingNotifier.subscribe(new OperatorSubscriber(subscriber, closeWindow, noop, handleError)));\n }, noop));\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n\n var windowsCopy = windows.slice();\n\n try {\n for (var windowsCopy_1 = __values(windowsCopy), windowsCopy_1_1 = windowsCopy_1.next(); !windowsCopy_1_1.done; windowsCopy_1_1 = windowsCopy_1.next()) {\n var window_1 = windowsCopy_1_1.value;\n window_1.next(value);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (windowsCopy_1_1 && !windowsCopy_1_1.done && (_a = windowsCopy_1.return)) _a.call(windowsCopy_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }, function () {\n while (0 < windows.length) {\n windows.shift().complete();\n }\n\n subscriber.complete();\n }, handleError, function () {\n while (0 < windows.length) {\n windows.shift().unsubscribe();\n }\n }));\n });\n}\n\nfunction windowWhen(closingSelector) {\n return operate(function (source, subscriber) {\n var window;\n var closingSubscriber;\n\n var handleError = function (err) {\n window.error(err);\n subscriber.error(err);\n };\n\n var openWindow = function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n window === null || window === void 0 ? void 0 : window.complete();\n window = new Subject();\n subscriber.next(window.asObservable());\n var closingNotifier;\n\n try {\n closingNotifier = innerFrom(closingSelector());\n } catch (err) {\n handleError(err);\n return;\n }\n\n closingNotifier.subscribe(closingSubscriber = new OperatorSubscriber(subscriber, openWindow, openWindow, handleError));\n };\n\n openWindow();\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return window.next(value);\n }, function () {\n window.complete();\n subscriber.complete();\n }, handleError, function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n window = null;\n }));\n });\n}\n\nfunction withLatestFrom() {\n var inputs = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n inputs[_i] = arguments[_i];\n }\n\n var project = popResultSelector(inputs);\n return operate(function (source, subscriber) {\n var len = inputs.length;\n var otherValues = new Array(len);\n var hasValue = inputs.map(function () {\n return false;\n });\n var ready = false;\n\n var _loop_1 = function (i) {\n innerFrom(inputs[i]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n otherValues[i] = value;\n\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n };\n\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (ready) {\n var values = __spreadArray([value], __read(otherValues));\n\n subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);\n }\n }));\n });\n}\n\nfunction zipAll(project) {\n return joinAllInternals(zip$1, project);\n}\n\nfunction zip() {\n var sources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n\n return operate(function (source, subscriber) {\n zip$1.apply(void 0, __spreadArray([source], __read(sources))).subscribe(subscriber);\n });\n}\n\nfunction zipWith() {\n var otherInputs = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n otherInputs[_i] = arguments[_i];\n }\n\n return zip.apply(void 0, __spreadArray([], __read(otherInputs)));\n}\n\nvar esm5 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Observable: Observable,\n ConnectableObservable: ConnectableObservable,\n observable: observable,\n animationFrames: animationFrames,\n Subject: Subject,\n BehaviorSubject: BehaviorSubject,\n ReplaySubject: ReplaySubject,\n AsyncSubject: AsyncSubject,\n asap: asap,\n asapScheduler: asapScheduler,\n async: async,\n asyncScheduler: asyncScheduler,\n queue: queue,\n queueScheduler: queueScheduler,\n animationFrame: animationFrame,\n animationFrameScheduler: animationFrameScheduler,\n VirtualTimeScheduler: VirtualTimeScheduler,\n VirtualAction: VirtualAction,\n Scheduler: Scheduler,\n Subscription: Subscription,\n Subscriber: Subscriber,\n Notification: Notification,\n\n get NotificationKind() {\n return NotificationKind;\n },\n\n pipe: pipe,\n noop: noop,\n identity: identity,\n isObservable: isObservable,\n lastValueFrom: lastValueFrom,\n firstValueFrom: firstValueFrom,\n ArgumentOutOfRangeError: ArgumentOutOfRangeError,\n EmptyError: EmptyError,\n NotFoundError: NotFoundError,\n ObjectUnsubscribedError: ObjectUnsubscribedError,\n SequenceError: SequenceError,\n TimeoutError: TimeoutError,\n UnsubscriptionError: UnsubscriptionError,\n bindCallback: bindCallback,\n bindNodeCallback: bindNodeCallback,\n combineLatest: combineLatest$1,\n concat: concat$1,\n connectable: connectable,\n defer: defer,\n empty: empty,\n forkJoin: forkJoin,\n from: from,\n fromEvent: fromEvent,\n fromEventPattern: fromEventPattern,\n generate: generate,\n iif: iif,\n interval: interval,\n merge: merge$1,\n never: never,\n of: of,\n onErrorResumeNext: onErrorResumeNext,\n pairs: pairs,\n partition: partition,\n race: race,\n range: range,\n throwError: throwError,\n timer: timer,\n using: using,\n zip: zip$1,\n scheduled: scheduled,\n EMPTY: EMPTY,\n NEVER: NEVER,\n config: config,\n audit: audit,\n auditTime: auditTime,\n buffer: buffer,\n bufferCount: bufferCount,\n bufferTime: bufferTime,\n bufferToggle: bufferToggle,\n bufferWhen: bufferWhen,\n catchError: catchError,\n combineAll: combineAll,\n combineLatestAll: combineLatestAll,\n combineLatestWith: combineLatestWith,\n concatAll: concatAll,\n concatMap: concatMap,\n concatMapTo: concatMapTo,\n concatWith: concatWith,\n connect: connect,\n count: count,\n debounce: debounce,\n debounceTime: debounceTime,\n defaultIfEmpty: defaultIfEmpty,\n delay: delay,\n delayWhen: delayWhen,\n dematerialize: dematerialize,\n distinct: distinct,\n distinctUntilChanged: distinctUntilChanged,\n distinctUntilKeyChanged: distinctUntilKeyChanged,\n elementAt: elementAt,\n endWith: endWith,\n every: every,\n exhaust: exhaust,\n exhaustAll: exhaustAll,\n exhaustMap: exhaustMap,\n expand: expand,\n filter: filter,\n finalize: finalize,\n find: find,\n findIndex: findIndex,\n first: first,\n groupBy: groupBy,\n ignoreElements: ignoreElements,\n isEmpty: isEmpty,\n last: last,\n map: map,\n mapTo: mapTo,\n materialize: materialize,\n max: max,\n mergeAll: mergeAll,\n flatMap: flatMap,\n mergeMap: mergeMap,\n mergeMapTo: mergeMapTo,\n mergeScan: mergeScan,\n mergeWith: mergeWith,\n min: min,\n multicast: multicast,\n observeOn: observeOn,\n pairwise: pairwise,\n pluck: pluck,\n publish: publish,\n publishBehavior: publishBehavior,\n publishLast: publishLast,\n publishReplay: publishReplay,\n raceWith: raceWith,\n reduce: reduce,\n repeat: repeat,\n repeatWhen: repeatWhen,\n retry: retry,\n retryWhen: retryWhen,\n refCount: refCount,\n sample: sample,\n sampleTime: sampleTime,\n scan: scan,\n sequenceEqual: sequenceEqual,\n share: share,\n shareReplay: shareReplay,\n single: single,\n skip: skip,\n skipLast: skipLast,\n skipUntil: skipUntil,\n skipWhile: skipWhile,\n startWith: startWith,\n subscribeOn: subscribeOn,\n switchAll: switchAll,\n switchMap: switchMap,\n switchMapTo: switchMapTo,\n switchScan: switchScan,\n take: take,\n takeLast: takeLast,\n takeUntil: takeUntil,\n takeWhile: takeWhile,\n tap: tap,\n throttle: throttle,\n throttleTime: throttleTime,\n throwIfEmpty: throwIfEmpty,\n timeInterval: timeInterval,\n timeout: timeout,\n timeoutWith: timeoutWith,\n timestamp: timestamp,\n toArray: toArray,\n window: window$1,\n windowCount: windowCount,\n windowTime: windowTime,\n windowToggle: windowToggle,\n windowWhen: windowWhen,\n withLatestFrom: withLatestFrom,\n zipAll: zipAll,\n zipWith: zipWith\n});\nvar common = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResponseType = exports.RequestType = exports.ProxyPropertyType = void 0;\n\n (function (ProxyPropertyType) {\n ProxyPropertyType[\"Function\"] = \"function\";\n ProxyPropertyType[\"Function$\"] = \"function$\";\n ProxyPropertyType[\"Value\"] = \"value\";\n ProxyPropertyType[\"Value$\"] = \"value$\";\n })(exports.ProxyPropertyType || (exports.ProxyPropertyType = {}));\n\n (function (RequestType) {\n RequestType[\"Apply\"] = \"apply\";\n RequestType[\"ApplySubscribe\"] = \"applySubscribe\";\n RequestType[\"Get\"] = \"get\";\n RequestType[\"Subscribe\"] = \"subscribe\";\n RequestType[\"Unsubscribe\"] = \"unsubscribe\";\n })(exports.RequestType || (exports.RequestType = {}));\n\n (function (ResponseType) {\n ResponseType[\"Complete\"] = \"complete\";\n ResponseType[\"Error\"] = \"error\";\n ResponseType[\"Next\"] = \"next\";\n ResponseType[\"Result\"] = \"result\";\n })(exports.ResponseType || (exports.ResponseType = {}));\n});\nvar errio = createCommonjsModule(function (module, exports) {\n // Default options for all serializations.\n var defaultOptions = {\n recursive: true,\n // Recursively serialize and deserialize nested errors\n inherited: true,\n // Include inherited properties\n stack: false,\n // Include stack property\n private: false,\n // Include properties with leading or trailing underscores\n exclude: [],\n // Property names to exclude (low priority)\n include: [] // Property names to include (high priority)\n\n }; // Overwrite global default options.\n\n exports.setDefaults = function (options) {\n for (var key in options) defaultOptions[key] = options[key];\n }; // Object containing registered error constructors and their options.\n\n\n var errors = {}; // Register an error constructor for serialization and deserialization with\n // option overrides. Name can be specified in options, otherwise it will be\n // taken from the prototype's name property (if it is not set to Error), the\n // constructor's name property, or the name property of an instance of the\n // constructor.\n\n exports.register = function (constructor, options) {\n options = options || {};\n var prototypeName = constructor.prototype.name !== 'Error' ? constructor.prototype.name : null;\n var name = options.name || prototypeName || constructor.name || new constructor().name;\n errors[name] = {\n constructor: constructor,\n options: options\n };\n }; // Register an array of error constructors all with the same option overrides.\n\n\n exports.registerAll = function (constructors, options) {\n constructors.forEach(function (constructor) {\n exports.register(constructor, options);\n });\n }; // Shallow clone a plain object.\n\n\n function cloneObject(object) {\n var clone = {};\n\n for (var key in object) {\n if (object.hasOwnProperty(key)) clone[key] = object[key];\n }\n\n return clone;\n } // Register a plain object of constructor names mapped to constructors with\n // common option overrides.\n\n\n exports.registerObject = function (constructors, commonOptions) {\n for (var name in constructors) {\n if (!constructors.hasOwnProperty(name)) continue;\n var constructor = constructors[name];\n var options = cloneObject(commonOptions);\n options.name = name;\n exports.register(constructor, options);\n }\n }; // Register the built-in error constructors.\n\n\n exports.registerAll([Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError]); // Serialize an error instance to a plain object with option overrides, applied\n // on top of the global defaults and the registered option overrides. If the\n // constructor of the error instance has not been registered yet, register it\n // with the provided options.\n\n exports.toObject = function (error, callOptions) {\n callOptions = callOptions || {};\n\n if (!errors[error.name]) {\n // Make sure we register with the name of this instance.\n callOptions.name = error.name;\n exports.register(error.constructor, callOptions);\n }\n\n var errorOptions = errors[error.name].options;\n var options = {};\n\n for (var key in defaultOptions) {\n if (callOptions.hasOwnProperty(key)) options[key] = callOptions[key];else if (errorOptions.hasOwnProperty(key)) options[key] = errorOptions[key];else options[key] = defaultOptions[key];\n } // Always explicitly include essential error properties.\n\n\n var object = {\n name: error.name,\n message: error.message\n }; // Explicitly include stack since it is not always an enumerable property.\n\n if (options.stack) object.stack = error.stack;\n\n for (var prop in error) {\n // Skip exclusion checks if property is in include list.\n if (options.include.indexOf(prop) === -1) {\n if (typeof error[prop] === 'function') continue;\n if (options.exclude.indexOf(prop) !== -1) continue;\n if (!options.inherited) if (!error.hasOwnProperty(prop)) continue;\n if (!options.stack) if (prop === 'stack') continue;\n if (!options.private) if (prop[0] === '_' || prop[prop.length - 1] === '_') continue;\n }\n\n var value = error[prop]; // Recurse if nested object has name and message properties.\n\n if (typeof value === 'object' && value && value.name && value.message) {\n if (options.recursive) {\n object[prop] = exports.toObject(value, callOptions);\n }\n\n continue;\n }\n\n object[prop] = value;\n }\n\n return object;\n }; // Deserialize a plain object to an instance of a registered error constructor\n // with option overrides. If the specific constructor is not registered,\n // return a generic Error instance. If stack was not serialized, capture a new\n // stack trace.\n\n\n exports.fromObject = function (object, callOptions) {\n callOptions = callOptions || {};\n var registration = errors[object.name];\n if (!registration) registration = errors.Error;\n var constructor = registration.constructor;\n var errorOptions = registration.options;\n var options = {};\n\n for (var key in defaultOptions) {\n if (callOptions.hasOwnProperty(key)) options[key] = callOptions[key];else if (errorOptions.hasOwnProperty(key)) options[key] = errorOptions[key];else options[key] = defaultOptions[key];\n } // Instantiate the error without actually calling the constructor.\n\n\n var error = Object.create(constructor.prototype);\n\n for (var prop in object) {\n // Recurse if nested object has name and message properties.\n if (options.recursive && typeof object[prop] === 'object') {\n var nested = object[prop];\n\n if (nested && nested.name && nested.message) {\n error[prop] = exports.fromObject(nested, callOptions);\n continue;\n }\n }\n\n error[prop] = object[prop];\n } // Capture a new stack trace such that the first trace line is the caller of\n // fromObject.\n\n\n if (!error.stack && Error.captureStackTrace) {\n Error.captureStackTrace(error, exports.fromObject);\n }\n\n return error;\n }; // Serialize an error instance to a JSON string with option overrides.\n\n\n exports.stringify = function (error, callOptions) {\n return JSON.stringify(exports.toObject(error, callOptions));\n }; // Deserialize a JSON string to an instance of a registered error constructor.\n\n\n exports.parse = function (string, callOptions) {\n return exports.fromObject(JSON.parse(string), callOptions);\n };\n});\nvar utils = createCommonjsModule(function (module, exports) {\n var __importDefault = commonjsGlobal && commonjsGlobal.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getSubscriptionKey = exports.isFunction = exports.IpcProxyError = void 0;\n\n const errio_1 = __importDefault(errio);\n /* Custom Error */\n\n\n class IpcProxyError extends Error {\n constructor(message) {\n super(message);\n this.name = this.constructor.name;\n }\n\n }\n\n exports.IpcProxyError = IpcProxyError;\n errio_1.default.register(IpcProxyError);\n /* Utils */\n // eslint-disable-next-line @typescript-eslint/ban-types\n\n function isFunction(value) {\n return value !== undefined && typeof value === 'function';\n }\n\n exports.isFunction = isFunction;\n /**\n * Fix ContextIsolation\n * @param key original key\n * @returns\n */\n\n function getSubscriptionKey(key) {\n return `${key}Subscribe`;\n }\n\n exports.getSubscriptionKey = getSubscriptionKey;\n});\nvar rxjs_1 = /*@__PURE__*/getAugmentedNamespace(esm5);\ncreateCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.fixContextIsolation = exports.ipcProxyFixContextIsolation = void 0;\n /* eslint-disable @typescript-eslint/no-unsafe-return */\n\n /* eslint-disable @typescript-eslint/no-unsafe-call */\n\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n /* eslint-disable @typescript-eslint/consistent-type-assertions */\n\n /**\n * fix https://github.com/electron/electron/issues/28176\n * We cannot pass Observable across contextBridge, so we have to add a hidden patch to the object on preload script, and use that patch to regenerate Observable on renderer side\n * This file is \"unsafe\" and will full of type warnings, which is necessary\n */\n\n /**\n * Create `(window as IWindow).observables.xxx` from `(window as IWindow).service.xxx`\n * @param name service name\n * @param service service client proxy created in preload script\n * @param descriptor electron ipc proxy descriptor\n */\n\n function ipcProxyFixContextIsolation(name, service, descriptor) {\n if (window.observables === undefined) {\n window.observables = {};\n }\n\n for (const key in descriptor.properties) {\n // Process all Observables, we pass a `.next` function from preload script, that we can used to reconstruct Observable\n if (common.ProxyPropertyType.Value$ === descriptor.properties[key] && !(key in service) && utils.getSubscriptionKey(key) in service) {\n const subscribedObservable = new rxjs_1.Observable(observer => {\n service[utils.getSubscriptionKey(key)](value => observer.next(value));\n }); // store newly created Observable to `(window as IWindow).observables.xxx.yyy`\n\n if (window.observables[name] === undefined) {\n window.observables[name] = {\n [key]: subscribedObservable\n };\n } else {\n window.observables[name][key] = subscribedObservable;\n }\n } // create (id: string) => Observable\n\n\n if (common.ProxyPropertyType.Function$ === descriptor.properties[key] && !(key in service) && utils.getSubscriptionKey(key) in service) {\n const subscribingObservable = (...arguments_) => new rxjs_1.Observable(observer => {\n service[utils.getSubscriptionKey(key)](...arguments_)(value => observer.next(value));\n }); // store newly created Observable to `(window as IWindow).observables.xxx.yyy`\n\n\n if (window.observables[name] === undefined) {\n window.observables[name] = {\n [key]: subscribingObservable\n };\n } else {\n window.observables[name][key] = subscribingObservable;\n }\n }\n }\n }\n\n exports.ipcProxyFixContextIsolation = ipcProxyFixContextIsolation;\n /**\n * Process `(window as IWindow).service`, reconstruct Observables into `(window as IWindow).observables`\n */\n\n function fixContextIsolation() {\n const {\n descriptors,\n ...services\n } = window.service;\n\n for (const key in services) {\n const serviceName = key;\n ipcProxyFixContextIsolation(serviceName, services[serviceName], descriptors[serviceName]);\n }\n }\n\n exports.fixContextIsolation = fixContextIsolation;\n fixContextIsolation();\n});\nvar electronIpcCat = {};\nexports['default'] = electronIpcCat;\n","creator":"LinOnetwo","type":"application/javascript","module-type":"library"},"$:/plugins/linonetwo/itonnote/Startup/install-electron-ipc-cat.js":{"title":"$:/plugins/linonetwo/itonnote/Startup/install-electron-ipc-cat.js","text":"if (typeof window !== 'undefined' && typeof window.service !== 'undefined') {\n require('./electron-ipc-cat');\n}\n","creator":"LinOnetwo","type":"application/javascript","module-type":"startup"},"$:/plugins/linonetwo/itonnote/description":{"title":"$:/plugins/linonetwo/itonnote/description","type":"text/vnd.tiddlywiki","text":"!!! TW-Locator\n\n根据[[$:/plugins/bimlas/locator/README/macros]]创建了下列文件:\n\n* [[$:/plugins/linonetwo/itonnote/Sidebar/Locator Fields]] 侧边栏的 Fields 标签页,用于查看含有各种字段的Tiddlers\n* [[$:/plugins/linonetwo/itonnote/Sidebar/SearchResultByFacets]] 搜索结果中的 Facets 标签页,用于分面搜索\n* [[$:/plugins/linonetwo/itonnote/Sidebar/SearchResultByFields]] 搜索结果中的 Fields 标签页,用于按字段进行精准搜索\n\n!!! macros\n\n!!!! TransclusionWithEditMe\n\n[[$:/plugins/linonetwo/itonnote/Macros/TransclusionWithEditMe]] Usage:\n\n使用普通的 [[Transclusion|https://tiddlywiki.com/#Transclusion]] 时,你没法得知源文件在哪里,如果想要修改内容,还得打开编辑模式、复制被引用的 Tiddler 的标题,然后搜索打开编辑,比较麻烦。\n\n使用此宏进行引用就很方便了:\n\n```tid\n<>\n```\n\n会直接在引用的区块旁边显示一个「查看引文」的小浮窗,带有指向源文件的链接,直接点开编辑即可。\n\n!!!! OpenImageInGithub\n\n[[$:/plugins/linonetwo/itonnote/Macros/OpenImageInGithub]] Usage:\n\nIf you have `webcatalog-tiddlywiki-menu-app.jpg` in your Wiki, you normally can just `{{webcatalog-tiddlywiki-menu-app.jpg}}` to place it in your tiddler, but you can use this macro to make it clickable, and open large image in the new browser tab:\n\n```tid\n<>\n```\n\n!!! snippets(文本片段)\n\n在编辑模式下,有一个图章按钮,点击后会列出一系列文本片段,可以一键添加预制内容,因而无需用脑记住这些复杂的文本片段了。\n\n本插件预置了一些文本片段,详见相应的 Macros 的介绍,或相应的插件的介绍:\n\n* [[$:/plugins/linonetwo/itonnote/Snippets/LocatorAboutCurrentTiddler]]\n* [[$:/plugins/linonetwo/itonnote/Snippets/OpenImageInGithub]]\n* [[$:/plugins/linonetwo/itonnote/Snippets/TransclusionWithEditMe]]\n"},"$:/plugins/linonetwo/itonnote/readme":{"title":"$:/plugins/linonetwo/itonnote/readme","type":"text/vnd.tiddlywiki","text":"!! 功能\n\n预配置了一系列琐碎的内容,一般来自各插件的Readme和论坛讨论,但大多数人懒得看Readme,故在此直接帮忙配置好了。\n\n具体预置内容介绍可见[[Description|$:/plugins/linonetwo/itonnote/description]]。\n\n{{$:/plugins/linonetwo/itonnote/ControlPanel}}\n"}}} \ No newline at end of file +{"tiddlers":{"$:/config/DownloadSaver/AutoSave":{"title":"$:/config/DownloadSaver/AutoSave","created":"20190601103555586","creator":"Lin Onetwo","modified":"20200410072837906","modifier":"Lin Onetwo","type":"text/vnd.tiddlywiki","text":"no"},"$:/config/MissingLinks":{"title":"$:/config/MissingLinks","created":"20190419034301891","modified":"20200409033736457","type":"text/vnd.tiddlywiki","text":"yes"},"$:/config/Navigation/UpdateAddressBar":{"title":"$:/config/Navigation/UpdateAddressBar","created":"20190419034459572","creator":"林一二","modified":"20200409033736422","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"permaview"},"$:/config/Navigation/UpdateHistory":{"title":"$:/config/Navigation/UpdateHistory","created":"20190419034422400","modified":"20200409033736411","type":"text/vnd.tiddlywiki","text":"yes"},"$:/config/Navigation/openLinkFromInsideRiver":{"title":"$:/config/Navigation/openLinkFromInsideRiver","created":"20200409033736445","modified":"20200409033736445","type":"text/vnd.tiddlywiki","text":"above"},"$:/config/Navigation/openLinkFromOutsideRiver":{"title":"$:/config/Navigation/openLinkFromOutsideRiver","created":"20200409033736433","modified":"20200409033736433","type":"text/vnd.tiddlywiki","text":"top"},"$:/config/Plugins/Disabled/$:/plugins/sycom/g-analytics":{"title":"$:/config/Plugins/Disabled/$:/plugins/sycom/g-analytics","created":"20190823032141720","creator":"Lin Onetwo - 林一二","modified":"20200409033736354","modifier":"Lin Onetwo - 林一二","type":"text/vnd.tiddlywiki","text":"no"},"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki":{"title":"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki","created":"20200411033813183","modified":"20200411033814242","type":"text/vnd.tiddlywiki","text":"yes"},"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/codemirror":{"title":"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/codemirror","created":"20200530042942722","modified":"20200530043337009","type":"text/vnd.tiddlywiki","text":"no"},"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/highlight":{"title":"$:/config/Plugins/Disabled/$:/plugins/tiddlywiki/highlight","created":"20190419154112345","modified":"20200409033736342","type":"text/vnd.tiddlywiki","text":"no"},"$:/config/RelinkOnRename":{"title":"$:/config/RelinkOnRename","created":"20200408113649017","creator":"Lin Onetwo - 林一二","modified":"20211104104033123","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"yes"},"$:/config/Search/MinLength":{"title":"$:/config/Search/MinLength","created":"20190419153747812","modified":"20200409033736319","tags":"","type":"text/vnd.tiddlywiki","text":"1"},"$:/config/Toolbar/ButtonClass":{"title":"$:/config/Toolbar/ButtonClass","created":"20190419034516378","modified":"20200409033736308","type":"text/vnd.tiddlywiki","text":"tc-btn-invisible"},"$:/config/WikiParserRules/Inline/wikilink":{"title":"$:/config/WikiParserRules/Inline/wikilink","created":"20190419034308697","modified":"20200409033736296","type":"text/vnd.tiddlywiki","text":"disable"},"$:/config/codemirror/autoCloseTags":{"title":"$:/config/codemirror/autoCloseTags","text":"true","type":"bool","created":"20210622180509486","creator":"TiddlyGit User","modified":"20210622180509499","modifier":"TiddlyGit User"},"$:/config/codemirror/indentWithTabs":{"title":"$:/config/codemirror/indentWithTabs","text":"false","type":"bool","created":"20210622180509486","creator":"TiddlyGit User","modified":"20210622180509499","modifier":"TiddlyGit User"},"$:/config/codemirror/keyMap":{"title":"$:/config/codemirror/keyMap","text":"sublime\n","type":"string","created":"20210622181242658","creator":"TiddlyGit User","modified":"20210622181242668","modifier":"TiddlyGit User"},"$:/config/markdown/renderWikiTextPragma":{"title":"$:/config/markdown/renderWikiTextPragma","created":"20211104053553213","creator":"林一二","modified":"20211104053830091","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"\\rules only html image macrocallinline syslink transcludeinline wikilink prettylink filteredtranscludeblock macrocallblock transcludeblock "},"$:/config/section-editor/config-editor-type":{"title":"$:/config/section-editor/config-editor-type","created":"20211103170442092","creator":"林一二","modified":"20211103170442098","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"main-editor"},"$:/config/section-editor/config-visibility-toolbar":{"title":"$:/config/section-editor/config-visibility-toolbar","created":"20211103170443459","creator":"林一二","modified":"20211103170443464","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"yes"},"$:/config/section-editor/hlevel":{"title":"$:/config/section-editor/hlevel","created":"20211103170546518","creator":"林一二","modified":"20211228162503797","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"5"},"$:/config/section-editor/reader-mode":{"title":"$:/config/section-editor/reader-mode","created":"20211228162506611","creator":"林一二","modified":"20211228162519164","modifier":"林一二","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts/cancel-edit-tiddler":{"title":"$:/config/shortcuts/cancel-edit-tiddler","created":"20211004052011062","creator":"林一二","modified":"20211004052016698","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"shift-Escape"},"$:/language":{"title":"$:/language","type":"text/vnd.tiddlywiki","text":"$:/languages/zh-Hans"},"$:/themes/tiddlywiki/vanilla/options/sidebarlayout":{"title":"$:/themes/tiddlywiki/vanilla/options/sidebarlayout","created":"20200605100438813","creator":"林一二","modified":"20200605100438836","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"fluid-fixed"},"$:/config/DefaultSidebarTab":{"title":"$:/config/DefaultSidebarTab","creator":"LinOnetwo","type":"text/vnd.tiddlywiki","text":"$:/plugins/linonetwo/itonnote/Sidebar/FolderMenu"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/editor-height":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/editor-height","created":"20220217151940912","creator":"林一二","modified":"20220217151940912","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4","created":"20220217151927360","creator":"林一二","modified":"20220217151927360","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/linkify":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/linkify","created":"20220217152007030","creator":"林一二","modified":"20220217152007030","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/mono-block":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/mono-block","created":"20220217152010844","creator":"林一二","modified":"20220217152010844","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/mono-line":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/mono-line","created":"20220217152001764","creator":"林一二","modified":"20220217152001764","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/rotate-left":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/rotate-left","created":"20220217152027754","creator":"林一二","modified":"20220217152033705","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/size":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/size","created":"20220217151938983","creator":"林一二","modified":"20220217152036687","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/subscript":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/subscript","created":"20220217151958198","creator":"林一二","modified":"20220217151958198","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/transcludify":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/transcludify","created":"20220217152005826","creator":"林一二","modified":"20220217152005826","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/plugins/stobot/sticky/EditorToolbarButton":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/plugins/stobot/sticky/EditorToolbarButton","created":"20220217151956095","creator":"林一二","modified":"20220217151956095","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line":{"title":"$:/config/EditorToolbarButtons/Visibility/$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line","created":"20220217152000867","creator":"林一二","modified":"20220217152000867","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/TextEditor/EditorHeight/Mode":{"title":"$:/config/TextEditor/EditorHeight/Mode","created":"20211030152517217","creator":"林一二","modified":"20211030152521841","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"auto"},"$:/core/ui/EditorToolbar/linkify":{"title":"$:/core/ui/EditorToolbar/linkify","caption":"{{$:/language/Buttons/Linkify/Caption}}","condition":"[!has[type]] [type[text/vnd.tiddlywiki]]","created":"20200408132942967","creator":"林一二","description":"{{$:/language/Buttons/Linkify/Hint}}","icon":"$:/core/images/linkify","modified":"20200409033736283","modifier":"林一二","shortcuts":"((linkify))","tags":"$:/tags/EditorToolbar","type":"text/vnd.tiddlywiki","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"},"$:/core/ui/EditorToolbar/transcludify":{"title":"$:/core/ui/EditorToolbar/transcludify","caption":"{{$:/language/Buttons/Transcludify/Caption}}","condition":"[!has[type]] [type[text/vnd.tiddlywiki]]","created":"20200408132942967","creator":"林一二","description":"{{$:/language/Buttons/Transcludify/Hint}}","icon":"$:/core/images/transcludify","modified":"20200409033736271","modifier":"林一二","shortcuts":"((transcludify))","tags":"$:/tags/EditorToolbar","type":"text/vnd.tiddlywiki","text":"<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"},"$:/plugins/linonetwo/itonnote/Configs/SideBarFolderMenuBaseTitle":{"title":"$:/plugins/linonetwo/itonnote/Configs/SideBarFolderMenuBaseTitle","creator":"LinOnetwo","type":"text/vnd.tiddlywiki","text":"Index"},"$:/config/DefaultMoreSidebarTab":{"title":"$:/config/DefaultMoreSidebarTab","created":"20200409060942350","creator":"linonetwo","modified":"20200410073440927","modifier":"linonetwo","type":"text/vnd.tiddlywiki","text":"$:/core/ui/MoreSideBar/Orphans"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search":{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search","created":"20200602124339340","modified":"20200602124339360","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/control-panel":{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/control-panel","created":"20200410174523174","modified":"20200410175230294","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption":{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption","created":"20200410174620924","modified":"20200410174809069","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home":{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home","created":"20200408133027695","creator":"Lin Onetwo - 林一二","modified":"20200409033736388","modifier":"Lin Onetwo - 林一二","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions":{"title":"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions","created":"20200408133032024","creator":"Lin Onetwo - 林一二","modified":"20200409033736377","modifier":"Lin Onetwo - 林一二","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/PageControlButtons/Visibility/$:/plugins/kookma/commander/buttons/pagecontrol":{"title":"$:/config/PageControlButtons/Visibility/$:/plugins/kookma/commander/buttons/pagecontrol","created":"20200410174517268","modified":"20200410174518337","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler":{"title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler","created":"20200410064657446","modified":"20200410064708140","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here":{"title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here","created":"20200409065701335","modified":"20200409065702475","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here":{"title":"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here","created":"20200410064650269","modified":"20200410064651361","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/ViewToolbarButtons/Visibility/$:/plugins/danielo/encryptTiddler/crypt-button":{"title":"$:/config/ViewToolbarButtons/Visibility/$:/plugins/danielo/encryptTiddler/crypt-button","created":"20200410064748749","modified":"20200410175238416","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/ViewToolbarButtons/Visibility/$:/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button":{"title":"$:/config/ViewToolbarButtons/Visibility/$:/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button","created":"20200411035036487","modified":"20200411035037540","type":"text/vnd.tiddlywiki","text":"hide"},"$:/palette":{"title":"$:/palette","type":"text/vnd.tiddlywiki","text":"$:/palettes/Notion"},"$:/tags/PageControls":{"title":"$:/tags/PageControls","created":"20200604080106170","creator":"LinOnetwo","list":"$:/plugins/linonetwo/omni-search-bar/ui/Buttons/search $:/core/ui/Buttons/home $:/core/ui/Buttons/close-all $:/core/ui/Buttons/fold-all $:/core/ui/Buttons/unfold-all $:/core/ui/Buttons/permaview $:/core/ui/Buttons/more-page-actions $:/core/ui/Buttons/new-tiddler $:/plugins/tiddlywiki/markdown/new-markdown-button $:/plugins/kookma/solution/buttons/pagecontrol $:/core/ui/Buttons/new-journal $:/core/ui/Buttons/new-image $:/core/ui/Buttons/import $:/core/ui/Buttons/export-page $:/core/ui/Buttons/control-panel $:/core/ui/Buttons/advanced-search $:/plugins/kookma/commander/buttons/pagecontrol $:/core/ui/Buttons/manager $:/core/ui/Buttons/tag-manager $:/core/ui/Buttons/language $:/core/ui/Buttons/palette $:/core/ui/Buttons/theme $:/core/ui/Buttons/storyview $:/core/ui/Buttons/encryption $:/core/ui/Buttons/timestamp $:/core/ui/Buttons/full-screen $:/core/ui/Buttons/print $:/core/ui/Buttons/refresh $:/plugins/kookma/utility/pagecontrol/view-fields-button $:/core/ui/Buttons/save-wiki $:/plugins/linonetwo/source-control-management/PageControlButton","type":"text/vnd.tiddlywiki"},"$:/theme":{"title":"$:/theme","type":"text/vnd.tiddlywiki","text":"$:/themes/linonetwo/itonnote"},"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint":{"title":"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint","created":"20200409023154184","creator":"林一二","modified":"20200409033737112","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"960px"},"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth":{"title":"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth","created":"20200408112506281","creator":"林一二","modified":"20211017052047040","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"380px"},"$:/themes/tiddlywiki/vanilla/metrics/storywidth":{"title":"$:/themes/tiddlywiki/vanilla/metrics/storywidth","created":"20200409023115883","creator":"林一二","modified":"20200409033737088","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"770px"},"$:/themes/tiddlywiki/vanilla/options/stickytitles":{"title":"$:/themes/tiddlywiki/vanilla/options/stickytitles","created":"20200408115751958","creator":"林一二","modified":"20200409033737062","modifier":"林一二","type":"text/vnd.tiddlywiki","text":"yes"},"$:/themes/tiddlywiki/vanilla/settings/codefontfamily":{"title":"$:/themes/tiddlywiki/vanilla/settings/codefontfamily","created":"20190420032819437","modified":"20200409033737050","type":"text/vnd.tiddlywiki","text":"'Fira Code',\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"},"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily":{"title":"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily","created":"20190421072924643","modified":"20200409033737038","type":"text/vnd.tiddlywiki","text":"'Fira Code',\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"},"$:/themes/tiddlywiki/vanilla/settings/fontfamily":{"title":"$:/themes/tiddlywiki/vanilla/settings/fontfamily","created":"20190420034215366","modified":"20200409033737026","type":"text/vnd.tiddlywiki","text":"'Fira Code',-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\""},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/contents":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/contents","created":"20200415162108079","modified":"20200602041547212","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/hamburger":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/hamburger","created":"20200415162126215","modified":"20200415162128295","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols","created":"20200415162131716","modified":"20200415162330718","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/sidebar":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/sidebar","created":"20200415162109418","modified":"20200415162109442","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/topleftbar":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/topleftbar","created":"20200415162101755","modified":"20200602041539750","type":"text/vnd.tiddlywiki","text":"hide"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/toprightbar":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/toprightbar","created":"20200415162118824","modified":"20200415163710486","type":"text/vnd.tiddlywiki","text":"show"},"$:/config/shortcuts-mac/bold":{"title":"$:/config/shortcuts-mac/bold","created":"20200602011151844","modified":"20200602011151860","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts-mac/italic":{"title":"$:/config/shortcuts-mac/italic","created":"20200602011428084","modified":"20200602011428114","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts-mac/new-image":{"title":"$:/config/shortcuts-mac/new-image","created":"20200602011526855","modified":"20200602011526866","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts-mac/new-journal":{"title":"$:/config/shortcuts-mac/new-journal","created":"20200602011519033","modified":"20200602011519055","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts-mac/toggle-sidebar":{"title":"$:/config/shortcuts-mac/toggle-sidebar","created":"20200602011322158","modified":"20200602011322171","type":"text/vnd.tiddlywiki","text":"cmd-B"},"$:/config/shortcuts-not-mac/bold":{"title":"$:/config/shortcuts-not-mac/bold","created":"20200602011156768","modified":"20200602011156779","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts-not-mac/new-image":{"title":"$:/config/shortcuts-not-mac/new-image","created":"20200602011529909","modified":"20200602011529924","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts-not-mac/new-journal":{"title":"$:/config/shortcuts-not-mac/new-journal","created":"20200602011521325","modified":"20200602011521342","type":"text/vnd.tiddlywiki"},"$:/config/shortcuts/bold":{"title":"$:/config/shortcuts/bold","created":"20200602011200184","modified":"20200602011200195","type":"text/vnd.tiddlywiki","text":"ctrl-B"},"$:/config/shortcuts/toggle-sidebar":{"title":"$:/config/shortcuts/toggle-sidebar","created":"20200602011309990","modified":"20200602011310003","type":"text/vnd.tiddlywiki"},"$:/plugins/linonetwo/itonnote/ControlPanel":{"title":"$:/plugins/linonetwo/itonnote/ControlPanel","type":"text/vnd.tiddlywiki","text":"!! 设置 Settings\n\n!!! 作为文件目录中根文件夹的笔记的标题 Title of the notes as the root folder in the file tree\n\n以这个标题作为标签的其它笔记相当于放入了根文件夹中:\n\nOther notes with this title as a tag are equivalent to being placed in the root folder:\n\n<$edit-text\n\ttiddler=\"$:/plugins/linonetwo/itonnote/Configs/SideBarFolderMenuBaseTitle\"\n\ttag=\"input\"\n\tdefault=\"Index\"\n\tplaceholder=\"\" />\n"},"导出文件 Export File":{"title":"导出文件 Export File","description":"导出文件 Export File","extension":"","tags":"$:/tags/Exporter","type":"text/vnd.tiddlywiki","text":"\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/plain-text-tiddler}}}\n\\end\n<>"},"$:/plugins/linonetwo/itonnote/Help/TW-Locator基于标签生成的文件夹目录结构使用方法":{"title":"$:/plugins/linonetwo/itonnote/Help/TW-Locator基于标签生成的文件夹目录结构使用方法","created":"20200413072141568","creator":"LinOnetwo","type":"text/vnd.tiddlywiki","text":"侧边栏的「目录结构」标签页里展示了[[通过标签系统自动生成|$:/plugins/linonetwo/itonnote/Help/在 TiddlyWiki 中使用虚拟文件夹]]的文件夹。\n\n若想修改根文件夹,请打开[[设置|$:/plugins/linonetwo/itonnote/ControlPanel]]。\n\n* 打了 A 标签,即相当于将文件存储在文件夹 A 中,并以 A 的内容作为文件夹的 Readme\n* 在任意Tiddler中使用「创建一个标签为此条目名称的新条目」按钮,可以创建以当前Tiddler为文件夹的文件\n* 点击 `>` 按钮(使它变成 `v`)可以展开文件夹\n* 直接点击文件夹的名字可以查看这个文件夹的 Readme\n* 分割线上方是当前目录,再往上是上级目录,点击分割线上方的上级目录名左侧的 `>` 按钮可以回到上级目录\n* 当处在 A 文件夹内时,点击分割线下方的 `+` 可以在当前文件夹里创建新文件(即创建打了 A 标签的新 Tiddler)\n* 点击 Filter by fields 可以展开分面搜索工具,点击分面搜索工具内的 `+` 可以增加筛选条件,点击 `x` 㐓减少筛选条件。\n\n---\n\nThe folder structure [[auto-generated by tag system|$:/plugins/linonetwo/itonnote/Help/在 TiddlyWiki 中使用虚拟文件夹]] is shown in the \"Directory structure\" tab in the sidebar.\n\nIf you want to modify the root folder, please open the [[Settings|$:/plugins/linonetwo/itonnote/ControlPanel]].\n\n* tagged with A, which is equivalent to storing the file in folder A and using the contents of A as the Readme of the folder\n* Use the \"Create a new tiddler with this tag name\" button in any Tiddler to create a file with the current Tiddler as the folder\n* Click the `>` button (to make it `v`) to expand the folder\n* Click directly on the name of a folder to see the Readme of that folder\n* Click the `>` button to the left of the parent directory name above the split line to go back to the parent directory.\n* When you are in the A folder, click `+` below the split line to create a new file in the current folder (i.e. create a new Tiddler with the A tag)\n* Click Filter by fields to expand the faceted search tool, click `+` inside the faceted search tool to increase the filtering criteria, click `x` can decrease the filtering criteria.\n"},"$:/plugins/linonetwo/itonnote/Help/在 TiddlyWiki 中使用虚拟文件夹":{"title":"$:/plugins/linonetwo/itonnote/Help/在 TiddlyWiki 中使用虚拟文件夹","created":"20200410054027122","creator":"LinOnetwo","type":"text/vnd.tiddlywiki","text":"!!! Tag\n\nThe Tag structure can be thought of as a folder directory structure with soft links to form a graphical structure, since Tag relationships are inherently free, and two notes can be tagged to each other and parented to each other in the folder structure.\n\nUsing tw-locator, you can create a \"file directory\" tab in the sidebar, which shows the folder structure generated by the tag. The details are written in [[$:/plugins/bimlas/locator/README/macros]], and the plugin should have it pre-populated in [[$:/plugins/linonetwo/itonnote/Sidebar/FolderMenu]], which can be used immediately or modified to override it.\n\nThen you can set the \"File Directory\" tab to be displayed by default in `$:/ControlPanel` -> \"Settings\" -> \"Default Sidebar Tab\", so that you can use TiddlyWiki as a folder system. And the plugin should already be pre-configured for this.\n\n!!! Slash\n\nTiddlyWiki comes with a way to create folders by using slashes in the header.\n\nThe various folders that come with the system can be seen via the sidebar under \"More\" -> \"Explore\".\n\nIf you use the NodeJS version of TiddlyWiki, these tiddlers will also be placed in the corresponding folders on the real file system.\n"},"$:/plugins/linonetwo/itonnote/Macros/OpenImageInGithub":{"title":"$:/plugins/linonetwo/itonnote/Macros/OpenImageInGithub","created":"20200412034056887","tags":"$:/tags/Macro","caption":"点击在新标签页打开Github大图","type":"text/vnd.tiddlywiki","text":"\\define view-big-image(source)\n\n \n\n\\end"},"$:/plugins/linonetwo/itonnote/Macros/TransclusionWithEditMe":{"title":"$:/plugins/linonetwo/itonnote/Macros/TransclusionWithEditMe","created":"20200408094804792","creator":"LinOnetwo","tags":"$:/tags/Macro 自改TW","caption":"带有「编辑此块」的引用transclusion宏","type":"text/vnd.tiddlywiki","text":"\\define reuse-pane(content)\n\n
    \n $content$\n
    \n\\end\n\n\\define reuse-tiddler(title)\n<$macrocall $name=\"reuse-pane\" content=\"\"\"\n查看引文:[[$title$]]\n\"\"\" />\n\n{{$title$}}\n\n\\end"},"$:/config/ChinesePluginLibrary/GitHub":{"title":"$:/config/ChinesePluginLibrary/GitHub","caption":"<$list filter=\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\" variable=\"lang\"><$list filter=\"[search:title[zh]]\">太微中文社区插件源(~GitHub版)<$list filter=\"[!search:title[zh]]\">TiddlyWiki Chinese CPL(~GitHub Host)","created":"20211210064945704","creator":"Sttot","modified":"20211210070811047","modifier":"Sttot","tags":"$:/tags/PluginLibrary","type":"text/vnd.tiddlywiki","url":"https://tiddly-gittly.github.io/TiddlyWiki-CPL/library/index.html","text":"\n<$list filter=\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\" variable=\"lang\">\n<$list filter=\"[search:title[zh]]\" variable=\"lang\">\n\n欢迎使用''【太微中文社区插件源】''!\n\n本插件源是由[[太微(TiddlyWiki)中文社区|https://github.com/tiddly-gittly]]维护的、致力于搜集网络上所有与 ~TiddlyWiki5 有关插件的、希望为中国以及全世界的太微用户提供一键安装、更新插件体验的公开插件源。\n\n如果还不了解该如何使用太微和本插件源,欢迎阅读[[中文社区共建的太微(TiddlyWiki)教程|https://tw-cn.netlify.app]]里插件相关的部分。如上提到的插件源和教程皆为开源项目,你可以在 [[GitHub|https://github.com/tiddly-gittly]] 中找到并参与贡献!如果乐意,可以通过QQ群等方式加入我们,详情请见如上提到的中文教程。\n\n要添加这个插件库到你的 Wiki 中,只需鼠标拖动这个链接到你的 Wiki 里即可:<$link to=<>>{{!!caption}}\n\n注意:本插件源版本为 ~GitHub Page 的版本,更新更快,但是可能需要科学上网手段。如果你在国内,而且不清楚什么是“科学上网”,请选用另一个经过 netlify.app 加速的[[版本|$:/config/ChinesePluginLibrary/Netlify]],虽然更新有一定的延迟,但对国内用户更加友好。\n\n\n\n<$list filter=\"[!search:title[zh]]\" variable=\"lang\">\n\nWelcome to the ''[TiddlyWiki Chinese Community Plugin Source]''!\n\nThis plugin source is maintained by the [[TiddlyWiki Chinese Community]] and is dedicated to collecting all TiddlyWiki5 related plugins on the web, hoping to provide a one-click installation and update plugin experience for TiddlyWiki users in China and around the world.\n\nIf you don't know how to use TiddlyWiki and this source, you are welcome to read the plugins related section in the [[TiddlyWiki Tutorials for Chinese Communities|https://tw-cn.netlify.app]]. As mentioned above, both the plugin source and the tutorial are open source projects, you can find them in [[GitHub|https://github.com/tiddly-gittly]] and participate in contributing! If you like, you can join us through QQ groups and other means, see the Chinese tutorials mentioned above for details.\n\nTo add this plugin library to your Wiki, just drag this link with your mouse into your Wiki: <$link to=<>{{!!caption}}\n\nNote: The source version of this plugin is the ~GitHub Page version, which is faster to update, but may require scientific Internet access. If you are in China and are not sure what GFW is, please use another [[version|$:/config/ChinesePluginLibrary/Netlify]] that is accelerated by netlify.app, although there is a certain delay in updating, but it is more friendly to domestic users more friendly.\n\n\n"},"$:/config/ChinesePluginLibrary/Netlify":{"title":"$:/config/ChinesePluginLibrary/Netlify","caption":"<$list filter=\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\" variable=\"lang\"><$list filter=\"[search:title[zh]]\">太微中文社区插件源(大陆加速版)<$list filter=\"[!search:title[zh]]\">TiddlyWiki Chinese CPL(Netlify Host)","created":"20211118102827947","creator":"Sttot","modified":"20211210070641055","modifier":"Sttot","tags":"$:/tags/PluginLibrary","type":"text/vnd.tiddlywiki","url":"https://tw-cpl.netlify.app/library/index.html","text":"\n<$list filter=\"[[$:/language]get[text]removeprefix[$:/languages/]else[en-GB]]\" variable=\"lang\">\n<$list filter=\"[search:title[zh]]\" variable=\"lang\">\n\n欢迎使用''【太微中文社区插件源】''!\n\n本插件源是由[[太微(TiddlyWiki)中文社区|https://github.com/tiddly-gittly]]维护的、致力于搜集网络上所有与 ~TiddlyWiki5 有关插件的、希望为中国以及全世界的太微用户提供一键安装、更新插件体验的公开插件源。\n\n如果还不了解该如何使用太微和本插件源,欢迎阅读[[中文社区共建的太微(TiddlyWiki)教程|https://tw-cn.netlify.app]]里插件相关的部分。如上提到的插件源和教程皆为开源项目,你可以在 [[GitHub|https://github.com/tiddly-gittly]] 中找到并参与贡献!如果乐意,可以通过QQ群等方式加入我们,详情请见如上提到的中文教程。\n\n要添加这个插件库到你的 Wiki 中,只需鼠标拖动这个链接到你的 Wiki 里即可:<$link to=<>>{{!!caption}}\n\n注意:本插件源版本为经过 netlify.app 加速的版本,对国内用户更加友好,但是更新有一定的延迟。还提供另一版本,是直接使用 ~GitHub Page 服务器的版本,更新更快,但是可能需要科学上网手段。\n\n\n\n<$list filter=\"[!search:title[zh]]\" variable=\"lang\">\n\nWelcome to the ''[TiddlyWiki Chinese Community Plugin Source]''!\n\nThis plugin source is maintained by the [[TiddlyWiki Chinese Community]] and is dedicated to collecting all TiddlyWiki5 related plugins on the web, hoping to provide a one-click installation and update plugin experience for TiddlyWiki users in China and around the world.\n\nIf you don't know how to use TiddlyWiki and this source, you are welcome to read the plugins related section in the [[TiddlyWiki Tutorials for Chinese Communities|https://tw-cn.netlify.app]]. As mentioned above, both the plugin source and the tutorial are open source projects, you can find them in [[GitHub|https://github.com/tiddly-gittly]] and participate in contributing! If you like, you can join us through QQ groups and other means, see the Chinese tutorials mentioned above for details.\n\nTo add this plugin library to your Wiki, just drag this link with your mouse into your Wiki: <$link to=<>{{!!caption}}\n\nNote: The source version of this plugin is a version accelerated by netlify.app, which is more friendly to China mainland users, but there is a delay in updating. There is also another version that uses the GitHub Page server directly, which is faster to update, but may require technology to overturn the GFW.\n\n\n"},"$:/config/wikilabs/PluginLibraryWL/latest":{"title":"$:/config/wikilabs/PluginLibraryWL/latest","caption":"Wikilabs Library","tags":"$:/tags/PluginLibrary","type":"text/vnd.tiddlywiki","url":"https://wikilabs.github.io/editions/pluginlibraryWL/library/latest/index.html","text":"~WikiLabs plugin library latest version!\n"},"$:/config/KookmaPluginLibrary":{"title":"$:/config/KookmaPluginLibrary","caption":"Kookma Plugin Library","created":"20200306121057751","modified":"20200410154132754","tags":"$:/tags/PluginLibrary","type":"text/vnd.tiddlywiki","url":"https://kookma.github.io/TW-PluginLibrary/library/index.html","text":"Kookma plugin library is a set of plugins, themes, and scripts, to extend functionality and add new features to Tiddlywiki. For detail information visit the library at [[GitHub|https://github.com/kookma]]. It is recommended to backup your data before installing any plugin, theme, or script. \n\nTo use in other wikis, drag and drop this link to those wikis: [[Kookma Plugin Library|$:/config/KookmaPluginLibrary]]"},"$:/config/OfficialPluginLibrary":{"title":"$:/config/OfficialPluginLibrary","tags":"$:/tags/PluginLibrary","url":"https://tiddlywiki.com/library/v5.2.1/index.html","caption":"{{$:/language/OfficialPluginLibrary}}","text":"{{$:/language/OfficialPluginLibrary/Hint}}"},"$:/plugins/linonetwo/itonnote/Sidebar/FolderMenu":{"title":"$:/plugins/linonetwo/itonnote/Sidebar/FolderMenu","caption":"文件目录","creator":"LinOnetwo","description":"文件夹系统目录结构","is-dropdown":"yes","tags":"$:/tags/SideBar $:/tags/MenuBar","type":"text/vnd.tiddlywiki","text":"<$scrollable fallthrough=\"none\" class=\"tc-popup-keep tc-menubar-dropdown-sidebar\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/focussedTiddler\" text={{$:/plugins/linonetwo/itonnote/Configs/SideBarFolderMenuBaseTitle}}>\n<$macrocall $name=\"locator-view\" baseTitle={{$:/temp/focussedTiddler}} />\n\n\n<$macrocall $name=\"locator-view\" baseTitle={{$:/plugins/linonetwo/itonnote/Configs/SideBarFolderMenuBaseTitle}} />\n\n[[使用帮助|$:/plugins/linonetwo/itonnote/Help/TW-Locator基于标签生成的文件夹目录结构使用方法]]\n\n"},"$:/plugins/linonetwo/itonnote/Sidebar/Locator Fields":{"title":"$:/plugins/linonetwo/itonnote/Sidebar/Locator Fields","caption":"Fields","creator":"LinOnetwo","tags":"$:/tags/SideBar","type":"text/vnd.tiddlywiki","text":"<$vars searchTiddler=\" \">\n <>\n"},"$:/plugins/linonetwo/itonnote/Sidebar/SearchResultByFacets":{"title":"$:/plugins/linonetwo/itonnote/Sidebar/SearchResultByFacets","caption":"Facets","created":"20200408140310432","creator":"LinOnetwo","tags":"$:/tags/SearchResults","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/linonetwo/itonnote/Sidebar/SearchResultByFields":{"title":"$:/plugins/linonetwo/itonnote/Sidebar/SearchResultByFields","caption":"Fields","created":"20200408140310432","creator":"LinOnetwo","tags":"$:/tags/SearchResults","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/linonetwo/itonnote/Snippets/LocatorAboutCurrentTiddler":{"title":"$:/plugins/linonetwo/itonnote/Snippets/LocatorAboutCurrentTiddler","caption":"添加一个使用当前标题的 tw-Locator","created":"20200408133348115","creator":"LinOnetwo","tags":"[[$:/plugins/linonetwo/itonnote/Help/在 TiddlyWiki 中使用虚拟文件夹]] $:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<$macrocall $name=\"locator-view\" baseTitle=<> />"},"$:/plugins/linonetwo/itonnote/Snippets/OpenImageInGithub":{"title":"$:/plugins/linonetwo/itonnote/Snippets/OpenImageInGithub","caption":"图片:点击在新标签页打开大图","created":"20200412041713662","creator":"LinOnetwo","tags":"$:/plugins/linonetwo/itonnote/Macros/OpenImageInGithub $:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/linonetwo/itonnote/Snippets/TransclusionWithEditMe":{"title":"$:/plugins/linonetwo/itonnote/Snippets/TransclusionWithEditMe","caption":"带「编辑此块」的引用Transclusion","created":"20200408132341855","creator":"LinOnetwo","tags":"$:/plugins/linonetwo/itonnote/Macros/TransclusionWithEditMe $:/tags/TextEditor/Snippet","type":"text/vnd.tiddlywiki","text":"<>"},"$:/plugins/linonetwo/itonnote/Startup/closeSidebarOnMobile.js":{"title":"$:/plugins/linonetwo/itonnote/Startup/closeSidebarOnMobile.js","text":"/*\\\ntitle: $:/themes/nico/notebook-mobile/js/notebookSidebarNav.js\ntype: application/javascript\nmodule-type: global\n\nCloses the notebook sidebar on mobile when navigating\n\n\\*/\n(function(){\n\n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n\n const isOnMobile = () => {\n // TODO: use https://github.com/Jermolene/TiddlyWiki5/pull/6675 after next release\n if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)){\n // true for mobile device\n return true\n }\n return false\n };\n\n const closeSidebar = () => {\n\t\t$tw.wiki.setText(\"$:/state/notebook-sidebar\", \"text\", undefined, \"no\");\n };\n\n const closeSidebarOnMobile = () => {\n\t\tif (isOnMobile()) {\n console.log(\"closing sidebar\");\n\t\t\tcloseSidebar();\n\t\t};\n };\n\n const setup = () => {\n\t\t$tw.hooks.addHook(\"th-navigating\",function(event) {\n\t\t\tcloseSidebarOnMobile();\n\t\t\treturn event;\n\t\t});\n };\n\n setup();\n\n exports.closeNotebookSidebar = closeSidebar;\n})();\n","type":"application/javascript","module-type":"global","creator":"NicolasPetton"},"$:/plugins/linonetwo/itonnote/Startup/electron-ipc-cat.js":{"title":"$:/plugins/linonetwo/itonnote/Startup/electron-ipc-cat.js","text":"'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, basedir, module) {\n return module = {\n path: basedir,\n exports: {},\n require: function (path, base) {\n return commonjsRequire(path, base === undefined || base === null ? module.path : base);\n }\n }, fn(module, module.exports), module.exports;\n}\n\nfunction getAugmentedNamespace(n) {\n if (n.__esModule) return n;\n var a = Object.defineProperty({}, '__esModule', {\n value: true\n });\n Object.keys(n).forEach(function (k) {\n var d = Object.getOwnPropertyDescriptor(n, k);\n Object.defineProperty(a, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return n[k];\n }\n });\n });\n return a;\n}\n\nfunction commonjsRequire() {\n throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n\nfunction __spreadArray(to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) to[j] = from[i];\n\n return to;\n}\n\nfunction __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nfunction __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\n\nfunction __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nfunction createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n\nvar UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n\n this.message = errors ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) {\n return i + 1 + \") \" + err.toString();\n }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n\nfunction arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n\nvar Subscription = function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._teardowns = null;\n }\n\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n\n var errors;\n\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n\n if (_parentage) {\n this._parentage = null;\n\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n var initialTeardown = this.initialTeardown;\n\n if (isFunction(initialTeardown)) {\n try {\n initialTeardown();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n var _teardowns = this._teardowns;\n\n if (_teardowns) {\n this._teardowns = null;\n\n try {\n for (var _teardowns_1 = __values(_teardowns), _teardowns_1_1 = _teardowns_1.next(); !_teardowns_1_1.done; _teardowns_1_1 = _teardowns_1.next()) {\n var teardown_1 = _teardowns_1_1.value;\n\n try {\n execTeardown(teardown_1);\n } catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n } else {\n errors.push(err);\n }\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_teardowns_1_1 && !_teardowns_1_1.done && (_b = _teardowns_1.return)) _b.call(_teardowns_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n\n Subscription.prototype.add = function (teardown) {\n var _a;\n\n if (teardown && teardown !== this) {\n if (this.closed) {\n execTeardown(teardown);\n } else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n\n teardown._addParent(this);\n }\n\n (this._teardowns = (_a = this._teardowns) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent);\n };\n\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n\n Subscription.prototype.remove = function (teardown) {\n var _teardowns = this._teardowns;\n _teardowns && arrRemove(_teardowns, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n\n Subscription.EMPTY = function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n }();\n\n return Subscription;\n}();\n\nvar EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nfunction isSubscription(value) {\n return value instanceof Subscription || value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe);\n}\n\nfunction execTeardown(teardown) {\n if (isFunction(teardown)) {\n teardown();\n } else {\n teardown.unsubscribe();\n }\n}\n\nvar config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false\n};\nvar timeoutProvider = {\n setTimeout: function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) || setTimeout).apply(void 0, __spreadArray([], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined\n};\n\nfunction reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n\n if (onUnhandledError) {\n onUnhandledError(err);\n } else {\n throw err;\n }\n });\n}\n\nfunction noop() {}\n\nvar COMPLETE_NOTIFICATION = function () {\n return createNotification('C', undefined, undefined);\n}();\n\nfunction errorNotification(error) {\n return createNotification('E', undefined, error);\n}\n\nfunction nextNotification(value) {\n return createNotification('N', value, undefined);\n}\n\nfunction createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error\n };\n}\n\nvar context = null;\n\nfunction errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n\n if (isRoot) {\n context = {\n errorThrown: false,\n error: null\n };\n }\n\n cb();\n\n if (isRoot) {\n var _a = context,\n errorThrown = _a.errorThrown,\n error = _a.error;\n context = null;\n\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n cb();\n }\n}\n\nfunction captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n\nvar Subscriber = function (_super) {\n __extends(Subscriber, _super);\n\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n\n _this.isStopped = false;\n\n if (destination) {\n _this.destination = destination;\n\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n } else {\n _this.destination = EMPTY_OBSERVER;\n }\n\n return _this;\n }\n\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value);\n }\n };\n\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n\n this._error(err);\n }\n };\n\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n\n this._complete();\n }\n };\n\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n\n _super.prototype.unsubscribe.call(this);\n\n this.destination = null;\n }\n };\n\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n };\n\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n };\n\n return Subscriber;\n}(Subscription);\n\nvar SafeSubscriber = function (_super) {\n __extends(SafeSubscriber, _super);\n\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n\n var next;\n\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n } else if (observerOrNext) {\n next = observerOrNext.next, error = observerOrNext.error, complete = observerOrNext.complete;\n var context_1;\n\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n\n context_1.unsubscribe = function () {\n return _this.unsubscribe();\n };\n } else {\n context_1 = observerOrNext;\n }\n\n next = next === null || next === void 0 ? void 0 : next.bind(context_1);\n error = error === null || error === void 0 ? void 0 : error.bind(context_1);\n complete = complete === null || complete === void 0 ? void 0 : complete.bind(context_1);\n }\n\n _this.destination = {\n next: next ? wrapForErrorHandling(next) : noop,\n error: wrapForErrorHandling(error !== null && error !== void 0 ? error : defaultErrorHandler),\n complete: complete ? wrapForErrorHandling(complete) : noop\n };\n return _this;\n }\n\n return SafeSubscriber;\n}(Subscriber);\n\nfunction wrapForErrorHandling(handler, instance) {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n try {\n handler.apply(void 0, __spreadArray([], __read(args)));\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(err);\n } else {\n reportUnhandledError(err);\n }\n }\n };\n}\n\nfunction defaultErrorHandler(err) {\n throw err;\n}\n\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () {\n return onStoppedNotification(notification, subscriber);\n });\n}\n\nvar EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop\n};\n\nvar observable = function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n}();\n\nfunction identity(x) {\n return x;\n}\n\nfunction pipe() {\n var fns = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n\n return pipeFromArray(fns);\n}\n\nfunction pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input) {\n return fns.reduce(function (prev, fn) {\n return fn(prev);\n }, input);\n };\n}\n\nvar Observable = function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this,\n operator = _a.operator,\n source = _a.source;\n subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n } catch (err) {\n sink.error(err);\n }\n };\n\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();\n }\n }, reject, resolve);\n });\n };\n\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n\n Observable.prototype[observable] = function () {\n return this;\n };\n\n Observable.prototype.pipe = function () {\n var operations = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n\n return pipeFromArray(operations)(this);\n };\n\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n\n _this.subscribe(function (x) {\n return value = x;\n }, function (err) {\n return reject(err);\n }, function () {\n return resolve(value);\n });\n });\n };\n\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n\n return Observable;\n}();\n\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\n\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber(value) {\n return value && value instanceof Subscriber || isObserver(value) && isSubscription(value);\n}\n\nfunction hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\n\nfunction operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n } catch (err) {\n this.error(err);\n }\n });\n }\n\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n\nvar OperatorSubscriber = function (_super) {\n __extends(OperatorSubscriber, _super);\n\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n var _this = _super.call(this, destination) || this;\n\n _this.onFinalize = onFinalize;\n _this._next = onNext ? function (value) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n } : _super.prototype._next;\n _this._error = onError ? function (err) {\n try {\n onError(err);\n } catch (err) {\n destination.error(err);\n } finally {\n this.unsubscribe();\n }\n } : _super.prototype._error;\n _this._complete = onComplete ? function () {\n try {\n onComplete();\n } catch (err) {\n destination.error(err);\n } finally {\n this.unsubscribe();\n }\n } : _super.prototype._complete;\n return _this;\n }\n\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n\n var closed = this.closed;\n\n _super.prototype.unsubscribe.call(this);\n\n !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n };\n\n return OperatorSubscriber;\n}(Subscriber);\n\nfunction refCount() {\n return operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = new OperatorSubscriber(subscriber, undefined, undefined, undefined, function () {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n\n var sharedConnection = source._connection;\n var conn = connection;\n connection = null;\n\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\n\nvar ConnectableObservable = function (_super) {\n __extends(ConnectableObservable, _super);\n\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._subject = null;\n _this._refCount = 0;\n _this._connection = null;\n\n if (hasLift(source)) {\n _this.lift = source.lift;\n }\n\n return _this;\n }\n\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n\n return this._subject;\n };\n\n ConnectableObservable.prototype._teardown = function () {\n this._refCount = 0;\n var _connection = this._connection;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n };\n\n ConnectableObservable.prototype.connect = function () {\n var _this = this;\n\n var connection = this._connection;\n\n if (!connection) {\n connection = this._connection = new Subscription();\n var subject_1 = this.getSubject();\n connection.add(this.source.subscribe(new OperatorSubscriber(subject_1, undefined, function () {\n _this._teardown();\n\n subject_1.complete();\n }, function (err) {\n _this._teardown();\n\n subject_1.error(err);\n }, function () {\n return _this._teardown();\n })));\n\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n\n return connection;\n };\n\n ConnectableObservable.prototype.refCount = function () {\n return refCount()(this);\n };\n\n return ConnectableObservable;\n}(Observable);\n\nvar performanceTimestampProvider = {\n now: function () {\n return (performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined\n};\nvar animationFrameProvider = {\n schedule: function (callback) {\n var request = requestAnimationFrame;\n var cancel = cancelAnimationFrame;\n var delegate = animationFrameProvider.delegate;\n\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n\n var handle = request(function (timestamp) {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(function () {\n return cancel === null || cancel === void 0 ? void 0 : cancel(handle);\n });\n },\n requestAnimationFrame: function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n cancelAnimationFrame: function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n delegate: undefined\n};\n\nfunction animationFrames(timestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\n\nfunction animationFramesFactory(timestampProvider) {\n var schedule = animationFrameProvider.schedule;\n return new Observable(function (subscriber) {\n var subscription = new Subscription();\n var provider = timestampProvider || performanceTimestampProvider;\n var start = provider.now();\n\n var run = function (timestamp) {\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start\n });\n\n if (!subscriber.closed) {\n subscription.add(schedule(run));\n }\n };\n\n subscription.add(schedule(run));\n return subscription;\n });\n}\n\nvar DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\nvar ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n\nvar Subject = function (_super) {\n __extends(Subject, _super);\n\n function Subject() {\n var _this = _super.call(this) || this;\n\n _this.closed = false;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n\n Subject.prototype.next = function (value) {\n var _this = this;\n\n errorContext(function () {\n var e_1, _a;\n\n _this._throwIfClosed();\n\n if (!_this.isStopped) {\n var copy = _this.observers.slice();\n\n try {\n for (var copy_1 = __values(copy), copy_1_1 = copy_1.next(); !copy_1_1.done; copy_1_1 = copy_1.next()) {\n var observer = copy_1_1.value;\n observer.next(value);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (copy_1_1 && !copy_1_1.done && (_a = copy_1.return)) _a.call(copy_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n });\n };\n\n Subject.prototype.error = function (err) {\n var _this = this;\n\n errorContext(function () {\n _this._throwIfClosed();\n\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n\n Subject.prototype.complete = function () {\n var _this = this;\n\n errorContext(function () {\n _this._throwIfClosed();\n\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = null;\n };\n\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n\n this._checkFinalizedStatuses(subscriber);\n\n return this._innerSubscribe(subscriber);\n };\n\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _a = this,\n hasError = _a.hasError,\n isStopped = _a.isStopped,\n observers = _a.observers;\n\n return hasError || isStopped ? EMPTY_SUBSCRIPTION : (observers.push(subscriber), new Subscription(function () {\n return arrRemove(observers, subscriber);\n }));\n };\n\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this,\n hasError = _a.hasError,\n thrownError = _a.thrownError,\n isStopped = _a.isStopped;\n\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n };\n\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n\n return Subject;\n}(Observable);\n\nvar AnonymousSubject = function (_super) {\n __extends(AnonymousSubject, _super);\n\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n\n return AnonymousSubject;\n}(Subject);\n\nvar BehaviorSubject = function (_super) {\n __extends(BehaviorSubject, _super);\n\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n\n _this._value = _value;\n return _this;\n }\n\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n\n BehaviorSubject.prototype.getValue = function () {\n var _a = this,\n hasError = _a.hasError,\n thrownError = _a.thrownError,\n _value = _a._value;\n\n if (hasError) {\n throw thrownError;\n }\n\n this._throwIfClosed();\n\n return _value;\n };\n\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, this._value = value);\n };\n\n return BehaviorSubject;\n}(Subject);\n\nvar dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined\n};\n\nvar ReplaySubject = function (_super) {\n __extends(ReplaySubject, _super);\n\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) {\n _bufferSize = Infinity;\n }\n\n if (_windowTime === void 0) {\n _windowTime = Infinity;\n }\n\n if (_timestampProvider === void 0) {\n _timestampProvider = dateTimestampProvider;\n }\n\n var _this = _super.call(this) || this;\n\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n\n ReplaySubject.prototype.next = function (value) {\n var _a = this,\n isStopped = _a.isStopped,\n _buffer = _a._buffer,\n _infiniteTimeWindow = _a._infiniteTimeWindow,\n _timestampProvider = _a._timestampProvider,\n _windowTime = _a._windowTime;\n\n if (!isStopped) {\n _buffer.push(value);\n\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n\n this._trimBuffer();\n\n _super.prototype.next.call(this, value);\n };\n\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n\n this._trimBuffer();\n\n var subscription = this._innerSubscribe(subscriber);\n\n var _a = this,\n _infiniteTimeWindow = _a._infiniteTimeWindow,\n _buffer = _a._buffer;\n\n var copy = _buffer.slice();\n\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n };\n\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this,\n _bufferSize = _a._bufferSize,\n _timestampProvider = _a._timestampProvider,\n _buffer = _a._buffer,\n _infiniteTimeWindow = _a._infiniteTimeWindow;\n\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n\n var last = 0;\n\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n\n last && _buffer.splice(0, last + 1);\n }\n };\n\n return ReplaySubject;\n}(Subject);\n\nvar AsyncSubject = function (_super) {\n __extends(AsyncSubject, _super);\n\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._value = null;\n _this._hasValue = false;\n _this._isComplete = false;\n return _this;\n }\n\n AsyncSubject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this,\n hasError = _a.hasError,\n _hasValue = _a._hasValue,\n _value = _a._value,\n thrownError = _a.thrownError,\n isStopped = _a.isStopped,\n _isComplete = _a._isComplete;\n\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped || _isComplete) {\n _hasValue && subscriber.next(_value);\n subscriber.complete();\n }\n };\n\n AsyncSubject.prototype.next = function (value) {\n if (!this.isStopped) {\n this._value = value;\n this._hasValue = true;\n }\n };\n\n AsyncSubject.prototype.complete = function () {\n var _a = this,\n _hasValue = _a._hasValue,\n _value = _a._value,\n _isComplete = _a._isComplete;\n\n if (!_isComplete) {\n this._isComplete = true;\n _hasValue && _super.prototype.next.call(this, _value);\n\n _super.prototype.complete.call(this);\n }\n };\n\n return AsyncSubject;\n}(Subject);\n\nvar Action = function (_super) {\n __extends(Action, _super);\n\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n\n Action.prototype.schedule = function (state, delay) {\n return this;\n };\n\n return Action;\n}(Subscription);\n\nvar intervalProvider = {\n setInterval: function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) || setInterval).apply(void 0, __spreadArray([], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined\n};\n\nvar AsyncAction = function (_super) {\n __extends(AsyncAction, _super);\n\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (this.closed) {\n return this;\n }\n\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n\n intervalProvider.clearInterval(id);\n return undefined;\n };\n\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n\n var error = this._execute(state, delay);\n\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this,\n id = _a.id,\n scheduler = _a.scheduler;\n\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null;\n\n _super.prototype.unsubscribe.call(this);\n }\n };\n\n return AsyncAction;\n}(Action);\n\nvar nextHandle = 1;\nvar resolved;\nvar activeHandles = {};\n\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n\n return false;\n}\n\nvar Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n\n if (!resolved) {\n resolved = Promise.resolve();\n }\n\n resolved.then(function () {\n return findAndClearHandle(handle) && cb();\n });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n }\n};\nvar setImmediate = Immediate.setImmediate,\n clearImmediate = Immediate.clearImmediate;\nvar immediateProvider = {\n setImmediate: function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args)));\n },\n clearImmediate: function (handle) {\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined\n};\n\nvar AsapAction = function (_super) {\n __extends(AsapAction, _super);\n\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay != null && delay > 0 || delay == null && this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n\n if (scheduler.actions.length === 0) {\n immediateProvider.clearImmediate(id);\n scheduler._scheduled = undefined;\n }\n\n return undefined;\n };\n\n return AsapAction;\n}(AsyncAction);\n\nvar Scheduler = function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}();\n\nvar AsyncScheduler = function (_super) {\n __extends(AsyncScheduler, _super);\n\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n\n var _this = _super.call(this, SchedulerAction, now) || this;\n\n _this.actions = [];\n _this._active = false;\n _this._scheduled = undefined;\n return _this;\n }\n\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n\n if (this._active) {\n actions.push(action);\n return;\n }\n\n var error;\n this._active = true;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n\n this._active = false;\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n\n throw error;\n }\n };\n\n return AsyncScheduler;\n}(Scheduler);\n\nvar AsapScheduler = function (_super) {\n __extends(AsapScheduler, _super);\n\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AsapScheduler.prototype.flush = function (action) {\n this._active = true;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n action = action || actions.shift();\n var count = actions.length;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this._active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n\n throw error;\n }\n };\n\n return AsapScheduler;\n}(AsyncScheduler);\n\nvar asapScheduler = new AsapScheduler(AsapAction);\nvar asap = asapScheduler;\nvar asyncScheduler = new AsyncScheduler(AsyncAction);\nvar async = asyncScheduler;\n\nvar QueueAction = function (_super) {\n __extends(QueueAction, _super);\n\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n\n QueueAction.prototype.execute = function (state, delay) {\n return delay > 0 || this.closed ? _super.prototype.execute.call(this, state, delay) : this._execute(state, delay);\n };\n\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay != null && delay > 0 || delay == null && this.delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n\n return scheduler.flush(this);\n };\n\n return QueueAction;\n}(AsyncAction);\n\nvar QueueScheduler = function (_super) {\n __extends(QueueScheduler, _super);\n\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return QueueScheduler;\n}(AsyncScheduler);\n\nvar queueScheduler = new QueueScheduler(QueueAction);\nvar queue = queueScheduler;\n\nvar AnimationFrameAction = function (_super) {\n __extends(AnimationFrameAction, _super);\n\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(function () {\n return scheduler.flush(undefined);\n }));\n };\n\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (delay != null && delay > 0 || delay == null && this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n\n if (scheduler.actions.length === 0) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n\n return undefined;\n };\n\n return AnimationFrameAction;\n}(AsyncAction);\n\nvar AnimationFrameScheduler = function (_super) {\n __extends(AnimationFrameScheduler, _super);\n\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AnimationFrameScheduler.prototype.flush = function (action) {\n this._active = true;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n action = action || actions.shift();\n var count = actions.length;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this._active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n\n throw error;\n }\n };\n\n return AnimationFrameScheduler;\n}(AsyncScheduler);\n\nvar animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nvar animationFrame = animationFrameScheduler;\n\nvar VirtualTimeScheduler = function (_super) {\n __extends(VirtualTimeScheduler, _super);\n\n function VirtualTimeScheduler(schedulerActionCtor, maxFrames) {\n if (schedulerActionCtor === void 0) {\n schedulerActionCtor = VirtualAction;\n }\n\n if (maxFrames === void 0) {\n maxFrames = Infinity;\n }\n\n var _this = _super.call(this, schedulerActionCtor, function () {\n return _this.frame;\n }) || this;\n\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this,\n actions = _a.actions,\n maxFrames = _a.maxFrames;\n\n var error;\n var action;\n\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n }\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n\n throw error;\n }\n };\n\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler);\n\nvar VirtualAction = function (_super) {\n __extends(VirtualAction, _super);\n\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) {\n index = scheduler.index += 1;\n }\n\n var _this = _super.call(this, scheduler, work) || this;\n\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n if (Number.isFinite(delay)) {\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n } else {\n return Subscription.EMPTY;\n }\n };\n\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return true;\n };\n\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n return undefined;\n };\n\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n } else if (a.index > b.index) {\n return 1;\n } else {\n return -1;\n }\n } else if (a.delay > b.delay) {\n return 1;\n } else {\n return -1;\n }\n };\n\n return VirtualAction;\n}(AsyncAction);\n\nvar EMPTY = new Observable(function (subscriber) {\n return subscriber.complete();\n});\n\nfunction empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) {\n return scheduler.schedule(function () {\n return subscriber.complete();\n });\n });\n}\n\nfunction scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n } else {\n subscriber.next(input[i++]);\n\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n\nvar isArrayLike = function (x) {\n return x && typeof x.length === 'number' && typeof x !== 'function';\n};\n\nfunction isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n\nfunction scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable$1 = input[observable]();\n sub.add(observable$1.subscribe({\n next: function (value) {\n sub.add(scheduler.schedule(function () {\n return subscriber.next(value);\n }));\n },\n error: function (err) {\n sub.add(scheduler.schedule(function () {\n return subscriber.error(err);\n }));\n },\n complete: function () {\n sub.add(scheduler.schedule(function () {\n return subscriber.complete();\n }));\n }\n }));\n }));\n return sub;\n });\n}\n\nfunction schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n return scheduler.schedule(function () {\n return input.then(function (value) {\n subscriber.add(scheduler.schedule(function () {\n subscriber.next(value);\n subscriber.add(scheduler.schedule(function () {\n return subscriber.complete();\n }));\n }));\n }, function (err) {\n subscriber.add(scheduler.schedule(function () {\n return subscriber.error(err);\n }));\n });\n });\n });\n}\n\nfunction getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n\n return Symbol.iterator;\n}\n\nvar iterator = getSymbolIterator();\n\nfunction caughtSchedule(subscriber, scheduler, execute, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n var subscription = scheduler.schedule(function () {\n try {\n execute.call(this);\n } catch (err) {\n subscriber.error(err);\n }\n }, delay);\n subscriber.add(subscription);\n return subscription;\n}\n\nfunction scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator$1;\n subscriber.add(scheduler.schedule(function () {\n iterator$1 = input[iterator]();\n caughtSchedule(subscriber, scheduler, function () {\n var _a = iterator$1.next(),\n value = _a.value,\n done = _a.done;\n\n if (done) {\n subscriber.complete();\n } else {\n subscriber.next(value);\n this.schedule();\n }\n });\n }));\n return function () {\n return isFunction(iterator$1 === null || iterator$1 === void 0 ? void 0 : iterator$1.return) && iterator$1.return();\n };\n });\n}\n\nfunction scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var iterator = input[Symbol.asyncIterator]();\n sub.add(scheduler.schedule(function () {\n var _this = this;\n\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n } else {\n subscriber.next(result.value);\n\n _this.schedule();\n }\n });\n }));\n }));\n return sub;\n });\n}\n\nfunction isInteropObservable(input) {\n return isFunction(input[observable]);\n}\n\nfunction isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[iterator]);\n}\n\nfunction isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n\nfunction createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n\nfunction readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n\n case 1:\n _b.trys.push([1,, 9, 10]);\n\n _b.label = 2;\n\n case 2:\n return [4, __await(reader.read())];\n\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n\n case 4:\n return [2, _b.sent()];\n\n case 5:\n return [4, __await(value)];\n\n case 6:\n return [4, _b.sent()];\n\n case 7:\n _b.sent();\n\n return [3, 2];\n\n case 8:\n return [3, 10];\n\n case 9:\n reader.releaseLock();\n return [7];\n\n case 10:\n return [2];\n }\n });\n });\n}\n\nfunction isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n\nfunction scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n\nfunction scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n\n throw createInvalidObservableTypeError(input);\n}\n\nfunction from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n\nfunction innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n\n if (isPromise(input)) {\n return fromPromise(input);\n }\n\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n\n if (isIterable(input)) {\n return fromIterable(input);\n }\n\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n\n throw createInvalidObservableTypeError(input);\n}\n\nfunction fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[observable]();\n\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\n\nfunction fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n\n subscriber.complete();\n });\n}\n\nfunction fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) {\n return subscriber.error(err);\n }).then(null, reportUnhandledError);\n });\n}\n\nfunction fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n\n if (subscriber.closed) {\n return;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n subscriber.complete();\n });\n}\n\nfunction fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) {\n return subscriber.error(err);\n });\n });\n}\n\nfunction fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\n\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n\n var e_2, _a;\n\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n\n case 1:\n return [4, asyncIterable_1.next()];\n\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n\n if (subscriber.closed) {\n return [2];\n }\n\n _b.label = 3;\n\n case 3:\n return [3, 1];\n\n case 4:\n return [3, 11];\n\n case 5:\n e_2_1 = _b.sent();\n e_2 = {\n error: e_2_1\n };\n return [3, 11];\n\n case 6:\n _b.trys.push([6,, 9, 10]);\n\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n\n case 7:\n _b.sent();\n\n _b.label = 8;\n\n case 8:\n return [3, 10];\n\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n\n case 10:\n return [7];\n\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n\nfunction internalFromArray(input, scheduler) {\n return scheduler ? scheduleArray(input, scheduler) : fromArrayLike(input);\n}\n\nfunction isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n\nfunction last$1(arr) {\n return arr[arr.length - 1];\n}\n\nfunction popResultSelector(args) {\n return isFunction(last$1(args)) ? args.pop() : undefined;\n}\n\nfunction popScheduler(args) {\n return isScheduler(last$1(args)) ? args.pop() : undefined;\n}\n\nfunction popNumber(args, defaultValue) {\n return typeof last$1(args) === 'number' ? args.pop() : defaultValue;\n}\n\nfunction of() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var scheduler = popScheduler(args);\n return scheduler ? scheduleArray(args, scheduler) : internalFromArray(args);\n}\n\nfunction throwError(errorOrErrorFactory, scheduler) {\n var errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function () {\n return errorOrErrorFactory;\n };\n\n var init = function (subscriber) {\n return subscriber.error(errorFactory());\n };\n\n return new Observable(scheduler ? function (subscriber) {\n return scheduler.schedule(init, 0, subscriber);\n } : init);\n}\n\nvar NotificationKind;\n\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\n\nvar Notification = function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n\n Notification.prototype.observe = function (observer) {\n return observeNotification(this, observer);\n };\n\n Notification.prototype.do = function (nextHandler, errorHandler, completeHandler) {\n var _a = this,\n kind = _a.kind,\n value = _a.value,\n error = _a.error;\n\n return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();\n };\n\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n var _a;\n\n return isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next) ? this.observe(nextOrObserver) : this.do(nextOrObserver, error, complete);\n };\n\n Notification.prototype.toObservable = function () {\n var _a = this,\n kind = _a.kind,\n value = _a.value,\n error = _a.error;\n\n var result = kind === 'N' ? of(value) : kind === 'E' ? throwError(function () {\n return error;\n }) : kind === 'C' ? EMPTY : 0;\n\n if (!result) {\n throw new TypeError(\"Unexpected notification kind \" + kind);\n }\n\n return result;\n };\n\n Notification.createNext = function (value) {\n return new Notification('N', value);\n };\n\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n\n Notification.completeNotification = new Notification('C');\n return Notification;\n}();\n\nfunction observeNotification(notification, observer) {\n var _a, _b, _c;\n\n var _d = notification,\n kind = _d.kind,\n value = _d.value,\n error = _d.error;\n\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n\n kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n}\n\nfunction isObservable(obj) {\n return !!obj && (obj instanceof Observable || isFunction(obj.lift) && isFunction(obj.subscribe));\n}\n\nvar EmptyError = createErrorClass(function (_super) {\n return function EmptyErrorImpl() {\n _super(this);\n\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n };\n});\n\nfunction lastValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var _hasValue = false;\n\n var _value;\n\n source.subscribe({\n next: function (value) {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: function () {\n if (_hasValue) {\n resolve(_value);\n } else if (hasConfig) {\n resolve(config.defaultValue);\n } else {\n reject(new EmptyError());\n }\n }\n });\n });\n}\n\nfunction firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: function () {\n if (hasConfig) {\n resolve(config.defaultValue);\n } else {\n reject(new EmptyError());\n }\n }\n });\n source.subscribe(subscriber);\n });\n}\n\nvar ArgumentOutOfRangeError = createErrorClass(function (_super) {\n return function ArgumentOutOfRangeErrorImpl() {\n _super(this);\n\n this.name = 'ArgumentOutOfRangeError';\n this.message = 'argument out of range';\n };\n});\nvar NotFoundError = createErrorClass(function (_super) {\n return function NotFoundErrorImpl(message) {\n _super(this);\n\n this.name = 'NotFoundError';\n this.message = message;\n };\n});\nvar SequenceError = createErrorClass(function (_super) {\n return function SequenceErrorImpl(message) {\n _super(this);\n\n this.name = 'SequenceError';\n this.message = message;\n };\n});\n\nfunction isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n\nvar TimeoutError = createErrorClass(function (_super) {\n return function TimeoutErrorImpl(info) {\n if (info === void 0) {\n info = null;\n }\n\n _super(this);\n\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n };\n});\n\nfunction timeout(config, schedulerArg) {\n var _a = isValidDate(config) ? {\n first: config\n } : typeof config === 'number' ? {\n each: config\n } : config,\n first = _a.first,\n each = _a.each,\n _b = _a.with,\n _with = _b === void 0 ? timeoutErrorFactory : _b,\n _c = _a.scheduler,\n scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c,\n _d = _a.meta,\n meta = _d === void 0 ? null : _d;\n\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n\n return operate(function (source, subscriber) {\n var originalSourceSubscription;\n var timerSubscription;\n var lastValue = null;\n var seen = 0;\n\n var startTimer = function (delay) {\n timerSubscription = caughtSchedule(subscriber, scheduler, function () {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen\n })).subscribe(subscriber);\n }, delay);\n };\n\n originalSourceSubscription = source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n seen++;\n subscriber.next(lastValue = value);\n each > 0 && startTimer(each);\n }, undefined, undefined, function () {\n if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n }\n\n lastValue = null;\n }));\n startTimer(first != null ? typeof first === 'number' ? first : +first - scheduler.now() : each);\n });\n}\n\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n\nfunction subscribeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () {\n return source.subscribe(subscriber);\n }, delay));\n });\n}\n\nfunction map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n\nvar isArray$2 = Array.isArray;\n\nfunction callOrApply(fn, args) {\n return isArray$2(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\n\nfunction mapOneOrManyArgs(fn) {\n return map(function (args) {\n return callOrApply(fn, args);\n });\n}\n\nfunction observeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return subscriber.add(scheduler.schedule(function () {\n return subscriber.next(value);\n }, delay));\n }, function () {\n return subscriber.add(scheduler.schedule(function () {\n return subscriber.complete();\n }, delay));\n }, function (err) {\n return subscriber.add(scheduler.schedule(function () {\n return subscriber.error(err);\n }, delay));\n }));\n });\n}\n\nfunction bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler).apply(this, args).pipe(mapOneOrManyArgs(resultSelector));\n };\n }\n }\n\n if (scheduler) {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return bindCallbackInternals(isNodeStyle, callbackFunc).apply(this, args).pipe(subscribeOn(scheduler), observeOn(scheduler));\n };\n }\n\n return function () {\n var _this = this;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var subject = new AsyncSubject();\n var uninitialized = true;\n return new Observable(function (subscriber) {\n var subs = subject.subscribe(subscriber);\n\n if (uninitialized) {\n uninitialized = false;\n var isAsync_1 = false;\n var isComplete_1 = false;\n callbackFunc.apply(_this, __spreadArray(__spreadArray([], __read(args)), [function () {\n var results = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n results[_i] = arguments[_i];\n }\n\n if (isNodeStyle) {\n var err = results.shift();\n\n if (err != null) {\n subject.error(err);\n return;\n }\n }\n\n subject.next(1 < results.length ? results : results[0]);\n isComplete_1 = true;\n\n if (isAsync_1) {\n subject.complete();\n }\n }]));\n\n if (isComplete_1) {\n subject.complete();\n }\n\n isAsync_1 = true;\n }\n\n return subs;\n });\n };\n}\n\nfunction bindCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals(false, callbackFunc, resultSelector, scheduler);\n}\n\nfunction bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals(true, callbackFunc, resultSelector, scheduler);\n}\n\nvar isArray$1 = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf,\n objectProto = Object.prototype,\n getKeys = Object.keys;\n\nfunction argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n\n if (isArray$1(first_1)) {\n return {\n args: first_1,\n keys: null\n };\n }\n\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) {\n return first_1[key];\n }),\n keys: keys\n };\n }\n }\n\n return {\n args: args,\n keys: null\n };\n}\n\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n\nfunction createObject(keys, values) {\n return keys.reduce(function (result, key, i) {\n return result[key] = values[i], result;\n }, {});\n}\n\nfunction combineLatest$1() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var scheduler = popScheduler(args);\n var resultSelector = popResultSelector(args);\n\n var _a = argsArgArrayOrObject(args),\n observables = _a.args,\n keys = _a.keys;\n\n if (observables.length === 0) {\n return from([], scheduler);\n }\n\n var result = new Observable(combineLatestInit(observables, scheduler, keys ? function (values) {\n return createObject(keys, values);\n } : identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n\nfunction combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) {\n valueTransform = identity;\n }\n\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (! --active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\n\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n subscription.add(scheduler.schedule(execute));\n } else {\n execute();\n }\n}\n\nfunction mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalTeardown) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n\n var outerNext = function (value) {\n return active < concurrent ? doInnerSub(value) : buffer.push(value);\n };\n\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(new OperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n\n if (expand) {\n outerNext(innerValue);\n } else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n innerSubScheduler ? subscriber.add(innerSubScheduler.schedule(function () {\n return doInnerSub(bufferedValue);\n })) : doInnerSub(bufferedValue);\n };\n\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n\n checkComplete();\n } catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalTeardown === null || additionalTeardown === void 0 ? void 0 : additionalTeardown();\n };\n}\n\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Infinity;\n }\n\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) {\n return map(function (b, ii) {\n return resultSelector(a, b, i, ii);\n })(innerFrom(project(a, i)));\n }, concurrent);\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n\n return operate(function (source, subscriber) {\n return mergeInternals(source, subscriber, project, concurrent);\n });\n}\n\nfunction mergeAll(concurrent) {\n if (concurrent === void 0) {\n concurrent = Infinity;\n }\n\n return mergeMap(identity, concurrent);\n}\n\nfunction concatAll() {\n return mergeAll(1);\n}\n\nfunction concat$1() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return concatAll()(internalFromArray(args, popScheduler(args)));\n}\n\nfunction defer(observableFactory) {\n return new Observable(function (subscriber) {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n\nvar DEFAULT_CONFIG$1 = {\n connector: function () {\n return new Subject();\n },\n resetOnDisconnect: true\n};\n\nfunction connectable(source, config) {\n if (config === void 0) {\n config = DEFAULT_CONFIG$1;\n }\n\n var connection = null;\n var connector = config.connector,\n _a = config.resetOnDisconnect,\n resetOnDisconnect = _a === void 0 ? true : _a;\n var subject = connector();\n var result = new Observable(function (subscriber) {\n return subject.subscribe(subscriber);\n });\n\n result.connect = function () {\n if (!connection || connection.closed) {\n connection = defer(function () {\n return source;\n }).subscribe(subject);\n\n if (resetOnDisconnect) {\n connection.add(function () {\n return subject = connector();\n });\n }\n }\n\n return connection;\n };\n\n return result;\n}\n\nfunction forkJoin() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var resultSelector = popResultSelector(args);\n\n var _a = argsArgArrayOrObject(args),\n sources = _a.args,\n keys = _a.keys;\n\n var result = new Observable(function (subscriber) {\n var length = sources.length;\n\n if (!length) {\n subscriber.complete();\n return;\n }\n\n var values = new Array(length);\n var remainingCompletions = length;\n var remainingEmissions = length;\n\n var _loop_1 = function (sourceIndex) {\n var hasValue = false;\n innerFrom(sources[sourceIndex]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n\n values[sourceIndex] = value;\n }, function () {\n if (! --remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject(keys, values) : values);\n }\n\n subscriber.complete();\n }\n }));\n };\n\n for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n _loop_1(sourceIndex);\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\n\nfunction fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n\n var _a = __read(isEventTarget(target) ? eventTargetMethods.map(function (methodName) {\n return function (handler) {\n return target[methodName](eventName, handler, options);\n };\n }) : isNodeStyleEventEmitter(target) ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) : isJQueryStyleEventEmitter(target) ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) : [], 2),\n add = _a[0],\n remove = _a[1];\n\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) {\n return fromEvent(subTarget, eventName, options);\n })(internalFromArray(target));\n }\n }\n\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n\n add(handler);\n return function () {\n return remove(handler);\n };\n });\n}\n\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) {\n return function (handler) {\n return target[methodName](eventName, handler);\n };\n };\n}\n\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\n\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\n\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n\nfunction fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs(resultSelector));\n }\n\n return new Observable(function (subscriber) {\n var handler = function () {\n var e = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n e[_i] = arguments[_i];\n }\n\n return subscriber.next(e.length === 1 ? e[0] : e);\n };\n\n var retValue = addHandler(handler);\n return isFunction(removeHandler) ? function () {\n return removeHandler(handler, retValue);\n } : undefined;\n });\n}\n\nfunction generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) {\n var _a, _b;\n\n var resultSelector;\n var initialState;\n\n if (arguments.length === 1) {\n _a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? identity : _b, scheduler = _a.scheduler;\n } else {\n initialState = initialStateOrOptions;\n\n if (!resultSelectorOrScheduler || isScheduler(resultSelectorOrScheduler)) {\n resultSelector = identity;\n scheduler = resultSelectorOrScheduler;\n } else {\n resultSelector = resultSelectorOrScheduler;\n }\n }\n\n function gen() {\n var state;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n state = initialState;\n _a.label = 1;\n\n case 1:\n if (!(!condition || condition(state))) return [3, 4];\n return [4, resultSelector(state)];\n\n case 2:\n _a.sent();\n\n _a.label = 3;\n\n case 3:\n state = iterate(state);\n return [3, 1];\n\n case 4:\n return [2];\n }\n });\n }\n\n return defer(scheduler ? function () {\n return scheduleIterable(gen(), scheduler);\n } : gen);\n}\n\nfunction iif(condition, trueResult, falseResult) {\n return defer(function () {\n return condition() ? trueResult : falseResult;\n });\n}\n\nfunction timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) {\n dueTime = 0;\n }\n\n if (scheduler === void 0) {\n scheduler = async;\n }\n\n var intervalDuration = -1;\n\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n } else {\n intervalDuration = intervalOrScheduler;\n }\n }\n\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n\n if (due < 0) {\n due = 0;\n }\n\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n } else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n\nfunction interval(period, scheduler) {\n if (period === void 0) {\n period = 0;\n }\n\n if (scheduler === void 0) {\n scheduler = asyncScheduler;\n }\n\n if (period < 0) {\n period = 0;\n }\n\n return timer(period, period, scheduler);\n}\n\nfunction merge$1() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length ? EMPTY : sources.length === 1 ? innerFrom(sources[0]) : mergeAll(concurrent)(internalFromArray(sources, scheduler));\n}\n\nvar NEVER = new Observable(noop);\n\nfunction never() {\n return NEVER;\n}\n\nvar isArray = Array.isArray;\n\nfunction argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n\nfunction onErrorResumeNext$1() {\n var sources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n\n var nextSources = argsOrArgArray(sources);\n return operate(function (source, subscriber) {\n var remaining = __spreadArray([source], __read(nextSources));\n\n var subscribeNext = function () {\n if (!subscriber.closed) {\n if (remaining.length > 0) {\n var nextSource = void 0;\n\n try {\n nextSource = innerFrom(remaining.shift());\n } catch (err) {\n subscribeNext();\n return;\n }\n\n var innerSub = new OperatorSubscriber(subscriber, undefined, noop, noop);\n subscriber.add(nextSource.subscribe(innerSub));\n innerSub.add(subscribeNext);\n } else {\n subscriber.complete();\n }\n }\n };\n\n subscribeNext();\n });\n}\n\nfunction onErrorResumeNext() {\n var sources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n\n return onErrorResumeNext$1(argsOrArgArray(sources))(EMPTY);\n}\n\nfunction pairs(obj, scheduler) {\n return from(Object.entries(obj), scheduler);\n}\n\nfunction not(pred, thisArg) {\n return function (value, index) {\n return !pred.call(thisArg, value, index);\n };\n}\n\nfunction filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return predicate.call(thisArg, value, index++) && subscriber.next(value);\n }));\n });\n}\n\nfunction partition(source, predicate, thisArg) {\n return [filter(predicate, thisArg)(innerFrom(source)), filter(not(predicate, thisArg))(innerFrom(source))];\n}\n\nfunction race() {\n var sources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n\n sources = argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\n\nfunction raceInit(sources) {\n return function (subscriber) {\n var subscriptions = [];\n\n var _loop_1 = function (i) {\n subscriptions.push(innerFrom(sources[i]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (subscriptions) {\n for (var s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n\n subscriptions = null;\n }\n\n subscriber.next(value);\n })));\n };\n\n for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n _loop_1(i);\n }\n };\n}\n\nfunction range(start, count, scheduler) {\n if (count == null) {\n count = start;\n start = 0;\n }\n\n if (count <= 0) {\n return EMPTY;\n }\n\n var end = count + start;\n return new Observable(scheduler ? function (subscriber) {\n var n = start;\n return scheduler.schedule(function () {\n if (n < end) {\n subscriber.next(n++);\n this.schedule();\n } else {\n subscriber.complete();\n }\n });\n } : function (subscriber) {\n var n = start;\n\n while (n < end && !subscriber.closed) {\n subscriber.next(n++);\n }\n\n subscriber.complete();\n });\n}\n\nfunction using(resourceFactory, observableFactory) {\n return new Observable(function (subscriber) {\n var resource = resourceFactory();\n var result = observableFactory(resource);\n var source = result ? innerFrom(result) : EMPTY;\n source.subscribe(subscriber);\n return function () {\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n\nfunction zip$1() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var resultSelector = popResultSelector(args);\n var sources = argsOrArgArray(args);\n return sources.length ? new Observable(function (subscriber) {\n var buffers = sources.map(function () {\n return [];\n });\n var completed = sources.map(function () {\n return false;\n });\n subscriber.add(function () {\n buffers = completed = null;\n });\n\n var _loop_1 = function (sourceIndex) {\n innerFrom(sources[sourceIndex]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n buffers[sourceIndex].push(value);\n\n if (buffers.every(function (buffer) {\n return buffer.length;\n })) {\n var result = buffers.map(function (buffer) {\n return buffer.shift();\n });\n subscriber.next(resultSelector ? resultSelector.apply(void 0, __spreadArray([], __read(result))) : result);\n\n if (buffers.some(function (buffer, i) {\n return !buffer.length && completed[i];\n })) {\n subscriber.complete();\n }\n }\n }, function () {\n completed[sourceIndex] = true;\n !buffers[sourceIndex].length && subscriber.complete();\n }));\n };\n\n for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {\n _loop_1(sourceIndex);\n }\n\n return function () {\n buffers = completed = null;\n };\n }) : EMPTY;\n}\n\nfunction audit(durationSelector) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n var isComplete = false;\n\n var endDuration = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n\n isComplete && subscriber.complete();\n };\n\n var cleanupDuration = function () {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe(durationSubscriber = new OperatorSubscriber(subscriber, endDuration, cleanupDuration));\n }\n }, function () {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n\nfunction auditTime(duration, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n\n return audit(function () {\n return timer(duration, scheduler);\n });\n}\n\nfunction buffer(closingNotifier) {\n return operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return currentBuffer.push(value);\n }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n closingNotifier.subscribe(new OperatorSubscriber(subscriber, function () {\n var b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n }, noop));\n return function () {\n currentBuffer = null;\n };\n });\n}\n\nfunction bufferCount(bufferSize, startBufferEvery) {\n if (startBufferEvery === void 0) {\n startBufferEvery = null;\n }\n\n startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize;\n return operate(function (source, subscriber) {\n var buffers = [];\n var count = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a, e_2, _b;\n\n var toEmit = null;\n\n if (count++ % startBufferEvery === 0) {\n buffers.push([]);\n }\n\n try {\n for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n var buffer = buffers_1_1.value;\n buffer.push(value);\n\n if (bufferSize <= buffer.length) {\n toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : [];\n toEmit.push(buffer);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n if (toEmit) {\n try {\n for (var toEmit_1 = __values(toEmit), toEmit_1_1 = toEmit_1.next(); !toEmit_1_1.done; toEmit_1_1 = toEmit_1.next()) {\n var buffer = toEmit_1_1.value;\n arrRemove(buffers, buffer);\n subscriber.next(buffer);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (toEmit_1_1 && !toEmit_1_1.done && (_b = toEmit_1.return)) _b.call(toEmit_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n }, function () {\n var e_3, _a;\n\n try {\n for (var buffers_2 = __values(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) {\n var buffer = buffers_2_1.value;\n subscriber.next(buffer);\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (buffers_2_1 && !buffers_2_1.done && (_a = buffers_2.return)) _a.call(buffers_2);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n\n subscriber.complete();\n }, undefined, function () {\n buffers = null;\n }));\n });\n}\n\nfunction bufferTime(bufferTimeSpan) {\n var _a, _b;\n\n var otherArgs = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n\n var scheduler = (_a = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;\n var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxBufferSize = otherArgs[1] || Infinity;\n return operate(function (source, subscriber) {\n var bufferRecords = [];\n var restartOnEmit = false;\n\n var emit = function (record) {\n var buffer = record.buffer,\n subs = record.subs;\n subs.unsubscribe();\n arrRemove(bufferRecords, record);\n subscriber.next(buffer);\n restartOnEmit && startBuffer();\n };\n\n var startBuffer = function () {\n if (bufferRecords) {\n var subs = new Subscription();\n subscriber.add(subs);\n var buffer = [];\n var record_1 = {\n buffer: buffer,\n subs: subs\n };\n bufferRecords.push(record_1);\n subs.add(scheduler.schedule(function () {\n return emit(record_1);\n }, bufferTimeSpan));\n }\n };\n\n bufferCreationInterval !== null && bufferCreationInterval >= 0 ? subscriber.add(scheduler.schedule(function () {\n startBuffer();\n !this.closed && subscriber.add(this.schedule(null, bufferCreationInterval));\n }, bufferCreationInterval)) : restartOnEmit = true;\n startBuffer();\n var bufferTimeSubscriber = new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n\n var recordsCopy = bufferRecords.slice();\n\n try {\n for (var recordsCopy_1 = __values(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) {\n var record = recordsCopy_1_1.value;\n var buffer = record.buffer;\n buffer.push(value);\n maxBufferSize <= buffer.length && emit(record);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a = recordsCopy_1.return)) _a.call(recordsCopy_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }, function () {\n while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) {\n subscriber.next(bufferRecords.shift().buffer);\n }\n\n bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe();\n subscriber.complete();\n subscriber.unsubscribe();\n }, undefined, function () {\n return bufferRecords = null;\n });\n source.subscribe(bufferTimeSubscriber);\n });\n}\n\nfunction bufferToggle(openings, closingSelector) {\n return operate(function (source, subscriber) {\n var buffers = [];\n innerFrom(openings).subscribe(new OperatorSubscriber(subscriber, function (openValue) {\n var buffer = [];\n buffers.push(buffer);\n var closingSubscription = new Subscription();\n\n var emitBuffer = function () {\n arrRemove(buffers, buffer);\n subscriber.next(buffer);\n closingSubscription.unsubscribe();\n };\n\n closingSubscription.add(innerFrom(closingSelector(openValue)).subscribe(new OperatorSubscriber(subscriber, emitBuffer, noop)));\n }, noop));\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n\n try {\n for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n var buffer = buffers_1_1.value;\n buffer.push(value);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }, function () {\n while (buffers.length > 0) {\n subscriber.next(buffers.shift());\n }\n\n subscriber.complete();\n }));\n });\n}\n\nfunction bufferWhen(closingSelector) {\n return operate(function (source, subscriber) {\n var buffer = null;\n var closingSubscriber = null;\n\n var openBuffer = function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n var b = buffer;\n buffer = [];\n b && subscriber.next(b);\n innerFrom(closingSelector()).subscribe(closingSubscriber = new OperatorSubscriber(subscriber, openBuffer, noop));\n };\n\n openBuffer();\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return buffer === null || buffer === void 0 ? void 0 : buffer.push(value);\n }, function () {\n buffer && subscriber.next(buffer);\n subscriber.complete();\n }, undefined, function () {\n return buffer = closingSubscriber = null;\n }));\n });\n}\n\nfunction catchError(selector) {\n return operate(function (source, subscriber) {\n var innerSub = null;\n var syncUnsub = false;\n var handledResult;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, undefined, function (err) {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n } else {\n syncUnsub = true;\n }\n }));\n\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n\nfunction scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return function (source, subscriber) {\n var hasState = hasSeed;\n var state = seed;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var i = index++;\n state = hasState ? accumulator(state, value, i) : (hasState = true, value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete && function () {\n hasState && subscriber.next(state);\n subscriber.complete();\n }));\n };\n}\n\nfunction reduce(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n\nvar arrReducer = function (arr, value) {\n return arr.push(value), arr;\n};\n\nfunction toArray() {\n return operate(function (source, subscriber) {\n reduce(arrReducer, [])(source).subscribe(subscriber);\n });\n}\n\nfunction joinAllInternals(joinFn, project) {\n return pipe(toArray(), mergeMap(function (sources) {\n return joinFn(sources);\n }), project ? mapOneOrManyArgs(project) : identity);\n}\n\nfunction combineLatestAll(project) {\n return joinAllInternals(combineLatest$1, project);\n}\n\nvar combineAll = combineLatestAll;\n\nfunction combineLatest() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var resultSelector = popResultSelector(args);\n return resultSelector ? pipe(combineLatest.apply(void 0, __spreadArray([], __read(args))), mapOneOrManyArgs(resultSelector)) : operate(function (source, subscriber) {\n combineLatestInit(__spreadArray([source], __read(argsOrArgArray(args))))(subscriber);\n });\n}\n\nfunction combineLatestWith() {\n var otherSources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n\n return combineLatest.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n\nfunction concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n\nfunction concatMapTo(innerObservable, resultSelector) {\n return isFunction(resultSelector) ? concatMap(function () {\n return innerObservable;\n }, resultSelector) : concatMap(function () {\n return innerObservable;\n });\n}\n\nfunction concat() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var scheduler = popScheduler(args);\n return operate(function (source, subscriber) {\n concatAll()(internalFromArray(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n\nfunction concatWith() {\n var otherSources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n\n return concat.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n\nfunction fromSubscribable(subscribable) {\n return new Observable(function (subscriber) {\n return subscribable.subscribe(subscriber);\n });\n}\n\nvar DEFAULT_CONFIG = {\n connector: function () {\n return new Subject();\n }\n};\n\nfunction connect(selector, config) {\n if (config === void 0) {\n config = DEFAULT_CONFIG;\n }\n\n var connector = config.connector;\n return operate(function (source, subscriber) {\n var subject = connector();\n from(selector(fromSubscribable(subject))).subscribe(subscriber);\n subscriber.add(source.subscribe(subject));\n });\n}\n\nfunction count(predicate) {\n return reduce(function (total, value, i) {\n return !predicate || predicate(value, i) ? total + 1 : total;\n }, 0);\n}\n\nfunction debounce(durationSelector) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n\n var emit = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = new OperatorSubscriber(subscriber, emit, noop);\n innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = durationSubscriber = null;\n }));\n });\n}\n\nfunction debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) {\n scheduler = asyncScheduler;\n }\n\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n\n emit();\n }\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n\nfunction defaultIfEmpty(defaultValue) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n\n subscriber.complete();\n }));\n });\n}\n\nfunction take(count) {\n return count <= 0 ? function () {\n return EMPTY;\n } : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n\nfunction ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, noop));\n });\n}\n\nfunction mapTo(value) {\n return map(function () {\n return value;\n });\n}\n\nfunction delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat$1(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n\n return mergeMap(function (value, index) {\n return delayDurationSelector(value, index).pipe(take(1), mapTo(value));\n });\n}\n\nfunction delay(due, scheduler) {\n if (scheduler === void 0) {\n scheduler = asyncScheduler;\n }\n\n var duration = timer(due, scheduler);\n return delayWhen(function () {\n return duration;\n });\n}\n\nfunction dematerialize() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (notification) {\n return observeNotification(notification, subscriber);\n }));\n });\n}\n\nfunction distinct(keySelector, flushes) {\n return operate(function (source, subscriber) {\n var distinctKeys = new Set();\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var key = keySelector ? keySelector(value) : value;\n\n if (!distinctKeys.has(key)) {\n distinctKeys.add(key);\n subscriber.next(value);\n }\n }));\n flushes === null || flushes === void 0 ? void 0 : flushes.subscribe(new OperatorSubscriber(subscriber, function () {\n return distinctKeys.clear();\n }, noop));\n });\n}\n\nfunction distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) {\n keySelector = identity;\n }\n\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\n\nfunction defaultCompare(a, b) {\n return a === b;\n}\n\nfunction distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged(function (x, y) {\n return compare ? compare(x[key], y[key]) : x[key] === y[key];\n });\n}\n\nfunction throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) {\n errorFactory = defaultErrorFactory;\n }\n\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () {\n return hasValue ? subscriber.complete() : subscriber.error(errorFactory());\n }));\n });\n}\n\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n\nfunction elementAt(index, defaultValue) {\n if (index < 0) {\n throw new ArgumentOutOfRangeError();\n }\n\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(filter(function (v, i) {\n return i === index;\n }), take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () {\n return new ArgumentOutOfRangeError();\n }));\n };\n}\n\nfunction endWith() {\n var values = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n\n return function (source) {\n return concat$1(source, of.apply(void 0, __spreadArray([], __read(values))));\n };\n}\n\nfunction every(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (!predicate.call(thisArg, value, index++, source)) {\n subscriber.next(false);\n subscriber.complete();\n }\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\n\nfunction exhaustAll() {\n return operate(function (source, subscriber) {\n var isComplete = false;\n var innerSub = null;\n source.subscribe(new OperatorSubscriber(subscriber, function (inner) {\n if (!innerSub) {\n innerSub = innerFrom(inner).subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n }));\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n\nvar exhaust = exhaustAll;\n\nfunction exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) {\n return source.pipe(exhaustMap(function (a, i) {\n return innerFrom(project(a, i)).pipe(map(function (b, ii) {\n return resultSelector(a, b, i, ii);\n }));\n }));\n };\n }\n\n return operate(function (source, subscriber) {\n var index = 0;\n var innerSub = null;\n var isComplete = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (outerValue) {\n if (!innerSub) {\n innerSub = new OperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n\nfunction expand(project, concurrent, scheduler) {\n if (concurrent === void 0) {\n concurrent = Infinity;\n }\n\n concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;\n return operate(function (source, subscriber) {\n return mergeInternals(source, subscriber, project, concurrent, undefined, true, scheduler);\n });\n}\n\nfunction finalize(callback) {\n return operate(function (source, subscriber) {\n try {\n source.subscribe(subscriber);\n } finally {\n subscriber.add(callback);\n }\n });\n}\n\nfunction find(predicate, thisArg) {\n return operate(createFind(predicate, thisArg, 'value'));\n}\n\nfunction createFind(predicate, thisArg, emit) {\n var findIndex = emit === 'index';\n return function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var i = index++;\n\n if (predicate.call(thisArg, value, i, source)) {\n subscriber.next(findIndex ? i : value);\n subscriber.complete();\n }\n }, function () {\n subscriber.next(findIndex ? -1 : undefined);\n subscriber.complete();\n }));\n };\n}\n\nfunction findIndex(predicate, thisArg) {\n return operate(createFind(predicate, thisArg, 'index'));\n}\n\nfunction first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) {\n return predicate(v, i, source);\n }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () {\n return new EmptyError();\n }));\n };\n}\n\nfunction groupBy(keySelector, elementOrOptions, duration, connector) {\n return operate(function (source, subscriber) {\n var element;\n\n if (!elementOrOptions || typeof elementOrOptions === 'function') {\n element = elementOrOptions;\n } else {\n duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector;\n }\n\n var groups = new Map();\n\n var notify = function (cb) {\n groups.forEach(cb);\n cb(subscriber);\n };\n\n var handleError = function (err) {\n return notify(function (consumer) {\n return consumer.error(err);\n });\n };\n\n var groupBySourceSubscriber = new GroupBySubscriber(subscriber, function (value) {\n try {\n var key_1 = keySelector(value);\n var group_1 = groups.get(key_1);\n\n if (!group_1) {\n groups.set(key_1, group_1 = connector ? connector() : new Subject());\n var grouped = createGroupedObservable(key_1, group_1);\n subscriber.next(grouped);\n\n if (duration) {\n var durationSubscriber_1 = new OperatorSubscriber(group_1, function () {\n group_1.complete();\n durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe();\n }, undefined, undefined, function () {\n return groups.delete(key_1);\n });\n groupBySourceSubscriber.add(innerFrom(duration(grouped)).subscribe(durationSubscriber_1));\n }\n }\n\n group_1.next(element ? element(value) : value);\n } catch (err) {\n handleError(err);\n }\n }, function () {\n return notify(function (consumer) {\n return consumer.complete();\n });\n }, handleError, function () {\n return groups.clear();\n });\n source.subscribe(groupBySourceSubscriber);\n\n function createGroupedObservable(key, groupSubject) {\n var result = new Observable(function (groupSubscriber) {\n groupBySourceSubscriber.activeGroups++;\n var innerSub = groupSubject.subscribe(groupSubscriber);\n return function () {\n innerSub.unsubscribe();\n --groupBySourceSubscriber.activeGroups === 0 && groupBySourceSubscriber.teardownAttempted && groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\n\nvar GroupBySubscriber = function (_super) {\n __extends(GroupBySubscriber, _super);\n\n function GroupBySubscriber() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.activeGroups = 0;\n _this.teardownAttempted = false;\n return _this;\n }\n\n GroupBySubscriber.prototype.unsubscribe = function () {\n this.teardownAttempted = true;\n this.activeGroups === 0 && _super.prototype.unsubscribe.call(this);\n };\n\n return GroupBySubscriber;\n}(OperatorSubscriber);\n\nfunction isEmpty() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function () {\n subscriber.next(false);\n subscriber.complete();\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\n\nfunction takeLast(count) {\n return count <= 0 ? function () {\n return EMPTY;\n } : operate(function (source, subscriber) {\n var buffer = [];\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n buffer.push(value);\n count < buffer.length && buffer.shift();\n }, function () {\n var e_1, _a;\n\n try {\n for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {\n var value = buffer_1_1.value;\n subscriber.next(value);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n subscriber.complete();\n }, undefined, function () {\n buffer = null;\n }));\n });\n}\n\nfunction last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) {\n return predicate(v, i, source);\n }) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () {\n return new EmptyError();\n }));\n };\n}\n\nfunction materialize() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n subscriber.next(Notification.createNext(value));\n }, function () {\n subscriber.next(Notification.createComplete());\n subscriber.complete();\n }, function (err) {\n subscriber.next(Notification.createError(err));\n subscriber.complete();\n }));\n });\n}\n\nfunction max(comparer) {\n return reduce(isFunction(comparer) ? function (x, y) {\n return comparer(x, y) > 0 ? x : y;\n } : function (x, y) {\n return x > y ? x : y;\n });\n}\n\nvar flatMap = mergeMap;\n\nfunction mergeMapTo(innerObservable, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Infinity;\n }\n\n if (isFunction(resultSelector)) {\n return mergeMap(function () {\n return innerObservable;\n }, resultSelector, concurrent);\n }\n\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n\n return mergeMap(function () {\n return innerObservable;\n }, concurrent);\n}\n\nfunction mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) {\n concurrent = Infinity;\n }\n\n return operate(function (source, subscriber) {\n var state = seed;\n return mergeInternals(source, subscriber, function (value, index) {\n return accumulator(state, value, index);\n }, concurrent, function (value) {\n state = value;\n }, false, undefined, function () {\n return state = null;\n });\n });\n}\n\nfunction merge() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n args = argsOrArgArray(args);\n return operate(function (source, subscriber) {\n mergeAll(concurrent)(internalFromArray(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n\nfunction mergeWith() {\n var otherSources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n\n return merge.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n\nfunction min(comparer) {\n return reduce(isFunction(comparer) ? function (x, y) {\n return comparer(x, y) < 0 ? x : y;\n } : function (x, y) {\n return x < y ? x : y;\n });\n}\n\nfunction multicast(subjectOrSubjectFactory, selector) {\n var subjectFactory = isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () {\n return subjectOrSubjectFactory;\n };\n\n if (isFunction(selector)) {\n return connect(selector, {\n connector: subjectFactory\n });\n }\n\n return function (source) {\n return new ConnectableObservable(source, subjectFactory);\n };\n}\n\nfunction pairwise() {\n return operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n\nfunction pluck() {\n var properties = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = arguments[_i];\n }\n\n var length = properties.length;\n\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n\n return map(function (x) {\n var currentProp = x;\n\n for (var i = 0; i < length; i++) {\n var p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]];\n\n if (typeof p !== 'undefined') {\n currentProp = p;\n } else {\n return undefined;\n }\n }\n\n return currentProp;\n });\n}\n\nfunction publish(selector) {\n return selector ? function (source) {\n return connect(selector)(source);\n } : function (source) {\n return multicast(new Subject())(source);\n };\n}\n\nfunction publishBehavior(initialValue) {\n return function (source) {\n var subject = new BehaviorSubject(initialValue);\n return new ConnectableObservable(source, function () {\n return subject;\n });\n };\n}\n\nfunction publishLast() {\n return function (source) {\n var subject = new AsyncSubject();\n return new ConnectableObservable(source, function () {\n return subject;\n });\n };\n}\n\nfunction publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {\n if (selectorOrScheduler && !isFunction(selectorOrScheduler)) {\n timestampProvider = selectorOrScheduler;\n }\n\n var selector = isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;\n return function (source) {\n return multicast(new ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source);\n };\n}\n\nfunction raceWith() {\n var otherSources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n\n return !otherSources.length ? identity : operate(function (source, subscriber) {\n raceInit(__spreadArray([source], __read(otherSources)))(subscriber);\n });\n}\n\nfunction repeat(count) {\n if (count === void 0) {\n count = Infinity;\n }\n\n return count <= 0 ? function () {\n return EMPTY;\n } : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n\n var subscribeForRepeat = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n if (++soFar < count) {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRepeat();\n } else {\n syncUnsub = true;\n }\n } else {\n subscriber.complete();\n }\n }));\n\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRepeat();\n }\n };\n\n subscribeForRepeat();\n });\n}\n\nfunction repeatWhen(notifier) {\n return operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var completions$;\n var isNotifierComplete = false;\n var isMainComplete = false;\n\n var checkComplete = function () {\n return isMainComplete && isNotifierComplete && (subscriber.complete(), true);\n };\n\n var getCompletionSubject = function () {\n if (!completions$) {\n completions$ = new Subject();\n notifier(completions$).subscribe(new OperatorSubscriber(subscriber, function () {\n if (innerSub) {\n subscribeForRepeatWhen();\n } else {\n syncResub = true;\n }\n }, function () {\n isNotifierComplete = true;\n checkComplete();\n }));\n }\n\n return completions$;\n };\n\n var subscribeForRepeatWhen = function () {\n isMainComplete = false;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n isMainComplete = true;\n !checkComplete() && getCompletionSubject().next();\n }));\n\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRepeatWhen();\n }\n };\n\n subscribeForRepeatWhen();\n });\n}\n\nfunction retry(configOrCount) {\n if (configOrCount === void 0) {\n configOrCount = Infinity;\n }\n\n var config;\n\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n } else {\n config = {\n count: configOrCount\n };\n }\n\n var _a = config.count,\n count = _a === void 0 ? Infinity : _a,\n delay = config.delay,\n _b = config.resetOnSuccess,\n resetOnSuccess = _b === void 0 ? false : _b;\n return count <= 0 ? identity : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n\n var subscribeForRetry = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (resetOnSuccess) {\n soFar = 0;\n }\n\n subscriber.next(value);\n }, undefined, function (err) {\n if (soFar++ < count) {\n var resub_1 = function () {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n } else {\n syncUnsub = true;\n }\n };\n\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(err, soFar));\n var notifierSubscriber_1 = new OperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n resub_1();\n }, function () {\n subscriber.complete();\n });\n notifier.subscribe(notifierSubscriber_1);\n } else {\n resub_1();\n }\n } else {\n subscriber.error(err);\n }\n }));\n\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n\n subscribeForRetry();\n });\n}\n\nfunction retryWhen(notifier) {\n return operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var errors$;\n\n var subscribeForRetryWhen = function () {\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, undefined, function (err) {\n if (!errors$) {\n errors$ = new Subject();\n notifier(errors$).subscribe(new OperatorSubscriber(subscriber, function () {\n return innerSub ? subscribeForRetryWhen() : syncResub = true;\n }));\n }\n\n if (errors$) {\n errors$.next(err);\n }\n }));\n\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRetryWhen();\n }\n };\n\n subscribeForRetryWhen();\n });\n}\n\nfunction sample(notifier) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n }));\n\n var emit = function () {\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n\n notifier.subscribe(new OperatorSubscriber(subscriber, emit, noop));\n });\n}\n\nfunction sampleTime(period, scheduler) {\n if (scheduler === void 0) {\n scheduler = asyncScheduler;\n }\n\n return sample(interval(period, scheduler));\n}\n\nfunction scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n\nfunction sequenceEqual(compareTo, comparator) {\n if (comparator === void 0) {\n comparator = function (a, b) {\n return a === b;\n };\n }\n\n return operate(function (source, subscriber) {\n var aState = createState();\n var bState = createState();\n\n var emit = function (isEqual) {\n subscriber.next(isEqual);\n subscriber.complete();\n };\n\n var createSubscriber = function (selfState, otherState) {\n var sequenceEqualSubscriber = new OperatorSubscriber(subscriber, function (a) {\n var buffer = otherState.buffer,\n complete = otherState.complete;\n\n if (buffer.length === 0) {\n complete ? emit(false) : selfState.buffer.push(a);\n } else {\n !comparator(a, buffer.shift()) && emit(false);\n }\n }, function () {\n selfState.complete = true;\n var complete = otherState.complete,\n buffer = otherState.buffer;\n complete && emit(buffer.length === 0);\n sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe();\n });\n return sequenceEqualSubscriber;\n };\n\n source.subscribe(createSubscriber(aState, bState));\n compareTo.subscribe(createSubscriber(bState, aState));\n });\n}\n\nfunction createState() {\n return {\n buffer: [],\n complete: false\n };\n}\n\nfunction share(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _a = options.connector,\n connector = _a === void 0 ? function () {\n return new Subject();\n } : _a,\n _b = options.resetOnError,\n resetOnError = _b === void 0 ? true : _b,\n _c = options.resetOnComplete,\n resetOnComplete = _c === void 0 ? true : _c,\n _d = options.resetOnRefCountZero,\n resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection = null;\n var resetConnection = null;\n var subject = null;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = null;\n };\n\n var reset = function () {\n cancelReset();\n connection = subject = null;\n hasCompleted = hasErrored = false;\n };\n\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n\n return operate(function (source, subscriber) {\n refCount++;\n\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n\n var dest = subject = subject !== null && subject !== void 0 ? subject : connector();\n subscriber.add(function () {\n refCount--;\n\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n\n if (!connection) {\n connection = new SafeSubscriber({\n next: function (value) {\n return dest.next(value);\n },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n }\n });\n from(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\n\nfunction handleReset(reset, on) {\n var args = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n\n if (on === true) {\n reset();\n return null;\n }\n\n if (on === false) {\n return null;\n }\n\n return on.apply(void 0, __spreadArray([], __read(args))).pipe(take(1)).subscribe(function () {\n return reset();\n });\n}\n\nfunction shareReplay(configOrBufferSize, windowTime, scheduler) {\n var _a, _b;\n\n var bufferSize;\n var refCount = false;\n\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n bufferSize = (_a = configOrBufferSize.bufferSize) !== null && _a !== void 0 ? _a : Infinity;\n windowTime = (_b = configOrBufferSize.windowTime) !== null && _b !== void 0 ? _b : Infinity;\n refCount = !!configOrBufferSize.refCount;\n scheduler = configOrBufferSize.scheduler;\n } else {\n bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity;\n }\n\n return share({\n connector: function () {\n return new ReplaySubject(bufferSize, windowTime, scheduler);\n },\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount\n });\n}\n\nfunction single(predicate) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var singleValue;\n var seenValue = false;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n seenValue = true;\n\n if (!predicate || predicate(value, index++, source)) {\n hasValue && subscriber.error(new SequenceError('Too many matching values'));\n hasValue = true;\n singleValue = value;\n }\n }, function () {\n if (hasValue) {\n subscriber.next(singleValue);\n subscriber.complete();\n } else {\n subscriber.error(seenValue ? new NotFoundError('No matching values') : new EmptyError());\n }\n }));\n });\n}\n\nfunction skip(count) {\n return filter(function (_, index) {\n return count <= index;\n });\n}\n\nfunction skipLast(skipCount) {\n return skipCount <= 0 ? identity : operate(function (source, subscriber) {\n var ring = new Array(skipCount);\n var seen = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var valueIndex = seen++;\n\n if (valueIndex < skipCount) {\n ring[valueIndex] = value;\n } else {\n var index = valueIndex % skipCount;\n var oldValue = ring[index];\n ring[index] = value;\n subscriber.next(oldValue);\n }\n }));\n return function () {\n ring = null;\n };\n });\n}\n\nfunction skipUntil(notifier) {\n return operate(function (source, subscriber) {\n var taking = false;\n var skipSubscriber = new OperatorSubscriber(subscriber, function () {\n skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe();\n taking = true;\n }, noop);\n innerFrom(notifier).subscribe(skipSubscriber);\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return taking && subscriber.next(value);\n }));\n });\n}\n\nfunction skipWhile(predicate) {\n return operate(function (source, subscriber) {\n var taking = false;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return (taking || (taking = !predicate(value, index++))) && subscriber.next(value);\n }));\n });\n}\n\nfunction startWith() {\n var values = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n\n var scheduler = popScheduler(values);\n return operate(function (source, subscriber) {\n (scheduler ? concat$1(values, source, scheduler) : concat$1(values, source)).subscribe(subscriber);\n });\n}\n\nfunction switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n\n var checkComplete = function () {\n return isComplete && !innerSubscriber && subscriber.complete();\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe(innerSubscriber = new OperatorSubscriber(subscriber, function (innerValue) {\n return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue);\n }, function () {\n innerSubscriber = null;\n checkComplete();\n }));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n\nfunction switchAll() {\n return switchMap(identity);\n}\n\nfunction switchMapTo(innerObservable, resultSelector) {\n return isFunction(resultSelector) ? switchMap(function () {\n return innerObservable;\n }, resultSelector) : switchMap(function () {\n return innerObservable;\n });\n}\n\nfunction switchScan(accumulator, seed) {\n return operate(function (source, subscriber) {\n var state = seed;\n switchMap(function (value, index) {\n return accumulator(state, value, index);\n }, function (_, innerValue) {\n return state = innerValue, innerValue;\n })(source).subscribe(subscriber);\n return function () {\n state = null;\n };\n });\n}\n\nfunction takeUntil(notifier) {\n return operate(function (source, subscriber) {\n innerFrom(notifier).subscribe(new OperatorSubscriber(subscriber, function () {\n return subscriber.complete();\n }, noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n\nfunction takeWhile(predicate, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n\nfunction tap(observerOrNext, error, complete) {\n var tapObserver = isFunction(observerOrNext) || error || complete ? {\n next: observerOrNext,\n error: error,\n complete: complete\n } : observerOrNext;\n return tapObserver ? operate(function (source, subscriber) {\n var _a;\n\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var _a;\n\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n }) : identity;\n}\n\nvar defaultThrottleConfig = {\n leading: true,\n trailing: false\n};\n\nfunction throttle(durationSelector, _a) {\n var _b = _a === void 0 ? defaultThrottleConfig : _a,\n leading = _b.leading,\n trailing = _b.trailing;\n\n return operate(function (source, subscriber) {\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n\n var startThrottle = function (value) {\n return throttled = innerFrom(durationSelector(value)).subscribe(new OperatorSubscriber(subscriber, endThrottling, cleanupThrottling));\n };\n\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\n\nfunction throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) {\n scheduler = asyncScheduler;\n }\n\n if (config === void 0) {\n config = defaultThrottleConfig;\n }\n\n var duration$ = timer(duration, scheduler);\n return throttle(function () {\n return duration$;\n }, config);\n}\n\nfunction timeInterval(scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n\n return function (source) {\n return defer(function () {\n return source.pipe(scan(function (_a, value) {\n var current = _a.current;\n return {\n value: value,\n current: scheduler.now(),\n last: current\n };\n }, {\n current: scheduler.now(),\n value: undefined,\n last: undefined\n }), map(function (_a) {\n var current = _a.current,\n last = _a.last,\n value = _a.value;\n return new TimeInterval(value, current - last);\n }));\n });\n };\n}\n\nvar TimeInterval = function () {\n function TimeInterval(value, interval) {\n this.value = value;\n this.interval = interval;\n }\n\n return TimeInterval;\n}();\n\nfunction timeoutWith(due, withObservable, scheduler) {\n var first;\n var each;\n\n var _with;\n\n scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : async;\n\n if (isValidDate(due)) {\n first = due;\n } else if (typeof due === 'number') {\n each = due;\n }\n\n if (withObservable) {\n _with = function () {\n return withObservable;\n };\n } else {\n throw new TypeError('No observable provided to switch to');\n }\n\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n\n return timeout({\n first: first,\n each: each,\n scheduler: scheduler,\n with: _with\n });\n}\n\nfunction timestamp(timestampProvider) {\n if (timestampProvider === void 0) {\n timestampProvider = dateTimestampProvider;\n }\n\n return map(function (value) {\n return {\n value: value,\n timestamp: timestampProvider.now()\n };\n });\n}\n\nfunction window$1(windowBoundaries) {\n return operate(function (source, subscriber) {\n var windowSubject = new Subject();\n subscriber.next(windowSubject.asObservable());\n\n var errorHandler = function (err) {\n windowSubject.error(err);\n subscriber.error(err);\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value);\n }, function () {\n windowSubject.complete();\n subscriber.complete();\n }, errorHandler));\n windowBoundaries.subscribe(new OperatorSubscriber(subscriber, function () {\n windowSubject.complete();\n subscriber.next(windowSubject = new Subject());\n }, noop, errorHandler));\n return function () {\n windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe();\n windowSubject = null;\n };\n });\n}\n\nfunction windowCount(windowSize, startWindowEvery) {\n if (startWindowEvery === void 0) {\n startWindowEvery = 0;\n }\n\n var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;\n return operate(function (source, subscriber) {\n var windows = [new Subject()];\n var starts = [];\n var count = 0;\n subscriber.next(windows[0].asObservable());\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n\n try {\n for (var windows_1 = __values(windows), windows_1_1 = windows_1.next(); !windows_1_1.done; windows_1_1 = windows_1.next()) {\n var window_1 = windows_1_1.value;\n window_1.next(value);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (windows_1_1 && !windows_1_1.done && (_a = windows_1.return)) _a.call(windows_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n var c = count - windowSize + 1;\n\n if (c >= 0 && c % startEvery === 0) {\n windows.shift().complete();\n }\n\n if (++count % startEvery === 0) {\n var window_2 = new Subject();\n windows.push(window_2);\n subscriber.next(window_2.asObservable());\n }\n }, function () {\n while (windows.length > 0) {\n windows.shift().complete();\n }\n\n subscriber.complete();\n }, function (err) {\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n\n subscriber.error(err);\n }, function () {\n starts = null;\n windows = null;\n }));\n });\n}\n\nfunction windowTime(windowTimeSpan) {\n var _a, _b;\n\n var otherArgs = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n\n var scheduler = (_a = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;\n var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxWindowSize = otherArgs[1] || Infinity;\n return operate(function (source, subscriber) {\n var windowRecords = [];\n var restartOnClose = false;\n\n var closeWindow = function (record) {\n var window = record.window,\n subs = record.subs;\n window.complete();\n subs.unsubscribe();\n arrRemove(windowRecords, record);\n restartOnClose && startWindow();\n };\n\n var startWindow = function () {\n if (windowRecords) {\n var subs = new Subscription();\n subscriber.add(subs);\n var window_1 = new Subject();\n var record_1 = {\n window: window_1,\n subs: subs,\n seen: 0\n };\n windowRecords.push(record_1);\n subscriber.next(window_1.asObservable());\n subs.add(scheduler.schedule(function () {\n return closeWindow(record_1);\n }, windowTimeSpan));\n }\n };\n\n windowCreationInterval !== null && windowCreationInterval >= 0 ? subscriber.add(scheduler.schedule(function () {\n startWindow();\n !this.closed && subscriber.add(this.schedule(null, windowCreationInterval));\n }, windowCreationInterval)) : restartOnClose = true;\n startWindow();\n\n var loop = function (cb) {\n return windowRecords.slice().forEach(cb);\n };\n\n var terminate = function (cb) {\n loop(function (_a) {\n var window = _a.window;\n return cb(window);\n });\n cb(subscriber);\n subscriber.unsubscribe();\n };\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n loop(function (record) {\n record.window.next(value);\n maxWindowSize <= ++record.seen && closeWindow(record);\n });\n }, function () {\n return terminate(function (consumer) {\n return consumer.complete();\n });\n }, function (err) {\n return terminate(function (consumer) {\n return consumer.error(err);\n });\n }));\n return function () {\n windowRecords = null;\n };\n });\n}\n\nfunction windowToggle(openings, closingSelector) {\n return operate(function (source, subscriber) {\n var windows = [];\n\n var handleError = function (err) {\n while (0 < windows.length) {\n windows.shift().error(err);\n }\n\n subscriber.error(err);\n };\n\n innerFrom(openings).subscribe(new OperatorSubscriber(subscriber, function (openValue) {\n var window = new Subject();\n windows.push(window);\n var closingSubscription = new Subscription();\n\n var closeWindow = function () {\n arrRemove(windows, window);\n window.complete();\n closingSubscription.unsubscribe();\n };\n\n var closingNotifier;\n\n try {\n closingNotifier = innerFrom(closingSelector(openValue));\n } catch (err) {\n handleError(err);\n return;\n }\n\n subscriber.next(window.asObservable());\n closingSubscription.add(closingNotifier.subscribe(new OperatorSubscriber(subscriber, closeWindow, noop, handleError)));\n }, noop));\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n\n var windowsCopy = windows.slice();\n\n try {\n for (var windowsCopy_1 = __values(windowsCopy), windowsCopy_1_1 = windowsCopy_1.next(); !windowsCopy_1_1.done; windowsCopy_1_1 = windowsCopy_1.next()) {\n var window_1 = windowsCopy_1_1.value;\n window_1.next(value);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (windowsCopy_1_1 && !windowsCopy_1_1.done && (_a = windowsCopy_1.return)) _a.call(windowsCopy_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }, function () {\n while (0 < windows.length) {\n windows.shift().complete();\n }\n\n subscriber.complete();\n }, handleError, function () {\n while (0 < windows.length) {\n windows.shift().unsubscribe();\n }\n }));\n });\n}\n\nfunction windowWhen(closingSelector) {\n return operate(function (source, subscriber) {\n var window;\n var closingSubscriber;\n\n var handleError = function (err) {\n window.error(err);\n subscriber.error(err);\n };\n\n var openWindow = function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n window === null || window === void 0 ? void 0 : window.complete();\n window = new Subject();\n subscriber.next(window.asObservable());\n var closingNotifier;\n\n try {\n closingNotifier = innerFrom(closingSelector());\n } catch (err) {\n handleError(err);\n return;\n }\n\n closingNotifier.subscribe(closingSubscriber = new OperatorSubscriber(subscriber, openWindow, openWindow, handleError));\n };\n\n openWindow();\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n return window.next(value);\n }, function () {\n window.complete();\n subscriber.complete();\n }, handleError, function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n window = null;\n }));\n });\n}\n\nfunction withLatestFrom() {\n var inputs = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n inputs[_i] = arguments[_i];\n }\n\n var project = popResultSelector(inputs);\n return operate(function (source, subscriber) {\n var len = inputs.length;\n var otherValues = new Array(len);\n var hasValue = inputs.map(function () {\n return false;\n });\n var ready = false;\n\n var _loop_1 = function (i) {\n innerFrom(inputs[i]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n otherValues[i] = value;\n\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n };\n\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (ready) {\n var values = __spreadArray([value], __read(otherValues));\n\n subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);\n }\n }));\n });\n}\n\nfunction zipAll(project) {\n return joinAllInternals(zip$1, project);\n}\n\nfunction zip() {\n var sources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n\n return operate(function (source, subscriber) {\n zip$1.apply(void 0, __spreadArray([source], __read(sources))).subscribe(subscriber);\n });\n}\n\nfunction zipWith() {\n var otherInputs = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n otherInputs[_i] = arguments[_i];\n }\n\n return zip.apply(void 0, __spreadArray([], __read(otherInputs)));\n}\n\nvar esm5 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Observable: Observable,\n ConnectableObservable: ConnectableObservable,\n observable: observable,\n animationFrames: animationFrames,\n Subject: Subject,\n BehaviorSubject: BehaviorSubject,\n ReplaySubject: ReplaySubject,\n AsyncSubject: AsyncSubject,\n asap: asap,\n asapScheduler: asapScheduler,\n async: async,\n asyncScheduler: asyncScheduler,\n queue: queue,\n queueScheduler: queueScheduler,\n animationFrame: animationFrame,\n animationFrameScheduler: animationFrameScheduler,\n VirtualTimeScheduler: VirtualTimeScheduler,\n VirtualAction: VirtualAction,\n Scheduler: Scheduler,\n Subscription: Subscription,\n Subscriber: Subscriber,\n Notification: Notification,\n\n get NotificationKind() {\n return NotificationKind;\n },\n\n pipe: pipe,\n noop: noop,\n identity: identity,\n isObservable: isObservable,\n lastValueFrom: lastValueFrom,\n firstValueFrom: firstValueFrom,\n ArgumentOutOfRangeError: ArgumentOutOfRangeError,\n EmptyError: EmptyError,\n NotFoundError: NotFoundError,\n ObjectUnsubscribedError: ObjectUnsubscribedError,\n SequenceError: SequenceError,\n TimeoutError: TimeoutError,\n UnsubscriptionError: UnsubscriptionError,\n bindCallback: bindCallback,\n bindNodeCallback: bindNodeCallback,\n combineLatest: combineLatest$1,\n concat: concat$1,\n connectable: connectable,\n defer: defer,\n empty: empty,\n forkJoin: forkJoin,\n from: from,\n fromEvent: fromEvent,\n fromEventPattern: fromEventPattern,\n generate: generate,\n iif: iif,\n interval: interval,\n merge: merge$1,\n never: never,\n of: of,\n onErrorResumeNext: onErrorResumeNext,\n pairs: pairs,\n partition: partition,\n race: race,\n range: range,\n throwError: throwError,\n timer: timer,\n using: using,\n zip: zip$1,\n scheduled: scheduled,\n EMPTY: EMPTY,\n NEVER: NEVER,\n config: config,\n audit: audit,\n auditTime: auditTime,\n buffer: buffer,\n bufferCount: bufferCount,\n bufferTime: bufferTime,\n bufferToggle: bufferToggle,\n bufferWhen: bufferWhen,\n catchError: catchError,\n combineAll: combineAll,\n combineLatestAll: combineLatestAll,\n combineLatestWith: combineLatestWith,\n concatAll: concatAll,\n concatMap: concatMap,\n concatMapTo: concatMapTo,\n concatWith: concatWith,\n connect: connect,\n count: count,\n debounce: debounce,\n debounceTime: debounceTime,\n defaultIfEmpty: defaultIfEmpty,\n delay: delay,\n delayWhen: delayWhen,\n dematerialize: dematerialize,\n distinct: distinct,\n distinctUntilChanged: distinctUntilChanged,\n distinctUntilKeyChanged: distinctUntilKeyChanged,\n elementAt: elementAt,\n endWith: endWith,\n every: every,\n exhaust: exhaust,\n exhaustAll: exhaustAll,\n exhaustMap: exhaustMap,\n expand: expand,\n filter: filter,\n finalize: finalize,\n find: find,\n findIndex: findIndex,\n first: first,\n groupBy: groupBy,\n ignoreElements: ignoreElements,\n isEmpty: isEmpty,\n last: last,\n map: map,\n mapTo: mapTo,\n materialize: materialize,\n max: max,\n mergeAll: mergeAll,\n flatMap: flatMap,\n mergeMap: mergeMap,\n mergeMapTo: mergeMapTo,\n mergeScan: mergeScan,\n mergeWith: mergeWith,\n min: min,\n multicast: multicast,\n observeOn: observeOn,\n pairwise: pairwise,\n pluck: pluck,\n publish: publish,\n publishBehavior: publishBehavior,\n publishLast: publishLast,\n publishReplay: publishReplay,\n raceWith: raceWith,\n reduce: reduce,\n repeat: repeat,\n repeatWhen: repeatWhen,\n retry: retry,\n retryWhen: retryWhen,\n refCount: refCount,\n sample: sample,\n sampleTime: sampleTime,\n scan: scan,\n sequenceEqual: sequenceEqual,\n share: share,\n shareReplay: shareReplay,\n single: single,\n skip: skip,\n skipLast: skipLast,\n skipUntil: skipUntil,\n skipWhile: skipWhile,\n startWith: startWith,\n subscribeOn: subscribeOn,\n switchAll: switchAll,\n switchMap: switchMap,\n switchMapTo: switchMapTo,\n switchScan: switchScan,\n take: take,\n takeLast: takeLast,\n takeUntil: takeUntil,\n takeWhile: takeWhile,\n tap: tap,\n throttle: throttle,\n throttleTime: throttleTime,\n throwIfEmpty: throwIfEmpty,\n timeInterval: timeInterval,\n timeout: timeout,\n timeoutWith: timeoutWith,\n timestamp: timestamp,\n toArray: toArray,\n window: window$1,\n windowCount: windowCount,\n windowTime: windowTime,\n windowToggle: windowToggle,\n windowWhen: windowWhen,\n withLatestFrom: withLatestFrom,\n zipAll: zipAll,\n zipWith: zipWith\n});\nvar common = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResponseType = exports.RequestType = exports.ProxyPropertyType = void 0;\n\n (function (ProxyPropertyType) {\n ProxyPropertyType[\"Function\"] = \"function\";\n ProxyPropertyType[\"Function$\"] = \"function$\";\n ProxyPropertyType[\"Value\"] = \"value\";\n ProxyPropertyType[\"Value$\"] = \"value$\";\n })(exports.ProxyPropertyType || (exports.ProxyPropertyType = {}));\n\n (function (RequestType) {\n RequestType[\"Apply\"] = \"apply\";\n RequestType[\"ApplySubscribe\"] = \"applySubscribe\";\n RequestType[\"Get\"] = \"get\";\n RequestType[\"Subscribe\"] = \"subscribe\";\n RequestType[\"Unsubscribe\"] = \"unsubscribe\";\n })(exports.RequestType || (exports.RequestType = {}));\n\n (function (ResponseType) {\n ResponseType[\"Complete\"] = \"complete\";\n ResponseType[\"Error\"] = \"error\";\n ResponseType[\"Next\"] = \"next\";\n ResponseType[\"Result\"] = \"result\";\n })(exports.ResponseType || (exports.ResponseType = {}));\n});\nvar errio = createCommonjsModule(function (module, exports) {\n // Default options for all serializations.\n var defaultOptions = {\n recursive: true,\n // Recursively serialize and deserialize nested errors\n inherited: true,\n // Include inherited properties\n stack: false,\n // Include stack property\n private: false,\n // Include properties with leading or trailing underscores\n exclude: [],\n // Property names to exclude (low priority)\n include: [] // Property names to include (high priority)\n\n }; // Overwrite global default options.\n\n exports.setDefaults = function (options) {\n for (var key in options) defaultOptions[key] = options[key];\n }; // Object containing registered error constructors and their options.\n\n\n var errors = {}; // Register an error constructor for serialization and deserialization with\n // option overrides. Name can be specified in options, otherwise it will be\n // taken from the prototype's name property (if it is not set to Error), the\n // constructor's name property, or the name property of an instance of the\n // constructor.\n\n exports.register = function (constructor, options) {\n options = options || {};\n var prototypeName = constructor.prototype.name !== 'Error' ? constructor.prototype.name : null;\n var name = options.name || prototypeName || constructor.name || new constructor().name;\n errors[name] = {\n constructor: constructor,\n options: options\n };\n }; // Register an array of error constructors all with the same option overrides.\n\n\n exports.registerAll = function (constructors, options) {\n constructors.forEach(function (constructor) {\n exports.register(constructor, options);\n });\n }; // Shallow clone a plain object.\n\n\n function cloneObject(object) {\n var clone = {};\n\n for (var key in object) {\n if (object.hasOwnProperty(key)) clone[key] = object[key];\n }\n\n return clone;\n } // Register a plain object of constructor names mapped to constructors with\n // common option overrides.\n\n\n exports.registerObject = function (constructors, commonOptions) {\n for (var name in constructors) {\n if (!constructors.hasOwnProperty(name)) continue;\n var constructor = constructors[name];\n var options = cloneObject(commonOptions);\n options.name = name;\n exports.register(constructor, options);\n }\n }; // Register the built-in error constructors.\n\n\n exports.registerAll([Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError]); // Serialize an error instance to a plain object with option overrides, applied\n // on top of the global defaults and the registered option overrides. If the\n // constructor of the error instance has not been registered yet, register it\n // with the provided options.\n\n exports.toObject = function (error, callOptions) {\n callOptions = callOptions || {};\n\n if (!errors[error.name]) {\n // Make sure we register with the name of this instance.\n callOptions.name = error.name;\n exports.register(error.constructor, callOptions);\n }\n\n var errorOptions = errors[error.name].options;\n var options = {};\n\n for (var key in defaultOptions) {\n if (callOptions.hasOwnProperty(key)) options[key] = callOptions[key];else if (errorOptions.hasOwnProperty(key)) options[key] = errorOptions[key];else options[key] = defaultOptions[key];\n } // Always explicitly include essential error properties.\n\n\n var object = {\n name: error.name,\n message: error.message\n }; // Explicitly include stack since it is not always an enumerable property.\n\n if (options.stack) object.stack = error.stack;\n\n for (var prop in error) {\n // Skip exclusion checks if property is in include list.\n if (options.include.indexOf(prop) === -1) {\n if (typeof error[prop] === 'function') continue;\n if (options.exclude.indexOf(prop) !== -1) continue;\n if (!options.inherited) if (!error.hasOwnProperty(prop)) continue;\n if (!options.stack) if (prop === 'stack') continue;\n if (!options.private) if (prop[0] === '_' || prop[prop.length - 1] === '_') continue;\n }\n\n var value = error[prop]; // Recurse if nested object has name and message properties.\n\n if (typeof value === 'object' && value && value.name && value.message) {\n if (options.recursive) {\n object[prop] = exports.toObject(value, callOptions);\n }\n\n continue;\n }\n\n object[prop] = value;\n }\n\n return object;\n }; // Deserialize a plain object to an instance of a registered error constructor\n // with option overrides. If the specific constructor is not registered,\n // return a generic Error instance. If stack was not serialized, capture a new\n // stack trace.\n\n\n exports.fromObject = function (object, callOptions) {\n callOptions = callOptions || {};\n var registration = errors[object.name];\n if (!registration) registration = errors.Error;\n var constructor = registration.constructor;\n var errorOptions = registration.options;\n var options = {};\n\n for (var key in defaultOptions) {\n if (callOptions.hasOwnProperty(key)) options[key] = callOptions[key];else if (errorOptions.hasOwnProperty(key)) options[key] = errorOptions[key];else options[key] = defaultOptions[key];\n } // Instantiate the error without actually calling the constructor.\n\n\n var error = Object.create(constructor.prototype);\n\n for (var prop in object) {\n // Recurse if nested object has name and message properties.\n if (options.recursive && typeof object[prop] === 'object') {\n var nested = object[prop];\n\n if (nested && nested.name && nested.message) {\n error[prop] = exports.fromObject(nested, callOptions);\n continue;\n }\n }\n\n error[prop] = object[prop];\n } // Capture a new stack trace such that the first trace line is the caller of\n // fromObject.\n\n\n if (!error.stack && Error.captureStackTrace) {\n Error.captureStackTrace(error, exports.fromObject);\n }\n\n return error;\n }; // Serialize an error instance to a JSON string with option overrides.\n\n\n exports.stringify = function (error, callOptions) {\n return JSON.stringify(exports.toObject(error, callOptions));\n }; // Deserialize a JSON string to an instance of a registered error constructor.\n\n\n exports.parse = function (string, callOptions) {\n return exports.fromObject(JSON.parse(string), callOptions);\n };\n});\nvar utils = createCommonjsModule(function (module, exports) {\n var __importDefault = commonjsGlobal && commonjsGlobal.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getSubscriptionKey = exports.isFunction = exports.IpcProxyError = void 0;\n\n const errio_1 = __importDefault(errio);\n /* Custom Error */\n\n\n class IpcProxyError extends Error {\n constructor(message) {\n super(message);\n this.name = this.constructor.name;\n }\n\n }\n\n exports.IpcProxyError = IpcProxyError;\n errio_1.default.register(IpcProxyError);\n /* Utils */\n // eslint-disable-next-line @typescript-eslint/ban-types\n\n function isFunction(value) {\n return value !== undefined && typeof value === 'function';\n }\n\n exports.isFunction = isFunction;\n /**\n * Fix ContextIsolation\n * @param key original key\n * @returns\n */\n\n function getSubscriptionKey(key) {\n return `${key}Subscribe`;\n }\n\n exports.getSubscriptionKey = getSubscriptionKey;\n});\nvar rxjs_1 = /*@__PURE__*/getAugmentedNamespace(esm5);\ncreateCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.fixContextIsolation = exports.ipcProxyFixContextIsolation = void 0;\n /* eslint-disable @typescript-eslint/no-unsafe-return */\n\n /* eslint-disable @typescript-eslint/no-unsafe-call */\n\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n /* eslint-disable @typescript-eslint/consistent-type-assertions */\n\n /**\n * fix https://github.com/electron/electron/issues/28176\n * We cannot pass Observable across contextBridge, so we have to add a hidden patch to the object on preload script, and use that patch to regenerate Observable on renderer side\n * This file is \"unsafe\" and will full of type warnings, which is necessary\n */\n\n /**\n * Create `(window as IWindow).observables.xxx` from `(window as IWindow).service.xxx`\n * @param name service name\n * @param service service client proxy created in preload script\n * @param descriptor electron ipc proxy descriptor\n */\n\n function ipcProxyFixContextIsolation(name, service, descriptor) {\n if (window.observables === undefined) {\n window.observables = {};\n }\n\n for (const key in descriptor.properties) {\n // Process all Observables, we pass a `.next` function from preload script, that we can used to reconstruct Observable\n if (common.ProxyPropertyType.Value$ === descriptor.properties[key] && !(key in service) && utils.getSubscriptionKey(key) in service) {\n const subscribedObservable = new rxjs_1.Observable(observer => {\n service[utils.getSubscriptionKey(key)](value => observer.next(value));\n }); // store newly created Observable to `(window as IWindow).observables.xxx.yyy`\n\n if (window.observables[name] === undefined) {\n window.observables[name] = {\n [key]: subscribedObservable\n };\n } else {\n window.observables[name][key] = subscribedObservable;\n }\n } // create (id: string) => Observable\n\n\n if (common.ProxyPropertyType.Function$ === descriptor.properties[key] && !(key in service) && utils.getSubscriptionKey(key) in service) {\n const subscribingObservable = (...arguments_) => new rxjs_1.Observable(observer => {\n service[utils.getSubscriptionKey(key)](...arguments_)(value => observer.next(value));\n }); // store newly created Observable to `(window as IWindow).observables.xxx.yyy`\n\n\n if (window.observables[name] === undefined) {\n window.observables[name] = {\n [key]: subscribingObservable\n };\n } else {\n window.observables[name][key] = subscribingObservable;\n }\n }\n }\n }\n\n exports.ipcProxyFixContextIsolation = ipcProxyFixContextIsolation;\n /**\n * Process `(window as IWindow).service`, reconstruct Observables into `(window as IWindow).observables`\n */\n\n function fixContextIsolation() {\n const {\n descriptors,\n ...services\n } = window.service;\n\n for (const key in services) {\n const serviceName = key;\n ipcProxyFixContextIsolation(serviceName, services[serviceName], descriptors[serviceName]);\n }\n }\n\n exports.fixContextIsolation = fixContextIsolation;\n fixContextIsolation();\n});\nvar electronIpcCat = {};\nexports['default'] = electronIpcCat;\n","creator":"LinOnetwo","type":"application/javascript","module-type":"library"},"$:/plugins/linonetwo/itonnote/Startup/install-electron-ipc-cat.js":{"title":"$:/plugins/linonetwo/itonnote/Startup/install-electron-ipc-cat.js","text":"if (typeof window !== 'undefined' && typeof window.service !== 'undefined') {\n require('./electron-ipc-cat');\n}\n","creator":"LinOnetwo","type":"application/javascript","module-type":"startup"},"$:/plugins/linonetwo/itonnote/description":{"title":"$:/plugins/linonetwo/itonnote/description","type":"text/vnd.tiddlywiki","text":"!!! TW-Locator\n\n根据[[$:/plugins/bimlas/locator/README/macros]]创建了下列文件:\n\n* [[$:/plugins/linonetwo/itonnote/Sidebar/Locator Fields]] 侧边栏的 Fields 标签页,用于查看含有各种字段的Tiddlers\n* [[$:/plugins/linonetwo/itonnote/Sidebar/SearchResultByFacets]] 搜索结果中的 Facets 标签页,用于分面搜索\n* [[$:/plugins/linonetwo/itonnote/Sidebar/SearchResultByFields]] 搜索结果中的 Fields 标签页,用于按字段进行精准搜索\n\n!!! macros\n\n!!!! TransclusionWithEditMe\n\n[[$:/plugins/linonetwo/itonnote/Macros/TransclusionWithEditMe]] Usage:\n\n使用普通的 [[Transclusion|https://tiddlywiki.com/#Transclusion]] 时,你没法得知源文件在哪里,如果想要修改内容,还得打开编辑模式、复制被引用的 Tiddler 的标题,然后搜索打开编辑,比较麻烦。\n\n使用此宏进行引用就很方便了:\n\n```tid\n<>\n```\n\n会直接在引用的区块旁边显示一个「查看引文」的小浮窗,带有指向源文件的链接,直接点开编辑即可。\n\n!!!! OpenImageInGithub\n\n[[$:/plugins/linonetwo/itonnote/Macros/OpenImageInGithub]] Usage:\n\nIf you have `webcatalog-tiddlywiki-menu-app.jpg` in your Wiki, you normally can just `{{webcatalog-tiddlywiki-menu-app.jpg}}` to place it in your tiddler, but you can use this macro to make it clickable, and open large image in the new browser tab:\n\n```tid\n<>\n```\n\n!!! snippets(文本片段)\n\n在编辑模式下,有一个图章按钮,点击后会列出一系列文本片段,可以一键添加预制内容,因而无需用脑记住这些复杂的文本片段了。\n\n本插件预置了一些文本片段,详见相应的 Macros 的介绍,或相应的插件的介绍:\n\n* [[$:/plugins/linonetwo/itonnote/Snippets/LocatorAboutCurrentTiddler]]\n* [[$:/plugins/linonetwo/itonnote/Snippets/OpenImageInGithub]]\n* [[$:/plugins/linonetwo/itonnote/Snippets/TransclusionWithEditMe]]\n"},"$:/plugins/linonetwo/itonnote/readme":{"title":"$:/plugins/linonetwo/itonnote/readme","type":"text/vnd.tiddlywiki","text":"!! 功能\n\n预配置了一系列琐碎的内容,一般来自各插件的Readme和论坛讨论,但大多数人懒得看Readme,故在此直接帮忙配置好了。\n\n具体预置内容介绍可见[[Description|$:/plugins/linonetwo/itonnote/description]]。\n\n{{$:/plugins/linonetwo/itonnote/ControlPanel}}\n"}}} \ No newline at end of file diff --git a/tiddlers/$__plugins_linonetwo_itonnote.json.meta b/tiddlers/$__plugins_linonetwo_itonnote.json.meta index 4febe89..82259ae 100644 --- a/tiddlers/$__plugins_linonetwo_itonnote.json.meta +++ b/tiddlers/$__plugins_linonetwo_itonnote.json.meta @@ -7,4 +7,4 @@ name: ItonNote plugin-type: plugin title: $:/plugins/linonetwo/itonnote type: application/json -version: 0.4.0 \ No newline at end of file +version: 0.4.1 \ No newline at end of file diff --git a/tiddlers/$__plugins_linonetwo_service-worker.json b/tiddlers/$__plugins_linonetwo_service-worker.json index e81b58d..e2d4aee 100644 --- a/tiddlers/$__plugins_linonetwo_service-worker.json +++ b/tiddlers/$__plugins_linonetwo_service-worker.json @@ -1 +1 @@ -{"tiddlers":{"$:/plugins/linonetwo/service-worker/load-service-worker.html":{"title":"$:/plugins/linonetwo/service-worker/load-service-worker.html","text":"\n\n\n\n\n","type":"text/html","creator":"LinOnetwo","tags":"$:/tags/RawMarkup"},"$:/plugins/linonetwo/service-worker/readme":{"title":"$:/plugins/linonetwo/service-worker/readme","created":"20200414135748497","modified":"20200602062349232","creator":"LinOnetwo","type":"text/vnd.tiddlywiki","text":"!! Usage\n\nAfter install, you have to publish your wiki as a HTTPS website to make it work.\n\n!!! Make sure to include all necessary step in the build process\n\nAdd following files to your `/public` folder after build, you can use a script to copy them to the build folder after the wiki build process:\n\n1. Add a `manifest.webmanifest` like:\n\n```json\n{\n \"background_color\": \"white\",\n \"theme_color\": \"white\",\n \"description\": \"Meme of LinOnetwo 林一二的模因和想法 - TiddlyWiki 非线性的知识库和博客\",\n \"display\": \"standalone\",\n \"icons\": [\n {\n \"src\": \"/TiddlyWikiIconBlack.png\",\n \"sizes\": \"256x256\",\n \"type\": \"image/png\"\n },\n {\n \"src\": \"/TiddlyWikiIconWhite.png\",\n \"sizes\": \"144x144\",\n \"type\": \"image/png\"\n }\n ],\n \"name\": \"TiddlyWiki\",\n \"short_name\": \"Wiki\",\n \"lang\": \"zh-CN\",\n \"start_url\": \"/\",\n \"scope\": \"/\"\n}\n```\n\nMake sure icon size is at least 144x144. And change all necessary fields.\n\n2. Add `service-worker.js`:\n\nSee [[https://github.com/linonetwo/Meme-of-LinOnetwo/public/service-worker.js|https://github.com/linonetwo/Meme-of-LinOnetwo/blob/d088f72a2b95ee21b68af1b349d9993a3997bf19/Meme-of-LinOnetwo/public/service-worker.js]] for example.\n\n!!! Config router\n\nSometimes request from this plugin to your `service-worker.js` will resulted in 404, this is basically because you are not putting `service-worker.js` just besides your `index.html`, or the router config is wrong.\n"}}} \ No newline at end of file +{"tiddlers":{"$:/plugins/linonetwo/service-worker/load-service-worker.html":{"title":"$:/plugins/linonetwo/service-worker/load-service-worker.html","text":"\n\n\n\n\n","type":"text/html","creator":"LinOnetwo","tags":"$:/tags/RawMarkup"},"$:/plugins/linonetwo/service-worker/readme":{"title":"$:/plugins/linonetwo/service-worker/readme","created":"20200414135748497","modified":"20220519121649232","creator":"LinOnetwo","type":"text/vnd.tiddlywiki","text":"!! Usage\n\nAfter install, you have to publish your wiki as a HTTPS website to make it work.\n\n> If you are using [[https://github.com/tiddly-gittly/Tiddlywiki-NodeJS-Github-Template]], then you can skip the following setup, they are included in the edition.\n\n!!! Make sure to include all necessary step in the build process to make it work\n\nAdd following files to your `/public` folder after build, you can use a script to copy them to the build folder after the wiki build process:\n\n1. Add a `manifest.webmanifest` like:\n\n```json\n{\n \"background_color\": \"white\",\n \"theme_color\": \"white\",\n \"description\": \"Meme of LinOnetwo 林一二的模因和想法 - TiddlyWiki 非线性的知识库和博客\",\n \"display\": \"standalone\",\n \"icons\": [\n {\n \"src\": \"/TiddlyWikiIconBlack.png\",\n \"sizes\": \"256x256\",\n \"type\": \"image/png\"\n },\n {\n \"src\": \"/TiddlyWikiIconWhite.png\",\n \"sizes\": \"144x144\",\n \"type\": \"image/png\"\n }\n ],\n \"name\": \"TiddlyWiki\",\n \"short_name\": \"Wiki\",\n \"lang\": \"zh-CN\",\n \"start_url\": \"/\",\n \"scope\": \"/\"\n}\n```\n\nMake sure icon size is at least 144x144. And change all necessary fields.\n\nSee [[https://github.com/linonetwo/wiki/blob/master/public/manifest.webmanifest|https://github.com/linonetwo/wiki/blob/27608d25ac955dfb4670f63cdbf0da5ba837e6ec/public/manifest.webmanifest]] for example.\n\n2. Add `service-worker.js`:\n\nSee [[https://github.com/linonetwo/wiki/blob/master/public/service-worker.js|https://github.com/linonetwo/wiki/blob/27608d25ac955dfb4670f63cdbf0da5ba837e6ec/public/service-worker.js]] for example.\n\n!!! Config router\n\nSometimes request from this plugin to your `service-worker.js` will resulted in 404, this is basically because you are not putting `service-worker.js` just besides your `index.html`, or the router config is wrong.\n"}}} \ No newline at end of file diff --git a/tiddlers/$__plugins_linonetwo_service-worker.json.meta b/tiddlers/$__plugins_linonetwo_service-worker.json.meta index 8f7945d..66b2761 100644 --- a/tiddlers/$__plugins_linonetwo_service-worker.json.meta +++ b/tiddlers/$__plugins_linonetwo_service-worker.json.meta @@ -1,11 +1,10 @@ author: LinOnetwo core-version: >=5.1.22 -created: 20211017092922557 dependents: description: Use service worker to cache content, make it works even offline, and can be add to the desktop as an App. list: readme -modified: 20211017092922557 +name: service-worker plugin-type: plugin title: $:/plugins/linonetwo/service-worker type: application/json -version: 0.0.1 \ No newline at end of file +version: 0.0.2 \ No newline at end of file diff --git a/tiddlers/$__plugins_linonetwo_slate-write.json b/tiddlers/$__plugins_linonetwo_slate-write.json index 7358168..4947e13 100644 --- a/tiddlers/$__plugins_linonetwo_slate-write.json +++ b/tiddlers/$__plugins_linonetwo_slate-write.json @@ -1 +1 @@ -{"tiddlers":{"$:/plugins/linonetwo/slate-write/develop":{"title":"$:/plugins/linonetwo/slate-write/develop","type":"text/vnd.tiddlywiki","text":"!! How this works\n\n# Offer an widget in `src/widget.js` and `src/components/index.ts`, where we provide props like `currentTiddler` to the actual react component in `src/components/editor.tsx`\n## Some basic mark and elements like ''bold'' and ordered list are supported by slate plugins imported from `src/config/plugins.ts`\n## render advanced tiddlywiki widgets using [[tw-react|https://github.com/tiddly-gittly/tw-react]]'s `useWidget` hook, in our own plugin `src/config/plugins/widget/WidgetBlock.tsx`\n# Transform AST to Slate JSON using transformers in src/transform, see `src/transform/README.md` for details. This also transform Slate JSON back to the wikiast and then serialize to wikitext.\n## we add some type of wikiast to [[tw5-typed|https://github.com/tiddly-gittly/TW5-Typed]], based on the real json output of `$tw.wiki.parseText('text/vnd.tiddlywiki', input).tree`\n## This is imported in editor by `import { deserialize, serialize } from '../../src/transform/serialize';`, and those serialize and deserialize functions uses things in the `src/transform`\n## All supported wikitext syntax are tested in the `test` folder, and the tests are run with `npm run test`, you should also add test if you are adding new transformers for new syntax.\n# handle keyboard shortcut and basic elements' rendering using slatejs plugins from [[Udecode's Plate framework|https://plate.udecode.io]].\n## our custom keyboard shortcuts are configured in `src/config/autoformat`\n## re-support `/` menu in [[Gk0Wk/TW5-CodeMirror-Enhanced|https://github.com/Gk0Wk/TW5-CodeMirror-Enhanced]] to add snippets and advanced elements like table and widget and any wikitext source code\n### `/` menu component is at `src/editor/components/SnippetCombobox.tsx`, and snippets are loaded in `src/editor/config/snippets.ts`\n# There will be a floating toolbar when you selecting text, and you can click on the toolbar to change the text's decoration, this is a react component defined in `src/config/components/Toolbars.tsx`\n# When hover on the left of a block, there will be a Drag and drop handle, render by `src/editor/components/withStyledDraggables.tsx`\n## Different block have different line height, so we need to add different padding here to align them.\n\n!! TODO\n\n# TODO: allow editing widget and any block's source code, and get preview at real time.\n# TODO: allow use tw's default editor toolbar's buttons and their keyboard shortcuts\n# TODO: optimization: use section splitter in section-editor to ensure only a small potion of text will `onChange` and rerender. And we can get start-end of section from section splitter, so replace the section of text onChange.\n# TODO: allow drag to reorder blocks\n# TODO: context menu when click on the drag handle\n# TODO: autocomplete `[[`'s and `{{`'s linkable tiddlers result\n# TODO: autocomplete `<$`'s available widget and fields\n# TODO: autocomplete `<<`'s available macros\n# TODO: open context aware autocomplete using `ctrl+space`, show corresponding dropdown menu using prefix of the selection\n# TODO: replace codeblock with codemirror or monaco, so its prism highlight won't need to bundle with plugin, which is big\n# TODO: add excalidraw widget support\n# TODO: treeshaking serialize-md related things, they are bundled with plate package https://github.com/udecode/plate/discussions/363\n\n!! Development\n\nInstall and run\n\n```sh\nnpm i\nnpm run dev\n```\n\nRun tests\n\n```sh\nnpm test\n```\n\nTest JSON plugin\n\n```sh\nnpm run dev-html\n```\n\nMake production build: See `.github/workflows/release.yml`, adding a tag like `v0.1.1` to a commit and push to github will make a build.\n\n!!! Modify build scripts\n\nScripts is based on [[Gk0Wk's|https://github.com/Gk0Wk]] [[tiddly-gittly/Modern.TiddlyDev|https://github.com/tiddly-gittly/Modern.TiddlyDev]] and [[LinOnetwo's|https://github.com/linonetwo]] [[tiddly-gittly/TiddlyWiki-TS-Plugin-Template|https://github.com/tiddly-gittly/TiddlyWiki-TS-Plugin-Template]]. With some modification to adapt react dom.\n"},"$:/plugins/linonetwo/slate-write/components/index.css":{"title":"$:/plugins/linonetwo/slate-write/components/index.css","text":".tippy-box[data-animation=scale][data-placement^=top]{transform-origin:bottom}.tippy-box[data-animation=scale][data-placement^=bottom]{transform-origin:top}.tippy-box[data-animation=scale][data-placement^=left]{transform-origin:right}.tippy-box[data-animation=scale][data-placement^=right]{transform-origin:left}.tippy-box[data-animation=scale][data-state=hidden]{transform:scale(.5);opacity:0}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:\"\";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/linonetwo/slate-write/components/index.js":{"title":"$:/plugins/linonetwo/slate-write/components/index.js","text":"var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a5, b4) => {\n for (var prop in b4 || (b4 = {}))\n if (__hasOwnProp.call(b4, prop))\n __defNormalProp(a5, prop, b4[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b4)) {\n if (__propIsEnum.call(b4, prop))\n __defNormalProp(a5, prop, b4[prop]);\n }\n return a5;\n};\nvar __spreadProps = (a5, b4) => __defProps(a5, __getOwnPropDescs(b4));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target, mod));\n\n// node_modules/direction/index.js\nvar require_direction = __commonJS({\n \"node_modules/direction/index.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = direction;\n var RTL = \"\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC\";\n var LTR = \"A-Za-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C\\uFE00-\\uFE6F\\uFEFD-\\uFFFF\";\n var rtl = new RegExp(\"^[^\" + LTR + \"]*[\" + RTL + \"]\");\n var ltr = new RegExp(\"^[^\" + RTL + \"]*[\" + LTR + \"]\");\n function direction(value) {\n value = String(value || \"\");\n if (rtl.test(value)) {\n return \"rtl\";\n }\n if (ltr.test(value)) {\n return \"ltr\";\n }\n return \"neutral\";\n }\n }\n});\n\n// node_modules/lodash/isObject.js\nvar require_isObject = __commonJS({\n \"node_modules/lodash/isObject.js\"(exports2, module2) {\n function isObject7(value) {\n var type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n }\n module2.exports = isObject7;\n }\n});\n\n// node_modules/lodash/_freeGlobal.js\nvar require_freeGlobal = __commonJS({\n \"node_modules/lodash/_freeGlobal.js\"(exports2, module2) {\n var freeGlobal5 = typeof global == \"object\" && global && global.Object === Object && global;\n module2.exports = freeGlobal5;\n }\n});\n\n// node_modules/lodash/_root.js\nvar require_root = __commonJS({\n \"node_modules/lodash/_root.js\"(exports2, module2) {\n var freeGlobal5 = require_freeGlobal();\n var freeSelf5 = typeof self == \"object\" && self && self.Object === Object && self;\n var root5 = freeGlobal5 || freeSelf5 || Function(\"return this\")();\n module2.exports = root5;\n }\n});\n\n// node_modules/lodash/now.js\nvar require_now = __commonJS({\n \"node_modules/lodash/now.js\"(exports2, module2) {\n var root5 = require_root();\n var now2 = function() {\n return root5.Date.now();\n };\n module2.exports = now2;\n }\n});\n\n// node_modules/lodash/_trimmedEndIndex.js\nvar require_trimmedEndIndex = __commonJS({\n \"node_modules/lodash/_trimmedEndIndex.js\"(exports2, module2) {\n var reWhitespace2 = /\\s/;\n function trimmedEndIndex2(string) {\n var index7 = string.length;\n while (index7-- && reWhitespace2.test(string.charAt(index7))) {\n }\n return index7;\n }\n module2.exports = trimmedEndIndex2;\n }\n});\n\n// node_modules/lodash/_baseTrim.js\nvar require_baseTrim = __commonJS({\n \"node_modules/lodash/_baseTrim.js\"(exports2, module2) {\n var trimmedEndIndex2 = require_trimmedEndIndex();\n var reTrimStart2 = /^\\s+/;\n function baseTrim2(string) {\n return string ? string.slice(0, trimmedEndIndex2(string) + 1).replace(reTrimStart2, \"\") : string;\n }\n module2.exports = baseTrim2;\n }\n});\n\n// node_modules/lodash/_Symbol.js\nvar require_Symbol = __commonJS({\n \"node_modules/lodash/_Symbol.js\"(exports2, module2) {\n var root5 = require_root();\n var Symbol5 = root5.Symbol;\n module2.exports = Symbol5;\n }\n});\n\n// node_modules/lodash/_getRawTag.js\nvar require_getRawTag = __commonJS({\n \"node_modules/lodash/_getRawTag.js\"(exports2, module2) {\n var Symbol5 = require_Symbol();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n var nativeObjectToString5 = objectProto5.toString;\n var symToStringTag5 = Symbol5 ? Symbol5.toStringTag : void 0;\n function getRawTag5(value) {\n var isOwn = hasOwnProperty6.call(value, symToStringTag5), tag = value[symToStringTag5];\n try {\n value[symToStringTag5] = void 0;\n var unmasked = true;\n } catch (e2) {\n }\n var result = nativeObjectToString5.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag5] = tag;\n } else {\n delete value[symToStringTag5];\n }\n }\n return result;\n }\n module2.exports = getRawTag5;\n }\n});\n\n// node_modules/lodash/_objectToString.js\nvar require_objectToString = __commonJS({\n \"node_modules/lodash/_objectToString.js\"(exports2, module2) {\n var objectProto5 = Object.prototype;\n var nativeObjectToString5 = objectProto5.toString;\n function objectToString5(value) {\n return nativeObjectToString5.call(value);\n }\n module2.exports = objectToString5;\n }\n});\n\n// node_modules/lodash/_baseGetTag.js\nvar require_baseGetTag = __commonJS({\n \"node_modules/lodash/_baseGetTag.js\"(exports2, module2) {\n var Symbol5 = require_Symbol();\n var getRawTag5 = require_getRawTag();\n var objectToString5 = require_objectToString();\n var nullTag5 = \"[object Null]\";\n var undefinedTag5 = \"[object Undefined]\";\n var symToStringTag5 = Symbol5 ? Symbol5.toStringTag : void 0;\n function baseGetTag5(value) {\n if (value == null) {\n return value === void 0 ? undefinedTag5 : nullTag5;\n }\n return symToStringTag5 && symToStringTag5 in Object(value) ? getRawTag5(value) : objectToString5(value);\n }\n module2.exports = baseGetTag5;\n }\n});\n\n// node_modules/lodash/isObjectLike.js\nvar require_isObjectLike = __commonJS({\n \"node_modules/lodash/isObjectLike.js\"(exports2, module2) {\n function isObjectLike5(value) {\n return value != null && typeof value == \"object\";\n }\n module2.exports = isObjectLike5;\n }\n});\n\n// node_modules/lodash/isSymbol.js\nvar require_isSymbol = __commonJS({\n \"node_modules/lodash/isSymbol.js\"(exports2, module2) {\n var baseGetTag5 = require_baseGetTag();\n var isObjectLike5 = require_isObjectLike();\n var symbolTag4 = \"[object Symbol]\";\n function isSymbol3(value) {\n return typeof value == \"symbol\" || isObjectLike5(value) && baseGetTag5(value) == symbolTag4;\n }\n module2.exports = isSymbol3;\n }\n});\n\n// node_modules/lodash/toNumber.js\nvar require_toNumber = __commonJS({\n \"node_modules/lodash/toNumber.js\"(exports2, module2) {\n var baseTrim2 = require_baseTrim();\n var isObject7 = require_isObject();\n var isSymbol3 = require_isSymbol();\n var NAN2 = 0 / 0;\n var reIsBadHex2 = /^[-+]0x[0-9a-f]+$/i;\n var reIsBinary2 = /^0b[01]+$/i;\n var reIsOctal2 = /^0o[0-7]+$/i;\n var freeParseInt2 = parseInt;\n function toNumber2(value) {\n if (typeof value == \"number\") {\n return value;\n }\n if (isSymbol3(value)) {\n return NAN2;\n }\n if (isObject7(value)) {\n var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n value = isObject7(other) ? other + \"\" : other;\n }\n if (typeof value != \"string\") {\n return value === 0 ? value : +value;\n }\n value = baseTrim2(value);\n var isBinary = reIsBinary2.test(value);\n return isBinary || reIsOctal2.test(value) ? freeParseInt2(value.slice(2), isBinary ? 2 : 8) : reIsBadHex2.test(value) ? NAN2 : +value;\n }\n module2.exports = toNumber2;\n }\n});\n\n// node_modules/lodash/debounce.js\nvar require_debounce = __commonJS({\n \"node_modules/lodash/debounce.js\"(exports2, module2) {\n var isObject7 = require_isObject();\n var now2 = require_now();\n var toNumber2 = require_toNumber();\n var FUNC_ERROR_TEXT4 = \"Expected a function\";\n var nativeMax3 = Math.max;\n var nativeMin2 = Math.min;\n function debounce8(func, wait, options) {\n var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\n if (typeof func != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT4);\n }\n wait = toNumber2(wait) || 0;\n if (isObject7(options)) {\n leading = !!options.leading;\n maxing = \"maxWait\" in options;\n maxWait = maxing ? nativeMax3(toNumber2(options.maxWait) || 0, wait) : maxWait;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs, thisArg = lastThis;\n lastArgs = lastThis = void 0;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n lastInvokeTime = time;\n timerId = setTimeout(timerExpired, wait);\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;\n return maxing ? nativeMin2(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\n return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now2();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = void 0;\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = void 0;\n return result;\n }\n function cancel() {\n if (timerId !== void 0) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = void 0;\n }\n function flush() {\n return timerId === void 0 ? result : trailingEdge(now2());\n }\n function debounced() {\n var time = now2(), isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === void 0) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === void 0) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n module2.exports = debounce8;\n }\n});\n\n// node_modules/lodash/throttle.js\nvar require_throttle = __commonJS({\n \"node_modules/lodash/throttle.js\"(exports2, module2) {\n var debounce8 = require_debounce();\n var isObject7 = require_isObject();\n var FUNC_ERROR_TEXT4 = \"Expected a function\";\n function throttle3(func, wait, options) {\n var leading = true, trailing = true;\n if (typeof func != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT4);\n }\n if (isObject7(options)) {\n leading = \"leading\" in options ? !!options.leading : leading;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n return debounce8(func, wait, {\n \"leading\": leading,\n \"maxWait\": wait,\n \"trailing\": trailing\n });\n }\n module2.exports = throttle3;\n }\n});\n\n// node_modules/is-hotkey/lib/index.js\nvar require_lib = __commonJS({\n \"node_modules/is-hotkey/lib/index.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", {\n value: true\n });\n var IS_MAC = typeof window != \"undefined\" && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n var MODIFIERS = {\n alt: \"altKey\",\n control: \"ctrlKey\",\n meta: \"metaKey\",\n shift: \"shiftKey\"\n };\n var ALIASES = {\n add: \"+\",\n break: \"pause\",\n cmd: \"meta\",\n command: \"meta\",\n ctl: \"control\",\n ctrl: \"control\",\n del: \"delete\",\n down: \"arrowdown\",\n esc: \"escape\",\n ins: \"insert\",\n left: \"arrowleft\",\n mod: IS_MAC ? \"meta\" : \"control\",\n opt: \"alt\",\n option: \"alt\",\n return: \"enter\",\n right: \"arrowright\",\n space: \" \",\n spacebar: \" \",\n up: \"arrowup\",\n win: \"meta\",\n windows: \"meta\"\n };\n var CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n \" \": 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n \";\": 186,\n \"=\": 187,\n \",\": 188,\n \"-\": 189,\n \".\": 190,\n \"/\": 191,\n \"`\": 192,\n \"[\": 219,\n \"\\\\\": 220,\n \"]\": 221,\n \"'\": 222\n };\n for (f3 = 1; f3 < 20; f3++) {\n CODES[\"f\" + f3] = 111 + f3;\n }\n var f3;\n function isHotkey6(hotkey, options, event) {\n if (options && !(\"byKey\" in options)) {\n event = options;\n options = null;\n }\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n var array = hotkey.map(function(string) {\n return parseHotkey(string, options);\n });\n var check = function check2(e2) {\n return array.some(function(object) {\n return compareHotkey(object, e2);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n }\n function isCodeHotkey(hotkey, event) {\n return isHotkey6(hotkey, event);\n }\n function isKeyHotkey2(hotkey, event) {\n return isHotkey6(hotkey, { byKey: true }, event);\n }\n function parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n hotkey = hotkey.replace(\"++\", \"+add\");\n var values2 = hotkey.split(\"+\");\n var length = values2.length;\n for (var k4 in MODIFIERS) {\n ret[MODIFIERS[k4]] = false;\n }\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = void 0;\n try {\n for (var _iterator = values2[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n var optional = value.endsWith(\"?\") && value.length > 1;\n if (optional) {\n value = value.slice(0, -1);\n }\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return ret;\n }\n function compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n if (expected == null) {\n continue;\n }\n if (key === \"key\" && event.key != null) {\n actual = event.key.toLowerCase();\n } else if (key === \"which\") {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n if (actual == null && expected === false) {\n continue;\n }\n if (actual !== expected) {\n return false;\n }\n }\n return true;\n }\n function toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n }\n function toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES[name] || name;\n return name;\n }\n exports2.default = isHotkey6;\n exports2.isHotkey = isHotkey6;\n exports2.isCodeHotkey = isCodeHotkey;\n exports2.isKeyHotkey = isKeyHotkey2;\n exports2.parseHotkey = parseHotkey;\n exports2.compareHotkey = compareHotkey;\n exports2.toKeyCode = toKeyCode;\n exports2.toKeyName = toKeyName;\n }\n});\n\n// node_modules/prismjs/prism.js\nvar require_prism = __commonJS({\n \"node_modules/prismjs/prism.js\"(exports2, module2) {\n var _self = typeof window !== \"undefined\" ? window : typeof WorkerGlobalScope !== \"undefined\" && self instanceof WorkerGlobalScope ? self : {};\n var Prism2 = function(_self2) {\n var lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n var uniqueId = 0;\n var plainTextGrammar = {};\n var _4 = {\n manual: _self2.Prism && _self2.Prism.manual,\n disableWorkerMessageHandler: _self2.Prism && _self2.Prism.disableWorkerMessageHandler,\n util: {\n encode: function encode(tokens) {\n if (tokens instanceof Token3) {\n return new Token3(tokens.type, encode(tokens.content), tokens.alias);\n } else if (Array.isArray(tokens)) {\n return tokens.map(encode);\n } else {\n return tokens.replace(/&/g, \"&\").replace(/\" + env2.content + \"\";\n };\n function matchPattern(pattern, pos, text5, lookbehind) {\n pattern.lastIndex = pos;\n var match2 = pattern.exec(text5);\n if (match2 && lookbehind && match2[1]) {\n var lookbehindLength = match2[1].length;\n match2.index += lookbehindLength;\n match2[0] = match2[0].slice(lookbehindLength);\n }\n return match2;\n }\n function matchGrammar(text5, tokenList, grammar, startNode, startPos, rematch) {\n for (var token in grammar) {\n if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n continue;\n }\n var patterns = grammar[token];\n patterns = Array.isArray(patterns) ? patterns : [patterns];\n for (var j4 = 0; j4 < patterns.length; ++j4) {\n if (rematch && rematch.cause == token + \",\" + j4) {\n return;\n }\n var patternObj = patterns[j4];\n var inside = patternObj.inside;\n var lookbehind = !!patternObj.lookbehind;\n var greedy = !!patternObj.greedy;\n var alias = patternObj.alias;\n if (greedy && !patternObj.pattern.global) {\n var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n patternObj.pattern = RegExp(patternObj.pattern.source, flags + \"g\");\n }\n var pattern = patternObj.pattern || patternObj;\n for (var currentNode = startNode.next, pos = startPos; currentNode !== tokenList.tail; pos += currentNode.value.length, currentNode = currentNode.next) {\n if (rematch && pos >= rematch.reach) {\n break;\n }\n var str = currentNode.value;\n if (tokenList.length > text5.length) {\n return;\n }\n if (str instanceof Token3) {\n continue;\n }\n var removeCount = 1;\n var match2;\n if (greedy) {\n match2 = matchPattern(pattern, pos, text5, lookbehind);\n if (!match2 || match2.index >= text5.length) {\n break;\n }\n var from = match2.index;\n var to = match2.index + match2[0].length;\n var p4 = pos;\n p4 += currentNode.value.length;\n while (from >= p4) {\n currentNode = currentNode.next;\n p4 += currentNode.value.length;\n }\n p4 -= currentNode.value.length;\n pos = p4;\n if (currentNode.value instanceof Token3) {\n continue;\n }\n for (var k4 = currentNode; k4 !== tokenList.tail && (p4 < to || typeof k4.value === \"string\"); k4 = k4.next) {\n removeCount++;\n p4 += k4.value.length;\n }\n removeCount--;\n str = text5.slice(pos, p4);\n match2.index -= pos;\n } else {\n match2 = matchPattern(pattern, 0, str, lookbehind);\n if (!match2) {\n continue;\n }\n }\n var from = match2.index;\n var matchStr = match2[0];\n var before = str.slice(0, from);\n var after = str.slice(from + matchStr.length);\n var reach = pos + str.length;\n if (rematch && reach > rematch.reach) {\n rematch.reach = reach;\n }\n var removeFrom = currentNode.prev;\n if (before) {\n removeFrom = addAfter(tokenList, removeFrom, before);\n pos += before.length;\n }\n removeRange(tokenList, removeFrom, removeCount);\n var wrapped = new Token3(token, inside ? _4.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n currentNode = addAfter(tokenList, removeFrom, wrapped);\n if (after) {\n addAfter(tokenList, currentNode, after);\n }\n if (removeCount > 1) {\n var nestedRematch = {\n cause: token + \",\" + j4,\n reach\n };\n matchGrammar(text5, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n if (rematch && nestedRematch.reach > rematch.reach) {\n rematch.reach = nestedRematch.reach;\n }\n }\n }\n }\n }\n }\n function LinkedList() {\n var head = { value: null, prev: null, next: null };\n var tail = { value: null, prev: head, next: null };\n head.next = tail;\n this.head = head;\n this.tail = tail;\n this.length = 0;\n }\n function addAfter(list, node, value) {\n var next = node.next;\n var newNode = { value, prev: node, next };\n node.next = newNode;\n next.prev = newNode;\n list.length++;\n return newNode;\n }\n function removeRange(list, node, count) {\n var next = node.next;\n for (var i3 = 0; i3 < count && next !== list.tail; i3++) {\n next = next.next;\n }\n node.next = next;\n next.prev = node;\n list.length -= i3;\n }\n function toArray(list) {\n var array = [];\n var node = list.head.next;\n while (node !== list.tail) {\n array.push(node.value);\n node = node.next;\n }\n return array;\n }\n if (!_self2.document) {\n if (!_self2.addEventListener) {\n return _4;\n }\n if (!_4.disableWorkerMessageHandler) {\n _self2.addEventListener(\"message\", function(evt) {\n var message = JSON.parse(evt.data);\n var lang2 = message.language;\n var code = message.code;\n var immediateClose = message.immediateClose;\n _self2.postMessage(_4.highlight(code, _4.languages[lang2], lang2));\n if (immediateClose) {\n _self2.close();\n }\n }, false);\n }\n return _4;\n }\n var script = _4.util.currentScript();\n if (script) {\n _4.filename = script.src;\n if (script.hasAttribute(\"data-manual\")) {\n _4.manual = true;\n }\n }\n function highlightAutomaticallyCallback() {\n if (!_4.manual) {\n _4.highlightAll();\n }\n }\n if (!_4.manual) {\n var readyState = document.readyState;\n if (readyState === \"loading\" || readyState === \"interactive\" && script && script.defer) {\n document.addEventListener(\"DOMContentLoaded\", highlightAutomaticallyCallback);\n } else {\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(highlightAutomaticallyCallback);\n } else {\n window.setTimeout(highlightAutomaticallyCallback, 16);\n }\n }\n }\n return _4;\n }(_self);\n if (typeof module2 !== \"undefined\" && module2.exports) {\n module2.exports = Prism2;\n }\n if (typeof global !== \"undefined\") {\n global.Prism = Prism2;\n }\n Prism2.languages.markup = {\n \"comment\": {\n pattern: //,\n greedy: true\n },\n \"prolog\": {\n pattern: /<\\?[\\s\\S]+?\\?>/,\n greedy: true\n },\n \"doctype\": {\n pattern: /\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|)*\\]\\s*)?>/i,\n greedy: true,\n inside: {\n \"internal-subset\": {\n pattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n lookbehind: true,\n greedy: true,\n inside: null\n },\n \"string\": {\n pattern: /\"[^\"]*\"|'[^']*'/,\n greedy: true\n },\n \"punctuation\": /^$|[[\\]]/,\n \"doctype-tag\": /^DOCTYPE/i,\n \"name\": /[^\\s<>'\"]+/\n }\n },\n \"cdata\": {\n pattern: //i,\n greedy: true\n },\n \"tag\": {\n pattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n greedy: true,\n inside: {\n \"tag\": {\n pattern: /^<\\/?[^\\s>\\/]+/,\n inside: {\n \"punctuation\": /^<\\/?/,\n \"namespace\": /^[^\\s>\\/:]+:/\n }\n },\n \"special-attr\": [],\n \"attr-value\": {\n pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n inside: {\n \"punctuation\": [\n {\n pattern: /^=/,\n alias: \"attr-equals\"\n },\n /\"|'/\n ]\n }\n },\n \"punctuation\": /\\/?>/,\n \"attr-name\": {\n pattern: /[^\\s>\\/]+/,\n inside: {\n \"namespace\": /^[^\\s>\\/:]+:/\n }\n }\n }\n },\n \"entity\": [\n {\n pattern: /&[\\da-z]{1,8};/i,\n alias: \"named-entity\"\n },\n /&#x?[\\da-f]{1,8};/i\n ]\n };\n Prism2.languages.markup[\"tag\"].inside[\"attr-value\"].inside[\"entity\"] = Prism2.languages.markup[\"entity\"];\n Prism2.languages.markup[\"doctype\"].inside[\"internal-subset\"].inside = Prism2.languages.markup;\n Prism2.hooks.add(\"wrap\", function(env2) {\n if (env2.type === \"entity\") {\n env2.attributes[\"title\"] = env2.content.replace(/&/, \"&\");\n }\n });\n Object.defineProperty(Prism2.languages.markup.tag, \"addInlined\", {\n value: function addInlined(tagName, lang) {\n var includedCdataInside = {};\n includedCdataInside[\"language-\" + lang] = {\n pattern: /(^$)/i,\n lookbehind: true,\n inside: Prism2.languages[lang]\n };\n includedCdataInside[\"cdata\"] = /^$/i;\n var inside = {\n \"included-cdata\": {\n pattern: //i,\n inside: includedCdataInside\n }\n };\n inside[\"language-\" + lang] = {\n pattern: /[\\s\\S]+/,\n inside: Prism2.languages[lang]\n };\n var def = {};\n def[tagName] = {\n pattern: RegExp(/(<__[^>]*>)(?:))*\\]\\]>|(?!)/.source.replace(/__/g, function() {\n return tagName;\n }), \"i\"),\n lookbehind: true,\n greedy: true,\n inside\n };\n Prism2.languages.insertBefore(\"markup\", \"cdata\", def);\n }\n });\n Object.defineProperty(Prism2.languages.markup.tag, \"addAttribute\", {\n value: function(attrName, lang) {\n Prism2.languages.markup.tag.inside[\"special-attr\"].push({\n pattern: RegExp(/(^|[\"'\\s])/.source + \"(?:\" + attrName + \")\" + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source, \"i\"),\n lookbehind: true,\n inside: {\n \"attr-name\": /^[^\\s=]+/,\n \"attr-value\": {\n pattern: /=[\\s\\S]+/,\n inside: {\n \"value\": {\n pattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n lookbehind: true,\n alias: [lang, \"language-\" + lang],\n inside: Prism2.languages[lang]\n },\n \"punctuation\": [\n {\n pattern: /^=/,\n alias: \"attr-equals\"\n },\n /\"|'/\n ]\n }\n }\n }\n });\n }\n });\n Prism2.languages.html = Prism2.languages.markup;\n Prism2.languages.mathml = Prism2.languages.markup;\n Prism2.languages.svg = Prism2.languages.markup;\n Prism2.languages.xml = Prism2.languages.extend(\"markup\", {});\n Prism2.languages.ssml = Prism2.languages.xml;\n Prism2.languages.atom = Prism2.languages.xml;\n Prism2.languages.rss = Prism2.languages.xml;\n (function(Prism3) {\n var string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n Prism3.languages.css = {\n \"comment\": /\\/\\*[\\s\\S]*?\\*\\//,\n \"atrule\": {\n pattern: /@[\\w-](?:[^;{\\s]|\\s+(?![\\s{]))*(?:;|(?=\\s*\\{))/,\n inside: {\n \"rule\": /^@[\\w-]+/,\n \"selector-function-argument\": {\n pattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n lookbehind: true,\n alias: \"selector\"\n },\n \"keyword\": {\n pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n lookbehind: true\n }\n }\n },\n \"url\": {\n pattern: RegExp(\"\\\\burl\\\\((?:\" + string.source + \"|\" + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + \")\\\\)\", \"i\"),\n greedy: true,\n inside: {\n \"function\": /^url/i,\n \"punctuation\": /^\\(|\\)$/,\n \"string\": {\n pattern: RegExp(\"^\" + string.source + \"$\"),\n alias: \"url\"\n }\n }\n },\n \"selector\": {\n pattern: RegExp(`(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"'\\\\s]|\\\\s+(?![\\\\s{])|` + string.source + \")*(?=\\\\s*\\\\{)\"),\n lookbehind: true\n },\n \"string\": {\n pattern: string,\n greedy: true\n },\n \"property\": {\n pattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n lookbehind: true\n },\n \"important\": /!important\\b/i,\n \"function\": {\n pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n lookbehind: true\n },\n \"punctuation\": /[(){};:,]/\n };\n Prism3.languages.css[\"atrule\"].inside.rest = Prism3.languages.css;\n var markup = Prism3.languages.markup;\n if (markup) {\n markup.tag.addInlined(\"style\", \"css\");\n markup.tag.addAttribute(\"style\", \"css\");\n }\n })(Prism2);\n Prism2.languages.clike = {\n \"comment\": [\n {\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n \"string\": {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n \"class-name\": {\n pattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n lookbehind: true,\n inside: {\n \"punctuation\": /[.\\\\]/\n }\n },\n \"keyword\": /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n \"boolean\": /\\b(?:false|true)\\b/,\n \"function\": /\\b\\w+(?=\\()/,\n \"number\": /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n \"operator\": /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n \"punctuation\": /[{}[\\];(),.:]/\n };\n Prism2.languages.javascript = Prism2.languages.extend(\"clike\", {\n \"class-name\": [\n Prism2.languages.clike[\"class-name\"],\n {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n lookbehind: true\n }\n ],\n \"keyword\": [\n {\n pattern: /((?:^|\\})\\s*)catch\\b/,\n lookbehind: true\n },\n {\n pattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n lookbehind: true\n }\n ],\n \"function\": /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n \"number\": {\n pattern: RegExp(/(^|[^\\w$])/.source + \"(?:\" + (/NaN|Infinity/.source + \"|\" + /0[bB][01]+(?:_[01]+)*n?/.source + \"|\" + /0[oO][0-7]+(?:_[0-7]+)*n?/.source + \"|\" + /0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source + \"|\" + /\\d+(?:_\\d+)*n/.source + \"|\" + /(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source) + \")\" + /(?![\\w$])/.source),\n lookbehind: true\n },\n \"operator\": /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n });\n Prism2.languages.javascript[\"class-name\"][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n Prism2.languages.insertBefore(\"javascript\", \"keyword\", {\n \"regex\": {\n pattern: RegExp(/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source + /\\//.source + \"(?:\" + /(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source + \"|\" + /(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source + \")\" + /(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n \"regex-source\": {\n pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n lookbehind: true,\n alias: \"language-regex\",\n inside: Prism2.languages.regex\n },\n \"regex-delimiter\": /^\\/|\\/$/,\n \"regex-flags\": /^[a-z]+$/\n }\n },\n \"function-variable\": {\n pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n alias: \"function\"\n },\n \"parameter\": [\n {\n pattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n lookbehind: true,\n inside: Prism2.languages.javascript\n },\n {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n lookbehind: true,\n inside: Prism2.languages.javascript\n },\n {\n pattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n lookbehind: true,\n inside: Prism2.languages.javascript\n },\n {\n pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n lookbehind: true,\n inside: Prism2.languages.javascript\n }\n ],\n \"constant\": /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n });\n Prism2.languages.insertBefore(\"javascript\", \"string\", {\n \"hashbang\": {\n pattern: /^#!.*/,\n greedy: true,\n alias: \"comment\"\n },\n \"template-string\": {\n pattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n greedy: true,\n inside: {\n \"template-punctuation\": {\n pattern: /^`|`$/,\n alias: \"string\"\n },\n \"interpolation\": {\n pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n lookbehind: true,\n inside: {\n \"interpolation-punctuation\": {\n pattern: /^\\$\\{|\\}$/,\n alias: \"punctuation\"\n },\n rest: Prism2.languages.javascript\n }\n },\n \"string\": /[\\s\\S]+/\n }\n },\n \"string-property\": {\n pattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n lookbehind: true,\n greedy: true,\n alias: \"property\"\n }\n });\n Prism2.languages.insertBefore(\"javascript\", \"operator\", {\n \"literal-property\": {\n pattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n lookbehind: true,\n alias: \"property\"\n }\n });\n if (Prism2.languages.markup) {\n Prism2.languages.markup.tag.addInlined(\"script\", \"javascript\");\n Prism2.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source, \"javascript\");\n }\n Prism2.languages.js = Prism2.languages.javascript;\n (function() {\n if (typeof Prism2 === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n if (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n var LOADING_MESSAGE = \"Loading\\u2026\";\n var FAILURE_MESSAGE = function(status, message) {\n return \"\\u2716 Error \" + status + \" while fetching file: \" + message;\n };\n var FAILURE_EMPTY_MESSAGE = \"\\u2716 Error: File does not exist or is empty\";\n var EXTENSIONS = {\n \"js\": \"javascript\",\n \"py\": \"python\",\n \"rb\": \"ruby\",\n \"ps1\": \"powershell\",\n \"psm1\": \"powershell\",\n \"sh\": \"bash\",\n \"bat\": \"batch\",\n \"h\": \"c\",\n \"tex\": \"latex\"\n };\n var STATUS_ATTR = \"data-src-status\";\n var STATUS_LOADING = \"loading\";\n var STATUS_LOADED = \"loaded\";\n var STATUS_FAILED = \"failed\";\n var SELECTOR = \"pre[data-src]:not([\" + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"]):not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n function loadFile(src, success, error) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", src, true);\n xhr.onreadystatechange = function() {\n if (xhr.readyState == 4) {\n if (xhr.status < 400 && xhr.responseText) {\n success(xhr.responseText);\n } else {\n if (xhr.status >= 400) {\n error(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n } else {\n error(FAILURE_EMPTY_MESSAGE);\n }\n }\n }\n };\n xhr.send(null);\n }\n function parseRange(range) {\n var m2 = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || \"\");\n if (m2) {\n var start3 = Number(m2[1]);\n var comma = m2[2];\n var end3 = m2[3];\n if (!comma) {\n return [start3, start3];\n }\n if (!end3) {\n return [start3, void 0];\n }\n return [start3, Number(end3)];\n }\n return void 0;\n }\n Prism2.hooks.add(\"before-highlightall\", function(env2) {\n env2.selector += \", \" + SELECTOR;\n });\n Prism2.hooks.add(\"before-sanity-check\", function(env2) {\n var pre = env2.element;\n if (pre.matches(SELECTOR)) {\n env2.code = \"\";\n pre.setAttribute(STATUS_ATTR, STATUS_LOADING);\n var code = pre.appendChild(document.createElement(\"CODE\"));\n code.textContent = LOADING_MESSAGE;\n var src = pre.getAttribute(\"data-src\");\n var language = env2.language;\n if (language === \"none\") {\n var extension = (/\\.(\\w+)$/.exec(src) || [, \"none\"])[1];\n language = EXTENSIONS[extension] || extension;\n }\n Prism2.util.setLanguage(code, language);\n Prism2.util.setLanguage(pre, language);\n var autoloader = Prism2.plugins.autoloader;\n if (autoloader) {\n autoloader.loadLanguages(language);\n }\n loadFile(src, function(text5) {\n pre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n var range = parseRange(pre.getAttribute(\"data-range\"));\n if (range) {\n var lines = text5.split(/\\r\\n?|\\n/g);\n var start3 = range[0];\n var end3 = range[1] == null ? lines.length : range[1];\n if (start3 < 0) {\n start3 += lines.length;\n }\n start3 = Math.max(0, Math.min(start3 - 1, lines.length));\n if (end3 < 0) {\n end3 += lines.length;\n }\n end3 = Math.max(0, Math.min(end3, lines.length));\n text5 = lines.slice(start3, end3).join(\"\\n\");\n if (!pre.hasAttribute(\"data-start\")) {\n pre.setAttribute(\"data-start\", String(start3 + 1));\n }\n }\n code.textContent = text5;\n Prism2.highlightElement(code);\n }, function(error) {\n pre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n code.textContent = error;\n });\n }\n });\n Prism2.plugins.fileHighlight = {\n highlight: function highlight(container) {\n var elements = (container || document).querySelectorAll(SELECTOR);\n for (var i3 = 0, element4; element4 = elements[i3++]; ) {\n Prism2.highlightElement(element4);\n }\n }\n };\n var logged = false;\n Prism2.fileHighlight = function() {\n if (!logged) {\n console.warn(\"Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.\");\n logged = true;\n }\n Prism2.plugins.fileHighlight.highlight.apply(this, arguments);\n };\n })();\n }\n});\n\n// node_modules/react-is/cjs/react-is.development.js\nvar require_react_is_development = __commonJS({\n \"node_modules/react-is/cjs/react-is.development.js\"(exports2) {\n \"use strict\";\n if (true) {\n (function() {\n \"use strict\";\n var hasSymbol = typeof Symbol === \"function\" && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for(\"react.element\") : 60103;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for(\"react.portal\") : 60106;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for(\"react.fragment\") : 60107;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.strict_mode\") : 60108;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for(\"react.profiler\") : 60114;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for(\"react.provider\") : 60109;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for(\"react.context\") : 60110;\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for(\"react.async_mode\") : 60111;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.concurrent_mode\") : 60111;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for(\"react.forward_ref\") : 60112;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for(\"react.suspense\") : 60113;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for(\"react.suspense_list\") : 60120;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for(\"react.memo\") : 60115;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for(\"react.lazy\") : 60116;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for(\"react.block\") : 60121;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for(\"react.fundamental\") : 60117;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for(\"react.responder\") : 60118;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for(\"react.scope\") : 60119;\n function isValidElementType(type) {\n return typeof type === \"string\" || typeof type === \"function\" || type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === \"object\" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (typeof object === \"object\" && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return void 0;\n }\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element4 = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment2 = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false;\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n console[\"warn\"](\"The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.\");\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement6(object) {\n return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef2(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n exports2.AsyncMode = AsyncMode;\n exports2.ConcurrentMode = ConcurrentMode;\n exports2.ContextConsumer = ContextConsumer;\n exports2.ContextProvider = ContextProvider;\n exports2.Element = Element4;\n exports2.ForwardRef = ForwardRef;\n exports2.Fragment = Fragment2;\n exports2.Lazy = Lazy;\n exports2.Memo = Memo;\n exports2.Portal = Portal;\n exports2.Profiler = Profiler;\n exports2.StrictMode = StrictMode;\n exports2.Suspense = Suspense;\n exports2.isAsyncMode = isAsyncMode;\n exports2.isConcurrentMode = isConcurrentMode;\n exports2.isContextConsumer = isContextConsumer;\n exports2.isContextProvider = isContextProvider;\n exports2.isElement = isElement6;\n exports2.isForwardRef = isForwardRef2;\n exports2.isFragment = isFragment;\n exports2.isLazy = isLazy;\n exports2.isMemo = isMemo;\n exports2.isPortal = isPortal;\n exports2.isProfiler = isProfiler;\n exports2.isStrictMode = isStrictMode;\n exports2.isSuspense = isSuspense;\n exports2.isValidElementType = isValidElementType;\n exports2.typeOf = typeOf;\n })();\n }\n }\n});\n\n// node_modules/react-is/index.js\nvar require_react_is = __commonJS({\n \"node_modules/react-is/index.js\"(exports2, module2) {\n \"use strict\";\n if (false) {\n module2.exports = null;\n } else {\n module2.exports = require_react_is_development();\n }\n }\n});\n\n// node_modules/object-assign/index.js\nvar require_object_assign = __commonJS({\n \"node_modules/object-assign/index.js\"(exports2, module2) {\n \"use strict\";\n var getOwnPropertySymbols2 = Object.getOwnPropertySymbols;\n var hasOwnProperty6 = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n function toObject(val) {\n if (val === null || val === void 0) {\n throw new TypeError(\"Object.assign cannot be called with null or undefined\");\n }\n return Object(val);\n }\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n var test1 = new String(\"abc\");\n test1[5] = \"de\";\n if (Object.getOwnPropertyNames(test1)[0] === \"5\") {\n return false;\n }\n var test2 = {};\n for (var i3 = 0; i3 < 10; i3++) {\n test2[\"_\" + String.fromCharCode(i3)] = i3;\n }\n var order22 = Object.getOwnPropertyNames(test2).map(function(n5) {\n return test2[n5];\n });\n if (order22.join(\"\") !== \"0123456789\") {\n return false;\n }\n var test3 = {};\n \"abcdefghijklmnopqrst\".split(\"\").forEach(function(letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join(\"\") !== \"abcdefghijklmnopqrst\") {\n return false;\n }\n return true;\n } catch (err) {\n return false;\n }\n }\n module2.exports = shouldUseNative() ? Object.assign : function(target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s3 = 1; s3 < arguments.length; s3++) {\n from = Object(arguments[s3]);\n for (var key in from) {\n if (hasOwnProperty6.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols2) {\n symbols = getOwnPropertySymbols2(from);\n for (var i3 = 0; i3 < symbols.length; i3++) {\n if (propIsEnumerable.call(from, symbols[i3])) {\n to[symbols[i3]] = from[symbols[i3]];\n }\n }\n }\n }\n return to;\n };\n }\n});\n\n// node_modules/prop-types/lib/ReactPropTypesSecret.js\nvar require_ReactPropTypesSecret = __commonJS({\n \"node_modules/prop-types/lib/ReactPropTypesSecret.js\"(exports2, module2) {\n \"use strict\";\n var ReactPropTypesSecret = \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";\n module2.exports = ReactPropTypesSecret;\n }\n});\n\n// node_modules/prop-types/lib/has.js\nvar require_has = __commonJS({\n \"node_modules/prop-types/lib/has.js\"(exports2, module2) {\n module2.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n }\n});\n\n// node_modules/prop-types/checkPropTypes.js\nvar require_checkPropTypes = __commonJS({\n \"node_modules/prop-types/checkPropTypes.js\"(exports2, module2) {\n \"use strict\";\n var printWarning = function() {\n };\n if (true) {\n ReactPropTypesSecret = require_ReactPropTypesSecret();\n loggedTypeFailures = {};\n has = require_has();\n printWarning = function(text5) {\n var message = \"Warning: \" + text5;\n if (typeof console !== \"undefined\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (x4) {\n }\n };\n }\n var ReactPropTypesSecret;\n var loggedTypeFailures;\n var has;\n function checkPropTypes(typeSpecs, values2, location, componentName, getStack) {\n if (true) {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n try {\n if (typeof typeSpecs[typeSpecName] !== \"function\") {\n var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");\n err.name = \"Invariant Violation\";\n throw err;\n }\n error = typeSpecs[typeSpecName](values2, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning((componentName || \"React class\") + \": type specification of \" + location + \" `\" + typeSpecName + \"` is invalid; the type checker function must return `null` or an `Error` but returned a \" + typeof error + \". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\");\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n loggedTypeFailures[error.message] = true;\n var stack = getStack ? getStack() : \"\";\n printWarning(\"Failed \" + location + \" type: \" + error.message + (stack != null ? stack : \"\"));\n }\n }\n }\n }\n }\n checkPropTypes.resetWarningCache = function() {\n if (true) {\n loggedTypeFailures = {};\n }\n };\n module2.exports = checkPropTypes;\n }\n});\n\n// node_modules/prop-types/factoryWithTypeCheckers.js\nvar require_factoryWithTypeCheckers = __commonJS({\n \"node_modules/prop-types/factoryWithTypeCheckers.js\"(exports2, module2) {\n \"use strict\";\n var ReactIs = require_react_is();\n var assign = require_object_assign();\n var ReactPropTypesSecret = require_ReactPropTypesSecret();\n var has = require_has();\n var checkPropTypes = require_checkPropTypes();\n var printWarning = function() {\n };\n if (true) {\n printWarning = function(text5) {\n var message = \"Warning: \" + text5;\n if (typeof console !== \"undefined\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (x4) {\n }\n };\n }\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n module2.exports = function(isValidElement2, throwOnDirectAccess) {\n var ITERATOR_SYMBOL = typeof Symbol === \"function\" && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = \"@@iterator\";\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === \"function\") {\n return iteratorFn;\n }\n }\n var ANONYMOUS = \"<>\";\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker(\"array\"),\n bigint: createPrimitiveTypeChecker(\"bigint\"),\n bool: createPrimitiveTypeChecker(\"boolean\"),\n func: createPrimitiveTypeChecker(\"function\"),\n number: createPrimitiveTypeChecker(\"number\"),\n object: createPrimitiveTypeChecker(\"object\"),\n string: createPrimitiveTypeChecker(\"string\"),\n symbol: createPrimitiveTypeChecker(\"symbol\"),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n function is2(x4, y3) {\n if (x4 === y3) {\n return x4 !== 0 || 1 / x4 === 1 / y3;\n } else {\n return x4 !== x4 && y3 !== y3;\n }\n }\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === \"object\" ? data : {};\n this.stack = \"\";\n }\n PropTypeError.prototype = Error.prototype;\n function createChainableTypeChecker(validate) {\n if (true) {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n var err = new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types\");\n err.name = \"Invariant Violation\";\n throw err;\n } else if (typeof console !== \"undefined\") {\n var cacheKey = componentName + \":\" + propName;\n if (!manualPropTypeCallCache[cacheKey] && manualPropTypeWarningCount < 3) {\n printWarning(\"You are manually calling a React.PropTypes validation function for the `\" + propFullName + \"` prop on `\" + componentName + \"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.\");\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError(\"The \" + location + \" `\" + propFullName + \"` is marked as required \" + (\"in `\" + componentName + \"`, but its value is `null`.\"));\n }\n return new PropTypeError(\"The \" + location + \" `\" + propFullName + \"` is marked as required in \" + (\"`\" + componentName + \"`, but its value is `undefined`.\"));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n var preciseType = getPreciseType(propValue);\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type \" + (\"`\" + preciseType + \"` supplied to `\" + componentName + \"`, expected \") + (\"`\" + expectedType + \"`.\"), { expectedType });\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== \"function\") {\n return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside arrayOf.\");\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected an array.\"));\n }\n for (var i3 = 0; i3 < propValue.length; i3++) {\n var error = typeChecker(propValue, i3, componentName, location, propFullName + \"[\" + i3 + \"]\", ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement2(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected a single ReactElement.\"));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected a single ReactElement type.\"));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type \" + (\"`\" + actualClassName + \"` supplied to `\" + componentName + \"`, expected \") + (\"instance of `\" + expectedClassName + \"`.\"));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (true) {\n if (arguments.length > 1) {\n printWarning(\"Invalid arguments supplied to oneOf, expected an array, got \" + arguments.length + \" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).\");\n } else {\n printWarning(\"Invalid argument supplied to oneOf, expected an array.\");\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i3 = 0; i3 < expectedValues.length; i3++) {\n if (is2(propValue, expectedValues[i3])) {\n return null;\n }\n }\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === \"symbol\") {\n return String(value);\n }\n return value;\n });\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of value `\" + String(propValue) + \"` \" + (\"supplied to `\" + componentName + \"`, expected one of \" + valuesString + \".\"));\n }\n return createChainableTypeChecker(validate);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== \"function\") {\n return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside objectOf.\");\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== \"object\") {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected an object.\"));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n true ? printWarning(\"Invalid argument supplied to oneOfType, expected an instance of array.\") : void 0;\n return emptyFunctionThatReturnsNull;\n }\n for (var i3 = 0; i3 < arrayOfTypeCheckers.length; i3++) {\n var checker = arrayOfTypeCheckers[i3];\n if (typeof checker !== \"function\") {\n printWarning(\"Invalid argument supplied to oneOfType. Expected an array of check functions, but received \" + getPostfixForTypeWarning(checker) + \" at index \" + i3 + \".\");\n return emptyFunctionThatReturnsNull;\n }\n }\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i4 = 0; i4 < arrayOfTypeCheckers.length; i4++) {\n var checker2 = arrayOfTypeCheckers[i4];\n var checkerResult = checker2(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, \"expectedType\")) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = expectedTypes.length > 0 ? \", expected one of type [\" + expectedTypes.join(\", \") + \"]\" : \"\";\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to \" + (\"`\" + componentName + \"`\" + expectedTypesMessage + \".\"));\n }\n return createChainableTypeChecker(validate);\n }\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to \" + (\"`\" + componentName + \"`, expected a ReactNode.\"));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError((componentName || \"React class\") + \": \" + location + \" type `\" + propFullName + \".\" + key + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + type + \"`.\");\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== \"object\") {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected `object`.\"));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== \"function\") {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== \"object\") {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected `object`.\"));\n }\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== \"function\") {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` key `\" + key + \"` supplied to `\" + componentName + \"`.\\nBad object: \" + JSON.stringify(props[propName], null, \" \") + \"\\nValid keys: \" + JSON.stringify(Object.keys(shapeTypes), null, \" \"));\n }\n var error = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case \"number\":\n case \"string\":\n case \"undefined\":\n return true;\n case \"boolean\":\n return !propValue;\n case \"object\":\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement2(propValue)) {\n return true;\n }\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n return true;\n default:\n return false;\n }\n }\n function isSymbol3(propType, propValue) {\n if (propType === \"symbol\") {\n return true;\n }\n if (!propValue) {\n return false;\n }\n if (propValue[\"@@toStringTag\"] === \"Symbol\") {\n return true;\n }\n if (typeof Symbol === \"function\" && propValue instanceof Symbol) {\n return true;\n }\n return false;\n }\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return \"array\";\n }\n if (propValue instanceof RegExp) {\n return \"object\";\n }\n if (isSymbol3(propType, propValue)) {\n return \"symbol\";\n }\n return propType;\n }\n function getPreciseType(propValue) {\n if (typeof propValue === \"undefined\" || propValue === null) {\n return \"\" + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === \"object\") {\n if (propValue instanceof Date) {\n return \"date\";\n } else if (propValue instanceof RegExp) {\n return \"regexp\";\n }\n }\n return propType;\n }\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case \"array\":\n case \"object\":\n return \"an \" + type;\n case \"boolean\":\n case \"date\":\n case \"regexp\":\n return \"a \" + type;\n default:\n return type;\n }\n }\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n }\n});\n\n// node_modules/prop-types/index.js\nvar require_prop_types = __commonJS({\n \"node_modules/prop-types/index.js\"(exports2, module2) {\n if (true) {\n ReactIs = require_react_is();\n throwOnDirectAccess = true;\n module2.exports = require_factoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess);\n } else {\n module2.exports = null();\n }\n var ReactIs;\n var throwOnDirectAccess;\n }\n});\n\n// node_modules/downshift/node_modules/react-is/cjs/react-is.development.js\nvar require_react_is_development2 = __commonJS({\n \"node_modules/downshift/node_modules/react-is/cjs/react-is.development.js\"(exports2) {\n \"use strict\";\n if (true) {\n (function() {\n \"use strict\";\n var REACT_ELEMENT_TYPE = 60103;\n var REACT_PORTAL_TYPE = 60106;\n var REACT_FRAGMENT_TYPE = 60107;\n var REACT_STRICT_MODE_TYPE = 60108;\n var REACT_PROFILER_TYPE = 60114;\n var REACT_PROVIDER_TYPE = 60109;\n var REACT_CONTEXT_TYPE = 60110;\n var REACT_FORWARD_REF_TYPE = 60112;\n var REACT_SUSPENSE_TYPE = 60113;\n var REACT_SUSPENSE_LIST_TYPE = 60120;\n var REACT_MEMO_TYPE = 60115;\n var REACT_LAZY_TYPE = 60116;\n var REACT_BLOCK_TYPE = 60121;\n var REACT_SERVER_BLOCK_TYPE = 60122;\n var REACT_FUNDAMENTAL_TYPE = 60117;\n var REACT_SCOPE_TYPE = 60119;\n var REACT_OPAQUE_ID_TYPE = 60128;\n var REACT_DEBUG_TRACING_MODE_TYPE = 60129;\n var REACT_OFFSCREEN_TYPE = 60130;\n var REACT_LEGACY_HIDDEN_TYPE = 60131;\n if (typeof Symbol === \"function\" && Symbol.for) {\n var symbolFor = Symbol.for;\n REACT_ELEMENT_TYPE = symbolFor(\"react.element\");\n REACT_PORTAL_TYPE = symbolFor(\"react.portal\");\n REACT_FRAGMENT_TYPE = symbolFor(\"react.fragment\");\n REACT_STRICT_MODE_TYPE = symbolFor(\"react.strict_mode\");\n REACT_PROFILER_TYPE = symbolFor(\"react.profiler\");\n REACT_PROVIDER_TYPE = symbolFor(\"react.provider\");\n REACT_CONTEXT_TYPE = symbolFor(\"react.context\");\n REACT_FORWARD_REF_TYPE = symbolFor(\"react.forward_ref\");\n REACT_SUSPENSE_TYPE = symbolFor(\"react.suspense\");\n REACT_SUSPENSE_LIST_TYPE = symbolFor(\"react.suspense_list\");\n REACT_MEMO_TYPE = symbolFor(\"react.memo\");\n REACT_LAZY_TYPE = symbolFor(\"react.lazy\");\n REACT_BLOCK_TYPE = symbolFor(\"react.block\");\n REACT_SERVER_BLOCK_TYPE = symbolFor(\"react.server.block\");\n REACT_FUNDAMENTAL_TYPE = symbolFor(\"react.fundamental\");\n REACT_SCOPE_TYPE = symbolFor(\"react.scope\");\n REACT_OPAQUE_ID_TYPE = symbolFor(\"react.opaque.id\");\n REACT_DEBUG_TRACING_MODE_TYPE = symbolFor(\"react.debug_trace_mode\");\n REACT_OFFSCREEN_TYPE = symbolFor(\"react.offscreen\");\n REACT_LEGACY_HIDDEN_TYPE = symbolFor(\"react.legacy_hidden\");\n }\n var enableScopeAPI = false;\n function isValidElementType(type) {\n if (typeof type === \"string\" || typeof type === \"function\") {\n return true;\n }\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || type === REACT_DEBUG_TRACING_MODE_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI) {\n return true;\n }\n if (typeof type === \"object\" && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) {\n return true;\n }\n }\n return false;\n }\n function typeOf(object) {\n if (typeof object === \"object\" && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return void 0;\n }\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element4 = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment2 = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false;\n var hasWarnedAboutDeprecatedIsConcurrentMode = false;\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n console[\"warn\"](\"The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 18+.\");\n }\n }\n return false;\n }\n function isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true;\n console[\"warn\"](\"The ReactIs.isConcurrentMode() alias has been deprecated, and will be removed in React 18+.\");\n }\n }\n return false;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement6(object) {\n return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef2(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n exports2.ContextConsumer = ContextConsumer;\n exports2.ContextProvider = ContextProvider;\n exports2.Element = Element4;\n exports2.ForwardRef = ForwardRef;\n exports2.Fragment = Fragment2;\n exports2.Lazy = Lazy;\n exports2.Memo = Memo;\n exports2.Portal = Portal;\n exports2.Profiler = Profiler;\n exports2.StrictMode = StrictMode;\n exports2.Suspense = Suspense;\n exports2.isAsyncMode = isAsyncMode;\n exports2.isConcurrentMode = isConcurrentMode;\n exports2.isContextConsumer = isContextConsumer;\n exports2.isContextProvider = isContextProvider;\n exports2.isElement = isElement6;\n exports2.isForwardRef = isForwardRef2;\n exports2.isFragment = isFragment;\n exports2.isLazy = isLazy;\n exports2.isMemo = isMemo;\n exports2.isPortal = isPortal;\n exports2.isProfiler = isProfiler;\n exports2.isStrictMode = isStrictMode;\n exports2.isSuspense = isSuspense;\n exports2.isValidElementType = isValidElementType;\n exports2.typeOf = typeOf;\n })();\n }\n }\n});\n\n// node_modules/downshift/node_modules/react-is/index.js\nvar require_react_is2 = __commonJS({\n \"node_modules/downshift/node_modules/react-is/index.js\"(exports2, module2) {\n \"use strict\";\n if (false) {\n module2.exports = null;\n } else {\n module2.exports = require_react_is_development2();\n }\n }\n});\n\n// node_modules/downshift/node_modules/tslib/tslib.js\nvar require_tslib = __commonJS({\n \"node_modules/downshift/node_modules/tslib/tslib.js\"(exports2, module2) {\n var __extends4;\n var __assign4;\n var __rest2;\n var __decorate2;\n var __param2;\n var __metadata2;\n var __awaiter2;\n var __generator2;\n var __exportStar2;\n var __values2;\n var __read2;\n var __spread2;\n var __spreadArrays2;\n var __spreadArray2;\n var __await2;\n var __asyncGenerator2;\n var __asyncDelegator2;\n var __asyncValues2;\n var __makeTemplateObject2;\n var __importStar2;\n var __importDefault2;\n var __classPrivateFieldGet2;\n var __classPrivateFieldSet2;\n var __classPrivateFieldIn2;\n var __createBinding2;\n (function(factory) {\n var root5 = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\n if (typeof define === \"function\" && define.amd) {\n define(\"tslib\", [\"exports\"], function(exports3) {\n factory(createExporter(root5, createExporter(exports3)));\n });\n } else if (typeof module2 === \"object\" && typeof module2.exports === \"object\") {\n factory(createExporter(root5, createExporter(module2.exports)));\n } else {\n factory(createExporter(root5));\n }\n function createExporter(exports3, previous) {\n if (exports3 !== root5) {\n if (typeof Object.create === \"function\") {\n Object.defineProperty(exports3, \"__esModule\", { value: true });\n } else {\n exports3.__esModule = true;\n }\n }\n return function(id, v4) {\n return exports3[id] = previous ? previous(id, v4) : v4;\n };\n }\n })(function(exporter) {\n var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b4) {\n d3.__proto__ = b4;\n } || function(d3, b4) {\n for (var p4 in b4)\n if (Object.prototype.hasOwnProperty.call(b4, p4))\n d3[p4] = b4[p4];\n };\n __extends4 = function(d3, b4) {\n if (typeof b4 !== \"function\" && b4 !== null)\n throw new TypeError(\"Class extends value \" + String(b4) + \" is not a constructor or null\");\n extendStatics(d3, b4);\n function __() {\n this.constructor = d3;\n }\n d3.prototype = b4 === null ? Object.create(b4) : (__.prototype = b4.prototype, new __());\n };\n __assign4 = Object.assign || function(t4) {\n for (var s3, i3 = 1, n5 = arguments.length; i3 < n5; i3++) {\n s3 = arguments[i3];\n for (var p4 in s3)\n if (Object.prototype.hasOwnProperty.call(s3, p4))\n t4[p4] = s3[p4];\n }\n return t4;\n };\n __rest2 = function(s3, e2) {\n var t4 = {};\n for (var p4 in s3)\n if (Object.prototype.hasOwnProperty.call(s3, p4) && e2.indexOf(p4) < 0)\n t4[p4] = s3[p4];\n if (s3 != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i3 = 0, p4 = Object.getOwnPropertySymbols(s3); i3 < p4.length; i3++) {\n if (e2.indexOf(p4[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s3, p4[i3]))\n t4[p4[i3]] = s3[p4[i3]];\n }\n return t4;\n };\n __decorate2 = function(decorators, target, key, desc) {\n var c3 = arguments.length, r5 = c3 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d3;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r5 = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i3 = decorators.length - 1; i3 >= 0; i3--)\n if (d3 = decorators[i3])\n r5 = (c3 < 3 ? d3(r5) : c3 > 3 ? d3(target, key, r5) : d3(target, key)) || r5;\n return c3 > 3 && r5 && Object.defineProperty(target, key, r5), r5;\n };\n __param2 = function(paramIndex, decorator) {\n return function(target, key) {\n decorator(target, key, paramIndex);\n };\n };\n __metadata2 = function(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\")\n return Reflect.metadata(metadataKey, metadataValue);\n };\n __awaiter2 = function(thisArg, _arguments, P4, generator) {\n function adopt(value) {\n return value instanceof P4 ? value : new P4(function(resolve) {\n resolve(value);\n });\n }\n return new (P4 || (P4 = Promise))(function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e2) {\n reject(e2);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e2) {\n reject(e2);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\n __generator2 = function(thisArg, body) {\n var _4 = { label: 0, sent: function() {\n if (t4[0] & 1)\n throw t4[1];\n return t4[1];\n }, trys: [], ops: [] }, f3, y3, t4, g4;\n return g4 = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g4[Symbol.iterator] = function() {\n return this;\n }), g4;\n function verb(n5) {\n return function(v4) {\n return step([n5, v4]);\n };\n }\n function step(op) {\n if (f3)\n throw new TypeError(\"Generator is already executing.\");\n while (_4)\n try {\n if (f3 = 1, y3 && (t4 = op[0] & 2 ? y3[\"return\"] : op[0] ? y3[\"throw\"] || ((t4 = y3[\"return\"]) && t4.call(y3), 0) : y3.next) && !(t4 = t4.call(y3, op[1])).done)\n return t4;\n if (y3 = 0, t4)\n op = [op[0] & 2, t4.value];\n switch (op[0]) {\n case 0:\n case 1:\n t4 = op;\n break;\n case 4:\n _4.label++;\n return { value: op[1], done: false };\n case 5:\n _4.label++;\n y3 = op[1];\n op = [0];\n continue;\n case 7:\n op = _4.ops.pop();\n _4.trys.pop();\n continue;\n default:\n if (!(t4 = _4.trys, t4 = t4.length > 0 && t4[t4.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _4 = 0;\n continue;\n }\n if (op[0] === 3 && (!t4 || op[1] > t4[0] && op[1] < t4[3])) {\n _4.label = op[1];\n break;\n }\n if (op[0] === 6 && _4.label < t4[1]) {\n _4.label = t4[1];\n t4 = op;\n break;\n }\n if (t4 && _4.label < t4[2]) {\n _4.label = t4[2];\n _4.ops.push(op);\n break;\n }\n if (t4[2])\n _4.ops.pop();\n _4.trys.pop();\n continue;\n }\n op = body.call(thisArg, _4);\n } catch (e2) {\n op = [6, e2];\n y3 = 0;\n } finally {\n f3 = t4 = 0;\n }\n if (op[0] & 5)\n throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\n __exportStar2 = function(m2, o3) {\n for (var p4 in m2)\n if (p4 !== \"default\" && !Object.prototype.hasOwnProperty.call(o3, p4))\n __createBinding2(o3, m2, p4);\n };\n __createBinding2 = Object.create ? function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n var desc = Object.getOwnPropertyDescriptor(m2, k4);\n if (!desc || (\"get\" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() {\n return m2[k4];\n } };\n }\n Object.defineProperty(o3, k22, desc);\n } : function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n o3[k22] = m2[k4];\n };\n __values2 = function(o3) {\n var s3 = typeof Symbol === \"function\" && Symbol.iterator, m2 = s3 && o3[s3], i3 = 0;\n if (m2)\n return m2.call(o3);\n if (o3 && typeof o3.length === \"number\")\n return {\n next: function() {\n if (o3 && i3 >= o3.length)\n o3 = void 0;\n return { value: o3 && o3[i3++], done: !o3 };\n }\n };\n throw new TypeError(s3 ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n };\n __read2 = function(o3, n5) {\n var m2 = typeof Symbol === \"function\" && o3[Symbol.iterator];\n if (!m2)\n return o3;\n var i3 = m2.call(o3), r5, ar = [], e2;\n try {\n while ((n5 === void 0 || n5-- > 0) && !(r5 = i3.next()).done)\n ar.push(r5.value);\n } catch (error) {\n e2 = { error };\n } finally {\n try {\n if (r5 && !r5.done && (m2 = i3[\"return\"]))\n m2.call(i3);\n } finally {\n if (e2)\n throw e2.error;\n }\n }\n return ar;\n };\n __spread2 = function() {\n for (var ar = [], i3 = 0; i3 < arguments.length; i3++)\n ar = ar.concat(__read2(arguments[i3]));\n return ar;\n };\n __spreadArrays2 = function() {\n for (var s3 = 0, i3 = 0, il = arguments.length; i3 < il; i3++)\n s3 += arguments[i3].length;\n for (var r5 = Array(s3), k4 = 0, i3 = 0; i3 < il; i3++)\n for (var a5 = arguments[i3], j4 = 0, jl = a5.length; j4 < jl; j4++, k4++)\n r5[k4] = a5[j4];\n return r5;\n };\n __spreadArray2 = function(to, from, pack) {\n if (pack || arguments.length === 2)\n for (var i3 = 0, l3 = from.length, ar; i3 < l3; i3++) {\n if (ar || !(i3 in from)) {\n if (!ar)\n ar = Array.prototype.slice.call(from, 0, i3);\n ar[i3] = from[i3];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n };\n __await2 = function(v4) {\n return this instanceof __await2 ? (this.v = v4, this) : new __await2(v4);\n };\n __asyncGenerator2 = function(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator)\n throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g4 = generator.apply(thisArg, _arguments || []), i3, q4 = [];\n return i3 = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i3[Symbol.asyncIterator] = function() {\n return this;\n }, i3;\n function verb(n5) {\n if (g4[n5])\n i3[n5] = function(v4) {\n return new Promise(function(a5, b4) {\n q4.push([n5, v4, a5, b4]) > 1 || resume(n5, v4);\n });\n };\n }\n function resume(n5, v4) {\n try {\n step(g4[n5](v4));\n } catch (e2) {\n settle(q4[0][3], e2);\n }\n }\n function step(r5) {\n r5.value instanceof __await2 ? Promise.resolve(r5.value.v).then(fulfill, reject) : settle(q4[0][2], r5);\n }\n function fulfill(value) {\n resume(\"next\", value);\n }\n function reject(value) {\n resume(\"throw\", value);\n }\n function settle(f3, v4) {\n if (f3(v4), q4.shift(), q4.length)\n resume(q4[0][0], q4[0][1]);\n }\n };\n __asyncDelegator2 = function(o3) {\n var i3, p4;\n return i3 = {}, verb(\"next\"), verb(\"throw\", function(e2) {\n throw e2;\n }), verb(\"return\"), i3[Symbol.iterator] = function() {\n return this;\n }, i3;\n function verb(n5, f3) {\n i3[n5] = o3[n5] ? function(v4) {\n return (p4 = !p4) ? { value: __await2(o3[n5](v4)), done: n5 === \"return\" } : f3 ? f3(v4) : v4;\n } : f3;\n }\n };\n __asyncValues2 = function(o3) {\n if (!Symbol.asyncIterator)\n throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m2 = o3[Symbol.asyncIterator], i3;\n return m2 ? m2.call(o3) : (o3 = typeof __values2 === \"function\" ? __values2(o3) : o3[Symbol.iterator](), i3 = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i3[Symbol.asyncIterator] = function() {\n return this;\n }, i3);\n function verb(n5) {\n i3[n5] = o3[n5] && function(v4) {\n return new Promise(function(resolve, reject) {\n v4 = o3[n5](v4), settle(resolve, reject, v4.done, v4.value);\n });\n };\n }\n function settle(resolve, reject, d3, v4) {\n Promise.resolve(v4).then(function(v5) {\n resolve({ value: v5, done: d3 });\n }, reject);\n }\n };\n __makeTemplateObject2 = function(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", { value: raw });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n };\n var __setModuleDefault = Object.create ? function(o3, v4) {\n Object.defineProperty(o3, \"default\", { enumerable: true, value: v4 });\n } : function(o3, v4) {\n o3[\"default\"] = v4;\n };\n __importStar2 = function(mod) {\n if (mod && mod.__esModule)\n return mod;\n var result = {};\n if (mod != null) {\n for (var k4 in mod)\n if (k4 !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k4))\n __createBinding2(result, mod, k4);\n }\n __setModuleDefault(result, mod);\n return result;\n };\n __importDefault2 = function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n __classPrivateFieldGet2 = function(receiver, state, kind, f3) {\n if (kind === \"a\" && !f3)\n throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f3 : !state.has(receiver))\n throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f3 : kind === \"a\" ? f3.call(receiver) : f3 ? f3.value : state.get(receiver);\n };\n __classPrivateFieldSet2 = function(receiver, state, value, kind, f3) {\n if (kind === \"m\")\n throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f3)\n throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f3 : !state.has(receiver))\n throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f3.call(receiver, value) : f3 ? f3.value = value : state.set(receiver, value), value;\n };\n __classPrivateFieldIn2 = function(state, receiver) {\n if (receiver === null || typeof receiver !== \"object\" && typeof receiver !== \"function\")\n throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n };\n exporter(\"__extends\", __extends4);\n exporter(\"__assign\", __assign4);\n exporter(\"__rest\", __rest2);\n exporter(\"__decorate\", __decorate2);\n exporter(\"__param\", __param2);\n exporter(\"__metadata\", __metadata2);\n exporter(\"__awaiter\", __awaiter2);\n exporter(\"__generator\", __generator2);\n exporter(\"__exportStar\", __exportStar2);\n exporter(\"__createBinding\", __createBinding2);\n exporter(\"__values\", __values2);\n exporter(\"__read\", __read2);\n exporter(\"__spread\", __spread2);\n exporter(\"__spreadArrays\", __spreadArrays2);\n exporter(\"__spreadArray\", __spreadArray2);\n exporter(\"__await\", __await2);\n exporter(\"__asyncGenerator\", __asyncGenerator2);\n exporter(\"__asyncDelegator\", __asyncDelegator2);\n exporter(\"__asyncValues\", __asyncValues2);\n exporter(\"__makeTemplateObject\", __makeTemplateObject2);\n exporter(\"__importStar\", __importStar2);\n exporter(\"__importDefault\", __importDefault2);\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet2);\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet2);\n exporter(\"__classPrivateFieldIn\", __classPrivateFieldIn2);\n });\n }\n});\n\n// node_modules/cheerio/node_modules/tslib/tslib.js\nvar require_tslib2 = __commonJS({\n \"node_modules/cheerio/node_modules/tslib/tslib.js\"(exports2, module2) {\n var __extends4;\n var __assign4;\n var __rest2;\n var __decorate2;\n var __param2;\n var __metadata2;\n var __awaiter2;\n var __generator2;\n var __exportStar2;\n var __values2;\n var __read2;\n var __spread2;\n var __spreadArrays2;\n var __spreadArray2;\n var __await2;\n var __asyncGenerator2;\n var __asyncDelegator2;\n var __asyncValues2;\n var __makeTemplateObject2;\n var __importStar2;\n var __importDefault2;\n var __classPrivateFieldGet2;\n var __classPrivateFieldSet2;\n var __classPrivateFieldIn2;\n var __createBinding2;\n (function(factory) {\n var root5 = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\n if (typeof define === \"function\" && define.amd) {\n define(\"tslib\", [\"exports\"], function(exports3) {\n factory(createExporter(root5, createExporter(exports3)));\n });\n } else if (typeof module2 === \"object\" && typeof module2.exports === \"object\") {\n factory(createExporter(root5, createExporter(module2.exports)));\n } else {\n factory(createExporter(root5));\n }\n function createExporter(exports3, previous) {\n if (exports3 !== root5) {\n if (typeof Object.create === \"function\") {\n Object.defineProperty(exports3, \"__esModule\", { value: true });\n } else {\n exports3.__esModule = true;\n }\n }\n return function(id, v4) {\n return exports3[id] = previous ? previous(id, v4) : v4;\n };\n }\n })(function(exporter) {\n var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b4) {\n d3.__proto__ = b4;\n } || function(d3, b4) {\n for (var p4 in b4)\n if (Object.prototype.hasOwnProperty.call(b4, p4))\n d3[p4] = b4[p4];\n };\n __extends4 = function(d3, b4) {\n if (typeof b4 !== \"function\" && b4 !== null)\n throw new TypeError(\"Class extends value \" + String(b4) + \" is not a constructor or null\");\n extendStatics(d3, b4);\n function __() {\n this.constructor = d3;\n }\n d3.prototype = b4 === null ? Object.create(b4) : (__.prototype = b4.prototype, new __());\n };\n __assign4 = Object.assign || function(t4) {\n for (var s3, i3 = 1, n5 = arguments.length; i3 < n5; i3++) {\n s3 = arguments[i3];\n for (var p4 in s3)\n if (Object.prototype.hasOwnProperty.call(s3, p4))\n t4[p4] = s3[p4];\n }\n return t4;\n };\n __rest2 = function(s3, e2) {\n var t4 = {};\n for (var p4 in s3)\n if (Object.prototype.hasOwnProperty.call(s3, p4) && e2.indexOf(p4) < 0)\n t4[p4] = s3[p4];\n if (s3 != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i3 = 0, p4 = Object.getOwnPropertySymbols(s3); i3 < p4.length; i3++) {\n if (e2.indexOf(p4[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s3, p4[i3]))\n t4[p4[i3]] = s3[p4[i3]];\n }\n return t4;\n };\n __decorate2 = function(decorators, target, key, desc) {\n var c3 = arguments.length, r5 = c3 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d3;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r5 = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i3 = decorators.length - 1; i3 >= 0; i3--)\n if (d3 = decorators[i3])\n r5 = (c3 < 3 ? d3(r5) : c3 > 3 ? d3(target, key, r5) : d3(target, key)) || r5;\n return c3 > 3 && r5 && Object.defineProperty(target, key, r5), r5;\n };\n __param2 = function(paramIndex, decorator) {\n return function(target, key) {\n decorator(target, key, paramIndex);\n };\n };\n __metadata2 = function(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\")\n return Reflect.metadata(metadataKey, metadataValue);\n };\n __awaiter2 = function(thisArg, _arguments, P4, generator) {\n function adopt(value) {\n return value instanceof P4 ? value : new P4(function(resolve) {\n resolve(value);\n });\n }\n return new (P4 || (P4 = Promise))(function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e2) {\n reject(e2);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e2) {\n reject(e2);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\n __generator2 = function(thisArg, body) {\n var _4 = { label: 0, sent: function() {\n if (t4[0] & 1)\n throw t4[1];\n return t4[1];\n }, trys: [], ops: [] }, f3, y3, t4, g4;\n return g4 = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g4[Symbol.iterator] = function() {\n return this;\n }), g4;\n function verb(n5) {\n return function(v4) {\n return step([n5, v4]);\n };\n }\n function step(op) {\n if (f3)\n throw new TypeError(\"Generator is already executing.\");\n while (_4)\n try {\n if (f3 = 1, y3 && (t4 = op[0] & 2 ? y3[\"return\"] : op[0] ? y3[\"throw\"] || ((t4 = y3[\"return\"]) && t4.call(y3), 0) : y3.next) && !(t4 = t4.call(y3, op[1])).done)\n return t4;\n if (y3 = 0, t4)\n op = [op[0] & 2, t4.value];\n switch (op[0]) {\n case 0:\n case 1:\n t4 = op;\n break;\n case 4:\n _4.label++;\n return { value: op[1], done: false };\n case 5:\n _4.label++;\n y3 = op[1];\n op = [0];\n continue;\n case 7:\n op = _4.ops.pop();\n _4.trys.pop();\n continue;\n default:\n if (!(t4 = _4.trys, t4 = t4.length > 0 && t4[t4.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _4 = 0;\n continue;\n }\n if (op[0] === 3 && (!t4 || op[1] > t4[0] && op[1] < t4[3])) {\n _4.label = op[1];\n break;\n }\n if (op[0] === 6 && _4.label < t4[1]) {\n _4.label = t4[1];\n t4 = op;\n break;\n }\n if (t4 && _4.label < t4[2]) {\n _4.label = t4[2];\n _4.ops.push(op);\n break;\n }\n if (t4[2])\n _4.ops.pop();\n _4.trys.pop();\n continue;\n }\n op = body.call(thisArg, _4);\n } catch (e2) {\n op = [6, e2];\n y3 = 0;\n } finally {\n f3 = t4 = 0;\n }\n if (op[0] & 5)\n throw op[1];\n return { value: op[0] ? op[1] : void 0, done: true };\n }\n };\n __exportStar2 = function(m2, o3) {\n for (var p4 in m2)\n if (p4 !== \"default\" && !Object.prototype.hasOwnProperty.call(o3, p4))\n __createBinding2(o3, m2, p4);\n };\n __createBinding2 = Object.create ? function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n var desc = Object.getOwnPropertyDescriptor(m2, k4);\n if (!desc || (\"get\" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() {\n return m2[k4];\n } };\n }\n Object.defineProperty(o3, k22, desc);\n } : function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n o3[k22] = m2[k4];\n };\n __values2 = function(o3) {\n var s3 = typeof Symbol === \"function\" && Symbol.iterator, m2 = s3 && o3[s3], i3 = 0;\n if (m2)\n return m2.call(o3);\n if (o3 && typeof o3.length === \"number\")\n return {\n next: function() {\n if (o3 && i3 >= o3.length)\n o3 = void 0;\n return { value: o3 && o3[i3++], done: !o3 };\n }\n };\n throw new TypeError(s3 ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n };\n __read2 = function(o3, n5) {\n var m2 = typeof Symbol === \"function\" && o3[Symbol.iterator];\n if (!m2)\n return o3;\n var i3 = m2.call(o3), r5, ar = [], e2;\n try {\n while ((n5 === void 0 || n5-- > 0) && !(r5 = i3.next()).done)\n ar.push(r5.value);\n } catch (error) {\n e2 = { error };\n } finally {\n try {\n if (r5 && !r5.done && (m2 = i3[\"return\"]))\n m2.call(i3);\n } finally {\n if (e2)\n throw e2.error;\n }\n }\n return ar;\n };\n __spread2 = function() {\n for (var ar = [], i3 = 0; i3 < arguments.length; i3++)\n ar = ar.concat(__read2(arguments[i3]));\n return ar;\n };\n __spreadArrays2 = function() {\n for (var s3 = 0, i3 = 0, il = arguments.length; i3 < il; i3++)\n s3 += arguments[i3].length;\n for (var r5 = Array(s3), k4 = 0, i3 = 0; i3 < il; i3++)\n for (var a5 = arguments[i3], j4 = 0, jl = a5.length; j4 < jl; j4++, k4++)\n r5[k4] = a5[j4];\n return r5;\n };\n __spreadArray2 = function(to, from, pack) {\n if (pack || arguments.length === 2)\n for (var i3 = 0, l3 = from.length, ar; i3 < l3; i3++) {\n if (ar || !(i3 in from)) {\n if (!ar)\n ar = Array.prototype.slice.call(from, 0, i3);\n ar[i3] = from[i3];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n };\n __await2 = function(v4) {\n return this instanceof __await2 ? (this.v = v4, this) : new __await2(v4);\n };\n __asyncGenerator2 = function(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator)\n throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g4 = generator.apply(thisArg, _arguments || []), i3, q4 = [];\n return i3 = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i3[Symbol.asyncIterator] = function() {\n return this;\n }, i3;\n function verb(n5) {\n if (g4[n5])\n i3[n5] = function(v4) {\n return new Promise(function(a5, b4) {\n q4.push([n5, v4, a5, b4]) > 1 || resume(n5, v4);\n });\n };\n }\n function resume(n5, v4) {\n try {\n step(g4[n5](v4));\n } catch (e2) {\n settle(q4[0][3], e2);\n }\n }\n function step(r5) {\n r5.value instanceof __await2 ? Promise.resolve(r5.value.v).then(fulfill, reject) : settle(q4[0][2], r5);\n }\n function fulfill(value) {\n resume(\"next\", value);\n }\n function reject(value) {\n resume(\"throw\", value);\n }\n function settle(f3, v4) {\n if (f3(v4), q4.shift(), q4.length)\n resume(q4[0][0], q4[0][1]);\n }\n };\n __asyncDelegator2 = function(o3) {\n var i3, p4;\n return i3 = {}, verb(\"next\"), verb(\"throw\", function(e2) {\n throw e2;\n }), verb(\"return\"), i3[Symbol.iterator] = function() {\n return this;\n }, i3;\n function verb(n5, f3) {\n i3[n5] = o3[n5] ? function(v4) {\n return (p4 = !p4) ? { value: __await2(o3[n5](v4)), done: n5 === \"return\" } : f3 ? f3(v4) : v4;\n } : f3;\n }\n };\n __asyncValues2 = function(o3) {\n if (!Symbol.asyncIterator)\n throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m2 = o3[Symbol.asyncIterator], i3;\n return m2 ? m2.call(o3) : (o3 = typeof __values2 === \"function\" ? __values2(o3) : o3[Symbol.iterator](), i3 = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i3[Symbol.asyncIterator] = function() {\n return this;\n }, i3);\n function verb(n5) {\n i3[n5] = o3[n5] && function(v4) {\n return new Promise(function(resolve, reject) {\n v4 = o3[n5](v4), settle(resolve, reject, v4.done, v4.value);\n });\n };\n }\n function settle(resolve, reject, d3, v4) {\n Promise.resolve(v4).then(function(v5) {\n resolve({ value: v5, done: d3 });\n }, reject);\n }\n };\n __makeTemplateObject2 = function(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", { value: raw });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n };\n var __setModuleDefault = Object.create ? function(o3, v4) {\n Object.defineProperty(o3, \"default\", { enumerable: true, value: v4 });\n } : function(o3, v4) {\n o3[\"default\"] = v4;\n };\n __importStar2 = function(mod) {\n if (mod && mod.__esModule)\n return mod;\n var result = {};\n if (mod != null) {\n for (var k4 in mod)\n if (k4 !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k4))\n __createBinding2(result, mod, k4);\n }\n __setModuleDefault(result, mod);\n return result;\n };\n __importDefault2 = function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n __classPrivateFieldGet2 = function(receiver, state, kind, f3) {\n if (kind === \"a\" && !f3)\n throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f3 : !state.has(receiver))\n throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f3 : kind === \"a\" ? f3.call(receiver) : f3 ? f3.value : state.get(receiver);\n };\n __classPrivateFieldSet2 = function(receiver, state, value, kind, f3) {\n if (kind === \"m\")\n throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f3)\n throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f3 : !state.has(receiver))\n throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f3.call(receiver, value) : f3 ? f3.value = value : state.set(receiver, value), value;\n };\n __classPrivateFieldIn2 = function(state, receiver) {\n if (receiver === null || typeof receiver !== \"object\" && typeof receiver !== \"function\")\n throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n };\n exporter(\"__extends\", __extends4);\n exporter(\"__assign\", __assign4);\n exporter(\"__rest\", __rest2);\n exporter(\"__decorate\", __decorate2);\n exporter(\"__param\", __param2);\n exporter(\"__metadata\", __metadata2);\n exporter(\"__awaiter\", __awaiter2);\n exporter(\"__generator\", __generator2);\n exporter(\"__exportStar\", __exportStar2);\n exporter(\"__createBinding\", __createBinding2);\n exporter(\"__values\", __values2);\n exporter(\"__read\", __read2);\n exporter(\"__spread\", __spread2);\n exporter(\"__spreadArrays\", __spreadArrays2);\n exporter(\"__spreadArray\", __spreadArray2);\n exporter(\"__await\", __await2);\n exporter(\"__asyncGenerator\", __asyncGenerator2);\n exporter(\"__asyncDelegator\", __asyncDelegator2);\n exporter(\"__asyncValues\", __asyncValues2);\n exporter(\"__makeTemplateObject\", __makeTemplateObject2);\n exporter(\"__importStar\", __importStar2);\n exporter(\"__importDefault\", __importDefault2);\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet2);\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet2);\n exporter(\"__classPrivateFieldIn\", __classPrivateFieldIn2);\n });\n }\n});\n\n// node_modules/cheerio/lib/types.js\nvar require_types = __commonJS({\n \"node_modules/cheerio/lib/types.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n }\n});\n\n// node_modules/cheerio/lib/options.js\nvar require_options = __commonJS({\n \"node_modules/cheerio/lib/options.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.flatten = void 0;\n var tslib_1 = require_tslib2();\n var defaultOpts = {\n xml: false,\n decodeEntities: true\n };\n exports2.default = defaultOpts;\n var xmlModeDefault = {\n _useHtmlParser2: true,\n xmlMode: true\n };\n function flatten2(options) {\n return (options === null || options === void 0 ? void 0 : options.xml) ? typeof options.xml === \"boolean\" ? xmlModeDefault : tslib_1.__assign(tslib_1.__assign({}, xmlModeDefault), options.xml) : options !== null && options !== void 0 ? options : void 0;\n }\n exports2.flatten = flatten2;\n }\n});\n\n// node_modules/css-what/lib/commonjs/types.js\nvar require_types2 = __commonJS({\n \"node_modules/css-what/lib/commonjs/types.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.AttributeAction = exports2.IgnoreCaseMode = exports2.SelectorType = void 0;\n var SelectorType;\n (function(SelectorType2) {\n SelectorType2[\"Attribute\"] = \"attribute\";\n SelectorType2[\"Pseudo\"] = \"pseudo\";\n SelectorType2[\"PseudoElement\"] = \"pseudo-element\";\n SelectorType2[\"Tag\"] = \"tag\";\n SelectorType2[\"Universal\"] = \"universal\";\n SelectorType2[\"Adjacent\"] = \"adjacent\";\n SelectorType2[\"Child\"] = \"child\";\n SelectorType2[\"Descendant\"] = \"descendant\";\n SelectorType2[\"Parent\"] = \"parent\";\n SelectorType2[\"Sibling\"] = \"sibling\";\n SelectorType2[\"ColumnCombinator\"] = \"column-combinator\";\n })(SelectorType = exports2.SelectorType || (exports2.SelectorType = {}));\n exports2.IgnoreCaseMode = {\n Unknown: null,\n QuirksMode: \"quirks\",\n IgnoreCase: true,\n CaseSensitive: false\n };\n var AttributeAction;\n (function(AttributeAction2) {\n AttributeAction2[\"Any\"] = \"any\";\n AttributeAction2[\"Element\"] = \"element\";\n AttributeAction2[\"End\"] = \"end\";\n AttributeAction2[\"Equals\"] = \"equals\";\n AttributeAction2[\"Exists\"] = \"exists\";\n AttributeAction2[\"Hyphen\"] = \"hyphen\";\n AttributeAction2[\"Not\"] = \"not\";\n AttributeAction2[\"Start\"] = \"start\";\n })(AttributeAction = exports2.AttributeAction || (exports2.AttributeAction = {}));\n }\n});\n\n// node_modules/css-what/lib/commonjs/parse.js\nvar require_parse = __commonJS({\n \"node_modules/css-what/lib/commonjs/parse.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.parse = exports2.isTraversal = void 0;\n var types_1 = require_types2();\n var reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\n var reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\n var actionTypes = /* @__PURE__ */ new Map([\n [126, types_1.AttributeAction.Element],\n [94, types_1.AttributeAction.Start],\n [36, types_1.AttributeAction.End],\n [42, types_1.AttributeAction.Any],\n [33, types_1.AttributeAction.Not],\n [124, types_1.AttributeAction.Hyphen]\n ]);\n var unpackPseudos = /* @__PURE__ */ new Set([\n \"has\",\n \"not\",\n \"matches\",\n \"is\",\n \"where\",\n \"host\",\n \"host-context\"\n ]);\n function isTraversal(selector) {\n switch (selector.type) {\n case types_1.SelectorType.Adjacent:\n case types_1.SelectorType.Child:\n case types_1.SelectorType.Descendant:\n case types_1.SelectorType.Parent:\n case types_1.SelectorType.Sibling:\n case types_1.SelectorType.ColumnCombinator:\n return true;\n default:\n return false;\n }\n }\n exports2.isTraversal = isTraversal;\n var stripQuotesFromPseudos = /* @__PURE__ */ new Set([\"contains\", \"icontains\"]);\n function funescape(_4, escaped, escapedWhitespace) {\n var high = parseInt(escaped, 16) - 65536;\n return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320);\n }\n function unescapeCSS(str) {\n return str.replace(reEscape, funescape);\n }\n function isQuote(c3) {\n return c3 === 39 || c3 === 34;\n }\n function isWhitespace(c3) {\n return c3 === 32 || c3 === 9 || c3 === 10 || c3 === 12 || c3 === 13;\n }\n function parse2(selector) {\n var subselects = [];\n var endIndex = parseSelector(subselects, \"\".concat(selector), 0);\n if (endIndex < selector.length) {\n throw new Error(\"Unmatched selector: \".concat(selector.slice(endIndex)));\n }\n return subselects;\n }\n exports2.parse = parse2;\n function parseSelector(subselects, selector, selectorIndex) {\n var tokens = [];\n function getName(offset3) {\n var match2 = selector.slice(selectorIndex + offset3).match(reName);\n if (!match2) {\n throw new Error(\"Expected name, found \".concat(selector.slice(selectorIndex)));\n }\n var name = match2[0];\n selectorIndex += offset3 + name.length;\n return unescapeCSS(name);\n }\n function stripWhitespace(offset3) {\n selectorIndex += offset3;\n while (selectorIndex < selector.length && isWhitespace(selector.charCodeAt(selectorIndex))) {\n selectorIndex++;\n }\n }\n function readValueWithParenthesis() {\n selectorIndex += 1;\n var start3 = selectorIndex;\n var counter = 1;\n for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n if (selector.charCodeAt(selectorIndex) === 40 && !isEscaped(selectorIndex)) {\n counter++;\n } else if (selector.charCodeAt(selectorIndex) === 41 && !isEscaped(selectorIndex)) {\n counter--;\n }\n }\n if (counter) {\n throw new Error(\"Parenthesis not matched\");\n }\n return unescapeCSS(selector.slice(start3, selectorIndex - 1));\n }\n function isEscaped(pos) {\n var slashCount = 0;\n while (selector.charCodeAt(--pos) === 92)\n slashCount++;\n return (slashCount & 1) === 1;\n }\n function ensureNotTraversal() {\n if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n throw new Error(\"Did not expect successive traversals.\");\n }\n }\n function addTraversal(type) {\n if (tokens.length > 0 && tokens[tokens.length - 1].type === types_1.SelectorType.Descendant) {\n tokens[tokens.length - 1].type = type;\n return;\n }\n ensureNotTraversal();\n tokens.push({ type });\n }\n function addSpecialAttribute(name, action2) {\n tokens.push({\n type: types_1.SelectorType.Attribute,\n name,\n action: action2,\n value: getName(1),\n namespace: null,\n ignoreCase: \"quirks\"\n });\n }\n function finalizeSubselector() {\n if (tokens.length && tokens[tokens.length - 1].type === types_1.SelectorType.Descendant) {\n tokens.pop();\n }\n if (tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n }\n stripWhitespace(0);\n if (selector.length === selectorIndex) {\n return selectorIndex;\n }\n loop:\n while (selectorIndex < selector.length) {\n var firstChar = selector.charCodeAt(selectorIndex);\n switch (firstChar) {\n case 32:\n case 9:\n case 10:\n case 12:\n case 13: {\n if (tokens.length === 0 || tokens[0].type !== types_1.SelectorType.Descendant) {\n ensureNotTraversal();\n tokens.push({ type: types_1.SelectorType.Descendant });\n }\n stripWhitespace(1);\n break;\n }\n case 62: {\n addTraversal(types_1.SelectorType.Child);\n stripWhitespace(1);\n break;\n }\n case 60: {\n addTraversal(types_1.SelectorType.Parent);\n stripWhitespace(1);\n break;\n }\n case 126: {\n addTraversal(types_1.SelectorType.Sibling);\n stripWhitespace(1);\n break;\n }\n case 43: {\n addTraversal(types_1.SelectorType.Adjacent);\n stripWhitespace(1);\n break;\n }\n case 46: {\n addSpecialAttribute(\"class\", types_1.AttributeAction.Element);\n break;\n }\n case 35: {\n addSpecialAttribute(\"id\", types_1.AttributeAction.Equals);\n break;\n }\n case 91: {\n stripWhitespace(1);\n var name_1 = void 0;\n var namespace = null;\n if (selector.charCodeAt(selectorIndex) === 124) {\n name_1 = getName(1);\n } else if (selector.startsWith(\"*|\", selectorIndex)) {\n namespace = \"*\";\n name_1 = getName(2);\n } else {\n name_1 = getName(0);\n if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 61) {\n namespace = name_1;\n name_1 = getName(1);\n }\n }\n stripWhitespace(0);\n var action = types_1.AttributeAction.Exists;\n var possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));\n if (possibleAction) {\n action = possibleAction;\n if (selector.charCodeAt(selectorIndex + 1) !== 61) {\n throw new Error(\"Expected `=`\");\n }\n stripWhitespace(2);\n } else if (selector.charCodeAt(selectorIndex) === 61) {\n action = types_1.AttributeAction.Equals;\n stripWhitespace(1);\n }\n var value = \"\";\n var ignoreCase = null;\n if (action !== \"exists\") {\n if (isQuote(selector.charCodeAt(selectorIndex))) {\n var quote = selector.charCodeAt(selectorIndex);\n var sectionEnd = selectorIndex + 1;\n while (sectionEnd < selector.length && (selector.charCodeAt(sectionEnd) !== quote || isEscaped(sectionEnd))) {\n sectionEnd += 1;\n }\n if (selector.charCodeAt(sectionEnd) !== quote) {\n throw new Error(\"Attribute value didn't end\");\n }\n value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n selectorIndex = sectionEnd + 1;\n } else {\n var valueStart = selectorIndex;\n while (selectorIndex < selector.length && (!isWhitespace(selector.charCodeAt(selectorIndex)) && selector.charCodeAt(selectorIndex) !== 93 || isEscaped(selectorIndex))) {\n selectorIndex += 1;\n }\n value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n }\n stripWhitespace(0);\n var forceIgnore = selector.charCodeAt(selectorIndex) | 32;\n if (forceIgnore === 115) {\n ignoreCase = false;\n stripWhitespace(1);\n } else if (forceIgnore === 105) {\n ignoreCase = true;\n stripWhitespace(1);\n }\n }\n if (selector.charCodeAt(selectorIndex) !== 93) {\n throw new Error(\"Attribute selector didn't terminate\");\n }\n selectorIndex += 1;\n var attributeSelector = {\n type: types_1.SelectorType.Attribute,\n name: name_1,\n action,\n value,\n namespace,\n ignoreCase\n };\n tokens.push(attributeSelector);\n break;\n }\n case 58: {\n if (selector.charCodeAt(selectorIndex + 1) === 58) {\n tokens.push({\n type: types_1.SelectorType.PseudoElement,\n name: getName(2).toLowerCase(),\n data: selector.charCodeAt(selectorIndex) === 40 ? readValueWithParenthesis() : null\n });\n continue;\n }\n var name_2 = getName(1).toLowerCase();\n var data = null;\n if (selector.charCodeAt(selectorIndex) === 40) {\n if (unpackPseudos.has(name_2)) {\n if (isQuote(selector.charCodeAt(selectorIndex + 1))) {\n throw new Error(\"Pseudo-selector \".concat(name_2, \" cannot be quoted\"));\n }\n data = [];\n selectorIndex = parseSelector(data, selector, selectorIndex + 1);\n if (selector.charCodeAt(selectorIndex) !== 41) {\n throw new Error(\"Missing closing parenthesis in :\".concat(name_2, \" (\").concat(selector, \")\"));\n }\n selectorIndex += 1;\n } else {\n data = readValueWithParenthesis();\n if (stripQuotesFromPseudos.has(name_2)) {\n var quot = data.charCodeAt(0);\n if (quot === data.charCodeAt(data.length - 1) && isQuote(quot)) {\n data = data.slice(1, -1);\n }\n }\n data = unescapeCSS(data);\n }\n }\n tokens.push({ type: types_1.SelectorType.Pseudo, name: name_2, data });\n break;\n }\n case 44: {\n finalizeSubselector();\n tokens = [];\n stripWhitespace(1);\n break;\n }\n default: {\n if (selector.startsWith(\"/*\", selectorIndex)) {\n var endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n if (endIndex < 0) {\n throw new Error(\"Comment was not terminated\");\n }\n selectorIndex = endIndex + 2;\n if (tokens.length === 0) {\n stripWhitespace(0);\n }\n break;\n }\n var namespace = null;\n var name_3 = void 0;\n if (firstChar === 42) {\n selectorIndex += 1;\n name_3 = \"*\";\n } else if (firstChar === 124) {\n name_3 = \"\";\n if (selector.charCodeAt(selectorIndex + 1) === 124) {\n addTraversal(types_1.SelectorType.ColumnCombinator);\n stripWhitespace(2);\n break;\n }\n } else if (reName.test(selector.slice(selectorIndex))) {\n name_3 = getName(0);\n } else {\n break loop;\n }\n if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 124) {\n namespace = name_3;\n if (selector.charCodeAt(selectorIndex + 1) === 42) {\n name_3 = \"*\";\n selectorIndex += 2;\n } else {\n name_3 = getName(1);\n }\n }\n tokens.push(name_3 === \"*\" ? { type: types_1.SelectorType.Universal, namespace } : { type: types_1.SelectorType.Tag, name: name_3, namespace });\n }\n }\n }\n finalizeSubselector();\n return selectorIndex;\n }\n }\n});\n\n// node_modules/css-what/lib/commonjs/stringify.js\nvar require_stringify = __commonJS({\n \"node_modules/css-what/lib/commonjs/stringify.js\"(exports2) {\n \"use strict\";\n var __spreadArray2 = exports2 && exports2.__spreadArray || function(to, from, pack) {\n if (pack || arguments.length === 2)\n for (var i3 = 0, l3 = from.length, ar; i3 < l3; i3++) {\n if (ar || !(i3 in from)) {\n if (!ar)\n ar = Array.prototype.slice.call(from, 0, i3);\n ar[i3] = from[i3];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.stringify = void 0;\n var types_1 = require_types2();\n var attribValChars = [\"\\\\\", '\"'];\n var pseudoValChars = __spreadArray2(__spreadArray2([], attribValChars, true), [\"(\", \")\"], false);\n var charsToEscapeInAttributeValue = new Set(attribValChars.map(function(c3) {\n return c3.charCodeAt(0);\n }));\n var charsToEscapeInPseudoValue = new Set(pseudoValChars.map(function(c3) {\n return c3.charCodeAt(0);\n }));\n var charsToEscapeInName = new Set(__spreadArray2(__spreadArray2([], pseudoValChars, true), [\n \"~\",\n \"^\",\n \"$\",\n \"*\",\n \"+\",\n \"!\",\n \"|\",\n \":\",\n \"[\",\n \"]\",\n \" \",\n \".\"\n ], false).map(function(c3) {\n return c3.charCodeAt(0);\n }));\n function stringify(selector) {\n return selector.map(function(token) {\n return token.map(stringifyToken).join(\"\");\n }).join(\", \");\n }\n exports2.stringify = stringify;\n function stringifyToken(token, index7, arr) {\n switch (token.type) {\n case types_1.SelectorType.Child:\n return index7 === 0 ? \"> \" : \" > \";\n case types_1.SelectorType.Parent:\n return index7 === 0 ? \"< \" : \" < \";\n case types_1.SelectorType.Sibling:\n return index7 === 0 ? \"~ \" : \" ~ \";\n case types_1.SelectorType.Adjacent:\n return index7 === 0 ? \"+ \" : \" + \";\n case types_1.SelectorType.Descendant:\n return \" \";\n case types_1.SelectorType.ColumnCombinator:\n return index7 === 0 ? \"|| \" : \" || \";\n case types_1.SelectorType.Universal:\n return token.namespace === \"*\" && index7 + 1 < arr.length && \"name\" in arr[index7 + 1] ? \"\" : \"\".concat(getNamespace(token.namespace), \"*\");\n case types_1.SelectorType.Tag:\n return getNamespacedName(token);\n case types_1.SelectorType.PseudoElement:\n return \"::\".concat(escapeName(token.name, charsToEscapeInName)).concat(token.data === null ? \"\" : \"(\".concat(escapeName(token.data, charsToEscapeInPseudoValue), \")\"));\n case types_1.SelectorType.Pseudo:\n return \":\".concat(escapeName(token.name, charsToEscapeInName)).concat(token.data === null ? \"\" : \"(\".concat(typeof token.data === \"string\" ? escapeName(token.data, charsToEscapeInPseudoValue) : stringify(token.data), \")\"));\n case types_1.SelectorType.Attribute: {\n if (token.name === \"id\" && token.action === types_1.AttributeAction.Equals && token.ignoreCase === \"quirks\" && !token.namespace) {\n return \"#\".concat(escapeName(token.value, charsToEscapeInName));\n }\n if (token.name === \"class\" && token.action === types_1.AttributeAction.Element && token.ignoreCase === \"quirks\" && !token.namespace) {\n return \".\".concat(escapeName(token.value, charsToEscapeInName));\n }\n var name_1 = getNamespacedName(token);\n if (token.action === types_1.AttributeAction.Exists) {\n return \"[\".concat(name_1, \"]\");\n }\n return \"[\".concat(name_1).concat(getActionValue(token.action), '=\"').concat(escapeName(token.value, charsToEscapeInAttributeValue), '\"').concat(token.ignoreCase === null ? \"\" : token.ignoreCase ? \" i\" : \" s\", \"]\");\n }\n }\n }\n function getActionValue(action) {\n switch (action) {\n case types_1.AttributeAction.Equals:\n return \"\";\n case types_1.AttributeAction.Element:\n return \"~\";\n case types_1.AttributeAction.Start:\n return \"^\";\n case types_1.AttributeAction.End:\n return \"$\";\n case types_1.AttributeAction.Any:\n return \"*\";\n case types_1.AttributeAction.Not:\n return \"!\";\n case types_1.AttributeAction.Hyphen:\n return \"|\";\n case types_1.AttributeAction.Exists:\n throw new Error(\"Shouldn't be here\");\n }\n }\n function getNamespacedName(token) {\n return \"\".concat(getNamespace(token.namespace)).concat(escapeName(token.name, charsToEscapeInName));\n }\n function getNamespace(namespace) {\n return namespace !== null ? \"\".concat(namespace === \"*\" ? \"*\" : escapeName(namespace, charsToEscapeInName), \"|\") : \"\";\n }\n function escapeName(str, charsToEscape) {\n var lastIdx = 0;\n var ret = \"\";\n for (var i3 = 0; i3 < str.length; i3++) {\n if (charsToEscape.has(str.charCodeAt(i3))) {\n ret += \"\".concat(str.slice(lastIdx, i3), \"\\\\\").concat(str.charAt(i3));\n lastIdx = i3 + 1;\n }\n }\n return ret.length > 0 ? ret + str.slice(lastIdx) : str;\n }\n }\n});\n\n// node_modules/css-what/lib/commonjs/index.js\nvar require_commonjs = __commonJS({\n \"node_modules/css-what/lib/commonjs/index.js\"(exports2) {\n \"use strict\";\n var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n var desc = Object.getOwnPropertyDescriptor(m2, k4);\n if (!desc || (\"get\" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() {\n return m2[k4];\n } };\n }\n Object.defineProperty(o3, k22, desc);\n } : function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n o3[k22] = m2[k4];\n });\n var __exportStar2 = exports2 && exports2.__exportStar || function(m2, exports3) {\n for (var p4 in m2)\n if (p4 !== \"default\" && !Object.prototype.hasOwnProperty.call(exports3, p4))\n __createBinding2(exports3, m2, p4);\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.stringify = exports2.parse = exports2.isTraversal = void 0;\n __exportStar2(require_types2(), exports2);\n var parse_1 = require_parse();\n Object.defineProperty(exports2, \"isTraversal\", { enumerable: true, get: function() {\n return parse_1.isTraversal;\n } });\n Object.defineProperty(exports2, \"parse\", { enumerable: true, get: function() {\n return parse_1.parse;\n } });\n var stringify_1 = require_stringify();\n Object.defineProperty(exports2, \"stringify\", { enumerable: true, get: function() {\n return stringify_1.stringify;\n } });\n }\n});\n\n// node_modules/domelementtype/lib/index.js\nvar require_lib2 = __commonJS({\n \"node_modules/domelementtype/lib/index.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.Doctype = exports2.CDATA = exports2.Tag = exports2.Style = exports2.Script = exports2.Comment = exports2.Directive = exports2.Text = exports2.Root = exports2.isTag = exports2.ElementType = void 0;\n var ElementType;\n (function(ElementType2) {\n ElementType2[\"Root\"] = \"root\";\n ElementType2[\"Text\"] = \"text\";\n ElementType2[\"Directive\"] = \"directive\";\n ElementType2[\"Comment\"] = \"comment\";\n ElementType2[\"Script\"] = \"script\";\n ElementType2[\"Style\"] = \"style\";\n ElementType2[\"Tag\"] = \"tag\";\n ElementType2[\"CDATA\"] = \"cdata\";\n ElementType2[\"Doctype\"] = \"doctype\";\n })(ElementType = exports2.ElementType || (exports2.ElementType = {}));\n function isTag(elem) {\n return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style;\n }\n exports2.isTag = isTag;\n exports2.Root = ElementType.Root;\n exports2.Text = ElementType.Text;\n exports2.Directive = ElementType.Directive;\n exports2.Comment = ElementType.Comment;\n exports2.Script = ElementType.Script;\n exports2.Style = ElementType.Style;\n exports2.Tag = ElementType.Tag;\n exports2.CDATA = ElementType.CDATA;\n exports2.Doctype = ElementType.Doctype;\n }\n});\n\n// node_modules/domhandler/lib/node.js\nvar require_node = __commonJS({\n \"node_modules/domhandler/lib/node.js\"(exports2) {\n \"use strict\";\n var __extends4 = exports2 && exports2.__extends || function() {\n var extendStatics = function(d3, b4) {\n extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d4, b5) {\n d4.__proto__ = b5;\n } || function(d4, b5) {\n for (var p4 in b5)\n if (Object.prototype.hasOwnProperty.call(b5, p4))\n d4[p4] = b5[p4];\n };\n return extendStatics(d3, b4);\n };\n return function(d3, b4) {\n if (typeof b4 !== \"function\" && b4 !== null)\n throw new TypeError(\"Class extends value \" + String(b4) + \" is not a constructor or null\");\n extendStatics(d3, b4);\n function __() {\n this.constructor = d3;\n }\n d3.prototype = b4 === null ? Object.create(b4) : (__.prototype = b4.prototype, new __());\n };\n }();\n var __assign4 = exports2 && exports2.__assign || function() {\n __assign4 = Object.assign || function(t4) {\n for (var s3, i3 = 1, n5 = arguments.length; i3 < n5; i3++) {\n s3 = arguments[i3];\n for (var p4 in s3)\n if (Object.prototype.hasOwnProperty.call(s3, p4))\n t4[p4] = s3[p4];\n }\n return t4;\n };\n return __assign4.apply(this, arguments);\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.cloneNode = exports2.hasChildren = exports2.isDocument = exports2.isDirective = exports2.isComment = exports2.isText = exports2.isCDATA = exports2.isTag = exports2.Element = exports2.Document = exports2.NodeWithChildren = exports2.ProcessingInstruction = exports2.Comment = exports2.Text = exports2.DataNode = exports2.Node = void 0;\n var domelementtype_1 = require_lib2();\n var nodeTypes = /* @__PURE__ */ new Map([\n [domelementtype_1.ElementType.Tag, 1],\n [domelementtype_1.ElementType.Script, 1],\n [domelementtype_1.ElementType.Style, 1],\n [domelementtype_1.ElementType.Directive, 1],\n [domelementtype_1.ElementType.Text, 3],\n [domelementtype_1.ElementType.CDATA, 4],\n [domelementtype_1.ElementType.Comment, 8],\n [domelementtype_1.ElementType.Root, 9]\n ]);\n var Node3 = function() {\n function Node4(type) {\n this.type = type;\n this.parent = null;\n this.prev = null;\n this.next = null;\n this.startIndex = null;\n this.endIndex = null;\n }\n Object.defineProperty(Node4.prototype, \"nodeType\", {\n get: function() {\n var _a;\n return (_a = nodeTypes.get(this.type)) !== null && _a !== void 0 ? _a : 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node4.prototype, \"parentNode\", {\n get: function() {\n return this.parent;\n },\n set: function(parent2) {\n this.parent = parent2;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node4.prototype, \"previousSibling\", {\n get: function() {\n return this.prev;\n },\n set: function(prev) {\n this.prev = prev;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node4.prototype, \"nextSibling\", {\n get: function() {\n return this.next;\n },\n set: function(next) {\n this.next = next;\n },\n enumerable: false,\n configurable: true\n });\n Node4.prototype.cloneNode = function(recursive) {\n if (recursive === void 0) {\n recursive = false;\n }\n return cloneNode(this, recursive);\n };\n return Node4;\n }();\n exports2.Node = Node3;\n var DataNode = function(_super) {\n __extends4(DataNode2, _super);\n function DataNode2(type, data) {\n var _this = _super.call(this, type) || this;\n _this.data = data;\n return _this;\n }\n Object.defineProperty(DataNode2.prototype, \"nodeValue\", {\n get: function() {\n return this.data;\n },\n set: function(data) {\n this.data = data;\n },\n enumerable: false,\n configurable: true\n });\n return DataNode2;\n }(Node3);\n exports2.DataNode = DataNode;\n var Text3 = function(_super) {\n __extends4(Text4, _super);\n function Text4(data) {\n return _super.call(this, domelementtype_1.ElementType.Text, data) || this;\n }\n return Text4;\n }(DataNode);\n exports2.Text = Text3;\n var Comment = function(_super) {\n __extends4(Comment2, _super);\n function Comment2(data) {\n return _super.call(this, domelementtype_1.ElementType.Comment, data) || this;\n }\n return Comment2;\n }(DataNode);\n exports2.Comment = Comment;\n var ProcessingInstruction = function(_super) {\n __extends4(ProcessingInstruction2, _super);\n function ProcessingInstruction2(name, data) {\n var _this = _super.call(this, domelementtype_1.ElementType.Directive, data) || this;\n _this.name = name;\n return _this;\n }\n return ProcessingInstruction2;\n }(DataNode);\n exports2.ProcessingInstruction = ProcessingInstruction;\n var NodeWithChildren = function(_super) {\n __extends4(NodeWithChildren2, _super);\n function NodeWithChildren2(type, children) {\n var _this = _super.call(this, type) || this;\n _this.children = children;\n return _this;\n }\n Object.defineProperty(NodeWithChildren2.prototype, \"firstChild\", {\n get: function() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren2.prototype, \"lastChild\", {\n get: function() {\n return this.children.length > 0 ? this.children[this.children.length - 1] : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren2.prototype, \"childNodes\", {\n get: function() {\n return this.children;\n },\n set: function(children) {\n this.children = children;\n },\n enumerable: false,\n configurable: true\n });\n return NodeWithChildren2;\n }(Node3);\n exports2.NodeWithChildren = NodeWithChildren;\n var Document2 = function(_super) {\n __extends4(Document3, _super);\n function Document3(children) {\n return _super.call(this, domelementtype_1.ElementType.Root, children) || this;\n }\n return Document3;\n }(NodeWithChildren);\n exports2.Document = Document2;\n var Element4 = function(_super) {\n __extends4(Element5, _super);\n function Element5(name, attribs, children, type) {\n if (children === void 0) {\n children = [];\n }\n if (type === void 0) {\n type = name === \"script\" ? domelementtype_1.ElementType.Script : name === \"style\" ? domelementtype_1.ElementType.Style : domelementtype_1.ElementType.Tag;\n }\n var _this = _super.call(this, type, children) || this;\n _this.name = name;\n _this.attribs = attribs;\n return _this;\n }\n Object.defineProperty(Element5.prototype, \"tagName\", {\n get: function() {\n return this.name;\n },\n set: function(name) {\n this.name = name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element5.prototype, \"attributes\", {\n get: function() {\n var _this = this;\n return Object.keys(this.attribs).map(function(name) {\n var _a, _b;\n return {\n name,\n value: _this.attribs[name],\n namespace: (_a = _this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = _this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name]\n };\n });\n },\n enumerable: false,\n configurable: true\n });\n return Element5;\n }(NodeWithChildren);\n exports2.Element = Element4;\n function isTag(node) {\n return (0, domelementtype_1.isTag)(node);\n }\n exports2.isTag = isTag;\n function isCDATA(node) {\n return node.type === domelementtype_1.ElementType.CDATA;\n }\n exports2.isCDATA = isCDATA;\n function isText2(node) {\n return node.type === domelementtype_1.ElementType.Text;\n }\n exports2.isText = isText2;\n function isComment(node) {\n return node.type === domelementtype_1.ElementType.Comment;\n }\n exports2.isComment = isComment;\n function isDirective(node) {\n return node.type === domelementtype_1.ElementType.Directive;\n }\n exports2.isDirective = isDirective;\n function isDocument(node) {\n return node.type === domelementtype_1.ElementType.Root;\n }\n exports2.isDocument = isDocument;\n function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n }\n exports2.hasChildren = hasChildren;\n function cloneNode(node, recursive) {\n if (recursive === void 0) {\n recursive = false;\n }\n var result;\n if (isText2(node)) {\n result = new Text3(node.data);\n } else if (isComment(node)) {\n result = new Comment(node.data);\n } else if (isTag(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_1 = new Element4(node.name, __assign4({}, node.attribs), children);\n children.forEach(function(child) {\n return child.parent = clone_1;\n });\n if (node.namespace != null) {\n clone_1.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone_1[\"x-attribsNamespace\"] = __assign4({}, node[\"x-attribsNamespace\"]);\n }\n if (node[\"x-attribsPrefix\"]) {\n clone_1[\"x-attribsPrefix\"] = __assign4({}, node[\"x-attribsPrefix\"]);\n }\n result = clone_1;\n } else if (isCDATA(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_2 = new NodeWithChildren(domelementtype_1.ElementType.CDATA, children);\n children.forEach(function(child) {\n return child.parent = clone_2;\n });\n result = clone_2;\n } else if (isDocument(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_3 = new Document2(children);\n children.forEach(function(child) {\n return child.parent = clone_3;\n });\n if (node[\"x-mode\"]) {\n clone_3[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone_3;\n } else if (isDirective(node)) {\n var instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n } else {\n throw new Error(\"Not implemented yet: \".concat(node.type));\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n }\n exports2.cloneNode = cloneNode;\n function cloneChildren(childs) {\n var children = childs.map(function(child) {\n return cloneNode(child, true);\n });\n for (var i3 = 1; i3 < children.length; i3++) {\n children[i3].prev = children[i3 - 1];\n children[i3 - 1].next = children[i3];\n }\n return children;\n }\n }\n});\n\n// node_modules/domhandler/lib/index.js\nvar require_lib3 = __commonJS({\n \"node_modules/domhandler/lib/index.js\"(exports2) {\n \"use strict\";\n var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n var desc = Object.getOwnPropertyDescriptor(m2, k4);\n if (!desc || (\"get\" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() {\n return m2[k4];\n } };\n }\n Object.defineProperty(o3, k22, desc);\n } : function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n o3[k22] = m2[k4];\n });\n var __exportStar2 = exports2 && exports2.__exportStar || function(m2, exports3) {\n for (var p4 in m2)\n if (p4 !== \"default\" && !Object.prototype.hasOwnProperty.call(exports3, p4))\n __createBinding2(exports3, m2, p4);\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.DomHandler = void 0;\n var domelementtype_1 = require_lib2();\n var node_1 = require_node();\n __exportStar2(require_node(), exports2);\n var reWhitespace2 = /\\s+/g;\n var defaultOpts = {\n normalizeWhitespace: false,\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false\n };\n var DomHandler = function() {\n function DomHandler2(callback, options, elementCB) {\n this.dom = [];\n this.root = new node_1.Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = void 0;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n DomHandler2.prototype.onparserinit = function(parser) {\n this.parser = parser;\n };\n DomHandler2.prototype.onreset = function() {\n this.dom = [];\n this.root = new node_1.Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n };\n DomHandler2.prototype.onend = function() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n };\n DomHandler2.prototype.onerror = function(error) {\n this.handleCallback(error);\n };\n DomHandler2.prototype.onclosetag = function() {\n this.lastNode = null;\n var elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n };\n DomHandler2.prototype.onopentag = function(name, attribs) {\n var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : void 0;\n var element4 = new node_1.Element(name, attribs, void 0, type);\n this.addNode(element4);\n this.tagStack.push(element4);\n };\n DomHandler2.prototype.ontext = function(data) {\n var normalizeWhitespace = this.options.normalizeWhitespace;\n var lastNode = this.lastNode;\n if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {\n if (normalizeWhitespace) {\n lastNode.data = (lastNode.data + data).replace(reWhitespace2, \" \");\n } else {\n lastNode.data += data;\n }\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n } else {\n if (normalizeWhitespace) {\n data = data.replace(reWhitespace2, \" \");\n }\n var node = new node_1.Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n };\n DomHandler2.prototype.oncomment = function(data) {\n if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n var node = new node_1.Comment(data);\n this.addNode(node);\n this.lastNode = node;\n };\n DomHandler2.prototype.oncommentend = function() {\n this.lastNode = null;\n };\n DomHandler2.prototype.oncdatastart = function() {\n var text5 = new node_1.Text(\"\");\n var node = new node_1.NodeWithChildren(domelementtype_1.ElementType.CDATA, [text5]);\n this.addNode(node);\n text5.parent = node;\n this.lastNode = text5;\n };\n DomHandler2.prototype.oncdataend = function() {\n this.lastNode = null;\n };\n DomHandler2.prototype.onprocessinginstruction = function(name, data) {\n var node = new node_1.ProcessingInstruction(name, data);\n this.addNode(node);\n };\n DomHandler2.prototype.handleCallback = function(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n } else if (error) {\n throw error;\n }\n };\n DomHandler2.prototype.addNode = function(node) {\n var parent2 = this.tagStack[this.tagStack.length - 1];\n var previousSibling = parent2.children[parent2.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent2.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent2;\n this.lastNode = null;\n };\n return DomHandler2;\n }();\n exports2.DomHandler = DomHandler;\n exports2.default = DomHandler;\n }\n});\n\n// node_modules/dom-serializer/node_modules/entities/lib/maps/entities.json\nvar require_entities = __commonJS({\n \"node_modules/dom-serializer/node_modules/entities/lib/maps/entities.json\"(exports2, module2) {\n module2.exports = { Aacute: \"\\xC1\", aacute: \"\\xE1\", Abreve: \"\\u0102\", abreve: \"\\u0103\", ac: \"\\u223E\", acd: \"\\u223F\", acE: \"\\u223E\\u0333\", Acirc: \"\\xC2\", acirc: \"\\xE2\", acute: \"\\xB4\", Acy: \"\\u0410\", acy: \"\\u0430\", AElig: \"\\xC6\", aelig: \"\\xE6\", af: \"\\u2061\", Afr: \"\\u{1D504}\", afr: \"\\u{1D51E}\", Agrave: \"\\xC0\", agrave: \"\\xE0\", alefsym: \"\\u2135\", aleph: \"\\u2135\", Alpha: \"\\u0391\", alpha: \"\\u03B1\", Amacr: \"\\u0100\", amacr: \"\\u0101\", amalg: \"\\u2A3F\", amp: \"&\", AMP: \"&\", andand: \"\\u2A55\", And: \"\\u2A53\", and: \"\\u2227\", andd: \"\\u2A5C\", andslope: \"\\u2A58\", andv: \"\\u2A5A\", ang: \"\\u2220\", ange: \"\\u29A4\", angle: \"\\u2220\", angmsdaa: \"\\u29A8\", angmsdab: \"\\u29A9\", angmsdac: \"\\u29AA\", angmsdad: \"\\u29AB\", angmsdae: \"\\u29AC\", angmsdaf: \"\\u29AD\", angmsdag: \"\\u29AE\", angmsdah: \"\\u29AF\", angmsd: \"\\u2221\", angrt: \"\\u221F\", angrtvb: \"\\u22BE\", angrtvbd: \"\\u299D\", angsph: \"\\u2222\", angst: \"\\xC5\", angzarr: \"\\u237C\", Aogon: \"\\u0104\", aogon: \"\\u0105\", Aopf: \"\\u{1D538}\", aopf: \"\\u{1D552}\", apacir: \"\\u2A6F\", ap: \"\\u2248\", apE: \"\\u2A70\", ape: \"\\u224A\", apid: \"\\u224B\", apos: \"'\", ApplyFunction: \"\\u2061\", approx: \"\\u2248\", approxeq: \"\\u224A\", Aring: \"\\xC5\", aring: \"\\xE5\", Ascr: \"\\u{1D49C}\", ascr: \"\\u{1D4B6}\", Assign: \"\\u2254\", ast: \"*\", asymp: \"\\u2248\", asympeq: \"\\u224D\", Atilde: \"\\xC3\", atilde: \"\\xE3\", Auml: \"\\xC4\", auml: \"\\xE4\", awconint: \"\\u2233\", awint: \"\\u2A11\", backcong: \"\\u224C\", backepsilon: \"\\u03F6\", backprime: \"\\u2035\", backsim: \"\\u223D\", backsimeq: \"\\u22CD\", Backslash: \"\\u2216\", Barv: \"\\u2AE7\", barvee: \"\\u22BD\", barwed: \"\\u2305\", Barwed: \"\\u2306\", barwedge: \"\\u2305\", bbrk: \"\\u23B5\", bbrktbrk: \"\\u23B6\", bcong: \"\\u224C\", Bcy: \"\\u0411\", bcy: \"\\u0431\", bdquo: \"\\u201E\", becaus: \"\\u2235\", because: \"\\u2235\", Because: \"\\u2235\", bemptyv: \"\\u29B0\", bepsi: \"\\u03F6\", bernou: \"\\u212C\", Bernoullis: \"\\u212C\", Beta: \"\\u0392\", beta: \"\\u03B2\", beth: \"\\u2136\", between: \"\\u226C\", Bfr: \"\\u{1D505}\", bfr: \"\\u{1D51F}\", bigcap: \"\\u22C2\", bigcirc: \"\\u25EF\", bigcup: \"\\u22C3\", bigodot: \"\\u2A00\", bigoplus: \"\\u2A01\", bigotimes: \"\\u2A02\", bigsqcup: \"\\u2A06\", bigstar: \"\\u2605\", bigtriangledown: \"\\u25BD\", bigtriangleup: \"\\u25B3\", biguplus: \"\\u2A04\", bigvee: \"\\u22C1\", bigwedge: \"\\u22C0\", bkarow: \"\\u290D\", blacklozenge: \"\\u29EB\", blacksquare: \"\\u25AA\", blacktriangle: \"\\u25B4\", blacktriangledown: \"\\u25BE\", blacktriangleleft: \"\\u25C2\", blacktriangleright: \"\\u25B8\", blank: \"\\u2423\", blk12: \"\\u2592\", blk14: \"\\u2591\", blk34: \"\\u2593\", block: \"\\u2588\", bne: \"=\\u20E5\", bnequiv: \"\\u2261\\u20E5\", bNot: \"\\u2AED\", bnot: \"\\u2310\", Bopf: \"\\u{1D539}\", bopf: \"\\u{1D553}\", bot: \"\\u22A5\", bottom: \"\\u22A5\", bowtie: \"\\u22C8\", boxbox: \"\\u29C9\", boxdl: \"\\u2510\", boxdL: \"\\u2555\", boxDl: \"\\u2556\", boxDL: \"\\u2557\", boxdr: \"\\u250C\", boxdR: \"\\u2552\", boxDr: \"\\u2553\", boxDR: \"\\u2554\", boxh: \"\\u2500\", boxH: \"\\u2550\", boxhd: \"\\u252C\", boxHd: \"\\u2564\", boxhD: \"\\u2565\", boxHD: \"\\u2566\", boxhu: \"\\u2534\", boxHu: \"\\u2567\", boxhU: \"\\u2568\", boxHU: \"\\u2569\", boxminus: \"\\u229F\", boxplus: \"\\u229E\", boxtimes: \"\\u22A0\", boxul: \"\\u2518\", boxuL: \"\\u255B\", boxUl: \"\\u255C\", boxUL: \"\\u255D\", boxur: \"\\u2514\", boxuR: \"\\u2558\", boxUr: \"\\u2559\", boxUR: \"\\u255A\", boxv: \"\\u2502\", boxV: \"\\u2551\", boxvh: \"\\u253C\", boxvH: \"\\u256A\", boxVh: \"\\u256B\", boxVH: \"\\u256C\", boxvl: \"\\u2524\", boxvL: \"\\u2561\", boxVl: \"\\u2562\", boxVL: \"\\u2563\", boxvr: \"\\u251C\", boxvR: \"\\u255E\", boxVr: \"\\u255F\", boxVR: \"\\u2560\", bprime: \"\\u2035\", breve: \"\\u02D8\", Breve: \"\\u02D8\", brvbar: \"\\xA6\", bscr: \"\\u{1D4B7}\", Bscr: \"\\u212C\", bsemi: \"\\u204F\", bsim: \"\\u223D\", bsime: \"\\u22CD\", bsolb: \"\\u29C5\", bsol: \"\\\\\", bsolhsub: \"\\u27C8\", bull: \"\\u2022\", bullet: \"\\u2022\", bump: \"\\u224E\", bumpE: \"\\u2AAE\", bumpe: \"\\u224F\", Bumpeq: \"\\u224E\", bumpeq: \"\\u224F\", Cacute: \"\\u0106\", cacute: \"\\u0107\", capand: \"\\u2A44\", capbrcup: \"\\u2A49\", capcap: \"\\u2A4B\", cap: \"\\u2229\", Cap: \"\\u22D2\", capcup: \"\\u2A47\", capdot: \"\\u2A40\", CapitalDifferentialD: \"\\u2145\", caps: \"\\u2229\\uFE00\", caret: \"\\u2041\", caron: \"\\u02C7\", Cayleys: \"\\u212D\", ccaps: \"\\u2A4D\", Ccaron: \"\\u010C\", ccaron: \"\\u010D\", Ccedil: \"\\xC7\", ccedil: \"\\xE7\", Ccirc: \"\\u0108\", ccirc: \"\\u0109\", Cconint: \"\\u2230\", ccups: \"\\u2A4C\", ccupssm: \"\\u2A50\", Cdot: \"\\u010A\", cdot: \"\\u010B\", cedil: \"\\xB8\", Cedilla: \"\\xB8\", cemptyv: \"\\u29B2\", cent: \"\\xA2\", centerdot: \"\\xB7\", CenterDot: \"\\xB7\", cfr: \"\\u{1D520}\", Cfr: \"\\u212D\", CHcy: \"\\u0427\", chcy: \"\\u0447\", check: \"\\u2713\", checkmark: \"\\u2713\", Chi: \"\\u03A7\", chi: \"\\u03C7\", circ: \"\\u02C6\", circeq: \"\\u2257\", circlearrowleft: \"\\u21BA\", circlearrowright: \"\\u21BB\", circledast: \"\\u229B\", circledcirc: \"\\u229A\", circleddash: \"\\u229D\", CircleDot: \"\\u2299\", circledR: \"\\xAE\", circledS: \"\\u24C8\", CircleMinus: \"\\u2296\", CirclePlus: \"\\u2295\", CircleTimes: \"\\u2297\", cir: \"\\u25CB\", cirE: \"\\u29C3\", cire: \"\\u2257\", cirfnint: \"\\u2A10\", cirmid: \"\\u2AEF\", cirscir: \"\\u29C2\", ClockwiseContourIntegral: \"\\u2232\", CloseCurlyDoubleQuote: \"\\u201D\", CloseCurlyQuote: \"\\u2019\", clubs: \"\\u2663\", clubsuit: \"\\u2663\", colon: \":\", Colon: \"\\u2237\", Colone: \"\\u2A74\", colone: \"\\u2254\", coloneq: \"\\u2254\", comma: \",\", commat: \"@\", comp: \"\\u2201\", compfn: \"\\u2218\", complement: \"\\u2201\", complexes: \"\\u2102\", cong: \"\\u2245\", congdot: \"\\u2A6D\", Congruent: \"\\u2261\", conint: \"\\u222E\", Conint: \"\\u222F\", ContourIntegral: \"\\u222E\", copf: \"\\u{1D554}\", Copf: \"\\u2102\", coprod: \"\\u2210\", Coproduct: \"\\u2210\", copy: \"\\xA9\", COPY: \"\\xA9\", copysr: \"\\u2117\", CounterClockwiseContourIntegral: \"\\u2233\", crarr: \"\\u21B5\", cross: \"\\u2717\", Cross: \"\\u2A2F\", Cscr: \"\\u{1D49E}\", cscr: \"\\u{1D4B8}\", csub: \"\\u2ACF\", csube: \"\\u2AD1\", csup: \"\\u2AD0\", csupe: \"\\u2AD2\", ctdot: \"\\u22EF\", cudarrl: \"\\u2938\", cudarrr: \"\\u2935\", cuepr: \"\\u22DE\", cuesc: \"\\u22DF\", cularr: \"\\u21B6\", cularrp: \"\\u293D\", cupbrcap: \"\\u2A48\", cupcap: \"\\u2A46\", CupCap: \"\\u224D\", cup: \"\\u222A\", Cup: \"\\u22D3\", cupcup: \"\\u2A4A\", cupdot: \"\\u228D\", cupor: \"\\u2A45\", cups: \"\\u222A\\uFE00\", curarr: \"\\u21B7\", curarrm: \"\\u293C\", curlyeqprec: \"\\u22DE\", curlyeqsucc: \"\\u22DF\", curlyvee: \"\\u22CE\", curlywedge: \"\\u22CF\", curren: \"\\xA4\", curvearrowleft: \"\\u21B6\", curvearrowright: \"\\u21B7\", cuvee: \"\\u22CE\", cuwed: \"\\u22CF\", cwconint: \"\\u2232\", cwint: \"\\u2231\", cylcty: \"\\u232D\", dagger: \"\\u2020\", Dagger: \"\\u2021\", daleth: \"\\u2138\", darr: \"\\u2193\", Darr: \"\\u21A1\", dArr: \"\\u21D3\", dash: \"\\u2010\", Dashv: \"\\u2AE4\", dashv: \"\\u22A3\", dbkarow: \"\\u290F\", dblac: \"\\u02DD\", Dcaron: \"\\u010E\", dcaron: \"\\u010F\", Dcy: \"\\u0414\", dcy: \"\\u0434\", ddagger: \"\\u2021\", ddarr: \"\\u21CA\", DD: \"\\u2145\", dd: \"\\u2146\", DDotrahd: \"\\u2911\", ddotseq: \"\\u2A77\", deg: \"\\xB0\", Del: \"\\u2207\", Delta: \"\\u0394\", delta: \"\\u03B4\", demptyv: \"\\u29B1\", dfisht: \"\\u297F\", Dfr: \"\\u{1D507}\", dfr: \"\\u{1D521}\", dHar: \"\\u2965\", dharl: \"\\u21C3\", dharr: \"\\u21C2\", DiacriticalAcute: \"\\xB4\", DiacriticalDot: \"\\u02D9\", DiacriticalDoubleAcute: \"\\u02DD\", DiacriticalGrave: \"`\", DiacriticalTilde: \"\\u02DC\", diam: \"\\u22C4\", diamond: \"\\u22C4\", Diamond: \"\\u22C4\", diamondsuit: \"\\u2666\", diams: \"\\u2666\", die: \"\\xA8\", DifferentialD: \"\\u2146\", digamma: \"\\u03DD\", disin: \"\\u22F2\", div: \"\\xF7\", divide: \"\\xF7\", divideontimes: \"\\u22C7\", divonx: \"\\u22C7\", DJcy: \"\\u0402\", djcy: \"\\u0452\", dlcorn: \"\\u231E\", dlcrop: \"\\u230D\", dollar: \"$\", Dopf: \"\\u{1D53B}\", dopf: \"\\u{1D555}\", Dot: \"\\xA8\", dot: \"\\u02D9\", DotDot: \"\\u20DC\", doteq: \"\\u2250\", doteqdot: \"\\u2251\", DotEqual: \"\\u2250\", dotminus: \"\\u2238\", dotplus: \"\\u2214\", dotsquare: \"\\u22A1\", doublebarwedge: \"\\u2306\", DoubleContourIntegral: \"\\u222F\", DoubleDot: \"\\xA8\", DoubleDownArrow: \"\\u21D3\", DoubleLeftArrow: \"\\u21D0\", DoubleLeftRightArrow: \"\\u21D4\", DoubleLeftTee: \"\\u2AE4\", DoubleLongLeftArrow: \"\\u27F8\", DoubleLongLeftRightArrow: \"\\u27FA\", DoubleLongRightArrow: \"\\u27F9\", DoubleRightArrow: \"\\u21D2\", DoubleRightTee: \"\\u22A8\", DoubleUpArrow: \"\\u21D1\", DoubleUpDownArrow: \"\\u21D5\", DoubleVerticalBar: \"\\u2225\", DownArrowBar: \"\\u2913\", downarrow: \"\\u2193\", DownArrow: \"\\u2193\", Downarrow: \"\\u21D3\", DownArrowUpArrow: \"\\u21F5\", DownBreve: \"\\u0311\", downdownarrows: \"\\u21CA\", downharpoonleft: \"\\u21C3\", downharpoonright: \"\\u21C2\", DownLeftRightVector: \"\\u2950\", DownLeftTeeVector: \"\\u295E\", DownLeftVectorBar: \"\\u2956\", DownLeftVector: \"\\u21BD\", DownRightTeeVector: \"\\u295F\", DownRightVectorBar: \"\\u2957\", DownRightVector: \"\\u21C1\", DownTeeArrow: \"\\u21A7\", DownTee: \"\\u22A4\", drbkarow: \"\\u2910\", drcorn: \"\\u231F\", drcrop: \"\\u230C\", Dscr: \"\\u{1D49F}\", dscr: \"\\u{1D4B9}\", DScy: \"\\u0405\", dscy: \"\\u0455\", dsol: \"\\u29F6\", Dstrok: \"\\u0110\", dstrok: \"\\u0111\", dtdot: \"\\u22F1\", dtri: \"\\u25BF\", dtrif: \"\\u25BE\", duarr: \"\\u21F5\", duhar: \"\\u296F\", dwangle: \"\\u29A6\", DZcy: \"\\u040F\", dzcy: \"\\u045F\", dzigrarr: \"\\u27FF\", Eacute: \"\\xC9\", eacute: \"\\xE9\", easter: \"\\u2A6E\", Ecaron: \"\\u011A\", ecaron: \"\\u011B\", Ecirc: \"\\xCA\", ecirc: \"\\xEA\", ecir: \"\\u2256\", ecolon: \"\\u2255\", Ecy: \"\\u042D\", ecy: \"\\u044D\", eDDot: \"\\u2A77\", Edot: \"\\u0116\", edot: \"\\u0117\", eDot: \"\\u2251\", ee: \"\\u2147\", efDot: \"\\u2252\", Efr: \"\\u{1D508}\", efr: \"\\u{1D522}\", eg: \"\\u2A9A\", Egrave: \"\\xC8\", egrave: \"\\xE8\", egs: \"\\u2A96\", egsdot: \"\\u2A98\", el: \"\\u2A99\", Element: \"\\u2208\", elinters: \"\\u23E7\", ell: \"\\u2113\", els: \"\\u2A95\", elsdot: \"\\u2A97\", Emacr: \"\\u0112\", emacr: \"\\u0113\", empty: \"\\u2205\", emptyset: \"\\u2205\", EmptySmallSquare: \"\\u25FB\", emptyv: \"\\u2205\", EmptyVerySmallSquare: \"\\u25AB\", emsp13: \"\\u2004\", emsp14: \"\\u2005\", emsp: \"\\u2003\", ENG: \"\\u014A\", eng: \"\\u014B\", ensp: \"\\u2002\", Eogon: \"\\u0118\", eogon: \"\\u0119\", Eopf: \"\\u{1D53C}\", eopf: \"\\u{1D556}\", epar: \"\\u22D5\", eparsl: \"\\u29E3\", eplus: \"\\u2A71\", epsi: \"\\u03B5\", Epsilon: \"\\u0395\", epsilon: \"\\u03B5\", epsiv: \"\\u03F5\", eqcirc: \"\\u2256\", eqcolon: \"\\u2255\", eqsim: \"\\u2242\", eqslantgtr: \"\\u2A96\", eqslantless: \"\\u2A95\", Equal: \"\\u2A75\", equals: \"=\", EqualTilde: \"\\u2242\", equest: \"\\u225F\", Equilibrium: \"\\u21CC\", equiv: \"\\u2261\", equivDD: \"\\u2A78\", eqvparsl: \"\\u29E5\", erarr: \"\\u2971\", erDot: \"\\u2253\", escr: \"\\u212F\", Escr: \"\\u2130\", esdot: \"\\u2250\", Esim: \"\\u2A73\", esim: \"\\u2242\", Eta: \"\\u0397\", eta: \"\\u03B7\", ETH: \"\\xD0\", eth: \"\\xF0\", Euml: \"\\xCB\", euml: \"\\xEB\", euro: \"\\u20AC\", excl: \"!\", exist: \"\\u2203\", Exists: \"\\u2203\", expectation: \"\\u2130\", exponentiale: \"\\u2147\", ExponentialE: \"\\u2147\", fallingdotseq: \"\\u2252\", Fcy: \"\\u0424\", fcy: \"\\u0444\", female: \"\\u2640\", ffilig: \"\\uFB03\", fflig: \"\\uFB00\", ffllig: \"\\uFB04\", Ffr: \"\\u{1D509}\", ffr: \"\\u{1D523}\", filig: \"\\uFB01\", FilledSmallSquare: \"\\u25FC\", FilledVerySmallSquare: \"\\u25AA\", fjlig: \"fj\", flat: \"\\u266D\", fllig: \"\\uFB02\", fltns: \"\\u25B1\", fnof: \"\\u0192\", Fopf: \"\\u{1D53D}\", fopf: \"\\u{1D557}\", forall: \"\\u2200\", ForAll: \"\\u2200\", fork: \"\\u22D4\", forkv: \"\\u2AD9\", Fouriertrf: \"\\u2131\", fpartint: \"\\u2A0D\", frac12: \"\\xBD\", frac13: \"\\u2153\", frac14: \"\\xBC\", frac15: \"\\u2155\", frac16: \"\\u2159\", frac18: \"\\u215B\", frac23: \"\\u2154\", frac25: \"\\u2156\", frac34: \"\\xBE\", frac35: \"\\u2157\", frac38: \"\\u215C\", frac45: \"\\u2158\", frac56: \"\\u215A\", frac58: \"\\u215D\", frac78: \"\\u215E\", frasl: \"\\u2044\", frown: \"\\u2322\", fscr: \"\\u{1D4BB}\", Fscr: \"\\u2131\", gacute: \"\\u01F5\", Gamma: \"\\u0393\", gamma: \"\\u03B3\", Gammad: \"\\u03DC\", gammad: \"\\u03DD\", gap: \"\\u2A86\", Gbreve: \"\\u011E\", gbreve: \"\\u011F\", Gcedil: \"\\u0122\", Gcirc: \"\\u011C\", gcirc: \"\\u011D\", Gcy: \"\\u0413\", gcy: \"\\u0433\", Gdot: \"\\u0120\", gdot: \"\\u0121\", ge: \"\\u2265\", gE: \"\\u2267\", gEl: \"\\u2A8C\", gel: \"\\u22DB\", geq: \"\\u2265\", geqq: \"\\u2267\", geqslant: \"\\u2A7E\", gescc: \"\\u2AA9\", ges: \"\\u2A7E\", gesdot: \"\\u2A80\", gesdoto: \"\\u2A82\", gesdotol: \"\\u2A84\", gesl: \"\\u22DB\\uFE00\", gesles: \"\\u2A94\", Gfr: \"\\u{1D50A}\", gfr: \"\\u{1D524}\", gg: \"\\u226B\", Gg: \"\\u22D9\", ggg: \"\\u22D9\", gimel: \"\\u2137\", GJcy: \"\\u0403\", gjcy: \"\\u0453\", gla: \"\\u2AA5\", gl: \"\\u2277\", glE: \"\\u2A92\", glj: \"\\u2AA4\", gnap: \"\\u2A8A\", gnapprox: \"\\u2A8A\", gne: \"\\u2A88\", gnE: \"\\u2269\", gneq: \"\\u2A88\", gneqq: \"\\u2269\", gnsim: \"\\u22E7\", Gopf: \"\\u{1D53E}\", gopf: \"\\u{1D558}\", grave: \"`\", GreaterEqual: \"\\u2265\", GreaterEqualLess: \"\\u22DB\", GreaterFullEqual: \"\\u2267\", GreaterGreater: \"\\u2AA2\", GreaterLess: \"\\u2277\", GreaterSlantEqual: \"\\u2A7E\", GreaterTilde: \"\\u2273\", Gscr: \"\\u{1D4A2}\", gscr: \"\\u210A\", gsim: \"\\u2273\", gsime: \"\\u2A8E\", gsiml: \"\\u2A90\", gtcc: \"\\u2AA7\", gtcir: \"\\u2A7A\", gt: \">\", GT: \">\", Gt: \"\\u226B\", gtdot: \"\\u22D7\", gtlPar: \"\\u2995\", gtquest: \"\\u2A7C\", gtrapprox: \"\\u2A86\", gtrarr: \"\\u2978\", gtrdot: \"\\u22D7\", gtreqless: \"\\u22DB\", gtreqqless: \"\\u2A8C\", gtrless: \"\\u2277\", gtrsim: \"\\u2273\", gvertneqq: \"\\u2269\\uFE00\", gvnE: \"\\u2269\\uFE00\", Hacek: \"\\u02C7\", hairsp: \"\\u200A\", half: \"\\xBD\", hamilt: \"\\u210B\", HARDcy: \"\\u042A\", hardcy: \"\\u044A\", harrcir: \"\\u2948\", harr: \"\\u2194\", hArr: \"\\u21D4\", harrw: \"\\u21AD\", Hat: \"^\", hbar: \"\\u210F\", Hcirc: \"\\u0124\", hcirc: \"\\u0125\", hearts: \"\\u2665\", heartsuit: \"\\u2665\", hellip: \"\\u2026\", hercon: \"\\u22B9\", hfr: \"\\u{1D525}\", Hfr: \"\\u210C\", HilbertSpace: \"\\u210B\", hksearow: \"\\u2925\", hkswarow: \"\\u2926\", hoarr: \"\\u21FF\", homtht: \"\\u223B\", hookleftarrow: \"\\u21A9\", hookrightarrow: \"\\u21AA\", hopf: \"\\u{1D559}\", Hopf: \"\\u210D\", horbar: \"\\u2015\", HorizontalLine: \"\\u2500\", hscr: \"\\u{1D4BD}\", Hscr: \"\\u210B\", hslash: \"\\u210F\", Hstrok: \"\\u0126\", hstrok: \"\\u0127\", HumpDownHump: \"\\u224E\", HumpEqual: \"\\u224F\", hybull: \"\\u2043\", hyphen: \"\\u2010\", Iacute: \"\\xCD\", iacute: \"\\xED\", ic: \"\\u2063\", Icirc: \"\\xCE\", icirc: \"\\xEE\", Icy: \"\\u0418\", icy: \"\\u0438\", Idot: \"\\u0130\", IEcy: \"\\u0415\", iecy: \"\\u0435\", iexcl: \"\\xA1\", iff: \"\\u21D4\", ifr: \"\\u{1D526}\", Ifr: \"\\u2111\", Igrave: \"\\xCC\", igrave: \"\\xEC\", ii: \"\\u2148\", iiiint: \"\\u2A0C\", iiint: \"\\u222D\", iinfin: \"\\u29DC\", iiota: \"\\u2129\", IJlig: \"\\u0132\", ijlig: \"\\u0133\", Imacr: \"\\u012A\", imacr: \"\\u012B\", image: \"\\u2111\", ImaginaryI: \"\\u2148\", imagline: \"\\u2110\", imagpart: \"\\u2111\", imath: \"\\u0131\", Im: \"\\u2111\", imof: \"\\u22B7\", imped: \"\\u01B5\", Implies: \"\\u21D2\", incare: \"\\u2105\", in: \"\\u2208\", infin: \"\\u221E\", infintie: \"\\u29DD\", inodot: \"\\u0131\", intcal: \"\\u22BA\", int: \"\\u222B\", Int: \"\\u222C\", integers: \"\\u2124\", Integral: \"\\u222B\", intercal: \"\\u22BA\", Intersection: \"\\u22C2\", intlarhk: \"\\u2A17\", intprod: \"\\u2A3C\", InvisibleComma: \"\\u2063\", InvisibleTimes: \"\\u2062\", IOcy: \"\\u0401\", iocy: \"\\u0451\", Iogon: \"\\u012E\", iogon: \"\\u012F\", Iopf: \"\\u{1D540}\", iopf: \"\\u{1D55A}\", Iota: \"\\u0399\", iota: \"\\u03B9\", iprod: \"\\u2A3C\", iquest: \"\\xBF\", iscr: \"\\u{1D4BE}\", Iscr: \"\\u2110\", isin: \"\\u2208\", isindot: \"\\u22F5\", isinE: \"\\u22F9\", isins: \"\\u22F4\", isinsv: \"\\u22F3\", isinv: \"\\u2208\", it: \"\\u2062\", Itilde: \"\\u0128\", itilde: \"\\u0129\", Iukcy: \"\\u0406\", iukcy: \"\\u0456\", Iuml: \"\\xCF\", iuml: \"\\xEF\", Jcirc: \"\\u0134\", jcirc: \"\\u0135\", Jcy: \"\\u0419\", jcy: \"\\u0439\", Jfr: \"\\u{1D50D}\", jfr: \"\\u{1D527}\", jmath: \"\\u0237\", Jopf: \"\\u{1D541}\", jopf: \"\\u{1D55B}\", Jscr: \"\\u{1D4A5}\", jscr: \"\\u{1D4BF}\", Jsercy: \"\\u0408\", jsercy: \"\\u0458\", Jukcy: \"\\u0404\", jukcy: \"\\u0454\", Kappa: \"\\u039A\", kappa: \"\\u03BA\", kappav: \"\\u03F0\", Kcedil: \"\\u0136\", kcedil: \"\\u0137\", Kcy: \"\\u041A\", kcy: \"\\u043A\", Kfr: \"\\u{1D50E}\", kfr: \"\\u{1D528}\", kgreen: \"\\u0138\", KHcy: \"\\u0425\", khcy: \"\\u0445\", KJcy: \"\\u040C\", kjcy: \"\\u045C\", Kopf: \"\\u{1D542}\", kopf: \"\\u{1D55C}\", Kscr: \"\\u{1D4A6}\", kscr: \"\\u{1D4C0}\", lAarr: \"\\u21DA\", Lacute: \"\\u0139\", lacute: \"\\u013A\", laemptyv: \"\\u29B4\", lagran: \"\\u2112\", Lambda: \"\\u039B\", lambda: \"\\u03BB\", lang: \"\\u27E8\", Lang: \"\\u27EA\", langd: \"\\u2991\", langle: \"\\u27E8\", lap: \"\\u2A85\", Laplacetrf: \"\\u2112\", laquo: \"\\xAB\", larrb: \"\\u21E4\", larrbfs: \"\\u291F\", larr: \"\\u2190\", Larr: \"\\u219E\", lArr: \"\\u21D0\", larrfs: \"\\u291D\", larrhk: \"\\u21A9\", larrlp: \"\\u21AB\", larrpl: \"\\u2939\", larrsim: \"\\u2973\", larrtl: \"\\u21A2\", latail: \"\\u2919\", lAtail: \"\\u291B\", lat: \"\\u2AAB\", late: \"\\u2AAD\", lates: \"\\u2AAD\\uFE00\", lbarr: \"\\u290C\", lBarr: \"\\u290E\", lbbrk: \"\\u2772\", lbrace: \"{\", lbrack: \"[\", lbrke: \"\\u298B\", lbrksld: \"\\u298F\", lbrkslu: \"\\u298D\", Lcaron: \"\\u013D\", lcaron: \"\\u013E\", Lcedil: \"\\u013B\", lcedil: \"\\u013C\", lceil: \"\\u2308\", lcub: \"{\", Lcy: \"\\u041B\", lcy: \"\\u043B\", ldca: \"\\u2936\", ldquo: \"\\u201C\", ldquor: \"\\u201E\", ldrdhar: \"\\u2967\", ldrushar: \"\\u294B\", ldsh: \"\\u21B2\", le: \"\\u2264\", lE: \"\\u2266\", LeftAngleBracket: \"\\u27E8\", LeftArrowBar: \"\\u21E4\", leftarrow: \"\\u2190\", LeftArrow: \"\\u2190\", Leftarrow: \"\\u21D0\", LeftArrowRightArrow: \"\\u21C6\", leftarrowtail: \"\\u21A2\", LeftCeiling: \"\\u2308\", LeftDoubleBracket: \"\\u27E6\", LeftDownTeeVector: \"\\u2961\", LeftDownVectorBar: \"\\u2959\", LeftDownVector: \"\\u21C3\", LeftFloor: \"\\u230A\", leftharpoondown: \"\\u21BD\", leftharpoonup: \"\\u21BC\", leftleftarrows: \"\\u21C7\", leftrightarrow: \"\\u2194\", LeftRightArrow: \"\\u2194\", Leftrightarrow: \"\\u21D4\", leftrightarrows: \"\\u21C6\", leftrightharpoons: \"\\u21CB\", leftrightsquigarrow: \"\\u21AD\", LeftRightVector: \"\\u294E\", LeftTeeArrow: \"\\u21A4\", LeftTee: \"\\u22A3\", LeftTeeVector: \"\\u295A\", leftthreetimes: \"\\u22CB\", LeftTriangleBar: \"\\u29CF\", LeftTriangle: \"\\u22B2\", LeftTriangleEqual: \"\\u22B4\", LeftUpDownVector: \"\\u2951\", LeftUpTeeVector: \"\\u2960\", LeftUpVectorBar: \"\\u2958\", LeftUpVector: \"\\u21BF\", LeftVectorBar: \"\\u2952\", LeftVector: \"\\u21BC\", lEg: \"\\u2A8B\", leg: \"\\u22DA\", leq: \"\\u2264\", leqq: \"\\u2266\", leqslant: \"\\u2A7D\", lescc: \"\\u2AA8\", les: \"\\u2A7D\", lesdot: \"\\u2A7F\", lesdoto: \"\\u2A81\", lesdotor: \"\\u2A83\", lesg: \"\\u22DA\\uFE00\", lesges: \"\\u2A93\", lessapprox: \"\\u2A85\", lessdot: \"\\u22D6\", lesseqgtr: \"\\u22DA\", lesseqqgtr: \"\\u2A8B\", LessEqualGreater: \"\\u22DA\", LessFullEqual: \"\\u2266\", LessGreater: \"\\u2276\", lessgtr: \"\\u2276\", LessLess: \"\\u2AA1\", lesssim: \"\\u2272\", LessSlantEqual: \"\\u2A7D\", LessTilde: \"\\u2272\", lfisht: \"\\u297C\", lfloor: \"\\u230A\", Lfr: \"\\u{1D50F}\", lfr: \"\\u{1D529}\", lg: \"\\u2276\", lgE: \"\\u2A91\", lHar: \"\\u2962\", lhard: \"\\u21BD\", lharu: \"\\u21BC\", lharul: \"\\u296A\", lhblk: \"\\u2584\", LJcy: \"\\u0409\", ljcy: \"\\u0459\", llarr: \"\\u21C7\", ll: \"\\u226A\", Ll: \"\\u22D8\", llcorner: \"\\u231E\", Lleftarrow: \"\\u21DA\", llhard: \"\\u296B\", lltri: \"\\u25FA\", Lmidot: \"\\u013F\", lmidot: \"\\u0140\", lmoustache: \"\\u23B0\", lmoust: \"\\u23B0\", lnap: \"\\u2A89\", lnapprox: \"\\u2A89\", lne: \"\\u2A87\", lnE: \"\\u2268\", lneq: \"\\u2A87\", lneqq: \"\\u2268\", lnsim: \"\\u22E6\", loang: \"\\u27EC\", loarr: \"\\u21FD\", lobrk: \"\\u27E6\", longleftarrow: \"\\u27F5\", LongLeftArrow: \"\\u27F5\", Longleftarrow: \"\\u27F8\", longleftrightarrow: \"\\u27F7\", LongLeftRightArrow: \"\\u27F7\", Longleftrightarrow: \"\\u27FA\", longmapsto: \"\\u27FC\", longrightarrow: \"\\u27F6\", LongRightArrow: \"\\u27F6\", Longrightarrow: \"\\u27F9\", looparrowleft: \"\\u21AB\", looparrowright: \"\\u21AC\", lopar: \"\\u2985\", Lopf: \"\\u{1D543}\", lopf: \"\\u{1D55D}\", loplus: \"\\u2A2D\", lotimes: \"\\u2A34\", lowast: \"\\u2217\", lowbar: \"_\", LowerLeftArrow: \"\\u2199\", LowerRightArrow: \"\\u2198\", loz: \"\\u25CA\", lozenge: \"\\u25CA\", lozf: \"\\u29EB\", lpar: \"(\", lparlt: \"\\u2993\", lrarr: \"\\u21C6\", lrcorner: \"\\u231F\", lrhar: \"\\u21CB\", lrhard: \"\\u296D\", lrm: \"\\u200E\", lrtri: \"\\u22BF\", lsaquo: \"\\u2039\", lscr: \"\\u{1D4C1}\", Lscr: \"\\u2112\", lsh: \"\\u21B0\", Lsh: \"\\u21B0\", lsim: \"\\u2272\", lsime: \"\\u2A8D\", lsimg: \"\\u2A8F\", lsqb: \"[\", lsquo: \"\\u2018\", lsquor: \"\\u201A\", Lstrok: \"\\u0141\", lstrok: \"\\u0142\", ltcc: \"\\u2AA6\", ltcir: \"\\u2A79\", lt: \"<\", LT: \"<\", Lt: \"\\u226A\", ltdot: \"\\u22D6\", lthree: \"\\u22CB\", ltimes: \"\\u22C9\", ltlarr: \"\\u2976\", ltquest: \"\\u2A7B\", ltri: \"\\u25C3\", ltrie: \"\\u22B4\", ltrif: \"\\u25C2\", ltrPar: \"\\u2996\", lurdshar: \"\\u294A\", luruhar: \"\\u2966\", lvertneqq: \"\\u2268\\uFE00\", lvnE: \"\\u2268\\uFE00\", macr: \"\\xAF\", male: \"\\u2642\", malt: \"\\u2720\", maltese: \"\\u2720\", Map: \"\\u2905\", map: \"\\u21A6\", mapsto: \"\\u21A6\", mapstodown: \"\\u21A7\", mapstoleft: \"\\u21A4\", mapstoup: \"\\u21A5\", marker: \"\\u25AE\", mcomma: \"\\u2A29\", Mcy: \"\\u041C\", mcy: \"\\u043C\", mdash: \"\\u2014\", mDDot: \"\\u223A\", measuredangle: \"\\u2221\", MediumSpace: \"\\u205F\", Mellintrf: \"\\u2133\", Mfr: \"\\u{1D510}\", mfr: \"\\u{1D52A}\", mho: \"\\u2127\", micro: \"\\xB5\", midast: \"*\", midcir: \"\\u2AF0\", mid: \"\\u2223\", middot: \"\\xB7\", minusb: \"\\u229F\", minus: \"\\u2212\", minusd: \"\\u2238\", minusdu: \"\\u2A2A\", MinusPlus: \"\\u2213\", mlcp: \"\\u2ADB\", mldr: \"\\u2026\", mnplus: \"\\u2213\", models: \"\\u22A7\", Mopf: \"\\u{1D544}\", mopf: \"\\u{1D55E}\", mp: \"\\u2213\", mscr: \"\\u{1D4C2}\", Mscr: \"\\u2133\", mstpos: \"\\u223E\", Mu: \"\\u039C\", mu: \"\\u03BC\", multimap: \"\\u22B8\", mumap: \"\\u22B8\", nabla: \"\\u2207\", Nacute: \"\\u0143\", nacute: \"\\u0144\", nang: \"\\u2220\\u20D2\", nap: \"\\u2249\", napE: \"\\u2A70\\u0338\", napid: \"\\u224B\\u0338\", napos: \"\\u0149\", napprox: \"\\u2249\", natural: \"\\u266E\", naturals: \"\\u2115\", natur: \"\\u266E\", nbsp: \"\\xA0\", nbump: \"\\u224E\\u0338\", nbumpe: \"\\u224F\\u0338\", ncap: \"\\u2A43\", Ncaron: \"\\u0147\", ncaron: \"\\u0148\", Ncedil: \"\\u0145\", ncedil: \"\\u0146\", ncong: \"\\u2247\", ncongdot: \"\\u2A6D\\u0338\", ncup: \"\\u2A42\", Ncy: \"\\u041D\", ncy: \"\\u043D\", ndash: \"\\u2013\", nearhk: \"\\u2924\", nearr: \"\\u2197\", neArr: \"\\u21D7\", nearrow: \"\\u2197\", ne: \"\\u2260\", nedot: \"\\u2250\\u0338\", NegativeMediumSpace: \"\\u200B\", NegativeThickSpace: \"\\u200B\", NegativeThinSpace: \"\\u200B\", NegativeVeryThinSpace: \"\\u200B\", nequiv: \"\\u2262\", nesear: \"\\u2928\", nesim: \"\\u2242\\u0338\", NestedGreaterGreater: \"\\u226B\", NestedLessLess: \"\\u226A\", NewLine: \"\\n\", nexist: \"\\u2204\", nexists: \"\\u2204\", Nfr: \"\\u{1D511}\", nfr: \"\\u{1D52B}\", ngE: \"\\u2267\\u0338\", nge: \"\\u2271\", ngeq: \"\\u2271\", ngeqq: \"\\u2267\\u0338\", ngeqslant: \"\\u2A7E\\u0338\", nges: \"\\u2A7E\\u0338\", nGg: \"\\u22D9\\u0338\", ngsim: \"\\u2275\", nGt: \"\\u226B\\u20D2\", ngt: \"\\u226F\", ngtr: \"\\u226F\", nGtv: \"\\u226B\\u0338\", nharr: \"\\u21AE\", nhArr: \"\\u21CE\", nhpar: \"\\u2AF2\", ni: \"\\u220B\", nis: \"\\u22FC\", nisd: \"\\u22FA\", niv: \"\\u220B\", NJcy: \"\\u040A\", njcy: \"\\u045A\", nlarr: \"\\u219A\", nlArr: \"\\u21CD\", nldr: \"\\u2025\", nlE: \"\\u2266\\u0338\", nle: \"\\u2270\", nleftarrow: \"\\u219A\", nLeftarrow: \"\\u21CD\", nleftrightarrow: \"\\u21AE\", nLeftrightarrow: \"\\u21CE\", nleq: \"\\u2270\", nleqq: \"\\u2266\\u0338\", nleqslant: \"\\u2A7D\\u0338\", nles: \"\\u2A7D\\u0338\", nless: \"\\u226E\", nLl: \"\\u22D8\\u0338\", nlsim: \"\\u2274\", nLt: \"\\u226A\\u20D2\", nlt: \"\\u226E\", nltri: \"\\u22EA\", nltrie: \"\\u22EC\", nLtv: \"\\u226A\\u0338\", nmid: \"\\u2224\", NoBreak: \"\\u2060\", NonBreakingSpace: \"\\xA0\", nopf: \"\\u{1D55F}\", Nopf: \"\\u2115\", Not: \"\\u2AEC\", not: \"\\xAC\", NotCongruent: \"\\u2262\", NotCupCap: \"\\u226D\", NotDoubleVerticalBar: \"\\u2226\", NotElement: \"\\u2209\", NotEqual: \"\\u2260\", NotEqualTilde: \"\\u2242\\u0338\", NotExists: \"\\u2204\", NotGreater: \"\\u226F\", NotGreaterEqual: \"\\u2271\", NotGreaterFullEqual: \"\\u2267\\u0338\", NotGreaterGreater: \"\\u226B\\u0338\", NotGreaterLess: \"\\u2279\", NotGreaterSlantEqual: \"\\u2A7E\\u0338\", NotGreaterTilde: \"\\u2275\", NotHumpDownHump: \"\\u224E\\u0338\", NotHumpEqual: \"\\u224F\\u0338\", notin: \"\\u2209\", notindot: \"\\u22F5\\u0338\", notinE: \"\\u22F9\\u0338\", notinva: \"\\u2209\", notinvb: \"\\u22F7\", notinvc: \"\\u22F6\", NotLeftTriangleBar: \"\\u29CF\\u0338\", NotLeftTriangle: \"\\u22EA\", NotLeftTriangleEqual: \"\\u22EC\", NotLess: \"\\u226E\", NotLessEqual: \"\\u2270\", NotLessGreater: \"\\u2278\", NotLessLess: \"\\u226A\\u0338\", NotLessSlantEqual: \"\\u2A7D\\u0338\", NotLessTilde: \"\\u2274\", NotNestedGreaterGreater: \"\\u2AA2\\u0338\", NotNestedLessLess: \"\\u2AA1\\u0338\", notni: \"\\u220C\", notniva: \"\\u220C\", notnivb: \"\\u22FE\", notnivc: \"\\u22FD\", NotPrecedes: \"\\u2280\", NotPrecedesEqual: \"\\u2AAF\\u0338\", NotPrecedesSlantEqual: \"\\u22E0\", NotReverseElement: \"\\u220C\", NotRightTriangleBar: \"\\u29D0\\u0338\", NotRightTriangle: \"\\u22EB\", NotRightTriangleEqual: \"\\u22ED\", NotSquareSubset: \"\\u228F\\u0338\", NotSquareSubsetEqual: \"\\u22E2\", NotSquareSuperset: \"\\u2290\\u0338\", NotSquareSupersetEqual: \"\\u22E3\", NotSubset: \"\\u2282\\u20D2\", NotSubsetEqual: \"\\u2288\", NotSucceeds: \"\\u2281\", NotSucceedsEqual: \"\\u2AB0\\u0338\", NotSucceedsSlantEqual: \"\\u22E1\", NotSucceedsTilde: \"\\u227F\\u0338\", NotSuperset: \"\\u2283\\u20D2\", NotSupersetEqual: \"\\u2289\", NotTilde: \"\\u2241\", NotTildeEqual: \"\\u2244\", NotTildeFullEqual: \"\\u2247\", NotTildeTilde: \"\\u2249\", NotVerticalBar: \"\\u2224\", nparallel: \"\\u2226\", npar: \"\\u2226\", nparsl: \"\\u2AFD\\u20E5\", npart: \"\\u2202\\u0338\", npolint: \"\\u2A14\", npr: \"\\u2280\", nprcue: \"\\u22E0\", nprec: \"\\u2280\", npreceq: \"\\u2AAF\\u0338\", npre: \"\\u2AAF\\u0338\", nrarrc: \"\\u2933\\u0338\", nrarr: \"\\u219B\", nrArr: \"\\u21CF\", nrarrw: \"\\u219D\\u0338\", nrightarrow: \"\\u219B\", nRightarrow: \"\\u21CF\", nrtri: \"\\u22EB\", nrtrie: \"\\u22ED\", nsc: \"\\u2281\", nsccue: \"\\u22E1\", nsce: \"\\u2AB0\\u0338\", Nscr: \"\\u{1D4A9}\", nscr: \"\\u{1D4C3}\", nshortmid: \"\\u2224\", nshortparallel: \"\\u2226\", nsim: \"\\u2241\", nsime: \"\\u2244\", nsimeq: \"\\u2244\", nsmid: \"\\u2224\", nspar: \"\\u2226\", nsqsube: \"\\u22E2\", nsqsupe: \"\\u22E3\", nsub: \"\\u2284\", nsubE: \"\\u2AC5\\u0338\", nsube: \"\\u2288\", nsubset: \"\\u2282\\u20D2\", nsubseteq: \"\\u2288\", nsubseteqq: \"\\u2AC5\\u0338\", nsucc: \"\\u2281\", nsucceq: \"\\u2AB0\\u0338\", nsup: \"\\u2285\", nsupE: \"\\u2AC6\\u0338\", nsupe: \"\\u2289\", nsupset: \"\\u2283\\u20D2\", nsupseteq: \"\\u2289\", nsupseteqq: \"\\u2AC6\\u0338\", ntgl: \"\\u2279\", Ntilde: \"\\xD1\", ntilde: \"\\xF1\", ntlg: \"\\u2278\", ntriangleleft: \"\\u22EA\", ntrianglelefteq: \"\\u22EC\", ntriangleright: \"\\u22EB\", ntrianglerighteq: \"\\u22ED\", Nu: \"\\u039D\", nu: \"\\u03BD\", num: \"#\", numero: \"\\u2116\", numsp: \"\\u2007\", nvap: \"\\u224D\\u20D2\", nvdash: \"\\u22AC\", nvDash: \"\\u22AD\", nVdash: \"\\u22AE\", nVDash: \"\\u22AF\", nvge: \"\\u2265\\u20D2\", nvgt: \">\\u20D2\", nvHarr: \"\\u2904\", nvinfin: \"\\u29DE\", nvlArr: \"\\u2902\", nvle: \"\\u2264\\u20D2\", nvlt: \"<\\u20D2\", nvltrie: \"\\u22B4\\u20D2\", nvrArr: \"\\u2903\", nvrtrie: \"\\u22B5\\u20D2\", nvsim: \"\\u223C\\u20D2\", nwarhk: \"\\u2923\", nwarr: \"\\u2196\", nwArr: \"\\u21D6\", nwarrow: \"\\u2196\", nwnear: \"\\u2927\", Oacute: \"\\xD3\", oacute: \"\\xF3\", oast: \"\\u229B\", Ocirc: \"\\xD4\", ocirc: \"\\xF4\", ocir: \"\\u229A\", Ocy: \"\\u041E\", ocy: \"\\u043E\", odash: \"\\u229D\", Odblac: \"\\u0150\", odblac: \"\\u0151\", odiv: \"\\u2A38\", odot: \"\\u2299\", odsold: \"\\u29BC\", OElig: \"\\u0152\", oelig: \"\\u0153\", ofcir: \"\\u29BF\", Ofr: \"\\u{1D512}\", ofr: \"\\u{1D52C}\", ogon: \"\\u02DB\", Ograve: \"\\xD2\", ograve: \"\\xF2\", ogt: \"\\u29C1\", ohbar: \"\\u29B5\", ohm: \"\\u03A9\", oint: \"\\u222E\", olarr: \"\\u21BA\", olcir: \"\\u29BE\", olcross: \"\\u29BB\", oline: \"\\u203E\", olt: \"\\u29C0\", Omacr: \"\\u014C\", omacr: \"\\u014D\", Omega: \"\\u03A9\", omega: \"\\u03C9\", Omicron: \"\\u039F\", omicron: \"\\u03BF\", omid: \"\\u29B6\", ominus: \"\\u2296\", Oopf: \"\\u{1D546}\", oopf: \"\\u{1D560}\", opar: \"\\u29B7\", OpenCurlyDoubleQuote: \"\\u201C\", OpenCurlyQuote: \"\\u2018\", operp: \"\\u29B9\", oplus: \"\\u2295\", orarr: \"\\u21BB\", Or: \"\\u2A54\", or: \"\\u2228\", ord: \"\\u2A5D\", order: \"\\u2134\", orderof: \"\\u2134\", ordf: \"\\xAA\", ordm: \"\\xBA\", origof: \"\\u22B6\", oror: \"\\u2A56\", orslope: \"\\u2A57\", orv: \"\\u2A5B\", oS: \"\\u24C8\", Oscr: \"\\u{1D4AA}\", oscr: \"\\u2134\", Oslash: \"\\xD8\", oslash: \"\\xF8\", osol: \"\\u2298\", Otilde: \"\\xD5\", otilde: \"\\xF5\", otimesas: \"\\u2A36\", Otimes: \"\\u2A37\", otimes: \"\\u2297\", Ouml: \"\\xD6\", ouml: \"\\xF6\", ovbar: \"\\u233D\", OverBar: \"\\u203E\", OverBrace: \"\\u23DE\", OverBracket: \"\\u23B4\", OverParenthesis: \"\\u23DC\", para: \"\\xB6\", parallel: \"\\u2225\", par: \"\\u2225\", parsim: \"\\u2AF3\", parsl: \"\\u2AFD\", part: \"\\u2202\", PartialD: \"\\u2202\", Pcy: \"\\u041F\", pcy: \"\\u043F\", percnt: \"%\", period: \".\", permil: \"\\u2030\", perp: \"\\u22A5\", pertenk: \"\\u2031\", Pfr: \"\\u{1D513}\", pfr: \"\\u{1D52D}\", Phi: \"\\u03A6\", phi: \"\\u03C6\", phiv: \"\\u03D5\", phmmat: \"\\u2133\", phone: \"\\u260E\", Pi: \"\\u03A0\", pi: \"\\u03C0\", pitchfork: \"\\u22D4\", piv: \"\\u03D6\", planck: \"\\u210F\", planckh: \"\\u210E\", plankv: \"\\u210F\", plusacir: \"\\u2A23\", plusb: \"\\u229E\", pluscir: \"\\u2A22\", plus: \"+\", plusdo: \"\\u2214\", plusdu: \"\\u2A25\", pluse: \"\\u2A72\", PlusMinus: \"\\xB1\", plusmn: \"\\xB1\", plussim: \"\\u2A26\", plustwo: \"\\u2A27\", pm: \"\\xB1\", Poincareplane: \"\\u210C\", pointint: \"\\u2A15\", popf: \"\\u{1D561}\", Popf: \"\\u2119\", pound: \"\\xA3\", prap: \"\\u2AB7\", Pr: \"\\u2ABB\", pr: \"\\u227A\", prcue: \"\\u227C\", precapprox: \"\\u2AB7\", prec: \"\\u227A\", preccurlyeq: \"\\u227C\", Precedes: \"\\u227A\", PrecedesEqual: \"\\u2AAF\", PrecedesSlantEqual: \"\\u227C\", PrecedesTilde: \"\\u227E\", preceq: \"\\u2AAF\", precnapprox: \"\\u2AB9\", precneqq: \"\\u2AB5\", precnsim: \"\\u22E8\", pre: \"\\u2AAF\", prE: \"\\u2AB3\", precsim: \"\\u227E\", prime: \"\\u2032\", Prime: \"\\u2033\", primes: \"\\u2119\", prnap: \"\\u2AB9\", prnE: \"\\u2AB5\", prnsim: \"\\u22E8\", prod: \"\\u220F\", Product: \"\\u220F\", profalar: \"\\u232E\", profline: \"\\u2312\", profsurf: \"\\u2313\", prop: \"\\u221D\", Proportional: \"\\u221D\", Proportion: \"\\u2237\", propto: \"\\u221D\", prsim: \"\\u227E\", prurel: \"\\u22B0\", Pscr: \"\\u{1D4AB}\", pscr: \"\\u{1D4C5}\", Psi: \"\\u03A8\", psi: \"\\u03C8\", puncsp: \"\\u2008\", Qfr: \"\\u{1D514}\", qfr: \"\\u{1D52E}\", qint: \"\\u2A0C\", qopf: \"\\u{1D562}\", Qopf: \"\\u211A\", qprime: \"\\u2057\", Qscr: \"\\u{1D4AC}\", qscr: \"\\u{1D4C6}\", quaternions: \"\\u210D\", quatint: \"\\u2A16\", quest: \"?\", questeq: \"\\u225F\", quot: '\"', QUOT: '\"', rAarr: \"\\u21DB\", race: \"\\u223D\\u0331\", Racute: \"\\u0154\", racute: \"\\u0155\", radic: \"\\u221A\", raemptyv: \"\\u29B3\", rang: \"\\u27E9\", Rang: \"\\u27EB\", rangd: \"\\u2992\", range: \"\\u29A5\", rangle: \"\\u27E9\", raquo: \"\\xBB\", rarrap: \"\\u2975\", rarrb: \"\\u21E5\", rarrbfs: \"\\u2920\", rarrc: \"\\u2933\", rarr: \"\\u2192\", Rarr: \"\\u21A0\", rArr: \"\\u21D2\", rarrfs: \"\\u291E\", rarrhk: \"\\u21AA\", rarrlp: \"\\u21AC\", rarrpl: \"\\u2945\", rarrsim: \"\\u2974\", Rarrtl: \"\\u2916\", rarrtl: \"\\u21A3\", rarrw: \"\\u219D\", ratail: \"\\u291A\", rAtail: \"\\u291C\", ratio: \"\\u2236\", rationals: \"\\u211A\", rbarr: \"\\u290D\", rBarr: \"\\u290F\", RBarr: \"\\u2910\", rbbrk: \"\\u2773\", rbrace: \"}\", rbrack: \"]\", rbrke: \"\\u298C\", rbrksld: \"\\u298E\", rbrkslu: \"\\u2990\", Rcaron: \"\\u0158\", rcaron: \"\\u0159\", Rcedil: \"\\u0156\", rcedil: \"\\u0157\", rceil: \"\\u2309\", rcub: \"}\", Rcy: \"\\u0420\", rcy: \"\\u0440\", rdca: \"\\u2937\", rdldhar: \"\\u2969\", rdquo: \"\\u201D\", rdquor: \"\\u201D\", rdsh: \"\\u21B3\", real: \"\\u211C\", realine: \"\\u211B\", realpart: \"\\u211C\", reals: \"\\u211D\", Re: \"\\u211C\", rect: \"\\u25AD\", reg: \"\\xAE\", REG: \"\\xAE\", ReverseElement: \"\\u220B\", ReverseEquilibrium: \"\\u21CB\", ReverseUpEquilibrium: \"\\u296F\", rfisht: \"\\u297D\", rfloor: \"\\u230B\", rfr: \"\\u{1D52F}\", Rfr: \"\\u211C\", rHar: \"\\u2964\", rhard: \"\\u21C1\", rharu: \"\\u21C0\", rharul: \"\\u296C\", Rho: \"\\u03A1\", rho: \"\\u03C1\", rhov: \"\\u03F1\", RightAngleBracket: \"\\u27E9\", RightArrowBar: \"\\u21E5\", rightarrow: \"\\u2192\", RightArrow: \"\\u2192\", Rightarrow: \"\\u21D2\", RightArrowLeftArrow: \"\\u21C4\", rightarrowtail: \"\\u21A3\", RightCeiling: \"\\u2309\", RightDoubleBracket: \"\\u27E7\", RightDownTeeVector: \"\\u295D\", RightDownVectorBar: \"\\u2955\", RightDownVector: \"\\u21C2\", RightFloor: \"\\u230B\", rightharpoondown: \"\\u21C1\", rightharpoonup: \"\\u21C0\", rightleftarrows: \"\\u21C4\", rightleftharpoons: \"\\u21CC\", rightrightarrows: \"\\u21C9\", rightsquigarrow: \"\\u219D\", RightTeeArrow: \"\\u21A6\", RightTee: \"\\u22A2\", RightTeeVector: \"\\u295B\", rightthreetimes: \"\\u22CC\", RightTriangleBar: \"\\u29D0\", RightTriangle: \"\\u22B3\", RightTriangleEqual: \"\\u22B5\", RightUpDownVector: \"\\u294F\", RightUpTeeVector: \"\\u295C\", RightUpVectorBar: \"\\u2954\", RightUpVector: \"\\u21BE\", RightVectorBar: \"\\u2953\", RightVector: \"\\u21C0\", ring: \"\\u02DA\", risingdotseq: \"\\u2253\", rlarr: \"\\u21C4\", rlhar: \"\\u21CC\", rlm: \"\\u200F\", rmoustache: \"\\u23B1\", rmoust: \"\\u23B1\", rnmid: \"\\u2AEE\", roang: \"\\u27ED\", roarr: \"\\u21FE\", robrk: \"\\u27E7\", ropar: \"\\u2986\", ropf: \"\\u{1D563}\", Ropf: \"\\u211D\", roplus: \"\\u2A2E\", rotimes: \"\\u2A35\", RoundImplies: \"\\u2970\", rpar: \")\", rpargt: \"\\u2994\", rppolint: \"\\u2A12\", rrarr: \"\\u21C9\", Rrightarrow: \"\\u21DB\", rsaquo: \"\\u203A\", rscr: \"\\u{1D4C7}\", Rscr: \"\\u211B\", rsh: \"\\u21B1\", Rsh: \"\\u21B1\", rsqb: \"]\", rsquo: \"\\u2019\", rsquor: \"\\u2019\", rthree: \"\\u22CC\", rtimes: \"\\u22CA\", rtri: \"\\u25B9\", rtrie: \"\\u22B5\", rtrif: \"\\u25B8\", rtriltri: \"\\u29CE\", RuleDelayed: \"\\u29F4\", ruluhar: \"\\u2968\", rx: \"\\u211E\", Sacute: \"\\u015A\", sacute: \"\\u015B\", sbquo: \"\\u201A\", scap: \"\\u2AB8\", Scaron: \"\\u0160\", scaron: \"\\u0161\", Sc: \"\\u2ABC\", sc: \"\\u227B\", sccue: \"\\u227D\", sce: \"\\u2AB0\", scE: \"\\u2AB4\", Scedil: \"\\u015E\", scedil: \"\\u015F\", Scirc: \"\\u015C\", scirc: \"\\u015D\", scnap: \"\\u2ABA\", scnE: \"\\u2AB6\", scnsim: \"\\u22E9\", scpolint: \"\\u2A13\", scsim: \"\\u227F\", Scy: \"\\u0421\", scy: \"\\u0441\", sdotb: \"\\u22A1\", sdot: \"\\u22C5\", sdote: \"\\u2A66\", searhk: \"\\u2925\", searr: \"\\u2198\", seArr: \"\\u21D8\", searrow: \"\\u2198\", sect: \"\\xA7\", semi: \";\", seswar: \"\\u2929\", setminus: \"\\u2216\", setmn: \"\\u2216\", sext: \"\\u2736\", Sfr: \"\\u{1D516}\", sfr: \"\\u{1D530}\", sfrown: \"\\u2322\", sharp: \"\\u266F\", SHCHcy: \"\\u0429\", shchcy: \"\\u0449\", SHcy: \"\\u0428\", shcy: \"\\u0448\", ShortDownArrow: \"\\u2193\", ShortLeftArrow: \"\\u2190\", shortmid: \"\\u2223\", shortparallel: \"\\u2225\", ShortRightArrow: \"\\u2192\", ShortUpArrow: \"\\u2191\", shy: \"\\xAD\", Sigma: \"\\u03A3\", sigma: \"\\u03C3\", sigmaf: \"\\u03C2\", sigmav: \"\\u03C2\", sim: \"\\u223C\", simdot: \"\\u2A6A\", sime: \"\\u2243\", simeq: \"\\u2243\", simg: \"\\u2A9E\", simgE: \"\\u2AA0\", siml: \"\\u2A9D\", simlE: \"\\u2A9F\", simne: \"\\u2246\", simplus: \"\\u2A24\", simrarr: \"\\u2972\", slarr: \"\\u2190\", SmallCircle: \"\\u2218\", smallsetminus: \"\\u2216\", smashp: \"\\u2A33\", smeparsl: \"\\u29E4\", smid: \"\\u2223\", smile: \"\\u2323\", smt: \"\\u2AAA\", smte: \"\\u2AAC\", smtes: \"\\u2AAC\\uFE00\", SOFTcy: \"\\u042C\", softcy: \"\\u044C\", solbar: \"\\u233F\", solb: \"\\u29C4\", sol: \"/\", Sopf: \"\\u{1D54A}\", sopf: \"\\u{1D564}\", spades: \"\\u2660\", spadesuit: \"\\u2660\", spar: \"\\u2225\", sqcap: \"\\u2293\", sqcaps: \"\\u2293\\uFE00\", sqcup: \"\\u2294\", sqcups: \"\\u2294\\uFE00\", Sqrt: \"\\u221A\", sqsub: \"\\u228F\", sqsube: \"\\u2291\", sqsubset: \"\\u228F\", sqsubseteq: \"\\u2291\", sqsup: \"\\u2290\", sqsupe: \"\\u2292\", sqsupset: \"\\u2290\", sqsupseteq: \"\\u2292\", square: \"\\u25A1\", Square: \"\\u25A1\", SquareIntersection: \"\\u2293\", SquareSubset: \"\\u228F\", SquareSubsetEqual: \"\\u2291\", SquareSuperset: \"\\u2290\", SquareSupersetEqual: \"\\u2292\", SquareUnion: \"\\u2294\", squarf: \"\\u25AA\", squ: \"\\u25A1\", squf: \"\\u25AA\", srarr: \"\\u2192\", Sscr: \"\\u{1D4AE}\", sscr: \"\\u{1D4C8}\", ssetmn: \"\\u2216\", ssmile: \"\\u2323\", sstarf: \"\\u22C6\", Star: \"\\u22C6\", star: \"\\u2606\", starf: \"\\u2605\", straightepsilon: \"\\u03F5\", straightphi: \"\\u03D5\", strns: \"\\xAF\", sub: \"\\u2282\", Sub: \"\\u22D0\", subdot: \"\\u2ABD\", subE: \"\\u2AC5\", sube: \"\\u2286\", subedot: \"\\u2AC3\", submult: \"\\u2AC1\", subnE: \"\\u2ACB\", subne: \"\\u228A\", subplus: \"\\u2ABF\", subrarr: \"\\u2979\", subset: \"\\u2282\", Subset: \"\\u22D0\", subseteq: \"\\u2286\", subseteqq: \"\\u2AC5\", SubsetEqual: \"\\u2286\", subsetneq: \"\\u228A\", subsetneqq: \"\\u2ACB\", subsim: \"\\u2AC7\", subsub: \"\\u2AD5\", subsup: \"\\u2AD3\", succapprox: \"\\u2AB8\", succ: \"\\u227B\", succcurlyeq: \"\\u227D\", Succeeds: \"\\u227B\", SucceedsEqual: \"\\u2AB0\", SucceedsSlantEqual: \"\\u227D\", SucceedsTilde: \"\\u227F\", succeq: \"\\u2AB0\", succnapprox: \"\\u2ABA\", succneqq: \"\\u2AB6\", succnsim: \"\\u22E9\", succsim: \"\\u227F\", SuchThat: \"\\u220B\", sum: \"\\u2211\", Sum: \"\\u2211\", sung: \"\\u266A\", sup1: \"\\xB9\", sup2: \"\\xB2\", sup3: \"\\xB3\", sup: \"\\u2283\", Sup: \"\\u22D1\", supdot: \"\\u2ABE\", supdsub: \"\\u2AD8\", supE: \"\\u2AC6\", supe: \"\\u2287\", supedot: \"\\u2AC4\", Superset: \"\\u2283\", SupersetEqual: \"\\u2287\", suphsol: \"\\u27C9\", suphsub: \"\\u2AD7\", suplarr: \"\\u297B\", supmult: \"\\u2AC2\", supnE: \"\\u2ACC\", supne: \"\\u228B\", supplus: \"\\u2AC0\", supset: \"\\u2283\", Supset: \"\\u22D1\", supseteq: \"\\u2287\", supseteqq: \"\\u2AC6\", supsetneq: \"\\u228B\", supsetneqq: \"\\u2ACC\", supsim: \"\\u2AC8\", supsub: \"\\u2AD4\", supsup: \"\\u2AD6\", swarhk: \"\\u2926\", swarr: \"\\u2199\", swArr: \"\\u21D9\", swarrow: \"\\u2199\", swnwar: \"\\u292A\", szlig: \"\\xDF\", Tab: \"\t\", target: \"\\u2316\", Tau: \"\\u03A4\", tau: \"\\u03C4\", tbrk: \"\\u23B4\", Tcaron: \"\\u0164\", tcaron: \"\\u0165\", Tcedil: \"\\u0162\", tcedil: \"\\u0163\", Tcy: \"\\u0422\", tcy: \"\\u0442\", tdot: \"\\u20DB\", telrec: \"\\u2315\", Tfr: \"\\u{1D517}\", tfr: \"\\u{1D531}\", there4: \"\\u2234\", therefore: \"\\u2234\", Therefore: \"\\u2234\", Theta: \"\\u0398\", theta: \"\\u03B8\", thetasym: \"\\u03D1\", thetav: \"\\u03D1\", thickapprox: \"\\u2248\", thicksim: \"\\u223C\", ThickSpace: \"\\u205F\\u200A\", ThinSpace: \"\\u2009\", thinsp: \"\\u2009\", thkap: \"\\u2248\", thksim: \"\\u223C\", THORN: \"\\xDE\", thorn: \"\\xFE\", tilde: \"\\u02DC\", Tilde: \"\\u223C\", TildeEqual: \"\\u2243\", TildeFullEqual: \"\\u2245\", TildeTilde: \"\\u2248\", timesbar: \"\\u2A31\", timesb: \"\\u22A0\", times: \"\\xD7\", timesd: \"\\u2A30\", tint: \"\\u222D\", toea: \"\\u2928\", topbot: \"\\u2336\", topcir: \"\\u2AF1\", top: \"\\u22A4\", Topf: \"\\u{1D54B}\", topf: \"\\u{1D565}\", topfork: \"\\u2ADA\", tosa: \"\\u2929\", tprime: \"\\u2034\", trade: \"\\u2122\", TRADE: \"\\u2122\", triangle: \"\\u25B5\", triangledown: \"\\u25BF\", triangleleft: \"\\u25C3\", trianglelefteq: \"\\u22B4\", triangleq: \"\\u225C\", triangleright: \"\\u25B9\", trianglerighteq: \"\\u22B5\", tridot: \"\\u25EC\", trie: \"\\u225C\", triminus: \"\\u2A3A\", TripleDot: \"\\u20DB\", triplus: \"\\u2A39\", trisb: \"\\u29CD\", tritime: \"\\u2A3B\", trpezium: \"\\u23E2\", Tscr: \"\\u{1D4AF}\", tscr: \"\\u{1D4C9}\", TScy: \"\\u0426\", tscy: \"\\u0446\", TSHcy: \"\\u040B\", tshcy: \"\\u045B\", Tstrok: \"\\u0166\", tstrok: \"\\u0167\", twixt: \"\\u226C\", twoheadleftarrow: \"\\u219E\", twoheadrightarrow: \"\\u21A0\", Uacute: \"\\xDA\", uacute: \"\\xFA\", uarr: \"\\u2191\", Uarr: \"\\u219F\", uArr: \"\\u21D1\", Uarrocir: \"\\u2949\", Ubrcy: \"\\u040E\", ubrcy: \"\\u045E\", Ubreve: \"\\u016C\", ubreve: \"\\u016D\", Ucirc: \"\\xDB\", ucirc: \"\\xFB\", Ucy: \"\\u0423\", ucy: \"\\u0443\", udarr: \"\\u21C5\", Udblac: \"\\u0170\", udblac: \"\\u0171\", udhar: \"\\u296E\", ufisht: \"\\u297E\", Ufr: \"\\u{1D518}\", ufr: \"\\u{1D532}\", Ugrave: \"\\xD9\", ugrave: \"\\xF9\", uHar: \"\\u2963\", uharl: \"\\u21BF\", uharr: \"\\u21BE\", uhblk: \"\\u2580\", ulcorn: \"\\u231C\", ulcorner: \"\\u231C\", ulcrop: \"\\u230F\", ultri: \"\\u25F8\", Umacr: \"\\u016A\", umacr: \"\\u016B\", uml: \"\\xA8\", UnderBar: \"_\", UnderBrace: \"\\u23DF\", UnderBracket: \"\\u23B5\", UnderParenthesis: \"\\u23DD\", Union: \"\\u22C3\", UnionPlus: \"\\u228E\", Uogon: \"\\u0172\", uogon: \"\\u0173\", Uopf: \"\\u{1D54C}\", uopf: \"\\u{1D566}\", UpArrowBar: \"\\u2912\", uparrow: \"\\u2191\", UpArrow: \"\\u2191\", Uparrow: \"\\u21D1\", UpArrowDownArrow: \"\\u21C5\", updownarrow: \"\\u2195\", UpDownArrow: \"\\u2195\", Updownarrow: \"\\u21D5\", UpEquilibrium: \"\\u296E\", upharpoonleft: \"\\u21BF\", upharpoonright: \"\\u21BE\", uplus: \"\\u228E\", UpperLeftArrow: \"\\u2196\", UpperRightArrow: \"\\u2197\", upsi: \"\\u03C5\", Upsi: \"\\u03D2\", upsih: \"\\u03D2\", Upsilon: \"\\u03A5\", upsilon: \"\\u03C5\", UpTeeArrow: \"\\u21A5\", UpTee: \"\\u22A5\", upuparrows: \"\\u21C8\", urcorn: \"\\u231D\", urcorner: \"\\u231D\", urcrop: \"\\u230E\", Uring: \"\\u016E\", uring: \"\\u016F\", urtri: \"\\u25F9\", Uscr: \"\\u{1D4B0}\", uscr: \"\\u{1D4CA}\", utdot: \"\\u22F0\", Utilde: \"\\u0168\", utilde: \"\\u0169\", utri: \"\\u25B5\", utrif: \"\\u25B4\", uuarr: \"\\u21C8\", Uuml: \"\\xDC\", uuml: \"\\xFC\", uwangle: \"\\u29A7\", vangrt: \"\\u299C\", varepsilon: \"\\u03F5\", varkappa: \"\\u03F0\", varnothing: \"\\u2205\", varphi: \"\\u03D5\", varpi: \"\\u03D6\", varpropto: \"\\u221D\", varr: \"\\u2195\", vArr: \"\\u21D5\", varrho: \"\\u03F1\", varsigma: \"\\u03C2\", varsubsetneq: \"\\u228A\\uFE00\", varsubsetneqq: \"\\u2ACB\\uFE00\", varsupsetneq: \"\\u228B\\uFE00\", varsupsetneqq: \"\\u2ACC\\uFE00\", vartheta: \"\\u03D1\", vartriangleleft: \"\\u22B2\", vartriangleright: \"\\u22B3\", vBar: \"\\u2AE8\", Vbar: \"\\u2AEB\", vBarv: \"\\u2AE9\", Vcy: \"\\u0412\", vcy: \"\\u0432\", vdash: \"\\u22A2\", vDash: \"\\u22A8\", Vdash: \"\\u22A9\", VDash: \"\\u22AB\", Vdashl: \"\\u2AE6\", veebar: \"\\u22BB\", vee: \"\\u2228\", Vee: \"\\u22C1\", veeeq: \"\\u225A\", vellip: \"\\u22EE\", verbar: \"|\", Verbar: \"\\u2016\", vert: \"|\", Vert: \"\\u2016\", VerticalBar: \"\\u2223\", VerticalLine: \"|\", VerticalSeparator: \"\\u2758\", VerticalTilde: \"\\u2240\", VeryThinSpace: \"\\u200A\", Vfr: \"\\u{1D519}\", vfr: \"\\u{1D533}\", vltri: \"\\u22B2\", vnsub: \"\\u2282\\u20D2\", vnsup: \"\\u2283\\u20D2\", Vopf: \"\\u{1D54D}\", vopf: \"\\u{1D567}\", vprop: \"\\u221D\", vrtri: \"\\u22B3\", Vscr: \"\\u{1D4B1}\", vscr: \"\\u{1D4CB}\", vsubnE: \"\\u2ACB\\uFE00\", vsubne: \"\\u228A\\uFE00\", vsupnE: \"\\u2ACC\\uFE00\", vsupne: \"\\u228B\\uFE00\", Vvdash: \"\\u22AA\", vzigzag: \"\\u299A\", Wcirc: \"\\u0174\", wcirc: \"\\u0175\", wedbar: \"\\u2A5F\", wedge: \"\\u2227\", Wedge: \"\\u22C0\", wedgeq: \"\\u2259\", weierp: \"\\u2118\", Wfr: \"\\u{1D51A}\", wfr: \"\\u{1D534}\", Wopf: \"\\u{1D54E}\", wopf: \"\\u{1D568}\", wp: \"\\u2118\", wr: \"\\u2240\", wreath: \"\\u2240\", Wscr: \"\\u{1D4B2}\", wscr: \"\\u{1D4CC}\", xcap: \"\\u22C2\", xcirc: \"\\u25EF\", xcup: \"\\u22C3\", xdtri: \"\\u25BD\", Xfr: \"\\u{1D51B}\", xfr: \"\\u{1D535}\", xharr: \"\\u27F7\", xhArr: \"\\u27FA\", Xi: \"\\u039E\", xi: \"\\u03BE\", xlarr: \"\\u27F5\", xlArr: \"\\u27F8\", xmap: \"\\u27FC\", xnis: \"\\u22FB\", xodot: \"\\u2A00\", Xopf: \"\\u{1D54F}\", xopf: \"\\u{1D569}\", xoplus: \"\\u2A01\", xotime: \"\\u2A02\", xrarr: \"\\u27F6\", xrArr: \"\\u27F9\", Xscr: \"\\u{1D4B3}\", xscr: \"\\u{1D4CD}\", xsqcup: \"\\u2A06\", xuplus: \"\\u2A04\", xutri: \"\\u25B3\", xvee: \"\\u22C1\", xwedge: \"\\u22C0\", Yacute: \"\\xDD\", yacute: \"\\xFD\", YAcy: \"\\u042F\", yacy: \"\\u044F\", Ycirc: \"\\u0176\", ycirc: \"\\u0177\", Ycy: \"\\u042B\", ycy: \"\\u044B\", yen: \"\\xA5\", Yfr: \"\\u{1D51C}\", yfr: \"\\u{1D536}\", YIcy: \"\\u0407\", yicy: \"\\u0457\", Yopf: \"\\u{1D550}\", yopf: \"\\u{1D56A}\", Yscr: \"\\u{1D4B4}\", yscr: \"\\u{1D4CE}\", YUcy: \"\\u042E\", yucy: \"\\u044E\", yuml: \"\\xFF\", Yuml: \"\\u0178\", Zacute: \"\\u0179\", zacute: \"\\u017A\", Zcaron: \"\\u017D\", zcaron: \"\\u017E\", Zcy: \"\\u0417\", zcy: \"\\u0437\", Zdot: \"\\u017B\", zdot: \"\\u017C\", zeetrf: \"\\u2128\", ZeroWidthSpace: \"\\u200B\", Zeta: \"\\u0396\", zeta: \"\\u03B6\", zfr: \"\\u{1D537}\", Zfr: \"\\u2128\", ZHcy: \"\\u0416\", zhcy: \"\\u0436\", zigrarr: \"\\u21DD\", zopf: \"\\u{1D56B}\", Zopf: \"\\u2124\", Zscr: \"\\u{1D4B5}\", zscr: \"\\u{1D4CF}\", zwj: \"\\u200D\", zwnj: \"\\u200C\" };\n }\n});\n\n// node_modules/dom-serializer/node_modules/entities/lib/maps/legacy.json\nvar require_legacy = __commonJS({\n \"node_modules/dom-serializer/node_modules/entities/lib/maps/legacy.json\"(exports2, module2) {\n module2.exports = { Aacute: \"\\xC1\", aacute: \"\\xE1\", Acirc: \"\\xC2\", acirc: \"\\xE2\", acute: \"\\xB4\", AElig: \"\\xC6\", aelig: \"\\xE6\", Agrave: \"\\xC0\", agrave: \"\\xE0\", amp: \"&\", AMP: \"&\", Aring: \"\\xC5\", aring: \"\\xE5\", Atilde: \"\\xC3\", atilde: \"\\xE3\", Auml: \"\\xC4\", auml: \"\\xE4\", brvbar: \"\\xA6\", Ccedil: \"\\xC7\", ccedil: \"\\xE7\", cedil: \"\\xB8\", cent: \"\\xA2\", copy: \"\\xA9\", COPY: \"\\xA9\", curren: \"\\xA4\", deg: \"\\xB0\", divide: \"\\xF7\", Eacute: \"\\xC9\", eacute: \"\\xE9\", Ecirc: \"\\xCA\", ecirc: \"\\xEA\", Egrave: \"\\xC8\", egrave: \"\\xE8\", ETH: \"\\xD0\", eth: \"\\xF0\", Euml: \"\\xCB\", euml: \"\\xEB\", frac12: \"\\xBD\", frac14: \"\\xBC\", frac34: \"\\xBE\", gt: \">\", GT: \">\", Iacute: \"\\xCD\", iacute: \"\\xED\", Icirc: \"\\xCE\", icirc: \"\\xEE\", iexcl: \"\\xA1\", Igrave: \"\\xCC\", igrave: \"\\xEC\", iquest: \"\\xBF\", Iuml: \"\\xCF\", iuml: \"\\xEF\", laquo: \"\\xAB\", lt: \"<\", LT: \"<\", macr: \"\\xAF\", micro: \"\\xB5\", middot: \"\\xB7\", nbsp: \"\\xA0\", not: \"\\xAC\", Ntilde: \"\\xD1\", ntilde: \"\\xF1\", Oacute: \"\\xD3\", oacute: \"\\xF3\", Ocirc: \"\\xD4\", ocirc: \"\\xF4\", Ograve: \"\\xD2\", ograve: \"\\xF2\", ordf: \"\\xAA\", ordm: \"\\xBA\", Oslash: \"\\xD8\", oslash: \"\\xF8\", Otilde: \"\\xD5\", otilde: \"\\xF5\", Ouml: \"\\xD6\", ouml: \"\\xF6\", para: \"\\xB6\", plusmn: \"\\xB1\", pound: \"\\xA3\", quot: '\"', QUOT: '\"', raquo: \"\\xBB\", reg: \"\\xAE\", REG: \"\\xAE\", sect: \"\\xA7\", shy: \"\\xAD\", sup1: \"\\xB9\", sup2: \"\\xB2\", sup3: \"\\xB3\", szlig: \"\\xDF\", THORN: \"\\xDE\", thorn: \"\\xFE\", times: \"\\xD7\", Uacute: \"\\xDA\", uacute: \"\\xFA\", Ucirc: \"\\xDB\", ucirc: \"\\xFB\", Ugrave: \"\\xD9\", ugrave: \"\\xF9\", uml: \"\\xA8\", Uuml: \"\\xDC\", uuml: \"\\xFC\", Yacute: \"\\xDD\", yacute: \"\\xFD\", yen: \"\\xA5\", yuml: \"\\xFF\" };\n }\n});\n\n// node_modules/dom-serializer/node_modules/entities/lib/maps/xml.json\nvar require_xml = __commonJS({\n \"node_modules/dom-serializer/node_modules/entities/lib/maps/xml.json\"(exports2, module2) {\n module2.exports = { amp: \"&\", apos: \"'\", gt: \">\", lt: \"<\", quot: '\"' };\n }\n});\n\n// node_modules/dom-serializer/node_modules/entities/lib/maps/decode.json\nvar require_decode = __commonJS({\n \"node_modules/dom-serializer/node_modules/entities/lib/maps/decode.json\"(exports2, module2) {\n module2.exports = { \"0\": 65533, \"128\": 8364, \"130\": 8218, \"131\": 402, \"132\": 8222, \"133\": 8230, \"134\": 8224, \"135\": 8225, \"136\": 710, \"137\": 8240, \"138\": 352, \"139\": 8249, \"140\": 338, \"142\": 381, \"145\": 8216, \"146\": 8217, \"147\": 8220, \"148\": 8221, \"149\": 8226, \"150\": 8211, \"151\": 8212, \"152\": 732, \"153\": 8482, \"154\": 353, \"155\": 8250, \"156\": 339, \"158\": 382, \"159\": 376 };\n }\n});\n\n// node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js\nvar require_decode_codepoint = __commonJS({\n \"node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js\"(exports2) {\n \"use strict\";\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n var decode_json_1 = __importDefault2(require_decode());\n var fromCodePoint = String.fromCodePoint || function(codePoint) {\n var output = \"\";\n if (codePoint > 65535) {\n codePoint -= 65536;\n output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);\n codePoint = 56320 | codePoint & 1023;\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\n function decodeCodePoint(codePoint) {\n if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint(codePoint);\n }\n exports2.default = decodeCodePoint;\n }\n});\n\n// node_modules/dom-serializer/node_modules/entities/lib/decode.js\nvar require_decode2 = __commonJS({\n \"node_modules/dom-serializer/node_modules/entities/lib/decode.js\"(exports2) {\n \"use strict\";\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.decodeHTML = exports2.decodeHTMLStrict = exports2.decodeXML = void 0;\n var entities_json_1 = __importDefault2(require_entities());\n var legacy_json_1 = __importDefault2(require_legacy());\n var xml_json_1 = __importDefault2(require_xml());\n var decode_codepoint_1 = __importDefault2(require_decode_codepoint());\n var strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\n exports2.decodeXML = getStrictDecoder(xml_json_1.default);\n exports2.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\n function getStrictDecoder(map2) {\n var replace = getReplacer(map2);\n return function(str) {\n return String(str).replace(strictEntityRe, replace);\n };\n }\n var sorter = function(a5, b4) {\n return a5 < b4 ? 1 : -1;\n };\n exports2.decodeHTML = function() {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys3 = Object.keys(entities_json_1.default).sort(sorter);\n for (var i3 = 0, j4 = 0; i3 < keys3.length; i3++) {\n if (legacy[j4] === keys3[i3]) {\n keys3[i3] += \";?\";\n j4++;\n } else {\n keys3[i3] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys3.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n return function(str) {\n return String(str).replace(re, replacer);\n };\n }();\n function getReplacer(map2) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n return map2[str.slice(1, -1)] || str;\n };\n }\n }\n});\n\n// node_modules/dom-serializer/node_modules/entities/lib/encode.js\nvar require_encode = __commonJS({\n \"node_modules/dom-serializer/node_modules/entities/lib/encode.js\"(exports2) {\n \"use strict\";\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.escapeUTF8 = exports2.escape = exports2.encodeNonAsciiHTML = exports2.encodeHTML = exports2.encodeXML = void 0;\n var xml_json_1 = __importDefault2(require_xml());\n var inverseXML = getInverseObj(xml_json_1.default);\n var xmlReplacer = getInverseReplacer(inverseXML);\n exports2.encodeXML = getASCIIEncoder(inverseXML);\n var entities_json_1 = __importDefault2(require_entities());\n var inverseHTML = getInverseObj(entities_json_1.default);\n var htmlReplacer = getInverseReplacer(inverseHTML);\n exports2.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n exports2.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\n function getInverseObj(obj) {\n return Object.keys(obj).sort().reduce(function(inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n }\n function getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k4 = _a[_i];\n if (k4.length === 1) {\n single.push(\"\\\\\" + k4);\n } else {\n multiple.push(k4);\n }\n }\n single.sort();\n for (var start3 = 0; start3 < single.length - 1; start3++) {\n var end3 = start3;\n while (end3 < single.length - 1 && single[end3].charCodeAt(1) + 1 === single[end3 + 1].charCodeAt(1)) {\n end3 += 1;\n }\n var count = 1 + end3 - start3;\n if (count < 3)\n continue;\n single.splice(start3, count, single[start3] + \"-\" + single[end3]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n }\n var reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\n var getCodePoint = String.prototype.codePointAt != null ? function(str) {\n return str.codePointAt(0);\n } : function(c3) {\n return (c3.charCodeAt(0) - 55296) * 1024 + c3.charCodeAt(1) - 56320 + 65536;\n };\n function singleCharReplacer(c3) {\n return \"&#x\" + (c3.length > 1 ? getCodePoint(c3) : c3.charCodeAt(0)).toString(16).toUpperCase() + \";\";\n }\n function getInverse(inverse, re) {\n return function(data) {\n return data.replace(re, function(name) {\n return inverse[name];\n }).replace(reNonASCII, singleCharReplacer);\n };\n }\n var reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n function escape(data) {\n return data.replace(reEscapeChars, singleCharReplacer);\n }\n exports2.escape = escape;\n function escapeUTF8(data) {\n return data.replace(xmlReplacer, singleCharReplacer);\n }\n exports2.escapeUTF8 = escapeUTF8;\n function getASCIIEncoder(obj) {\n return function(data) {\n return data.replace(reEscapeChars, function(c3) {\n return obj[c3] || singleCharReplacer(c3);\n });\n };\n }\n }\n});\n\n// node_modules/dom-serializer/node_modules/entities/lib/index.js\nvar require_lib4 = __commonJS({\n \"node_modules/dom-serializer/node_modules/entities/lib/index.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.decodeXMLStrict = exports2.decodeHTML5Strict = exports2.decodeHTML4Strict = exports2.decodeHTML5 = exports2.decodeHTML4 = exports2.decodeHTMLStrict = exports2.decodeHTML = exports2.decodeXML = exports2.encodeHTML5 = exports2.encodeHTML4 = exports2.escapeUTF8 = exports2.escape = exports2.encodeNonAsciiHTML = exports2.encodeHTML = exports2.encodeXML = exports2.encode = exports2.decodeStrict = exports2.decode = void 0;\n var decode_1 = require_decode2();\n var encode_1 = require_encode();\n function decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n }\n exports2.decode = decode;\n function decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n }\n exports2.decodeStrict = decodeStrict;\n function encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n }\n exports2.encode = encode;\n var encode_2 = require_encode();\n Object.defineProperty(exports2, \"encodeXML\", { enumerable: true, get: function() {\n return encode_2.encodeXML;\n } });\n Object.defineProperty(exports2, \"encodeHTML\", { enumerable: true, get: function() {\n return encode_2.encodeHTML;\n } });\n Object.defineProperty(exports2, \"encodeNonAsciiHTML\", { enumerable: true, get: function() {\n return encode_2.encodeNonAsciiHTML;\n } });\n Object.defineProperty(exports2, \"escape\", { enumerable: true, get: function() {\n return encode_2.escape;\n } });\n Object.defineProperty(exports2, \"escapeUTF8\", { enumerable: true, get: function() {\n return encode_2.escapeUTF8;\n } });\n Object.defineProperty(exports2, \"encodeHTML4\", { enumerable: true, get: function() {\n return encode_2.encodeHTML;\n } });\n Object.defineProperty(exports2, \"encodeHTML5\", { enumerable: true, get: function() {\n return encode_2.encodeHTML;\n } });\n var decode_2 = require_decode2();\n Object.defineProperty(exports2, \"decodeXML\", { enumerable: true, get: function() {\n return decode_2.decodeXML;\n } });\n Object.defineProperty(exports2, \"decodeHTML\", { enumerable: true, get: function() {\n return decode_2.decodeHTML;\n } });\n Object.defineProperty(exports2, \"decodeHTMLStrict\", { enumerable: true, get: function() {\n return decode_2.decodeHTMLStrict;\n } });\n Object.defineProperty(exports2, \"decodeHTML4\", { enumerable: true, get: function() {\n return decode_2.decodeHTML;\n } });\n Object.defineProperty(exports2, \"decodeHTML5\", { enumerable: true, get: function() {\n return decode_2.decodeHTML;\n } });\n Object.defineProperty(exports2, \"decodeHTML4Strict\", { enumerable: true, get: function() {\n return decode_2.decodeHTMLStrict;\n } });\n Object.defineProperty(exports2, \"decodeHTML5Strict\", { enumerable: true, get: function() {\n return decode_2.decodeHTMLStrict;\n } });\n Object.defineProperty(exports2, \"decodeXMLStrict\", { enumerable: true, get: function() {\n return decode_2.decodeXML;\n } });\n }\n});\n\n// node_modules/dom-serializer/lib/foreignNames.js\nvar require_foreignNames = __commonJS({\n \"node_modules/dom-serializer/lib/foreignNames.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.attributeNames = exports2.elementNames = void 0;\n exports2.elementNames = /* @__PURE__ */ new Map([\n [\"altglyph\", \"altGlyph\"],\n [\"altglyphdef\", \"altGlyphDef\"],\n [\"altglyphitem\", \"altGlyphItem\"],\n [\"animatecolor\", \"animateColor\"],\n [\"animatemotion\", \"animateMotion\"],\n [\"animatetransform\", \"animateTransform\"],\n [\"clippath\", \"clipPath\"],\n [\"feblend\", \"feBlend\"],\n [\"fecolormatrix\", \"feColorMatrix\"],\n [\"fecomponenttransfer\", \"feComponentTransfer\"],\n [\"fecomposite\", \"feComposite\"],\n [\"feconvolvematrix\", \"feConvolveMatrix\"],\n [\"fediffuselighting\", \"feDiffuseLighting\"],\n [\"fedisplacementmap\", \"feDisplacementMap\"],\n [\"fedistantlight\", \"feDistantLight\"],\n [\"fedropshadow\", \"feDropShadow\"],\n [\"feflood\", \"feFlood\"],\n [\"fefunca\", \"feFuncA\"],\n [\"fefuncb\", \"feFuncB\"],\n [\"fefuncg\", \"feFuncG\"],\n [\"fefuncr\", \"feFuncR\"],\n [\"fegaussianblur\", \"feGaussianBlur\"],\n [\"feimage\", \"feImage\"],\n [\"femerge\", \"feMerge\"],\n [\"femergenode\", \"feMergeNode\"],\n [\"femorphology\", \"feMorphology\"],\n [\"feoffset\", \"feOffset\"],\n [\"fepointlight\", \"fePointLight\"],\n [\"fespecularlighting\", \"feSpecularLighting\"],\n [\"fespotlight\", \"feSpotLight\"],\n [\"fetile\", \"feTile\"],\n [\"feturbulence\", \"feTurbulence\"],\n [\"foreignobject\", \"foreignObject\"],\n [\"glyphref\", \"glyphRef\"],\n [\"lineargradient\", \"linearGradient\"],\n [\"radialgradient\", \"radialGradient\"],\n [\"textpath\", \"textPath\"]\n ]);\n exports2.attributeNames = /* @__PURE__ */ new Map([\n [\"definitionurl\", \"definitionURL\"],\n [\"attributename\", \"attributeName\"],\n [\"attributetype\", \"attributeType\"],\n [\"basefrequency\", \"baseFrequency\"],\n [\"baseprofile\", \"baseProfile\"],\n [\"calcmode\", \"calcMode\"],\n [\"clippathunits\", \"clipPathUnits\"],\n [\"diffuseconstant\", \"diffuseConstant\"],\n [\"edgemode\", \"edgeMode\"],\n [\"filterunits\", \"filterUnits\"],\n [\"glyphref\", \"glyphRef\"],\n [\"gradienttransform\", \"gradientTransform\"],\n [\"gradientunits\", \"gradientUnits\"],\n [\"kernelmatrix\", \"kernelMatrix\"],\n [\"kernelunitlength\", \"kernelUnitLength\"],\n [\"keypoints\", \"keyPoints\"],\n [\"keysplines\", \"keySplines\"],\n [\"keytimes\", \"keyTimes\"],\n [\"lengthadjust\", \"lengthAdjust\"],\n [\"limitingconeangle\", \"limitingConeAngle\"],\n [\"markerheight\", \"markerHeight\"],\n [\"markerunits\", \"markerUnits\"],\n [\"markerwidth\", \"markerWidth\"],\n [\"maskcontentunits\", \"maskContentUnits\"],\n [\"maskunits\", \"maskUnits\"],\n [\"numoctaves\", \"numOctaves\"],\n [\"pathlength\", \"pathLength\"],\n [\"patterncontentunits\", \"patternContentUnits\"],\n [\"patterntransform\", \"patternTransform\"],\n [\"patternunits\", \"patternUnits\"],\n [\"pointsatx\", \"pointsAtX\"],\n [\"pointsaty\", \"pointsAtY\"],\n [\"pointsatz\", \"pointsAtZ\"],\n [\"preservealpha\", \"preserveAlpha\"],\n [\"preserveaspectratio\", \"preserveAspectRatio\"],\n [\"primitiveunits\", \"primitiveUnits\"],\n [\"refx\", \"refX\"],\n [\"refy\", \"refY\"],\n [\"repeatcount\", \"repeatCount\"],\n [\"repeatdur\", \"repeatDur\"],\n [\"requiredextensions\", \"requiredExtensions\"],\n [\"requiredfeatures\", \"requiredFeatures\"],\n [\"specularconstant\", \"specularConstant\"],\n [\"specularexponent\", \"specularExponent\"],\n [\"spreadmethod\", \"spreadMethod\"],\n [\"startoffset\", \"startOffset\"],\n [\"stddeviation\", \"stdDeviation\"],\n [\"stitchtiles\", \"stitchTiles\"],\n [\"surfacescale\", \"surfaceScale\"],\n [\"systemlanguage\", \"systemLanguage\"],\n [\"tablevalues\", \"tableValues\"],\n [\"targetx\", \"targetX\"],\n [\"targety\", \"targetY\"],\n [\"textlength\", \"textLength\"],\n [\"viewbox\", \"viewBox\"],\n [\"viewtarget\", \"viewTarget\"],\n [\"xchannelselector\", \"xChannelSelector\"],\n [\"ychannelselector\", \"yChannelSelector\"],\n [\"zoomandpan\", \"zoomAndPan\"]\n ]);\n }\n});\n\n// node_modules/dom-serializer/lib/index.js\nvar require_lib5 = __commonJS({\n \"node_modules/dom-serializer/lib/index.js\"(exports2) {\n \"use strict\";\n var __assign4 = exports2 && exports2.__assign || function() {\n __assign4 = Object.assign || function(t4) {\n for (var s3, i3 = 1, n5 = arguments.length; i3 < n5; i3++) {\n s3 = arguments[i3];\n for (var p4 in s3)\n if (Object.prototype.hasOwnProperty.call(s3, p4))\n t4[p4] = s3[p4];\n }\n return t4;\n };\n return __assign4.apply(this, arguments);\n };\n var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n Object.defineProperty(o3, k22, { enumerable: true, get: function() {\n return m2[k4];\n } });\n } : function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n o3[k22] = m2[k4];\n });\n var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o3, v4) {\n Object.defineProperty(o3, \"default\", { enumerable: true, value: v4 });\n } : function(o3, v4) {\n o3[\"default\"] = v4;\n });\n var __importStar2 = exports2 && exports2.__importStar || function(mod) {\n if (mod && mod.__esModule)\n return mod;\n var result = {};\n if (mod != null) {\n for (var k4 in mod)\n if (k4 !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k4))\n __createBinding2(result, mod, k4);\n }\n __setModuleDefault(result, mod);\n return result;\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n var ElementType = __importStar2(require_lib2());\n var entities_1 = require_lib4();\n var foreignNames_1 = require_foreignNames();\n var unencodedElements = /* @__PURE__ */ new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\"\n ]);\n function formatAttributes(attributes, opts) {\n if (!attributes)\n return;\n return Object.keys(attributes).map(function(key) {\n var _a, _b;\n var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n key = (_b = foreignNames_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return key + '=\"' + (opts.decodeEntities !== false ? entities_1.encodeXML(value) : value.replace(/\"/g, \""\")) + '\"';\n }).join(\" \");\n }\n var singleTag = /* @__PURE__ */ new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\"\n ]);\n function render3(node, options) {\n if (options === void 0) {\n options = {};\n }\n var nodes = \"length\" in node ? node : [node];\n var output = \"\";\n for (var i3 = 0; i3 < nodes.length; i3++) {\n output += renderNode(nodes[i3], options);\n }\n return output;\n }\n exports2.default = render3;\n function renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render3(node.children, options);\n case ElementType.Directive:\n case ElementType.Doctype:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n }\n var foreignModeIntegrationPoints = /* @__PURE__ */ new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\"\n ]);\n var foreignElements = /* @__PURE__ */ new Set([\"svg\", \"math\"]);\n function renderTag(elem, opts) {\n var _a;\n if (opts.xmlMode === \"foreign\") {\n elem.name = (_a = foreignNames_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n if (elem.parent && foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = __assign4(__assign4({}, opts), { xmlMode: false });\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = __assign4(__assign4({}, opts), { xmlMode: \"foreign\" });\n }\n var tag = \"<\" + elem.name;\n var attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += \" \" + attribs;\n }\n if (elem.children.length === 0 && (opts.xmlMode ? opts.selfClosingTags !== false : opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n } else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render3(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += \"\";\n }\n }\n return tag;\n }\n function renderDirective(elem) {\n return \"<\" + elem.data + \">\";\n }\n function renderText(elem, opts) {\n var data = elem.data || \"\";\n if (opts.decodeEntities !== false && !(!opts.xmlMode && elem.parent && unencodedElements.has(elem.parent.name))) {\n data = entities_1.encodeXML(data);\n }\n return data;\n }\n function renderCdata(elem) {\n return \"\";\n }\n function renderComment(elem) {\n return \"\";\n }\n }\n});\n\n// node_modules/domutils/lib/stringify.js\nvar require_stringify2 = __commonJS({\n \"node_modules/domutils/lib/stringify.js\"(exports2) {\n \"use strict\";\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.innerText = exports2.textContent = exports2.getText = exports2.getInnerHTML = exports2.getOuterHTML = void 0;\n var domhandler_1 = require_lib3();\n var dom_serializer_1 = __importDefault2(require_lib5());\n var domelementtype_1 = require_lib2();\n function getOuterHTML(node, options) {\n return (0, dom_serializer_1.default)(node, options);\n }\n exports2.getOuterHTML = getOuterHTML;\n function getInnerHTML(node, options) {\n return (0, domhandler_1.hasChildren)(node) ? node.children.map(function(node2) {\n return getOuterHTML(node2, options);\n }).join(\"\") : \"\";\n }\n exports2.getInnerHTML = getInnerHTML;\n function getText2(node) {\n if (Array.isArray(node))\n return node.map(getText2).join(\"\");\n if ((0, domhandler_1.isTag)(node))\n return node.name === \"br\" ? \"\\n\" : getText2(node.children);\n if ((0, domhandler_1.isCDATA)(node))\n return getText2(node.children);\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n }\n exports2.getText = getText2;\n function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if ((0, domhandler_1.hasChildren)(node) && !(0, domhandler_1.isComment)(node)) {\n return textContent(node.children);\n }\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n }\n exports2.textContent = textContent;\n function innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if ((0, domhandler_1.hasChildren)(node) && (node.type === domelementtype_1.ElementType.Tag || (0, domhandler_1.isCDATA)(node))) {\n return innerText(node.children);\n }\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n }\n exports2.innerText = innerText;\n }\n});\n\n// node_modules/domutils/lib/traversal.js\nvar require_traversal = __commonJS({\n \"node_modules/domutils/lib/traversal.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.prevElementSibling = exports2.nextElementSibling = exports2.getName = exports2.hasAttrib = exports2.getAttributeValue = exports2.getSiblings = exports2.getParent = exports2.getChildren = void 0;\n var domhandler_1 = require_lib3();\n var emptyArray = [];\n function getChildren4(elem) {\n var _a;\n return (_a = elem.children) !== null && _a !== void 0 ? _a : emptyArray;\n }\n exports2.getChildren = getChildren4;\n function getParent2(elem) {\n return elem.parent || null;\n }\n exports2.getParent = getParent2;\n function getSiblings(elem) {\n var _a, _b;\n var parent2 = getParent2(elem);\n if (parent2 != null)\n return getChildren4(parent2);\n var siblings = [elem];\n var prev = elem.prev, next = elem.next;\n while (prev != null) {\n siblings.unshift(prev);\n _a = prev, prev = _a.prev;\n }\n while (next != null) {\n siblings.push(next);\n _b = next, next = _b.next;\n }\n return siblings;\n }\n exports2.getSiblings = getSiblings;\n function getAttributeValue(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n }\n exports2.getAttributeValue = getAttributeValue;\n function hasAttrib(elem, name) {\n return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null;\n }\n exports2.hasAttrib = hasAttrib;\n function getName(elem) {\n return elem.name;\n }\n exports2.getName = getName;\n function nextElementSibling(elem) {\n var _a;\n var next = elem.next;\n while (next !== null && !(0, domhandler_1.isTag)(next))\n _a = next, next = _a.next;\n return next;\n }\n exports2.nextElementSibling = nextElementSibling;\n function prevElementSibling(elem) {\n var _a;\n var prev = elem.prev;\n while (prev !== null && !(0, domhandler_1.isTag)(prev))\n _a = prev, prev = _a.prev;\n return prev;\n }\n exports2.prevElementSibling = prevElementSibling;\n }\n});\n\n// node_modules/domutils/lib/manipulation.js\nvar require_manipulation = __commonJS({\n \"node_modules/domutils/lib/manipulation.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.prepend = exports2.prependChild = exports2.append = exports2.appendChild = exports2.replaceElement = exports2.removeElement = void 0;\n function removeElement(elem) {\n if (elem.prev)\n elem.prev.next = elem.next;\n if (elem.next)\n elem.next.prev = elem.prev;\n if (elem.parent) {\n var childs = elem.parent.children;\n childs.splice(childs.lastIndexOf(elem), 1);\n }\n }\n exports2.removeElement = removeElement;\n function replaceElement(elem, replacement) {\n var prev = replacement.prev = elem.prev;\n if (prev) {\n prev.next = replacement;\n }\n var next = replacement.next = elem.next;\n if (next) {\n next.prev = replacement;\n }\n var parent2 = replacement.parent = elem.parent;\n if (parent2) {\n var childs = parent2.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n }\n }\n exports2.replaceElement = replaceElement;\n function appendChild(elem, child) {\n removeElement(child);\n child.next = null;\n child.parent = elem;\n if (elem.children.push(child) > 1) {\n var sibling = elem.children[elem.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n } else {\n child.prev = null;\n }\n }\n exports2.appendChild = appendChild;\n function append(elem, next) {\n removeElement(next);\n var parent2 = elem.parent;\n var currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent2;\n if (currNext) {\n currNext.prev = next;\n if (parent2) {\n var childs = parent2.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n } else if (parent2) {\n parent2.children.push(next);\n }\n }\n exports2.append = append;\n function prependChild(elem, child) {\n removeElement(child);\n child.parent = elem;\n child.prev = null;\n if (elem.children.unshift(child) !== 1) {\n var sibling = elem.children[1];\n sibling.prev = child;\n child.next = sibling;\n } else {\n child.next = null;\n }\n }\n exports2.prependChild = prependChild;\n function prepend(elem, prev) {\n removeElement(prev);\n var parent2 = elem.parent;\n if (parent2) {\n var childs = parent2.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) {\n elem.prev.next = prev;\n }\n prev.parent = parent2;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n }\n exports2.prepend = prepend;\n }\n});\n\n// node_modules/domutils/lib/querying.js\nvar require_querying = __commonJS({\n \"node_modules/domutils/lib/querying.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.findAll = exports2.existsOne = exports2.findOne = exports2.findOneChild = exports2.find = exports2.filter = void 0;\n var domhandler_1 = require_lib3();\n function filter2(test, node, recurse, limit) {\n if (recurse === void 0) {\n recurse = true;\n }\n if (limit === void 0) {\n limit = Infinity;\n }\n if (!Array.isArray(node))\n node = [node];\n return find(test, node, recurse, limit);\n }\n exports2.filter = filter2;\n function find(test, nodes, recurse, limit) {\n var result = [];\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var elem = nodes_1[_i];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0)\n break;\n }\n if (recurse && (0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) {\n var children = find(test, elem.children, recurse, limit);\n result.push.apply(result, children);\n limit -= children.length;\n if (limit <= 0)\n break;\n }\n }\n return result;\n }\n exports2.find = find;\n function findOneChild(test, nodes) {\n return nodes.find(test);\n }\n exports2.findOneChild = findOneChild;\n function findOne(test, nodes, recurse) {\n if (recurse === void 0) {\n recurse = true;\n }\n var elem = null;\n for (var i3 = 0; i3 < nodes.length && !elem; i3++) {\n var checked = nodes[i3];\n if (!(0, domhandler_1.isTag)(checked)) {\n continue;\n } else if (test(checked)) {\n elem = checked;\n } else if (recurse && checked.children.length > 0) {\n elem = findOne(test, checked.children);\n }\n }\n return elem;\n }\n exports2.findOne = findOne;\n function existsOne(test, nodes) {\n return nodes.some(function(checked) {\n return (0, domhandler_1.isTag)(checked) && (test(checked) || checked.children.length > 0 && existsOne(test, checked.children));\n });\n }\n exports2.existsOne = existsOne;\n function findAll(test, nodes) {\n var _a;\n var result = [];\n var stack = nodes.filter(domhandler_1.isTag);\n var elem;\n while (elem = stack.shift()) {\n var children = (_a = elem.children) === null || _a === void 0 ? void 0 : _a.filter(domhandler_1.isTag);\n if (children && children.length > 0) {\n stack.unshift.apply(stack, children);\n }\n if (test(elem))\n result.push(elem);\n }\n return result;\n }\n exports2.findAll = findAll;\n }\n});\n\n// node_modules/domutils/lib/legacy.js\nvar require_legacy2 = __commonJS({\n \"node_modules/domutils/lib/legacy.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.getElementsByTagType = exports2.getElementsByTagName = exports2.getElementById = exports2.getElements = exports2.testElement = void 0;\n var domhandler_1 = require_lib3();\n var querying_1 = require_querying();\n var Checks = {\n tag_name: function(name) {\n if (typeof name === \"function\") {\n return function(elem) {\n return (0, domhandler_1.isTag)(elem) && name(elem.name);\n };\n } else if (name === \"*\") {\n return domhandler_1.isTag;\n }\n return function(elem) {\n return (0, domhandler_1.isTag)(elem) && elem.name === name;\n };\n },\n tag_type: function(type) {\n if (typeof type === \"function\") {\n return function(elem) {\n return type(elem.type);\n };\n }\n return function(elem) {\n return elem.type === type;\n };\n },\n tag_contains: function(data) {\n if (typeof data === \"function\") {\n return function(elem) {\n return (0, domhandler_1.isText)(elem) && data(elem.data);\n };\n }\n return function(elem) {\n return (0, domhandler_1.isText)(elem) && elem.data === data;\n };\n }\n };\n function getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return function(elem) {\n return (0, domhandler_1.isTag)(elem) && value(elem.attribs[attrib]);\n };\n }\n return function(elem) {\n return (0, domhandler_1.isTag)(elem) && elem.attribs[attrib] === value;\n };\n }\n function combineFuncs(a5, b4) {\n return function(elem) {\n return a5(elem) || b4(elem);\n };\n }\n function compileTest(options) {\n var funcs = Object.keys(options).map(function(key) {\n var value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key) ? Checks[key](value) : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n }\n function testElement(options, node) {\n var test = compileTest(options);\n return test ? test(node) : true;\n }\n exports2.testElement = testElement;\n function getElements(options, nodes, recurse, limit) {\n if (limit === void 0) {\n limit = Infinity;\n }\n var test = compileTest(options);\n return test ? (0, querying_1.filter)(test, nodes, recurse, limit) : [];\n }\n exports2.getElements = getElements;\n function getElementById(id, nodes, recurse) {\n if (recurse === void 0) {\n recurse = true;\n }\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return (0, querying_1.findOne)(getAttribCheck(\"id\", id), nodes, recurse);\n }\n exports2.getElementById = getElementById;\n function getElementsByTagName(tagName, nodes, recurse, limit) {\n if (recurse === void 0) {\n recurse = true;\n }\n if (limit === void 0) {\n limit = Infinity;\n }\n return (0, querying_1.filter)(Checks.tag_name(tagName), nodes, recurse, limit);\n }\n exports2.getElementsByTagName = getElementsByTagName;\n function getElementsByTagType(type, nodes, recurse, limit) {\n if (recurse === void 0) {\n recurse = true;\n }\n if (limit === void 0) {\n limit = Infinity;\n }\n return (0, querying_1.filter)(Checks.tag_type(type), nodes, recurse, limit);\n }\n exports2.getElementsByTagType = getElementsByTagType;\n }\n});\n\n// node_modules/domutils/lib/helpers.js\nvar require_helpers = __commonJS({\n \"node_modules/domutils/lib/helpers.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.uniqueSort = exports2.compareDocumentPosition = exports2.removeSubsets = void 0;\n var domhandler_1 = require_lib3();\n function removeSubsets(nodes) {\n var idx = nodes.length;\n while (--idx >= 0) {\n var node = nodes[idx];\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (var ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n }\n exports2.removeSubsets = removeSubsets;\n function compareDocumentPosition(nodeA, nodeB) {\n var aParents = [];\n var bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n var current = (0, domhandler_1.hasChildren)(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = (0, domhandler_1.hasChildren)(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n var maxIdx = Math.min(aParents.length, bParents.length);\n var idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return 1;\n }\n var sharedParent = aParents[idx - 1];\n var siblings = sharedParent.children;\n var aSibling = aParents[idx];\n var bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return 4 | 16;\n }\n return 4;\n }\n if (sharedParent === nodeA) {\n return 2 | 8;\n }\n return 2;\n }\n exports2.compareDocumentPosition = compareDocumentPosition;\n function uniqueSort(nodes) {\n nodes = nodes.filter(function(node, i3, arr) {\n return !arr.includes(node, i3 + 1);\n });\n nodes.sort(function(a5, b4) {\n var relative = compareDocumentPosition(a5, b4);\n if (relative & 2) {\n return -1;\n } else if (relative & 4) {\n return 1;\n }\n return 0;\n });\n return nodes;\n }\n exports2.uniqueSort = uniqueSort;\n }\n});\n\n// node_modules/domutils/lib/feeds.js\nvar require_feeds = __commonJS({\n \"node_modules/domutils/lib/feeds.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.getFeed = void 0;\n var stringify_1 = require_stringify2();\n var legacy_1 = require_legacy2();\n function getFeed(doc) {\n var feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot ? null : feedRoot.name === \"feed\" ? getAtomFeed(feedRoot) : getRssFeed(feedRoot);\n }\n exports2.getFeed = getFeed;\n function getAtomFeed(feedRoot) {\n var _a;\n var childs = feedRoot.children;\n var feed = {\n type: \"atom\",\n items: (0, legacy_1.getElementsByTagName)(\"entry\", childs).map(function(item) {\n var _a2;\n var children = item.children;\n var entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n var href2 = (_a2 = getOneElement(\"link\", children)) === null || _a2 === void 0 ? void 0 : _a2.attribs.href;\n if (href2) {\n entry.link = href2;\n }\n var description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n var pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n })\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n var href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs.href;\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n var updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n }\n function getRssFeed(feedRoot) {\n var _a, _b;\n var childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n var feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: (0, legacy_1.getElementsByTagName)(\"item\", feedRoot.children).map(function(item) {\n var children = item.children;\n var entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n var pubDate = fetch(\"pubDate\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n })\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n var updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n }\n var MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\n var MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\"\n ];\n function getMediaElements(where) {\n return (0, legacy_1.getElementsByTagName)(\"media:content\", where).map(function(elem) {\n var attribs = elem.attribs;\n var media = {\n medium: attribs.medium,\n isDefault: !!attribs.isDefault\n };\n for (var _i = 0, MEDIA_KEYS_STRING_1 = MEDIA_KEYS_STRING; _i < MEDIA_KEYS_STRING_1.length; _i++) {\n var attrib = MEDIA_KEYS_STRING_1[_i];\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (var _a = 0, MEDIA_KEYS_INT_1 = MEDIA_KEYS_INT; _a < MEDIA_KEYS_INT_1.length; _a++) {\n var attrib = MEDIA_KEYS_INT_1[_a];\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs.expression) {\n media.expression = attribs.expression;\n }\n return media;\n });\n }\n function getOneElement(tagName, node) {\n return (0, legacy_1.getElementsByTagName)(tagName, node, true, 1)[0];\n }\n function fetch(tagName, where, recurse) {\n if (recurse === void 0) {\n recurse = false;\n }\n return (0, stringify_1.textContent)((0, legacy_1.getElementsByTagName)(tagName, where, recurse, 1)).trim();\n }\n function addConditionally(obj, prop, tagName, where, recurse) {\n if (recurse === void 0) {\n recurse = false;\n }\n var val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n }\n function isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n }\n }\n});\n\n// node_modules/domutils/lib/index.js\nvar require_lib6 = __commonJS({\n \"node_modules/domutils/lib/index.js\"(exports2) {\n \"use strict\";\n var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n Object.defineProperty(o3, k22, { enumerable: true, get: function() {\n return m2[k4];\n } });\n } : function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n o3[k22] = m2[k4];\n });\n var __exportStar2 = exports2 && exports2.__exportStar || function(m2, exports3) {\n for (var p4 in m2)\n if (p4 !== \"default\" && !Object.prototype.hasOwnProperty.call(exports3, p4))\n __createBinding2(exports3, m2, p4);\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.hasChildren = exports2.isDocument = exports2.isComment = exports2.isText = exports2.isCDATA = exports2.isTag = void 0;\n __exportStar2(require_stringify2(), exports2);\n __exportStar2(require_traversal(), exports2);\n __exportStar2(require_manipulation(), exports2);\n __exportStar2(require_querying(), exports2);\n __exportStar2(require_legacy2(), exports2);\n __exportStar2(require_helpers(), exports2);\n __exportStar2(require_feeds(), exports2);\n var domhandler_1 = require_lib3();\n Object.defineProperty(exports2, \"isTag\", { enumerable: true, get: function() {\n return domhandler_1.isTag;\n } });\n Object.defineProperty(exports2, \"isCDATA\", { enumerable: true, get: function() {\n return domhandler_1.isCDATA;\n } });\n Object.defineProperty(exports2, \"isText\", { enumerable: true, get: function() {\n return domhandler_1.isText;\n } });\n Object.defineProperty(exports2, \"isComment\", { enumerable: true, get: function() {\n return domhandler_1.isComment;\n } });\n Object.defineProperty(exports2, \"isDocument\", { enumerable: true, get: function() {\n return domhandler_1.isDocument;\n } });\n Object.defineProperty(exports2, \"hasChildren\", { enumerable: true, get: function() {\n return domhandler_1.hasChildren;\n } });\n }\n});\n\n// node_modules/boolbase/index.js\nvar require_boolbase = __commonJS({\n \"node_modules/boolbase/index.js\"(exports2, module2) {\n module2.exports = {\n trueFunc: function trueFunc() {\n return true;\n },\n falseFunc: function falseFunc() {\n return false;\n }\n };\n }\n});\n\n// node_modules/css-select/lib/procedure.js\nvar require_procedure = __commonJS({\n \"node_modules/css-select/lib/procedure.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.isTraversal = exports2.procedure = void 0;\n exports2.procedure = {\n universal: 50,\n tag: 30,\n attribute: 1,\n pseudo: 0,\n \"pseudo-element\": 0,\n \"column-combinator\": -1,\n descendant: -1,\n child: -1,\n parent: -1,\n sibling: -1,\n adjacent: -1,\n _flexibleDescendant: -1\n };\n function isTraversal(t4) {\n return exports2.procedure[t4.type] < 0;\n }\n exports2.isTraversal = isTraversal;\n }\n});\n\n// node_modules/css-select/lib/sort.js\nvar require_sort = __commonJS({\n \"node_modules/css-select/lib/sort.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n var css_what_1 = require_commonjs();\n var procedure_1 = require_procedure();\n var attributes = {\n exists: 10,\n equals: 8,\n not: 7,\n start: 6,\n end: 6,\n any: 5,\n hyphen: 4,\n element: 4\n };\n function sortByProcedure(arr) {\n var procs = arr.map(getProcedure);\n for (var i3 = 1; i3 < arr.length; i3++) {\n var procNew = procs[i3];\n if (procNew < 0)\n continue;\n for (var j4 = i3 - 1; j4 >= 0 && procNew < procs[j4]; j4--) {\n var token = arr[j4 + 1];\n arr[j4 + 1] = arr[j4];\n arr[j4] = token;\n procs[j4 + 1] = procs[j4];\n procs[j4] = procNew;\n }\n }\n }\n exports2.default = sortByProcedure;\n function getProcedure(token) {\n var proc = procedure_1.procedure[token.type];\n if (token.type === css_what_1.SelectorType.Attribute) {\n proc = attributes[token.action];\n if (proc === attributes.equals && token.name === \"id\") {\n proc = 9;\n }\n if (token.ignoreCase) {\n proc >>= 1;\n }\n } else if (token.type === css_what_1.SelectorType.Pseudo) {\n if (!token.data) {\n proc = 3;\n } else if (token.name === \"has\" || token.name === \"contains\") {\n proc = 0;\n } else if (Array.isArray(token.data)) {\n proc = 0;\n for (var i3 = 0; i3 < token.data.length; i3++) {\n if (token.data[i3].length !== 1)\n continue;\n var cur = getProcedure(token.data[i3][0]);\n if (cur === 0) {\n proc = 0;\n break;\n }\n if (cur > proc)\n proc = cur;\n }\n if (token.data.length > 1 && proc > 0)\n proc -= 1;\n } else {\n proc = 1;\n }\n }\n return proc;\n }\n }\n});\n\n// node_modules/css-select/lib/attributes.js\nvar require_attributes = __commonJS({\n \"node_modules/css-select/lib/attributes.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.attributeRules = void 0;\n var boolbase_1 = require_boolbase();\n var reChars = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\n function escapeRegex(value) {\n return value.replace(reChars, \"\\\\$&\");\n }\n var caseInsensitiveAttributes = /* @__PURE__ */ new Set([\n \"accept\",\n \"accept-charset\",\n \"align\",\n \"alink\",\n \"axis\",\n \"bgcolor\",\n \"charset\",\n \"checked\",\n \"clear\",\n \"codetype\",\n \"color\",\n \"compact\",\n \"declare\",\n \"defer\",\n \"dir\",\n \"direction\",\n \"disabled\",\n \"enctype\",\n \"face\",\n \"frame\",\n \"hreflang\",\n \"http-equiv\",\n \"lang\",\n \"language\",\n \"link\",\n \"media\",\n \"method\",\n \"multiple\",\n \"nohref\",\n \"noresize\",\n \"noshade\",\n \"nowrap\",\n \"readonly\",\n \"rel\",\n \"rev\",\n \"rules\",\n \"scope\",\n \"scrolling\",\n \"selected\",\n \"shape\",\n \"target\",\n \"text\",\n \"type\",\n \"valign\",\n \"valuetype\",\n \"vlink\"\n ]);\n function shouldIgnoreCase(selector, options) {\n return typeof selector.ignoreCase === \"boolean\" ? selector.ignoreCase : selector.ignoreCase === \"quirks\" ? !!options.quirksMode : !options.xmlMode && caseInsensitiveAttributes.has(selector.name);\n }\n exports2.attributeRules = {\n equals: function(next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return attr != null && attr.length === value.length && attr.toLowerCase() === value && next(elem);\n };\n }\n return function(elem) {\n return adapter.getAttributeValue(elem, name) === value && next(elem);\n };\n },\n hyphen: function(next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n var len = value.length;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function hyphenIC(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return attr != null && (attr.length === len || attr.charAt(len) === \"-\") && attr.substr(0, len).toLowerCase() === value && next(elem);\n };\n }\n return function hyphen(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return attr != null && (attr.length === len || attr.charAt(len) === \"-\") && attr.substr(0, len) === value && next(elem);\n };\n },\n element: function(next, data, options) {\n var adapter = options.adapter;\n var name = data.name, value = data.value;\n if (/\\s/.test(value)) {\n return boolbase_1.falseFunc;\n }\n var regex = new RegExp(\"(?:^|\\\\s)\".concat(escapeRegex(value), \"(?:$|\\\\s)\"), shouldIgnoreCase(data, options) ? \"i\" : \"\");\n return function element4(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return attr != null && attr.length >= value.length && regex.test(attr) && next(elem);\n };\n },\n exists: function(next, _a, _b) {\n var name = _a.name;\n var adapter = _b.adapter;\n return function(elem) {\n return adapter.hasAttrib(elem, name) && next(elem);\n };\n },\n start: function(next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n var len = value.length;\n if (len === 0) {\n return boolbase_1.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return attr != null && attr.length >= len && attr.substr(0, len).toLowerCase() === value && next(elem);\n };\n }\n return function(elem) {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) && next(elem);\n };\n },\n end: function(next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n var len = -value.length;\n if (len === 0) {\n return boolbase_1.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function(elem) {\n var _a;\n return ((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem);\n };\n }\n return function(elem) {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) && next(elem);\n };\n },\n any: function(next, data, options) {\n var adapter = options.adapter;\n var name = data.name, value = data.value;\n if (value === \"\") {\n return boolbase_1.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n var regex_1 = new RegExp(escapeRegex(value), \"i\");\n return function anyIC(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return attr != null && attr.length >= value.length && regex_1.test(attr) && next(elem);\n };\n }\n return function(elem) {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) && next(elem);\n };\n },\n not: function(next, data, options) {\n var adapter = options.adapter;\n var name = data.name;\n var value = data.value;\n if (value === \"\") {\n return function(elem) {\n return !!adapter.getAttributeValue(elem, name) && next(elem);\n };\n } else if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function(elem) {\n var attr = adapter.getAttributeValue(elem, name);\n return (attr == null || attr.length !== value.length || attr.toLowerCase() !== value) && next(elem);\n };\n }\n return function(elem) {\n return adapter.getAttributeValue(elem, name) !== value && next(elem);\n };\n }\n };\n }\n});\n\n// node_modules/nth-check/lib/parse.js\nvar require_parse2 = __commonJS({\n \"node_modules/nth-check/lib/parse.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.parse = void 0;\n var whitespace = /* @__PURE__ */ new Set([9, 10, 12, 13, 32]);\n var ZERO = \"0\".charCodeAt(0);\n var NINE = \"9\".charCodeAt(0);\n function parse2(formula) {\n formula = formula.trim().toLowerCase();\n if (formula === \"even\") {\n return [2, 0];\n } else if (formula === \"odd\") {\n return [2, 1];\n }\n var idx = 0;\n var a5 = 0;\n var sign = readSign();\n var number = readNumber();\n if (idx < formula.length && formula.charAt(idx) === \"n\") {\n idx++;\n a5 = sign * (number !== null && number !== void 0 ? number : 1);\n skipWhitespace();\n if (idx < formula.length) {\n sign = readSign();\n skipWhitespace();\n number = readNumber();\n } else {\n sign = number = 0;\n }\n }\n if (number === null || idx < formula.length) {\n throw new Error(\"n-th rule couldn't be parsed ('\" + formula + \"')\");\n }\n return [a5, sign * number];\n function readSign() {\n if (formula.charAt(idx) === \"-\") {\n idx++;\n return -1;\n }\n if (formula.charAt(idx) === \"+\") {\n idx++;\n }\n return 1;\n }\n function readNumber() {\n var start3 = idx;\n var value = 0;\n while (idx < formula.length && formula.charCodeAt(idx) >= ZERO && formula.charCodeAt(idx) <= NINE) {\n value = value * 10 + (formula.charCodeAt(idx) - ZERO);\n idx++;\n }\n return idx === start3 ? null : value;\n }\n function skipWhitespace() {\n while (idx < formula.length && whitespace.has(formula.charCodeAt(idx))) {\n idx++;\n }\n }\n }\n exports2.parse = parse2;\n }\n});\n\n// node_modules/nth-check/lib/compile.js\nvar require_compile = __commonJS({\n \"node_modules/nth-check/lib/compile.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.compile = void 0;\n var boolbase_1 = require_boolbase();\n function compile(parsed) {\n var a5 = parsed[0];\n var b4 = parsed[1] - 1;\n if (b4 < 0 && a5 <= 0)\n return boolbase_1.falseFunc;\n if (a5 === -1)\n return function(index7) {\n return index7 <= b4;\n };\n if (a5 === 0)\n return function(index7) {\n return index7 === b4;\n };\n if (a5 === 1)\n return b4 < 0 ? boolbase_1.trueFunc : function(index7) {\n return index7 >= b4;\n };\n var absA = Math.abs(a5);\n var bMod = (b4 % absA + absA) % absA;\n return a5 > 1 ? function(index7) {\n return index7 >= b4 && index7 % absA === bMod;\n } : function(index7) {\n return index7 <= b4 && index7 % absA === bMod;\n };\n }\n exports2.compile = compile;\n }\n});\n\n// node_modules/nth-check/lib/index.js\nvar require_lib7 = __commonJS({\n \"node_modules/nth-check/lib/index.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.compile = exports2.parse = void 0;\n var parse_1 = require_parse2();\n Object.defineProperty(exports2, \"parse\", { enumerable: true, get: function() {\n return parse_1.parse;\n } });\n var compile_1 = require_compile();\n Object.defineProperty(exports2, \"compile\", { enumerable: true, get: function() {\n return compile_1.compile;\n } });\n function nthCheck(formula) {\n return (0, compile_1.compile)((0, parse_1.parse)(formula));\n }\n exports2.default = nthCheck;\n }\n});\n\n// node_modules/css-select/lib/pseudo-selectors/filters.js\nvar require_filters = __commonJS({\n \"node_modules/css-select/lib/pseudo-selectors/filters.js\"(exports2) {\n \"use strict\";\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.filters = void 0;\n var nth_check_1 = __importDefault2(require_lib7());\n var boolbase_1 = require_boolbase();\n function getChildFunc(next, adapter) {\n return function(elem) {\n var parent2 = adapter.getParent(elem);\n return parent2 != null && adapter.isTag(parent2) && next(elem);\n };\n }\n exports2.filters = {\n contains: function(next, text5, _a) {\n var adapter = _a.adapter;\n return function contains3(elem) {\n return next(elem) && adapter.getText(elem).includes(text5);\n };\n },\n icontains: function(next, text5, _a) {\n var adapter = _a.adapter;\n var itext = text5.toLowerCase();\n return function icontains(elem) {\n return next(elem) && adapter.getText(elem).toLowerCase().includes(itext);\n };\n },\n \"nth-child\": function(next, rule, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var func = (0, nth_check_1.default)(rule);\n if (func === boolbase_1.falseFunc)\n return boolbase_1.falseFunc;\n if (func === boolbase_1.trueFunc)\n return getChildFunc(next, adapter);\n return function nthChild(elem) {\n var siblings = adapter.getSiblings(elem);\n var pos = 0;\n for (var i3 = 0; i3 < siblings.length; i3++) {\n if (equals(elem, siblings[i3]))\n break;\n if (adapter.isTag(siblings[i3])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-child\": function(next, rule, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var func = (0, nth_check_1.default)(rule);\n if (func === boolbase_1.falseFunc)\n return boolbase_1.falseFunc;\n if (func === boolbase_1.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastChild(elem) {\n var siblings = adapter.getSiblings(elem);\n var pos = 0;\n for (var i3 = siblings.length - 1; i3 >= 0; i3--) {\n if (equals(elem, siblings[i3]))\n break;\n if (adapter.isTag(siblings[i3])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-of-type\": function(next, rule, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var func = (0, nth_check_1.default)(rule);\n if (func === boolbase_1.falseFunc)\n return boolbase_1.falseFunc;\n if (func === boolbase_1.trueFunc)\n return getChildFunc(next, adapter);\n return function nthOfType(elem) {\n var siblings = adapter.getSiblings(elem);\n var pos = 0;\n for (var i3 = 0; i3 < siblings.length; i3++) {\n var currentSibling = siblings[i3];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-of-type\": function(next, rule, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var func = (0, nth_check_1.default)(rule);\n if (func === boolbase_1.falseFunc)\n return boolbase_1.falseFunc;\n if (func === boolbase_1.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastOfType(elem) {\n var siblings = adapter.getSiblings(elem);\n var pos = 0;\n for (var i3 = siblings.length - 1; i3 >= 0; i3--) {\n var currentSibling = siblings[i3];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n root: function(next, _rule, _a) {\n var adapter = _a.adapter;\n return function(elem) {\n var parent2 = adapter.getParent(elem);\n return (parent2 == null || !adapter.isTag(parent2)) && next(elem);\n };\n },\n scope: function(next, rule, options, context) {\n var equals = options.equals;\n if (!context || context.length === 0) {\n return exports2.filters.root(next, rule, options);\n }\n if (context.length === 1) {\n return function(elem) {\n return equals(context[0], elem) && next(elem);\n };\n }\n return function(elem) {\n return context.includes(elem) && next(elem);\n };\n },\n hover: dynamicStatePseudo(\"isHovered\"),\n visited: dynamicStatePseudo(\"isVisited\"),\n active: dynamicStatePseudo(\"isActive\")\n };\n function dynamicStatePseudo(name) {\n return function dynamicPseudo(next, _rule, _a) {\n var adapter = _a.adapter;\n var func = adapter[name];\n if (typeof func !== \"function\") {\n return boolbase_1.falseFunc;\n }\n return function active(elem) {\n return func(elem) && next(elem);\n };\n };\n }\n }\n});\n\n// node_modules/css-select/lib/pseudo-selectors/pseudos.js\nvar require_pseudos = __commonJS({\n \"node_modules/css-select/lib/pseudo-selectors/pseudos.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.verifyPseudoArgs = exports2.pseudos = void 0;\n exports2.pseudos = {\n empty: function(elem, _a) {\n var adapter = _a.adapter;\n return !adapter.getChildren(elem).some(function(elem2) {\n return adapter.isTag(elem2) || adapter.getText(elem2) !== \"\";\n });\n },\n \"first-child\": function(elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var firstChild = adapter.getSiblings(elem).find(function(elem2) {\n return adapter.isTag(elem2);\n });\n return firstChild != null && equals(elem, firstChild);\n },\n \"last-child\": function(elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var siblings = adapter.getSiblings(elem);\n for (var i3 = siblings.length - 1; i3 >= 0; i3--) {\n if (equals(elem, siblings[i3]))\n return true;\n if (adapter.isTag(siblings[i3]))\n break;\n }\n return false;\n },\n \"first-of-type\": function(elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var siblings = adapter.getSiblings(elem);\n var elemName = adapter.getName(elem);\n for (var i3 = 0; i3 < siblings.length; i3++) {\n var currentSibling = siblings[i3];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"last-of-type\": function(elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var siblings = adapter.getSiblings(elem);\n var elemName = adapter.getName(elem);\n for (var i3 = siblings.length - 1; i3 >= 0; i3--) {\n var currentSibling = siblings[i3];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"only-of-type\": function(elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n var elemName = adapter.getName(elem);\n return adapter.getSiblings(elem).every(function(sibling) {\n return equals(elem, sibling) || !adapter.isTag(sibling) || adapter.getName(sibling) !== elemName;\n });\n },\n \"only-child\": function(elem, _a) {\n var adapter = _a.adapter, equals = _a.equals;\n return adapter.getSiblings(elem).every(function(sibling) {\n return equals(elem, sibling) || !adapter.isTag(sibling);\n });\n }\n };\n function verifyPseudoArgs(func, name, subselect) {\n if (subselect === null) {\n if (func.length > 2) {\n throw new Error(\"pseudo-selector :\".concat(name, \" requires an argument\"));\n }\n } else if (func.length === 2) {\n throw new Error(\"pseudo-selector :\".concat(name, \" doesn't have any arguments\"));\n }\n }\n exports2.verifyPseudoArgs = verifyPseudoArgs;\n }\n});\n\n// node_modules/css-select/lib/pseudo-selectors/aliases.js\nvar require_aliases = __commonJS({\n \"node_modules/css-select/lib/pseudo-selectors/aliases.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.aliases = void 0;\n exports2.aliases = {\n \"any-link\": \":is(a, area, link)[href]\",\n link: \":any-link:not(:visited)\",\n disabled: \":is(\\n :is(button, input, select, textarea, optgroup, option)[disabled],\\n optgroup[disabled] > option,\\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\\n )\",\n enabled: \":not(:disabled)\",\n checked: \":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)\",\n required: \":is(input, select, textarea)[required]\",\n optional: \":is(input, select, textarea):not([required])\",\n selected: \"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)\",\n checkbox: \"[type=checkbox]\",\n file: \"[type=file]\",\n password: \"[type=password]\",\n radio: \"[type=radio]\",\n reset: \"[type=reset]\",\n image: \"[type=image]\",\n submit: \"[type=submit]\",\n parent: \":not(:empty)\",\n header: \":is(h1, h2, h3, h4, h5, h6)\",\n button: \":is(button, input[type=button])\",\n input: \":is(input, textarea, select, button)\",\n text: \"input:is(:not([type!='']), [type=text])\"\n };\n }\n});\n\n// node_modules/css-select/lib/pseudo-selectors/subselects.js\nvar require_subselects = __commonJS({\n \"node_modules/css-select/lib/pseudo-selectors/subselects.js\"(exports2) {\n \"use strict\";\n var __spreadArray2 = exports2 && exports2.__spreadArray || function(to, from, pack) {\n if (pack || arguments.length === 2)\n for (var i3 = 0, l3 = from.length, ar; i3 < l3; i3++) {\n if (ar || !(i3 in from)) {\n if (!ar)\n ar = Array.prototype.slice.call(from, 0, i3);\n ar[i3] = from[i3];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.subselects = exports2.getNextSiblings = exports2.ensureIsTag = exports2.PLACEHOLDER_ELEMENT = void 0;\n var boolbase_1 = require_boolbase();\n var procedure_1 = require_procedure();\n exports2.PLACEHOLDER_ELEMENT = {};\n function ensureIsTag(next, adapter) {\n if (next === boolbase_1.falseFunc)\n return boolbase_1.falseFunc;\n return function(elem) {\n return adapter.isTag(elem) && next(elem);\n };\n }\n exports2.ensureIsTag = ensureIsTag;\n function getNextSiblings(elem, adapter) {\n var siblings = adapter.getSiblings(elem);\n if (siblings.length <= 1)\n return [];\n var elemIndex = siblings.indexOf(elem);\n if (elemIndex < 0 || elemIndex === siblings.length - 1)\n return [];\n return siblings.slice(elemIndex + 1).filter(adapter.isTag);\n }\n exports2.getNextSiblings = getNextSiblings;\n var is2 = function(next, token, options, context, compileToken) {\n var opts = {\n xmlMode: !!options.xmlMode,\n adapter: options.adapter,\n equals: options.equals\n };\n var func = compileToken(token, opts, context);\n return function(elem) {\n return func(elem) && next(elem);\n };\n };\n exports2.subselects = {\n is: is2,\n matches: is2,\n where: is2,\n not: function(next, token, options, context, compileToken) {\n var opts = {\n xmlMode: !!options.xmlMode,\n adapter: options.adapter,\n equals: options.equals\n };\n var func = compileToken(token, opts, context);\n if (func === boolbase_1.falseFunc)\n return next;\n if (func === boolbase_1.trueFunc)\n return boolbase_1.falseFunc;\n return function not(elem) {\n return !func(elem) && next(elem);\n };\n },\n has: function(next, subselect, options, _context, compileToken) {\n var adapter = options.adapter;\n var opts = {\n xmlMode: !!options.xmlMode,\n adapter,\n equals: options.equals\n };\n var context = subselect.some(function(s3) {\n return s3.some(procedure_1.isTraversal);\n }) ? [exports2.PLACEHOLDER_ELEMENT] : void 0;\n var compiled = compileToken(subselect, opts, context);\n if (compiled === boolbase_1.falseFunc)\n return boolbase_1.falseFunc;\n if (compiled === boolbase_1.trueFunc) {\n return function(elem) {\n return adapter.getChildren(elem).some(adapter.isTag) && next(elem);\n };\n }\n var hasElement = ensureIsTag(compiled, adapter);\n var _a = compiled.shouldTestNextSiblings, shouldTestNextSiblings = _a === void 0 ? false : _a;\n if (context) {\n return function(elem) {\n context[0] = elem;\n var childs = adapter.getChildren(elem);\n var nextElements = shouldTestNextSiblings ? __spreadArray2(__spreadArray2([], childs, true), getNextSiblings(elem, adapter), true) : childs;\n return next(elem) && adapter.existsOne(hasElement, nextElements);\n };\n }\n return function(elem) {\n return next(elem) && adapter.existsOne(hasElement, adapter.getChildren(elem));\n };\n }\n };\n }\n});\n\n// node_modules/css-select/lib/pseudo-selectors/index.js\nvar require_pseudo_selectors = __commonJS({\n \"node_modules/css-select/lib/pseudo-selectors/index.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.compilePseudoSelector = exports2.aliases = exports2.pseudos = exports2.filters = void 0;\n var boolbase_1 = require_boolbase();\n var css_what_1 = require_commonjs();\n var filters_1 = require_filters();\n Object.defineProperty(exports2, \"filters\", { enumerable: true, get: function() {\n return filters_1.filters;\n } });\n var pseudos_1 = require_pseudos();\n Object.defineProperty(exports2, \"pseudos\", { enumerable: true, get: function() {\n return pseudos_1.pseudos;\n } });\n var aliases_1 = require_aliases();\n Object.defineProperty(exports2, \"aliases\", { enumerable: true, get: function() {\n return aliases_1.aliases;\n } });\n var subselects_1 = require_subselects();\n function compilePseudoSelector(next, selector, options, context, compileToken) {\n var name = selector.name, data = selector.data;\n if (Array.isArray(data)) {\n return subselects_1.subselects[name](next, data, options, context, compileToken);\n }\n if (name in aliases_1.aliases) {\n if (data != null) {\n throw new Error(\"Pseudo \".concat(name, \" doesn't have any arguments\"));\n }\n var alias = (0, css_what_1.parse)(aliases_1.aliases[name]);\n return subselects_1.subselects.is(next, alias, options, context, compileToken);\n }\n if (name in filters_1.filters) {\n return filters_1.filters[name](next, data, options, context);\n }\n if (name in pseudos_1.pseudos) {\n var pseudo_1 = pseudos_1.pseudos[name];\n (0, pseudos_1.verifyPseudoArgs)(pseudo_1, name, data);\n return pseudo_1 === boolbase_1.falseFunc ? boolbase_1.falseFunc : next === boolbase_1.trueFunc ? function(elem) {\n return pseudo_1(elem, options, data);\n } : function(elem) {\n return pseudo_1(elem, options, data) && next(elem);\n };\n }\n throw new Error(\"unmatched pseudo-class :\".concat(name));\n }\n exports2.compilePseudoSelector = compilePseudoSelector;\n }\n});\n\n// node_modules/css-select/lib/general.js\nvar require_general = __commonJS({\n \"node_modules/css-select/lib/general.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.compileGeneralSelector = void 0;\n var attributes_1 = require_attributes();\n var pseudo_selectors_1 = require_pseudo_selectors();\n var css_what_1 = require_commonjs();\n function compileGeneralSelector(next, selector, options, context, compileToken) {\n var adapter = options.adapter, equals = options.equals;\n switch (selector.type) {\n case css_what_1.SelectorType.PseudoElement: {\n throw new Error(\"Pseudo-elements are not supported by css-select\");\n }\n case css_what_1.SelectorType.ColumnCombinator: {\n throw new Error(\"Column combinators are not yet supported by css-select\");\n }\n case css_what_1.SelectorType.Attribute: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced attributes are not yet supported by css-select\");\n }\n if (!options.xmlMode || options.lowerCaseAttributeNames) {\n selector.name = selector.name.toLowerCase();\n }\n return attributes_1.attributeRules[selector.action](next, selector, options);\n }\n case css_what_1.SelectorType.Pseudo: {\n return (0, pseudo_selectors_1.compilePseudoSelector)(next, selector, options, context, compileToken);\n }\n case css_what_1.SelectorType.Tag: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced tag names are not yet supported by css-select\");\n }\n var name_1 = selector.name;\n if (!options.xmlMode || options.lowerCaseTags) {\n name_1 = name_1.toLowerCase();\n }\n return function tag(elem) {\n return adapter.getName(elem) === name_1 && next(elem);\n };\n }\n case css_what_1.SelectorType.Descendant: {\n if (options.cacheResults === false || typeof WeakSet === \"undefined\") {\n return function descendant(elem) {\n var current = elem;\n while (current = adapter.getParent(current)) {\n if (adapter.isTag(current) && next(current)) {\n return true;\n }\n }\n return false;\n };\n }\n var isFalseCache_1 = /* @__PURE__ */ new WeakSet();\n return function cachedDescendant(elem) {\n var current = elem;\n while (current = adapter.getParent(current)) {\n if (!isFalseCache_1.has(current)) {\n if (adapter.isTag(current) && next(current)) {\n return true;\n }\n isFalseCache_1.add(current);\n }\n }\n return false;\n };\n }\n case \"_flexibleDescendant\": {\n return function flexibleDescendant(elem) {\n var current = elem;\n do {\n if (adapter.isTag(current) && next(current))\n return true;\n } while (current = adapter.getParent(current));\n return false;\n };\n }\n case css_what_1.SelectorType.Parent: {\n return function parent2(elem) {\n return adapter.getChildren(elem).some(function(elem2) {\n return adapter.isTag(elem2) && next(elem2);\n });\n };\n }\n case css_what_1.SelectorType.Child: {\n return function child(elem) {\n var parent2 = adapter.getParent(elem);\n return parent2 != null && adapter.isTag(parent2) && next(parent2);\n };\n }\n case css_what_1.SelectorType.Sibling: {\n return function sibling(elem) {\n var siblings = adapter.getSiblings(elem);\n for (var i3 = 0; i3 < siblings.length; i3++) {\n var currentSibling = siblings[i3];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) && next(currentSibling)) {\n return true;\n }\n }\n return false;\n };\n }\n case css_what_1.SelectorType.Adjacent: {\n if (adapter.prevElementSibling) {\n return function adjacent(elem) {\n var previous = adapter.prevElementSibling(elem);\n return previous != null && next(previous);\n };\n }\n return function adjacent(elem) {\n var siblings = adapter.getSiblings(elem);\n var lastElement;\n for (var i3 = 0; i3 < siblings.length; i3++) {\n var currentSibling = siblings[i3];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling)) {\n lastElement = currentSibling;\n }\n }\n return !!lastElement && next(lastElement);\n };\n }\n case css_what_1.SelectorType.Universal: {\n if (selector.namespace != null && selector.namespace !== \"*\") {\n throw new Error(\"Namespaced universal selectors are not yet supported by css-select\");\n }\n return next;\n }\n }\n }\n exports2.compileGeneralSelector = compileGeneralSelector;\n }\n});\n\n// node_modules/css-select/lib/compile.js\nvar require_compile2 = __commonJS({\n \"node_modules/css-select/lib/compile.js\"(exports2) {\n \"use strict\";\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.compileToken = exports2.compileUnsafe = exports2.compile = void 0;\n var css_what_1 = require_commonjs();\n var boolbase_1 = require_boolbase();\n var sort_1 = __importDefault2(require_sort());\n var procedure_1 = require_procedure();\n var general_1 = require_general();\n var subselects_1 = require_subselects();\n function compile(selector, options, context) {\n var next = compileUnsafe(selector, options, context);\n return (0, subselects_1.ensureIsTag)(next, options.adapter);\n }\n exports2.compile = compile;\n function compileUnsafe(selector, options, context) {\n var token = typeof selector === \"string\" ? (0, css_what_1.parse)(selector) : selector;\n return compileToken(token, options, context);\n }\n exports2.compileUnsafe = compileUnsafe;\n function includesScopePseudo(t4) {\n return t4.type === \"pseudo\" && (t4.name === \"scope\" || Array.isArray(t4.data) && t4.data.some(function(data) {\n return data.some(includesScopePseudo);\n }));\n }\n var DESCENDANT_TOKEN = { type: css_what_1.SelectorType.Descendant };\n var FLEXIBLE_DESCENDANT_TOKEN = {\n type: \"_flexibleDescendant\"\n };\n var SCOPE_TOKEN = {\n type: css_what_1.SelectorType.Pseudo,\n name: \"scope\",\n data: null\n };\n function absolutize(token, _a, context) {\n var adapter = _a.adapter;\n var hasContext = !!(context === null || context === void 0 ? void 0 : context.every(function(e2) {\n var parent2 = adapter.isTag(e2) && adapter.getParent(e2);\n return e2 === subselects_1.PLACEHOLDER_ELEMENT || parent2 && adapter.isTag(parent2);\n }));\n for (var _i = 0, token_1 = token; _i < token_1.length; _i++) {\n var t4 = token_1[_i];\n if (t4.length > 0 && (0, procedure_1.isTraversal)(t4[0]) && t4[0].type !== \"descendant\") {\n } else if (hasContext && !t4.some(includesScopePseudo)) {\n t4.unshift(DESCENDANT_TOKEN);\n } else {\n continue;\n }\n t4.unshift(SCOPE_TOKEN);\n }\n }\n function compileToken(token, options, context) {\n var _a;\n token = token.filter(function(t4) {\n return t4.length > 0;\n });\n token.forEach(sort_1.default);\n context = (_a = options.context) !== null && _a !== void 0 ? _a : context;\n var isArrayContext = Array.isArray(context);\n var finalContext = context && (Array.isArray(context) ? context : [context]);\n absolutize(token, options, finalContext);\n var shouldTestNextSiblings = false;\n var query = token.map(function(rules) {\n if (rules.length >= 2) {\n var first = rules[0], second = rules[1];\n if (first.type !== \"pseudo\" || first.name !== \"scope\") {\n } else if (isArrayContext && second.type === \"descendant\") {\n rules[1] = FLEXIBLE_DESCENDANT_TOKEN;\n } else if (second.type === \"adjacent\" || second.type === \"sibling\") {\n shouldTestNextSiblings = true;\n }\n }\n return compileRules(rules, options, finalContext);\n }).reduce(reduceRules, boolbase_1.falseFunc);\n query.shouldTestNextSiblings = shouldTestNextSiblings;\n return query;\n }\n exports2.compileToken = compileToken;\n function compileRules(rules, options, context) {\n var _a;\n return rules.reduce(function(previous, rule) {\n return previous === boolbase_1.falseFunc ? boolbase_1.falseFunc : (0, general_1.compileGeneralSelector)(previous, rule, options, context, compileToken);\n }, (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase_1.trueFunc);\n }\n function reduceRules(a5, b4) {\n if (b4 === boolbase_1.falseFunc || a5 === boolbase_1.trueFunc) {\n return a5;\n }\n if (a5 === boolbase_1.falseFunc || b4 === boolbase_1.trueFunc) {\n return b4;\n }\n return function combine(elem) {\n return a5(elem) || b4(elem);\n };\n }\n }\n});\n\n// node_modules/css-select/lib/index.js\nvar require_lib8 = __commonJS({\n \"node_modules/css-select/lib/index.js\"(exports2) {\n \"use strict\";\n var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n var desc = Object.getOwnPropertyDescriptor(m2, k4);\n if (!desc || (\"get\" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() {\n return m2[k4];\n } };\n }\n Object.defineProperty(o3, k22, desc);\n } : function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n o3[k22] = m2[k4];\n });\n var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o3, v4) {\n Object.defineProperty(o3, \"default\", { enumerable: true, value: v4 });\n } : function(o3, v4) {\n o3[\"default\"] = v4;\n });\n var __importStar2 = exports2 && exports2.__importStar || function(mod) {\n if (mod && mod.__esModule)\n return mod;\n var result = {};\n if (mod != null) {\n for (var k4 in mod)\n if (k4 !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k4))\n __createBinding2(result, mod, k4);\n }\n __setModuleDefault(result, mod);\n return result;\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.aliases = exports2.pseudos = exports2.filters = exports2.is = exports2.selectOne = exports2.selectAll = exports2.prepareContext = exports2._compileToken = exports2._compileUnsafe = exports2.compile = void 0;\n var DomUtils = __importStar2(require_lib6());\n var boolbase_1 = require_boolbase();\n var compile_1 = require_compile2();\n var subselects_1 = require_subselects();\n var defaultEquals = function(a5, b4) {\n return a5 === b4;\n };\n var defaultOptions2 = {\n adapter: DomUtils,\n equals: defaultEquals\n };\n function convertOptionFormats(options) {\n var _a, _b, _c, _d;\n var opts = options !== null && options !== void 0 ? options : defaultOptions2;\n (_a = opts.adapter) !== null && _a !== void 0 ? _a : opts.adapter = DomUtils;\n (_b = opts.equals) !== null && _b !== void 0 ? _b : opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals;\n return opts;\n }\n function wrapCompile(func) {\n return function addAdapter(selector, options, context) {\n var opts = convertOptionFormats(options);\n return func(selector, opts, context);\n };\n }\n exports2.compile = wrapCompile(compile_1.compile);\n exports2._compileUnsafe = wrapCompile(compile_1.compileUnsafe);\n exports2._compileToken = wrapCompile(compile_1.compileToken);\n function getSelectorFunc(searchFunc) {\n return function select(query, elements, options) {\n var opts = convertOptionFormats(options);\n if (typeof query !== \"function\") {\n query = (0, compile_1.compileUnsafe)(query, opts, elements);\n }\n var filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);\n return searchFunc(query, filteredElements, opts);\n };\n }\n function prepareContext(elems, adapter, shouldTestNextSiblings) {\n if (shouldTestNextSiblings === void 0) {\n shouldTestNextSiblings = false;\n }\n if (shouldTestNextSiblings) {\n elems = appendNextSiblings(elems, adapter);\n }\n return Array.isArray(elems) ? adapter.removeSubsets(elems) : adapter.getChildren(elems);\n }\n exports2.prepareContext = prepareContext;\n function appendNextSiblings(elem, adapter) {\n var elems = Array.isArray(elem) ? elem.slice(0) : [elem];\n var elemsLength = elems.length;\n for (var i3 = 0; i3 < elemsLength; i3++) {\n var nextSiblings = (0, subselects_1.getNextSiblings)(elems[i3], adapter);\n elems.push.apply(elems, nextSiblings);\n }\n return elems;\n }\n exports2.selectAll = getSelectorFunc(function(query, elems, options) {\n return query === boolbase_1.falseFunc || !elems || elems.length === 0 ? [] : options.adapter.findAll(query, elems);\n });\n exports2.selectOne = getSelectorFunc(function(query, elems, options) {\n return query === boolbase_1.falseFunc || !elems || elems.length === 0 ? null : options.adapter.findOne(query, elems);\n });\n function is2(elem, query, options) {\n var opts = convertOptionFormats(options);\n return (typeof query === \"function\" ? query : (0, compile_1.compile)(query, opts))(elem);\n }\n exports2.is = is2;\n exports2.default = exports2.selectAll;\n var pseudo_selectors_1 = require_pseudo_selectors();\n Object.defineProperty(exports2, \"filters\", { enumerable: true, get: function() {\n return pseudo_selectors_1.filters;\n } });\n Object.defineProperty(exports2, \"pseudos\", { enumerable: true, get: function() {\n return pseudo_selectors_1.pseudos;\n } });\n Object.defineProperty(exports2, \"aliases\", { enumerable: true, get: function() {\n return pseudo_selectors_1.aliases;\n } });\n }\n});\n\n// node_modules/cheerio-select/lib/positionals.js\nvar require_positionals = __commonJS({\n \"node_modules/cheerio-select/lib/positionals.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.getLimit = exports2.isFilter = exports2.filterNames = void 0;\n exports2.filterNames = /* @__PURE__ */ new Set([\n \"first\",\n \"last\",\n \"eq\",\n \"gt\",\n \"nth\",\n \"lt\",\n \"even\",\n \"odd\"\n ]);\n function isFilter(s3) {\n if (s3.type !== \"pseudo\")\n return false;\n if (exports2.filterNames.has(s3.name))\n return true;\n if (s3.name === \"not\" && Array.isArray(s3.data)) {\n return s3.data.some(function(s4) {\n return s4.some(isFilter);\n });\n }\n return false;\n }\n exports2.isFilter = isFilter;\n function getLimit(filter2, data) {\n var num = data != null ? parseInt(data, 10) : NaN;\n switch (filter2) {\n case \"first\":\n return 1;\n case \"nth\":\n case \"eq\":\n return isFinite(num) ? num >= 0 ? num + 1 : Infinity : 0;\n case \"lt\":\n return isFinite(num) ? num >= 0 ? num : Infinity : 0;\n case \"gt\":\n return isFinite(num) ? Infinity : 0;\n default:\n return Infinity;\n }\n }\n exports2.getLimit = getLimit;\n }\n});\n\n// node_modules/cheerio-select/lib/helpers.js\nvar require_helpers2 = __commonJS({\n \"node_modules/cheerio-select/lib/helpers.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.groupSelectors = exports2.getDocumentRoot = void 0;\n var positionals_1 = require_positionals();\n function getDocumentRoot(node) {\n while (node.parent)\n node = node.parent;\n return node;\n }\n exports2.getDocumentRoot = getDocumentRoot;\n function groupSelectors(selectors) {\n var filteredSelectors = [];\n var plainSelectors = [];\n for (var _i = 0, selectors_1 = selectors; _i < selectors_1.length; _i++) {\n var selector = selectors_1[_i];\n if (selector.some(positionals_1.isFilter)) {\n filteredSelectors.push(selector);\n } else {\n plainSelectors.push(selector);\n }\n }\n return [plainSelectors, filteredSelectors];\n }\n exports2.groupSelectors = groupSelectors;\n }\n});\n\n// node_modules/cheerio-select/lib/index.js\nvar require_lib9 = __commonJS({\n \"node_modules/cheerio-select/lib/index.js\"(exports2) {\n \"use strict\";\n var __assign4 = exports2 && exports2.__assign || function() {\n __assign4 = Object.assign || function(t4) {\n for (var s3, i3 = 1, n5 = arguments.length; i3 < n5; i3++) {\n s3 = arguments[i3];\n for (var p4 in s3)\n if (Object.prototype.hasOwnProperty.call(s3, p4))\n t4[p4] = s3[p4];\n }\n return t4;\n };\n return __assign4.apply(this, arguments);\n };\n var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n var desc = Object.getOwnPropertyDescriptor(m2, k4);\n if (!desc || (\"get\" in desc ? !m2.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() {\n return m2[k4];\n } };\n }\n Object.defineProperty(o3, k22, desc);\n } : function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n o3[k22] = m2[k4];\n });\n var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o3, v4) {\n Object.defineProperty(o3, \"default\", { enumerable: true, value: v4 });\n } : function(o3, v4) {\n o3[\"default\"] = v4;\n });\n var __importStar2 = exports2 && exports2.__importStar || function(mod) {\n if (mod && mod.__esModule)\n return mod;\n var result = {};\n if (mod != null) {\n for (var k4 in mod)\n if (k4 !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k4))\n __createBinding2(result, mod, k4);\n }\n __setModuleDefault(result, mod);\n return result;\n };\n var __spreadArray2 = exports2 && exports2.__spreadArray || function(to, from, pack) {\n if (pack || arguments.length === 2)\n for (var i3 = 0, l3 = from.length, ar; i3 < l3; i3++) {\n if (ar || !(i3 in from)) {\n if (!ar)\n ar = Array.prototype.slice.call(from, 0, i3);\n ar[i3] = from[i3];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.select = exports2.filter = exports2.some = exports2.is = exports2.aliases = exports2.pseudos = exports2.filters = void 0;\n var css_what_1 = require_commonjs();\n var css_select_1 = require_lib8();\n var DomUtils = __importStar2(require_lib6());\n var helpers_1 = require_helpers2();\n var positionals_1 = require_positionals();\n var css_select_2 = require_lib8();\n Object.defineProperty(exports2, \"filters\", { enumerable: true, get: function() {\n return css_select_2.filters;\n } });\n Object.defineProperty(exports2, \"pseudos\", { enumerable: true, get: function() {\n return css_select_2.pseudos;\n } });\n Object.defineProperty(exports2, \"aliases\", { enumerable: true, get: function() {\n return css_select_2.aliases;\n } });\n var SCOPE_PSEUDO = {\n type: css_what_1.SelectorType.Pseudo,\n name: \"scope\",\n data: null\n };\n var CUSTOM_SCOPE_PSEUDO = __assign4({}, SCOPE_PSEUDO);\n var UNIVERSAL_SELECTOR = {\n type: css_what_1.SelectorType.Universal,\n namespace: null\n };\n function is2(element4, selector, options) {\n if (options === void 0) {\n options = {};\n }\n return some([element4], selector, options);\n }\n exports2.is = is2;\n function some(elements, selector, options) {\n if (options === void 0) {\n options = {};\n }\n if (typeof selector === \"function\")\n return elements.some(selector);\n var _a = (0, helpers_1.groupSelectors)((0, css_what_1.parse)(selector)), plain = _a[0], filtered = _a[1];\n return plain.length > 0 && elements.some((0, css_select_1._compileToken)(plain, options)) || filtered.some(function(sel) {\n return filterBySelector(sel, elements, options).length > 0;\n });\n }\n exports2.some = some;\n function filterByPosition(filter3, elems, data, options) {\n var num = typeof data === \"string\" ? parseInt(data, 10) : NaN;\n switch (filter3) {\n case \"first\":\n case \"lt\":\n return elems;\n case \"last\":\n return elems.length > 0 ? [elems[elems.length - 1]] : elems;\n case \"nth\":\n case \"eq\":\n return isFinite(num) && Math.abs(num) < elems.length ? [num < 0 ? elems[elems.length + num] : elems[num]] : [];\n case \"gt\":\n return isFinite(num) ? elems.slice(num + 1) : [];\n case \"even\":\n return elems.filter(function(_4, i3) {\n return i3 % 2 === 0;\n });\n case \"odd\":\n return elems.filter(function(_4, i3) {\n return i3 % 2 === 1;\n });\n case \"not\": {\n var filtered_1 = new Set(filterParsed(data, elems, options));\n return elems.filter(function(e2) {\n return !filtered_1.has(e2);\n });\n }\n }\n }\n function filter2(selector, elements, options) {\n if (options === void 0) {\n options = {};\n }\n return filterParsed((0, css_what_1.parse)(selector), elements, options);\n }\n exports2.filter = filter2;\n function filterParsed(selector, elements, options) {\n if (elements.length === 0)\n return [];\n var _a = (0, helpers_1.groupSelectors)(selector), plainSelectors = _a[0], filteredSelectors = _a[1];\n var found;\n if (plainSelectors.length) {\n var filtered = filterElements(elements, plainSelectors, options);\n if (filteredSelectors.length === 0) {\n return filtered;\n }\n if (filtered.length) {\n found = new Set(filtered);\n }\n }\n for (var i3 = 0; i3 < filteredSelectors.length && (found === null || found === void 0 ? void 0 : found.size) !== elements.length; i3++) {\n var filteredSelector = filteredSelectors[i3];\n var missing = found ? elements.filter(function(e2) {\n return DomUtils.isTag(e2) && !found.has(e2);\n }) : elements;\n if (missing.length === 0)\n break;\n var filtered = filterBySelector(filteredSelector, elements, options);\n if (filtered.length) {\n if (!found) {\n if (i3 === filteredSelectors.length - 1) {\n return filtered;\n }\n found = new Set(filtered);\n } else {\n filtered.forEach(function(el) {\n return found.add(el);\n });\n }\n }\n }\n return typeof found !== \"undefined\" ? found.size === elements.length ? elements : elements.filter(function(el) {\n return found.has(el);\n }) : [];\n }\n function filterBySelector(selector, elements, options) {\n var _a;\n if (selector.some(css_what_1.isTraversal)) {\n var root5 = (_a = options.root) !== null && _a !== void 0 ? _a : (0, helpers_1.getDocumentRoot)(elements[0]);\n var sel = __spreadArray2(__spreadArray2([], selector, true), [CUSTOM_SCOPE_PSEUDO], false);\n return findFilterElements(root5, sel, options, true, elements);\n }\n return findFilterElements(elements, selector, options, false);\n }\n function select(selector, root5, options) {\n if (options === void 0) {\n options = {};\n }\n if (typeof selector === \"function\") {\n return find(root5, selector);\n }\n var _a = (0, helpers_1.groupSelectors)((0, css_what_1.parse)(selector)), plain = _a[0], filtered = _a[1];\n var results = filtered.map(function(sel) {\n return findFilterElements(root5, sel, options, true);\n });\n if (plain.length) {\n results.push(findElements(root5, plain, options, Infinity));\n }\n if (results.length === 0) {\n return [];\n }\n if (results.length === 1) {\n return results[0];\n }\n return DomUtils.uniqueSort(results.reduce(function(a5, b4) {\n return __spreadArray2(__spreadArray2([], a5, true), b4, true);\n }));\n }\n exports2.select = select;\n var specialTraversal = /* @__PURE__ */ new Set([\n css_what_1.SelectorType.Descendant,\n css_what_1.SelectorType.Adjacent\n ]);\n function includesScopePseudo(t4) {\n return t4 !== SCOPE_PSEUDO && t4.type === \"pseudo\" && (t4.name === \"scope\" || Array.isArray(t4.data) && t4.data.some(function(data) {\n return data.some(includesScopePseudo);\n }));\n }\n function addContextIfScope(selector, options, scopeContext) {\n return scopeContext && selector.some(includesScopePseudo) ? __assign4(__assign4({}, options), { context: scopeContext }) : options;\n }\n function findFilterElements(root5, selector, options, queryForSelector, scopeContext) {\n var filterIndex = selector.findIndex(positionals_1.isFilter);\n var sub = selector.slice(0, filterIndex);\n var filter3 = selector[filterIndex];\n var limit = (0, positionals_1.getLimit)(filter3.name, filter3.data);\n if (limit === 0)\n return [];\n var subOpts = addContextIfScope(sub, options, scopeContext);\n var elemsNoLimit = sub.length === 0 && !Array.isArray(root5) ? DomUtils.getChildren(root5).filter(DomUtils.isTag) : sub.length === 0 || sub.length === 1 && sub[0] === SCOPE_PSEUDO ? (Array.isArray(root5) ? root5 : [root5]).filter(DomUtils.isTag) : queryForSelector || sub.some(css_what_1.isTraversal) ? findElements(root5, [sub], subOpts, limit) : filterElements(root5, [sub], subOpts);\n var elems = elemsNoLimit.slice(0, limit);\n var result = filterByPosition(filter3.name, elems, filter3.data, options);\n if (result.length === 0 || selector.length === filterIndex + 1) {\n return result;\n }\n var remainingSelector = selector.slice(filterIndex + 1);\n var remainingHasTraversal = remainingSelector.some(css_what_1.isTraversal);\n var remainingOpts = addContextIfScope(remainingSelector, options, scopeContext);\n if (remainingHasTraversal) {\n if (specialTraversal.has(remainingSelector[0].type)) {\n remainingSelector.unshift(UNIVERSAL_SELECTOR);\n }\n remainingSelector.unshift(SCOPE_PSEUDO);\n }\n return remainingSelector.some(positionals_1.isFilter) ? findFilterElements(result, remainingSelector, options, false, scopeContext) : remainingHasTraversal ? findElements(result, [remainingSelector], remainingOpts, Infinity) : filterElements(result, [remainingSelector], remainingOpts);\n }\n function findElements(root5, sel, options, limit) {\n if (limit === 0)\n return [];\n var query = (0, css_select_1._compileToken)(sel, options, root5);\n return find(root5, query, limit);\n }\n function find(root5, query, limit) {\n if (limit === void 0) {\n limit = Infinity;\n }\n var elems = (0, css_select_1.prepareContext)(root5, DomUtils, query.shouldTestNextSiblings);\n return DomUtils.find(function(node) {\n return DomUtils.isTag(node) && query(node);\n }, elems, true, limit);\n }\n function filterElements(elements, sel, options) {\n var els = (Array.isArray(elements) ? elements : [elements]).filter(DomUtils.isTag);\n if (els.length === 0)\n return els;\n var query = (0, css_select_1._compileToken)(sel, options);\n return els.filter(query);\n }\n }\n});\n\n// node_modules/cheerio/node_modules/entities/lib/maps/decode.json\nvar require_decode3 = __commonJS({\n \"node_modules/cheerio/node_modules/entities/lib/maps/decode.json\"(exports2, module2) {\n module2.exports = { \"0\": 65533, \"128\": 8364, \"130\": 8218, \"131\": 402, \"132\": 8222, \"133\": 8230, \"134\": 8224, \"135\": 8225, \"136\": 710, \"137\": 8240, \"138\": 352, \"139\": 8249, \"140\": 338, \"142\": 381, \"145\": 8216, \"146\": 8217, \"147\": 8220, \"148\": 8221, \"149\": 8226, \"150\": 8211, \"151\": 8212, \"152\": 732, \"153\": 8482, \"154\": 353, \"155\": 8250, \"156\": 339, \"158\": 382, \"159\": 376 };\n }\n});\n\n// node_modules/cheerio/node_modules/entities/lib/decode_codepoint.js\nvar require_decode_codepoint2 = __commonJS({\n \"node_modules/cheerio/node_modules/entities/lib/decode_codepoint.js\"(exports2) {\n \"use strict\";\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n var decode_json_1 = __importDefault2(require_decode3());\n var fromCodePoint = String.fromCodePoint || function(codePoint) {\n var output = \"\";\n if (codePoint > 65535) {\n codePoint -= 65536;\n output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);\n codePoint = 56320 | codePoint & 1023;\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\n function decodeCodePoint(codePoint) {\n if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint(codePoint);\n }\n exports2.default = decodeCodePoint;\n }\n});\n\n// node_modules/cheerio/node_modules/entities/lib/maps/entities.json\nvar require_entities2 = __commonJS({\n \"node_modules/cheerio/node_modules/entities/lib/maps/entities.json\"(exports2, module2) {\n module2.exports = { Aacute: \"\\xC1\", aacute: \"\\xE1\", Abreve: \"\\u0102\", abreve: \"\\u0103\", ac: \"\\u223E\", acd: \"\\u223F\", acE: \"\\u223E\\u0333\", Acirc: \"\\xC2\", acirc: \"\\xE2\", acute: \"\\xB4\", Acy: \"\\u0410\", acy: \"\\u0430\", AElig: \"\\xC6\", aelig: \"\\xE6\", af: \"\\u2061\", Afr: \"\\u{1D504}\", afr: \"\\u{1D51E}\", Agrave: \"\\xC0\", agrave: \"\\xE0\", alefsym: \"\\u2135\", aleph: \"\\u2135\", Alpha: \"\\u0391\", alpha: \"\\u03B1\", Amacr: \"\\u0100\", amacr: \"\\u0101\", amalg: \"\\u2A3F\", amp: \"&\", AMP: \"&\", andand: \"\\u2A55\", And: \"\\u2A53\", and: \"\\u2227\", andd: \"\\u2A5C\", andslope: \"\\u2A58\", andv: \"\\u2A5A\", ang: \"\\u2220\", ange: \"\\u29A4\", angle: \"\\u2220\", angmsdaa: \"\\u29A8\", angmsdab: \"\\u29A9\", angmsdac: \"\\u29AA\", angmsdad: \"\\u29AB\", angmsdae: \"\\u29AC\", angmsdaf: \"\\u29AD\", angmsdag: \"\\u29AE\", angmsdah: \"\\u29AF\", angmsd: \"\\u2221\", angrt: \"\\u221F\", angrtvb: \"\\u22BE\", angrtvbd: \"\\u299D\", angsph: \"\\u2222\", angst: \"\\xC5\", angzarr: \"\\u237C\", Aogon: \"\\u0104\", aogon: \"\\u0105\", Aopf: \"\\u{1D538}\", aopf: \"\\u{1D552}\", apacir: \"\\u2A6F\", ap: \"\\u2248\", apE: \"\\u2A70\", ape: \"\\u224A\", apid: \"\\u224B\", apos: \"'\", ApplyFunction: \"\\u2061\", approx: \"\\u2248\", approxeq: \"\\u224A\", Aring: \"\\xC5\", aring: \"\\xE5\", Ascr: \"\\u{1D49C}\", ascr: \"\\u{1D4B6}\", Assign: \"\\u2254\", ast: \"*\", asymp: \"\\u2248\", asympeq: \"\\u224D\", Atilde: \"\\xC3\", atilde: \"\\xE3\", Auml: \"\\xC4\", auml: \"\\xE4\", awconint: \"\\u2233\", awint: \"\\u2A11\", backcong: \"\\u224C\", backepsilon: \"\\u03F6\", backprime: \"\\u2035\", backsim: \"\\u223D\", backsimeq: \"\\u22CD\", Backslash: \"\\u2216\", Barv: \"\\u2AE7\", barvee: \"\\u22BD\", barwed: \"\\u2305\", Barwed: \"\\u2306\", barwedge: \"\\u2305\", bbrk: \"\\u23B5\", bbrktbrk: \"\\u23B6\", bcong: \"\\u224C\", Bcy: \"\\u0411\", bcy: \"\\u0431\", bdquo: \"\\u201E\", becaus: \"\\u2235\", because: \"\\u2235\", Because: \"\\u2235\", bemptyv: \"\\u29B0\", bepsi: \"\\u03F6\", bernou: \"\\u212C\", Bernoullis: \"\\u212C\", Beta: \"\\u0392\", beta: \"\\u03B2\", beth: \"\\u2136\", between: \"\\u226C\", Bfr: \"\\u{1D505}\", bfr: \"\\u{1D51F}\", bigcap: \"\\u22C2\", bigcirc: \"\\u25EF\", bigcup: \"\\u22C3\", bigodot: \"\\u2A00\", bigoplus: \"\\u2A01\", bigotimes: \"\\u2A02\", bigsqcup: \"\\u2A06\", bigstar: \"\\u2605\", bigtriangledown: \"\\u25BD\", bigtriangleup: \"\\u25B3\", biguplus: \"\\u2A04\", bigvee: \"\\u22C1\", bigwedge: \"\\u22C0\", bkarow: \"\\u290D\", blacklozenge: \"\\u29EB\", blacksquare: \"\\u25AA\", blacktriangle: \"\\u25B4\", blacktriangledown: \"\\u25BE\", blacktriangleleft: \"\\u25C2\", blacktriangleright: \"\\u25B8\", blank: \"\\u2423\", blk12: \"\\u2592\", blk14: \"\\u2591\", blk34: \"\\u2593\", block: \"\\u2588\", bne: \"=\\u20E5\", bnequiv: \"\\u2261\\u20E5\", bNot: \"\\u2AED\", bnot: \"\\u2310\", Bopf: \"\\u{1D539}\", bopf: \"\\u{1D553}\", bot: \"\\u22A5\", bottom: \"\\u22A5\", bowtie: \"\\u22C8\", boxbox: \"\\u29C9\", boxdl: \"\\u2510\", boxdL: \"\\u2555\", boxDl: \"\\u2556\", boxDL: \"\\u2557\", boxdr: \"\\u250C\", boxdR: \"\\u2552\", boxDr: \"\\u2553\", boxDR: \"\\u2554\", boxh: \"\\u2500\", boxH: \"\\u2550\", boxhd: \"\\u252C\", boxHd: \"\\u2564\", boxhD: \"\\u2565\", boxHD: \"\\u2566\", boxhu: \"\\u2534\", boxHu: \"\\u2567\", boxhU: \"\\u2568\", boxHU: \"\\u2569\", boxminus: \"\\u229F\", boxplus: \"\\u229E\", boxtimes: \"\\u22A0\", boxul: \"\\u2518\", boxuL: \"\\u255B\", boxUl: \"\\u255C\", boxUL: \"\\u255D\", boxur: \"\\u2514\", boxuR: \"\\u2558\", boxUr: \"\\u2559\", boxUR: \"\\u255A\", boxv: \"\\u2502\", boxV: \"\\u2551\", boxvh: \"\\u253C\", boxvH: \"\\u256A\", boxVh: \"\\u256B\", boxVH: \"\\u256C\", boxvl: \"\\u2524\", boxvL: \"\\u2561\", boxVl: \"\\u2562\", boxVL: \"\\u2563\", boxvr: \"\\u251C\", boxvR: \"\\u255E\", boxVr: \"\\u255F\", boxVR: \"\\u2560\", bprime: \"\\u2035\", breve: \"\\u02D8\", Breve: \"\\u02D8\", brvbar: \"\\xA6\", bscr: \"\\u{1D4B7}\", Bscr: \"\\u212C\", bsemi: \"\\u204F\", bsim: \"\\u223D\", bsime: \"\\u22CD\", bsolb: \"\\u29C5\", bsol: \"\\\\\", bsolhsub: \"\\u27C8\", bull: \"\\u2022\", bullet: \"\\u2022\", bump: \"\\u224E\", bumpE: \"\\u2AAE\", bumpe: \"\\u224F\", Bumpeq: \"\\u224E\", bumpeq: \"\\u224F\", Cacute: \"\\u0106\", cacute: \"\\u0107\", capand: \"\\u2A44\", capbrcup: \"\\u2A49\", capcap: \"\\u2A4B\", cap: \"\\u2229\", Cap: \"\\u22D2\", capcup: \"\\u2A47\", capdot: \"\\u2A40\", CapitalDifferentialD: \"\\u2145\", caps: \"\\u2229\\uFE00\", caret: \"\\u2041\", caron: \"\\u02C7\", Cayleys: \"\\u212D\", ccaps: \"\\u2A4D\", Ccaron: \"\\u010C\", ccaron: \"\\u010D\", Ccedil: \"\\xC7\", ccedil: \"\\xE7\", Ccirc: \"\\u0108\", ccirc: \"\\u0109\", Cconint: \"\\u2230\", ccups: \"\\u2A4C\", ccupssm: \"\\u2A50\", Cdot: \"\\u010A\", cdot: \"\\u010B\", cedil: \"\\xB8\", Cedilla: \"\\xB8\", cemptyv: \"\\u29B2\", cent: \"\\xA2\", centerdot: \"\\xB7\", CenterDot: \"\\xB7\", cfr: \"\\u{1D520}\", Cfr: \"\\u212D\", CHcy: \"\\u0427\", chcy: \"\\u0447\", check: \"\\u2713\", checkmark: \"\\u2713\", Chi: \"\\u03A7\", chi: \"\\u03C7\", circ: \"\\u02C6\", circeq: \"\\u2257\", circlearrowleft: \"\\u21BA\", circlearrowright: \"\\u21BB\", circledast: \"\\u229B\", circledcirc: \"\\u229A\", circleddash: \"\\u229D\", CircleDot: \"\\u2299\", circledR: \"\\xAE\", circledS: \"\\u24C8\", CircleMinus: \"\\u2296\", CirclePlus: \"\\u2295\", CircleTimes: \"\\u2297\", cir: \"\\u25CB\", cirE: \"\\u29C3\", cire: \"\\u2257\", cirfnint: \"\\u2A10\", cirmid: \"\\u2AEF\", cirscir: \"\\u29C2\", ClockwiseContourIntegral: \"\\u2232\", CloseCurlyDoubleQuote: \"\\u201D\", CloseCurlyQuote: \"\\u2019\", clubs: \"\\u2663\", clubsuit: \"\\u2663\", colon: \":\", Colon: \"\\u2237\", Colone: \"\\u2A74\", colone: \"\\u2254\", coloneq: \"\\u2254\", comma: \",\", commat: \"@\", comp: \"\\u2201\", compfn: \"\\u2218\", complement: \"\\u2201\", complexes: \"\\u2102\", cong: \"\\u2245\", congdot: \"\\u2A6D\", Congruent: \"\\u2261\", conint: \"\\u222E\", Conint: \"\\u222F\", ContourIntegral: \"\\u222E\", copf: \"\\u{1D554}\", Copf: \"\\u2102\", coprod: \"\\u2210\", Coproduct: \"\\u2210\", copy: \"\\xA9\", COPY: \"\\xA9\", copysr: \"\\u2117\", CounterClockwiseContourIntegral: \"\\u2233\", crarr: \"\\u21B5\", cross: \"\\u2717\", Cross: \"\\u2A2F\", Cscr: \"\\u{1D49E}\", cscr: \"\\u{1D4B8}\", csub: \"\\u2ACF\", csube: \"\\u2AD1\", csup: \"\\u2AD0\", csupe: \"\\u2AD2\", ctdot: \"\\u22EF\", cudarrl: \"\\u2938\", cudarrr: \"\\u2935\", cuepr: \"\\u22DE\", cuesc: \"\\u22DF\", cularr: \"\\u21B6\", cularrp: \"\\u293D\", cupbrcap: \"\\u2A48\", cupcap: \"\\u2A46\", CupCap: \"\\u224D\", cup: \"\\u222A\", Cup: \"\\u22D3\", cupcup: \"\\u2A4A\", cupdot: \"\\u228D\", cupor: \"\\u2A45\", cups: \"\\u222A\\uFE00\", curarr: \"\\u21B7\", curarrm: \"\\u293C\", curlyeqprec: \"\\u22DE\", curlyeqsucc: \"\\u22DF\", curlyvee: \"\\u22CE\", curlywedge: \"\\u22CF\", curren: \"\\xA4\", curvearrowleft: \"\\u21B6\", curvearrowright: \"\\u21B7\", cuvee: \"\\u22CE\", cuwed: \"\\u22CF\", cwconint: \"\\u2232\", cwint: \"\\u2231\", cylcty: \"\\u232D\", dagger: \"\\u2020\", Dagger: \"\\u2021\", daleth: \"\\u2138\", darr: \"\\u2193\", Darr: \"\\u21A1\", dArr: \"\\u21D3\", dash: \"\\u2010\", Dashv: \"\\u2AE4\", dashv: \"\\u22A3\", dbkarow: \"\\u290F\", dblac: \"\\u02DD\", Dcaron: \"\\u010E\", dcaron: \"\\u010F\", Dcy: \"\\u0414\", dcy: \"\\u0434\", ddagger: \"\\u2021\", ddarr: \"\\u21CA\", DD: \"\\u2145\", dd: \"\\u2146\", DDotrahd: \"\\u2911\", ddotseq: \"\\u2A77\", deg: \"\\xB0\", Del: \"\\u2207\", Delta: \"\\u0394\", delta: \"\\u03B4\", demptyv: \"\\u29B1\", dfisht: \"\\u297F\", Dfr: \"\\u{1D507}\", dfr: \"\\u{1D521}\", dHar: \"\\u2965\", dharl: \"\\u21C3\", dharr: \"\\u21C2\", DiacriticalAcute: \"\\xB4\", DiacriticalDot: \"\\u02D9\", DiacriticalDoubleAcute: \"\\u02DD\", DiacriticalGrave: \"`\", DiacriticalTilde: \"\\u02DC\", diam: \"\\u22C4\", diamond: \"\\u22C4\", Diamond: \"\\u22C4\", diamondsuit: \"\\u2666\", diams: \"\\u2666\", die: \"\\xA8\", DifferentialD: \"\\u2146\", digamma: \"\\u03DD\", disin: \"\\u22F2\", div: \"\\xF7\", divide: \"\\xF7\", divideontimes: \"\\u22C7\", divonx: \"\\u22C7\", DJcy: \"\\u0402\", djcy: \"\\u0452\", dlcorn: \"\\u231E\", dlcrop: \"\\u230D\", dollar: \"$\", Dopf: \"\\u{1D53B}\", dopf: \"\\u{1D555}\", Dot: \"\\xA8\", dot: \"\\u02D9\", DotDot: \"\\u20DC\", doteq: \"\\u2250\", doteqdot: \"\\u2251\", DotEqual: \"\\u2250\", dotminus: \"\\u2238\", dotplus: \"\\u2214\", dotsquare: \"\\u22A1\", doublebarwedge: \"\\u2306\", DoubleContourIntegral: \"\\u222F\", DoubleDot: \"\\xA8\", DoubleDownArrow: \"\\u21D3\", DoubleLeftArrow: \"\\u21D0\", DoubleLeftRightArrow: \"\\u21D4\", DoubleLeftTee: \"\\u2AE4\", DoubleLongLeftArrow: \"\\u27F8\", DoubleLongLeftRightArrow: \"\\u27FA\", DoubleLongRightArrow: \"\\u27F9\", DoubleRightArrow: \"\\u21D2\", DoubleRightTee: \"\\u22A8\", DoubleUpArrow: \"\\u21D1\", DoubleUpDownArrow: \"\\u21D5\", DoubleVerticalBar: \"\\u2225\", DownArrowBar: \"\\u2913\", downarrow: \"\\u2193\", DownArrow: \"\\u2193\", Downarrow: \"\\u21D3\", DownArrowUpArrow: \"\\u21F5\", DownBreve: \"\\u0311\", downdownarrows: \"\\u21CA\", downharpoonleft: \"\\u21C3\", downharpoonright: \"\\u21C2\", DownLeftRightVector: \"\\u2950\", DownLeftTeeVector: \"\\u295E\", DownLeftVectorBar: \"\\u2956\", DownLeftVector: \"\\u21BD\", DownRightTeeVector: \"\\u295F\", DownRightVectorBar: \"\\u2957\", DownRightVector: \"\\u21C1\", DownTeeArrow: \"\\u21A7\", DownTee: \"\\u22A4\", drbkarow: \"\\u2910\", drcorn: \"\\u231F\", drcrop: \"\\u230C\", Dscr: \"\\u{1D49F}\", dscr: \"\\u{1D4B9}\", DScy: \"\\u0405\", dscy: \"\\u0455\", dsol: \"\\u29F6\", Dstrok: \"\\u0110\", dstrok: \"\\u0111\", dtdot: \"\\u22F1\", dtri: \"\\u25BF\", dtrif: \"\\u25BE\", duarr: \"\\u21F5\", duhar: \"\\u296F\", dwangle: \"\\u29A6\", DZcy: \"\\u040F\", dzcy: \"\\u045F\", dzigrarr: \"\\u27FF\", Eacute: \"\\xC9\", eacute: \"\\xE9\", easter: \"\\u2A6E\", Ecaron: \"\\u011A\", ecaron: \"\\u011B\", Ecirc: \"\\xCA\", ecirc: \"\\xEA\", ecir: \"\\u2256\", ecolon: \"\\u2255\", Ecy: \"\\u042D\", ecy: \"\\u044D\", eDDot: \"\\u2A77\", Edot: \"\\u0116\", edot: \"\\u0117\", eDot: \"\\u2251\", ee: \"\\u2147\", efDot: \"\\u2252\", Efr: \"\\u{1D508}\", efr: \"\\u{1D522}\", eg: \"\\u2A9A\", Egrave: \"\\xC8\", egrave: \"\\xE8\", egs: \"\\u2A96\", egsdot: \"\\u2A98\", el: \"\\u2A99\", Element: \"\\u2208\", elinters: \"\\u23E7\", ell: \"\\u2113\", els: \"\\u2A95\", elsdot: \"\\u2A97\", Emacr: \"\\u0112\", emacr: \"\\u0113\", empty: \"\\u2205\", emptyset: \"\\u2205\", EmptySmallSquare: \"\\u25FB\", emptyv: \"\\u2205\", EmptyVerySmallSquare: \"\\u25AB\", emsp13: \"\\u2004\", emsp14: \"\\u2005\", emsp: \"\\u2003\", ENG: \"\\u014A\", eng: \"\\u014B\", ensp: \"\\u2002\", Eogon: \"\\u0118\", eogon: \"\\u0119\", Eopf: \"\\u{1D53C}\", eopf: \"\\u{1D556}\", epar: \"\\u22D5\", eparsl: \"\\u29E3\", eplus: \"\\u2A71\", epsi: \"\\u03B5\", Epsilon: \"\\u0395\", epsilon: \"\\u03B5\", epsiv: \"\\u03F5\", eqcirc: \"\\u2256\", eqcolon: \"\\u2255\", eqsim: \"\\u2242\", eqslantgtr: \"\\u2A96\", eqslantless: \"\\u2A95\", Equal: \"\\u2A75\", equals: \"=\", EqualTilde: \"\\u2242\", equest: \"\\u225F\", Equilibrium: \"\\u21CC\", equiv: \"\\u2261\", equivDD: \"\\u2A78\", eqvparsl: \"\\u29E5\", erarr: \"\\u2971\", erDot: \"\\u2253\", escr: \"\\u212F\", Escr: \"\\u2130\", esdot: \"\\u2250\", Esim: \"\\u2A73\", esim: \"\\u2242\", Eta: \"\\u0397\", eta: \"\\u03B7\", ETH: \"\\xD0\", eth: \"\\xF0\", Euml: \"\\xCB\", euml: \"\\xEB\", euro: \"\\u20AC\", excl: \"!\", exist: \"\\u2203\", Exists: \"\\u2203\", expectation: \"\\u2130\", exponentiale: \"\\u2147\", ExponentialE: \"\\u2147\", fallingdotseq: \"\\u2252\", Fcy: \"\\u0424\", fcy: \"\\u0444\", female: \"\\u2640\", ffilig: \"\\uFB03\", fflig: \"\\uFB00\", ffllig: \"\\uFB04\", Ffr: \"\\u{1D509}\", ffr: \"\\u{1D523}\", filig: \"\\uFB01\", FilledSmallSquare: \"\\u25FC\", FilledVerySmallSquare: \"\\u25AA\", fjlig: \"fj\", flat: \"\\u266D\", fllig: \"\\uFB02\", fltns: \"\\u25B1\", fnof: \"\\u0192\", Fopf: \"\\u{1D53D}\", fopf: \"\\u{1D557}\", forall: \"\\u2200\", ForAll: \"\\u2200\", fork: \"\\u22D4\", forkv: \"\\u2AD9\", Fouriertrf: \"\\u2131\", fpartint: \"\\u2A0D\", frac12: \"\\xBD\", frac13: \"\\u2153\", frac14: \"\\xBC\", frac15: \"\\u2155\", frac16: \"\\u2159\", frac18: \"\\u215B\", frac23: \"\\u2154\", frac25: \"\\u2156\", frac34: \"\\xBE\", frac35: \"\\u2157\", frac38: \"\\u215C\", frac45: \"\\u2158\", frac56: \"\\u215A\", frac58: \"\\u215D\", frac78: \"\\u215E\", frasl: \"\\u2044\", frown: \"\\u2322\", fscr: \"\\u{1D4BB}\", Fscr: \"\\u2131\", gacute: \"\\u01F5\", Gamma: \"\\u0393\", gamma: \"\\u03B3\", Gammad: \"\\u03DC\", gammad: \"\\u03DD\", gap: \"\\u2A86\", Gbreve: \"\\u011E\", gbreve: \"\\u011F\", Gcedil: \"\\u0122\", Gcirc: \"\\u011C\", gcirc: \"\\u011D\", Gcy: \"\\u0413\", gcy: \"\\u0433\", Gdot: \"\\u0120\", gdot: \"\\u0121\", ge: \"\\u2265\", gE: \"\\u2267\", gEl: \"\\u2A8C\", gel: \"\\u22DB\", geq: \"\\u2265\", geqq: \"\\u2267\", geqslant: \"\\u2A7E\", gescc: \"\\u2AA9\", ges: \"\\u2A7E\", gesdot: \"\\u2A80\", gesdoto: \"\\u2A82\", gesdotol: \"\\u2A84\", gesl: \"\\u22DB\\uFE00\", gesles: \"\\u2A94\", Gfr: \"\\u{1D50A}\", gfr: \"\\u{1D524}\", gg: \"\\u226B\", Gg: \"\\u22D9\", ggg: \"\\u22D9\", gimel: \"\\u2137\", GJcy: \"\\u0403\", gjcy: \"\\u0453\", gla: \"\\u2AA5\", gl: \"\\u2277\", glE: \"\\u2A92\", glj: \"\\u2AA4\", gnap: \"\\u2A8A\", gnapprox: \"\\u2A8A\", gne: \"\\u2A88\", gnE: \"\\u2269\", gneq: \"\\u2A88\", gneqq: \"\\u2269\", gnsim: \"\\u22E7\", Gopf: \"\\u{1D53E}\", gopf: \"\\u{1D558}\", grave: \"`\", GreaterEqual: \"\\u2265\", GreaterEqualLess: \"\\u22DB\", GreaterFullEqual: \"\\u2267\", GreaterGreater: \"\\u2AA2\", GreaterLess: \"\\u2277\", GreaterSlantEqual: \"\\u2A7E\", GreaterTilde: \"\\u2273\", Gscr: \"\\u{1D4A2}\", gscr: \"\\u210A\", gsim: \"\\u2273\", gsime: \"\\u2A8E\", gsiml: \"\\u2A90\", gtcc: \"\\u2AA7\", gtcir: \"\\u2A7A\", gt: \">\", GT: \">\", Gt: \"\\u226B\", gtdot: \"\\u22D7\", gtlPar: \"\\u2995\", gtquest: \"\\u2A7C\", gtrapprox: \"\\u2A86\", gtrarr: \"\\u2978\", gtrdot: \"\\u22D7\", gtreqless: \"\\u22DB\", gtreqqless: \"\\u2A8C\", gtrless: \"\\u2277\", gtrsim: \"\\u2273\", gvertneqq: \"\\u2269\\uFE00\", gvnE: \"\\u2269\\uFE00\", Hacek: \"\\u02C7\", hairsp: \"\\u200A\", half: \"\\xBD\", hamilt: \"\\u210B\", HARDcy: \"\\u042A\", hardcy: \"\\u044A\", harrcir: \"\\u2948\", harr: \"\\u2194\", hArr: \"\\u21D4\", harrw: \"\\u21AD\", Hat: \"^\", hbar: \"\\u210F\", Hcirc: \"\\u0124\", hcirc: \"\\u0125\", hearts: \"\\u2665\", heartsuit: \"\\u2665\", hellip: \"\\u2026\", hercon: \"\\u22B9\", hfr: \"\\u{1D525}\", Hfr: \"\\u210C\", HilbertSpace: \"\\u210B\", hksearow: \"\\u2925\", hkswarow: \"\\u2926\", hoarr: \"\\u21FF\", homtht: \"\\u223B\", hookleftarrow: \"\\u21A9\", hookrightarrow: \"\\u21AA\", hopf: \"\\u{1D559}\", Hopf: \"\\u210D\", horbar: \"\\u2015\", HorizontalLine: \"\\u2500\", hscr: \"\\u{1D4BD}\", Hscr: \"\\u210B\", hslash: \"\\u210F\", Hstrok: \"\\u0126\", hstrok: \"\\u0127\", HumpDownHump: \"\\u224E\", HumpEqual: \"\\u224F\", hybull: \"\\u2043\", hyphen: \"\\u2010\", Iacute: \"\\xCD\", iacute: \"\\xED\", ic: \"\\u2063\", Icirc: \"\\xCE\", icirc: \"\\xEE\", Icy: \"\\u0418\", icy: \"\\u0438\", Idot: \"\\u0130\", IEcy: \"\\u0415\", iecy: \"\\u0435\", iexcl: \"\\xA1\", iff: \"\\u21D4\", ifr: \"\\u{1D526}\", Ifr: \"\\u2111\", Igrave: \"\\xCC\", igrave: \"\\xEC\", ii: \"\\u2148\", iiiint: \"\\u2A0C\", iiint: \"\\u222D\", iinfin: \"\\u29DC\", iiota: \"\\u2129\", IJlig: \"\\u0132\", ijlig: \"\\u0133\", Imacr: \"\\u012A\", imacr: \"\\u012B\", image: \"\\u2111\", ImaginaryI: \"\\u2148\", imagline: \"\\u2110\", imagpart: \"\\u2111\", imath: \"\\u0131\", Im: \"\\u2111\", imof: \"\\u22B7\", imped: \"\\u01B5\", Implies: \"\\u21D2\", incare: \"\\u2105\", in: \"\\u2208\", infin: \"\\u221E\", infintie: \"\\u29DD\", inodot: \"\\u0131\", intcal: \"\\u22BA\", int: \"\\u222B\", Int: \"\\u222C\", integers: \"\\u2124\", Integral: \"\\u222B\", intercal: \"\\u22BA\", Intersection: \"\\u22C2\", intlarhk: \"\\u2A17\", intprod: \"\\u2A3C\", InvisibleComma: \"\\u2063\", InvisibleTimes: \"\\u2062\", IOcy: \"\\u0401\", iocy: \"\\u0451\", Iogon: \"\\u012E\", iogon: \"\\u012F\", Iopf: \"\\u{1D540}\", iopf: \"\\u{1D55A}\", Iota: \"\\u0399\", iota: \"\\u03B9\", iprod: \"\\u2A3C\", iquest: \"\\xBF\", iscr: \"\\u{1D4BE}\", Iscr: \"\\u2110\", isin: \"\\u2208\", isindot: \"\\u22F5\", isinE: \"\\u22F9\", isins: \"\\u22F4\", isinsv: \"\\u22F3\", isinv: \"\\u2208\", it: \"\\u2062\", Itilde: \"\\u0128\", itilde: \"\\u0129\", Iukcy: \"\\u0406\", iukcy: \"\\u0456\", Iuml: \"\\xCF\", iuml: \"\\xEF\", Jcirc: \"\\u0134\", jcirc: \"\\u0135\", Jcy: \"\\u0419\", jcy: \"\\u0439\", Jfr: \"\\u{1D50D}\", jfr: \"\\u{1D527}\", jmath: \"\\u0237\", Jopf: \"\\u{1D541}\", jopf: \"\\u{1D55B}\", Jscr: \"\\u{1D4A5}\", jscr: \"\\u{1D4BF}\", Jsercy: \"\\u0408\", jsercy: \"\\u0458\", Jukcy: \"\\u0404\", jukcy: \"\\u0454\", Kappa: \"\\u039A\", kappa: \"\\u03BA\", kappav: \"\\u03F0\", Kcedil: \"\\u0136\", kcedil: \"\\u0137\", Kcy: \"\\u041A\", kcy: \"\\u043A\", Kfr: \"\\u{1D50E}\", kfr: \"\\u{1D528}\", kgreen: \"\\u0138\", KHcy: \"\\u0425\", khcy: \"\\u0445\", KJcy: \"\\u040C\", kjcy: \"\\u045C\", Kopf: \"\\u{1D542}\", kopf: \"\\u{1D55C}\", Kscr: \"\\u{1D4A6}\", kscr: \"\\u{1D4C0}\", lAarr: \"\\u21DA\", Lacute: \"\\u0139\", lacute: \"\\u013A\", laemptyv: \"\\u29B4\", lagran: \"\\u2112\", Lambda: \"\\u039B\", lambda: \"\\u03BB\", lang: \"\\u27E8\", Lang: \"\\u27EA\", langd: \"\\u2991\", langle: \"\\u27E8\", lap: \"\\u2A85\", Laplacetrf: \"\\u2112\", laquo: \"\\xAB\", larrb: \"\\u21E4\", larrbfs: \"\\u291F\", larr: \"\\u2190\", Larr: \"\\u219E\", lArr: \"\\u21D0\", larrfs: \"\\u291D\", larrhk: \"\\u21A9\", larrlp: \"\\u21AB\", larrpl: \"\\u2939\", larrsim: \"\\u2973\", larrtl: \"\\u21A2\", latail: \"\\u2919\", lAtail: \"\\u291B\", lat: \"\\u2AAB\", late: \"\\u2AAD\", lates: \"\\u2AAD\\uFE00\", lbarr: \"\\u290C\", lBarr: \"\\u290E\", lbbrk: \"\\u2772\", lbrace: \"{\", lbrack: \"[\", lbrke: \"\\u298B\", lbrksld: \"\\u298F\", lbrkslu: \"\\u298D\", Lcaron: \"\\u013D\", lcaron: \"\\u013E\", Lcedil: \"\\u013B\", lcedil: \"\\u013C\", lceil: \"\\u2308\", lcub: \"{\", Lcy: \"\\u041B\", lcy: \"\\u043B\", ldca: \"\\u2936\", ldquo: \"\\u201C\", ldquor: \"\\u201E\", ldrdhar: \"\\u2967\", ldrushar: \"\\u294B\", ldsh: \"\\u21B2\", le: \"\\u2264\", lE: \"\\u2266\", LeftAngleBracket: \"\\u27E8\", LeftArrowBar: \"\\u21E4\", leftarrow: \"\\u2190\", LeftArrow: \"\\u2190\", Leftarrow: \"\\u21D0\", LeftArrowRightArrow: \"\\u21C6\", leftarrowtail: \"\\u21A2\", LeftCeiling: \"\\u2308\", LeftDoubleBracket: \"\\u27E6\", LeftDownTeeVector: \"\\u2961\", LeftDownVectorBar: \"\\u2959\", LeftDownVector: \"\\u21C3\", LeftFloor: \"\\u230A\", leftharpoondown: \"\\u21BD\", leftharpoonup: \"\\u21BC\", leftleftarrows: \"\\u21C7\", leftrightarrow: \"\\u2194\", LeftRightArrow: \"\\u2194\", Leftrightarrow: \"\\u21D4\", leftrightarrows: \"\\u21C6\", leftrightharpoons: \"\\u21CB\", leftrightsquigarrow: \"\\u21AD\", LeftRightVector: \"\\u294E\", LeftTeeArrow: \"\\u21A4\", LeftTee: \"\\u22A3\", LeftTeeVector: \"\\u295A\", leftthreetimes: \"\\u22CB\", LeftTriangleBar: \"\\u29CF\", LeftTriangle: \"\\u22B2\", LeftTriangleEqual: \"\\u22B4\", LeftUpDownVector: \"\\u2951\", LeftUpTeeVector: \"\\u2960\", LeftUpVectorBar: \"\\u2958\", LeftUpVector: \"\\u21BF\", LeftVectorBar: \"\\u2952\", LeftVector: \"\\u21BC\", lEg: \"\\u2A8B\", leg: \"\\u22DA\", leq: \"\\u2264\", leqq: \"\\u2266\", leqslant: \"\\u2A7D\", lescc: \"\\u2AA8\", les: \"\\u2A7D\", lesdot: \"\\u2A7F\", lesdoto: \"\\u2A81\", lesdotor: \"\\u2A83\", lesg: \"\\u22DA\\uFE00\", lesges: \"\\u2A93\", lessapprox: \"\\u2A85\", lessdot: \"\\u22D6\", lesseqgtr: \"\\u22DA\", lesseqqgtr: \"\\u2A8B\", LessEqualGreater: \"\\u22DA\", LessFullEqual: \"\\u2266\", LessGreater: \"\\u2276\", lessgtr: \"\\u2276\", LessLess: \"\\u2AA1\", lesssim: \"\\u2272\", LessSlantEqual: \"\\u2A7D\", LessTilde: \"\\u2272\", lfisht: \"\\u297C\", lfloor: \"\\u230A\", Lfr: \"\\u{1D50F}\", lfr: \"\\u{1D529}\", lg: \"\\u2276\", lgE: \"\\u2A91\", lHar: \"\\u2962\", lhard: \"\\u21BD\", lharu: \"\\u21BC\", lharul: \"\\u296A\", lhblk: \"\\u2584\", LJcy: \"\\u0409\", ljcy: \"\\u0459\", llarr: \"\\u21C7\", ll: \"\\u226A\", Ll: \"\\u22D8\", llcorner: \"\\u231E\", Lleftarrow: \"\\u21DA\", llhard: \"\\u296B\", lltri: \"\\u25FA\", Lmidot: \"\\u013F\", lmidot: \"\\u0140\", lmoustache: \"\\u23B0\", lmoust: \"\\u23B0\", lnap: \"\\u2A89\", lnapprox: \"\\u2A89\", lne: \"\\u2A87\", lnE: \"\\u2268\", lneq: \"\\u2A87\", lneqq: \"\\u2268\", lnsim: \"\\u22E6\", loang: \"\\u27EC\", loarr: \"\\u21FD\", lobrk: \"\\u27E6\", longleftarrow: \"\\u27F5\", LongLeftArrow: \"\\u27F5\", Longleftarrow: \"\\u27F8\", longleftrightarrow: \"\\u27F7\", LongLeftRightArrow: \"\\u27F7\", Longleftrightarrow: \"\\u27FA\", longmapsto: \"\\u27FC\", longrightarrow: \"\\u27F6\", LongRightArrow: \"\\u27F6\", Longrightarrow: \"\\u27F9\", looparrowleft: \"\\u21AB\", looparrowright: \"\\u21AC\", lopar: \"\\u2985\", Lopf: \"\\u{1D543}\", lopf: \"\\u{1D55D}\", loplus: \"\\u2A2D\", lotimes: \"\\u2A34\", lowast: \"\\u2217\", lowbar: \"_\", LowerLeftArrow: \"\\u2199\", LowerRightArrow: \"\\u2198\", loz: \"\\u25CA\", lozenge: \"\\u25CA\", lozf: \"\\u29EB\", lpar: \"(\", lparlt: \"\\u2993\", lrarr: \"\\u21C6\", lrcorner: \"\\u231F\", lrhar: \"\\u21CB\", lrhard: \"\\u296D\", lrm: \"\\u200E\", lrtri: \"\\u22BF\", lsaquo: \"\\u2039\", lscr: \"\\u{1D4C1}\", Lscr: \"\\u2112\", lsh: \"\\u21B0\", Lsh: \"\\u21B0\", lsim: \"\\u2272\", lsime: \"\\u2A8D\", lsimg: \"\\u2A8F\", lsqb: \"[\", lsquo: \"\\u2018\", lsquor: \"\\u201A\", Lstrok: \"\\u0141\", lstrok: \"\\u0142\", ltcc: \"\\u2AA6\", ltcir: \"\\u2A79\", lt: \"<\", LT: \"<\", Lt: \"\\u226A\", ltdot: \"\\u22D6\", lthree: \"\\u22CB\", ltimes: \"\\u22C9\", ltlarr: \"\\u2976\", ltquest: \"\\u2A7B\", ltri: \"\\u25C3\", ltrie: \"\\u22B4\", ltrif: \"\\u25C2\", ltrPar: \"\\u2996\", lurdshar: \"\\u294A\", luruhar: \"\\u2966\", lvertneqq: \"\\u2268\\uFE00\", lvnE: \"\\u2268\\uFE00\", macr: \"\\xAF\", male: \"\\u2642\", malt: \"\\u2720\", maltese: \"\\u2720\", Map: \"\\u2905\", map: \"\\u21A6\", mapsto: \"\\u21A6\", mapstodown: \"\\u21A7\", mapstoleft: \"\\u21A4\", mapstoup: \"\\u21A5\", marker: \"\\u25AE\", mcomma: \"\\u2A29\", Mcy: \"\\u041C\", mcy: \"\\u043C\", mdash: \"\\u2014\", mDDot: \"\\u223A\", measuredangle: \"\\u2221\", MediumSpace: \"\\u205F\", Mellintrf: \"\\u2133\", Mfr: \"\\u{1D510}\", mfr: \"\\u{1D52A}\", mho: \"\\u2127\", micro: \"\\xB5\", midast: \"*\", midcir: \"\\u2AF0\", mid: \"\\u2223\", middot: \"\\xB7\", minusb: \"\\u229F\", minus: \"\\u2212\", minusd: \"\\u2238\", minusdu: \"\\u2A2A\", MinusPlus: \"\\u2213\", mlcp: \"\\u2ADB\", mldr: \"\\u2026\", mnplus: \"\\u2213\", models: \"\\u22A7\", Mopf: \"\\u{1D544}\", mopf: \"\\u{1D55E}\", mp: \"\\u2213\", mscr: \"\\u{1D4C2}\", Mscr: \"\\u2133\", mstpos: \"\\u223E\", Mu: \"\\u039C\", mu: \"\\u03BC\", multimap: \"\\u22B8\", mumap: \"\\u22B8\", nabla: \"\\u2207\", Nacute: \"\\u0143\", nacute: \"\\u0144\", nang: \"\\u2220\\u20D2\", nap: \"\\u2249\", napE: \"\\u2A70\\u0338\", napid: \"\\u224B\\u0338\", napos: \"\\u0149\", napprox: \"\\u2249\", natural: \"\\u266E\", naturals: \"\\u2115\", natur: \"\\u266E\", nbsp: \"\\xA0\", nbump: \"\\u224E\\u0338\", nbumpe: \"\\u224F\\u0338\", ncap: \"\\u2A43\", Ncaron: \"\\u0147\", ncaron: \"\\u0148\", Ncedil: \"\\u0145\", ncedil: \"\\u0146\", ncong: \"\\u2247\", ncongdot: \"\\u2A6D\\u0338\", ncup: \"\\u2A42\", Ncy: \"\\u041D\", ncy: \"\\u043D\", ndash: \"\\u2013\", nearhk: \"\\u2924\", nearr: \"\\u2197\", neArr: \"\\u21D7\", nearrow: \"\\u2197\", ne: \"\\u2260\", nedot: \"\\u2250\\u0338\", NegativeMediumSpace: \"\\u200B\", NegativeThickSpace: \"\\u200B\", NegativeThinSpace: \"\\u200B\", NegativeVeryThinSpace: \"\\u200B\", nequiv: \"\\u2262\", nesear: \"\\u2928\", nesim: \"\\u2242\\u0338\", NestedGreaterGreater: \"\\u226B\", NestedLessLess: \"\\u226A\", NewLine: \"\\n\", nexist: \"\\u2204\", nexists: \"\\u2204\", Nfr: \"\\u{1D511}\", nfr: \"\\u{1D52B}\", ngE: \"\\u2267\\u0338\", nge: \"\\u2271\", ngeq: \"\\u2271\", ngeqq: \"\\u2267\\u0338\", ngeqslant: \"\\u2A7E\\u0338\", nges: \"\\u2A7E\\u0338\", nGg: \"\\u22D9\\u0338\", ngsim: \"\\u2275\", nGt: \"\\u226B\\u20D2\", ngt: \"\\u226F\", ngtr: \"\\u226F\", nGtv: \"\\u226B\\u0338\", nharr: \"\\u21AE\", nhArr: \"\\u21CE\", nhpar: \"\\u2AF2\", ni: \"\\u220B\", nis: \"\\u22FC\", nisd: \"\\u22FA\", niv: \"\\u220B\", NJcy: \"\\u040A\", njcy: \"\\u045A\", nlarr: \"\\u219A\", nlArr: \"\\u21CD\", nldr: \"\\u2025\", nlE: \"\\u2266\\u0338\", nle: \"\\u2270\", nleftarrow: \"\\u219A\", nLeftarrow: \"\\u21CD\", nleftrightarrow: \"\\u21AE\", nLeftrightarrow: \"\\u21CE\", nleq: \"\\u2270\", nleqq: \"\\u2266\\u0338\", nleqslant: \"\\u2A7D\\u0338\", nles: \"\\u2A7D\\u0338\", nless: \"\\u226E\", nLl: \"\\u22D8\\u0338\", nlsim: \"\\u2274\", nLt: \"\\u226A\\u20D2\", nlt: \"\\u226E\", nltri: \"\\u22EA\", nltrie: \"\\u22EC\", nLtv: \"\\u226A\\u0338\", nmid: \"\\u2224\", NoBreak: \"\\u2060\", NonBreakingSpace: \"\\xA0\", nopf: \"\\u{1D55F}\", Nopf: \"\\u2115\", Not: \"\\u2AEC\", not: \"\\xAC\", NotCongruent: \"\\u2262\", NotCupCap: \"\\u226D\", NotDoubleVerticalBar: \"\\u2226\", NotElement: \"\\u2209\", NotEqual: \"\\u2260\", NotEqualTilde: \"\\u2242\\u0338\", NotExists: \"\\u2204\", NotGreater: \"\\u226F\", NotGreaterEqual: \"\\u2271\", NotGreaterFullEqual: \"\\u2267\\u0338\", NotGreaterGreater: \"\\u226B\\u0338\", NotGreaterLess: \"\\u2279\", NotGreaterSlantEqual: \"\\u2A7E\\u0338\", NotGreaterTilde: \"\\u2275\", NotHumpDownHump: \"\\u224E\\u0338\", NotHumpEqual: \"\\u224F\\u0338\", notin: \"\\u2209\", notindot: \"\\u22F5\\u0338\", notinE: \"\\u22F9\\u0338\", notinva: \"\\u2209\", notinvb: \"\\u22F7\", notinvc: \"\\u22F6\", NotLeftTriangleBar: \"\\u29CF\\u0338\", NotLeftTriangle: \"\\u22EA\", NotLeftTriangleEqual: \"\\u22EC\", NotLess: \"\\u226E\", NotLessEqual: \"\\u2270\", NotLessGreater: \"\\u2278\", NotLessLess: \"\\u226A\\u0338\", NotLessSlantEqual: \"\\u2A7D\\u0338\", NotLessTilde: \"\\u2274\", NotNestedGreaterGreater: \"\\u2AA2\\u0338\", NotNestedLessLess: \"\\u2AA1\\u0338\", notni: \"\\u220C\", notniva: \"\\u220C\", notnivb: \"\\u22FE\", notnivc: \"\\u22FD\", NotPrecedes: \"\\u2280\", NotPrecedesEqual: \"\\u2AAF\\u0338\", NotPrecedesSlantEqual: \"\\u22E0\", NotReverseElement: \"\\u220C\", NotRightTriangleBar: \"\\u29D0\\u0338\", NotRightTriangle: \"\\u22EB\", NotRightTriangleEqual: \"\\u22ED\", NotSquareSubset: \"\\u228F\\u0338\", NotSquareSubsetEqual: \"\\u22E2\", NotSquareSuperset: \"\\u2290\\u0338\", NotSquareSupersetEqual: \"\\u22E3\", NotSubset: \"\\u2282\\u20D2\", NotSubsetEqual: \"\\u2288\", NotSucceeds: \"\\u2281\", NotSucceedsEqual: \"\\u2AB0\\u0338\", NotSucceedsSlantEqual: \"\\u22E1\", NotSucceedsTilde: \"\\u227F\\u0338\", NotSuperset: \"\\u2283\\u20D2\", NotSupersetEqual: \"\\u2289\", NotTilde: \"\\u2241\", NotTildeEqual: \"\\u2244\", NotTildeFullEqual: \"\\u2247\", NotTildeTilde: \"\\u2249\", NotVerticalBar: \"\\u2224\", nparallel: \"\\u2226\", npar: \"\\u2226\", nparsl: \"\\u2AFD\\u20E5\", npart: \"\\u2202\\u0338\", npolint: \"\\u2A14\", npr: \"\\u2280\", nprcue: \"\\u22E0\", nprec: \"\\u2280\", npreceq: \"\\u2AAF\\u0338\", npre: \"\\u2AAF\\u0338\", nrarrc: \"\\u2933\\u0338\", nrarr: \"\\u219B\", nrArr: \"\\u21CF\", nrarrw: \"\\u219D\\u0338\", nrightarrow: \"\\u219B\", nRightarrow: \"\\u21CF\", nrtri: \"\\u22EB\", nrtrie: \"\\u22ED\", nsc: \"\\u2281\", nsccue: \"\\u22E1\", nsce: \"\\u2AB0\\u0338\", Nscr: \"\\u{1D4A9}\", nscr: \"\\u{1D4C3}\", nshortmid: \"\\u2224\", nshortparallel: \"\\u2226\", nsim: \"\\u2241\", nsime: \"\\u2244\", nsimeq: \"\\u2244\", nsmid: \"\\u2224\", nspar: \"\\u2226\", nsqsube: \"\\u22E2\", nsqsupe: \"\\u22E3\", nsub: \"\\u2284\", nsubE: \"\\u2AC5\\u0338\", nsube: \"\\u2288\", nsubset: \"\\u2282\\u20D2\", nsubseteq: \"\\u2288\", nsubseteqq: \"\\u2AC5\\u0338\", nsucc: \"\\u2281\", nsucceq: \"\\u2AB0\\u0338\", nsup: \"\\u2285\", nsupE: \"\\u2AC6\\u0338\", nsupe: \"\\u2289\", nsupset: \"\\u2283\\u20D2\", nsupseteq: \"\\u2289\", nsupseteqq: \"\\u2AC6\\u0338\", ntgl: \"\\u2279\", Ntilde: \"\\xD1\", ntilde: \"\\xF1\", ntlg: \"\\u2278\", ntriangleleft: \"\\u22EA\", ntrianglelefteq: \"\\u22EC\", ntriangleright: \"\\u22EB\", ntrianglerighteq: \"\\u22ED\", Nu: \"\\u039D\", nu: \"\\u03BD\", num: \"#\", numero: \"\\u2116\", numsp: \"\\u2007\", nvap: \"\\u224D\\u20D2\", nvdash: \"\\u22AC\", nvDash: \"\\u22AD\", nVdash: \"\\u22AE\", nVDash: \"\\u22AF\", nvge: \"\\u2265\\u20D2\", nvgt: \">\\u20D2\", nvHarr: \"\\u2904\", nvinfin: \"\\u29DE\", nvlArr: \"\\u2902\", nvle: \"\\u2264\\u20D2\", nvlt: \"<\\u20D2\", nvltrie: \"\\u22B4\\u20D2\", nvrArr: \"\\u2903\", nvrtrie: \"\\u22B5\\u20D2\", nvsim: \"\\u223C\\u20D2\", nwarhk: \"\\u2923\", nwarr: \"\\u2196\", nwArr: \"\\u21D6\", nwarrow: \"\\u2196\", nwnear: \"\\u2927\", Oacute: \"\\xD3\", oacute: \"\\xF3\", oast: \"\\u229B\", Ocirc: \"\\xD4\", ocirc: \"\\xF4\", ocir: \"\\u229A\", Ocy: \"\\u041E\", ocy: \"\\u043E\", odash: \"\\u229D\", Odblac: \"\\u0150\", odblac: \"\\u0151\", odiv: \"\\u2A38\", odot: \"\\u2299\", odsold: \"\\u29BC\", OElig: \"\\u0152\", oelig: \"\\u0153\", ofcir: \"\\u29BF\", Ofr: \"\\u{1D512}\", ofr: \"\\u{1D52C}\", ogon: \"\\u02DB\", Ograve: \"\\xD2\", ograve: \"\\xF2\", ogt: \"\\u29C1\", ohbar: \"\\u29B5\", ohm: \"\\u03A9\", oint: \"\\u222E\", olarr: \"\\u21BA\", olcir: \"\\u29BE\", olcross: \"\\u29BB\", oline: \"\\u203E\", olt: \"\\u29C0\", Omacr: \"\\u014C\", omacr: \"\\u014D\", Omega: \"\\u03A9\", omega: \"\\u03C9\", Omicron: \"\\u039F\", omicron: \"\\u03BF\", omid: \"\\u29B6\", ominus: \"\\u2296\", Oopf: \"\\u{1D546}\", oopf: \"\\u{1D560}\", opar: \"\\u29B7\", OpenCurlyDoubleQuote: \"\\u201C\", OpenCurlyQuote: \"\\u2018\", operp: \"\\u29B9\", oplus: \"\\u2295\", orarr: \"\\u21BB\", Or: \"\\u2A54\", or: \"\\u2228\", ord: \"\\u2A5D\", order: \"\\u2134\", orderof: \"\\u2134\", ordf: \"\\xAA\", ordm: \"\\xBA\", origof: \"\\u22B6\", oror: \"\\u2A56\", orslope: \"\\u2A57\", orv: \"\\u2A5B\", oS: \"\\u24C8\", Oscr: \"\\u{1D4AA}\", oscr: \"\\u2134\", Oslash: \"\\xD8\", oslash: \"\\xF8\", osol: \"\\u2298\", Otilde: \"\\xD5\", otilde: \"\\xF5\", otimesas: \"\\u2A36\", Otimes: \"\\u2A37\", otimes: \"\\u2297\", Ouml: \"\\xD6\", ouml: \"\\xF6\", ovbar: \"\\u233D\", OverBar: \"\\u203E\", OverBrace: \"\\u23DE\", OverBracket: \"\\u23B4\", OverParenthesis: \"\\u23DC\", para: \"\\xB6\", parallel: \"\\u2225\", par: \"\\u2225\", parsim: \"\\u2AF3\", parsl: \"\\u2AFD\", part: \"\\u2202\", PartialD: \"\\u2202\", Pcy: \"\\u041F\", pcy: \"\\u043F\", percnt: \"%\", period: \".\", permil: \"\\u2030\", perp: \"\\u22A5\", pertenk: \"\\u2031\", Pfr: \"\\u{1D513}\", pfr: \"\\u{1D52D}\", Phi: \"\\u03A6\", phi: \"\\u03C6\", phiv: \"\\u03D5\", phmmat: \"\\u2133\", phone: \"\\u260E\", Pi: \"\\u03A0\", pi: \"\\u03C0\", pitchfork: \"\\u22D4\", piv: \"\\u03D6\", planck: \"\\u210F\", planckh: \"\\u210E\", plankv: \"\\u210F\", plusacir: \"\\u2A23\", plusb: \"\\u229E\", pluscir: \"\\u2A22\", plus: \"+\", plusdo: \"\\u2214\", plusdu: \"\\u2A25\", pluse: \"\\u2A72\", PlusMinus: \"\\xB1\", plusmn: \"\\xB1\", plussim: \"\\u2A26\", plustwo: \"\\u2A27\", pm: \"\\xB1\", Poincareplane: \"\\u210C\", pointint: \"\\u2A15\", popf: \"\\u{1D561}\", Popf: \"\\u2119\", pound: \"\\xA3\", prap: \"\\u2AB7\", Pr: \"\\u2ABB\", pr: \"\\u227A\", prcue: \"\\u227C\", precapprox: \"\\u2AB7\", prec: \"\\u227A\", preccurlyeq: \"\\u227C\", Precedes: \"\\u227A\", PrecedesEqual: \"\\u2AAF\", PrecedesSlantEqual: \"\\u227C\", PrecedesTilde: \"\\u227E\", preceq: \"\\u2AAF\", precnapprox: \"\\u2AB9\", precneqq: \"\\u2AB5\", precnsim: \"\\u22E8\", pre: \"\\u2AAF\", prE: \"\\u2AB3\", precsim: \"\\u227E\", prime: \"\\u2032\", Prime: \"\\u2033\", primes: \"\\u2119\", prnap: \"\\u2AB9\", prnE: \"\\u2AB5\", prnsim: \"\\u22E8\", prod: \"\\u220F\", Product: \"\\u220F\", profalar: \"\\u232E\", profline: \"\\u2312\", profsurf: \"\\u2313\", prop: \"\\u221D\", Proportional: \"\\u221D\", Proportion: \"\\u2237\", propto: \"\\u221D\", prsim: \"\\u227E\", prurel: \"\\u22B0\", Pscr: \"\\u{1D4AB}\", pscr: \"\\u{1D4C5}\", Psi: \"\\u03A8\", psi: \"\\u03C8\", puncsp: \"\\u2008\", Qfr: \"\\u{1D514}\", qfr: \"\\u{1D52E}\", qint: \"\\u2A0C\", qopf: \"\\u{1D562}\", Qopf: \"\\u211A\", qprime: \"\\u2057\", Qscr: \"\\u{1D4AC}\", qscr: \"\\u{1D4C6}\", quaternions: \"\\u210D\", quatint: \"\\u2A16\", quest: \"?\", questeq: \"\\u225F\", quot: '\"', QUOT: '\"', rAarr: \"\\u21DB\", race: \"\\u223D\\u0331\", Racute: \"\\u0154\", racute: \"\\u0155\", radic: \"\\u221A\", raemptyv: \"\\u29B3\", rang: \"\\u27E9\", Rang: \"\\u27EB\", rangd: \"\\u2992\", range: \"\\u29A5\", rangle: \"\\u27E9\", raquo: \"\\xBB\", rarrap: \"\\u2975\", rarrb: \"\\u21E5\", rarrbfs: \"\\u2920\", rarrc: \"\\u2933\", rarr: \"\\u2192\", Rarr: \"\\u21A0\", rArr: \"\\u21D2\", rarrfs: \"\\u291E\", rarrhk: \"\\u21AA\", rarrlp: \"\\u21AC\", rarrpl: \"\\u2945\", rarrsim: \"\\u2974\", Rarrtl: \"\\u2916\", rarrtl: \"\\u21A3\", rarrw: \"\\u219D\", ratail: \"\\u291A\", rAtail: \"\\u291C\", ratio: \"\\u2236\", rationals: \"\\u211A\", rbarr: \"\\u290D\", rBarr: \"\\u290F\", RBarr: \"\\u2910\", rbbrk: \"\\u2773\", rbrace: \"}\", rbrack: \"]\", rbrke: \"\\u298C\", rbrksld: \"\\u298E\", rbrkslu: \"\\u2990\", Rcaron: \"\\u0158\", rcaron: \"\\u0159\", Rcedil: \"\\u0156\", rcedil: \"\\u0157\", rceil: \"\\u2309\", rcub: \"}\", Rcy: \"\\u0420\", rcy: \"\\u0440\", rdca: \"\\u2937\", rdldhar: \"\\u2969\", rdquo: \"\\u201D\", rdquor: \"\\u201D\", rdsh: \"\\u21B3\", real: \"\\u211C\", realine: \"\\u211B\", realpart: \"\\u211C\", reals: \"\\u211D\", Re: \"\\u211C\", rect: \"\\u25AD\", reg: \"\\xAE\", REG: \"\\xAE\", ReverseElement: \"\\u220B\", ReverseEquilibrium: \"\\u21CB\", ReverseUpEquilibrium: \"\\u296F\", rfisht: \"\\u297D\", rfloor: \"\\u230B\", rfr: \"\\u{1D52F}\", Rfr: \"\\u211C\", rHar: \"\\u2964\", rhard: \"\\u21C1\", rharu: \"\\u21C0\", rharul: \"\\u296C\", Rho: \"\\u03A1\", rho: \"\\u03C1\", rhov: \"\\u03F1\", RightAngleBracket: \"\\u27E9\", RightArrowBar: \"\\u21E5\", rightarrow: \"\\u2192\", RightArrow: \"\\u2192\", Rightarrow: \"\\u21D2\", RightArrowLeftArrow: \"\\u21C4\", rightarrowtail: \"\\u21A3\", RightCeiling: \"\\u2309\", RightDoubleBracket: \"\\u27E7\", RightDownTeeVector: \"\\u295D\", RightDownVectorBar: \"\\u2955\", RightDownVector: \"\\u21C2\", RightFloor: \"\\u230B\", rightharpoondown: \"\\u21C1\", rightharpoonup: \"\\u21C0\", rightleftarrows: \"\\u21C4\", rightleftharpoons: \"\\u21CC\", rightrightarrows: \"\\u21C9\", rightsquigarrow: \"\\u219D\", RightTeeArrow: \"\\u21A6\", RightTee: \"\\u22A2\", RightTeeVector: \"\\u295B\", rightthreetimes: \"\\u22CC\", RightTriangleBar: \"\\u29D0\", RightTriangle: \"\\u22B3\", RightTriangleEqual: \"\\u22B5\", RightUpDownVector: \"\\u294F\", RightUpTeeVector: \"\\u295C\", RightUpVectorBar: \"\\u2954\", RightUpVector: \"\\u21BE\", RightVectorBar: \"\\u2953\", RightVector: \"\\u21C0\", ring: \"\\u02DA\", risingdotseq: \"\\u2253\", rlarr: \"\\u21C4\", rlhar: \"\\u21CC\", rlm: \"\\u200F\", rmoustache: \"\\u23B1\", rmoust: \"\\u23B1\", rnmid: \"\\u2AEE\", roang: \"\\u27ED\", roarr: \"\\u21FE\", robrk: \"\\u27E7\", ropar: \"\\u2986\", ropf: \"\\u{1D563}\", Ropf: \"\\u211D\", roplus: \"\\u2A2E\", rotimes: \"\\u2A35\", RoundImplies: \"\\u2970\", rpar: \")\", rpargt: \"\\u2994\", rppolint: \"\\u2A12\", rrarr: \"\\u21C9\", Rrightarrow: \"\\u21DB\", rsaquo: \"\\u203A\", rscr: \"\\u{1D4C7}\", Rscr: \"\\u211B\", rsh: \"\\u21B1\", Rsh: \"\\u21B1\", rsqb: \"]\", rsquo: \"\\u2019\", rsquor: \"\\u2019\", rthree: \"\\u22CC\", rtimes: \"\\u22CA\", rtri: \"\\u25B9\", rtrie: \"\\u22B5\", rtrif: \"\\u25B8\", rtriltri: \"\\u29CE\", RuleDelayed: \"\\u29F4\", ruluhar: \"\\u2968\", rx: \"\\u211E\", Sacute: \"\\u015A\", sacute: \"\\u015B\", sbquo: \"\\u201A\", scap: \"\\u2AB8\", Scaron: \"\\u0160\", scaron: \"\\u0161\", Sc: \"\\u2ABC\", sc: \"\\u227B\", sccue: \"\\u227D\", sce: \"\\u2AB0\", scE: \"\\u2AB4\", Scedil: \"\\u015E\", scedil: \"\\u015F\", Scirc: \"\\u015C\", scirc: \"\\u015D\", scnap: \"\\u2ABA\", scnE: \"\\u2AB6\", scnsim: \"\\u22E9\", scpolint: \"\\u2A13\", scsim: \"\\u227F\", Scy: \"\\u0421\", scy: \"\\u0441\", sdotb: \"\\u22A1\", sdot: \"\\u22C5\", sdote: \"\\u2A66\", searhk: \"\\u2925\", searr: \"\\u2198\", seArr: \"\\u21D8\", searrow: \"\\u2198\", sect: \"\\xA7\", semi: \";\", seswar: \"\\u2929\", setminus: \"\\u2216\", setmn: \"\\u2216\", sext: \"\\u2736\", Sfr: \"\\u{1D516}\", sfr: \"\\u{1D530}\", sfrown: \"\\u2322\", sharp: \"\\u266F\", SHCHcy: \"\\u0429\", shchcy: \"\\u0449\", SHcy: \"\\u0428\", shcy: \"\\u0448\", ShortDownArrow: \"\\u2193\", ShortLeftArrow: \"\\u2190\", shortmid: \"\\u2223\", shortparallel: \"\\u2225\", ShortRightArrow: \"\\u2192\", ShortUpArrow: \"\\u2191\", shy: \"\\xAD\", Sigma: \"\\u03A3\", sigma: \"\\u03C3\", sigmaf: \"\\u03C2\", sigmav: \"\\u03C2\", sim: \"\\u223C\", simdot: \"\\u2A6A\", sime: \"\\u2243\", simeq: \"\\u2243\", simg: \"\\u2A9E\", simgE: \"\\u2AA0\", siml: \"\\u2A9D\", simlE: \"\\u2A9F\", simne: \"\\u2246\", simplus: \"\\u2A24\", simrarr: \"\\u2972\", slarr: \"\\u2190\", SmallCircle: \"\\u2218\", smallsetminus: \"\\u2216\", smashp: \"\\u2A33\", smeparsl: \"\\u29E4\", smid: \"\\u2223\", smile: \"\\u2323\", smt: \"\\u2AAA\", smte: \"\\u2AAC\", smtes: \"\\u2AAC\\uFE00\", SOFTcy: \"\\u042C\", softcy: \"\\u044C\", solbar: \"\\u233F\", solb: \"\\u29C4\", sol: \"/\", Sopf: \"\\u{1D54A}\", sopf: \"\\u{1D564}\", spades: \"\\u2660\", spadesuit: \"\\u2660\", spar: \"\\u2225\", sqcap: \"\\u2293\", sqcaps: \"\\u2293\\uFE00\", sqcup: \"\\u2294\", sqcups: \"\\u2294\\uFE00\", Sqrt: \"\\u221A\", sqsub: \"\\u228F\", sqsube: \"\\u2291\", sqsubset: \"\\u228F\", sqsubseteq: \"\\u2291\", sqsup: \"\\u2290\", sqsupe: \"\\u2292\", sqsupset: \"\\u2290\", sqsupseteq: \"\\u2292\", square: \"\\u25A1\", Square: \"\\u25A1\", SquareIntersection: \"\\u2293\", SquareSubset: \"\\u228F\", SquareSubsetEqual: \"\\u2291\", SquareSuperset: \"\\u2290\", SquareSupersetEqual: \"\\u2292\", SquareUnion: \"\\u2294\", squarf: \"\\u25AA\", squ: \"\\u25A1\", squf: \"\\u25AA\", srarr: \"\\u2192\", Sscr: \"\\u{1D4AE}\", sscr: \"\\u{1D4C8}\", ssetmn: \"\\u2216\", ssmile: \"\\u2323\", sstarf: \"\\u22C6\", Star: \"\\u22C6\", star: \"\\u2606\", starf: \"\\u2605\", straightepsilon: \"\\u03F5\", straightphi: \"\\u03D5\", strns: \"\\xAF\", sub: \"\\u2282\", Sub: \"\\u22D0\", subdot: \"\\u2ABD\", subE: \"\\u2AC5\", sube: \"\\u2286\", subedot: \"\\u2AC3\", submult: \"\\u2AC1\", subnE: \"\\u2ACB\", subne: \"\\u228A\", subplus: \"\\u2ABF\", subrarr: \"\\u2979\", subset: \"\\u2282\", Subset: \"\\u22D0\", subseteq: \"\\u2286\", subseteqq: \"\\u2AC5\", SubsetEqual: \"\\u2286\", subsetneq: \"\\u228A\", subsetneqq: \"\\u2ACB\", subsim: \"\\u2AC7\", subsub: \"\\u2AD5\", subsup: \"\\u2AD3\", succapprox: \"\\u2AB8\", succ: \"\\u227B\", succcurlyeq: \"\\u227D\", Succeeds: \"\\u227B\", SucceedsEqual: \"\\u2AB0\", SucceedsSlantEqual: \"\\u227D\", SucceedsTilde: \"\\u227F\", succeq: \"\\u2AB0\", succnapprox: \"\\u2ABA\", succneqq: \"\\u2AB6\", succnsim: \"\\u22E9\", succsim: \"\\u227F\", SuchThat: \"\\u220B\", sum: \"\\u2211\", Sum: \"\\u2211\", sung: \"\\u266A\", sup1: \"\\xB9\", sup2: \"\\xB2\", sup3: \"\\xB3\", sup: \"\\u2283\", Sup: \"\\u22D1\", supdot: \"\\u2ABE\", supdsub: \"\\u2AD8\", supE: \"\\u2AC6\", supe: \"\\u2287\", supedot: \"\\u2AC4\", Superset: \"\\u2283\", SupersetEqual: \"\\u2287\", suphsol: \"\\u27C9\", suphsub: \"\\u2AD7\", suplarr: \"\\u297B\", supmult: \"\\u2AC2\", supnE: \"\\u2ACC\", supne: \"\\u228B\", supplus: \"\\u2AC0\", supset: \"\\u2283\", Supset: \"\\u22D1\", supseteq: \"\\u2287\", supseteqq: \"\\u2AC6\", supsetneq: \"\\u228B\", supsetneqq: \"\\u2ACC\", supsim: \"\\u2AC8\", supsub: \"\\u2AD4\", supsup: \"\\u2AD6\", swarhk: \"\\u2926\", swarr: \"\\u2199\", swArr: \"\\u21D9\", swarrow: \"\\u2199\", swnwar: \"\\u292A\", szlig: \"\\xDF\", Tab: \"\t\", target: \"\\u2316\", Tau: \"\\u03A4\", tau: \"\\u03C4\", tbrk: \"\\u23B4\", Tcaron: \"\\u0164\", tcaron: \"\\u0165\", Tcedil: \"\\u0162\", tcedil: \"\\u0163\", Tcy: \"\\u0422\", tcy: \"\\u0442\", tdot: \"\\u20DB\", telrec: \"\\u2315\", Tfr: \"\\u{1D517}\", tfr: \"\\u{1D531}\", there4: \"\\u2234\", therefore: \"\\u2234\", Therefore: \"\\u2234\", Theta: \"\\u0398\", theta: \"\\u03B8\", thetasym: \"\\u03D1\", thetav: \"\\u03D1\", thickapprox: \"\\u2248\", thicksim: \"\\u223C\", ThickSpace: \"\\u205F\\u200A\", ThinSpace: \"\\u2009\", thinsp: \"\\u2009\", thkap: \"\\u2248\", thksim: \"\\u223C\", THORN: \"\\xDE\", thorn: \"\\xFE\", tilde: \"\\u02DC\", Tilde: \"\\u223C\", TildeEqual: \"\\u2243\", TildeFullEqual: \"\\u2245\", TildeTilde: \"\\u2248\", timesbar: \"\\u2A31\", timesb: \"\\u22A0\", times: \"\\xD7\", timesd: \"\\u2A30\", tint: \"\\u222D\", toea: \"\\u2928\", topbot: \"\\u2336\", topcir: \"\\u2AF1\", top: \"\\u22A4\", Topf: \"\\u{1D54B}\", topf: \"\\u{1D565}\", topfork: \"\\u2ADA\", tosa: \"\\u2929\", tprime: \"\\u2034\", trade: \"\\u2122\", TRADE: \"\\u2122\", triangle: \"\\u25B5\", triangledown: \"\\u25BF\", triangleleft: \"\\u25C3\", trianglelefteq: \"\\u22B4\", triangleq: \"\\u225C\", triangleright: \"\\u25B9\", trianglerighteq: \"\\u22B5\", tridot: \"\\u25EC\", trie: \"\\u225C\", triminus: \"\\u2A3A\", TripleDot: \"\\u20DB\", triplus: \"\\u2A39\", trisb: \"\\u29CD\", tritime: \"\\u2A3B\", trpezium: \"\\u23E2\", Tscr: \"\\u{1D4AF}\", tscr: \"\\u{1D4C9}\", TScy: \"\\u0426\", tscy: \"\\u0446\", TSHcy: \"\\u040B\", tshcy: \"\\u045B\", Tstrok: \"\\u0166\", tstrok: \"\\u0167\", twixt: \"\\u226C\", twoheadleftarrow: \"\\u219E\", twoheadrightarrow: \"\\u21A0\", Uacute: \"\\xDA\", uacute: \"\\xFA\", uarr: \"\\u2191\", Uarr: \"\\u219F\", uArr: \"\\u21D1\", Uarrocir: \"\\u2949\", Ubrcy: \"\\u040E\", ubrcy: \"\\u045E\", Ubreve: \"\\u016C\", ubreve: \"\\u016D\", Ucirc: \"\\xDB\", ucirc: \"\\xFB\", Ucy: \"\\u0423\", ucy: \"\\u0443\", udarr: \"\\u21C5\", Udblac: \"\\u0170\", udblac: \"\\u0171\", udhar: \"\\u296E\", ufisht: \"\\u297E\", Ufr: \"\\u{1D518}\", ufr: \"\\u{1D532}\", Ugrave: \"\\xD9\", ugrave: \"\\xF9\", uHar: \"\\u2963\", uharl: \"\\u21BF\", uharr: \"\\u21BE\", uhblk: \"\\u2580\", ulcorn: \"\\u231C\", ulcorner: \"\\u231C\", ulcrop: \"\\u230F\", ultri: \"\\u25F8\", Umacr: \"\\u016A\", umacr: \"\\u016B\", uml: \"\\xA8\", UnderBar: \"_\", UnderBrace: \"\\u23DF\", UnderBracket: \"\\u23B5\", UnderParenthesis: \"\\u23DD\", Union: \"\\u22C3\", UnionPlus: \"\\u228E\", Uogon: \"\\u0172\", uogon: \"\\u0173\", Uopf: \"\\u{1D54C}\", uopf: \"\\u{1D566}\", UpArrowBar: \"\\u2912\", uparrow: \"\\u2191\", UpArrow: \"\\u2191\", Uparrow: \"\\u21D1\", UpArrowDownArrow: \"\\u21C5\", updownarrow: \"\\u2195\", UpDownArrow: \"\\u2195\", Updownarrow: \"\\u21D5\", UpEquilibrium: \"\\u296E\", upharpoonleft: \"\\u21BF\", upharpoonright: \"\\u21BE\", uplus: \"\\u228E\", UpperLeftArrow: \"\\u2196\", UpperRightArrow: \"\\u2197\", upsi: \"\\u03C5\", Upsi: \"\\u03D2\", upsih: \"\\u03D2\", Upsilon: \"\\u03A5\", upsilon: \"\\u03C5\", UpTeeArrow: \"\\u21A5\", UpTee: \"\\u22A5\", upuparrows: \"\\u21C8\", urcorn: \"\\u231D\", urcorner: \"\\u231D\", urcrop: \"\\u230E\", Uring: \"\\u016E\", uring: \"\\u016F\", urtri: \"\\u25F9\", Uscr: \"\\u{1D4B0}\", uscr: \"\\u{1D4CA}\", utdot: \"\\u22F0\", Utilde: \"\\u0168\", utilde: \"\\u0169\", utri: \"\\u25B5\", utrif: \"\\u25B4\", uuarr: \"\\u21C8\", Uuml: \"\\xDC\", uuml: \"\\xFC\", uwangle: \"\\u29A7\", vangrt: \"\\u299C\", varepsilon: \"\\u03F5\", varkappa: \"\\u03F0\", varnothing: \"\\u2205\", varphi: \"\\u03D5\", varpi: \"\\u03D6\", varpropto: \"\\u221D\", varr: \"\\u2195\", vArr: \"\\u21D5\", varrho: \"\\u03F1\", varsigma: \"\\u03C2\", varsubsetneq: \"\\u228A\\uFE00\", varsubsetneqq: \"\\u2ACB\\uFE00\", varsupsetneq: \"\\u228B\\uFE00\", varsupsetneqq: \"\\u2ACC\\uFE00\", vartheta: \"\\u03D1\", vartriangleleft: \"\\u22B2\", vartriangleright: \"\\u22B3\", vBar: \"\\u2AE8\", Vbar: \"\\u2AEB\", vBarv: \"\\u2AE9\", Vcy: \"\\u0412\", vcy: \"\\u0432\", vdash: \"\\u22A2\", vDash: \"\\u22A8\", Vdash: \"\\u22A9\", VDash: \"\\u22AB\", Vdashl: \"\\u2AE6\", veebar: \"\\u22BB\", vee: \"\\u2228\", Vee: \"\\u22C1\", veeeq: \"\\u225A\", vellip: \"\\u22EE\", verbar: \"|\", Verbar: \"\\u2016\", vert: \"|\", Vert: \"\\u2016\", VerticalBar: \"\\u2223\", VerticalLine: \"|\", VerticalSeparator: \"\\u2758\", VerticalTilde: \"\\u2240\", VeryThinSpace: \"\\u200A\", Vfr: \"\\u{1D519}\", vfr: \"\\u{1D533}\", vltri: \"\\u22B2\", vnsub: \"\\u2282\\u20D2\", vnsup: \"\\u2283\\u20D2\", Vopf: \"\\u{1D54D}\", vopf: \"\\u{1D567}\", vprop: \"\\u221D\", vrtri: \"\\u22B3\", Vscr: \"\\u{1D4B1}\", vscr: \"\\u{1D4CB}\", vsubnE: \"\\u2ACB\\uFE00\", vsubne: \"\\u228A\\uFE00\", vsupnE: \"\\u2ACC\\uFE00\", vsupne: \"\\u228B\\uFE00\", Vvdash: \"\\u22AA\", vzigzag: \"\\u299A\", Wcirc: \"\\u0174\", wcirc: \"\\u0175\", wedbar: \"\\u2A5F\", wedge: \"\\u2227\", Wedge: \"\\u22C0\", wedgeq: \"\\u2259\", weierp: \"\\u2118\", Wfr: \"\\u{1D51A}\", wfr: \"\\u{1D534}\", Wopf: \"\\u{1D54E}\", wopf: \"\\u{1D568}\", wp: \"\\u2118\", wr: \"\\u2240\", wreath: \"\\u2240\", Wscr: \"\\u{1D4B2}\", wscr: \"\\u{1D4CC}\", xcap: \"\\u22C2\", xcirc: \"\\u25EF\", xcup: \"\\u22C3\", xdtri: \"\\u25BD\", Xfr: \"\\u{1D51B}\", xfr: \"\\u{1D535}\", xharr: \"\\u27F7\", xhArr: \"\\u27FA\", Xi: \"\\u039E\", xi: \"\\u03BE\", xlarr: \"\\u27F5\", xlArr: \"\\u27F8\", xmap: \"\\u27FC\", xnis: \"\\u22FB\", xodot: \"\\u2A00\", Xopf: \"\\u{1D54F}\", xopf: \"\\u{1D569}\", xoplus: \"\\u2A01\", xotime: \"\\u2A02\", xrarr: \"\\u27F6\", xrArr: \"\\u27F9\", Xscr: \"\\u{1D4B3}\", xscr: \"\\u{1D4CD}\", xsqcup: \"\\u2A06\", xuplus: \"\\u2A04\", xutri: \"\\u25B3\", xvee: \"\\u22C1\", xwedge: \"\\u22C0\", Yacute: \"\\xDD\", yacute: \"\\xFD\", YAcy: \"\\u042F\", yacy: \"\\u044F\", Ycirc: \"\\u0176\", ycirc: \"\\u0177\", Ycy: \"\\u042B\", ycy: \"\\u044B\", yen: \"\\xA5\", Yfr: \"\\u{1D51C}\", yfr: \"\\u{1D536}\", YIcy: \"\\u0407\", yicy: \"\\u0457\", Yopf: \"\\u{1D550}\", yopf: \"\\u{1D56A}\", Yscr: \"\\u{1D4B4}\", yscr: \"\\u{1D4CE}\", YUcy: \"\\u042E\", yucy: \"\\u044E\", yuml: \"\\xFF\", Yuml: \"\\u0178\", Zacute: \"\\u0179\", zacute: \"\\u017A\", Zcaron: \"\\u017D\", zcaron: \"\\u017E\", Zcy: \"\\u0417\", zcy: \"\\u0437\", Zdot: \"\\u017B\", zdot: \"\\u017C\", zeetrf: \"\\u2128\", ZeroWidthSpace: \"\\u200B\", Zeta: \"\\u0396\", zeta: \"\\u03B6\", zfr: \"\\u{1D537}\", Zfr: \"\\u2128\", ZHcy: \"\\u0416\", zhcy: \"\\u0436\", zigrarr: \"\\u21DD\", zopf: \"\\u{1D56B}\", Zopf: \"\\u2124\", Zscr: \"\\u{1D4B5}\", zscr: \"\\u{1D4CF}\", zwj: \"\\u200D\", zwnj: \"\\u200C\" };\n }\n});\n\n// node_modules/cheerio/node_modules/entities/lib/maps/legacy.json\nvar require_legacy3 = __commonJS({\n \"node_modules/cheerio/node_modules/entities/lib/maps/legacy.json\"(exports2, module2) {\n module2.exports = { Aacute: \"\\xC1\", aacute: \"\\xE1\", Acirc: \"\\xC2\", acirc: \"\\xE2\", acute: \"\\xB4\", AElig: \"\\xC6\", aelig: \"\\xE6\", Agrave: \"\\xC0\", agrave: \"\\xE0\", amp: \"&\", AMP: \"&\", Aring: \"\\xC5\", aring: \"\\xE5\", Atilde: \"\\xC3\", atilde: \"\\xE3\", Auml: \"\\xC4\", auml: \"\\xE4\", brvbar: \"\\xA6\", Ccedil: \"\\xC7\", ccedil: \"\\xE7\", cedil: \"\\xB8\", cent: \"\\xA2\", copy: \"\\xA9\", COPY: \"\\xA9\", curren: \"\\xA4\", deg: \"\\xB0\", divide: \"\\xF7\", Eacute: \"\\xC9\", eacute: \"\\xE9\", Ecirc: \"\\xCA\", ecirc: \"\\xEA\", Egrave: \"\\xC8\", egrave: \"\\xE8\", ETH: \"\\xD0\", eth: \"\\xF0\", Euml: \"\\xCB\", euml: \"\\xEB\", frac12: \"\\xBD\", frac14: \"\\xBC\", frac34: \"\\xBE\", gt: \">\", GT: \">\", Iacute: \"\\xCD\", iacute: \"\\xED\", Icirc: \"\\xCE\", icirc: \"\\xEE\", iexcl: \"\\xA1\", Igrave: \"\\xCC\", igrave: \"\\xEC\", iquest: \"\\xBF\", Iuml: \"\\xCF\", iuml: \"\\xEF\", laquo: \"\\xAB\", lt: \"<\", LT: \"<\", macr: \"\\xAF\", micro: \"\\xB5\", middot: \"\\xB7\", nbsp: \"\\xA0\", not: \"\\xAC\", Ntilde: \"\\xD1\", ntilde: \"\\xF1\", Oacute: \"\\xD3\", oacute: \"\\xF3\", Ocirc: \"\\xD4\", ocirc: \"\\xF4\", Ograve: \"\\xD2\", ograve: \"\\xF2\", ordf: \"\\xAA\", ordm: \"\\xBA\", Oslash: \"\\xD8\", oslash: \"\\xF8\", Otilde: \"\\xD5\", otilde: \"\\xF5\", Ouml: \"\\xD6\", ouml: \"\\xF6\", para: \"\\xB6\", plusmn: \"\\xB1\", pound: \"\\xA3\", quot: '\"', QUOT: '\"', raquo: \"\\xBB\", reg: \"\\xAE\", REG: \"\\xAE\", sect: \"\\xA7\", shy: \"\\xAD\", sup1: \"\\xB9\", sup2: \"\\xB2\", sup3: \"\\xB3\", szlig: \"\\xDF\", THORN: \"\\xDE\", thorn: \"\\xFE\", times: \"\\xD7\", Uacute: \"\\xDA\", uacute: \"\\xFA\", Ucirc: \"\\xDB\", ucirc: \"\\xFB\", Ugrave: \"\\xD9\", ugrave: \"\\xF9\", uml: \"\\xA8\", Uuml: \"\\xDC\", uuml: \"\\xFC\", Yacute: \"\\xDD\", yacute: \"\\xFD\", yen: \"\\xA5\", yuml: \"\\xFF\" };\n }\n});\n\n// node_modules/cheerio/node_modules/entities/lib/maps/xml.json\nvar require_xml2 = __commonJS({\n \"node_modules/cheerio/node_modules/entities/lib/maps/xml.json\"(exports2, module2) {\n module2.exports = { amp: \"&\", apos: \"'\", gt: \">\", lt: \"<\", quot: '\"' };\n }\n});\n\n// node_modules/cheerio/node_modules/htmlparser2/lib/Tokenizer.js\nvar require_Tokenizer = __commonJS({\n \"node_modules/cheerio/node_modules/htmlparser2/lib/Tokenizer.js\"(exports2) {\n \"use strict\";\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n var decode_codepoint_1 = __importDefault2(require_decode_codepoint2());\n var entities_json_1 = __importDefault2(require_entities2());\n var legacy_json_1 = __importDefault2(require_legacy3());\n var xml_json_1 = __importDefault2(require_xml2());\n function whitespace(c3) {\n return c3 === \" \" || c3 === \"\\n\" || c3 === \"\t\" || c3 === \"\\f\" || c3 === \"\\r\";\n }\n function isASCIIAlpha(c3) {\n return c3 >= \"a\" && c3 <= \"z\" || c3 >= \"A\" && c3 <= \"Z\";\n }\n function ifElseState(upper, SUCCESS, FAILURE) {\n var lower = upper.toLowerCase();\n if (upper === lower) {\n return function(t4, c3) {\n if (c3 === lower) {\n t4._state = SUCCESS;\n } else {\n t4._state = FAILURE;\n t4._index--;\n }\n };\n }\n return function(t4, c3) {\n if (c3 === lower || c3 === upper) {\n t4._state = SUCCESS;\n } else {\n t4._state = FAILURE;\n t4._index--;\n }\n };\n }\n function consumeSpecialNameChar(upper, NEXT_STATE) {\n var lower = upper.toLowerCase();\n return function(t4, c3) {\n if (c3 === lower || c3 === upper) {\n t4._state = NEXT_STATE;\n } else {\n t4._state = 3;\n t4._index--;\n }\n };\n }\n var stateBeforeCdata1 = ifElseState(\"C\", 24, 16);\n var stateBeforeCdata2 = ifElseState(\"D\", 25, 16);\n var stateBeforeCdata3 = ifElseState(\"A\", 26, 16);\n var stateBeforeCdata4 = ifElseState(\"T\", 27, 16);\n var stateBeforeCdata5 = ifElseState(\"A\", 28, 16);\n var stateBeforeScript1 = consumeSpecialNameChar(\"R\", 35);\n var stateBeforeScript2 = consumeSpecialNameChar(\"I\", 36);\n var stateBeforeScript3 = consumeSpecialNameChar(\"P\", 37);\n var stateBeforeScript4 = consumeSpecialNameChar(\"T\", 38);\n var stateAfterScript1 = ifElseState(\"R\", 40, 1);\n var stateAfterScript2 = ifElseState(\"I\", 41, 1);\n var stateAfterScript3 = ifElseState(\"P\", 42, 1);\n var stateAfterScript4 = ifElseState(\"T\", 43, 1);\n var stateBeforeStyle1 = consumeSpecialNameChar(\"Y\", 45);\n var stateBeforeStyle2 = consumeSpecialNameChar(\"L\", 46);\n var stateBeforeStyle3 = consumeSpecialNameChar(\"E\", 47);\n var stateAfterStyle1 = ifElseState(\"Y\", 49, 1);\n var stateAfterStyle2 = ifElseState(\"L\", 50, 1);\n var stateAfterStyle3 = ifElseState(\"E\", 51, 1);\n var stateBeforeSpecialT = consumeSpecialNameChar(\"I\", 54);\n var stateBeforeTitle1 = consumeSpecialNameChar(\"T\", 55);\n var stateBeforeTitle2 = consumeSpecialNameChar(\"L\", 56);\n var stateBeforeTitle3 = consumeSpecialNameChar(\"E\", 57);\n var stateAfterSpecialTEnd = ifElseState(\"I\", 58, 1);\n var stateAfterTitle1 = ifElseState(\"T\", 59, 1);\n var stateAfterTitle2 = ifElseState(\"L\", 60, 1);\n var stateAfterTitle3 = ifElseState(\"E\", 61, 1);\n var stateBeforeEntity = ifElseState(\"#\", 63, 64);\n var stateBeforeNumericEntity = ifElseState(\"X\", 66, 65);\n var Tokenizer = function() {\n function Tokenizer2(options, cbs) {\n var _a;\n this._state = 1;\n this.buffer = \"\";\n this.sectionStart = 0;\n this._index = 0;\n this.bufferOffset = 0;\n this.baseState = 1;\n this.special = 1;\n this.running = true;\n this.ended = false;\n this.cbs = cbs;\n this.xmlMode = !!(options === null || options === void 0 ? void 0 : options.xmlMode);\n this.decodeEntities = (_a = options === null || options === void 0 ? void 0 : options.decodeEntities) !== null && _a !== void 0 ? _a : true;\n }\n Tokenizer2.prototype.reset = function() {\n this._state = 1;\n this.buffer = \"\";\n this.sectionStart = 0;\n this._index = 0;\n this.bufferOffset = 0;\n this.baseState = 1;\n this.special = 1;\n this.running = true;\n this.ended = false;\n };\n Tokenizer2.prototype.write = function(chunk) {\n if (this.ended)\n this.cbs.onerror(Error(\".write() after done!\"));\n this.buffer += chunk;\n this.parse();\n };\n Tokenizer2.prototype.end = function(chunk) {\n if (this.ended)\n this.cbs.onerror(Error(\".end() after done!\"));\n if (chunk)\n this.write(chunk);\n this.ended = true;\n if (this.running)\n this.finish();\n };\n Tokenizer2.prototype.pause = function() {\n this.running = false;\n };\n Tokenizer2.prototype.resume = function() {\n this.running = true;\n if (this._index < this.buffer.length) {\n this.parse();\n }\n if (this.ended) {\n this.finish();\n }\n };\n Tokenizer2.prototype.getAbsoluteIndex = function() {\n return this.bufferOffset + this._index;\n };\n Tokenizer2.prototype.stateText = function(c3) {\n if (c3 === \"<\") {\n if (this._index > this.sectionStart) {\n this.cbs.ontext(this.getSection());\n }\n this._state = 2;\n this.sectionStart = this._index;\n } else if (this.decodeEntities && c3 === \"&\" && (this.special === 1 || this.special === 4)) {\n if (this._index > this.sectionStart) {\n this.cbs.ontext(this.getSection());\n }\n this.baseState = 1;\n this._state = 62;\n this.sectionStart = this._index;\n }\n };\n Tokenizer2.prototype.isTagStartChar = function(c3) {\n return isASCIIAlpha(c3) || this.xmlMode && !whitespace(c3) && c3 !== \"/\" && c3 !== \">\";\n };\n Tokenizer2.prototype.stateBeforeTagName = function(c3) {\n if (c3 === \"/\") {\n this._state = 5;\n } else if (c3 === \"<\") {\n this.cbs.ontext(this.getSection());\n this.sectionStart = this._index;\n } else if (c3 === \">\" || this.special !== 1 || whitespace(c3)) {\n this._state = 1;\n } else if (c3 === \"!\") {\n this._state = 15;\n this.sectionStart = this._index + 1;\n } else if (c3 === \"?\") {\n this._state = 17;\n this.sectionStart = this._index + 1;\n } else if (!this.isTagStartChar(c3)) {\n this._state = 1;\n } else {\n this._state = !this.xmlMode && (c3 === \"s\" || c3 === \"S\") ? 32 : !this.xmlMode && (c3 === \"t\" || c3 === \"T\") ? 52 : 3;\n this.sectionStart = this._index;\n }\n };\n Tokenizer2.prototype.stateInTagName = function(c3) {\n if (c3 === \"/\" || c3 === \">\" || whitespace(c3)) {\n this.emitToken(\"onopentagname\");\n this._state = 8;\n this._index--;\n }\n };\n Tokenizer2.prototype.stateBeforeClosingTagName = function(c3) {\n if (whitespace(c3)) {\n } else if (c3 === \">\") {\n this._state = 1;\n } else if (this.special !== 1) {\n if (this.special !== 4 && (c3 === \"s\" || c3 === \"S\")) {\n this._state = 33;\n } else if (this.special === 4 && (c3 === \"t\" || c3 === \"T\")) {\n this._state = 53;\n } else {\n this._state = 1;\n this._index--;\n }\n } else if (!this.isTagStartChar(c3)) {\n this._state = 20;\n this.sectionStart = this._index;\n } else {\n this._state = 6;\n this.sectionStart = this._index;\n }\n };\n Tokenizer2.prototype.stateInClosingTagName = function(c3) {\n if (c3 === \">\" || whitespace(c3)) {\n this.emitToken(\"onclosetag\");\n this._state = 7;\n this._index--;\n }\n };\n Tokenizer2.prototype.stateAfterClosingTagName = function(c3) {\n if (c3 === \">\") {\n this._state = 1;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer2.prototype.stateBeforeAttributeName = function(c3) {\n if (c3 === \">\") {\n this.cbs.onopentagend();\n this._state = 1;\n this.sectionStart = this._index + 1;\n } else if (c3 === \"/\") {\n this._state = 4;\n } else if (!whitespace(c3)) {\n this._state = 9;\n this.sectionStart = this._index;\n }\n };\n Tokenizer2.prototype.stateInSelfClosingTag = function(c3) {\n if (c3 === \">\") {\n this.cbs.onselfclosingtag();\n this._state = 1;\n this.sectionStart = this._index + 1;\n this.special = 1;\n } else if (!whitespace(c3)) {\n this._state = 8;\n this._index--;\n }\n };\n Tokenizer2.prototype.stateInAttributeName = function(c3) {\n if (c3 === \"=\" || c3 === \"/\" || c3 === \">\" || whitespace(c3)) {\n this.cbs.onattribname(this.getSection());\n this.sectionStart = -1;\n this._state = 10;\n this._index--;\n }\n };\n Tokenizer2.prototype.stateAfterAttributeName = function(c3) {\n if (c3 === \"=\") {\n this._state = 11;\n } else if (c3 === \"/\" || c3 === \">\") {\n this.cbs.onattribend(void 0);\n this._state = 8;\n this._index--;\n } else if (!whitespace(c3)) {\n this.cbs.onattribend(void 0);\n this._state = 9;\n this.sectionStart = this._index;\n }\n };\n Tokenizer2.prototype.stateBeforeAttributeValue = function(c3) {\n if (c3 === '\"') {\n this._state = 12;\n this.sectionStart = this._index + 1;\n } else if (c3 === \"'\") {\n this._state = 13;\n this.sectionStart = this._index + 1;\n } else if (!whitespace(c3)) {\n this._state = 14;\n this.sectionStart = this._index;\n this._index--;\n }\n };\n Tokenizer2.prototype.handleInAttributeValue = function(c3, quote) {\n if (c3 === quote) {\n this.emitToken(\"onattribdata\");\n this.cbs.onattribend(quote);\n this._state = 8;\n } else if (this.decodeEntities && c3 === \"&\") {\n this.emitToken(\"onattribdata\");\n this.baseState = this._state;\n this._state = 62;\n this.sectionStart = this._index;\n }\n };\n Tokenizer2.prototype.stateInAttributeValueDoubleQuotes = function(c3) {\n this.handleInAttributeValue(c3, '\"');\n };\n Tokenizer2.prototype.stateInAttributeValueSingleQuotes = function(c3) {\n this.handleInAttributeValue(c3, \"'\");\n };\n Tokenizer2.prototype.stateInAttributeValueNoQuotes = function(c3) {\n if (whitespace(c3) || c3 === \">\") {\n this.emitToken(\"onattribdata\");\n this.cbs.onattribend(null);\n this._state = 8;\n this._index--;\n } else if (this.decodeEntities && c3 === \"&\") {\n this.emitToken(\"onattribdata\");\n this.baseState = this._state;\n this._state = 62;\n this.sectionStart = this._index;\n }\n };\n Tokenizer2.prototype.stateBeforeDeclaration = function(c3) {\n this._state = c3 === \"[\" ? 23 : c3 === \"-\" ? 18 : 16;\n };\n Tokenizer2.prototype.stateInDeclaration = function(c3) {\n if (c3 === \">\") {\n this.cbs.ondeclaration(this.getSection());\n this._state = 1;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer2.prototype.stateInProcessingInstruction = function(c3) {\n if (c3 === \">\") {\n this.cbs.onprocessinginstruction(this.getSection());\n this._state = 1;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer2.prototype.stateBeforeComment = function(c3) {\n if (c3 === \"-\") {\n this._state = 19;\n this.sectionStart = this._index + 1;\n } else {\n this._state = 16;\n }\n };\n Tokenizer2.prototype.stateInComment = function(c3) {\n if (c3 === \"-\")\n this._state = 21;\n };\n Tokenizer2.prototype.stateInSpecialComment = function(c3) {\n if (c3 === \">\") {\n this.cbs.oncomment(this.buffer.substring(this.sectionStart, this._index));\n this._state = 1;\n this.sectionStart = this._index + 1;\n }\n };\n Tokenizer2.prototype.stateAfterComment1 = function(c3) {\n if (c3 === \"-\") {\n this._state = 22;\n } else {\n this._state = 19;\n }\n };\n Tokenizer2.prototype.stateAfterComment2 = function(c3) {\n if (c3 === \">\") {\n this.cbs.oncomment(this.buffer.substring(this.sectionStart, this._index - 2));\n this._state = 1;\n this.sectionStart = this._index + 1;\n } else if (c3 !== \"-\") {\n this._state = 19;\n }\n };\n Tokenizer2.prototype.stateBeforeCdata6 = function(c3) {\n if (c3 === \"[\") {\n this._state = 29;\n this.sectionStart = this._index + 1;\n } else {\n this._state = 16;\n this._index--;\n }\n };\n Tokenizer2.prototype.stateInCdata = function(c3) {\n if (c3 === \"]\")\n this._state = 30;\n };\n Tokenizer2.prototype.stateAfterCdata1 = function(c3) {\n if (c3 === \"]\")\n this._state = 31;\n else\n this._state = 29;\n };\n Tokenizer2.prototype.stateAfterCdata2 = function(c3) {\n if (c3 === \">\") {\n this.cbs.oncdata(this.buffer.substring(this.sectionStart, this._index - 2));\n this._state = 1;\n this.sectionStart = this._index + 1;\n } else if (c3 !== \"]\") {\n this._state = 29;\n }\n };\n Tokenizer2.prototype.stateBeforeSpecialS = function(c3) {\n if (c3 === \"c\" || c3 === \"C\") {\n this._state = 34;\n } else if (c3 === \"t\" || c3 === \"T\") {\n this._state = 44;\n } else {\n this._state = 3;\n this._index--;\n }\n };\n Tokenizer2.prototype.stateBeforeSpecialSEnd = function(c3) {\n if (this.special === 2 && (c3 === \"c\" || c3 === \"C\")) {\n this._state = 39;\n } else if (this.special === 3 && (c3 === \"t\" || c3 === \"T\")) {\n this._state = 48;\n } else\n this._state = 1;\n };\n Tokenizer2.prototype.stateBeforeSpecialLast = function(c3, special) {\n if (c3 === \"/\" || c3 === \">\" || whitespace(c3)) {\n this.special = special;\n }\n this._state = 3;\n this._index--;\n };\n Tokenizer2.prototype.stateAfterSpecialLast = function(c3, sectionStartOffset) {\n if (c3 === \">\" || whitespace(c3)) {\n this.special = 1;\n this._state = 6;\n this.sectionStart = this._index - sectionStartOffset;\n this._index--;\n } else\n this._state = 1;\n };\n Tokenizer2.prototype.parseFixedEntity = function(map2) {\n if (map2 === void 0) {\n map2 = this.xmlMode ? xml_json_1.default : entities_json_1.default;\n }\n if (this.sectionStart + 1 < this._index) {\n var entity = this.buffer.substring(this.sectionStart + 1, this._index);\n if (Object.prototype.hasOwnProperty.call(map2, entity)) {\n this.emitPartial(map2[entity]);\n this.sectionStart = this._index + 1;\n }\n }\n };\n Tokenizer2.prototype.parseLegacyEntity = function() {\n var start3 = this.sectionStart + 1;\n var limit = Math.min(this._index - start3, 6);\n while (limit >= 2) {\n var entity = this.buffer.substr(start3, limit);\n if (Object.prototype.hasOwnProperty.call(legacy_json_1.default, entity)) {\n this.emitPartial(legacy_json_1.default[entity]);\n this.sectionStart += limit + 1;\n return;\n }\n limit--;\n }\n };\n Tokenizer2.prototype.stateInNamedEntity = function(c3) {\n if (c3 === \";\") {\n this.parseFixedEntity();\n if (this.baseState === 1 && this.sectionStart + 1 < this._index && !this.xmlMode) {\n this.parseLegacyEntity();\n }\n this._state = this.baseState;\n } else if ((c3 < \"0\" || c3 > \"9\") && !isASCIIAlpha(c3)) {\n if (this.xmlMode || this.sectionStart + 1 === this._index) {\n } else if (this.baseState !== 1) {\n if (c3 !== \"=\") {\n this.parseFixedEntity(legacy_json_1.default);\n }\n } else {\n this.parseLegacyEntity();\n }\n this._state = this.baseState;\n this._index--;\n }\n };\n Tokenizer2.prototype.decodeNumericEntity = function(offset3, base, strict) {\n var sectionStart = this.sectionStart + offset3;\n if (sectionStart !== this._index) {\n var entity = this.buffer.substring(sectionStart, this._index);\n var parsed = parseInt(entity, base);\n this.emitPartial(decode_codepoint_1.default(parsed));\n this.sectionStart = strict ? this._index + 1 : this._index;\n }\n this._state = this.baseState;\n };\n Tokenizer2.prototype.stateInNumericEntity = function(c3) {\n if (c3 === \";\") {\n this.decodeNumericEntity(2, 10, true);\n } else if (c3 < \"0\" || c3 > \"9\") {\n if (!this.xmlMode) {\n this.decodeNumericEntity(2, 10, false);\n } else {\n this._state = this.baseState;\n }\n this._index--;\n }\n };\n Tokenizer2.prototype.stateInHexEntity = function(c3) {\n if (c3 === \";\") {\n this.decodeNumericEntity(3, 16, true);\n } else if ((c3 < \"a\" || c3 > \"f\") && (c3 < \"A\" || c3 > \"F\") && (c3 < \"0\" || c3 > \"9\")) {\n if (!this.xmlMode) {\n this.decodeNumericEntity(3, 16, false);\n } else {\n this._state = this.baseState;\n }\n this._index--;\n }\n };\n Tokenizer2.prototype.cleanup = function() {\n if (this.sectionStart < 0) {\n this.buffer = \"\";\n this.bufferOffset += this._index;\n this._index = 0;\n } else if (this.running) {\n if (this._state === 1) {\n if (this.sectionStart !== this._index) {\n this.cbs.ontext(this.buffer.substr(this.sectionStart));\n }\n this.buffer = \"\";\n this.bufferOffset += this._index;\n this._index = 0;\n } else if (this.sectionStart === this._index) {\n this.buffer = \"\";\n this.bufferOffset += this._index;\n this._index = 0;\n } else {\n this.buffer = this.buffer.substr(this.sectionStart);\n this._index -= this.sectionStart;\n this.bufferOffset += this.sectionStart;\n }\n this.sectionStart = 0;\n }\n };\n Tokenizer2.prototype.parse = function() {\n while (this._index < this.buffer.length && this.running) {\n var c3 = this.buffer.charAt(this._index);\n if (this._state === 1) {\n this.stateText(c3);\n } else if (this._state === 12) {\n this.stateInAttributeValueDoubleQuotes(c3);\n } else if (this._state === 9) {\n this.stateInAttributeName(c3);\n } else if (this._state === 19) {\n this.stateInComment(c3);\n } else if (this._state === 20) {\n this.stateInSpecialComment(c3);\n } else if (this._state === 8) {\n this.stateBeforeAttributeName(c3);\n } else if (this._state === 3) {\n this.stateInTagName(c3);\n } else if (this._state === 6) {\n this.stateInClosingTagName(c3);\n } else if (this._state === 2) {\n this.stateBeforeTagName(c3);\n } else if (this._state === 10) {\n this.stateAfterAttributeName(c3);\n } else if (this._state === 13) {\n this.stateInAttributeValueSingleQuotes(c3);\n } else if (this._state === 11) {\n this.stateBeforeAttributeValue(c3);\n } else if (this._state === 5) {\n this.stateBeforeClosingTagName(c3);\n } else if (this._state === 7) {\n this.stateAfterClosingTagName(c3);\n } else if (this._state === 32) {\n this.stateBeforeSpecialS(c3);\n } else if (this._state === 21) {\n this.stateAfterComment1(c3);\n } else if (this._state === 14) {\n this.stateInAttributeValueNoQuotes(c3);\n } else if (this._state === 4) {\n this.stateInSelfClosingTag(c3);\n } else if (this._state === 16) {\n this.stateInDeclaration(c3);\n } else if (this._state === 15) {\n this.stateBeforeDeclaration(c3);\n } else if (this._state === 22) {\n this.stateAfterComment2(c3);\n } else if (this._state === 18) {\n this.stateBeforeComment(c3);\n } else if (this._state === 33) {\n this.stateBeforeSpecialSEnd(c3);\n } else if (this._state === 53) {\n stateAfterSpecialTEnd(this, c3);\n } else if (this._state === 39) {\n stateAfterScript1(this, c3);\n } else if (this._state === 40) {\n stateAfterScript2(this, c3);\n } else if (this._state === 41) {\n stateAfterScript3(this, c3);\n } else if (this._state === 34) {\n stateBeforeScript1(this, c3);\n } else if (this._state === 35) {\n stateBeforeScript2(this, c3);\n } else if (this._state === 36) {\n stateBeforeScript3(this, c3);\n } else if (this._state === 37) {\n stateBeforeScript4(this, c3);\n } else if (this._state === 38) {\n this.stateBeforeSpecialLast(c3, 2);\n } else if (this._state === 42) {\n stateAfterScript4(this, c3);\n } else if (this._state === 43) {\n this.stateAfterSpecialLast(c3, 6);\n } else if (this._state === 44) {\n stateBeforeStyle1(this, c3);\n } else if (this._state === 29) {\n this.stateInCdata(c3);\n } else if (this._state === 45) {\n stateBeforeStyle2(this, c3);\n } else if (this._state === 46) {\n stateBeforeStyle3(this, c3);\n } else if (this._state === 47) {\n this.stateBeforeSpecialLast(c3, 3);\n } else if (this._state === 48) {\n stateAfterStyle1(this, c3);\n } else if (this._state === 49) {\n stateAfterStyle2(this, c3);\n } else if (this._state === 50) {\n stateAfterStyle3(this, c3);\n } else if (this._state === 51) {\n this.stateAfterSpecialLast(c3, 5);\n } else if (this._state === 52) {\n stateBeforeSpecialT(this, c3);\n } else if (this._state === 54) {\n stateBeforeTitle1(this, c3);\n } else if (this._state === 55) {\n stateBeforeTitle2(this, c3);\n } else if (this._state === 56) {\n stateBeforeTitle3(this, c3);\n } else if (this._state === 57) {\n this.stateBeforeSpecialLast(c3, 4);\n } else if (this._state === 58) {\n stateAfterTitle1(this, c3);\n } else if (this._state === 59) {\n stateAfterTitle2(this, c3);\n } else if (this._state === 60) {\n stateAfterTitle3(this, c3);\n } else if (this._state === 61) {\n this.stateAfterSpecialLast(c3, 5);\n } else if (this._state === 17) {\n this.stateInProcessingInstruction(c3);\n } else if (this._state === 64) {\n this.stateInNamedEntity(c3);\n } else if (this._state === 23) {\n stateBeforeCdata1(this, c3);\n } else if (this._state === 62) {\n stateBeforeEntity(this, c3);\n } else if (this._state === 24) {\n stateBeforeCdata2(this, c3);\n } else if (this._state === 25) {\n stateBeforeCdata3(this, c3);\n } else if (this._state === 30) {\n this.stateAfterCdata1(c3);\n } else if (this._state === 31) {\n this.stateAfterCdata2(c3);\n } else if (this._state === 26) {\n stateBeforeCdata4(this, c3);\n } else if (this._state === 27) {\n stateBeforeCdata5(this, c3);\n } else if (this._state === 28) {\n this.stateBeforeCdata6(c3);\n } else if (this._state === 66) {\n this.stateInHexEntity(c3);\n } else if (this._state === 65) {\n this.stateInNumericEntity(c3);\n } else if (this._state === 63) {\n stateBeforeNumericEntity(this, c3);\n } else {\n this.cbs.onerror(Error(\"unknown _state\"), this._state);\n }\n this._index++;\n }\n this.cleanup();\n };\n Tokenizer2.prototype.finish = function() {\n if (this.sectionStart < this._index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n };\n Tokenizer2.prototype.handleTrailingData = function() {\n var data = this.buffer.substr(this.sectionStart);\n if (this._state === 29 || this._state === 30 || this._state === 31) {\n this.cbs.oncdata(data);\n } else if (this._state === 19 || this._state === 21 || this._state === 22) {\n this.cbs.oncomment(data);\n } else if (this._state === 64 && !this.xmlMode) {\n this.parseLegacyEntity();\n if (this.sectionStart < this._index) {\n this._state = this.baseState;\n this.handleTrailingData();\n }\n } else if (this._state === 65 && !this.xmlMode) {\n this.decodeNumericEntity(2, 10, false);\n if (this.sectionStart < this._index) {\n this._state = this.baseState;\n this.handleTrailingData();\n }\n } else if (this._state === 66 && !this.xmlMode) {\n this.decodeNumericEntity(3, 16, false);\n if (this.sectionStart < this._index) {\n this._state = this.baseState;\n this.handleTrailingData();\n }\n } else if (this._state !== 3 && this._state !== 8 && this._state !== 11 && this._state !== 10 && this._state !== 9 && this._state !== 13 && this._state !== 12 && this._state !== 14 && this._state !== 6) {\n this.cbs.ontext(data);\n }\n };\n Tokenizer2.prototype.getSection = function() {\n return this.buffer.substring(this.sectionStart, this._index);\n };\n Tokenizer2.prototype.emitToken = function(name) {\n this.cbs[name](this.getSection());\n this.sectionStart = -1;\n };\n Tokenizer2.prototype.emitPartial = function(value) {\n if (this.baseState !== 1) {\n this.cbs.onattribdata(value);\n } else {\n this.cbs.ontext(value);\n }\n };\n return Tokenizer2;\n }();\n exports2.default = Tokenizer;\n }\n});\n\n// node_modules/cheerio/node_modules/htmlparser2/lib/Parser.js\nvar require_Parser = __commonJS({\n \"node_modules/cheerio/node_modules/htmlparser2/lib/Parser.js\"(exports2) {\n \"use strict\";\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.Parser = void 0;\n var Tokenizer_1 = __importDefault2(require_Tokenizer());\n var formTags = /* @__PURE__ */ new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\"\n ]);\n var pTag = /* @__PURE__ */ new Set([\"p\"]);\n var openImpliesClose = {\n tr: /* @__PURE__ */ new Set([\"tr\", \"th\", \"td\"]),\n th: /* @__PURE__ */ new Set([\"th\"]),\n td: /* @__PURE__ */ new Set([\"thead\", \"th\", \"td\"]),\n body: /* @__PURE__ */ new Set([\"head\", \"link\", \"script\"]),\n li: /* @__PURE__ */ new Set([\"li\"]),\n p: pTag,\n h1: pTag,\n h2: pTag,\n h3: pTag,\n h4: pTag,\n h5: pTag,\n h6: pTag,\n select: formTags,\n input: formTags,\n output: formTags,\n button: formTags,\n datalist: formTags,\n textarea: formTags,\n option: /* @__PURE__ */ new Set([\"option\"]),\n optgroup: /* @__PURE__ */ new Set([\"optgroup\", \"option\"]),\n dd: /* @__PURE__ */ new Set([\"dt\", \"dd\"]),\n dt: /* @__PURE__ */ new Set([\"dt\", \"dd\"]),\n address: pTag,\n article: pTag,\n aside: pTag,\n blockquote: pTag,\n details: pTag,\n div: pTag,\n dl: pTag,\n fieldset: pTag,\n figcaption: pTag,\n figure: pTag,\n footer: pTag,\n form: pTag,\n header: pTag,\n hr: pTag,\n main: pTag,\n nav: pTag,\n ol: pTag,\n pre: pTag,\n section: pTag,\n table: pTag,\n ul: pTag,\n rt: /* @__PURE__ */ new Set([\"rt\", \"rp\"]),\n rp: /* @__PURE__ */ new Set([\"rt\", \"rp\"]),\n tbody: /* @__PURE__ */ new Set([\"thead\", \"tbody\"]),\n tfoot: /* @__PURE__ */ new Set([\"thead\", \"tbody\"])\n };\n var voidElements = /* @__PURE__ */ new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\"\n ]);\n var foreignContextElements = /* @__PURE__ */ new Set([\"math\", \"svg\"]);\n var htmlIntegrationElements = /* @__PURE__ */ new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\"\n ]);\n var reNameEnd = /\\s|\\//;\n var Parser = function() {\n function Parser2(cbs, options) {\n if (options === void 0) {\n options = {};\n }\n var _a, _b, _c, _d, _e2;\n this.startIndex = 0;\n this.endIndex = null;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.foreignContext = [];\n this.options = options;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;\n this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;\n this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_1.default)(this.options, this);\n (_e2 = (_d = this.cbs).onparserinit) === null || _e2 === void 0 ? void 0 : _e2.call(_d, this);\n }\n Parser2.prototype.updatePosition = function(initialOffset) {\n if (this.endIndex === null) {\n if (this.tokenizer.sectionStart <= initialOffset) {\n this.startIndex = 0;\n } else {\n this.startIndex = this.tokenizer.sectionStart - initialOffset;\n }\n } else {\n this.startIndex = this.endIndex + 1;\n }\n this.endIndex = this.tokenizer.getAbsoluteIndex();\n };\n Parser2.prototype.ontext = function(data) {\n var _a, _b;\n this.updatePosition(1);\n this.endIndex--;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n };\n Parser2.prototype.onopentagname = function(name) {\n var _a, _b;\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.tagname = name;\n if (!this.options.xmlMode && Object.prototype.hasOwnProperty.call(openImpliesClose, name)) {\n var el = void 0;\n while (this.stack.length > 0 && openImpliesClose[name].has(el = this.stack[this.stack.length - 1])) {\n this.onclosetag(el);\n }\n }\n if (this.options.xmlMode || !voidElements.has(name)) {\n this.stack.push(name);\n if (foreignContextElements.has(name)) {\n this.foreignContext.push(true);\n } else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.push(false);\n }\n }\n (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n };\n Parser2.prototype.onopentagend = function() {\n var _a, _b;\n this.updatePosition(1);\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs);\n this.attribs = null;\n }\n if (!this.options.xmlMode && this.cbs.onclosetag && voidElements.has(this.tagname)) {\n this.cbs.onclosetag(this.tagname);\n }\n this.tagname = \"\";\n };\n Parser2.prototype.onclosetag = function(name) {\n this.updatePosition(1);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (foreignContextElements.has(name) || htmlIntegrationElements.has(name)) {\n this.foreignContext.pop();\n }\n if (this.stack.length && (this.options.xmlMode || !voidElements.has(name))) {\n var pos = this.stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this.cbs.onclosetag) {\n pos = this.stack.length - pos;\n while (pos--) {\n this.cbs.onclosetag(this.stack.pop());\n }\n } else\n this.stack.length = pos;\n } else if (name === \"p\" && !this.options.xmlMode) {\n this.onopentagname(name);\n this.closeCurrentTag();\n }\n } else if (!this.options.xmlMode && (name === \"br\" || name === \"p\")) {\n this.onopentagname(name);\n this.closeCurrentTag();\n }\n };\n Parser2.prototype.onselfclosingtag = function() {\n if (this.options.xmlMode || this.options.recognizeSelfClosing || this.foreignContext[this.foreignContext.length - 1]) {\n this.closeCurrentTag();\n } else {\n this.onopentagend();\n }\n };\n Parser2.prototype.closeCurrentTag = function() {\n var _a, _b;\n var name = this.tagname;\n this.onopentagend();\n if (this.stack[this.stack.length - 1] === name) {\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name);\n this.stack.pop();\n }\n };\n Parser2.prototype.onattribname = function(name) {\n if (this.lowerCaseAttributeNames) {\n name = name.toLowerCase();\n }\n this.attribname = name;\n };\n Parser2.prototype.onattribdata = function(value) {\n this.attribvalue += value;\n };\n Parser2.prototype.onattribend = function(quote) {\n var _a, _b;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote);\n if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribname = \"\";\n this.attribvalue = \"\";\n };\n Parser2.prototype.getInstructionName = function(value) {\n var idx = value.search(reNameEnd);\n var name = idx < 0 ? value : value.substr(0, idx);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n };\n Parser2.prototype.ondeclaration = function(value) {\n if (this.cbs.onprocessinginstruction) {\n var name_1 = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(\"!\" + name_1, \"!\" + value);\n }\n };\n Parser2.prototype.onprocessinginstruction = function(value) {\n if (this.cbs.onprocessinginstruction) {\n var name_2 = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(\"?\" + name_2, \"?\" + value);\n }\n };\n Parser2.prototype.oncomment = function(value) {\n var _a, _b, _c, _d;\n this.updatePosition(4);\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n };\n Parser2.prototype.oncdata = function(value) {\n var _a, _b, _c, _d, _e2, _f;\n this.updatePosition(1);\n if (this.options.xmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e2 = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e2);\n } else {\n this.oncomment(\"[CDATA[\" + value + \"]]\");\n }\n };\n Parser2.prototype.onerror = function(err) {\n var _a, _b;\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n Parser2.prototype.onend = function() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n for (var i3 = this.stack.length; i3 > 0; this.cbs.onclosetag(this.stack[--i3]))\n ;\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n Parser2.prototype.reset = function() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack = [];\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n };\n Parser2.prototype.parseComplete = function(data) {\n this.reset();\n this.end(data);\n };\n Parser2.prototype.write = function(chunk) {\n this.tokenizer.write(chunk);\n };\n Parser2.prototype.end = function(chunk) {\n this.tokenizer.end(chunk);\n };\n Parser2.prototype.pause = function() {\n this.tokenizer.pause();\n };\n Parser2.prototype.resume = function() {\n this.tokenizer.resume();\n };\n Parser2.prototype.parseChunk = function(chunk) {\n this.write(chunk);\n };\n Parser2.prototype.done = function(chunk) {\n this.end(chunk);\n };\n return Parser2;\n }();\n exports2.Parser = Parser;\n }\n});\n\n// node_modules/cheerio/node_modules/htmlparser2/lib/FeedHandler.js\nvar require_FeedHandler = __commonJS({\n \"node_modules/cheerio/node_modules/htmlparser2/lib/FeedHandler.js\"(exports2) {\n \"use strict\";\n var __extends4 = exports2 && exports2.__extends || function() {\n var extendStatics = function(d3, b4) {\n extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d4, b5) {\n d4.__proto__ = b5;\n } || function(d4, b5) {\n for (var p4 in b5)\n if (Object.prototype.hasOwnProperty.call(b5, p4))\n d4[p4] = b5[p4];\n };\n return extendStatics(d3, b4);\n };\n return function(d3, b4) {\n if (typeof b4 !== \"function\" && b4 !== null)\n throw new TypeError(\"Class extends value \" + String(b4) + \" is not a constructor or null\");\n extendStatics(d3, b4);\n function __() {\n this.constructor = d3;\n }\n d3.prototype = b4 === null ? Object.create(b4) : (__.prototype = b4.prototype, new __());\n };\n }();\n var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n Object.defineProperty(o3, k22, { enumerable: true, get: function() {\n return m2[k4];\n } });\n } : function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n o3[k22] = m2[k4];\n });\n var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o3, v4) {\n Object.defineProperty(o3, \"default\", { enumerable: true, value: v4 });\n } : function(o3, v4) {\n o3[\"default\"] = v4;\n });\n var __importStar2 = exports2 && exports2.__importStar || function(mod) {\n if (mod && mod.__esModule)\n return mod;\n var result = {};\n if (mod != null) {\n for (var k4 in mod)\n if (k4 !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k4))\n __createBinding2(result, mod, k4);\n }\n __setModuleDefault(result, mod);\n return result;\n };\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.parseFeed = exports2.FeedHandler = void 0;\n var domhandler_1 = __importDefault2(require_lib3());\n var DomUtils = __importStar2(require_lib6());\n var Parser_1 = require_Parser();\n var FeedItemMediaMedium;\n (function(FeedItemMediaMedium2) {\n FeedItemMediaMedium2[FeedItemMediaMedium2[\"image\"] = 0] = \"image\";\n FeedItemMediaMedium2[FeedItemMediaMedium2[\"audio\"] = 1] = \"audio\";\n FeedItemMediaMedium2[FeedItemMediaMedium2[\"video\"] = 2] = \"video\";\n FeedItemMediaMedium2[FeedItemMediaMedium2[\"document\"] = 3] = \"document\";\n FeedItemMediaMedium2[FeedItemMediaMedium2[\"executable\"] = 4] = \"executable\";\n })(FeedItemMediaMedium || (FeedItemMediaMedium = {}));\n var FeedItemMediaExpression;\n (function(FeedItemMediaExpression2) {\n FeedItemMediaExpression2[FeedItemMediaExpression2[\"sample\"] = 0] = \"sample\";\n FeedItemMediaExpression2[FeedItemMediaExpression2[\"full\"] = 1] = \"full\";\n FeedItemMediaExpression2[FeedItemMediaExpression2[\"nonstop\"] = 2] = \"nonstop\";\n })(FeedItemMediaExpression || (FeedItemMediaExpression = {}));\n var FeedHandler = function(_super) {\n __extends4(FeedHandler2, _super);\n function FeedHandler2(callback, options) {\n var _this = this;\n if (typeof callback === \"object\") {\n callback = void 0;\n options = callback;\n }\n _this = _super.call(this, callback, options) || this;\n return _this;\n }\n FeedHandler2.prototype.onend = function() {\n var _a, _b;\n var feedRoot = getOneElement(isValidFeed, this.dom);\n if (!feedRoot) {\n this.handleCallback(new Error(\"couldn't find root of feed\"));\n return;\n }\n var feed = {};\n if (feedRoot.name === \"feed\") {\n var childs = feedRoot.children;\n feed.type = \"atom\";\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n var href = getAttribute(\"href\", getOneElement(\"link\", childs));\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n var updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n feed.items = getElements(\"entry\", childs).map(function(item) {\n var entry = {};\n var children = item.children;\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n var href2 = getAttribute(\"href\", getOneElement(\"link\", children));\n if (href2) {\n entry.link = href2;\n }\n var description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n var pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n entry.media = getMediaElements(children);\n return entry;\n });\n } else {\n var childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n feed.type = feedRoot.name.substr(0, 3);\n feed.id = \"\";\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n var updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n feed.items = getElements(\"item\", feedRoot.children).map(function(item) {\n var entry = {};\n var children = item.children;\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n var pubDate = fetch(\"pubDate\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n entry.media = getMediaElements(children);\n return entry;\n });\n }\n this.feed = feed;\n this.handleCallback(null);\n };\n return FeedHandler2;\n }(domhandler_1.default);\n exports2.FeedHandler = FeedHandler;\n function getMediaElements(where) {\n return getElements(\"media:content\", where).map(function(elem) {\n var media = {\n medium: elem.attribs.medium,\n isDefault: !!elem.attribs.isDefault\n };\n if (elem.attribs.url) {\n media.url = elem.attribs.url;\n }\n if (elem.attribs.fileSize) {\n media.fileSize = parseInt(elem.attribs.fileSize, 10);\n }\n if (elem.attribs.type) {\n media.type = elem.attribs.type;\n }\n if (elem.attribs.expression) {\n media.expression = elem.attribs.expression;\n }\n if (elem.attribs.bitrate) {\n media.bitrate = parseInt(elem.attribs.bitrate, 10);\n }\n if (elem.attribs.framerate) {\n media.framerate = parseInt(elem.attribs.framerate, 10);\n }\n if (elem.attribs.samplingrate) {\n media.samplingrate = parseInt(elem.attribs.samplingrate, 10);\n }\n if (elem.attribs.channels) {\n media.channels = parseInt(elem.attribs.channels, 10);\n }\n if (elem.attribs.duration) {\n media.duration = parseInt(elem.attribs.duration, 10);\n }\n if (elem.attribs.height) {\n media.height = parseInt(elem.attribs.height, 10);\n }\n if (elem.attribs.width) {\n media.width = parseInt(elem.attribs.width, 10);\n }\n if (elem.attribs.lang) {\n media.lang = elem.attribs.lang;\n }\n return media;\n });\n }\n function getElements(tagName, where) {\n return DomUtils.getElementsByTagName(tagName, where, true);\n }\n function getOneElement(tagName, node) {\n return DomUtils.getElementsByTagName(tagName, node, true, 1)[0];\n }\n function fetch(tagName, where, recurse) {\n if (recurse === void 0) {\n recurse = false;\n }\n return DomUtils.getText(DomUtils.getElementsByTagName(tagName, where, recurse, 1)).trim();\n }\n function getAttribute(name, elem) {\n if (!elem) {\n return null;\n }\n var attribs = elem.attribs;\n return attribs[name];\n }\n function addConditionally(obj, prop, what, where, recurse) {\n if (recurse === void 0) {\n recurse = false;\n }\n var tmp = fetch(what, where, recurse);\n if (tmp)\n obj[prop] = tmp;\n }\n function isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n }\n function parseFeed(feed, options) {\n if (options === void 0) {\n options = { xmlMode: true };\n }\n var handler = new FeedHandler(options);\n new Parser_1.Parser(handler, options).end(feed);\n return handler.feed;\n }\n exports2.parseFeed = parseFeed;\n }\n});\n\n// node_modules/cheerio/node_modules/htmlparser2/lib/index.js\nvar require_lib10 = __commonJS({\n \"node_modules/cheerio/node_modules/htmlparser2/lib/index.js\"(exports2) {\n \"use strict\";\n var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n Object.defineProperty(o3, k22, { enumerable: true, get: function() {\n return m2[k4];\n } });\n } : function(o3, m2, k4, k22) {\n if (k22 === void 0)\n k22 = k4;\n o3[k22] = m2[k4];\n });\n var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o3, v4) {\n Object.defineProperty(o3, \"default\", { enumerable: true, value: v4 });\n } : function(o3, v4) {\n o3[\"default\"] = v4;\n });\n var __importStar2 = exports2 && exports2.__importStar || function(mod) {\n if (mod && mod.__esModule)\n return mod;\n var result = {};\n if (mod != null) {\n for (var k4 in mod)\n if (k4 !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k4))\n __createBinding2(result, mod, k4);\n }\n __setModuleDefault(result, mod);\n return result;\n };\n var __exportStar2 = exports2 && exports2.__exportStar || function(m2, exports3) {\n for (var p4 in m2)\n if (p4 !== \"default\" && !Object.prototype.hasOwnProperty.call(exports3, p4))\n __createBinding2(exports3, m2, p4);\n };\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.RssHandler = exports2.DefaultHandler = exports2.DomUtils = exports2.ElementType = exports2.Tokenizer = exports2.createDomStream = exports2.parseDOM = exports2.parseDocument = exports2.DomHandler = exports2.Parser = void 0;\n var Parser_1 = require_Parser();\n Object.defineProperty(exports2, \"Parser\", { enumerable: true, get: function() {\n return Parser_1.Parser;\n } });\n var domhandler_1 = require_lib3();\n Object.defineProperty(exports2, \"DomHandler\", { enumerable: true, get: function() {\n return domhandler_1.DomHandler;\n } });\n Object.defineProperty(exports2, \"DefaultHandler\", { enumerable: true, get: function() {\n return domhandler_1.DomHandler;\n } });\n function parseDocument(data, options) {\n var handler = new domhandler_1.DomHandler(void 0, options);\n new Parser_1.Parser(handler, options).end(data);\n return handler.root;\n }\n exports2.parseDocument = parseDocument;\n function parseDOM(data, options) {\n return parseDocument(data, options).children;\n }\n exports2.parseDOM = parseDOM;\n function createDomStream(cb, options, elementCb) {\n var handler = new domhandler_1.DomHandler(cb, options, elementCb);\n return new Parser_1.Parser(handler, options);\n }\n exports2.createDomStream = createDomStream;\n var Tokenizer_1 = require_Tokenizer();\n Object.defineProperty(exports2, \"Tokenizer\", { enumerable: true, get: function() {\n return __importDefault2(Tokenizer_1).default;\n } });\n var ElementType = __importStar2(require_lib2());\n exports2.ElementType = ElementType;\n __exportStar2(require_FeedHandler(), exports2);\n exports2.DomUtils = __importStar2(require_lib6());\n var FeedHandler_1 = require_FeedHandler();\n Object.defineProperty(exports2, \"RssHandler\", { enumerable: true, get: function() {\n return FeedHandler_1.FeedHandler;\n } });\n }\n});\n\n// node_modules/parse5/lib/common/unicode.js\nvar require_unicode = __commonJS({\n \"node_modules/parse5/lib/common/unicode.js\"(exports2) {\n \"use strict\";\n var UNDEFINED_CODE_POINTS = [\n 65534,\n 65535,\n 131070,\n 131071,\n 196606,\n 196607,\n 262142,\n 262143,\n 327678,\n 327679,\n 393214,\n 393215,\n 458750,\n 458751,\n 524286,\n 524287,\n 589822,\n 589823,\n 655358,\n 655359,\n 720894,\n 720895,\n 786430,\n 786431,\n 851966,\n 851967,\n 917502,\n 917503,\n 983038,\n 983039,\n 1048574,\n 1048575,\n 1114110,\n 1114111\n ];\n exports2.REPLACEMENT_CHARACTER = \"\\uFFFD\";\n exports2.CODE_POINTS = {\n EOF: -1,\n NULL: 0,\n TABULATION: 9,\n CARRIAGE_RETURN: 13,\n LINE_FEED: 10,\n FORM_FEED: 12,\n SPACE: 32,\n EXCLAMATION_MARK: 33,\n QUOTATION_MARK: 34,\n NUMBER_SIGN: 35,\n AMPERSAND: 38,\n APOSTROPHE: 39,\n HYPHEN_MINUS: 45,\n SOLIDUS: 47,\n DIGIT_0: 48,\n DIGIT_9: 57,\n SEMICOLON: 59,\n LESS_THAN_SIGN: 60,\n EQUALS_SIGN: 61,\n GREATER_THAN_SIGN: 62,\n QUESTION_MARK: 63,\n LATIN_CAPITAL_A: 65,\n LATIN_CAPITAL_F: 70,\n LATIN_CAPITAL_X: 88,\n LATIN_CAPITAL_Z: 90,\n RIGHT_SQUARE_BRACKET: 93,\n GRAVE_ACCENT: 96,\n LATIN_SMALL_A: 97,\n LATIN_SMALL_F: 102,\n LATIN_SMALL_X: 120,\n LATIN_SMALL_Z: 122,\n REPLACEMENT_CHARACTER: 65533\n };\n exports2.CODE_POINT_SEQUENCES = {\n DASH_DASH_STRING: [45, 45],\n DOCTYPE_STRING: [68, 79, 67, 84, 89, 80, 69],\n CDATA_START_STRING: [91, 67, 68, 65, 84, 65, 91],\n SCRIPT_STRING: [115, 99, 114, 105, 112, 116],\n PUBLIC_STRING: [80, 85, 66, 76, 73, 67],\n SYSTEM_STRING: [83, 89, 83, 84, 69, 77]\n };\n exports2.isSurrogate = function(cp) {\n return cp >= 55296 && cp <= 57343;\n };\n exports2.isSurrogatePair = function(cp) {\n return cp >= 56320 && cp <= 57343;\n };\n exports2.getSurrogatePairCodePoint = function(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n };\n exports2.isControlCodePoint = function(cp) {\n return cp !== 32 && cp !== 10 && cp !== 13 && cp !== 9 && cp !== 12 && cp >= 1 && cp <= 31 || cp >= 127 && cp <= 159;\n };\n exports2.isUndefinedCodePoint = function(cp) {\n return cp >= 64976 && cp <= 65007 || UNDEFINED_CODE_POINTS.indexOf(cp) > -1;\n };\n }\n});\n\n// node_modules/parse5/lib/common/error-codes.js\nvar require_error_codes = __commonJS({\n \"node_modules/parse5/lib/common/error-codes.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = {\n controlCharacterInInputStream: \"control-character-in-input-stream\",\n noncharacterInInputStream: \"noncharacter-in-input-stream\",\n surrogateInInputStream: \"surrogate-in-input-stream\",\n nonVoidHtmlElementStartTagWithTrailingSolidus: \"non-void-html-element-start-tag-with-trailing-solidus\",\n endTagWithAttributes: \"end-tag-with-attributes\",\n endTagWithTrailingSolidus: \"end-tag-with-trailing-solidus\",\n unexpectedSolidusInTag: \"unexpected-solidus-in-tag\",\n unexpectedNullCharacter: \"unexpected-null-character\",\n unexpectedQuestionMarkInsteadOfTagName: \"unexpected-question-mark-instead-of-tag-name\",\n invalidFirstCharacterOfTagName: \"invalid-first-character-of-tag-name\",\n unexpectedEqualsSignBeforeAttributeName: \"unexpected-equals-sign-before-attribute-name\",\n missingEndTagName: \"missing-end-tag-name\",\n unexpectedCharacterInAttributeName: \"unexpected-character-in-attribute-name\",\n unknownNamedCharacterReference: \"unknown-named-character-reference\",\n missingSemicolonAfterCharacterReference: \"missing-semicolon-after-character-reference\",\n unexpectedCharacterAfterDoctypeSystemIdentifier: \"unexpected-character-after-doctype-system-identifier\",\n unexpectedCharacterInUnquotedAttributeValue: \"unexpected-character-in-unquoted-attribute-value\",\n eofBeforeTagName: \"eof-before-tag-name\",\n eofInTag: \"eof-in-tag\",\n missingAttributeValue: \"missing-attribute-value\",\n missingWhitespaceBetweenAttributes: \"missing-whitespace-between-attributes\",\n missingWhitespaceAfterDoctypePublicKeyword: \"missing-whitespace-after-doctype-public-keyword\",\n missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers: \"missing-whitespace-between-doctype-public-and-system-identifiers\",\n missingWhitespaceAfterDoctypeSystemKeyword: \"missing-whitespace-after-doctype-system-keyword\",\n missingQuoteBeforeDoctypePublicIdentifier: \"missing-quote-before-doctype-public-identifier\",\n missingQuoteBeforeDoctypeSystemIdentifier: \"missing-quote-before-doctype-system-identifier\",\n missingDoctypePublicIdentifier: \"missing-doctype-public-identifier\",\n missingDoctypeSystemIdentifier: \"missing-doctype-system-identifier\",\n abruptDoctypePublicIdentifier: \"abrupt-doctype-public-identifier\",\n abruptDoctypeSystemIdentifier: \"abrupt-doctype-system-identifier\",\n cdataInHtmlContent: \"cdata-in-html-content\",\n incorrectlyOpenedComment: \"incorrectly-opened-comment\",\n eofInScriptHtmlCommentLikeText: \"eof-in-script-html-comment-like-text\",\n eofInDoctype: \"eof-in-doctype\",\n nestedComment: \"nested-comment\",\n abruptClosingOfEmptyComment: \"abrupt-closing-of-empty-comment\",\n eofInComment: \"eof-in-comment\",\n incorrectlyClosedComment: \"incorrectly-closed-comment\",\n eofInCdata: \"eof-in-cdata\",\n absenceOfDigitsInNumericCharacterReference: \"absence-of-digits-in-numeric-character-reference\",\n nullCharacterReference: \"null-character-reference\",\n surrogateCharacterReference: \"surrogate-character-reference\",\n characterReferenceOutsideUnicodeRange: \"character-reference-outside-unicode-range\",\n controlCharacterReference: \"control-character-reference\",\n noncharacterCharacterReference: \"noncharacter-character-reference\",\n missingWhitespaceBeforeDoctypeName: \"missing-whitespace-before-doctype-name\",\n missingDoctypeName: \"missing-doctype-name\",\n invalidCharacterSequenceAfterDoctypeName: \"invalid-character-sequence-after-doctype-name\",\n duplicateAttribute: \"duplicate-attribute\",\n nonConformingDoctype: \"non-conforming-doctype\",\n missingDoctype: \"missing-doctype\",\n misplacedDoctype: \"misplaced-doctype\",\n endTagWithoutMatchingOpenElement: \"end-tag-without-matching-open-element\",\n closingOfElementWithOpenChildElements: \"closing-of-element-with-open-child-elements\",\n disallowedContentInNoscriptInHead: \"disallowed-content-in-noscript-in-head\",\n openElementsLeftAfterEof: \"open-elements-left-after-eof\",\n abandonedHeadElementChild: \"abandoned-head-element-child\",\n misplacedStartTagForHeadElement: \"misplaced-start-tag-for-head-element\",\n nestedNoscriptInHead: \"nested-noscript-in-head\",\n eofInElementThatCanContainOnlyText: \"eof-in-element-that-can-contain-only-text\"\n };\n }\n});\n\n// node_modules/parse5/lib/tokenizer/preprocessor.js\nvar require_preprocessor = __commonJS({\n \"node_modules/parse5/lib/tokenizer/preprocessor.js\"(exports2, module2) {\n \"use strict\";\n var unicode = require_unicode();\n var ERR = require_error_codes();\n var $2 = unicode.CODE_POINTS;\n var DEFAULT_BUFFER_WATERLINE = 1 << 16;\n var Preprocessor = class {\n constructor() {\n this.html = null;\n this.pos = -1;\n this.lastGapPos = -1;\n this.lastCharPos = -1;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n }\n _err() {\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n if (this.pos !== this.lastCharPos) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (unicode.isSurrogatePair(nextCp)) {\n this.pos++;\n this._addGap();\n return unicode.getSurrogatePairCodePoint(cp, nextCp);\n }\n } else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $2.EOF;\n }\n this._err(ERR.surrogateInInputStream);\n return cp;\n }\n dropParsedChunk() {\n if (this.pos > this.bufferWaterline) {\n this.lastCharPos -= this.pos;\n this.html = this.html.substring(this.pos);\n this.pos = 0;\n this.lastGapPos = -1;\n this.gapStack = [];\n }\n }\n write(chunk, isLastChunk) {\n if (this.html) {\n this.html += chunk;\n } else {\n this.html = chunk;\n }\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1, this.html.length);\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n }\n advance() {\n this.pos++;\n if (this.pos > this.lastCharPos) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $2.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n if (this.skipNextNewLine && cp === $2.LINE_FEED) {\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n if (cp === $2.CARRIAGE_RETURN) {\n this.skipNextNewLine = true;\n return $2.LINE_FEED;\n }\n this.skipNextNewLine = false;\n if (unicode.isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n const isCommonValidRange = cp > 31 && cp < 127 || cp === $2.LINE_FEED || cp === $2.CARRIAGE_RETURN || cp > 159 && cp < 64976;\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (unicode.isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n } else if (unicode.isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n retreat() {\n if (this.pos === this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.pos--;\n }\n };\n module2.exports = Preprocessor;\n }\n});\n\n// node_modules/parse5/lib/tokenizer/named-entity-data.js\nvar require_named_entity_data = __commonJS({\n \"node_modules/parse5/lib/tokenizer/named-entity-data.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = new Uint16Array([4, 52, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 106, 303, 412, 810, 1432, 1701, 1796, 1987, 2114, 2360, 2420, 2484, 3170, 3251, 4140, 4393, 4575, 4610, 5106, 5512, 5728, 6117, 6274, 6315, 6345, 6427, 6516, 7002, 7910, 8733, 9323, 9870, 10170, 10631, 10893, 11318, 11386, 11467, 12773, 13092, 14474, 14922, 15448, 15542, 16419, 17666, 18166, 18611, 19004, 19095, 19298, 19397, 4, 16, 69, 77, 97, 98, 99, 102, 103, 108, 109, 110, 111, 112, 114, 115, 116, 117, 140, 150, 158, 169, 176, 194, 199, 210, 216, 222, 226, 242, 256, 266, 283, 294, 108, 105, 103, 5, 198, 1, 59, 148, 1, 198, 80, 5, 38, 1, 59, 156, 1, 38, 99, 117, 116, 101, 5, 193, 1, 59, 167, 1, 193, 114, 101, 118, 101, 59, 1, 258, 4, 2, 105, 121, 182, 191, 114, 99, 5, 194, 1, 59, 189, 1, 194, 59, 1, 1040, 114, 59, 3, 55349, 56580, 114, 97, 118, 101, 5, 192, 1, 59, 208, 1, 192, 112, 104, 97, 59, 1, 913, 97, 99, 114, 59, 1, 256, 100, 59, 1, 10835, 4, 2, 103, 112, 232, 237, 111, 110, 59, 1, 260, 102, 59, 3, 55349, 56632, 112, 108, 121, 70, 117, 110, 99, 116, 105, 111, 110, 59, 1, 8289, 105, 110, 103, 5, 197, 1, 59, 264, 1, 197, 4, 2, 99, 115, 272, 277, 114, 59, 3, 55349, 56476, 105, 103, 110, 59, 1, 8788, 105, 108, 100, 101, 5, 195, 1, 59, 292, 1, 195, 109, 108, 5, 196, 1, 59, 301, 1, 196, 4, 8, 97, 99, 101, 102, 111, 114, 115, 117, 321, 350, 354, 383, 388, 394, 400, 405, 4, 2, 99, 114, 327, 336, 107, 115, 108, 97, 115, 104, 59, 1, 8726, 4, 2, 118, 119, 342, 345, 59, 1, 10983, 101, 100, 59, 1, 8966, 121, 59, 1, 1041, 4, 3, 99, 114, 116, 362, 369, 379, 97, 117, 115, 101, 59, 1, 8757, 110, 111, 117, 108, 108, 105, 115, 59, 1, 8492, 97, 59, 1, 914, 114, 59, 3, 55349, 56581, 112, 102, 59, 3, 55349, 56633, 101, 118, 101, 59, 1, 728, 99, 114, 59, 1, 8492, 109, 112, 101, 113, 59, 1, 8782, 4, 14, 72, 79, 97, 99, 100, 101, 102, 104, 105, 108, 111, 114, 115, 117, 442, 447, 456, 504, 542, 547, 569, 573, 577, 616, 678, 784, 790, 796, 99, 121, 59, 1, 1063, 80, 89, 5, 169, 1, 59, 454, 1, 169, 4, 3, 99, 112, 121, 464, 470, 497, 117, 116, 101, 59, 1, 262, 4, 2, 59, 105, 476, 478, 1, 8914, 116, 97, 108, 68, 105, 102, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 1, 8517, 108, 101, 121, 115, 59, 1, 8493, 4, 4, 97, 101, 105, 111, 514, 520, 530, 535, 114, 111, 110, 59, 1, 268, 100, 105, 108, 5, 199, 1, 59, 528, 1, 199, 114, 99, 59, 1, 264, 110, 105, 110, 116, 59, 1, 8752, 111, 116, 59, 1, 266, 4, 2, 100, 110, 553, 560, 105, 108, 108, 97, 59, 1, 184, 116, 101, 114, 68, 111, 116, 59, 1, 183, 114, 59, 1, 8493, 105, 59, 1, 935, 114, 99, 108, 101, 4, 4, 68, 77, 80, 84, 591, 596, 603, 609, 111, 116, 59, 1, 8857, 105, 110, 117, 115, 59, 1, 8854, 108, 117, 115, 59, 1, 8853, 105, 109, 101, 115, 59, 1, 8855, 111, 4, 2, 99, 115, 623, 646, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 1, 8754, 101, 67, 117, 114, 108, 121, 4, 2, 68, 81, 658, 671, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 1, 8221, 117, 111, 116, 101, 59, 1, 8217, 4, 4, 108, 110, 112, 117, 688, 701, 736, 753, 111, 110, 4, 2, 59, 101, 696, 698, 1, 8759, 59, 1, 10868, 4, 3, 103, 105, 116, 709, 717, 722, 114, 117, 101, 110, 116, 59, 1, 8801, 110, 116, 59, 1, 8751, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 1, 8750, 4, 2, 102, 114, 742, 745, 59, 1, 8450, 111, 100, 117, 99, 116, 59, 1, 8720, 110, 116, 101, 114, 67, 108, 111, 99, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 1, 8755, 111, 115, 115, 59, 1, 10799, 99, 114, 59, 3, 55349, 56478, 112, 4, 2, 59, 67, 803, 805, 1, 8915, 97, 112, 59, 1, 8781, 4, 11, 68, 74, 83, 90, 97, 99, 101, 102, 105, 111, 115, 834, 850, 855, 860, 865, 888, 903, 916, 921, 1011, 1415, 4, 2, 59, 111, 840, 842, 1, 8517, 116, 114, 97, 104, 100, 59, 1, 10513, 99, 121, 59, 1, 1026, 99, 121, 59, 1, 1029, 99, 121, 59, 1, 1039, 4, 3, 103, 114, 115, 873, 879, 883, 103, 101, 114, 59, 1, 8225, 114, 59, 1, 8609, 104, 118, 59, 1, 10980, 4, 2, 97, 121, 894, 900, 114, 111, 110, 59, 1, 270, 59, 1, 1044, 108, 4, 2, 59, 116, 910, 912, 1, 8711, 97, 59, 1, 916, 114, 59, 3, 55349, 56583, 4, 2, 97, 102, 927, 998, 4, 2, 99, 109, 933, 992, 114, 105, 116, 105, 99, 97, 108, 4, 4, 65, 68, 71, 84, 950, 957, 978, 985, 99, 117, 116, 101, 59, 1, 180, 111, 4, 2, 116, 117, 964, 967, 59, 1, 729, 98, 108, 101, 65, 99, 117, 116, 101, 59, 1, 733, 114, 97, 118, 101, 59, 1, 96, 105, 108, 100, 101, 59, 1, 732, 111, 110, 100, 59, 1, 8900, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 1, 8518, 4, 4, 112, 116, 117, 119, 1021, 1026, 1048, 1249, 102, 59, 3, 55349, 56635, 4, 3, 59, 68, 69, 1034, 1036, 1041, 1, 168, 111, 116, 59, 1, 8412, 113, 117, 97, 108, 59, 1, 8784, 98, 108, 101, 4, 6, 67, 68, 76, 82, 85, 86, 1065, 1082, 1101, 1189, 1211, 1236, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 1, 8751, 111, 4, 2, 116, 119, 1089, 1092, 59, 1, 168, 110, 65, 114, 114, 111, 119, 59, 1, 8659, 4, 2, 101, 111, 1107, 1141, 102, 116, 4, 3, 65, 82, 84, 1117, 1124, 1136, 114, 114, 111, 119, 59, 1, 8656, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8660, 101, 101, 59, 1, 10980, 110, 103, 4, 2, 76, 82, 1149, 1177, 101, 102, 116, 4, 2, 65, 82, 1158, 1165, 114, 114, 111, 119, 59, 1, 10232, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 10234, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 10233, 105, 103, 104, 116, 4, 2, 65, 84, 1199, 1206, 114, 114, 111, 119, 59, 1, 8658, 101, 101, 59, 1, 8872, 112, 4, 2, 65, 68, 1218, 1225, 114, 114, 111, 119, 59, 1, 8657, 111, 119, 110, 65, 114, 114, 111, 119, 59, 1, 8661, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 1, 8741, 110, 4, 6, 65, 66, 76, 82, 84, 97, 1264, 1292, 1299, 1352, 1391, 1408, 114, 114, 111, 119, 4, 3, 59, 66, 85, 1276, 1278, 1283, 1, 8595, 97, 114, 59, 1, 10515, 112, 65, 114, 114, 111, 119, 59, 1, 8693, 114, 101, 118, 101, 59, 1, 785, 101, 102, 116, 4, 3, 82, 84, 86, 1310, 1323, 1334, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 59, 1, 10576, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10590, 101, 99, 116, 111, 114, 4, 2, 59, 66, 1345, 1347, 1, 8637, 97, 114, 59, 1, 10582, 105, 103, 104, 116, 4, 2, 84, 86, 1362, 1373, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10591, 101, 99, 116, 111, 114, 4, 2, 59, 66, 1384, 1386, 1, 8641, 97, 114, 59, 1, 10583, 101, 101, 4, 2, 59, 65, 1399, 1401, 1, 8868, 114, 114, 111, 119, 59, 1, 8615, 114, 114, 111, 119, 59, 1, 8659, 4, 2, 99, 116, 1421, 1426, 114, 59, 3, 55349, 56479, 114, 111, 107, 59, 1, 272, 4, 16, 78, 84, 97, 99, 100, 102, 103, 108, 109, 111, 112, 113, 115, 116, 117, 120, 1466, 1470, 1478, 1489, 1515, 1520, 1525, 1536, 1544, 1593, 1609, 1617, 1650, 1664, 1668, 1677, 71, 59, 1, 330, 72, 5, 208, 1, 59, 1476, 1, 208, 99, 117, 116, 101, 5, 201, 1, 59, 1487, 1, 201, 4, 3, 97, 105, 121, 1497, 1503, 1512, 114, 111, 110, 59, 1, 282, 114, 99, 5, 202, 1, 59, 1510, 1, 202, 59, 1, 1069, 111, 116, 59, 1, 278, 114, 59, 3, 55349, 56584, 114, 97, 118, 101, 5, 200, 1, 59, 1534, 1, 200, 101, 109, 101, 110, 116, 59, 1, 8712, 4, 2, 97, 112, 1550, 1555, 99, 114, 59, 1, 274, 116, 121, 4, 2, 83, 86, 1563, 1576, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 1, 9723, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 1, 9643, 4, 2, 103, 112, 1599, 1604, 111, 110, 59, 1, 280, 102, 59, 3, 55349, 56636, 115, 105, 108, 111, 110, 59, 1, 917, 117, 4, 2, 97, 105, 1624, 1640, 108, 4, 2, 59, 84, 1631, 1633, 1, 10869, 105, 108, 100, 101, 59, 1, 8770, 108, 105, 98, 114, 105, 117, 109, 59, 1, 8652, 4, 2, 99, 105, 1656, 1660, 114, 59, 1, 8496, 109, 59, 1, 10867, 97, 59, 1, 919, 109, 108, 5, 203, 1, 59, 1675, 1, 203, 4, 2, 105, 112, 1683, 1689, 115, 116, 115, 59, 1, 8707, 111, 110, 101, 110, 116, 105, 97, 108, 69, 59, 1, 8519, 4, 5, 99, 102, 105, 111, 115, 1713, 1717, 1722, 1762, 1791, 121, 59, 1, 1060, 114, 59, 3, 55349, 56585, 108, 108, 101, 100, 4, 2, 83, 86, 1732, 1745, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 1, 9724, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 1, 9642, 4, 3, 112, 114, 117, 1770, 1775, 1781, 102, 59, 3, 55349, 56637, 65, 108, 108, 59, 1, 8704, 114, 105, 101, 114, 116, 114, 102, 59, 1, 8497, 99, 114, 59, 1, 8497, 4, 12, 74, 84, 97, 98, 99, 100, 102, 103, 111, 114, 115, 116, 1822, 1827, 1834, 1848, 1855, 1877, 1882, 1887, 1890, 1896, 1978, 1984, 99, 121, 59, 1, 1027, 5, 62, 1, 59, 1832, 1, 62, 109, 109, 97, 4, 2, 59, 100, 1843, 1845, 1, 915, 59, 1, 988, 114, 101, 118, 101, 59, 1, 286, 4, 3, 101, 105, 121, 1863, 1869, 1874, 100, 105, 108, 59, 1, 290, 114, 99, 59, 1, 284, 59, 1, 1043, 111, 116, 59, 1, 288, 114, 59, 3, 55349, 56586, 59, 1, 8921, 112, 102, 59, 3, 55349, 56638, 101, 97, 116, 101, 114, 4, 6, 69, 70, 71, 76, 83, 84, 1915, 1933, 1944, 1953, 1959, 1971, 113, 117, 97, 108, 4, 2, 59, 76, 1925, 1927, 1, 8805, 101, 115, 115, 59, 1, 8923, 117, 108, 108, 69, 113, 117, 97, 108, 59, 1, 8807, 114, 101, 97, 116, 101, 114, 59, 1, 10914, 101, 115, 115, 59, 1, 8823, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 10878, 105, 108, 100, 101, 59, 1, 8819, 99, 114, 59, 3, 55349, 56482, 59, 1, 8811, 4, 8, 65, 97, 99, 102, 105, 111, 115, 117, 2005, 2012, 2026, 2032, 2036, 2049, 2073, 2089, 82, 68, 99, 121, 59, 1, 1066, 4, 2, 99, 116, 2018, 2023, 101, 107, 59, 1, 711, 59, 1, 94, 105, 114, 99, 59, 1, 292, 114, 59, 1, 8460, 108, 98, 101, 114, 116, 83, 112, 97, 99, 101, 59, 1, 8459, 4, 2, 112, 114, 2055, 2059, 102, 59, 1, 8461, 105, 122, 111, 110, 116, 97, 108, 76, 105, 110, 101, 59, 1, 9472, 4, 2, 99, 116, 2079, 2083, 114, 59, 1, 8459, 114, 111, 107, 59, 1, 294, 109, 112, 4, 2, 68, 69, 2097, 2107, 111, 119, 110, 72, 117, 109, 112, 59, 1, 8782, 113, 117, 97, 108, 59, 1, 8783, 4, 14, 69, 74, 79, 97, 99, 100, 102, 103, 109, 110, 111, 115, 116, 117, 2144, 2149, 2155, 2160, 2171, 2189, 2194, 2198, 2209, 2245, 2307, 2329, 2334, 2341, 99, 121, 59, 1, 1045, 108, 105, 103, 59, 1, 306, 99, 121, 59, 1, 1025, 99, 117, 116, 101, 5, 205, 1, 59, 2169, 1, 205, 4, 2, 105, 121, 2177, 2186, 114, 99, 5, 206, 1, 59, 2184, 1, 206, 59, 1, 1048, 111, 116, 59, 1, 304, 114, 59, 1, 8465, 114, 97, 118, 101, 5, 204, 1, 59, 2207, 1, 204, 4, 3, 59, 97, 112, 2217, 2219, 2238, 1, 8465, 4, 2, 99, 103, 2225, 2229, 114, 59, 1, 298, 105, 110, 97, 114, 121, 73, 59, 1, 8520, 108, 105, 101, 115, 59, 1, 8658, 4, 2, 116, 118, 2251, 2281, 4, 2, 59, 101, 2257, 2259, 1, 8748, 4, 2, 103, 114, 2265, 2271, 114, 97, 108, 59, 1, 8747, 115, 101, 99, 116, 105, 111, 110, 59, 1, 8898, 105, 115, 105, 98, 108, 101, 4, 2, 67, 84, 2293, 2300, 111, 109, 109, 97, 59, 1, 8291, 105, 109, 101, 115, 59, 1, 8290, 4, 3, 103, 112, 116, 2315, 2320, 2325, 111, 110, 59, 1, 302, 102, 59, 3, 55349, 56640, 97, 59, 1, 921, 99, 114, 59, 1, 8464, 105, 108, 100, 101, 59, 1, 296, 4, 2, 107, 109, 2347, 2352, 99, 121, 59, 1, 1030, 108, 5, 207, 1, 59, 2358, 1, 207, 4, 5, 99, 102, 111, 115, 117, 2372, 2386, 2391, 2397, 2414, 4, 2, 105, 121, 2378, 2383, 114, 99, 59, 1, 308, 59, 1, 1049, 114, 59, 3, 55349, 56589, 112, 102, 59, 3, 55349, 56641, 4, 2, 99, 101, 2403, 2408, 114, 59, 3, 55349, 56485, 114, 99, 121, 59, 1, 1032, 107, 99, 121, 59, 1, 1028, 4, 7, 72, 74, 97, 99, 102, 111, 115, 2436, 2441, 2446, 2452, 2467, 2472, 2478, 99, 121, 59, 1, 1061, 99, 121, 59, 1, 1036, 112, 112, 97, 59, 1, 922, 4, 2, 101, 121, 2458, 2464, 100, 105, 108, 59, 1, 310, 59, 1, 1050, 114, 59, 3, 55349, 56590, 112, 102, 59, 3, 55349, 56642, 99, 114, 59, 3, 55349, 56486, 4, 11, 74, 84, 97, 99, 101, 102, 108, 109, 111, 115, 116, 2508, 2513, 2520, 2562, 2585, 2981, 2986, 3004, 3011, 3146, 3167, 99, 121, 59, 1, 1033, 5, 60, 1, 59, 2518, 1, 60, 4, 5, 99, 109, 110, 112, 114, 2532, 2538, 2544, 2548, 2558, 117, 116, 101, 59, 1, 313, 98, 100, 97, 59, 1, 923, 103, 59, 1, 10218, 108, 97, 99, 101, 116, 114, 102, 59, 1, 8466, 114, 59, 1, 8606, 4, 3, 97, 101, 121, 2570, 2576, 2582, 114, 111, 110, 59, 1, 317, 100, 105, 108, 59, 1, 315, 59, 1, 1051, 4, 2, 102, 115, 2591, 2907, 116, 4, 10, 65, 67, 68, 70, 82, 84, 85, 86, 97, 114, 2614, 2663, 2672, 2728, 2735, 2760, 2820, 2870, 2888, 2895, 4, 2, 110, 114, 2620, 2633, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 1, 10216, 114, 111, 119, 4, 3, 59, 66, 82, 2644, 2646, 2651, 1, 8592, 97, 114, 59, 1, 8676, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8646, 101, 105, 108, 105, 110, 103, 59, 1, 8968, 111, 4, 2, 117, 119, 2679, 2692, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 1, 10214, 110, 4, 2, 84, 86, 2699, 2710, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10593, 101, 99, 116, 111, 114, 4, 2, 59, 66, 2721, 2723, 1, 8643, 97, 114, 59, 1, 10585, 108, 111, 111, 114, 59, 1, 8970, 105, 103, 104, 116, 4, 2, 65, 86, 2745, 2752, 114, 114, 111, 119, 59, 1, 8596, 101, 99, 116, 111, 114, 59, 1, 10574, 4, 2, 101, 114, 2766, 2792, 101, 4, 3, 59, 65, 86, 2775, 2777, 2784, 1, 8867, 114, 114, 111, 119, 59, 1, 8612, 101, 99, 116, 111, 114, 59, 1, 10586, 105, 97, 110, 103, 108, 101, 4, 3, 59, 66, 69, 2806, 2808, 2813, 1, 8882, 97, 114, 59, 1, 10703, 113, 117, 97, 108, 59, 1, 8884, 112, 4, 3, 68, 84, 86, 2829, 2841, 2852, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 1, 10577, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10592, 101, 99, 116, 111, 114, 4, 2, 59, 66, 2863, 2865, 1, 8639, 97, 114, 59, 1, 10584, 101, 99, 116, 111, 114, 4, 2, 59, 66, 2881, 2883, 1, 8636, 97, 114, 59, 1, 10578, 114, 114, 111, 119, 59, 1, 8656, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8660, 115, 4, 6, 69, 70, 71, 76, 83, 84, 2922, 2936, 2947, 2956, 2962, 2974, 113, 117, 97, 108, 71, 114, 101, 97, 116, 101, 114, 59, 1, 8922, 117, 108, 108, 69, 113, 117, 97, 108, 59, 1, 8806, 114, 101, 97, 116, 101, 114, 59, 1, 8822, 101, 115, 115, 59, 1, 10913, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 10877, 105, 108, 100, 101, 59, 1, 8818, 114, 59, 3, 55349, 56591, 4, 2, 59, 101, 2992, 2994, 1, 8920, 102, 116, 97, 114, 114, 111, 119, 59, 1, 8666, 105, 100, 111, 116, 59, 1, 319, 4, 3, 110, 112, 119, 3019, 3110, 3115, 103, 4, 4, 76, 82, 108, 114, 3030, 3058, 3070, 3098, 101, 102, 116, 4, 2, 65, 82, 3039, 3046, 114, 114, 111, 119, 59, 1, 10229, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 10231, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 10230, 101, 102, 116, 4, 2, 97, 114, 3079, 3086, 114, 114, 111, 119, 59, 1, 10232, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 10234, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 10233, 102, 59, 3, 55349, 56643, 101, 114, 4, 2, 76, 82, 3123, 3134, 101, 102, 116, 65, 114, 114, 111, 119, 59, 1, 8601, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8600, 4, 3, 99, 104, 116, 3154, 3158, 3161, 114, 59, 1, 8466, 59, 1, 8624, 114, 111, 107, 59, 1, 321, 59, 1, 8810, 4, 8, 97, 99, 101, 102, 105, 111, 115, 117, 3188, 3192, 3196, 3222, 3227, 3237, 3243, 3248, 112, 59, 1, 10501, 121, 59, 1, 1052, 4, 2, 100, 108, 3202, 3213, 105, 117, 109, 83, 112, 97, 99, 101, 59, 1, 8287, 108, 105, 110, 116, 114, 102, 59, 1, 8499, 114, 59, 3, 55349, 56592, 110, 117, 115, 80, 108, 117, 115, 59, 1, 8723, 112, 102, 59, 3, 55349, 56644, 99, 114, 59, 1, 8499, 59, 1, 924, 4, 9, 74, 97, 99, 101, 102, 111, 115, 116, 117, 3271, 3276, 3283, 3306, 3422, 3427, 4120, 4126, 4137, 99, 121, 59, 1, 1034, 99, 117, 116, 101, 59, 1, 323, 4, 3, 97, 101, 121, 3291, 3297, 3303, 114, 111, 110, 59, 1, 327, 100, 105, 108, 59, 1, 325, 59, 1, 1053, 4, 3, 103, 115, 119, 3314, 3380, 3415, 97, 116, 105, 118, 101, 4, 3, 77, 84, 86, 3327, 3340, 3365, 101, 100, 105, 117, 109, 83, 112, 97, 99, 101, 59, 1, 8203, 104, 105, 4, 2, 99, 110, 3348, 3357, 107, 83, 112, 97, 99, 101, 59, 1, 8203, 83, 112, 97, 99, 101, 59, 1, 8203, 101, 114, 121, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 1, 8203, 116, 101, 100, 4, 2, 71, 76, 3389, 3405, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 1, 8811, 101, 115, 115, 76, 101, 115, 115, 59, 1, 8810, 76, 105, 110, 101, 59, 1, 10, 114, 59, 3, 55349, 56593, 4, 4, 66, 110, 112, 116, 3437, 3444, 3460, 3464, 114, 101, 97, 107, 59, 1, 8288, 66, 114, 101, 97, 107, 105, 110, 103, 83, 112, 97, 99, 101, 59, 1, 160, 102, 59, 1, 8469, 4, 13, 59, 67, 68, 69, 71, 72, 76, 78, 80, 82, 83, 84, 86, 3492, 3494, 3517, 3536, 3578, 3657, 3685, 3784, 3823, 3860, 3915, 4066, 4107, 1, 10988, 4, 2, 111, 117, 3500, 3510, 110, 103, 114, 117, 101, 110, 116, 59, 1, 8802, 112, 67, 97, 112, 59, 1, 8813, 111, 117, 98, 108, 101, 86, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 1, 8742, 4, 3, 108, 113, 120, 3544, 3552, 3571, 101, 109, 101, 110, 116, 59, 1, 8713, 117, 97, 108, 4, 2, 59, 84, 3561, 3563, 1, 8800, 105, 108, 100, 101, 59, 3, 8770, 824, 105, 115, 116, 115, 59, 1, 8708, 114, 101, 97, 116, 101, 114, 4, 7, 59, 69, 70, 71, 76, 83, 84, 3600, 3602, 3609, 3621, 3631, 3637, 3650, 1, 8815, 113, 117, 97, 108, 59, 1, 8817, 117, 108, 108, 69, 113, 117, 97, 108, 59, 3, 8807, 824, 114, 101, 97, 116, 101, 114, 59, 3, 8811, 824, 101, 115, 115, 59, 1, 8825, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 3, 10878, 824, 105, 108, 100, 101, 59, 1, 8821, 117, 109, 112, 4, 2, 68, 69, 3666, 3677, 111, 119, 110, 72, 117, 109, 112, 59, 3, 8782, 824, 113, 117, 97, 108, 59, 3, 8783, 824, 101, 4, 2, 102, 115, 3692, 3724, 116, 84, 114, 105, 97, 110, 103, 108, 101, 4, 3, 59, 66, 69, 3709, 3711, 3717, 1, 8938, 97, 114, 59, 3, 10703, 824, 113, 117, 97, 108, 59, 1, 8940, 115, 4, 6, 59, 69, 71, 76, 83, 84, 3739, 3741, 3748, 3757, 3764, 3777, 1, 8814, 113, 117, 97, 108, 59, 1, 8816, 114, 101, 97, 116, 101, 114, 59, 1, 8824, 101, 115, 115, 59, 3, 8810, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 3, 10877, 824, 105, 108, 100, 101, 59, 1, 8820, 101, 115, 116, 101, 100, 4, 2, 71, 76, 3795, 3812, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 3, 10914, 824, 101, 115, 115, 76, 101, 115, 115, 59, 3, 10913, 824, 114, 101, 99, 101, 100, 101, 115, 4, 3, 59, 69, 83, 3838, 3840, 3848, 1, 8832, 113, 117, 97, 108, 59, 3, 10927, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 8928, 4, 2, 101, 105, 3866, 3881, 118, 101, 114, 115, 101, 69, 108, 101, 109, 101, 110, 116, 59, 1, 8716, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 4, 3, 59, 66, 69, 3900, 3902, 3908, 1, 8939, 97, 114, 59, 3, 10704, 824, 113, 117, 97, 108, 59, 1, 8941, 4, 2, 113, 117, 3921, 3973, 117, 97, 114, 101, 83, 117, 4, 2, 98, 112, 3933, 3952, 115, 101, 116, 4, 2, 59, 69, 3942, 3945, 3, 8847, 824, 113, 117, 97, 108, 59, 1, 8930, 101, 114, 115, 101, 116, 4, 2, 59, 69, 3963, 3966, 3, 8848, 824, 113, 117, 97, 108, 59, 1, 8931, 4, 3, 98, 99, 112, 3981, 4e3, 4045, 115, 101, 116, 4, 2, 59, 69, 3990, 3993, 3, 8834, 8402, 113, 117, 97, 108, 59, 1, 8840, 99, 101, 101, 100, 115, 4, 4, 59, 69, 83, 84, 4015, 4017, 4025, 4037, 1, 8833, 113, 117, 97, 108, 59, 3, 10928, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 8929, 105, 108, 100, 101, 59, 3, 8831, 824, 101, 114, 115, 101, 116, 4, 2, 59, 69, 4056, 4059, 3, 8835, 8402, 113, 117, 97, 108, 59, 1, 8841, 105, 108, 100, 101, 4, 4, 59, 69, 70, 84, 4080, 4082, 4089, 4100, 1, 8769, 113, 117, 97, 108, 59, 1, 8772, 117, 108, 108, 69, 113, 117, 97, 108, 59, 1, 8775, 105, 108, 100, 101, 59, 1, 8777, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 1, 8740, 99, 114, 59, 3, 55349, 56489, 105, 108, 100, 101, 5, 209, 1, 59, 4135, 1, 209, 59, 1, 925, 4, 14, 69, 97, 99, 100, 102, 103, 109, 111, 112, 114, 115, 116, 117, 118, 4170, 4176, 4187, 4205, 4212, 4217, 4228, 4253, 4259, 4292, 4295, 4316, 4337, 4346, 108, 105, 103, 59, 1, 338, 99, 117, 116, 101, 5, 211, 1, 59, 4185, 1, 211, 4, 2, 105, 121, 4193, 4202, 114, 99, 5, 212, 1, 59, 4200, 1, 212, 59, 1, 1054, 98, 108, 97, 99, 59, 1, 336, 114, 59, 3, 55349, 56594, 114, 97, 118, 101, 5, 210, 1, 59, 4226, 1, 210, 4, 3, 97, 101, 105, 4236, 4241, 4246, 99, 114, 59, 1, 332, 103, 97, 59, 1, 937, 99, 114, 111, 110, 59, 1, 927, 112, 102, 59, 3, 55349, 56646, 101, 110, 67, 117, 114, 108, 121, 4, 2, 68, 81, 4272, 4285, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 1, 8220, 117, 111, 116, 101, 59, 1, 8216, 59, 1, 10836, 4, 2, 99, 108, 4301, 4306, 114, 59, 3, 55349, 56490, 97, 115, 104, 5, 216, 1, 59, 4314, 1, 216, 105, 4, 2, 108, 109, 4323, 4332, 100, 101, 5, 213, 1, 59, 4330, 1, 213, 101, 115, 59, 1, 10807, 109, 108, 5, 214, 1, 59, 4344, 1, 214, 101, 114, 4, 2, 66, 80, 4354, 4380, 4, 2, 97, 114, 4360, 4364, 114, 59, 1, 8254, 97, 99, 4, 2, 101, 107, 4372, 4375, 59, 1, 9182, 101, 116, 59, 1, 9140, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 1, 9180, 4, 9, 97, 99, 102, 104, 105, 108, 111, 114, 115, 4413, 4422, 4426, 4431, 4435, 4438, 4448, 4471, 4561, 114, 116, 105, 97, 108, 68, 59, 1, 8706, 121, 59, 1, 1055, 114, 59, 3, 55349, 56595, 105, 59, 1, 934, 59, 1, 928, 117, 115, 77, 105, 110, 117, 115, 59, 1, 177, 4, 2, 105, 112, 4454, 4467, 110, 99, 97, 114, 101, 112, 108, 97, 110, 101, 59, 1, 8460, 102, 59, 1, 8473, 4, 4, 59, 101, 105, 111, 4481, 4483, 4526, 4531, 1, 10939, 99, 101, 100, 101, 115, 4, 4, 59, 69, 83, 84, 4498, 4500, 4507, 4519, 1, 8826, 113, 117, 97, 108, 59, 1, 10927, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 8828, 105, 108, 100, 101, 59, 1, 8830, 109, 101, 59, 1, 8243, 4, 2, 100, 112, 4537, 4543, 117, 99, 116, 59, 1, 8719, 111, 114, 116, 105, 111, 110, 4, 2, 59, 97, 4555, 4557, 1, 8759, 108, 59, 1, 8733, 4, 2, 99, 105, 4567, 4572, 114, 59, 3, 55349, 56491, 59, 1, 936, 4, 4, 85, 102, 111, 115, 4585, 4594, 4599, 4604, 79, 84, 5, 34, 1, 59, 4592, 1, 34, 114, 59, 3, 55349, 56596, 112, 102, 59, 1, 8474, 99, 114, 59, 3, 55349, 56492, 4, 12, 66, 69, 97, 99, 101, 102, 104, 105, 111, 114, 115, 117, 4636, 4642, 4650, 4681, 4704, 4763, 4767, 4771, 5047, 5069, 5081, 5094, 97, 114, 114, 59, 1, 10512, 71, 5, 174, 1, 59, 4648, 1, 174, 4, 3, 99, 110, 114, 4658, 4664, 4668, 117, 116, 101, 59, 1, 340, 103, 59, 1, 10219, 114, 4, 2, 59, 116, 4675, 4677, 1, 8608, 108, 59, 1, 10518, 4, 3, 97, 101, 121, 4689, 4695, 4701, 114, 111, 110, 59, 1, 344, 100, 105, 108, 59, 1, 342, 59, 1, 1056, 4, 2, 59, 118, 4710, 4712, 1, 8476, 101, 114, 115, 101, 4, 2, 69, 85, 4722, 4748, 4, 2, 108, 113, 4728, 4736, 101, 109, 101, 110, 116, 59, 1, 8715, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 1, 8651, 112, 69, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 1, 10607, 114, 59, 1, 8476, 111, 59, 1, 929, 103, 104, 116, 4, 8, 65, 67, 68, 70, 84, 85, 86, 97, 4792, 4840, 4849, 4905, 4912, 4972, 5022, 5040, 4, 2, 110, 114, 4798, 4811, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 1, 10217, 114, 111, 119, 4, 3, 59, 66, 76, 4822, 4824, 4829, 1, 8594, 97, 114, 59, 1, 8677, 101, 102, 116, 65, 114, 114, 111, 119, 59, 1, 8644, 101, 105, 108, 105, 110, 103, 59, 1, 8969, 111, 4, 2, 117, 119, 4856, 4869, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 1, 10215, 110, 4, 2, 84, 86, 4876, 4887, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10589, 101, 99, 116, 111, 114, 4, 2, 59, 66, 4898, 4900, 1, 8642, 97, 114, 59, 1, 10581, 108, 111, 111, 114, 59, 1, 8971, 4, 2, 101, 114, 4918, 4944, 101, 4, 3, 59, 65, 86, 4927, 4929, 4936, 1, 8866, 114, 114, 111, 119, 59, 1, 8614, 101, 99, 116, 111, 114, 59, 1, 10587, 105, 97, 110, 103, 108, 101, 4, 3, 59, 66, 69, 4958, 4960, 4965, 1, 8883, 97, 114, 59, 1, 10704, 113, 117, 97, 108, 59, 1, 8885, 112, 4, 3, 68, 84, 86, 4981, 4993, 5004, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 1, 10575, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10588, 101, 99, 116, 111, 114, 4, 2, 59, 66, 5015, 5017, 1, 8638, 97, 114, 59, 1, 10580, 101, 99, 116, 111, 114, 4, 2, 59, 66, 5033, 5035, 1, 8640, 97, 114, 59, 1, 10579, 114, 114, 111, 119, 59, 1, 8658, 4, 2, 112, 117, 5053, 5057, 102, 59, 1, 8477, 110, 100, 73, 109, 112, 108, 105, 101, 115, 59, 1, 10608, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8667, 4, 2, 99, 104, 5087, 5091, 114, 59, 1, 8475, 59, 1, 8625, 108, 101, 68, 101, 108, 97, 121, 101, 100, 59, 1, 10740, 4, 13, 72, 79, 97, 99, 102, 104, 105, 109, 111, 113, 115, 116, 117, 5134, 5150, 5157, 5164, 5198, 5203, 5259, 5265, 5277, 5283, 5374, 5380, 5385, 4, 2, 67, 99, 5140, 5146, 72, 99, 121, 59, 1, 1065, 121, 59, 1, 1064, 70, 84, 99, 121, 59, 1, 1068, 99, 117, 116, 101, 59, 1, 346, 4, 5, 59, 97, 101, 105, 121, 5176, 5178, 5184, 5190, 5195, 1, 10940, 114, 111, 110, 59, 1, 352, 100, 105, 108, 59, 1, 350, 114, 99, 59, 1, 348, 59, 1, 1057, 114, 59, 3, 55349, 56598, 111, 114, 116, 4, 4, 68, 76, 82, 85, 5216, 5227, 5238, 5250, 111, 119, 110, 65, 114, 114, 111, 119, 59, 1, 8595, 101, 102, 116, 65, 114, 114, 111, 119, 59, 1, 8592, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8594, 112, 65, 114, 114, 111, 119, 59, 1, 8593, 103, 109, 97, 59, 1, 931, 97, 108, 108, 67, 105, 114, 99, 108, 101, 59, 1, 8728, 112, 102, 59, 3, 55349, 56650, 4, 2, 114, 117, 5289, 5293, 116, 59, 1, 8730, 97, 114, 101, 4, 4, 59, 73, 83, 85, 5306, 5308, 5322, 5367, 1, 9633, 110, 116, 101, 114, 115, 101, 99, 116, 105, 111, 110, 59, 1, 8851, 117, 4, 2, 98, 112, 5329, 5347, 115, 101, 116, 4, 2, 59, 69, 5338, 5340, 1, 8847, 113, 117, 97, 108, 59, 1, 8849, 101, 114, 115, 101, 116, 4, 2, 59, 69, 5358, 5360, 1, 8848, 113, 117, 97, 108, 59, 1, 8850, 110, 105, 111, 110, 59, 1, 8852, 99, 114, 59, 3, 55349, 56494, 97, 114, 59, 1, 8902, 4, 4, 98, 99, 109, 112, 5395, 5420, 5475, 5478, 4, 2, 59, 115, 5401, 5403, 1, 8912, 101, 116, 4, 2, 59, 69, 5411, 5413, 1, 8912, 113, 117, 97, 108, 59, 1, 8838, 4, 2, 99, 104, 5426, 5468, 101, 101, 100, 115, 4, 4, 59, 69, 83, 84, 5440, 5442, 5449, 5461, 1, 8827, 113, 117, 97, 108, 59, 1, 10928, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 8829, 105, 108, 100, 101, 59, 1, 8831, 84, 104, 97, 116, 59, 1, 8715, 59, 1, 8721, 4, 3, 59, 101, 115, 5486, 5488, 5507, 1, 8913, 114, 115, 101, 116, 4, 2, 59, 69, 5498, 5500, 1, 8835, 113, 117, 97, 108, 59, 1, 8839, 101, 116, 59, 1, 8913, 4, 11, 72, 82, 83, 97, 99, 102, 104, 105, 111, 114, 115, 5536, 5546, 5552, 5567, 5579, 5602, 5607, 5655, 5695, 5701, 5711, 79, 82, 78, 5, 222, 1, 59, 5544, 1, 222, 65, 68, 69, 59, 1, 8482, 4, 2, 72, 99, 5558, 5563, 99, 121, 59, 1, 1035, 121, 59, 1, 1062, 4, 2, 98, 117, 5573, 5576, 59, 1, 9, 59, 1, 932, 4, 3, 97, 101, 121, 5587, 5593, 5599, 114, 111, 110, 59, 1, 356, 100, 105, 108, 59, 1, 354, 59, 1, 1058, 114, 59, 3, 55349, 56599, 4, 2, 101, 105, 5613, 5631, 4, 2, 114, 116, 5619, 5627, 101, 102, 111, 114, 101, 59, 1, 8756, 97, 59, 1, 920, 4, 2, 99, 110, 5637, 5647, 107, 83, 112, 97, 99, 101, 59, 3, 8287, 8202, 83, 112, 97, 99, 101, 59, 1, 8201, 108, 100, 101, 4, 4, 59, 69, 70, 84, 5668, 5670, 5677, 5688, 1, 8764, 113, 117, 97, 108, 59, 1, 8771, 117, 108, 108, 69, 113, 117, 97, 108, 59, 1, 8773, 105, 108, 100, 101, 59, 1, 8776, 112, 102, 59, 3, 55349, 56651, 105, 112, 108, 101, 68, 111, 116, 59, 1, 8411, 4, 2, 99, 116, 5717, 5722, 114, 59, 3, 55349, 56495, 114, 111, 107, 59, 1, 358, 4, 14, 97, 98, 99, 100, 102, 103, 109, 110, 111, 112, 114, 115, 116, 117, 5758, 5789, 5805, 5823, 5830, 5835, 5846, 5852, 5921, 5937, 6089, 6095, 6101, 6108, 4, 2, 99, 114, 5764, 5774, 117, 116, 101, 5, 218, 1, 59, 5772, 1, 218, 114, 4, 2, 59, 111, 5781, 5783, 1, 8607, 99, 105, 114, 59, 1, 10569, 114, 4, 2, 99, 101, 5796, 5800, 121, 59, 1, 1038, 118, 101, 59, 1, 364, 4, 2, 105, 121, 5811, 5820, 114, 99, 5, 219, 1, 59, 5818, 1, 219, 59, 1, 1059, 98, 108, 97, 99, 59, 1, 368, 114, 59, 3, 55349, 56600, 114, 97, 118, 101, 5, 217, 1, 59, 5844, 1, 217, 97, 99, 114, 59, 1, 362, 4, 2, 100, 105, 5858, 5905, 101, 114, 4, 2, 66, 80, 5866, 5892, 4, 2, 97, 114, 5872, 5876, 114, 59, 1, 95, 97, 99, 4, 2, 101, 107, 5884, 5887, 59, 1, 9183, 101, 116, 59, 1, 9141, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 1, 9181, 111, 110, 4, 2, 59, 80, 5913, 5915, 1, 8899, 108, 117, 115, 59, 1, 8846, 4, 2, 103, 112, 5927, 5932, 111, 110, 59, 1, 370, 102, 59, 3, 55349, 56652, 4, 8, 65, 68, 69, 84, 97, 100, 112, 115, 5955, 5985, 5996, 6009, 6026, 6033, 6044, 6075, 114, 114, 111, 119, 4, 3, 59, 66, 68, 5967, 5969, 5974, 1, 8593, 97, 114, 59, 1, 10514, 111, 119, 110, 65, 114, 114, 111, 119, 59, 1, 8645, 111, 119, 110, 65, 114, 114, 111, 119, 59, 1, 8597, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 1, 10606, 101, 101, 4, 2, 59, 65, 6017, 6019, 1, 8869, 114, 114, 111, 119, 59, 1, 8613, 114, 114, 111, 119, 59, 1, 8657, 111, 119, 110, 97, 114, 114, 111, 119, 59, 1, 8661, 101, 114, 4, 2, 76, 82, 6052, 6063, 101, 102, 116, 65, 114, 114, 111, 119, 59, 1, 8598, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8599, 105, 4, 2, 59, 108, 6082, 6084, 1, 978, 111, 110, 59, 1, 933, 105, 110, 103, 59, 1, 366, 99, 114, 59, 3, 55349, 56496, 105, 108, 100, 101, 59, 1, 360, 109, 108, 5, 220, 1, 59, 6115, 1, 220, 4, 9, 68, 98, 99, 100, 101, 102, 111, 115, 118, 6137, 6143, 6148, 6152, 6166, 6250, 6255, 6261, 6267, 97, 115, 104, 59, 1, 8875, 97, 114, 59, 1, 10987, 121, 59, 1, 1042, 97, 115, 104, 4, 2, 59, 108, 6161, 6163, 1, 8873, 59, 1, 10982, 4, 2, 101, 114, 6172, 6175, 59, 1, 8897, 4, 3, 98, 116, 121, 6183, 6188, 6238, 97, 114, 59, 1, 8214, 4, 2, 59, 105, 6194, 6196, 1, 8214, 99, 97, 108, 4, 4, 66, 76, 83, 84, 6209, 6214, 6220, 6231, 97, 114, 59, 1, 8739, 105, 110, 101, 59, 1, 124, 101, 112, 97, 114, 97, 116, 111, 114, 59, 1, 10072, 105, 108, 100, 101, 59, 1, 8768, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 1, 8202, 114, 59, 3, 55349, 56601, 112, 102, 59, 3, 55349, 56653, 99, 114, 59, 3, 55349, 56497, 100, 97, 115, 104, 59, 1, 8874, 4, 5, 99, 101, 102, 111, 115, 6286, 6292, 6298, 6303, 6309, 105, 114, 99, 59, 1, 372, 100, 103, 101, 59, 1, 8896, 114, 59, 3, 55349, 56602, 112, 102, 59, 3, 55349, 56654, 99, 114, 59, 3, 55349, 56498, 4, 4, 102, 105, 111, 115, 6325, 6330, 6333, 6339, 114, 59, 3, 55349, 56603, 59, 1, 926, 112, 102, 59, 3, 55349, 56655, 99, 114, 59, 3, 55349, 56499, 4, 9, 65, 73, 85, 97, 99, 102, 111, 115, 117, 6365, 6370, 6375, 6380, 6391, 6405, 6410, 6416, 6422, 99, 121, 59, 1, 1071, 99, 121, 59, 1, 1031, 99, 121, 59, 1, 1070, 99, 117, 116, 101, 5, 221, 1, 59, 6389, 1, 221, 4, 2, 105, 121, 6397, 6402, 114, 99, 59, 1, 374, 59, 1, 1067, 114, 59, 3, 55349, 56604, 112, 102, 59, 3, 55349, 56656, 99, 114, 59, 3, 55349, 56500, 109, 108, 59, 1, 376, 4, 8, 72, 97, 99, 100, 101, 102, 111, 115, 6445, 6450, 6457, 6472, 6477, 6501, 6505, 6510, 99, 121, 59, 1, 1046, 99, 117, 116, 101, 59, 1, 377, 4, 2, 97, 121, 6463, 6469, 114, 111, 110, 59, 1, 381, 59, 1, 1047, 111, 116, 59, 1, 379, 4, 2, 114, 116, 6483, 6497, 111, 87, 105, 100, 116, 104, 83, 112, 97, 99, 101, 59, 1, 8203, 97, 59, 1, 918, 114, 59, 1, 8488, 112, 102, 59, 1, 8484, 99, 114, 59, 3, 55349, 56501, 4, 16, 97, 98, 99, 101, 102, 103, 108, 109, 110, 111, 112, 114, 115, 116, 117, 119, 6550, 6561, 6568, 6612, 6622, 6634, 6645, 6672, 6699, 6854, 6870, 6923, 6933, 6963, 6974, 6983, 99, 117, 116, 101, 5, 225, 1, 59, 6559, 1, 225, 114, 101, 118, 101, 59, 1, 259, 4, 6, 59, 69, 100, 105, 117, 121, 6582, 6584, 6588, 6591, 6600, 6609, 1, 8766, 59, 3, 8766, 819, 59, 1, 8767, 114, 99, 5, 226, 1, 59, 6598, 1, 226, 116, 101, 5, 180, 1, 59, 6607, 1, 180, 59, 1, 1072, 108, 105, 103, 5, 230, 1, 59, 6620, 1, 230, 4, 2, 59, 114, 6628, 6630, 1, 8289, 59, 3, 55349, 56606, 114, 97, 118, 101, 5, 224, 1, 59, 6643, 1, 224, 4, 2, 101, 112, 6651, 6667, 4, 2, 102, 112, 6657, 6663, 115, 121, 109, 59, 1, 8501, 104, 59, 1, 8501, 104, 97, 59, 1, 945, 4, 2, 97, 112, 6678, 6692, 4, 2, 99, 108, 6684, 6688, 114, 59, 1, 257, 103, 59, 1, 10815, 5, 38, 1, 59, 6697, 1, 38, 4, 2, 100, 103, 6705, 6737, 4, 5, 59, 97, 100, 115, 118, 6717, 6719, 6724, 6727, 6734, 1, 8743, 110, 100, 59, 1, 10837, 59, 1, 10844, 108, 111, 112, 101, 59, 1, 10840, 59, 1, 10842, 4, 7, 59, 101, 108, 109, 114, 115, 122, 6753, 6755, 6758, 6762, 6814, 6835, 6848, 1, 8736, 59, 1, 10660, 101, 59, 1, 8736, 115, 100, 4, 2, 59, 97, 6770, 6772, 1, 8737, 4, 8, 97, 98, 99, 100, 101, 102, 103, 104, 6790, 6793, 6796, 6799, 6802, 6805, 6808, 6811, 59, 1, 10664, 59, 1, 10665, 59, 1, 10666, 59, 1, 10667, 59, 1, 10668, 59, 1, 10669, 59, 1, 10670, 59, 1, 10671, 116, 4, 2, 59, 118, 6821, 6823, 1, 8735, 98, 4, 2, 59, 100, 6830, 6832, 1, 8894, 59, 1, 10653, 4, 2, 112, 116, 6841, 6845, 104, 59, 1, 8738, 59, 1, 197, 97, 114, 114, 59, 1, 9084, 4, 2, 103, 112, 6860, 6865, 111, 110, 59, 1, 261, 102, 59, 3, 55349, 56658, 4, 7, 59, 69, 97, 101, 105, 111, 112, 6886, 6888, 6891, 6897, 6900, 6904, 6908, 1, 8776, 59, 1, 10864, 99, 105, 114, 59, 1, 10863, 59, 1, 8778, 100, 59, 1, 8779, 115, 59, 1, 39, 114, 111, 120, 4, 2, 59, 101, 6917, 6919, 1, 8776, 113, 59, 1, 8778, 105, 110, 103, 5, 229, 1, 59, 6931, 1, 229, 4, 3, 99, 116, 121, 6941, 6946, 6949, 114, 59, 3, 55349, 56502, 59, 1, 42, 109, 112, 4, 2, 59, 101, 6957, 6959, 1, 8776, 113, 59, 1, 8781, 105, 108, 100, 101, 5, 227, 1, 59, 6972, 1, 227, 109, 108, 5, 228, 1, 59, 6981, 1, 228, 4, 2, 99, 105, 6989, 6997, 111, 110, 105, 110, 116, 59, 1, 8755, 110, 116, 59, 1, 10769, 4, 16, 78, 97, 98, 99, 100, 101, 102, 105, 107, 108, 110, 111, 112, 114, 115, 117, 7036, 7041, 7119, 7135, 7149, 7155, 7219, 7224, 7347, 7354, 7463, 7489, 7786, 7793, 7814, 7866, 111, 116, 59, 1, 10989, 4, 2, 99, 114, 7047, 7094, 107, 4, 4, 99, 101, 112, 115, 7058, 7064, 7073, 7080, 111, 110, 103, 59, 1, 8780, 112, 115, 105, 108, 111, 110, 59, 1, 1014, 114, 105, 109, 101, 59, 1, 8245, 105, 109, 4, 2, 59, 101, 7088, 7090, 1, 8765, 113, 59, 1, 8909, 4, 2, 118, 119, 7100, 7105, 101, 101, 59, 1, 8893, 101, 100, 4, 2, 59, 103, 7113, 7115, 1, 8965, 101, 59, 1, 8965, 114, 107, 4, 2, 59, 116, 7127, 7129, 1, 9141, 98, 114, 107, 59, 1, 9142, 4, 2, 111, 121, 7141, 7146, 110, 103, 59, 1, 8780, 59, 1, 1073, 113, 117, 111, 59, 1, 8222, 4, 5, 99, 109, 112, 114, 116, 7167, 7181, 7188, 7193, 7199, 97, 117, 115, 4, 2, 59, 101, 7176, 7178, 1, 8757, 59, 1, 8757, 112, 116, 121, 118, 59, 1, 10672, 115, 105, 59, 1, 1014, 110, 111, 117, 59, 1, 8492, 4, 3, 97, 104, 119, 7207, 7210, 7213, 59, 1, 946, 59, 1, 8502, 101, 101, 110, 59, 1, 8812, 114, 59, 3, 55349, 56607, 103, 4, 7, 99, 111, 115, 116, 117, 118, 119, 7241, 7262, 7288, 7305, 7328, 7335, 7340, 4, 3, 97, 105, 117, 7249, 7253, 7258, 112, 59, 1, 8898, 114, 99, 59, 1, 9711, 112, 59, 1, 8899, 4, 3, 100, 112, 116, 7270, 7275, 7281, 111, 116, 59, 1, 10752, 108, 117, 115, 59, 1, 10753, 105, 109, 101, 115, 59, 1, 10754, 4, 2, 113, 116, 7294, 7300, 99, 117, 112, 59, 1, 10758, 97, 114, 59, 1, 9733, 114, 105, 97, 110, 103, 108, 101, 4, 2, 100, 117, 7318, 7324, 111, 119, 110, 59, 1, 9661, 112, 59, 1, 9651, 112, 108, 117, 115, 59, 1, 10756, 101, 101, 59, 1, 8897, 101, 100, 103, 101, 59, 1, 8896, 97, 114, 111, 119, 59, 1, 10509, 4, 3, 97, 107, 111, 7362, 7436, 7458, 4, 2, 99, 110, 7368, 7432, 107, 4, 3, 108, 115, 116, 7377, 7386, 7394, 111, 122, 101, 110, 103, 101, 59, 1, 10731, 113, 117, 97, 114, 101, 59, 1, 9642, 114, 105, 97, 110, 103, 108, 101, 4, 4, 59, 100, 108, 114, 7411, 7413, 7419, 7425, 1, 9652, 111, 119, 110, 59, 1, 9662, 101, 102, 116, 59, 1, 9666, 105, 103, 104, 116, 59, 1, 9656, 107, 59, 1, 9251, 4, 2, 49, 51, 7442, 7454, 4, 2, 50, 52, 7448, 7451, 59, 1, 9618, 59, 1, 9617, 52, 59, 1, 9619, 99, 107, 59, 1, 9608, 4, 2, 101, 111, 7469, 7485, 4, 2, 59, 113, 7475, 7478, 3, 61, 8421, 117, 105, 118, 59, 3, 8801, 8421, 116, 59, 1, 8976, 4, 4, 112, 116, 119, 120, 7499, 7504, 7517, 7523, 102, 59, 3, 55349, 56659, 4, 2, 59, 116, 7510, 7512, 1, 8869, 111, 109, 59, 1, 8869, 116, 105, 101, 59, 1, 8904, 4, 12, 68, 72, 85, 86, 98, 100, 104, 109, 112, 116, 117, 118, 7549, 7571, 7597, 7619, 7655, 7660, 7682, 7708, 7715, 7721, 7728, 7750, 4, 4, 76, 82, 108, 114, 7559, 7562, 7565, 7568, 59, 1, 9559, 59, 1, 9556, 59, 1, 9558, 59, 1, 9555, 4, 5, 59, 68, 85, 100, 117, 7583, 7585, 7588, 7591, 7594, 1, 9552, 59, 1, 9574, 59, 1, 9577, 59, 1, 9572, 59, 1, 9575, 4, 4, 76, 82, 108, 114, 7607, 7610, 7613, 7616, 59, 1, 9565, 59, 1, 9562, 59, 1, 9564, 59, 1, 9561, 4, 7, 59, 72, 76, 82, 104, 108, 114, 7635, 7637, 7640, 7643, 7646, 7649, 7652, 1, 9553, 59, 1, 9580, 59, 1, 9571, 59, 1, 9568, 59, 1, 9579, 59, 1, 9570, 59, 1, 9567, 111, 120, 59, 1, 10697, 4, 4, 76, 82, 108, 114, 7670, 7673, 7676, 7679, 59, 1, 9557, 59, 1, 9554, 59, 1, 9488, 59, 1, 9484, 4, 5, 59, 68, 85, 100, 117, 7694, 7696, 7699, 7702, 7705, 1, 9472, 59, 1, 9573, 59, 1, 9576, 59, 1, 9516, 59, 1, 9524, 105, 110, 117, 115, 59, 1, 8863, 108, 117, 115, 59, 1, 8862, 105, 109, 101, 115, 59, 1, 8864, 4, 4, 76, 82, 108, 114, 7738, 7741, 7744, 7747, 59, 1, 9563, 59, 1, 9560, 59, 1, 9496, 59, 1, 9492, 4, 7, 59, 72, 76, 82, 104, 108, 114, 7766, 7768, 7771, 7774, 7777, 7780, 7783, 1, 9474, 59, 1, 9578, 59, 1, 9569, 59, 1, 9566, 59, 1, 9532, 59, 1, 9508, 59, 1, 9500, 114, 105, 109, 101, 59, 1, 8245, 4, 2, 101, 118, 7799, 7804, 118, 101, 59, 1, 728, 98, 97, 114, 5, 166, 1, 59, 7812, 1, 166, 4, 4, 99, 101, 105, 111, 7824, 7829, 7834, 7846, 114, 59, 3, 55349, 56503, 109, 105, 59, 1, 8271, 109, 4, 2, 59, 101, 7841, 7843, 1, 8765, 59, 1, 8909, 108, 4, 3, 59, 98, 104, 7855, 7857, 7860, 1, 92, 59, 1, 10693, 115, 117, 98, 59, 1, 10184, 4, 2, 108, 109, 7872, 7885, 108, 4, 2, 59, 101, 7879, 7881, 1, 8226, 116, 59, 1, 8226, 112, 4, 3, 59, 69, 101, 7894, 7896, 7899, 1, 8782, 59, 1, 10926, 4, 2, 59, 113, 7905, 7907, 1, 8783, 59, 1, 8783, 4, 15, 97, 99, 100, 101, 102, 104, 105, 108, 111, 114, 115, 116, 117, 119, 121, 7942, 8021, 8075, 8080, 8121, 8126, 8157, 8279, 8295, 8430, 8446, 8485, 8491, 8707, 8726, 4, 3, 99, 112, 114, 7950, 7956, 8007, 117, 116, 101, 59, 1, 263, 4, 6, 59, 97, 98, 99, 100, 115, 7970, 7972, 7977, 7984, 7998, 8003, 1, 8745, 110, 100, 59, 1, 10820, 114, 99, 117, 112, 59, 1, 10825, 4, 2, 97, 117, 7990, 7994, 112, 59, 1, 10827, 112, 59, 1, 10823, 111, 116, 59, 1, 10816, 59, 3, 8745, 65024, 4, 2, 101, 111, 8013, 8017, 116, 59, 1, 8257, 110, 59, 1, 711, 4, 4, 97, 101, 105, 117, 8031, 8046, 8056, 8061, 4, 2, 112, 114, 8037, 8041, 115, 59, 1, 10829, 111, 110, 59, 1, 269, 100, 105, 108, 5, 231, 1, 59, 8054, 1, 231, 114, 99, 59, 1, 265, 112, 115, 4, 2, 59, 115, 8069, 8071, 1, 10828, 109, 59, 1, 10832, 111, 116, 59, 1, 267, 4, 3, 100, 109, 110, 8088, 8097, 8104, 105, 108, 5, 184, 1, 59, 8095, 1, 184, 112, 116, 121, 118, 59, 1, 10674, 116, 5, 162, 2, 59, 101, 8112, 8114, 1, 162, 114, 100, 111, 116, 59, 1, 183, 114, 59, 3, 55349, 56608, 4, 3, 99, 101, 105, 8134, 8138, 8154, 121, 59, 1, 1095, 99, 107, 4, 2, 59, 109, 8146, 8148, 1, 10003, 97, 114, 107, 59, 1, 10003, 59, 1, 967, 114, 4, 7, 59, 69, 99, 101, 102, 109, 115, 8174, 8176, 8179, 8258, 8261, 8268, 8273, 1, 9675, 59, 1, 10691, 4, 3, 59, 101, 108, 8187, 8189, 8193, 1, 710, 113, 59, 1, 8791, 101, 4, 2, 97, 100, 8200, 8223, 114, 114, 111, 119, 4, 2, 108, 114, 8210, 8216, 101, 102, 116, 59, 1, 8634, 105, 103, 104, 116, 59, 1, 8635, 4, 5, 82, 83, 97, 99, 100, 8235, 8238, 8241, 8246, 8252, 59, 1, 174, 59, 1, 9416, 115, 116, 59, 1, 8859, 105, 114, 99, 59, 1, 8858, 97, 115, 104, 59, 1, 8861, 59, 1, 8791, 110, 105, 110, 116, 59, 1, 10768, 105, 100, 59, 1, 10991, 99, 105, 114, 59, 1, 10690, 117, 98, 115, 4, 2, 59, 117, 8288, 8290, 1, 9827, 105, 116, 59, 1, 9827, 4, 4, 108, 109, 110, 112, 8305, 8326, 8376, 8400, 111, 110, 4, 2, 59, 101, 8313, 8315, 1, 58, 4, 2, 59, 113, 8321, 8323, 1, 8788, 59, 1, 8788, 4, 2, 109, 112, 8332, 8344, 97, 4, 2, 59, 116, 8339, 8341, 1, 44, 59, 1, 64, 4, 3, 59, 102, 108, 8352, 8354, 8358, 1, 8705, 110, 59, 1, 8728, 101, 4, 2, 109, 120, 8365, 8371, 101, 110, 116, 59, 1, 8705, 101, 115, 59, 1, 8450, 4, 2, 103, 105, 8382, 8395, 4, 2, 59, 100, 8388, 8390, 1, 8773, 111, 116, 59, 1, 10861, 110, 116, 59, 1, 8750, 4, 3, 102, 114, 121, 8408, 8412, 8417, 59, 3, 55349, 56660, 111, 100, 59, 1, 8720, 5, 169, 2, 59, 115, 8424, 8426, 1, 169, 114, 59, 1, 8471, 4, 2, 97, 111, 8436, 8441, 114, 114, 59, 1, 8629, 115, 115, 59, 1, 10007, 4, 2, 99, 117, 8452, 8457, 114, 59, 3, 55349, 56504, 4, 2, 98, 112, 8463, 8474, 4, 2, 59, 101, 8469, 8471, 1, 10959, 59, 1, 10961, 4, 2, 59, 101, 8480, 8482, 1, 10960, 59, 1, 10962, 100, 111, 116, 59, 1, 8943, 4, 7, 100, 101, 108, 112, 114, 118, 119, 8507, 8522, 8536, 8550, 8600, 8697, 8702, 97, 114, 114, 4, 2, 108, 114, 8516, 8519, 59, 1, 10552, 59, 1, 10549, 4, 2, 112, 115, 8528, 8532, 114, 59, 1, 8926, 99, 59, 1, 8927, 97, 114, 114, 4, 2, 59, 112, 8545, 8547, 1, 8630, 59, 1, 10557, 4, 6, 59, 98, 99, 100, 111, 115, 8564, 8566, 8573, 8587, 8592, 8596, 1, 8746, 114, 99, 97, 112, 59, 1, 10824, 4, 2, 97, 117, 8579, 8583, 112, 59, 1, 10822, 112, 59, 1, 10826, 111, 116, 59, 1, 8845, 114, 59, 1, 10821, 59, 3, 8746, 65024, 4, 4, 97, 108, 114, 118, 8610, 8623, 8663, 8672, 114, 114, 4, 2, 59, 109, 8618, 8620, 1, 8631, 59, 1, 10556, 121, 4, 3, 101, 118, 119, 8632, 8651, 8656, 113, 4, 2, 112, 115, 8639, 8645, 114, 101, 99, 59, 1, 8926, 117, 99, 99, 59, 1, 8927, 101, 101, 59, 1, 8910, 101, 100, 103, 101, 59, 1, 8911, 101, 110, 5, 164, 1, 59, 8670, 1, 164, 101, 97, 114, 114, 111, 119, 4, 2, 108, 114, 8684, 8690, 101, 102, 116, 59, 1, 8630, 105, 103, 104, 116, 59, 1, 8631, 101, 101, 59, 1, 8910, 101, 100, 59, 1, 8911, 4, 2, 99, 105, 8713, 8721, 111, 110, 105, 110, 116, 59, 1, 8754, 110, 116, 59, 1, 8753, 108, 99, 116, 121, 59, 1, 9005, 4, 19, 65, 72, 97, 98, 99, 100, 101, 102, 104, 105, 106, 108, 111, 114, 115, 116, 117, 119, 122, 8773, 8778, 8783, 8821, 8839, 8854, 8887, 8914, 8930, 8944, 9036, 9041, 9058, 9197, 9227, 9258, 9281, 9297, 9305, 114, 114, 59, 1, 8659, 97, 114, 59, 1, 10597, 4, 4, 103, 108, 114, 115, 8793, 8799, 8805, 8809, 103, 101, 114, 59, 1, 8224, 101, 116, 104, 59, 1, 8504, 114, 59, 1, 8595, 104, 4, 2, 59, 118, 8816, 8818, 1, 8208, 59, 1, 8867, 4, 2, 107, 108, 8827, 8834, 97, 114, 111, 119, 59, 1, 10511, 97, 99, 59, 1, 733, 4, 2, 97, 121, 8845, 8851, 114, 111, 110, 59, 1, 271, 59, 1, 1076, 4, 3, 59, 97, 111, 8862, 8864, 8880, 1, 8518, 4, 2, 103, 114, 8870, 8876, 103, 101, 114, 59, 1, 8225, 114, 59, 1, 8650, 116, 115, 101, 113, 59, 1, 10871, 4, 3, 103, 108, 109, 8895, 8902, 8907, 5, 176, 1, 59, 8900, 1, 176, 116, 97, 59, 1, 948, 112, 116, 121, 118, 59, 1, 10673, 4, 2, 105, 114, 8920, 8926, 115, 104, 116, 59, 1, 10623, 59, 3, 55349, 56609, 97, 114, 4, 2, 108, 114, 8938, 8941, 59, 1, 8643, 59, 1, 8642, 4, 5, 97, 101, 103, 115, 118, 8956, 8986, 8989, 8996, 9001, 109, 4, 3, 59, 111, 115, 8965, 8967, 8983, 1, 8900, 110, 100, 4, 2, 59, 115, 8975, 8977, 1, 8900, 117, 105, 116, 59, 1, 9830, 59, 1, 9830, 59, 1, 168, 97, 109, 109, 97, 59, 1, 989, 105, 110, 59, 1, 8946, 4, 3, 59, 105, 111, 9009, 9011, 9031, 1, 247, 100, 101, 5, 247, 2, 59, 111, 9020, 9022, 1, 247, 110, 116, 105, 109, 101, 115, 59, 1, 8903, 110, 120, 59, 1, 8903, 99, 121, 59, 1, 1106, 99, 4, 2, 111, 114, 9048, 9053, 114, 110, 59, 1, 8990, 111, 112, 59, 1, 8973, 4, 5, 108, 112, 116, 117, 119, 9070, 9076, 9081, 9130, 9144, 108, 97, 114, 59, 1, 36, 102, 59, 3, 55349, 56661, 4, 5, 59, 101, 109, 112, 115, 9093, 9095, 9109, 9116, 9122, 1, 729, 113, 4, 2, 59, 100, 9102, 9104, 1, 8784, 111, 116, 59, 1, 8785, 105, 110, 117, 115, 59, 1, 8760, 108, 117, 115, 59, 1, 8724, 113, 117, 97, 114, 101, 59, 1, 8865, 98, 108, 101, 98, 97, 114, 119, 101, 100, 103, 101, 59, 1, 8966, 110, 4, 3, 97, 100, 104, 9153, 9160, 9172, 114, 114, 111, 119, 59, 1, 8595, 111, 119, 110, 97, 114, 114, 111, 119, 115, 59, 1, 8650, 97, 114, 112, 111, 111, 110, 4, 2, 108, 114, 9184, 9190, 101, 102, 116, 59, 1, 8643, 105, 103, 104, 116, 59, 1, 8642, 4, 2, 98, 99, 9203, 9211, 107, 97, 114, 111, 119, 59, 1, 10512, 4, 2, 111, 114, 9217, 9222, 114, 110, 59, 1, 8991, 111, 112, 59, 1, 8972, 4, 3, 99, 111, 116, 9235, 9248, 9252, 4, 2, 114, 121, 9241, 9245, 59, 3, 55349, 56505, 59, 1, 1109, 108, 59, 1, 10742, 114, 111, 107, 59, 1, 273, 4, 2, 100, 114, 9264, 9269, 111, 116, 59, 1, 8945, 105, 4, 2, 59, 102, 9276, 9278, 1, 9663, 59, 1, 9662, 4, 2, 97, 104, 9287, 9292, 114, 114, 59, 1, 8693, 97, 114, 59, 1, 10607, 97, 110, 103, 108, 101, 59, 1, 10662, 4, 2, 99, 105, 9311, 9315, 121, 59, 1, 1119, 103, 114, 97, 114, 114, 59, 1, 10239, 4, 18, 68, 97, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 120, 9361, 9376, 9398, 9439, 9444, 9447, 9462, 9495, 9531, 9585, 9598, 9614, 9659, 9755, 9771, 9792, 9808, 9826, 4, 2, 68, 111, 9367, 9372, 111, 116, 59, 1, 10871, 116, 59, 1, 8785, 4, 2, 99, 115, 9382, 9392, 117, 116, 101, 5, 233, 1, 59, 9390, 1, 233, 116, 101, 114, 59, 1, 10862, 4, 4, 97, 105, 111, 121, 9408, 9414, 9430, 9436, 114, 111, 110, 59, 1, 283, 114, 4, 2, 59, 99, 9421, 9423, 1, 8790, 5, 234, 1, 59, 9428, 1, 234, 108, 111, 110, 59, 1, 8789, 59, 1, 1101, 111, 116, 59, 1, 279, 59, 1, 8519, 4, 2, 68, 114, 9453, 9458, 111, 116, 59, 1, 8786, 59, 3, 55349, 56610, 4, 3, 59, 114, 115, 9470, 9472, 9482, 1, 10906, 97, 118, 101, 5, 232, 1, 59, 9480, 1, 232, 4, 2, 59, 100, 9488, 9490, 1, 10902, 111, 116, 59, 1, 10904, 4, 4, 59, 105, 108, 115, 9505, 9507, 9515, 9518, 1, 10905, 110, 116, 101, 114, 115, 59, 1, 9191, 59, 1, 8467, 4, 2, 59, 100, 9524, 9526, 1, 10901, 111, 116, 59, 1, 10903, 4, 3, 97, 112, 115, 9539, 9544, 9564, 99, 114, 59, 1, 275, 116, 121, 4, 3, 59, 115, 118, 9554, 9556, 9561, 1, 8709, 101, 116, 59, 1, 8709, 59, 1, 8709, 112, 4, 2, 49, 59, 9571, 9583, 4, 2, 51, 52, 9577, 9580, 59, 1, 8196, 59, 1, 8197, 1, 8195, 4, 2, 103, 115, 9591, 9594, 59, 1, 331, 112, 59, 1, 8194, 4, 2, 103, 112, 9604, 9609, 111, 110, 59, 1, 281, 102, 59, 3, 55349, 56662, 4, 3, 97, 108, 115, 9622, 9635, 9640, 114, 4, 2, 59, 115, 9629, 9631, 1, 8917, 108, 59, 1, 10723, 117, 115, 59, 1, 10865, 105, 4, 3, 59, 108, 118, 9649, 9651, 9656, 1, 949, 111, 110, 59, 1, 949, 59, 1, 1013, 4, 4, 99, 115, 117, 118, 9669, 9686, 9716, 9747, 4, 2, 105, 111, 9675, 9680, 114, 99, 59, 1, 8790, 108, 111, 110, 59, 1, 8789, 4, 2, 105, 108, 9692, 9696, 109, 59, 1, 8770, 97, 110, 116, 4, 2, 103, 108, 9705, 9710, 116, 114, 59, 1, 10902, 101, 115, 115, 59, 1, 10901, 4, 3, 97, 101, 105, 9724, 9729, 9734, 108, 115, 59, 1, 61, 115, 116, 59, 1, 8799, 118, 4, 2, 59, 68, 9741, 9743, 1, 8801, 68, 59, 1, 10872, 112, 97, 114, 115, 108, 59, 1, 10725, 4, 2, 68, 97, 9761, 9766, 111, 116, 59, 1, 8787, 114, 114, 59, 1, 10609, 4, 3, 99, 100, 105, 9779, 9783, 9788, 114, 59, 1, 8495, 111, 116, 59, 1, 8784, 109, 59, 1, 8770, 4, 2, 97, 104, 9798, 9801, 59, 1, 951, 5, 240, 1, 59, 9806, 1, 240, 4, 2, 109, 114, 9814, 9822, 108, 5, 235, 1, 59, 9820, 1, 235, 111, 59, 1, 8364, 4, 3, 99, 105, 112, 9834, 9838, 9843, 108, 59, 1, 33, 115, 116, 59, 1, 8707, 4, 2, 101, 111, 9849, 9859, 99, 116, 97, 116, 105, 111, 110, 59, 1, 8496, 110, 101, 110, 116, 105, 97, 108, 101, 59, 1, 8519, 4, 12, 97, 99, 101, 102, 105, 106, 108, 110, 111, 112, 114, 115, 9896, 9910, 9914, 9921, 9954, 9960, 9967, 9989, 9994, 10027, 10036, 10164, 108, 108, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 1, 8786, 121, 59, 1, 1092, 109, 97, 108, 101, 59, 1, 9792, 4, 3, 105, 108, 114, 9929, 9935, 9950, 108, 105, 103, 59, 1, 64259, 4, 2, 105, 108, 9941, 9945, 103, 59, 1, 64256, 105, 103, 59, 1, 64260, 59, 3, 55349, 56611, 108, 105, 103, 59, 1, 64257, 108, 105, 103, 59, 3, 102, 106, 4, 3, 97, 108, 116, 9975, 9979, 9984, 116, 59, 1, 9837, 105, 103, 59, 1, 64258, 110, 115, 59, 1, 9649, 111, 102, 59, 1, 402, 4, 2, 112, 114, 1e4, 10005, 102, 59, 3, 55349, 56663, 4, 2, 97, 107, 10011, 10016, 108, 108, 59, 1, 8704, 4, 2, 59, 118, 10022, 10024, 1, 8916, 59, 1, 10969, 97, 114, 116, 105, 110, 116, 59, 1, 10765, 4, 2, 97, 111, 10042, 10159, 4, 2, 99, 115, 10048, 10155, 4, 6, 49, 50, 51, 52, 53, 55, 10062, 10102, 10114, 10135, 10139, 10151, 4, 6, 50, 51, 52, 53, 54, 56, 10076, 10083, 10086, 10093, 10096, 10099, 5, 189, 1, 59, 10081, 1, 189, 59, 1, 8531, 5, 188, 1, 59, 10091, 1, 188, 59, 1, 8533, 59, 1, 8537, 59, 1, 8539, 4, 2, 51, 53, 10108, 10111, 59, 1, 8532, 59, 1, 8534, 4, 3, 52, 53, 56, 10122, 10129, 10132, 5, 190, 1, 59, 10127, 1, 190, 59, 1, 8535, 59, 1, 8540, 53, 59, 1, 8536, 4, 2, 54, 56, 10145, 10148, 59, 1, 8538, 59, 1, 8541, 56, 59, 1, 8542, 108, 59, 1, 8260, 119, 110, 59, 1, 8994, 99, 114, 59, 3, 55349, 56507, 4, 17, 69, 97, 98, 99, 100, 101, 102, 103, 105, 106, 108, 110, 111, 114, 115, 116, 118, 10206, 10217, 10247, 10254, 10268, 10273, 10358, 10363, 10374, 10380, 10385, 10406, 10458, 10464, 10470, 10497, 10610, 4, 2, 59, 108, 10212, 10214, 1, 8807, 59, 1, 10892, 4, 3, 99, 109, 112, 10225, 10231, 10244, 117, 116, 101, 59, 1, 501, 109, 97, 4, 2, 59, 100, 10239, 10241, 1, 947, 59, 1, 989, 59, 1, 10886, 114, 101, 118, 101, 59, 1, 287, 4, 2, 105, 121, 10260, 10265, 114, 99, 59, 1, 285, 59, 1, 1075, 111, 116, 59, 1, 289, 4, 4, 59, 108, 113, 115, 10283, 10285, 10288, 10308, 1, 8805, 59, 1, 8923, 4, 3, 59, 113, 115, 10296, 10298, 10301, 1, 8805, 59, 1, 8807, 108, 97, 110, 116, 59, 1, 10878, 4, 4, 59, 99, 100, 108, 10318, 10320, 10324, 10345, 1, 10878, 99, 59, 1, 10921, 111, 116, 4, 2, 59, 111, 10332, 10334, 1, 10880, 4, 2, 59, 108, 10340, 10342, 1, 10882, 59, 1, 10884, 4, 2, 59, 101, 10351, 10354, 3, 8923, 65024, 115, 59, 1, 10900, 114, 59, 3, 55349, 56612, 4, 2, 59, 103, 10369, 10371, 1, 8811, 59, 1, 8921, 109, 101, 108, 59, 1, 8503, 99, 121, 59, 1, 1107, 4, 4, 59, 69, 97, 106, 10395, 10397, 10400, 10403, 1, 8823, 59, 1, 10898, 59, 1, 10917, 59, 1, 10916, 4, 4, 69, 97, 101, 115, 10416, 10419, 10434, 10453, 59, 1, 8809, 112, 4, 2, 59, 112, 10426, 10428, 1, 10890, 114, 111, 120, 59, 1, 10890, 4, 2, 59, 113, 10440, 10442, 1, 10888, 4, 2, 59, 113, 10448, 10450, 1, 10888, 59, 1, 8809, 105, 109, 59, 1, 8935, 112, 102, 59, 3, 55349, 56664, 97, 118, 101, 59, 1, 96, 4, 2, 99, 105, 10476, 10480, 114, 59, 1, 8458, 109, 4, 3, 59, 101, 108, 10489, 10491, 10494, 1, 8819, 59, 1, 10894, 59, 1, 10896, 5, 62, 6, 59, 99, 100, 108, 113, 114, 10512, 10514, 10527, 10532, 10538, 10545, 1, 62, 4, 2, 99, 105, 10520, 10523, 59, 1, 10919, 114, 59, 1, 10874, 111, 116, 59, 1, 8919, 80, 97, 114, 59, 1, 10645, 117, 101, 115, 116, 59, 1, 10876, 4, 5, 97, 100, 101, 108, 115, 10557, 10574, 10579, 10599, 10605, 4, 2, 112, 114, 10563, 10570, 112, 114, 111, 120, 59, 1, 10886, 114, 59, 1, 10616, 111, 116, 59, 1, 8919, 113, 4, 2, 108, 113, 10586, 10592, 101, 115, 115, 59, 1, 8923, 108, 101, 115, 115, 59, 1, 10892, 101, 115, 115, 59, 1, 8823, 105, 109, 59, 1, 8819, 4, 2, 101, 110, 10616, 10626, 114, 116, 110, 101, 113, 113, 59, 3, 8809, 65024, 69, 59, 3, 8809, 65024, 4, 10, 65, 97, 98, 99, 101, 102, 107, 111, 115, 121, 10653, 10658, 10713, 10718, 10724, 10760, 10765, 10786, 10850, 10875, 114, 114, 59, 1, 8660, 4, 4, 105, 108, 109, 114, 10668, 10674, 10678, 10684, 114, 115, 112, 59, 1, 8202, 102, 59, 1, 189, 105, 108, 116, 59, 1, 8459, 4, 2, 100, 114, 10690, 10695, 99, 121, 59, 1, 1098, 4, 3, 59, 99, 119, 10703, 10705, 10710, 1, 8596, 105, 114, 59, 1, 10568, 59, 1, 8621, 97, 114, 59, 1, 8463, 105, 114, 99, 59, 1, 293, 4, 3, 97, 108, 114, 10732, 10748, 10754, 114, 116, 115, 4, 2, 59, 117, 10741, 10743, 1, 9829, 105, 116, 59, 1, 9829, 108, 105, 112, 59, 1, 8230, 99, 111, 110, 59, 1, 8889, 114, 59, 3, 55349, 56613, 115, 4, 2, 101, 119, 10772, 10779, 97, 114, 111, 119, 59, 1, 10533, 97, 114, 111, 119, 59, 1, 10534, 4, 5, 97, 109, 111, 112, 114, 10798, 10803, 10809, 10839, 10844, 114, 114, 59, 1, 8703, 116, 104, 116, 59, 1, 8763, 107, 4, 2, 108, 114, 10816, 10827, 101, 102, 116, 97, 114, 114, 111, 119, 59, 1, 8617, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8618, 102, 59, 3, 55349, 56665, 98, 97, 114, 59, 1, 8213, 4, 3, 99, 108, 116, 10858, 10863, 10869, 114, 59, 3, 55349, 56509, 97, 115, 104, 59, 1, 8463, 114, 111, 107, 59, 1, 295, 4, 2, 98, 112, 10881, 10887, 117, 108, 108, 59, 1, 8259, 104, 101, 110, 59, 1, 8208, 4, 15, 97, 99, 101, 102, 103, 105, 106, 109, 110, 111, 112, 113, 115, 116, 117, 10925, 10936, 10958, 10977, 10990, 11001, 11039, 11045, 11101, 11192, 11220, 11226, 11237, 11285, 11299, 99, 117, 116, 101, 5, 237, 1, 59, 10934, 1, 237, 4, 3, 59, 105, 121, 10944, 10946, 10955, 1, 8291, 114, 99, 5, 238, 1, 59, 10953, 1, 238, 59, 1, 1080, 4, 2, 99, 120, 10964, 10968, 121, 59, 1, 1077, 99, 108, 5, 161, 1, 59, 10975, 1, 161, 4, 2, 102, 114, 10983, 10986, 59, 1, 8660, 59, 3, 55349, 56614, 114, 97, 118, 101, 5, 236, 1, 59, 10999, 1, 236, 4, 4, 59, 105, 110, 111, 11011, 11013, 11028, 11034, 1, 8520, 4, 2, 105, 110, 11019, 11024, 110, 116, 59, 1, 10764, 116, 59, 1, 8749, 102, 105, 110, 59, 1, 10716, 116, 97, 59, 1, 8489, 108, 105, 103, 59, 1, 307, 4, 3, 97, 111, 112, 11053, 11092, 11096, 4, 3, 99, 103, 116, 11061, 11065, 11088, 114, 59, 1, 299, 4, 3, 101, 108, 112, 11073, 11076, 11082, 59, 1, 8465, 105, 110, 101, 59, 1, 8464, 97, 114, 116, 59, 1, 8465, 104, 59, 1, 305, 102, 59, 1, 8887, 101, 100, 59, 1, 437, 4, 5, 59, 99, 102, 111, 116, 11113, 11115, 11121, 11136, 11142, 1, 8712, 97, 114, 101, 59, 1, 8453, 105, 110, 4, 2, 59, 116, 11129, 11131, 1, 8734, 105, 101, 59, 1, 10717, 100, 111, 116, 59, 1, 305, 4, 5, 59, 99, 101, 108, 112, 11154, 11156, 11161, 11179, 11186, 1, 8747, 97, 108, 59, 1, 8890, 4, 2, 103, 114, 11167, 11173, 101, 114, 115, 59, 1, 8484, 99, 97, 108, 59, 1, 8890, 97, 114, 104, 107, 59, 1, 10775, 114, 111, 100, 59, 1, 10812, 4, 4, 99, 103, 112, 116, 11202, 11206, 11211, 11216, 121, 59, 1, 1105, 111, 110, 59, 1, 303, 102, 59, 3, 55349, 56666, 97, 59, 1, 953, 114, 111, 100, 59, 1, 10812, 117, 101, 115, 116, 5, 191, 1, 59, 11235, 1, 191, 4, 2, 99, 105, 11243, 11248, 114, 59, 3, 55349, 56510, 110, 4, 5, 59, 69, 100, 115, 118, 11261, 11263, 11266, 11271, 11282, 1, 8712, 59, 1, 8953, 111, 116, 59, 1, 8949, 4, 2, 59, 118, 11277, 11279, 1, 8948, 59, 1, 8947, 59, 1, 8712, 4, 2, 59, 105, 11291, 11293, 1, 8290, 108, 100, 101, 59, 1, 297, 4, 2, 107, 109, 11305, 11310, 99, 121, 59, 1, 1110, 108, 5, 239, 1, 59, 11316, 1, 239, 4, 6, 99, 102, 109, 111, 115, 117, 11332, 11346, 11351, 11357, 11363, 11380, 4, 2, 105, 121, 11338, 11343, 114, 99, 59, 1, 309, 59, 1, 1081, 114, 59, 3, 55349, 56615, 97, 116, 104, 59, 1, 567, 112, 102, 59, 3, 55349, 56667, 4, 2, 99, 101, 11369, 11374, 114, 59, 3, 55349, 56511, 114, 99, 121, 59, 1, 1112, 107, 99, 121, 59, 1, 1108, 4, 8, 97, 99, 102, 103, 104, 106, 111, 115, 11404, 11418, 11433, 11438, 11445, 11450, 11455, 11461, 112, 112, 97, 4, 2, 59, 118, 11413, 11415, 1, 954, 59, 1, 1008, 4, 2, 101, 121, 11424, 11430, 100, 105, 108, 59, 1, 311, 59, 1, 1082, 114, 59, 3, 55349, 56616, 114, 101, 101, 110, 59, 1, 312, 99, 121, 59, 1, 1093, 99, 121, 59, 1, 1116, 112, 102, 59, 3, 55349, 56668, 99, 114, 59, 3, 55349, 56512, 4, 23, 65, 66, 69, 72, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 11515, 11538, 11544, 11555, 11560, 11721, 11780, 11818, 11868, 12136, 12160, 12171, 12203, 12208, 12246, 12275, 12327, 12509, 12523, 12569, 12641, 12732, 12752, 4, 3, 97, 114, 116, 11523, 11528, 11532, 114, 114, 59, 1, 8666, 114, 59, 1, 8656, 97, 105, 108, 59, 1, 10523, 97, 114, 114, 59, 1, 10510, 4, 2, 59, 103, 11550, 11552, 1, 8806, 59, 1, 10891, 97, 114, 59, 1, 10594, 4, 9, 99, 101, 103, 109, 110, 112, 113, 114, 116, 11580, 11586, 11594, 11600, 11606, 11624, 11627, 11636, 11694, 117, 116, 101, 59, 1, 314, 109, 112, 116, 121, 118, 59, 1, 10676, 114, 97, 110, 59, 1, 8466, 98, 100, 97, 59, 1, 955, 103, 4, 3, 59, 100, 108, 11615, 11617, 11620, 1, 10216, 59, 1, 10641, 101, 59, 1, 10216, 59, 1, 10885, 117, 111, 5, 171, 1, 59, 11634, 1, 171, 114, 4, 8, 59, 98, 102, 104, 108, 112, 115, 116, 11655, 11657, 11669, 11673, 11677, 11681, 11685, 11690, 1, 8592, 4, 2, 59, 102, 11663, 11665, 1, 8676, 115, 59, 1, 10527, 115, 59, 1, 10525, 107, 59, 1, 8617, 112, 59, 1, 8619, 108, 59, 1, 10553, 105, 109, 59, 1, 10611, 108, 59, 1, 8610, 4, 3, 59, 97, 101, 11702, 11704, 11709, 1, 10923, 105, 108, 59, 1, 10521, 4, 2, 59, 115, 11715, 11717, 1, 10925, 59, 3, 10925, 65024, 4, 3, 97, 98, 114, 11729, 11734, 11739, 114, 114, 59, 1, 10508, 114, 107, 59, 1, 10098, 4, 2, 97, 107, 11745, 11758, 99, 4, 2, 101, 107, 11752, 11755, 59, 1, 123, 59, 1, 91, 4, 2, 101, 115, 11764, 11767, 59, 1, 10635, 108, 4, 2, 100, 117, 11774, 11777, 59, 1, 10639, 59, 1, 10637, 4, 4, 97, 101, 117, 121, 11790, 11796, 11811, 11815, 114, 111, 110, 59, 1, 318, 4, 2, 100, 105, 11802, 11807, 105, 108, 59, 1, 316, 108, 59, 1, 8968, 98, 59, 1, 123, 59, 1, 1083, 4, 4, 99, 113, 114, 115, 11828, 11832, 11845, 11864, 97, 59, 1, 10550, 117, 111, 4, 2, 59, 114, 11840, 11842, 1, 8220, 59, 1, 8222, 4, 2, 100, 117, 11851, 11857, 104, 97, 114, 59, 1, 10599, 115, 104, 97, 114, 59, 1, 10571, 104, 59, 1, 8626, 4, 5, 59, 102, 103, 113, 115, 11880, 11882, 12008, 12011, 12031, 1, 8804, 116, 4, 5, 97, 104, 108, 114, 116, 11895, 11913, 11935, 11947, 11996, 114, 114, 111, 119, 4, 2, 59, 116, 11905, 11907, 1, 8592, 97, 105, 108, 59, 1, 8610, 97, 114, 112, 111, 111, 110, 4, 2, 100, 117, 11925, 11931, 111, 119, 110, 59, 1, 8637, 112, 59, 1, 8636, 101, 102, 116, 97, 114, 114, 111, 119, 115, 59, 1, 8647, 105, 103, 104, 116, 4, 3, 97, 104, 115, 11959, 11974, 11984, 114, 114, 111, 119, 4, 2, 59, 115, 11969, 11971, 1, 8596, 59, 1, 8646, 97, 114, 112, 111, 111, 110, 115, 59, 1, 8651, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 1, 8621, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 1, 8907, 59, 1, 8922, 4, 3, 59, 113, 115, 12019, 12021, 12024, 1, 8804, 59, 1, 8806, 108, 97, 110, 116, 59, 1, 10877, 4, 5, 59, 99, 100, 103, 115, 12043, 12045, 12049, 12070, 12083, 1, 10877, 99, 59, 1, 10920, 111, 116, 4, 2, 59, 111, 12057, 12059, 1, 10879, 4, 2, 59, 114, 12065, 12067, 1, 10881, 59, 1, 10883, 4, 2, 59, 101, 12076, 12079, 3, 8922, 65024, 115, 59, 1, 10899, 4, 5, 97, 100, 101, 103, 115, 12095, 12103, 12108, 12126, 12131, 112, 112, 114, 111, 120, 59, 1, 10885, 111, 116, 59, 1, 8918, 113, 4, 2, 103, 113, 12115, 12120, 116, 114, 59, 1, 8922, 103, 116, 114, 59, 1, 10891, 116, 114, 59, 1, 8822, 105, 109, 59, 1, 8818, 4, 3, 105, 108, 114, 12144, 12150, 12156, 115, 104, 116, 59, 1, 10620, 111, 111, 114, 59, 1, 8970, 59, 3, 55349, 56617, 4, 2, 59, 69, 12166, 12168, 1, 8822, 59, 1, 10897, 4, 2, 97, 98, 12177, 12198, 114, 4, 2, 100, 117, 12184, 12187, 59, 1, 8637, 4, 2, 59, 108, 12193, 12195, 1, 8636, 59, 1, 10602, 108, 107, 59, 1, 9604, 99, 121, 59, 1, 1113, 4, 5, 59, 97, 99, 104, 116, 12220, 12222, 12227, 12235, 12241, 1, 8810, 114, 114, 59, 1, 8647, 111, 114, 110, 101, 114, 59, 1, 8990, 97, 114, 100, 59, 1, 10603, 114, 105, 59, 1, 9722, 4, 2, 105, 111, 12252, 12258, 100, 111, 116, 59, 1, 320, 117, 115, 116, 4, 2, 59, 97, 12267, 12269, 1, 9136, 99, 104, 101, 59, 1, 9136, 4, 4, 69, 97, 101, 115, 12285, 12288, 12303, 12322, 59, 1, 8808, 112, 4, 2, 59, 112, 12295, 12297, 1, 10889, 114, 111, 120, 59, 1, 10889, 4, 2, 59, 113, 12309, 12311, 1, 10887, 4, 2, 59, 113, 12317, 12319, 1, 10887, 59, 1, 8808, 105, 109, 59, 1, 8934, 4, 8, 97, 98, 110, 111, 112, 116, 119, 122, 12345, 12359, 12364, 12421, 12446, 12467, 12474, 12490, 4, 2, 110, 114, 12351, 12355, 103, 59, 1, 10220, 114, 59, 1, 8701, 114, 107, 59, 1, 10214, 103, 4, 3, 108, 109, 114, 12373, 12401, 12409, 101, 102, 116, 4, 2, 97, 114, 12382, 12389, 114, 114, 111, 119, 59, 1, 10229, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 10231, 97, 112, 115, 116, 111, 59, 1, 10236, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 10230, 112, 97, 114, 114, 111, 119, 4, 2, 108, 114, 12433, 12439, 101, 102, 116, 59, 1, 8619, 105, 103, 104, 116, 59, 1, 8620, 4, 3, 97, 102, 108, 12454, 12458, 12462, 114, 59, 1, 10629, 59, 3, 55349, 56669, 117, 115, 59, 1, 10797, 105, 109, 101, 115, 59, 1, 10804, 4, 2, 97, 98, 12480, 12485, 115, 116, 59, 1, 8727, 97, 114, 59, 1, 95, 4, 3, 59, 101, 102, 12498, 12500, 12506, 1, 9674, 110, 103, 101, 59, 1, 9674, 59, 1, 10731, 97, 114, 4, 2, 59, 108, 12517, 12519, 1, 40, 116, 59, 1, 10643, 4, 5, 97, 99, 104, 109, 116, 12535, 12540, 12548, 12561, 12564, 114, 114, 59, 1, 8646, 111, 114, 110, 101, 114, 59, 1, 8991, 97, 114, 4, 2, 59, 100, 12556, 12558, 1, 8651, 59, 1, 10605, 59, 1, 8206, 114, 105, 59, 1, 8895, 4, 6, 97, 99, 104, 105, 113, 116, 12583, 12589, 12594, 12597, 12614, 12635, 113, 117, 111, 59, 1, 8249, 114, 59, 3, 55349, 56513, 59, 1, 8624, 109, 4, 3, 59, 101, 103, 12606, 12608, 12611, 1, 8818, 59, 1, 10893, 59, 1, 10895, 4, 2, 98, 117, 12620, 12623, 59, 1, 91, 111, 4, 2, 59, 114, 12630, 12632, 1, 8216, 59, 1, 8218, 114, 111, 107, 59, 1, 322, 5, 60, 8, 59, 99, 100, 104, 105, 108, 113, 114, 12660, 12662, 12675, 12680, 12686, 12692, 12698, 12705, 1, 60, 4, 2, 99, 105, 12668, 12671, 59, 1, 10918, 114, 59, 1, 10873, 111, 116, 59, 1, 8918, 114, 101, 101, 59, 1, 8907, 109, 101, 115, 59, 1, 8905, 97, 114, 114, 59, 1, 10614, 117, 101, 115, 116, 59, 1, 10875, 4, 2, 80, 105, 12711, 12716, 97, 114, 59, 1, 10646, 4, 3, 59, 101, 102, 12724, 12726, 12729, 1, 9667, 59, 1, 8884, 59, 1, 9666, 114, 4, 2, 100, 117, 12739, 12746, 115, 104, 97, 114, 59, 1, 10570, 104, 97, 114, 59, 1, 10598, 4, 2, 101, 110, 12758, 12768, 114, 116, 110, 101, 113, 113, 59, 3, 8808, 65024, 69, 59, 3, 8808, 65024, 4, 14, 68, 97, 99, 100, 101, 102, 104, 105, 108, 110, 111, 112, 115, 117, 12803, 12809, 12893, 12908, 12914, 12928, 12933, 12937, 13011, 13025, 13032, 13049, 13052, 13069, 68, 111, 116, 59, 1, 8762, 4, 4, 99, 108, 112, 114, 12819, 12827, 12849, 12887, 114, 5, 175, 1, 59, 12825, 1, 175, 4, 2, 101, 116, 12833, 12836, 59, 1, 9794, 4, 2, 59, 101, 12842, 12844, 1, 10016, 115, 101, 59, 1, 10016, 4, 2, 59, 115, 12855, 12857, 1, 8614, 116, 111, 4, 4, 59, 100, 108, 117, 12869, 12871, 12877, 12883, 1, 8614, 111, 119, 110, 59, 1, 8615, 101, 102, 116, 59, 1, 8612, 112, 59, 1, 8613, 107, 101, 114, 59, 1, 9646, 4, 2, 111, 121, 12899, 12905, 109, 109, 97, 59, 1, 10793, 59, 1, 1084, 97, 115, 104, 59, 1, 8212, 97, 115, 117, 114, 101, 100, 97, 110, 103, 108, 101, 59, 1, 8737, 114, 59, 3, 55349, 56618, 111, 59, 1, 8487, 4, 3, 99, 100, 110, 12945, 12954, 12985, 114, 111, 5, 181, 1, 59, 12952, 1, 181, 4, 4, 59, 97, 99, 100, 12964, 12966, 12971, 12976, 1, 8739, 115, 116, 59, 1, 42, 105, 114, 59, 1, 10992, 111, 116, 5, 183, 1, 59, 12983, 1, 183, 117, 115, 4, 3, 59, 98, 100, 12995, 12997, 13e3, 1, 8722, 59, 1, 8863, 4, 2, 59, 117, 13006, 13008, 1, 8760, 59, 1, 10794, 4, 2, 99, 100, 13017, 13021, 112, 59, 1, 10971, 114, 59, 1, 8230, 112, 108, 117, 115, 59, 1, 8723, 4, 2, 100, 112, 13038, 13044, 101, 108, 115, 59, 1, 8871, 102, 59, 3, 55349, 56670, 59, 1, 8723, 4, 2, 99, 116, 13058, 13063, 114, 59, 3, 55349, 56514, 112, 111, 115, 59, 1, 8766, 4, 3, 59, 108, 109, 13077, 13079, 13087, 1, 956, 116, 105, 109, 97, 112, 59, 1, 8888, 97, 112, 59, 1, 8888, 4, 24, 71, 76, 82, 86, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 13142, 13165, 13217, 13229, 13247, 13330, 13359, 13414, 13420, 13508, 13513, 13579, 13602, 13626, 13631, 13762, 13767, 13855, 13936, 13995, 14214, 14285, 14312, 14432, 4, 2, 103, 116, 13148, 13152, 59, 3, 8921, 824, 4, 2, 59, 118, 13158, 13161, 3, 8811, 8402, 59, 3, 8811, 824, 4, 3, 101, 108, 116, 13173, 13200, 13204, 102, 116, 4, 2, 97, 114, 13181, 13188, 114, 114, 111, 119, 59, 1, 8653, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8654, 59, 3, 8920, 824, 4, 2, 59, 118, 13210, 13213, 3, 8810, 8402, 59, 3, 8810, 824, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8655, 4, 2, 68, 100, 13235, 13241, 97, 115, 104, 59, 1, 8879, 97, 115, 104, 59, 1, 8878, 4, 5, 98, 99, 110, 112, 116, 13259, 13264, 13270, 13275, 13308, 108, 97, 59, 1, 8711, 117, 116, 101, 59, 1, 324, 103, 59, 3, 8736, 8402, 4, 5, 59, 69, 105, 111, 112, 13287, 13289, 13293, 13298, 13302, 1, 8777, 59, 3, 10864, 824, 100, 59, 3, 8779, 824, 115, 59, 1, 329, 114, 111, 120, 59, 1, 8777, 117, 114, 4, 2, 59, 97, 13316, 13318, 1, 9838, 108, 4, 2, 59, 115, 13325, 13327, 1, 9838, 59, 1, 8469, 4, 2, 115, 117, 13336, 13344, 112, 5, 160, 1, 59, 13342, 1, 160, 109, 112, 4, 2, 59, 101, 13352, 13355, 3, 8782, 824, 59, 3, 8783, 824, 4, 5, 97, 101, 111, 117, 121, 13371, 13385, 13391, 13407, 13411, 4, 2, 112, 114, 13377, 13380, 59, 1, 10819, 111, 110, 59, 1, 328, 100, 105, 108, 59, 1, 326, 110, 103, 4, 2, 59, 100, 13399, 13401, 1, 8775, 111, 116, 59, 3, 10861, 824, 112, 59, 1, 10818, 59, 1, 1085, 97, 115, 104, 59, 1, 8211, 4, 7, 59, 65, 97, 100, 113, 115, 120, 13436, 13438, 13443, 13466, 13472, 13478, 13494, 1, 8800, 114, 114, 59, 1, 8663, 114, 4, 2, 104, 114, 13450, 13454, 107, 59, 1, 10532, 4, 2, 59, 111, 13460, 13462, 1, 8599, 119, 59, 1, 8599, 111, 116, 59, 3, 8784, 824, 117, 105, 118, 59, 1, 8802, 4, 2, 101, 105, 13484, 13489, 97, 114, 59, 1, 10536, 109, 59, 3, 8770, 824, 105, 115, 116, 4, 2, 59, 115, 13503, 13505, 1, 8708, 59, 1, 8708, 114, 59, 3, 55349, 56619, 4, 4, 69, 101, 115, 116, 13523, 13527, 13563, 13568, 59, 3, 8807, 824, 4, 3, 59, 113, 115, 13535, 13537, 13559, 1, 8817, 4, 3, 59, 113, 115, 13545, 13547, 13551, 1, 8817, 59, 3, 8807, 824, 108, 97, 110, 116, 59, 3, 10878, 824, 59, 3, 10878, 824, 105, 109, 59, 1, 8821, 4, 2, 59, 114, 13574, 13576, 1, 8815, 59, 1, 8815, 4, 3, 65, 97, 112, 13587, 13592, 13597, 114, 114, 59, 1, 8654, 114, 114, 59, 1, 8622, 97, 114, 59, 1, 10994, 4, 3, 59, 115, 118, 13610, 13612, 13623, 1, 8715, 4, 2, 59, 100, 13618, 13620, 1, 8956, 59, 1, 8954, 59, 1, 8715, 99, 121, 59, 1, 1114, 4, 7, 65, 69, 97, 100, 101, 115, 116, 13647, 13652, 13656, 13661, 13665, 13737, 13742, 114, 114, 59, 1, 8653, 59, 3, 8806, 824, 114, 114, 59, 1, 8602, 114, 59, 1, 8229, 4, 4, 59, 102, 113, 115, 13675, 13677, 13703, 13725, 1, 8816, 116, 4, 2, 97, 114, 13684, 13691, 114, 114, 111, 119, 59, 1, 8602, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8622, 4, 3, 59, 113, 115, 13711, 13713, 13717, 1, 8816, 59, 3, 8806, 824, 108, 97, 110, 116, 59, 3, 10877, 824, 4, 2, 59, 115, 13731, 13734, 3, 10877, 824, 59, 1, 8814, 105, 109, 59, 1, 8820, 4, 2, 59, 114, 13748, 13750, 1, 8814, 105, 4, 2, 59, 101, 13757, 13759, 1, 8938, 59, 1, 8940, 105, 100, 59, 1, 8740, 4, 2, 112, 116, 13773, 13778, 102, 59, 3, 55349, 56671, 5, 172, 3, 59, 105, 110, 13787, 13789, 13829, 1, 172, 110, 4, 4, 59, 69, 100, 118, 13800, 13802, 13806, 13812, 1, 8713, 59, 3, 8953, 824, 111, 116, 59, 3, 8949, 824, 4, 3, 97, 98, 99, 13820, 13823, 13826, 59, 1, 8713, 59, 1, 8951, 59, 1, 8950, 105, 4, 2, 59, 118, 13836, 13838, 1, 8716, 4, 3, 97, 98, 99, 13846, 13849, 13852, 59, 1, 8716, 59, 1, 8958, 59, 1, 8957, 4, 3, 97, 111, 114, 13863, 13892, 13899, 114, 4, 4, 59, 97, 115, 116, 13874, 13876, 13883, 13888, 1, 8742, 108, 108, 101, 108, 59, 1, 8742, 108, 59, 3, 11005, 8421, 59, 3, 8706, 824, 108, 105, 110, 116, 59, 1, 10772, 4, 3, 59, 99, 101, 13907, 13909, 13914, 1, 8832, 117, 101, 59, 1, 8928, 4, 2, 59, 99, 13920, 13923, 3, 10927, 824, 4, 2, 59, 101, 13929, 13931, 1, 8832, 113, 59, 3, 10927, 824, 4, 4, 65, 97, 105, 116, 13946, 13951, 13971, 13982, 114, 114, 59, 1, 8655, 114, 114, 4, 3, 59, 99, 119, 13961, 13963, 13967, 1, 8603, 59, 3, 10547, 824, 59, 3, 8605, 824, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8603, 114, 105, 4, 2, 59, 101, 13990, 13992, 1, 8939, 59, 1, 8941, 4, 7, 99, 104, 105, 109, 112, 113, 117, 14011, 14036, 14060, 14080, 14085, 14090, 14106, 4, 4, 59, 99, 101, 114, 14021, 14023, 14028, 14032, 1, 8833, 117, 101, 59, 1, 8929, 59, 3, 10928, 824, 59, 3, 55349, 56515, 111, 114, 116, 4, 2, 109, 112, 14045, 14050, 105, 100, 59, 1, 8740, 97, 114, 97, 108, 108, 101, 108, 59, 1, 8742, 109, 4, 2, 59, 101, 14067, 14069, 1, 8769, 4, 2, 59, 113, 14075, 14077, 1, 8772, 59, 1, 8772, 105, 100, 59, 1, 8740, 97, 114, 59, 1, 8742, 115, 117, 4, 2, 98, 112, 14098, 14102, 101, 59, 1, 8930, 101, 59, 1, 8931, 4, 3, 98, 99, 112, 14114, 14157, 14171, 4, 4, 59, 69, 101, 115, 14124, 14126, 14130, 14133, 1, 8836, 59, 3, 10949, 824, 59, 1, 8840, 101, 116, 4, 2, 59, 101, 14141, 14144, 3, 8834, 8402, 113, 4, 2, 59, 113, 14151, 14153, 1, 8840, 59, 3, 10949, 824, 99, 4, 2, 59, 101, 14164, 14166, 1, 8833, 113, 59, 3, 10928, 824, 4, 4, 59, 69, 101, 115, 14181, 14183, 14187, 14190, 1, 8837, 59, 3, 10950, 824, 59, 1, 8841, 101, 116, 4, 2, 59, 101, 14198, 14201, 3, 8835, 8402, 113, 4, 2, 59, 113, 14208, 14210, 1, 8841, 59, 3, 10950, 824, 4, 4, 103, 105, 108, 114, 14224, 14228, 14238, 14242, 108, 59, 1, 8825, 108, 100, 101, 5, 241, 1, 59, 14236, 1, 241, 103, 59, 1, 8824, 105, 97, 110, 103, 108, 101, 4, 2, 108, 114, 14254, 14269, 101, 102, 116, 4, 2, 59, 101, 14263, 14265, 1, 8938, 113, 59, 1, 8940, 105, 103, 104, 116, 4, 2, 59, 101, 14279, 14281, 1, 8939, 113, 59, 1, 8941, 4, 2, 59, 109, 14291, 14293, 1, 957, 4, 3, 59, 101, 115, 14301, 14303, 14308, 1, 35, 114, 111, 59, 1, 8470, 112, 59, 1, 8199, 4, 9, 68, 72, 97, 100, 103, 105, 108, 114, 115, 14332, 14338, 14344, 14349, 14355, 14369, 14376, 14408, 14426, 97, 115, 104, 59, 1, 8877, 97, 114, 114, 59, 1, 10500, 112, 59, 3, 8781, 8402, 97, 115, 104, 59, 1, 8876, 4, 2, 101, 116, 14361, 14365, 59, 3, 8805, 8402, 59, 3, 62, 8402, 110, 102, 105, 110, 59, 1, 10718, 4, 3, 65, 101, 116, 14384, 14389, 14393, 114, 114, 59, 1, 10498, 59, 3, 8804, 8402, 4, 2, 59, 114, 14399, 14402, 3, 60, 8402, 105, 101, 59, 3, 8884, 8402, 4, 2, 65, 116, 14414, 14419, 114, 114, 59, 1, 10499, 114, 105, 101, 59, 3, 8885, 8402, 105, 109, 59, 3, 8764, 8402, 4, 3, 65, 97, 110, 14440, 14445, 14468, 114, 114, 59, 1, 8662, 114, 4, 2, 104, 114, 14452, 14456, 107, 59, 1, 10531, 4, 2, 59, 111, 14462, 14464, 1, 8598, 119, 59, 1, 8598, 101, 97, 114, 59, 1, 10535, 4, 18, 83, 97, 99, 100, 101, 102, 103, 104, 105, 108, 109, 111, 112, 114, 115, 116, 117, 118, 14512, 14515, 14535, 14560, 14597, 14603, 14618, 14643, 14657, 14662, 14701, 14741, 14747, 14769, 14851, 14877, 14907, 14916, 59, 1, 9416, 4, 2, 99, 115, 14521, 14531, 117, 116, 101, 5, 243, 1, 59, 14529, 1, 243, 116, 59, 1, 8859, 4, 2, 105, 121, 14541, 14557, 114, 4, 2, 59, 99, 14548, 14550, 1, 8858, 5, 244, 1, 59, 14555, 1, 244, 59, 1, 1086, 4, 5, 97, 98, 105, 111, 115, 14572, 14577, 14583, 14587, 14591, 115, 104, 59, 1, 8861, 108, 97, 99, 59, 1, 337, 118, 59, 1, 10808, 116, 59, 1, 8857, 111, 108, 100, 59, 1, 10684, 108, 105, 103, 59, 1, 339, 4, 2, 99, 114, 14609, 14614, 105, 114, 59, 1, 10687, 59, 3, 55349, 56620, 4, 3, 111, 114, 116, 14626, 14630, 14640, 110, 59, 1, 731, 97, 118, 101, 5, 242, 1, 59, 14638, 1, 242, 59, 1, 10689, 4, 2, 98, 109, 14649, 14654, 97, 114, 59, 1, 10677, 59, 1, 937, 110, 116, 59, 1, 8750, 4, 4, 97, 99, 105, 116, 14672, 14677, 14693, 14698, 114, 114, 59, 1, 8634, 4, 2, 105, 114, 14683, 14687, 114, 59, 1, 10686, 111, 115, 115, 59, 1, 10683, 110, 101, 59, 1, 8254, 59, 1, 10688, 4, 3, 97, 101, 105, 14709, 14714, 14719, 99, 114, 59, 1, 333, 103, 97, 59, 1, 969, 4, 3, 99, 100, 110, 14727, 14733, 14736, 114, 111, 110, 59, 1, 959, 59, 1, 10678, 117, 115, 59, 1, 8854, 112, 102, 59, 3, 55349, 56672, 4, 3, 97, 101, 108, 14755, 14759, 14764, 114, 59, 1, 10679, 114, 112, 59, 1, 10681, 117, 115, 59, 1, 8853, 4, 7, 59, 97, 100, 105, 111, 115, 118, 14785, 14787, 14792, 14831, 14837, 14841, 14848, 1, 8744, 114, 114, 59, 1, 8635, 4, 4, 59, 101, 102, 109, 14802, 14804, 14817, 14824, 1, 10845, 114, 4, 2, 59, 111, 14811, 14813, 1, 8500, 102, 59, 1, 8500, 5, 170, 1, 59, 14822, 1, 170, 5, 186, 1, 59, 14829, 1, 186, 103, 111, 102, 59, 1, 8886, 114, 59, 1, 10838, 108, 111, 112, 101, 59, 1, 10839, 59, 1, 10843, 4, 3, 99, 108, 111, 14859, 14863, 14873, 114, 59, 1, 8500, 97, 115, 104, 5, 248, 1, 59, 14871, 1, 248, 108, 59, 1, 8856, 105, 4, 2, 108, 109, 14884, 14893, 100, 101, 5, 245, 1, 59, 14891, 1, 245, 101, 115, 4, 2, 59, 97, 14901, 14903, 1, 8855, 115, 59, 1, 10806, 109, 108, 5, 246, 1, 59, 14914, 1, 246, 98, 97, 114, 59, 1, 9021, 4, 12, 97, 99, 101, 102, 104, 105, 108, 109, 111, 114, 115, 117, 14948, 14992, 14996, 15033, 15038, 15068, 15090, 15189, 15192, 15222, 15427, 15441, 114, 4, 4, 59, 97, 115, 116, 14959, 14961, 14976, 14989, 1, 8741, 5, 182, 2, 59, 108, 14968, 14970, 1, 182, 108, 101, 108, 59, 1, 8741, 4, 2, 105, 108, 14982, 14986, 109, 59, 1, 10995, 59, 1, 11005, 59, 1, 8706, 121, 59, 1, 1087, 114, 4, 5, 99, 105, 109, 112, 116, 15009, 15014, 15019, 15024, 15027, 110, 116, 59, 1, 37, 111, 100, 59, 1, 46, 105, 108, 59, 1, 8240, 59, 1, 8869, 101, 110, 107, 59, 1, 8241, 114, 59, 3, 55349, 56621, 4, 3, 105, 109, 111, 15046, 15057, 15063, 4, 2, 59, 118, 15052, 15054, 1, 966, 59, 1, 981, 109, 97, 116, 59, 1, 8499, 110, 101, 59, 1, 9742, 4, 3, 59, 116, 118, 15076, 15078, 15087, 1, 960, 99, 104, 102, 111, 114, 107, 59, 1, 8916, 59, 1, 982, 4, 2, 97, 117, 15096, 15119, 110, 4, 2, 99, 107, 15103, 15115, 107, 4, 2, 59, 104, 15110, 15112, 1, 8463, 59, 1, 8462, 118, 59, 1, 8463, 115, 4, 9, 59, 97, 98, 99, 100, 101, 109, 115, 116, 15140, 15142, 15148, 15151, 15156, 15168, 15171, 15179, 15184, 1, 43, 99, 105, 114, 59, 1, 10787, 59, 1, 8862, 105, 114, 59, 1, 10786, 4, 2, 111, 117, 15162, 15165, 59, 1, 8724, 59, 1, 10789, 59, 1, 10866, 110, 5, 177, 1, 59, 15177, 1, 177, 105, 109, 59, 1, 10790, 119, 111, 59, 1, 10791, 59, 1, 177, 4, 3, 105, 112, 117, 15200, 15208, 15213, 110, 116, 105, 110, 116, 59, 1, 10773, 102, 59, 3, 55349, 56673, 110, 100, 5, 163, 1, 59, 15220, 1, 163, 4, 10, 59, 69, 97, 99, 101, 105, 110, 111, 115, 117, 15244, 15246, 15249, 15253, 15258, 15334, 15347, 15367, 15416, 15421, 1, 8826, 59, 1, 10931, 112, 59, 1, 10935, 117, 101, 59, 1, 8828, 4, 2, 59, 99, 15264, 15266, 1, 10927, 4, 6, 59, 97, 99, 101, 110, 115, 15280, 15282, 15290, 15299, 15303, 15329, 1, 8826, 112, 112, 114, 111, 120, 59, 1, 10935, 117, 114, 108, 121, 101, 113, 59, 1, 8828, 113, 59, 1, 10927, 4, 3, 97, 101, 115, 15311, 15319, 15324, 112, 112, 114, 111, 120, 59, 1, 10937, 113, 113, 59, 1, 10933, 105, 109, 59, 1, 8936, 105, 109, 59, 1, 8830, 109, 101, 4, 2, 59, 115, 15342, 15344, 1, 8242, 59, 1, 8473, 4, 3, 69, 97, 115, 15355, 15358, 15362, 59, 1, 10933, 112, 59, 1, 10937, 105, 109, 59, 1, 8936, 4, 3, 100, 102, 112, 15375, 15378, 15404, 59, 1, 8719, 4, 3, 97, 108, 115, 15386, 15392, 15398, 108, 97, 114, 59, 1, 9006, 105, 110, 101, 59, 1, 8978, 117, 114, 102, 59, 1, 8979, 4, 2, 59, 116, 15410, 15412, 1, 8733, 111, 59, 1, 8733, 105, 109, 59, 1, 8830, 114, 101, 108, 59, 1, 8880, 4, 2, 99, 105, 15433, 15438, 114, 59, 3, 55349, 56517, 59, 1, 968, 110, 99, 115, 112, 59, 1, 8200, 4, 6, 102, 105, 111, 112, 115, 117, 15462, 15467, 15472, 15478, 15485, 15491, 114, 59, 3, 55349, 56622, 110, 116, 59, 1, 10764, 112, 102, 59, 3, 55349, 56674, 114, 105, 109, 101, 59, 1, 8279, 99, 114, 59, 3, 55349, 56518, 4, 3, 97, 101, 111, 15499, 15520, 15534, 116, 4, 2, 101, 105, 15506, 15515, 114, 110, 105, 111, 110, 115, 59, 1, 8461, 110, 116, 59, 1, 10774, 115, 116, 4, 2, 59, 101, 15528, 15530, 1, 63, 113, 59, 1, 8799, 116, 5, 34, 1, 59, 15540, 1, 34, 4, 21, 65, 66, 72, 97, 98, 99, 100, 101, 102, 104, 105, 108, 109, 110, 111, 112, 114, 115, 116, 117, 120, 15586, 15609, 15615, 15620, 15796, 15855, 15893, 15931, 15977, 16001, 16039, 16183, 16204, 16222, 16228, 16285, 16312, 16318, 16363, 16408, 16416, 4, 3, 97, 114, 116, 15594, 15599, 15603, 114, 114, 59, 1, 8667, 114, 59, 1, 8658, 97, 105, 108, 59, 1, 10524, 97, 114, 114, 59, 1, 10511, 97, 114, 59, 1, 10596, 4, 7, 99, 100, 101, 110, 113, 114, 116, 15636, 15651, 15656, 15664, 15687, 15696, 15770, 4, 2, 101, 117, 15642, 15646, 59, 3, 8765, 817, 116, 101, 59, 1, 341, 105, 99, 59, 1, 8730, 109, 112, 116, 121, 118, 59, 1, 10675, 103, 4, 4, 59, 100, 101, 108, 15675, 15677, 15680, 15683, 1, 10217, 59, 1, 10642, 59, 1, 10661, 101, 59, 1, 10217, 117, 111, 5, 187, 1, 59, 15694, 1, 187, 114, 4, 11, 59, 97, 98, 99, 102, 104, 108, 112, 115, 116, 119, 15721, 15723, 15727, 15739, 15742, 15746, 15750, 15754, 15758, 15763, 15767, 1, 8594, 112, 59, 1, 10613, 4, 2, 59, 102, 15733, 15735, 1, 8677, 115, 59, 1, 10528, 59, 1, 10547, 115, 59, 1, 10526, 107, 59, 1, 8618, 112, 59, 1, 8620, 108, 59, 1, 10565, 105, 109, 59, 1, 10612, 108, 59, 1, 8611, 59, 1, 8605, 4, 2, 97, 105, 15776, 15781, 105, 108, 59, 1, 10522, 111, 4, 2, 59, 110, 15788, 15790, 1, 8758, 97, 108, 115, 59, 1, 8474, 4, 3, 97, 98, 114, 15804, 15809, 15814, 114, 114, 59, 1, 10509, 114, 107, 59, 1, 10099, 4, 2, 97, 107, 15820, 15833, 99, 4, 2, 101, 107, 15827, 15830, 59, 1, 125, 59, 1, 93, 4, 2, 101, 115, 15839, 15842, 59, 1, 10636, 108, 4, 2, 100, 117, 15849, 15852, 59, 1, 10638, 59, 1, 10640, 4, 4, 97, 101, 117, 121, 15865, 15871, 15886, 15890, 114, 111, 110, 59, 1, 345, 4, 2, 100, 105, 15877, 15882, 105, 108, 59, 1, 343, 108, 59, 1, 8969, 98, 59, 1, 125, 59, 1, 1088, 4, 4, 99, 108, 113, 115, 15903, 15907, 15914, 15927, 97, 59, 1, 10551, 100, 104, 97, 114, 59, 1, 10601, 117, 111, 4, 2, 59, 114, 15922, 15924, 1, 8221, 59, 1, 8221, 104, 59, 1, 8627, 4, 3, 97, 99, 103, 15939, 15966, 15970, 108, 4, 4, 59, 105, 112, 115, 15950, 15952, 15957, 15963, 1, 8476, 110, 101, 59, 1, 8475, 97, 114, 116, 59, 1, 8476, 59, 1, 8477, 116, 59, 1, 9645, 5, 174, 1, 59, 15975, 1, 174, 4, 3, 105, 108, 114, 15985, 15991, 15997, 115, 104, 116, 59, 1, 10621, 111, 111, 114, 59, 1, 8971, 59, 3, 55349, 56623, 4, 2, 97, 111, 16007, 16028, 114, 4, 2, 100, 117, 16014, 16017, 59, 1, 8641, 4, 2, 59, 108, 16023, 16025, 1, 8640, 59, 1, 10604, 4, 2, 59, 118, 16034, 16036, 1, 961, 59, 1, 1009, 4, 3, 103, 110, 115, 16047, 16167, 16171, 104, 116, 4, 6, 97, 104, 108, 114, 115, 116, 16063, 16081, 16103, 16130, 16143, 16155, 114, 114, 111, 119, 4, 2, 59, 116, 16073, 16075, 1, 8594, 97, 105, 108, 59, 1, 8611, 97, 114, 112, 111, 111, 110, 4, 2, 100, 117, 16093, 16099, 111, 119, 110, 59, 1, 8641, 112, 59, 1, 8640, 101, 102, 116, 4, 2, 97, 104, 16112, 16120, 114, 114, 111, 119, 115, 59, 1, 8644, 97, 114, 112, 111, 111, 110, 115, 59, 1, 8652, 105, 103, 104, 116, 97, 114, 114, 111, 119, 115, 59, 1, 8649, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 1, 8605, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 1, 8908, 103, 59, 1, 730, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 1, 8787, 4, 3, 97, 104, 109, 16191, 16196, 16201, 114, 114, 59, 1, 8644, 97, 114, 59, 1, 8652, 59, 1, 8207, 111, 117, 115, 116, 4, 2, 59, 97, 16214, 16216, 1, 9137, 99, 104, 101, 59, 1, 9137, 109, 105, 100, 59, 1, 10990, 4, 4, 97, 98, 112, 116, 16238, 16252, 16257, 16278, 4, 2, 110, 114, 16244, 16248, 103, 59, 1, 10221, 114, 59, 1, 8702, 114, 107, 59, 1, 10215, 4, 3, 97, 102, 108, 16265, 16269, 16273, 114, 59, 1, 10630, 59, 3, 55349, 56675, 117, 115, 59, 1, 10798, 105, 109, 101, 115, 59, 1, 10805, 4, 2, 97, 112, 16291, 16304, 114, 4, 2, 59, 103, 16298, 16300, 1, 41, 116, 59, 1, 10644, 111, 108, 105, 110, 116, 59, 1, 10770, 97, 114, 114, 59, 1, 8649, 4, 4, 97, 99, 104, 113, 16328, 16334, 16339, 16342, 113, 117, 111, 59, 1, 8250, 114, 59, 3, 55349, 56519, 59, 1, 8625, 4, 2, 98, 117, 16348, 16351, 59, 1, 93, 111, 4, 2, 59, 114, 16358, 16360, 1, 8217, 59, 1, 8217, 4, 3, 104, 105, 114, 16371, 16377, 16383, 114, 101, 101, 59, 1, 8908, 109, 101, 115, 59, 1, 8906, 105, 4, 4, 59, 101, 102, 108, 16394, 16396, 16399, 16402, 1, 9657, 59, 1, 8885, 59, 1, 9656, 116, 114, 105, 59, 1, 10702, 108, 117, 104, 97, 114, 59, 1, 10600, 59, 1, 8478, 4, 19, 97, 98, 99, 100, 101, 102, 104, 105, 108, 109, 111, 112, 113, 114, 115, 116, 117, 119, 122, 16459, 16466, 16472, 16572, 16590, 16672, 16687, 16746, 16844, 16850, 16924, 16963, 16988, 17115, 17121, 17154, 17206, 17614, 17656, 99, 117, 116, 101, 59, 1, 347, 113, 117, 111, 59, 1, 8218, 4, 10, 59, 69, 97, 99, 101, 105, 110, 112, 115, 121, 16494, 16496, 16499, 16513, 16518, 16531, 16536, 16556, 16564, 16569, 1, 8827, 59, 1, 10932, 4, 2, 112, 114, 16505, 16508, 59, 1, 10936, 111, 110, 59, 1, 353, 117, 101, 59, 1, 8829, 4, 2, 59, 100, 16524, 16526, 1, 10928, 105, 108, 59, 1, 351, 114, 99, 59, 1, 349, 4, 3, 69, 97, 115, 16544, 16547, 16551, 59, 1, 10934, 112, 59, 1, 10938, 105, 109, 59, 1, 8937, 111, 108, 105, 110, 116, 59, 1, 10771, 105, 109, 59, 1, 8831, 59, 1, 1089, 111, 116, 4, 3, 59, 98, 101, 16582, 16584, 16587, 1, 8901, 59, 1, 8865, 59, 1, 10854, 4, 7, 65, 97, 99, 109, 115, 116, 120, 16606, 16611, 16634, 16642, 16646, 16652, 16668, 114, 114, 59, 1, 8664, 114, 4, 2, 104, 114, 16618, 16622, 107, 59, 1, 10533, 4, 2, 59, 111, 16628, 16630, 1, 8600, 119, 59, 1, 8600, 116, 5, 167, 1, 59, 16640, 1, 167, 105, 59, 1, 59, 119, 97, 114, 59, 1, 10537, 109, 4, 2, 105, 110, 16659, 16665, 110, 117, 115, 59, 1, 8726, 59, 1, 8726, 116, 59, 1, 10038, 114, 4, 2, 59, 111, 16679, 16682, 3, 55349, 56624, 119, 110, 59, 1, 8994, 4, 4, 97, 99, 111, 121, 16697, 16702, 16716, 16739, 114, 112, 59, 1, 9839, 4, 2, 104, 121, 16708, 16713, 99, 121, 59, 1, 1097, 59, 1, 1096, 114, 116, 4, 2, 109, 112, 16724, 16729, 105, 100, 59, 1, 8739, 97, 114, 97, 108, 108, 101, 108, 59, 1, 8741, 5, 173, 1, 59, 16744, 1, 173, 4, 2, 103, 109, 16752, 16770, 109, 97, 4, 3, 59, 102, 118, 16762, 16764, 16767, 1, 963, 59, 1, 962, 59, 1, 962, 4, 8, 59, 100, 101, 103, 108, 110, 112, 114, 16788, 16790, 16795, 16806, 16817, 16828, 16832, 16838, 1, 8764, 111, 116, 59, 1, 10858, 4, 2, 59, 113, 16801, 16803, 1, 8771, 59, 1, 8771, 4, 2, 59, 69, 16812, 16814, 1, 10910, 59, 1, 10912, 4, 2, 59, 69, 16823, 16825, 1, 10909, 59, 1, 10911, 101, 59, 1, 8774, 108, 117, 115, 59, 1, 10788, 97, 114, 114, 59, 1, 10610, 97, 114, 114, 59, 1, 8592, 4, 4, 97, 101, 105, 116, 16860, 16883, 16891, 16904, 4, 2, 108, 115, 16866, 16878, 108, 115, 101, 116, 109, 105, 110, 117, 115, 59, 1, 8726, 104, 112, 59, 1, 10803, 112, 97, 114, 115, 108, 59, 1, 10724, 4, 2, 100, 108, 16897, 16900, 59, 1, 8739, 101, 59, 1, 8995, 4, 2, 59, 101, 16910, 16912, 1, 10922, 4, 2, 59, 115, 16918, 16920, 1, 10924, 59, 3, 10924, 65024, 4, 3, 102, 108, 112, 16932, 16938, 16958, 116, 99, 121, 59, 1, 1100, 4, 2, 59, 98, 16944, 16946, 1, 47, 4, 2, 59, 97, 16952, 16954, 1, 10692, 114, 59, 1, 9023, 102, 59, 3, 55349, 56676, 97, 4, 2, 100, 114, 16970, 16985, 101, 115, 4, 2, 59, 117, 16978, 16980, 1, 9824, 105, 116, 59, 1, 9824, 59, 1, 8741, 4, 3, 99, 115, 117, 16996, 17028, 17089, 4, 2, 97, 117, 17002, 17015, 112, 4, 2, 59, 115, 17009, 17011, 1, 8851, 59, 3, 8851, 65024, 112, 4, 2, 59, 115, 17022, 17024, 1, 8852, 59, 3, 8852, 65024, 117, 4, 2, 98, 112, 17035, 17062, 4, 3, 59, 101, 115, 17043, 17045, 17048, 1, 8847, 59, 1, 8849, 101, 116, 4, 2, 59, 101, 17056, 17058, 1, 8847, 113, 59, 1, 8849, 4, 3, 59, 101, 115, 17070, 17072, 17075, 1, 8848, 59, 1, 8850, 101, 116, 4, 2, 59, 101, 17083, 17085, 1, 8848, 113, 59, 1, 8850, 4, 3, 59, 97, 102, 17097, 17099, 17112, 1, 9633, 114, 4, 2, 101, 102, 17106, 17109, 59, 1, 9633, 59, 1, 9642, 59, 1, 9642, 97, 114, 114, 59, 1, 8594, 4, 4, 99, 101, 109, 116, 17131, 17136, 17142, 17148, 114, 59, 3, 55349, 56520, 116, 109, 110, 59, 1, 8726, 105, 108, 101, 59, 1, 8995, 97, 114, 102, 59, 1, 8902, 4, 2, 97, 114, 17160, 17172, 114, 4, 2, 59, 102, 17167, 17169, 1, 9734, 59, 1, 9733, 4, 2, 97, 110, 17178, 17202, 105, 103, 104, 116, 4, 2, 101, 112, 17188, 17197, 112, 115, 105, 108, 111, 110, 59, 1, 1013, 104, 105, 59, 1, 981, 115, 59, 1, 175, 4, 5, 98, 99, 109, 110, 112, 17218, 17351, 17420, 17423, 17427, 4, 9, 59, 69, 100, 101, 109, 110, 112, 114, 115, 17238, 17240, 17243, 17248, 17261, 17267, 17279, 17285, 17291, 1, 8834, 59, 1, 10949, 111, 116, 59, 1, 10941, 4, 2, 59, 100, 17254, 17256, 1, 8838, 111, 116, 59, 1, 10947, 117, 108, 116, 59, 1, 10945, 4, 2, 69, 101, 17273, 17276, 59, 1, 10955, 59, 1, 8842, 108, 117, 115, 59, 1, 10943, 97, 114, 114, 59, 1, 10617, 4, 3, 101, 105, 117, 17299, 17335, 17339, 116, 4, 3, 59, 101, 110, 17308, 17310, 17322, 1, 8834, 113, 4, 2, 59, 113, 17317, 17319, 1, 8838, 59, 1, 10949, 101, 113, 4, 2, 59, 113, 17330, 17332, 1, 8842, 59, 1, 10955, 109, 59, 1, 10951, 4, 2, 98, 112, 17345, 17348, 59, 1, 10965, 59, 1, 10963, 99, 4, 6, 59, 97, 99, 101, 110, 115, 17366, 17368, 17376, 17385, 17389, 17415, 1, 8827, 112, 112, 114, 111, 120, 59, 1, 10936, 117, 114, 108, 121, 101, 113, 59, 1, 8829, 113, 59, 1, 10928, 4, 3, 97, 101, 115, 17397, 17405, 17410, 112, 112, 114, 111, 120, 59, 1, 10938, 113, 113, 59, 1, 10934, 105, 109, 59, 1, 8937, 105, 109, 59, 1, 8831, 59, 1, 8721, 103, 59, 1, 9834, 4, 13, 49, 50, 51, 59, 69, 100, 101, 104, 108, 109, 110, 112, 115, 17455, 17462, 17469, 17476, 17478, 17481, 17496, 17509, 17524, 17530, 17536, 17548, 17554, 5, 185, 1, 59, 17460, 1, 185, 5, 178, 1, 59, 17467, 1, 178, 5, 179, 1, 59, 17474, 1, 179, 1, 8835, 59, 1, 10950, 4, 2, 111, 115, 17487, 17491, 116, 59, 1, 10942, 117, 98, 59, 1, 10968, 4, 2, 59, 100, 17502, 17504, 1, 8839, 111, 116, 59, 1, 10948, 115, 4, 2, 111, 117, 17516, 17520, 108, 59, 1, 10185, 98, 59, 1, 10967, 97, 114, 114, 59, 1, 10619, 117, 108, 116, 59, 1, 10946, 4, 2, 69, 101, 17542, 17545, 59, 1, 10956, 59, 1, 8843, 108, 117, 115, 59, 1, 10944, 4, 3, 101, 105, 117, 17562, 17598, 17602, 116, 4, 3, 59, 101, 110, 17571, 17573, 17585, 1, 8835, 113, 4, 2, 59, 113, 17580, 17582, 1, 8839, 59, 1, 10950, 101, 113, 4, 2, 59, 113, 17593, 17595, 1, 8843, 59, 1, 10956, 109, 59, 1, 10952, 4, 2, 98, 112, 17608, 17611, 59, 1, 10964, 59, 1, 10966, 4, 3, 65, 97, 110, 17622, 17627, 17650, 114, 114, 59, 1, 8665, 114, 4, 2, 104, 114, 17634, 17638, 107, 59, 1, 10534, 4, 2, 59, 111, 17644, 17646, 1, 8601, 119, 59, 1, 8601, 119, 97, 114, 59, 1, 10538, 108, 105, 103, 5, 223, 1, 59, 17664, 1, 223, 4, 13, 97, 98, 99, 100, 101, 102, 104, 105, 111, 112, 114, 115, 119, 17694, 17709, 17714, 17737, 17742, 17749, 17754, 17860, 17905, 17957, 17964, 18090, 18122, 4, 2, 114, 117, 17700, 17706, 103, 101, 116, 59, 1, 8982, 59, 1, 964, 114, 107, 59, 1, 9140, 4, 3, 97, 101, 121, 17722, 17728, 17734, 114, 111, 110, 59, 1, 357, 100, 105, 108, 59, 1, 355, 59, 1, 1090, 111, 116, 59, 1, 8411, 108, 114, 101, 99, 59, 1, 8981, 114, 59, 3, 55349, 56625, 4, 4, 101, 105, 107, 111, 17764, 17805, 17836, 17851, 4, 2, 114, 116, 17770, 17786, 101, 4, 2, 52, 102, 17777, 17780, 59, 1, 8756, 111, 114, 101, 59, 1, 8756, 97, 4, 3, 59, 115, 118, 17795, 17797, 17802, 1, 952, 121, 109, 59, 1, 977, 59, 1, 977, 4, 2, 99, 110, 17811, 17831, 107, 4, 2, 97, 115, 17818, 17826, 112, 112, 114, 111, 120, 59, 1, 8776, 105, 109, 59, 1, 8764, 115, 112, 59, 1, 8201, 4, 2, 97, 115, 17842, 17846, 112, 59, 1, 8776, 105, 109, 59, 1, 8764, 114, 110, 5, 254, 1, 59, 17858, 1, 254, 4, 3, 108, 109, 110, 17868, 17873, 17901, 100, 101, 59, 1, 732, 101, 115, 5, 215, 3, 59, 98, 100, 17884, 17886, 17898, 1, 215, 4, 2, 59, 97, 17892, 17894, 1, 8864, 114, 59, 1, 10801, 59, 1, 10800, 116, 59, 1, 8749, 4, 3, 101, 112, 115, 17913, 17917, 17953, 97, 59, 1, 10536, 4, 4, 59, 98, 99, 102, 17927, 17929, 17934, 17939, 1, 8868, 111, 116, 59, 1, 9014, 105, 114, 59, 1, 10993, 4, 2, 59, 111, 17945, 17948, 3, 55349, 56677, 114, 107, 59, 1, 10970, 97, 59, 1, 10537, 114, 105, 109, 101, 59, 1, 8244, 4, 3, 97, 105, 112, 17972, 17977, 18082, 100, 101, 59, 1, 8482, 4, 7, 97, 100, 101, 109, 112, 115, 116, 17993, 18051, 18056, 18059, 18066, 18072, 18076, 110, 103, 108, 101, 4, 5, 59, 100, 108, 113, 114, 18009, 18011, 18017, 18032, 18035, 1, 9653, 111, 119, 110, 59, 1, 9663, 101, 102, 116, 4, 2, 59, 101, 18026, 18028, 1, 9667, 113, 59, 1, 8884, 59, 1, 8796, 105, 103, 104, 116, 4, 2, 59, 101, 18045, 18047, 1, 9657, 113, 59, 1, 8885, 111, 116, 59, 1, 9708, 59, 1, 8796, 105, 110, 117, 115, 59, 1, 10810, 108, 117, 115, 59, 1, 10809, 98, 59, 1, 10701, 105, 109, 101, 59, 1, 10811, 101, 122, 105, 117, 109, 59, 1, 9186, 4, 3, 99, 104, 116, 18098, 18111, 18116, 4, 2, 114, 121, 18104, 18108, 59, 3, 55349, 56521, 59, 1, 1094, 99, 121, 59, 1, 1115, 114, 111, 107, 59, 1, 359, 4, 2, 105, 111, 18128, 18133, 120, 116, 59, 1, 8812, 104, 101, 97, 100, 4, 2, 108, 114, 18143, 18154, 101, 102, 116, 97, 114, 114, 111, 119, 59, 1, 8606, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8608, 4, 18, 65, 72, 97, 98, 99, 100, 102, 103, 104, 108, 109, 111, 112, 114, 115, 116, 117, 119, 18204, 18209, 18214, 18234, 18250, 18268, 18292, 18308, 18319, 18343, 18379, 18397, 18413, 18504, 18547, 18553, 18584, 18603, 114, 114, 59, 1, 8657, 97, 114, 59, 1, 10595, 4, 2, 99, 114, 18220, 18230, 117, 116, 101, 5, 250, 1, 59, 18228, 1, 250, 114, 59, 1, 8593, 114, 4, 2, 99, 101, 18241, 18245, 121, 59, 1, 1118, 118, 101, 59, 1, 365, 4, 2, 105, 121, 18256, 18265, 114, 99, 5, 251, 1, 59, 18263, 1, 251, 59, 1, 1091, 4, 3, 97, 98, 104, 18276, 18281, 18287, 114, 114, 59, 1, 8645, 108, 97, 99, 59, 1, 369, 97, 114, 59, 1, 10606, 4, 2, 105, 114, 18298, 18304, 115, 104, 116, 59, 1, 10622, 59, 3, 55349, 56626, 114, 97, 118, 101, 5, 249, 1, 59, 18317, 1, 249, 4, 2, 97, 98, 18325, 18338, 114, 4, 2, 108, 114, 18332, 18335, 59, 1, 8639, 59, 1, 8638, 108, 107, 59, 1, 9600, 4, 2, 99, 116, 18349, 18374, 4, 2, 111, 114, 18355, 18369, 114, 110, 4, 2, 59, 101, 18363, 18365, 1, 8988, 114, 59, 1, 8988, 111, 112, 59, 1, 8975, 114, 105, 59, 1, 9720, 4, 2, 97, 108, 18385, 18390, 99, 114, 59, 1, 363, 5, 168, 1, 59, 18395, 1, 168, 4, 2, 103, 112, 18403, 18408, 111, 110, 59, 1, 371, 102, 59, 3, 55349, 56678, 4, 6, 97, 100, 104, 108, 115, 117, 18427, 18434, 18445, 18470, 18475, 18494, 114, 114, 111, 119, 59, 1, 8593, 111, 119, 110, 97, 114, 114, 111, 119, 59, 1, 8597, 97, 114, 112, 111, 111, 110, 4, 2, 108, 114, 18457, 18463, 101, 102, 116, 59, 1, 8639, 105, 103, 104, 116, 59, 1, 8638, 117, 115, 59, 1, 8846, 105, 4, 3, 59, 104, 108, 18484, 18486, 18489, 1, 965, 59, 1, 978, 111, 110, 59, 1, 965, 112, 97, 114, 114, 111, 119, 115, 59, 1, 8648, 4, 3, 99, 105, 116, 18512, 18537, 18542, 4, 2, 111, 114, 18518, 18532, 114, 110, 4, 2, 59, 101, 18526, 18528, 1, 8989, 114, 59, 1, 8989, 111, 112, 59, 1, 8974, 110, 103, 59, 1, 367, 114, 105, 59, 1, 9721, 99, 114, 59, 3, 55349, 56522, 4, 3, 100, 105, 114, 18561, 18566, 18572, 111, 116, 59, 1, 8944, 108, 100, 101, 59, 1, 361, 105, 4, 2, 59, 102, 18579, 18581, 1, 9653, 59, 1, 9652, 4, 2, 97, 109, 18590, 18595, 114, 114, 59, 1, 8648, 108, 5, 252, 1, 59, 18601, 1, 252, 97, 110, 103, 108, 101, 59, 1, 10663, 4, 15, 65, 66, 68, 97, 99, 100, 101, 102, 108, 110, 111, 112, 114, 115, 122, 18643, 18648, 18661, 18667, 18847, 18851, 18857, 18904, 18909, 18915, 18931, 18937, 18943, 18949, 18996, 114, 114, 59, 1, 8661, 97, 114, 4, 2, 59, 118, 18656, 18658, 1, 10984, 59, 1, 10985, 97, 115, 104, 59, 1, 8872, 4, 2, 110, 114, 18673, 18679, 103, 114, 116, 59, 1, 10652, 4, 7, 101, 107, 110, 112, 114, 115, 116, 18695, 18704, 18711, 18720, 18742, 18754, 18810, 112, 115, 105, 108, 111, 110, 59, 1, 1013, 97, 112, 112, 97, 59, 1, 1008, 111, 116, 104, 105, 110, 103, 59, 1, 8709, 4, 3, 104, 105, 114, 18728, 18732, 18735, 105, 59, 1, 981, 59, 1, 982, 111, 112, 116, 111, 59, 1, 8733, 4, 2, 59, 104, 18748, 18750, 1, 8597, 111, 59, 1, 1009, 4, 2, 105, 117, 18760, 18766, 103, 109, 97, 59, 1, 962, 4, 2, 98, 112, 18772, 18791, 115, 101, 116, 110, 101, 113, 4, 2, 59, 113, 18784, 18787, 3, 8842, 65024, 59, 3, 10955, 65024, 115, 101, 116, 110, 101, 113, 4, 2, 59, 113, 18803, 18806, 3, 8843, 65024, 59, 3, 10956, 65024, 4, 2, 104, 114, 18816, 18822, 101, 116, 97, 59, 1, 977, 105, 97, 110, 103, 108, 101, 4, 2, 108, 114, 18834, 18840, 101, 102, 116, 59, 1, 8882, 105, 103, 104, 116, 59, 1, 8883, 121, 59, 1, 1074, 97, 115, 104, 59, 1, 8866, 4, 3, 101, 108, 114, 18865, 18884, 18890, 4, 3, 59, 98, 101, 18873, 18875, 18880, 1, 8744, 97, 114, 59, 1, 8891, 113, 59, 1, 8794, 108, 105, 112, 59, 1, 8942, 4, 2, 98, 116, 18896, 18901, 97, 114, 59, 1, 124, 59, 1, 124, 114, 59, 3, 55349, 56627, 116, 114, 105, 59, 1, 8882, 115, 117, 4, 2, 98, 112, 18923, 18927, 59, 3, 8834, 8402, 59, 3, 8835, 8402, 112, 102, 59, 3, 55349, 56679, 114, 111, 112, 59, 1, 8733, 116, 114, 105, 59, 1, 8883, 4, 2, 99, 117, 18955, 18960, 114, 59, 3, 55349, 56523, 4, 2, 98, 112, 18966, 18981, 110, 4, 2, 69, 101, 18973, 18977, 59, 3, 10955, 65024, 59, 3, 8842, 65024, 110, 4, 2, 69, 101, 18988, 18992, 59, 3, 10956, 65024, 59, 3, 8843, 65024, 105, 103, 122, 97, 103, 59, 1, 10650, 4, 7, 99, 101, 102, 111, 112, 114, 115, 19020, 19026, 19061, 19066, 19072, 19075, 19089, 105, 114, 99, 59, 1, 373, 4, 2, 100, 105, 19032, 19055, 4, 2, 98, 103, 19038, 19043, 97, 114, 59, 1, 10847, 101, 4, 2, 59, 113, 19050, 19052, 1, 8743, 59, 1, 8793, 101, 114, 112, 59, 1, 8472, 114, 59, 3, 55349, 56628, 112, 102, 59, 3, 55349, 56680, 59, 1, 8472, 4, 2, 59, 101, 19081, 19083, 1, 8768, 97, 116, 104, 59, 1, 8768, 99, 114, 59, 3, 55349, 56524, 4, 14, 99, 100, 102, 104, 105, 108, 109, 110, 111, 114, 115, 117, 118, 119, 19125, 19146, 19152, 19157, 19173, 19176, 19192, 19197, 19202, 19236, 19252, 19269, 19286, 19291, 4, 3, 97, 105, 117, 19133, 19137, 19142, 112, 59, 1, 8898, 114, 99, 59, 1, 9711, 112, 59, 1, 8899, 116, 114, 105, 59, 1, 9661, 114, 59, 3, 55349, 56629, 4, 2, 65, 97, 19163, 19168, 114, 114, 59, 1, 10234, 114, 114, 59, 1, 10231, 59, 1, 958, 4, 2, 65, 97, 19182, 19187, 114, 114, 59, 1, 10232, 114, 114, 59, 1, 10229, 97, 112, 59, 1, 10236, 105, 115, 59, 1, 8955, 4, 3, 100, 112, 116, 19210, 19215, 19230, 111, 116, 59, 1, 10752, 4, 2, 102, 108, 19221, 19225, 59, 3, 55349, 56681, 117, 115, 59, 1, 10753, 105, 109, 101, 59, 1, 10754, 4, 2, 65, 97, 19242, 19247, 114, 114, 59, 1, 10233, 114, 114, 59, 1, 10230, 4, 2, 99, 113, 19258, 19263, 114, 59, 3, 55349, 56525, 99, 117, 112, 59, 1, 10758, 4, 2, 112, 116, 19275, 19281, 108, 117, 115, 59, 1, 10756, 114, 105, 59, 1, 9651, 101, 101, 59, 1, 8897, 101, 100, 103, 101, 59, 1, 8896, 4, 8, 97, 99, 101, 102, 105, 111, 115, 117, 19316, 19335, 19349, 19357, 19362, 19367, 19373, 19379, 99, 4, 2, 117, 121, 19323, 19332, 116, 101, 5, 253, 1, 59, 19330, 1, 253, 59, 1, 1103, 4, 2, 105, 121, 19341, 19346, 114, 99, 59, 1, 375, 59, 1, 1099, 110, 5, 165, 1, 59, 19355, 1, 165, 114, 59, 3, 55349, 56630, 99, 121, 59, 1, 1111, 112, 102, 59, 3, 55349, 56682, 99, 114, 59, 3, 55349, 56526, 4, 2, 99, 109, 19385, 19389, 121, 59, 1, 1102, 108, 5, 255, 1, 59, 19395, 1, 255, 4, 10, 97, 99, 100, 101, 102, 104, 105, 111, 115, 119, 19419, 19426, 19441, 19446, 19462, 19467, 19472, 19480, 19486, 19492, 99, 117, 116, 101, 59, 1, 378, 4, 2, 97, 121, 19432, 19438, 114, 111, 110, 59, 1, 382, 59, 1, 1079, 111, 116, 59, 1, 380, 4, 2, 101, 116, 19452, 19458, 116, 114, 102, 59, 1, 8488, 97, 59, 1, 950, 114, 59, 3, 55349, 56631, 99, 121, 59, 1, 1078, 103, 114, 97, 114, 114, 59, 1, 8669, 112, 102, 59, 3, 55349, 56683, 99, 114, 59, 3, 55349, 56527, 4, 2, 106, 110, 19498, 19501, 59, 1, 8205, 106, 59, 1, 8204]);\n }\n});\n\n// node_modules/parse5/lib/tokenizer/index.js\nvar require_tokenizer = __commonJS({\n \"node_modules/parse5/lib/tokenizer/index.js\"(exports2, module2) {\n \"use strict\";\n var Preprocessor = require_preprocessor();\n var unicode = require_unicode();\n var neTree = require_named_entity_data();\n var ERR = require_error_codes();\n var $2 = unicode.CODE_POINTS;\n var $$ = unicode.CODE_POINT_SEQUENCES;\n var C1_CONTROLS_REFERENCE_REPLACEMENTS = {\n 128: 8364,\n 130: 8218,\n 131: 402,\n 132: 8222,\n 133: 8230,\n 134: 8224,\n 135: 8225,\n 136: 710,\n 137: 8240,\n 138: 352,\n 139: 8249,\n 140: 338,\n 142: 381,\n 145: 8216,\n 146: 8217,\n 147: 8220,\n 148: 8221,\n 149: 8226,\n 150: 8211,\n 151: 8212,\n 152: 732,\n 153: 8482,\n 154: 353,\n 155: 8250,\n 156: 339,\n 158: 382,\n 159: 376\n };\n var HAS_DATA_FLAG = 1 << 0;\n var DATA_DUPLET_FLAG = 1 << 1;\n var HAS_BRANCHES_FLAG = 1 << 2;\n var MAX_BRANCH_MARKER_VALUE = HAS_DATA_FLAG | DATA_DUPLET_FLAG | HAS_BRANCHES_FLAG;\n var DATA_STATE = \"DATA_STATE\";\n var RCDATA_STATE = \"RCDATA_STATE\";\n var RAWTEXT_STATE = \"RAWTEXT_STATE\";\n var SCRIPT_DATA_STATE = \"SCRIPT_DATA_STATE\";\n var PLAINTEXT_STATE = \"PLAINTEXT_STATE\";\n var TAG_OPEN_STATE = \"TAG_OPEN_STATE\";\n var END_TAG_OPEN_STATE = \"END_TAG_OPEN_STATE\";\n var TAG_NAME_STATE = \"TAG_NAME_STATE\";\n var RCDATA_LESS_THAN_SIGN_STATE = \"RCDATA_LESS_THAN_SIGN_STATE\";\n var RCDATA_END_TAG_OPEN_STATE = \"RCDATA_END_TAG_OPEN_STATE\";\n var RCDATA_END_TAG_NAME_STATE = \"RCDATA_END_TAG_NAME_STATE\";\n var RAWTEXT_LESS_THAN_SIGN_STATE = \"RAWTEXT_LESS_THAN_SIGN_STATE\";\n var RAWTEXT_END_TAG_OPEN_STATE = \"RAWTEXT_END_TAG_OPEN_STATE\";\n var RAWTEXT_END_TAG_NAME_STATE = \"RAWTEXT_END_TAG_NAME_STATE\";\n var SCRIPT_DATA_LESS_THAN_SIGN_STATE = \"SCRIPT_DATA_LESS_THAN_SIGN_STATE\";\n var SCRIPT_DATA_END_TAG_OPEN_STATE = \"SCRIPT_DATA_END_TAG_OPEN_STATE\";\n var SCRIPT_DATA_END_TAG_NAME_STATE = \"SCRIPT_DATA_END_TAG_NAME_STATE\";\n var SCRIPT_DATA_ESCAPE_START_STATE = \"SCRIPT_DATA_ESCAPE_START_STATE\";\n var SCRIPT_DATA_ESCAPE_START_DASH_STATE = \"SCRIPT_DATA_ESCAPE_START_DASH_STATE\";\n var SCRIPT_DATA_ESCAPED_STATE = \"SCRIPT_DATA_ESCAPED_STATE\";\n var SCRIPT_DATA_ESCAPED_DASH_STATE = \"SCRIPT_DATA_ESCAPED_DASH_STATE\";\n var SCRIPT_DATA_ESCAPED_DASH_DASH_STATE = \"SCRIPT_DATA_ESCAPED_DASH_DASH_STATE\";\n var SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE\";\n var SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE\";\n var SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE\";\n var SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE = \"SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE\";\n var SCRIPT_DATA_DOUBLE_ESCAPED_STATE = \"SCRIPT_DATA_DOUBLE_ESCAPED_STATE\";\n var SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE\";\n var SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE\";\n var SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE\";\n var SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE = \"SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE\";\n var BEFORE_ATTRIBUTE_NAME_STATE = \"BEFORE_ATTRIBUTE_NAME_STATE\";\n var ATTRIBUTE_NAME_STATE = \"ATTRIBUTE_NAME_STATE\";\n var AFTER_ATTRIBUTE_NAME_STATE = \"AFTER_ATTRIBUTE_NAME_STATE\";\n var BEFORE_ATTRIBUTE_VALUE_STATE = \"BEFORE_ATTRIBUTE_VALUE_STATE\";\n var ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE\";\n var ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE = \"ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE\";\n var ATTRIBUTE_VALUE_UNQUOTED_STATE = \"ATTRIBUTE_VALUE_UNQUOTED_STATE\";\n var AFTER_ATTRIBUTE_VALUE_QUOTED_STATE = \"AFTER_ATTRIBUTE_VALUE_QUOTED_STATE\";\n var SELF_CLOSING_START_TAG_STATE = \"SELF_CLOSING_START_TAG_STATE\";\n var BOGUS_COMMENT_STATE = \"BOGUS_COMMENT_STATE\";\n var MARKUP_DECLARATION_OPEN_STATE = \"MARKUP_DECLARATION_OPEN_STATE\";\n var COMMENT_START_STATE = \"COMMENT_START_STATE\";\n var COMMENT_START_DASH_STATE = \"COMMENT_START_DASH_STATE\";\n var COMMENT_STATE = \"COMMENT_STATE\";\n var COMMENT_LESS_THAN_SIGN_STATE = \"COMMENT_LESS_THAN_SIGN_STATE\";\n var COMMENT_LESS_THAN_SIGN_BANG_STATE = \"COMMENT_LESS_THAN_SIGN_BANG_STATE\";\n var COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE\";\n var COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE\";\n var COMMENT_END_DASH_STATE = \"COMMENT_END_DASH_STATE\";\n var COMMENT_END_STATE = \"COMMENT_END_STATE\";\n var COMMENT_END_BANG_STATE = \"COMMENT_END_BANG_STATE\";\n var DOCTYPE_STATE = \"DOCTYPE_STATE\";\n var BEFORE_DOCTYPE_NAME_STATE = \"BEFORE_DOCTYPE_NAME_STATE\";\n var DOCTYPE_NAME_STATE = \"DOCTYPE_NAME_STATE\";\n var AFTER_DOCTYPE_NAME_STATE = \"AFTER_DOCTYPE_NAME_STATE\";\n var AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE = \"AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE\";\n var BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE\";\n var DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE\";\n var DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE\";\n var AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE\";\n var BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE\";\n var AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE = \"AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE\";\n var BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE\";\n var DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE\";\n var DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE\";\n var AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE\";\n var BOGUS_DOCTYPE_STATE = \"BOGUS_DOCTYPE_STATE\";\n var CDATA_SECTION_STATE = \"CDATA_SECTION_STATE\";\n var CDATA_SECTION_BRACKET_STATE = \"CDATA_SECTION_BRACKET_STATE\";\n var CDATA_SECTION_END_STATE = \"CDATA_SECTION_END_STATE\";\n var CHARACTER_REFERENCE_STATE = \"CHARACTER_REFERENCE_STATE\";\n var NAMED_CHARACTER_REFERENCE_STATE = \"NAMED_CHARACTER_REFERENCE_STATE\";\n var AMBIGUOUS_AMPERSAND_STATE = \"AMBIGUOS_AMPERSAND_STATE\";\n var NUMERIC_CHARACTER_REFERENCE_STATE = \"NUMERIC_CHARACTER_REFERENCE_STATE\";\n var HEXADEMICAL_CHARACTER_REFERENCE_START_STATE = \"HEXADEMICAL_CHARACTER_REFERENCE_START_STATE\";\n var DECIMAL_CHARACTER_REFERENCE_START_STATE = \"DECIMAL_CHARACTER_REFERENCE_START_STATE\";\n var HEXADEMICAL_CHARACTER_REFERENCE_STATE = \"HEXADEMICAL_CHARACTER_REFERENCE_STATE\";\n var DECIMAL_CHARACTER_REFERENCE_STATE = \"DECIMAL_CHARACTER_REFERENCE_STATE\";\n var NUMERIC_CHARACTER_REFERENCE_END_STATE = \"NUMERIC_CHARACTER_REFERENCE_END_STATE\";\n function isWhitespace(cp) {\n return cp === $2.SPACE || cp === $2.LINE_FEED || cp === $2.TABULATION || cp === $2.FORM_FEED;\n }\n function isAsciiDigit(cp) {\n return cp >= $2.DIGIT_0 && cp <= $2.DIGIT_9;\n }\n function isAsciiUpper(cp) {\n return cp >= $2.LATIN_CAPITAL_A && cp <= $2.LATIN_CAPITAL_Z;\n }\n function isAsciiLower(cp) {\n return cp >= $2.LATIN_SMALL_A && cp <= $2.LATIN_SMALL_Z;\n }\n function isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n }\n function isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n }\n function isAsciiUpperHexDigit(cp) {\n return cp >= $2.LATIN_CAPITAL_A && cp <= $2.LATIN_CAPITAL_F;\n }\n function isAsciiLowerHexDigit(cp) {\n return cp >= $2.LATIN_SMALL_A && cp <= $2.LATIN_SMALL_F;\n }\n function isAsciiHexDigit(cp) {\n return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n }\n function toAsciiLowerCodePoint(cp) {\n return cp + 32;\n }\n function toChar(cp) {\n if (cp <= 65535) {\n return String.fromCharCode(cp);\n }\n cp -= 65536;\n return String.fromCharCode(cp >>> 10 & 1023 | 55296) + String.fromCharCode(56320 | cp & 1023);\n }\n function toAsciiLowerChar(cp) {\n return String.fromCharCode(toAsciiLowerCodePoint(cp));\n }\n function findNamedEntityTreeBranch(nodeIx, cp) {\n const branchCount = neTree[++nodeIx];\n let lo = ++nodeIx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = lo + hi >>> 1;\n const midCp = neTree[mid];\n if (midCp < cp) {\n lo = mid + 1;\n } else if (midCp > cp) {\n hi = mid - 1;\n } else {\n return neTree[mid + branchCount];\n }\n }\n return -1;\n }\n var Tokenizer = class {\n constructor() {\n this.preprocessor = new Preprocessor();\n this.tokenQueue = [];\n this.allowCDATA = false;\n this.state = DATA_STATE;\n this.returnState = \"\";\n this.charRefCode = -1;\n this.tempBuff = [];\n this.lastStartTagName = \"\";\n this.consumedAfterSnapshot = -1;\n this.active = false;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = null;\n }\n _err() {\n }\n _errOnNextCodePoint(err) {\n this._consume();\n this._err(err);\n this._unconsume();\n }\n getNextToken() {\n while (!this.tokenQueue.length && this.active) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this[this.state](cp);\n }\n }\n return this.tokenQueue.shift();\n }\n write(chunk, isLastChunk) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n }\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n for (; this.consumedAfterSnapshot > 0; this.consumedAfterSnapshot--) {\n this.preprocessor.retreat();\n }\n this.active = false;\n this.tokenQueue.push({ type: Tokenizer.HIBERNATION_TOKEN });\n return true;\n }\n return false;\n }\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _unconsume() {\n this.consumedAfterSnapshot--;\n this.preprocessor.retreat();\n }\n _reconsumeInState(state) {\n this.state = state;\n this._unconsume();\n }\n _consumeSequenceIfMatch(pattern, startCp, caseSensitive) {\n let consumedCount = 0;\n let isMatch = true;\n const patternLength = pattern.length;\n let patternPos = 0;\n let cp = startCp;\n let patternCp = void 0;\n for (; patternPos < patternLength; patternPos++) {\n if (patternPos > 0) {\n cp = this._consume();\n consumedCount++;\n }\n if (cp === $2.EOF) {\n isMatch = false;\n break;\n }\n patternCp = pattern[patternPos];\n if (cp !== patternCp && (caseSensitive || cp !== toAsciiLowerCodePoint(patternCp))) {\n isMatch = false;\n break;\n }\n }\n if (!isMatch) {\n while (consumedCount--) {\n this._unconsume();\n }\n }\n return isMatch;\n }\n _isTempBufferEqualToScriptString() {\n if (this.tempBuff.length !== $$.SCRIPT_STRING.length) {\n return false;\n }\n for (let i3 = 0; i3 < this.tempBuff.length; i3++) {\n if (this.tempBuff[i3] !== $$.SCRIPT_STRING[i3]) {\n return false;\n }\n }\n return true;\n }\n _createStartTagToken() {\n this.currentToken = {\n type: Tokenizer.START_TAG_TOKEN,\n tagName: \"\",\n selfClosing: false,\n ackSelfClosing: false,\n attrs: []\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: Tokenizer.END_TAG_TOKEN,\n tagName: \"\",\n selfClosing: false,\n attrs: []\n };\n }\n _createCommentToken() {\n this.currentToken = {\n type: Tokenizer.COMMENT_TOKEN,\n data: \"\"\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: Tokenizer.DOCTYPE_TOKEN,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null\n };\n }\n _createCharacterToken(type, ch) {\n this.currentCharacterToken = {\n type,\n chars: ch\n };\n }\n _createEOFToken() {\n this.currentToken = { type: Tokenizer.EOF_TOKEN };\n }\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: \"\"\n };\n }\n _leaveAttrName(toState) {\n if (Tokenizer.getTokenAttr(this.currentToken, this.currentAttr.name) === null) {\n this.currentToken.attrs.push(this.currentAttr);\n } else {\n this._err(ERR.duplicateAttribute);\n }\n this.state = toState;\n }\n _leaveAttrValue(toState) {\n this.state = toState;\n }\n _emitCurrentToken() {\n this._emitCurrentCharacterToken();\n const ct = this.currentToken;\n this.currentToken = null;\n if (ct.type === Tokenizer.START_TAG_TOKEN) {\n this.lastStartTagName = ct.tagName;\n } else if (ct.type === Tokenizer.END_TAG_TOKEN) {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n }\n this.tokenQueue.push(ct);\n }\n _emitCurrentCharacterToken() {\n if (this.currentCharacterToken) {\n this.tokenQueue.push(this.currentCharacterToken);\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n this._createEOFToken();\n this._emitCurrentToken();\n }\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken && this.currentCharacterToken.type !== type) {\n this._emitCurrentCharacterToken();\n }\n if (this.currentCharacterToken) {\n this.currentCharacterToken.chars += ch;\n } else {\n this._createCharacterToken(type, ch);\n }\n }\n _emitCodePoint(cp) {\n let type = Tokenizer.CHARACTER_TOKEN;\n if (isWhitespace(cp)) {\n type = Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n } else if (cp === $2.NULL) {\n type = Tokenizer.NULL_CHARACTER_TOKEN;\n }\n this._appendCharToCurrentCharacterToken(type, toChar(cp));\n }\n _emitSeveralCodePoints(codePoints) {\n for (let i3 = 0; i3 < codePoints.length; i3++) {\n this._emitCodePoint(codePoints[i3]);\n }\n }\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(Tokenizer.CHARACTER_TOKEN, ch);\n }\n _matchNamedCharacterReference(startCp) {\n let result = null;\n let excess = 1;\n let i3 = findNamedEntityTreeBranch(0, startCp);\n this.tempBuff.push(startCp);\n while (i3 > -1) {\n const current = neTree[i3];\n const inNode = current < MAX_BRANCH_MARKER_VALUE;\n const nodeWithData = inNode && current & HAS_DATA_FLAG;\n if (nodeWithData) {\n result = current & DATA_DUPLET_FLAG ? [neTree[++i3], neTree[++i3]] : [neTree[++i3]];\n excess = 0;\n }\n const cp = this._consume();\n this.tempBuff.push(cp);\n excess++;\n if (cp === $2.EOF) {\n break;\n }\n if (inNode) {\n i3 = current & HAS_BRANCHES_FLAG ? findNamedEntityTreeBranch(i3, cp) : -1;\n } else {\n i3 = cp === current ? ++i3 : -1;\n }\n }\n while (excess--) {\n this.tempBuff.pop();\n this._unconsume();\n }\n return result;\n }\n _isCharacterReferenceInAttribute() {\n return this.returnState === ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE || this.returnState === ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE || this.returnState === ATTRIBUTE_VALUE_UNQUOTED_STATE;\n }\n _isCharacterReferenceAttributeQuirk(withSemicolon) {\n if (!withSemicolon && this._isCharacterReferenceInAttribute()) {\n const nextCp = this._consume();\n this._unconsume();\n return nextCp === $2.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n }\n return false;\n }\n _flushCodePointsConsumedAsCharacterReference() {\n if (this._isCharacterReferenceInAttribute()) {\n for (let i3 = 0; i3 < this.tempBuff.length; i3++) {\n this.currentAttr.value += toChar(this.tempBuff[i3]);\n }\n } else {\n this._emitSeveralCodePoints(this.tempBuff);\n }\n this.tempBuff = [];\n }\n [DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n if (cp === $2.LESS_THAN_SIGN) {\n this.state = TAG_OPEN_STATE;\n } else if (cp === $2.AMPERSAND) {\n this.returnState = DATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n } else if (cp === $2.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n [RCDATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n if (cp === $2.AMPERSAND) {\n this.returnState = RCDATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $2.LESS_THAN_SIGN) {\n this.state = RCDATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $2.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n [RAWTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n if (cp === $2.LESS_THAN_SIGN) {\n this.state = RAWTEXT_LESS_THAN_SIGN_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $2.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n [SCRIPT_DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n if (cp === $2.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $2.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n [PLAINTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $2.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n [TAG_OPEN_STATE](cp) {\n if (cp === $2.EXCLAMATION_MARK) {\n this.state = MARKUP_DECLARATION_OPEN_STATE;\n } else if (cp === $2.SOLIDUS) {\n this.state = END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $2.QUESTION_MARK) {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n } else if (cp === $2.EOF) {\n this._err(ERR.eofBeforeTagName);\n this._emitChars(\"<\");\n this._emitEOFToken();\n } else {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars(\"<\");\n this._reconsumeInState(DATA_STATE);\n }\n }\n [END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.missingEndTagName);\n this.state = DATA_STATE;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofBeforeTagName);\n this._emitChars(\"\");\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n [SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $2.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this.tempBuff = [];\n this._emitChars(\"<\");\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE);\n } else {\n this._emitChars(\"<\");\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n [SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE);\n } else {\n this._emitChars(\"\");\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n [SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $2.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE;\n this._emitChars(\"/\");\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n [SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE](cp) {\n if (isWhitespace(cp) || cp === $2.SOLIDUS || cp === $2.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString() ? SCRIPT_DATA_ESCAPED_STATE : SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n [BEFORE_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $2.SOLIDUS || cp === $2.GREATER_THAN_SIGN || cp === $2.EOF) {\n this._reconsumeInState(AFTER_ATTRIBUTE_NAME_STATE);\n } else if (cp === $2.EQUALS_SIGN) {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr(\"=\");\n this.state = ATTRIBUTE_NAME_STATE;\n } else {\n this._createAttr(\"\");\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n [ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp) || cp === $2.SOLIDUS || cp === $2.GREATER_THAN_SIGN || cp === $2.EOF) {\n this._leaveAttrName(AFTER_ATTRIBUTE_NAME_STATE);\n this._unconsume();\n } else if (cp === $2.EQUALS_SIGN) {\n this._leaveAttrName(BEFORE_ATTRIBUTE_VALUE_STATE);\n } else if (isAsciiUpper(cp)) {\n this.currentAttr.name += toAsciiLowerChar(cp);\n } else if (cp === $2.QUOTATION_MARK || cp === $2.APOSTROPHE || cp === $2.LESS_THAN_SIGN) {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += toChar(cp);\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += unicode.REPLACEMENT_CHARACTER;\n } else {\n this.currentAttr.name += toChar(cp);\n }\n }\n [AFTER_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $2.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $2.EQUALS_SIGN) {\n this.state = BEFORE_ATTRIBUTE_VALUE_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._createAttr(\"\");\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n [BEFORE_ATTRIBUTE_VALUE_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $2.QUOTATION_MARK) {\n this.state = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n } else if (cp === $2.APOSTROPHE) {\n this.state = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.missingAttributeValue);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(ATTRIBUTE_VALUE_UNQUOTED_STATE);\n }\n }\n [ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $2.QUOTATION_MARK) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $2.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n [ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE](cp) {\n if (cp === $2.APOSTROPHE) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $2.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n [ATTRIBUTE_VALUE_UNQUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $2.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_UNQUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $2.QUOTATION_MARK || cp === $2.APOSTROPHE || cp === $2.LESS_THAN_SIGN || cp === $2.EQUALS_SIGN || cp === $2.GRAVE_ACCENT) {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += toChar(cp);\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n [AFTER_ATTRIBUTE_VALUE_QUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $2.SOLIDUS) {\n this._leaveAttrValue(SELF_CLOSING_START_TAG_STATE);\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n [SELF_CLOSING_START_TAG_STATE](cp) {\n if (cp === $2.GREATER_THAN_SIGN) {\n this.currentToken.selfClosing = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR.unexpectedSolidusInTag);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n [BOGUS_COMMENT_STATE](cp) {\n if (cp === $2.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $2.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n [MARKUP_DECLARATION_OPEN_STATE](cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH_STRING, cp, true)) {\n this._createCommentToken();\n this.state = COMMENT_START_STATE;\n } else if (this._consumeSequenceIfMatch($$.DOCTYPE_STRING, cp, false)) {\n this.state = DOCTYPE_STATE;\n } else if (this._consumeSequenceIfMatch($$.CDATA_START_STRING, cp, true)) {\n if (this.allowCDATA) {\n this.state = CDATA_SECTION_STATE;\n } else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken();\n this.currentToken.data = \"[CDATA[\";\n this.state = BOGUS_COMMENT_STATE;\n }\n } else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n [COMMENT_START_STATE](cp) {\n if (cp === $2.HYPHEN_MINUS) {\n this.state = COMMENT_START_DASH_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n [COMMENT_START_DASH_STATE](cp) {\n if (cp === $2.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += \"-\";\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n [COMMENT_STATE](cp) {\n if (cp === $2.HYPHEN_MINUS) {\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $2.LESS_THAN_SIGN) {\n this.currentToken.data += \"<\";\n this.state = COMMENT_LESS_THAN_SIGN_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n [COMMENT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $2.EXCLAMATION_MARK) {\n this.currentToken.data += \"!\";\n this.state = COMMENT_LESS_THAN_SIGN_BANG_STATE;\n } else if (cp === $2.LESS_THAN_SIGN) {\n this.currentToken.data += \"!\";\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n [COMMENT_LESS_THAN_SIGN_BANG_STATE](cp) {\n if (cp === $2.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE](cp) {\n if (cp === $2.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_END_DASH_STATE);\n }\n }\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE](cp) {\n if (cp !== $2.GREATER_THAN_SIGN && cp !== $2.EOF) {\n this._err(ERR.nestedComment);\n }\n this._reconsumeInState(COMMENT_END_STATE);\n }\n [COMMENT_END_DASH_STATE](cp) {\n if (cp === $2.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += \"-\";\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n [COMMENT_END_STATE](cp) {\n if (cp === $2.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $2.EXCLAMATION_MARK) {\n this.state = COMMENT_END_BANG_STATE;\n } else if (cp === $2.HYPHEN_MINUS) {\n this.currentToken.data += \"-\";\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += \"--\";\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n [COMMENT_END_BANG_STATE](cp) {\n if (cp === $2.HYPHEN_MINUS) {\n this.currentToken.data += \"--!\";\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.incorrectlyClosedComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += \"--!\";\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n [DOCTYPE_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_NAME_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n }\n }\n [BEFORE_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(toAsciiLowerChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(unicode.REPLACEMENT_CHARACTER);\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._createDoctypeToken(toChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n }\n }\n [DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = AFTER_DOCTYPE_NAME_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.name += toAsciiLowerChar(cp);\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.name += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.name += toChar(cp);\n }\n }\n [AFTER_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $2.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (this._consumeSequenceIfMatch($$.PUBLIC_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE;\n } else if (this._consumeSequenceIfMatch($$.SYSTEM_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE;\n } else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n [AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $2.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = \"\";\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $2.APOSTROPHE) {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = \"\";\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n [BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $2.QUOTATION_MARK) {\n this.currentToken.publicId = \"\";\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $2.APOSTROPHE) {\n this.currentToken.publicId = \"\";\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n [DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $2.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n [DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $2.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n [AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $2.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $2.APOSTROPHE) {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n [BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $2.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $2.QUOTATION_MARK) {\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $2.APOSTROPHE) {\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n [AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $2.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $2.APOSTROPHE) {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n [BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $2.QUOTATION_MARK) {\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $2.APOSTROPHE) {\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n [DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $2.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n [DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $2.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $2.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n [AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $2.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n [BOGUS_DOCTYPE_STATE](cp) {\n if (cp === $2.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $2.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n } else if (cp === $2.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n }\n }\n [CDATA_SECTION_STATE](cp) {\n if (cp === $2.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_BRACKET_STATE;\n } else if (cp === $2.EOF) {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n [CDATA_SECTION_BRACKET_STATE](cp) {\n if (cp === $2.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_END_STATE;\n } else {\n this._emitChars(\"]\");\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n [CDATA_SECTION_END_STATE](cp) {\n if (cp === $2.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n } else if (cp === $2.RIGHT_SQUARE_BRACKET) {\n this._emitChars(\"]\");\n } else {\n this._emitChars(\"]]\");\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n [CHARACTER_REFERENCE_STATE](cp) {\n this.tempBuff = [$2.AMPERSAND];\n if (cp === $2.NUMBER_SIGN) {\n this.tempBuff.push(cp);\n this.state = NUMERIC_CHARACTER_REFERENCE_STATE;\n } else if (isAsciiAlphaNumeric(cp)) {\n this._reconsumeInState(NAMED_CHARACTER_REFERENCE_STATE);\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n [NAMED_CHARACTER_REFERENCE_STATE](cp) {\n const matchResult = this._matchNamedCharacterReference(cp);\n if (this._ensureHibernation()) {\n this.tempBuff = [$2.AMPERSAND];\n } else if (matchResult) {\n const withSemicolon = this.tempBuff[this.tempBuff.length - 1] === $2.SEMICOLON;\n if (!this._isCharacterReferenceAttributeQuirk(withSemicolon)) {\n if (!withSemicolon) {\n this._errOnNextCodePoint(ERR.missingSemicolonAfterCharacterReference);\n }\n this.tempBuff = matchResult;\n }\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = this.returnState;\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = AMBIGUOUS_AMPERSAND_STATE;\n }\n }\n [AMBIGUOUS_AMPERSAND_STATE](cp) {\n if (isAsciiAlphaNumeric(cp)) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += toChar(cp);\n } else {\n this._emitCodePoint(cp);\n }\n } else {\n if (cp === $2.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n this._reconsumeInState(this.returnState);\n }\n }\n [NUMERIC_CHARACTER_REFERENCE_STATE](cp) {\n this.charRefCode = 0;\n if (cp === $2.LATIN_SMALL_X || cp === $2.LATIN_CAPITAL_X) {\n this.tempBuff.push(cp);\n this.state = HEXADEMICAL_CHARACTER_REFERENCE_START_STATE;\n } else {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_START_STATE);\n }\n }\n [HEXADEMICAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiHexDigit(cp)) {\n this._reconsumeInState(HEXADEMICAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n [DECIMAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n [HEXADEMICAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiUpperHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 55;\n } else if (isAsciiLowerHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 87;\n } else if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 48;\n } else if (cp === $2.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n [DECIMAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 10 + cp - 48;\n } else if (cp === $2.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n [NUMERIC_CHARACTER_REFERENCE_END_STATE]() {\n if (this.charRefCode === $2.NULL) {\n this._err(ERR.nullCharacterReference);\n this.charRefCode = $2.REPLACEMENT_CHARACTER;\n } else if (this.charRefCode > 1114111) {\n this._err(ERR.characterReferenceOutsideUnicodeRange);\n this.charRefCode = $2.REPLACEMENT_CHARACTER;\n } else if (unicode.isSurrogate(this.charRefCode)) {\n this._err(ERR.surrogateCharacterReference);\n this.charRefCode = $2.REPLACEMENT_CHARACTER;\n } else if (unicode.isUndefinedCodePoint(this.charRefCode)) {\n this._err(ERR.noncharacterCharacterReference);\n } else if (unicode.isControlCodePoint(this.charRefCode) || this.charRefCode === $2.CARRIAGE_RETURN) {\n this._err(ERR.controlCharacterReference);\n const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS[this.charRefCode];\n if (replacement) {\n this.charRefCode = replacement;\n }\n }\n this.tempBuff = [this.charRefCode];\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n };\n Tokenizer.CHARACTER_TOKEN = \"CHARACTER_TOKEN\";\n Tokenizer.NULL_CHARACTER_TOKEN = \"NULL_CHARACTER_TOKEN\";\n Tokenizer.WHITESPACE_CHARACTER_TOKEN = \"WHITESPACE_CHARACTER_TOKEN\";\n Tokenizer.START_TAG_TOKEN = \"START_TAG_TOKEN\";\n Tokenizer.END_TAG_TOKEN = \"END_TAG_TOKEN\";\n Tokenizer.COMMENT_TOKEN = \"COMMENT_TOKEN\";\n Tokenizer.DOCTYPE_TOKEN = \"DOCTYPE_TOKEN\";\n Tokenizer.EOF_TOKEN = \"EOF_TOKEN\";\n Tokenizer.HIBERNATION_TOKEN = \"HIBERNATION_TOKEN\";\n Tokenizer.MODE = {\n DATA: DATA_STATE,\n RCDATA: RCDATA_STATE,\n RAWTEXT: RAWTEXT_STATE,\n SCRIPT_DATA: SCRIPT_DATA_STATE,\n PLAINTEXT: PLAINTEXT_STATE\n };\n Tokenizer.getTokenAttr = function(token, attrName) {\n for (let i3 = token.attrs.length - 1; i3 >= 0; i3--) {\n if (token.attrs[i3].name === attrName) {\n return token.attrs[i3].value;\n }\n }\n return null;\n };\n module2.exports = Tokenizer;\n }\n});\n\n// node_modules/parse5/lib/common/html.js\nvar require_html = __commonJS({\n \"node_modules/parse5/lib/common/html.js\"(exports2) {\n \"use strict\";\n var NS = exports2.NAMESPACES = {\n HTML: \"http://www.w3.org/1999/xhtml\",\n MATHML: \"http://www.w3.org/1998/Math/MathML\",\n SVG: \"http://www.w3.org/2000/svg\",\n XLINK: \"http://www.w3.org/1999/xlink\",\n XML: \"http://www.w3.org/XML/1998/namespace\",\n XMLNS: \"http://www.w3.org/2000/xmlns/\"\n };\n exports2.ATTRS = {\n TYPE: \"type\",\n ACTION: \"action\",\n ENCODING: \"encoding\",\n PROMPT: \"prompt\",\n NAME: \"name\",\n COLOR: \"color\",\n FACE: \"face\",\n SIZE: \"size\"\n };\n exports2.DOCUMENT_MODE = {\n NO_QUIRKS: \"no-quirks\",\n QUIRKS: \"quirks\",\n LIMITED_QUIRKS: \"limited-quirks\"\n };\n var $2 = exports2.TAG_NAMES = {\n A: \"a\",\n ADDRESS: \"address\",\n ANNOTATION_XML: \"annotation-xml\",\n APPLET: \"applet\",\n AREA: \"area\",\n ARTICLE: \"article\",\n ASIDE: \"aside\",\n B: \"b\",\n BASE: \"base\",\n BASEFONT: \"basefont\",\n BGSOUND: \"bgsound\",\n BIG: \"big\",\n BLOCKQUOTE: \"blockquote\",\n BODY: \"body\",\n BR: \"br\",\n BUTTON: \"button\",\n CAPTION: \"caption\",\n CENTER: \"center\",\n CODE: \"code\",\n COL: \"col\",\n COLGROUP: \"colgroup\",\n DD: \"dd\",\n DESC: \"desc\",\n DETAILS: \"details\",\n DIALOG: \"dialog\",\n DIR: \"dir\",\n DIV: \"div\",\n DL: \"dl\",\n DT: \"dt\",\n EM: \"em\",\n EMBED: \"embed\",\n FIELDSET: \"fieldset\",\n FIGCAPTION: \"figcaption\",\n FIGURE: \"figure\",\n FONT: \"font\",\n FOOTER: \"footer\",\n FOREIGN_OBJECT: \"foreignObject\",\n FORM: \"form\",\n FRAME: \"frame\",\n FRAMESET: \"frameset\",\n H1: \"h1\",\n H2: \"h2\",\n H3: \"h3\",\n H4: \"h4\",\n H5: \"h5\",\n H6: \"h6\",\n HEAD: \"head\",\n HEADER: \"header\",\n HGROUP: \"hgroup\",\n HR: \"hr\",\n HTML: \"html\",\n I: \"i\",\n IMG: \"img\",\n IMAGE: \"image\",\n INPUT: \"input\",\n IFRAME: \"iframe\",\n KEYGEN: \"keygen\",\n LABEL: \"label\",\n LI: \"li\",\n LINK: \"link\",\n LISTING: \"listing\",\n MAIN: \"main\",\n MALIGNMARK: \"malignmark\",\n MARQUEE: \"marquee\",\n MATH: \"math\",\n MENU: \"menu\",\n META: \"meta\",\n MGLYPH: \"mglyph\",\n MI: \"mi\",\n MO: \"mo\",\n MN: \"mn\",\n MS: \"ms\",\n MTEXT: \"mtext\",\n NAV: \"nav\",\n NOBR: \"nobr\",\n NOFRAMES: \"noframes\",\n NOEMBED: \"noembed\",\n NOSCRIPT: \"noscript\",\n OBJECT: \"object\",\n OL: \"ol\",\n OPTGROUP: \"optgroup\",\n OPTION: \"option\",\n P: \"p\",\n PARAM: \"param\",\n PLAINTEXT: \"plaintext\",\n PRE: \"pre\",\n RB: \"rb\",\n RP: \"rp\",\n RT: \"rt\",\n RTC: \"rtc\",\n RUBY: \"ruby\",\n S: \"s\",\n SCRIPT: \"script\",\n SECTION: \"section\",\n SELECT: \"select\",\n SOURCE: \"source\",\n SMALL: \"small\",\n SPAN: \"span\",\n STRIKE: \"strike\",\n STRONG: \"strong\",\n STYLE: \"style\",\n SUB: \"sub\",\n SUMMARY: \"summary\",\n SUP: \"sup\",\n TABLE: \"table\",\n TBODY: \"tbody\",\n TEMPLATE: \"template\",\n TEXTAREA: \"textarea\",\n TFOOT: \"tfoot\",\n TD: \"td\",\n TH: \"th\",\n THEAD: \"thead\",\n TITLE: \"title\",\n TR: \"tr\",\n TRACK: \"track\",\n TT: \"tt\",\n U: \"u\",\n UL: \"ul\",\n SVG: \"svg\",\n VAR: \"var\",\n WBR: \"wbr\",\n XMP: \"xmp\"\n };\n exports2.SPECIAL_ELEMENTS = {\n [NS.HTML]: {\n [$2.ADDRESS]: true,\n [$2.APPLET]: true,\n [$2.AREA]: true,\n [$2.ARTICLE]: true,\n [$2.ASIDE]: true,\n [$2.BASE]: true,\n [$2.BASEFONT]: true,\n [$2.BGSOUND]: true,\n [$2.BLOCKQUOTE]: true,\n [$2.BODY]: true,\n [$2.BR]: true,\n [$2.BUTTON]: true,\n [$2.CAPTION]: true,\n [$2.CENTER]: true,\n [$2.COL]: true,\n [$2.COLGROUP]: true,\n [$2.DD]: true,\n [$2.DETAILS]: true,\n [$2.DIR]: true,\n [$2.DIV]: true,\n [$2.DL]: true,\n [$2.DT]: true,\n [$2.EMBED]: true,\n [$2.FIELDSET]: true,\n [$2.FIGCAPTION]: true,\n [$2.FIGURE]: true,\n [$2.FOOTER]: true,\n [$2.FORM]: true,\n [$2.FRAME]: true,\n [$2.FRAMESET]: true,\n [$2.H1]: true,\n [$2.H2]: true,\n [$2.H3]: true,\n [$2.H4]: true,\n [$2.H5]: true,\n [$2.H6]: true,\n [$2.HEAD]: true,\n [$2.HEADER]: true,\n [$2.HGROUP]: true,\n [$2.HR]: true,\n [$2.HTML]: true,\n [$2.IFRAME]: true,\n [$2.IMG]: true,\n [$2.INPUT]: true,\n [$2.LI]: true,\n [$2.LINK]: true,\n [$2.LISTING]: true,\n [$2.MAIN]: true,\n [$2.MARQUEE]: true,\n [$2.MENU]: true,\n [$2.META]: true,\n [$2.NAV]: true,\n [$2.NOEMBED]: true,\n [$2.NOFRAMES]: true,\n [$2.NOSCRIPT]: true,\n [$2.OBJECT]: true,\n [$2.OL]: true,\n [$2.P]: true,\n [$2.PARAM]: true,\n [$2.PLAINTEXT]: true,\n [$2.PRE]: true,\n [$2.SCRIPT]: true,\n [$2.SECTION]: true,\n [$2.SELECT]: true,\n [$2.SOURCE]: true,\n [$2.STYLE]: true,\n [$2.SUMMARY]: true,\n [$2.TABLE]: true,\n [$2.TBODY]: true,\n [$2.TD]: true,\n [$2.TEMPLATE]: true,\n [$2.TEXTAREA]: true,\n [$2.TFOOT]: true,\n [$2.TH]: true,\n [$2.THEAD]: true,\n [$2.TITLE]: true,\n [$2.TR]: true,\n [$2.TRACK]: true,\n [$2.UL]: true,\n [$2.WBR]: true,\n [$2.XMP]: true\n },\n [NS.MATHML]: {\n [$2.MI]: true,\n [$2.MO]: true,\n [$2.MN]: true,\n [$2.MS]: true,\n [$2.MTEXT]: true,\n [$2.ANNOTATION_XML]: true\n },\n [NS.SVG]: {\n [$2.TITLE]: true,\n [$2.FOREIGN_OBJECT]: true,\n [$2.DESC]: true\n }\n };\n }\n});\n\n// node_modules/parse5/lib/parser/open-element-stack.js\nvar require_open_element_stack = __commonJS({\n \"node_modules/parse5/lib/parser/open-element-stack.js\"(exports2, module2) {\n \"use strict\";\n var HTML2 = require_html();\n var $2 = HTML2.TAG_NAMES;\n var NS = HTML2.NAMESPACES;\n function isImpliedEndTagRequired(tn3) {\n switch (tn3.length) {\n case 1:\n return tn3 === $2.P;\n case 2:\n return tn3 === $2.RB || tn3 === $2.RP || tn3 === $2.RT || tn3 === $2.DD || tn3 === $2.DT || tn3 === $2.LI;\n case 3:\n return tn3 === $2.RTC;\n case 6:\n return tn3 === $2.OPTION;\n case 8:\n return tn3 === $2.OPTGROUP;\n }\n return false;\n }\n function isImpliedEndTagRequiredThoroughly(tn3) {\n switch (tn3.length) {\n case 1:\n return tn3 === $2.P;\n case 2:\n return tn3 === $2.RB || tn3 === $2.RP || tn3 === $2.RT || tn3 === $2.DD || tn3 === $2.DT || tn3 === $2.LI || tn3 === $2.TD || tn3 === $2.TH || tn3 === $2.TR;\n case 3:\n return tn3 === $2.RTC;\n case 5:\n return tn3 === $2.TBODY || tn3 === $2.TFOOT || tn3 === $2.THEAD;\n case 6:\n return tn3 === $2.OPTION;\n case 7:\n return tn3 === $2.CAPTION;\n case 8:\n return tn3 === $2.OPTGROUP || tn3 === $2.COLGROUP;\n }\n return false;\n }\n function isScopingElement(tn3, ns) {\n switch (tn3.length) {\n case 2:\n if (tn3 === $2.TD || tn3 === $2.TH) {\n return ns === NS.HTML;\n } else if (tn3 === $2.MI || tn3 === $2.MO || tn3 === $2.MN || tn3 === $2.MS) {\n return ns === NS.MATHML;\n }\n break;\n case 4:\n if (tn3 === $2.HTML) {\n return ns === NS.HTML;\n } else if (tn3 === $2.DESC) {\n return ns === NS.SVG;\n }\n break;\n case 5:\n if (tn3 === $2.TABLE) {\n return ns === NS.HTML;\n } else if (tn3 === $2.MTEXT) {\n return ns === NS.MATHML;\n } else if (tn3 === $2.TITLE) {\n return ns === NS.SVG;\n }\n break;\n case 6:\n return (tn3 === $2.APPLET || tn3 === $2.OBJECT) && ns === NS.HTML;\n case 7:\n return (tn3 === $2.CAPTION || tn3 === $2.MARQUEE) && ns === NS.HTML;\n case 8:\n return tn3 === $2.TEMPLATE && ns === NS.HTML;\n case 13:\n return tn3 === $2.FOREIGN_OBJECT && ns === NS.SVG;\n case 14:\n return tn3 === $2.ANNOTATION_XML && ns === NS.MATHML;\n }\n return false;\n }\n var OpenElementStack = class {\n constructor(document2, treeAdapter) {\n this.stackTop = -1;\n this.items = [];\n this.current = document2;\n this.currentTagName = null;\n this.currentTmplContent = null;\n this.tmplCount = 0;\n this.treeAdapter = treeAdapter;\n }\n _indexOf(element4) {\n let idx = -1;\n for (let i3 = this.stackTop; i3 >= 0; i3--) {\n if (this.items[i3] === element4) {\n idx = i3;\n break;\n }\n }\n return idx;\n }\n _isInTemplate() {\n return this.currentTagName === $2.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagName = this.current && this.treeAdapter.getTagName(this.current);\n this.currentTmplContent = this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : null;\n }\n push(element4) {\n this.items[++this.stackTop] = element4;\n this._updateCurrentElement();\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n }\n pop() {\n this.stackTop--;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this._updateCurrentElement();\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this._updateCurrentElement();\n }\n }\n insertAfter(referenceElement, newElement) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n if (insertionIdx === ++this.stackTop) {\n this._updateCurrentElement();\n }\n }\n popUntilTagNamePopped(tagName) {\n while (this.stackTop > -1) {\n const tn3 = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n this.pop();\n if (tn3 === tagName && ns === NS.HTML) {\n break;\n }\n }\n }\n popUntilElementPopped(element4) {\n while (this.stackTop > -1) {\n const poppedElement = this.current;\n this.pop();\n if (poppedElement === element4) {\n break;\n }\n }\n }\n popUntilNumberedHeaderPopped() {\n while (this.stackTop > -1) {\n const tn3 = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n this.pop();\n if (tn3 === $2.H1 || tn3 === $2.H2 || tn3 === $2.H3 || tn3 === $2.H4 || tn3 === $2.H5 || tn3 === $2.H6 && ns === NS.HTML) {\n break;\n }\n }\n }\n popUntilTableCellPopped() {\n while (this.stackTop > -1) {\n const tn3 = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n this.pop();\n if (tn3 === $2.TD || tn3 === $2.TH && ns === NS.HTML) {\n break;\n }\n }\n }\n popAllUpToHtmlElement() {\n this.stackTop = 0;\n this._updateCurrentElement();\n }\n clearBackToTableContext() {\n while (this.currentTagName !== $2.TABLE && this.currentTagName !== $2.TEMPLATE && this.currentTagName !== $2.HTML || this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML) {\n this.pop();\n }\n }\n clearBackToTableBodyContext() {\n while (this.currentTagName !== $2.TBODY && this.currentTagName !== $2.TFOOT && this.currentTagName !== $2.THEAD && this.currentTagName !== $2.TEMPLATE && this.currentTagName !== $2.HTML || this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML) {\n this.pop();\n }\n }\n clearBackToTableRowContext() {\n while (this.currentTagName !== $2.TR && this.currentTagName !== $2.TEMPLATE && this.currentTagName !== $2.HTML || this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML) {\n this.pop();\n }\n }\n remove(element4) {\n for (let i3 = this.stackTop; i3 >= 0; i3--) {\n if (this.items[i3] === element4) {\n this.items.splice(i3, 1);\n this.stackTop--;\n this._updateCurrentElement();\n break;\n }\n }\n }\n tryPeekProperlyNestedBodyElement() {\n const element4 = this.items[1];\n return element4 && this.treeAdapter.getTagName(element4) === $2.BODY ? element4 : null;\n }\n contains(element4) {\n return this._indexOf(element4) > -1;\n }\n getCommonAncestor(element4) {\n let elementIdx = this._indexOf(element4);\n return --elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.currentTagName === $2.HTML;\n }\n hasInScope(tagName) {\n for (let i3 = this.stackTop; i3 >= 0; i3--) {\n const tn3 = this.treeAdapter.getTagName(this.items[i3]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i3]);\n if (tn3 === tagName && ns === NS.HTML) {\n return true;\n }\n if (isScopingElement(tn3, ns)) {\n return false;\n }\n }\n return true;\n }\n hasNumberedHeaderInScope() {\n for (let i3 = this.stackTop; i3 >= 0; i3--) {\n const tn3 = this.treeAdapter.getTagName(this.items[i3]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i3]);\n if ((tn3 === $2.H1 || tn3 === $2.H2 || tn3 === $2.H3 || tn3 === $2.H4 || tn3 === $2.H5 || tn3 === $2.H6) && ns === NS.HTML) {\n return true;\n }\n if (isScopingElement(tn3, ns)) {\n return false;\n }\n }\n return true;\n }\n hasInListItemScope(tagName) {\n for (let i3 = this.stackTop; i3 >= 0; i3--) {\n const tn3 = this.treeAdapter.getTagName(this.items[i3]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i3]);\n if (tn3 === tagName && ns === NS.HTML) {\n return true;\n }\n if ((tn3 === $2.UL || tn3 === $2.OL) && ns === NS.HTML || isScopingElement(tn3, ns)) {\n return false;\n }\n }\n return true;\n }\n hasInButtonScope(tagName) {\n for (let i3 = this.stackTop; i3 >= 0; i3--) {\n const tn3 = this.treeAdapter.getTagName(this.items[i3]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i3]);\n if (tn3 === tagName && ns === NS.HTML) {\n return true;\n }\n if (tn3 === $2.BUTTON && ns === NS.HTML || isScopingElement(tn3, ns)) {\n return false;\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i3 = this.stackTop; i3 >= 0; i3--) {\n const tn3 = this.treeAdapter.getTagName(this.items[i3]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i3]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn3 === tagName) {\n return true;\n }\n if (tn3 === $2.TABLE || tn3 === $2.TEMPLATE || tn3 === $2.HTML) {\n return false;\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i3 = this.stackTop; i3 >= 0; i3--) {\n const tn3 = this.treeAdapter.getTagName(this.items[i3]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i3]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn3 === $2.TBODY || tn3 === $2.THEAD || tn3 === $2.TFOOT) {\n return true;\n }\n if (tn3 === $2.TABLE || tn3 === $2.HTML) {\n return false;\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i3 = this.stackTop; i3 >= 0; i3--) {\n const tn3 = this.treeAdapter.getTagName(this.items[i3]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i3]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn3 === tagName) {\n return true;\n }\n if (tn3 !== $2.OPTION && tn3 !== $2.OPTGROUP) {\n return false;\n }\n }\n return true;\n }\n generateImpliedEndTags() {\n while (isImpliedEndTagRequired(this.currentTagName)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (isImpliedEndTagRequiredThoroughly(this.currentTagName)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionTagName) {\n while (isImpliedEndTagRequired(this.currentTagName) && this.currentTagName !== exclusionTagName) {\n this.pop();\n }\n }\n };\n module2.exports = OpenElementStack;\n }\n});\n\n// node_modules/parse5/lib/parser/formatting-element-list.js\nvar require_formatting_element_list = __commonJS({\n \"node_modules/parse5/lib/parser/formatting-element-list.js\"(exports2, module2) {\n \"use strict\";\n var NOAH_ARK_CAPACITY = 3;\n var FormattingElementList = class {\n constructor(treeAdapter) {\n this.length = 0;\n this.entries = [];\n this.treeAdapter = treeAdapter;\n this.bookmark = null;\n }\n _getNoahArkConditionCandidates(newElement) {\n const candidates = [];\n if (this.length >= NOAH_ARK_CAPACITY) {\n const neAttrsLength = this.treeAdapter.getAttrList(newElement).length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i3 = this.length - 1; i3 >= 0; i3--) {\n const entry = this.entries[i3];\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n const element4 = entry.element;\n const elementAttrs = this.treeAdapter.getAttrList(element4);\n const isCandidate = this.treeAdapter.getTagName(element4) === neTagName && this.treeAdapter.getNamespaceURI(element4) === neNamespaceURI && elementAttrs.length === neAttrsLength;\n if (isCandidate) {\n candidates.push({ idx: i3, attrs: elementAttrs });\n }\n }\n }\n return candidates.length < NOAH_ARK_CAPACITY ? [] : candidates;\n }\n _ensureNoahArkCondition(newElement) {\n const candidates = this._getNoahArkConditionCandidates(newElement);\n let cLength = candidates.length;\n if (cLength) {\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const neAttrsLength = neAttrs.length;\n const neAttrsMap = /* @__PURE__ */ Object.create(null);\n for (let i3 = 0; i3 < neAttrsLength; i3++) {\n const neAttr = neAttrs[i3];\n neAttrsMap[neAttr.name] = neAttr.value;\n }\n for (let i3 = 0; i3 < neAttrsLength; i3++) {\n for (let j4 = 0; j4 < cLength; j4++) {\n const cAttr = candidates[j4].attrs[i3];\n if (neAttrsMap[cAttr.name] !== cAttr.value) {\n candidates.splice(j4, 1);\n cLength--;\n }\n if (candidates.length < NOAH_ARK_CAPACITY) {\n return;\n }\n }\n }\n for (let i3 = cLength - 1; i3 >= NOAH_ARK_CAPACITY - 1; i3--) {\n this.entries.splice(candidates[i3].idx, 1);\n this.length--;\n }\n }\n }\n insertMarker() {\n this.entries.push({ type: FormattingElementList.MARKER_ENTRY });\n this.length++;\n }\n pushElement(element4, token) {\n this._ensureNoahArkCondition(element4);\n this.entries.push({\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element4,\n token\n });\n this.length++;\n }\n insertElementAfterBookmark(element4, token) {\n let bookmarkIdx = this.length - 1;\n for (; bookmarkIdx >= 0; bookmarkIdx--) {\n if (this.entries[bookmarkIdx] === this.bookmark) {\n break;\n }\n }\n this.entries.splice(bookmarkIdx + 1, 0, {\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element4,\n token\n });\n this.length++;\n }\n removeEntry(entry) {\n for (let i3 = this.length - 1; i3 >= 0; i3--) {\n if (this.entries[i3] === entry) {\n this.entries.splice(i3, 1);\n this.length--;\n break;\n }\n }\n }\n clearToLastMarker() {\n while (this.length) {\n const entry = this.entries.pop();\n this.length--;\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n }\n }\n getElementEntryInScopeWithTagName(tagName) {\n for (let i3 = this.length - 1; i3 >= 0; i3--) {\n const entry = this.entries[i3];\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n return null;\n }\n if (this.treeAdapter.getTagName(entry.element) === tagName) {\n return entry;\n }\n }\n return null;\n }\n getElementEntry(element4) {\n for (let i3 = this.length - 1; i3 >= 0; i3--) {\n const entry = this.entries[i3];\n if (entry.type === FormattingElementList.ELEMENT_ENTRY && entry.element === element4) {\n return entry;\n }\n }\n return null;\n }\n };\n FormattingElementList.MARKER_ENTRY = \"MARKER_ENTRY\";\n FormattingElementList.ELEMENT_ENTRY = \"ELEMENT_ENTRY\";\n module2.exports = FormattingElementList;\n }\n});\n\n// node_modules/parse5/lib/utils/mixin.js\nvar require_mixin = __commonJS({\n \"node_modules/parse5/lib/utils/mixin.js\"(exports2, module2) {\n \"use strict\";\n var Mixin = class {\n constructor(host) {\n const originalMethods = {};\n const overriddenMethods = this._getOverriddenMethods(this, originalMethods);\n for (const key of Object.keys(overriddenMethods)) {\n if (typeof overriddenMethods[key] === \"function\") {\n originalMethods[key] = host[key];\n host[key] = overriddenMethods[key];\n }\n }\n }\n _getOverriddenMethods() {\n throw new Error(\"Not implemented\");\n }\n };\n Mixin.install = function(host, Ctor, opts) {\n if (!host.__mixins) {\n host.__mixins = [];\n }\n for (let i3 = 0; i3 < host.__mixins.length; i3++) {\n if (host.__mixins[i3].constructor === Ctor) {\n return host.__mixins[i3];\n }\n }\n const mixin = new Ctor(host, opts);\n host.__mixins.push(mixin);\n return mixin;\n };\n module2.exports = Mixin;\n }\n});\n\n// node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js\nvar require_preprocessor_mixin = __commonJS({\n \"node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js\"(exports2, module2) {\n \"use strict\";\n var Mixin = require_mixin();\n var PositionTrackingPreprocessorMixin = class extends Mixin {\n constructor(preprocessor) {\n super(preprocessor);\n this.preprocessor = preprocessor;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.offset = 0;\n this.col = 0;\n this.line = 1;\n }\n _getOverriddenMethods(mxn, orig) {\n return {\n advance() {\n const pos = this.pos + 1;\n const ch = this.html[pos];\n if (mxn.isEol) {\n mxn.isEol = false;\n mxn.line++;\n mxn.lineStartPos = pos;\n }\n if (ch === \"\\n\" || ch === \"\\r\" && this.html[pos + 1] !== \"\\n\") {\n mxn.isEol = true;\n }\n mxn.col = pos - mxn.lineStartPos + 1;\n mxn.offset = mxn.droppedBufferSize + pos;\n return orig.advance.call(this);\n },\n retreat() {\n orig.retreat.call(this);\n mxn.isEol = false;\n mxn.col = this.pos - mxn.lineStartPos + 1;\n },\n dropParsedChunk() {\n const prevPos = this.pos;\n orig.dropParsedChunk.call(this);\n const reduction = prevPos - this.pos;\n mxn.lineStartPos -= reduction;\n mxn.droppedBufferSize += reduction;\n mxn.offset = mxn.droppedBufferSize + this.pos;\n }\n };\n }\n };\n module2.exports = PositionTrackingPreprocessorMixin;\n }\n});\n\n// node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js\nvar require_tokenizer_mixin = __commonJS({\n \"node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js\"(exports2, module2) {\n \"use strict\";\n var Mixin = require_mixin();\n var Tokenizer = require_tokenizer();\n var PositionTrackingPreprocessorMixin = require_preprocessor_mixin();\n var LocationInfoTokenizerMixin = class extends Mixin {\n constructor(tokenizer) {\n super(tokenizer);\n this.tokenizer = tokenizer;\n this.posTracker = Mixin.install(tokenizer.preprocessor, PositionTrackingPreprocessorMixin);\n this.currentAttrLocation = null;\n this.ctLoc = null;\n }\n _getCurrentLocation() {\n return {\n startLine: this.posTracker.line,\n startCol: this.posTracker.col,\n startOffset: this.posTracker.offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n }\n _attachCurrentAttrLocationInfo() {\n this.currentAttrLocation.endLine = this.posTracker.line;\n this.currentAttrLocation.endCol = this.posTracker.col;\n this.currentAttrLocation.endOffset = this.posTracker.offset;\n const currentToken = this.tokenizer.currentToken;\n const currentAttr = this.tokenizer.currentAttr;\n if (!currentToken.location.attrs) {\n currentToken.location.attrs = /* @__PURE__ */ Object.create(null);\n }\n currentToken.location.attrs[currentAttr.name] = this.currentAttrLocation;\n }\n _getOverriddenMethods(mxn, orig) {\n const methods = {\n _createStartTagToken() {\n orig._createStartTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n _createEndTagToken() {\n orig._createEndTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n _createCommentToken() {\n orig._createCommentToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n _createDoctypeToken(initialName) {\n orig._createDoctypeToken.call(this, initialName);\n this.currentToken.location = mxn.ctLoc;\n },\n _createCharacterToken(type, ch) {\n orig._createCharacterToken.call(this, type, ch);\n this.currentCharacterToken.location = mxn.ctLoc;\n },\n _createEOFToken() {\n orig._createEOFToken.call(this);\n this.currentToken.location = mxn._getCurrentLocation();\n },\n _createAttr(attrNameFirstCh) {\n orig._createAttr.call(this, attrNameFirstCh);\n mxn.currentAttrLocation = mxn._getCurrentLocation();\n },\n _leaveAttrName(toState) {\n orig._leaveAttrName.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n _leaveAttrValue(toState) {\n orig._leaveAttrValue.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n _emitCurrentToken() {\n const ctLoc = this.currentToken.location;\n if (this.currentCharacterToken) {\n this.currentCharacterToken.location.endLine = ctLoc.startLine;\n this.currentCharacterToken.location.endCol = ctLoc.startCol;\n this.currentCharacterToken.location.endOffset = ctLoc.startOffset;\n }\n if (this.currentToken.type === Tokenizer.EOF_TOKEN) {\n ctLoc.endLine = ctLoc.startLine;\n ctLoc.endCol = ctLoc.startCol;\n ctLoc.endOffset = ctLoc.startOffset;\n } else {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col + 1;\n ctLoc.endOffset = mxn.posTracker.offset + 1;\n }\n orig._emitCurrentToken.call(this);\n },\n _emitCurrentCharacterToken() {\n const ctLoc = this.currentCharacterToken && this.currentCharacterToken.location;\n if (ctLoc && ctLoc.endOffset === -1) {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col;\n ctLoc.endOffset = mxn.posTracker.offset;\n }\n orig._emitCurrentCharacterToken.call(this);\n }\n };\n Object.keys(Tokenizer.MODE).forEach((modeName) => {\n const state = Tokenizer.MODE[modeName];\n methods[state] = function(cp) {\n mxn.ctLoc = mxn._getCurrentLocation();\n orig[state].call(this, cp);\n };\n });\n return methods;\n }\n };\n module2.exports = LocationInfoTokenizerMixin;\n }\n});\n\n// node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js\nvar require_open_element_stack_mixin = __commonJS({\n \"node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js\"(exports2, module2) {\n \"use strict\";\n var Mixin = require_mixin();\n var LocationInfoOpenElementStackMixin = class extends Mixin {\n constructor(stack, opts) {\n super(stack);\n this.onItemPop = opts.onItemPop;\n }\n _getOverriddenMethods(mxn, orig) {\n return {\n pop() {\n mxn.onItemPop(this.current);\n orig.pop.call(this);\n },\n popAllUpToHtmlElement() {\n for (let i3 = this.stackTop; i3 > 0; i3--) {\n mxn.onItemPop(this.items[i3]);\n }\n orig.popAllUpToHtmlElement.call(this);\n },\n remove(element4) {\n mxn.onItemPop(this.current);\n orig.remove.call(this, element4);\n }\n };\n }\n };\n module2.exports = LocationInfoOpenElementStackMixin;\n }\n});\n\n// node_modules/parse5/lib/extensions/location-info/parser-mixin.js\nvar require_parser_mixin = __commonJS({\n \"node_modules/parse5/lib/extensions/location-info/parser-mixin.js\"(exports2, module2) {\n \"use strict\";\n var Mixin = require_mixin();\n var Tokenizer = require_tokenizer();\n var LocationInfoTokenizerMixin = require_tokenizer_mixin();\n var LocationInfoOpenElementStackMixin = require_open_element_stack_mixin();\n var HTML2 = require_html();\n var $2 = HTML2.TAG_NAMES;\n var LocationInfoParserMixin = class extends Mixin {\n constructor(parser) {\n super(parser);\n this.parser = parser;\n this.treeAdapter = this.parser.treeAdapter;\n this.posTracker = null;\n this.lastStartTagToken = null;\n this.lastFosterParentingLocation = null;\n this.currentToken = null;\n }\n _setStartLocation(element4) {\n let loc = null;\n if (this.lastStartTagToken) {\n loc = Object.assign({}, this.lastStartTagToken.location);\n loc.startTag = this.lastStartTagToken.location;\n }\n this.treeAdapter.setNodeSourceCodeLocation(element4, loc);\n }\n _setEndLocation(element4, closingToken) {\n const loc = this.treeAdapter.getNodeSourceCodeLocation(element4);\n if (loc) {\n if (closingToken.location) {\n const ctLoc = closingToken.location;\n const tn3 = this.treeAdapter.getTagName(element4);\n const isClosingEndTag = closingToken.type === Tokenizer.END_TAG_TOKEN && tn3 === closingToken.tagName;\n const endLoc = {};\n if (isClosingEndTag) {\n endLoc.endTag = Object.assign({}, ctLoc);\n endLoc.endLine = ctLoc.endLine;\n endLoc.endCol = ctLoc.endCol;\n endLoc.endOffset = ctLoc.endOffset;\n } else {\n endLoc.endLine = ctLoc.startLine;\n endLoc.endCol = ctLoc.startCol;\n endLoc.endOffset = ctLoc.startOffset;\n }\n this.treeAdapter.updateNodeSourceCodeLocation(element4, endLoc);\n }\n }\n }\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document2, fragmentContext) {\n orig._bootstrap.call(this, document2, fragmentContext);\n mxn.lastStartTagToken = null;\n mxn.lastFosterParentingLocation = null;\n mxn.currentToken = null;\n const tokenizerMixin = Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n mxn.posTracker = tokenizerMixin.posTracker;\n Mixin.install(this.openElements, LocationInfoOpenElementStackMixin, {\n onItemPop: function(element4) {\n mxn._setEndLocation(element4, mxn.currentToken);\n }\n });\n },\n _runParsingLoop(scriptHandler) {\n orig._runParsingLoop.call(this, scriptHandler);\n for (let i3 = this.openElements.stackTop; i3 >= 0; i3--) {\n mxn._setEndLocation(this.openElements.items[i3], mxn.currentToken);\n }\n },\n _processTokenInForeignContent(token) {\n mxn.currentToken = token;\n orig._processTokenInForeignContent.call(this, token);\n },\n _processToken(token) {\n mxn.currentToken = token;\n orig._processToken.call(this, token);\n const requireExplicitUpdate = token.type === Tokenizer.END_TAG_TOKEN && (token.tagName === $2.HTML || token.tagName === $2.BODY && this.openElements.hasInScope($2.BODY));\n if (requireExplicitUpdate) {\n for (let i3 = this.openElements.stackTop; i3 >= 0; i3--) {\n const element4 = this.openElements.items[i3];\n if (this.treeAdapter.getTagName(element4) === token.tagName) {\n mxn._setEndLocation(element4, token);\n break;\n }\n }\n }\n },\n _setDocumentType(token) {\n orig._setDocumentType.call(this, token);\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const cnLength = documentChildren.length;\n for (let i3 = 0; i3 < cnLength; i3++) {\n const node = documentChildren[i3];\n if (this.treeAdapter.isDocumentTypeNode(node)) {\n this.treeAdapter.setNodeSourceCodeLocation(node, token.location);\n break;\n }\n }\n },\n _attachElementToTree(element4) {\n mxn._setStartLocation(element4);\n mxn.lastStartTagToken = null;\n orig._attachElementToTree.call(this, element4);\n },\n _appendElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._appendElement.call(this, token, namespaceURI);\n },\n _insertElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._insertElement.call(this, token, namespaceURI);\n },\n _insertTemplate(token) {\n mxn.lastStartTagToken = token;\n orig._insertTemplate.call(this, token);\n const tmplContent = this.treeAdapter.getTemplateContent(this.openElements.current);\n this.treeAdapter.setNodeSourceCodeLocation(tmplContent, null);\n },\n _insertFakeRootElement() {\n orig._insertFakeRootElement.call(this);\n this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current, null);\n },\n _appendCommentNode(token, parent2) {\n orig._appendCommentNode.call(this, token, parent2);\n const children = this.treeAdapter.getChildNodes(parent2);\n const commentNode = children[children.length - 1];\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n },\n _findFosterParentingLocation() {\n mxn.lastFosterParentingLocation = orig._findFosterParentingLocation.call(this);\n return mxn.lastFosterParentingLocation;\n },\n _insertCharacters(token) {\n orig._insertCharacters.call(this, token);\n const hasFosterParent = this._shouldFosterParentOnInsertion();\n const parent2 = hasFosterParent && mxn.lastFosterParentingLocation.parent || this.openElements.currentTmplContent || this.openElements.current;\n const siblings = this.treeAdapter.getChildNodes(parent2);\n const textNodeIdx = hasFosterParent && mxn.lastFosterParentingLocation.beforeElement ? siblings.indexOf(mxn.lastFosterParentingLocation.beforeElement) - 1 : siblings.length - 1;\n const textNode = siblings[textNodeIdx];\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n } else {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n };\n }\n };\n module2.exports = LocationInfoParserMixin;\n }\n});\n\n// node_modules/parse5/lib/extensions/error-reporting/mixin-base.js\nvar require_mixin_base = __commonJS({\n \"node_modules/parse5/lib/extensions/error-reporting/mixin-base.js\"(exports2, module2) {\n \"use strict\";\n var Mixin = require_mixin();\n var ErrorReportingMixinBase = class extends Mixin {\n constructor(host, opts) {\n super(host);\n this.posTracker = null;\n this.onParseError = opts.onParseError;\n }\n _setErrorLocation(err) {\n err.startLine = err.endLine = this.posTracker.line;\n err.startCol = err.endCol = this.posTracker.col;\n err.startOffset = err.endOffset = this.posTracker.offset;\n }\n _reportError(code) {\n const err = {\n code,\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n this._setErrorLocation(err);\n this.onParseError(err);\n }\n _getOverriddenMethods(mxn) {\n return {\n _err(code) {\n mxn._reportError(code);\n }\n };\n }\n };\n module2.exports = ErrorReportingMixinBase;\n }\n});\n\n// node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js\nvar require_preprocessor_mixin2 = __commonJS({\n \"node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js\"(exports2, module2) {\n \"use strict\";\n var ErrorReportingMixinBase = require_mixin_base();\n var PositionTrackingPreprocessorMixin = require_preprocessor_mixin();\n var Mixin = require_mixin();\n var ErrorReportingPreprocessorMixin = class extends ErrorReportingMixinBase {\n constructor(preprocessor, opts) {\n super(preprocessor, opts);\n this.posTracker = Mixin.install(preprocessor, PositionTrackingPreprocessorMixin);\n this.lastErrOffset = -1;\n }\n _reportError(code) {\n if (this.lastErrOffset !== this.posTracker.offset) {\n this.lastErrOffset = this.posTracker.offset;\n super._reportError(code);\n }\n }\n };\n module2.exports = ErrorReportingPreprocessorMixin;\n }\n});\n\n// node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js\nvar require_tokenizer_mixin2 = __commonJS({\n \"node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js\"(exports2, module2) {\n \"use strict\";\n var ErrorReportingMixinBase = require_mixin_base();\n var ErrorReportingPreprocessorMixin = require_preprocessor_mixin2();\n var Mixin = require_mixin();\n var ErrorReportingTokenizerMixin = class extends ErrorReportingMixinBase {\n constructor(tokenizer, opts) {\n super(tokenizer, opts);\n const preprocessorMixin = Mixin.install(tokenizer.preprocessor, ErrorReportingPreprocessorMixin, opts);\n this.posTracker = preprocessorMixin.posTracker;\n }\n };\n module2.exports = ErrorReportingTokenizerMixin;\n }\n});\n\n// node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js\nvar require_parser_mixin2 = __commonJS({\n \"node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js\"(exports2, module2) {\n \"use strict\";\n var ErrorReportingMixinBase = require_mixin_base();\n var ErrorReportingTokenizerMixin = require_tokenizer_mixin2();\n var LocationInfoTokenizerMixin = require_tokenizer_mixin();\n var Mixin = require_mixin();\n var ErrorReportingParserMixin = class extends ErrorReportingMixinBase {\n constructor(parser, opts) {\n super(parser, opts);\n this.opts = opts;\n this.ctLoc = null;\n this.locBeforeToken = false;\n }\n _setErrorLocation(err) {\n if (this.ctLoc) {\n err.startLine = this.ctLoc.startLine;\n err.startCol = this.ctLoc.startCol;\n err.startOffset = this.ctLoc.startOffset;\n err.endLine = this.locBeforeToken ? this.ctLoc.startLine : this.ctLoc.endLine;\n err.endCol = this.locBeforeToken ? this.ctLoc.startCol : this.ctLoc.endCol;\n err.endOffset = this.locBeforeToken ? this.ctLoc.startOffset : this.ctLoc.endOffset;\n }\n }\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document2, fragmentContext) {\n orig._bootstrap.call(this, document2, fragmentContext);\n Mixin.install(this.tokenizer, ErrorReportingTokenizerMixin, mxn.opts);\n Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n },\n _processInputToken(token) {\n mxn.ctLoc = token.location;\n orig._processInputToken.call(this, token);\n },\n _err(code, options) {\n mxn.locBeforeToken = options && options.beforeToken;\n mxn._reportError(code);\n }\n };\n }\n };\n module2.exports = ErrorReportingParserMixin;\n }\n});\n\n// node_modules/parse5/lib/tree-adapters/default.js\nvar require_default = __commonJS({\n \"node_modules/parse5/lib/tree-adapters/default.js\"(exports2) {\n \"use strict\";\n var { DOCUMENT_MODE } = require_html();\n exports2.createDocument = function() {\n return {\n nodeName: \"#document\",\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: []\n };\n };\n exports2.createDocumentFragment = function() {\n return {\n nodeName: \"#document-fragment\",\n childNodes: []\n };\n };\n exports2.createElement = function(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null\n };\n };\n exports2.createCommentNode = function(data) {\n return {\n nodeName: \"#comment\",\n data,\n parentNode: null\n };\n };\n var createTextNode = function(value) {\n return {\n nodeName: \"#text\",\n value,\n parentNode: null\n };\n };\n var appendChild = exports2.appendChild = function(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n };\n var insertBefore = exports2.insertBefore = function(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n };\n exports2.setTemplateContent = function(templateElement, contentElement) {\n templateElement.content = contentElement;\n };\n exports2.getTemplateContent = function(templateElement) {\n return templateElement.content;\n };\n exports2.setDocumentType = function(document2, name, publicId, systemId) {\n let doctypeNode = null;\n for (let i3 = 0; i3 < document2.childNodes.length; i3++) {\n if (document2.childNodes[i3].nodeName === \"#documentType\") {\n doctypeNode = document2.childNodes[i3];\n break;\n }\n }\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n } else {\n appendChild(document2, {\n nodeName: \"#documentType\",\n name,\n publicId,\n systemId\n });\n }\n };\n exports2.setDocumentMode = function(document2, mode) {\n document2.mode = mode;\n };\n exports2.getDocumentMode = function(document2) {\n return document2.mode;\n };\n exports2.detachNode = function(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n };\n exports2.insertText = function(parentNode, text5) {\n if (parentNode.childNodes.length) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (prevNode.nodeName === \"#text\") {\n prevNode.value += text5;\n return;\n }\n }\n appendChild(parentNode, createTextNode(text5));\n };\n exports2.insertTextBefore = function(parentNode, text5, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && prevNode.nodeName === \"#text\") {\n prevNode.value += text5;\n } else {\n insertBefore(parentNode, createTextNode(text5), referenceNode);\n }\n };\n exports2.adoptAttributes = function(recipient, attrs) {\n const recipientAttrsMap = [];\n for (let i3 = 0; i3 < recipient.attrs.length; i3++) {\n recipientAttrsMap.push(recipient.attrs[i3].name);\n }\n for (let j4 = 0; j4 < attrs.length; j4++) {\n if (recipientAttrsMap.indexOf(attrs[j4].name) === -1) {\n recipient.attrs.push(attrs[j4]);\n }\n }\n };\n exports2.getFirstChild = function(node) {\n return node.childNodes[0];\n };\n exports2.getChildNodes = function(node) {\n return node.childNodes;\n };\n exports2.getParentNode = function(node) {\n return node.parentNode;\n };\n exports2.getAttrList = function(element4) {\n return element4.attrs;\n };\n exports2.getTagName = function(element4) {\n return element4.tagName;\n };\n exports2.getNamespaceURI = function(element4) {\n return element4.namespaceURI;\n };\n exports2.getTextNodeContent = function(textNode) {\n return textNode.value;\n };\n exports2.getCommentNodeContent = function(commentNode) {\n return commentNode.data;\n };\n exports2.getDocumentTypeNodeName = function(doctypeNode) {\n return doctypeNode.name;\n };\n exports2.getDocumentTypeNodePublicId = function(doctypeNode) {\n return doctypeNode.publicId;\n };\n exports2.getDocumentTypeNodeSystemId = function(doctypeNode) {\n return doctypeNode.systemId;\n };\n exports2.isTextNode = function(node) {\n return node.nodeName === \"#text\";\n };\n exports2.isCommentNode = function(node) {\n return node.nodeName === \"#comment\";\n };\n exports2.isDocumentTypeNode = function(node) {\n return node.nodeName === \"#documentType\";\n };\n exports2.isElementNode = function(node) {\n return !!node.tagName;\n };\n exports2.setNodeSourceCodeLocation = function(node, location) {\n node.sourceCodeLocation = location;\n };\n exports2.getNodeSourceCodeLocation = function(node) {\n return node.sourceCodeLocation;\n };\n exports2.updateNodeSourceCodeLocation = function(node, endLocation) {\n node.sourceCodeLocation = Object.assign(node.sourceCodeLocation, endLocation);\n };\n }\n});\n\n// node_modules/parse5/lib/utils/merge-options.js\nvar require_merge_options = __commonJS({\n \"node_modules/parse5/lib/utils/merge-options.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = function mergeOptions(defaults2, options) {\n options = options || /* @__PURE__ */ Object.create(null);\n return [defaults2, options].reduce((merged, optObj) => {\n Object.keys(optObj).forEach((key) => {\n merged[key] = optObj[key];\n });\n return merged;\n }, /* @__PURE__ */ Object.create(null));\n };\n }\n});\n\n// node_modules/parse5/lib/common/doctype.js\nvar require_doctype = __commonJS({\n \"node_modules/parse5/lib/common/doctype.js\"(exports2) {\n \"use strict\";\n var { DOCUMENT_MODE } = require_html();\n var VALID_DOCTYPE_NAME = \"html\";\n var VALID_SYSTEM_ID = \"about:legacy-compat\";\n var QUIRKS_MODE_SYSTEM_ID = \"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd\";\n var QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n \"+//silmaril//dtd html pro v0r11 19970101//\",\n \"-//as//dtd html 3.0 aswedit + extensions//\",\n \"-//advasoft ltd//dtd html 3.0 aswedit + extensions//\",\n \"-//ietf//dtd html 2.0 level 1//\",\n \"-//ietf//dtd html 2.0 level 2//\",\n \"-//ietf//dtd html 2.0 strict level 1//\",\n \"-//ietf//dtd html 2.0 strict level 2//\",\n \"-//ietf//dtd html 2.0 strict//\",\n \"-//ietf//dtd html 2.0//\",\n \"-//ietf//dtd html 2.1e//\",\n \"-//ietf//dtd html 3.0//\",\n \"-//ietf//dtd html 3.2 final//\",\n \"-//ietf//dtd html 3.2//\",\n \"-//ietf//dtd html 3//\",\n \"-//ietf//dtd html level 0//\",\n \"-//ietf//dtd html level 1//\",\n \"-//ietf//dtd html level 2//\",\n \"-//ietf//dtd html level 3//\",\n \"-//ietf//dtd html strict level 0//\",\n \"-//ietf//dtd html strict level 1//\",\n \"-//ietf//dtd html strict level 2//\",\n \"-//ietf//dtd html strict level 3//\",\n \"-//ietf//dtd html strict//\",\n \"-//ietf//dtd html//\",\n \"-//metrius//dtd metrius presentational//\",\n \"-//microsoft//dtd internet explorer 2.0 html strict//\",\n \"-//microsoft//dtd internet explorer 2.0 html//\",\n \"-//microsoft//dtd internet explorer 2.0 tables//\",\n \"-//microsoft//dtd internet explorer 3.0 html strict//\",\n \"-//microsoft//dtd internet explorer 3.0 html//\",\n \"-//microsoft//dtd internet explorer 3.0 tables//\",\n \"-//netscape comm. corp.//dtd html//\",\n \"-//netscape comm. corp.//dtd strict html//\",\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n \"-//sq//dtd html 2.0 hotmetal + extensions//\",\n \"-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//\",\n \"-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//\",\n \"-//spyglass//dtd html 2.0 extended//\",\n \"-//sun microsystems corp.//dtd hotjava html//\",\n \"-//sun microsystems corp.//dtd hotjava strict html//\",\n \"-//w3c//dtd html 3 1995-03-24//\",\n \"-//w3c//dtd html 3.2 draft//\",\n \"-//w3c//dtd html 3.2 final//\",\n \"-//w3c//dtd html 3.2//\",\n \"-//w3c//dtd html 3.2s draft//\",\n \"-//w3c//dtd html 4.0 frameset//\",\n \"-//w3c//dtd html 4.0 transitional//\",\n \"-//w3c//dtd html experimental 19960712//\",\n \"-//w3c//dtd html experimental 970421//\",\n \"-//w3c//dtd w3 html//\",\n \"-//w3o//dtd w3 html 3.0//\",\n \"-//webtechs//dtd mozilla html 2.0//\",\n \"-//webtechs//dtd mozilla html//\"\n ];\n var QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = QUIRKS_MODE_PUBLIC_ID_PREFIXES.concat([\n \"-//w3c//dtd html 4.01 frameset//\",\n \"-//w3c//dtd html 4.01 transitional//\"\n ]);\n var QUIRKS_MODE_PUBLIC_IDS = [\"-//w3o//dtd w3 html strict 3.0//en//\", \"-/w3c/dtd html 4.0 transitional/en\", \"html\"];\n var LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = [\"-//w3c//dtd xhtml 1.0 frameset//\", \"-//w3c//dtd xhtml 1.0 transitional//\"];\n var LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = LIMITED_QUIRKS_PUBLIC_ID_PREFIXES.concat([\n \"-//w3c//dtd html 4.01 frameset//\",\n \"-//w3c//dtd html 4.01 transitional//\"\n ]);\n function enquoteDoctypeId(id) {\n const quote = id.indexOf('\"') !== -1 ? \"'\" : '\"';\n return quote + id + quote;\n }\n function hasPrefix(publicId, prefixes) {\n for (let i3 = 0; i3 < prefixes.length; i3++) {\n if (publicId.indexOf(prefixes[i3]) === 0) {\n return true;\n }\n }\n return false;\n }\n exports2.isConforming = function(token) {\n return token.name === VALID_DOCTYPE_NAME && token.publicId === null && (token.systemId === null || token.systemId === VALID_SYSTEM_ID);\n };\n exports2.getDocumentMode = function(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const systemId = token.systemId;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let publicId = token.publicId;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.indexOf(publicId) > -1) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes = systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n };\n exports2.serializeContent = function(name, publicId, systemId) {\n let str = \"!DOCTYPE \";\n if (name) {\n str += name;\n }\n if (publicId) {\n str += \" PUBLIC \" + enquoteDoctypeId(publicId);\n } else if (systemId) {\n str += \" SYSTEM\";\n }\n if (systemId !== null) {\n str += \" \" + enquoteDoctypeId(systemId);\n }\n return str;\n };\n }\n});\n\n// node_modules/parse5/lib/common/foreign-content.js\nvar require_foreign_content = __commonJS({\n \"node_modules/parse5/lib/common/foreign-content.js\"(exports2) {\n \"use strict\";\n var Tokenizer = require_tokenizer();\n var HTML2 = require_html();\n var $2 = HTML2.TAG_NAMES;\n var NS = HTML2.NAMESPACES;\n var ATTRS = HTML2.ATTRS;\n var MIME_TYPES = {\n TEXT_HTML: \"text/html\",\n APPLICATION_XML: \"application/xhtml+xml\"\n };\n var DEFINITION_URL_ATTR = \"definitionurl\";\n var ADJUSTED_DEFINITION_URL_ATTR = \"definitionURL\";\n var SVG_ATTRS_ADJUSTMENT_MAP = {\n attributename: \"attributeName\",\n attributetype: \"attributeType\",\n basefrequency: \"baseFrequency\",\n baseprofile: \"baseProfile\",\n calcmode: \"calcMode\",\n clippathunits: \"clipPathUnits\",\n diffuseconstant: \"diffuseConstant\",\n edgemode: \"edgeMode\",\n filterunits: \"filterUnits\",\n glyphref: \"glyphRef\",\n gradienttransform: \"gradientTransform\",\n gradientunits: \"gradientUnits\",\n kernelmatrix: \"kernelMatrix\",\n kernelunitlength: \"kernelUnitLength\",\n keypoints: \"keyPoints\",\n keysplines: \"keySplines\",\n keytimes: \"keyTimes\",\n lengthadjust: \"lengthAdjust\",\n limitingconeangle: \"limitingConeAngle\",\n markerheight: \"markerHeight\",\n markerunits: \"markerUnits\",\n markerwidth: \"markerWidth\",\n maskcontentunits: \"maskContentUnits\",\n maskunits: \"maskUnits\",\n numoctaves: \"numOctaves\",\n pathlength: \"pathLength\",\n patterncontentunits: \"patternContentUnits\",\n patterntransform: \"patternTransform\",\n patternunits: \"patternUnits\",\n pointsatx: \"pointsAtX\",\n pointsaty: \"pointsAtY\",\n pointsatz: \"pointsAtZ\",\n preservealpha: \"preserveAlpha\",\n preserveaspectratio: \"preserveAspectRatio\",\n primitiveunits: \"primitiveUnits\",\n refx: \"refX\",\n refy: \"refY\",\n repeatcount: \"repeatCount\",\n repeatdur: \"repeatDur\",\n requiredextensions: \"requiredExtensions\",\n requiredfeatures: \"requiredFeatures\",\n specularconstant: \"specularConstant\",\n specularexponent: \"specularExponent\",\n spreadmethod: \"spreadMethod\",\n startoffset: \"startOffset\",\n stddeviation: \"stdDeviation\",\n stitchtiles: \"stitchTiles\",\n surfacescale: \"surfaceScale\",\n systemlanguage: \"systemLanguage\",\n tablevalues: \"tableValues\",\n targetx: \"targetX\",\n targety: \"targetY\",\n textlength: \"textLength\",\n viewbox: \"viewBox\",\n viewtarget: \"viewTarget\",\n xchannelselector: \"xChannelSelector\",\n ychannelselector: \"yChannelSelector\",\n zoomandpan: \"zoomAndPan\"\n };\n var XML_ATTRS_ADJUSTMENT_MAP = {\n \"xlink:actuate\": { prefix: \"xlink\", name: \"actuate\", namespace: NS.XLINK },\n \"xlink:arcrole\": { prefix: \"xlink\", name: \"arcrole\", namespace: NS.XLINK },\n \"xlink:href\": { prefix: \"xlink\", name: \"href\", namespace: NS.XLINK },\n \"xlink:role\": { prefix: \"xlink\", name: \"role\", namespace: NS.XLINK },\n \"xlink:show\": { prefix: \"xlink\", name: \"show\", namespace: NS.XLINK },\n \"xlink:title\": { prefix: \"xlink\", name: \"title\", namespace: NS.XLINK },\n \"xlink:type\": { prefix: \"xlink\", name: \"type\", namespace: NS.XLINK },\n \"xml:base\": { prefix: \"xml\", name: \"base\", namespace: NS.XML },\n \"xml:lang\": { prefix: \"xml\", name: \"lang\", namespace: NS.XML },\n \"xml:space\": { prefix: \"xml\", name: \"space\", namespace: NS.XML },\n xmlns: { prefix: \"\", name: \"xmlns\", namespace: NS.XMLNS },\n \"xmlns:xlink\": { prefix: \"xmlns\", name: \"xlink\", namespace: NS.XMLNS }\n };\n var SVG_TAG_NAMES_ADJUSTMENT_MAP = exports2.SVG_TAG_NAMES_ADJUSTMENT_MAP = {\n altglyph: \"altGlyph\",\n altglyphdef: \"altGlyphDef\",\n altglyphitem: \"altGlyphItem\",\n animatecolor: \"animateColor\",\n animatemotion: \"animateMotion\",\n animatetransform: \"animateTransform\",\n clippath: \"clipPath\",\n feblend: \"feBlend\",\n fecolormatrix: \"feColorMatrix\",\n fecomponenttransfer: \"feComponentTransfer\",\n fecomposite: \"feComposite\",\n feconvolvematrix: \"feConvolveMatrix\",\n fediffuselighting: \"feDiffuseLighting\",\n fedisplacementmap: \"feDisplacementMap\",\n fedistantlight: \"feDistantLight\",\n feflood: \"feFlood\",\n fefunca: \"feFuncA\",\n fefuncb: \"feFuncB\",\n fefuncg: \"feFuncG\",\n fefuncr: \"feFuncR\",\n fegaussianblur: \"feGaussianBlur\",\n feimage: \"feImage\",\n femerge: \"feMerge\",\n femergenode: \"feMergeNode\",\n femorphology: \"feMorphology\",\n feoffset: \"feOffset\",\n fepointlight: \"fePointLight\",\n fespecularlighting: \"feSpecularLighting\",\n fespotlight: \"feSpotLight\",\n fetile: \"feTile\",\n feturbulence: \"feTurbulence\",\n foreignobject: \"foreignObject\",\n glyphref: \"glyphRef\",\n lineargradient: \"linearGradient\",\n radialgradient: \"radialGradient\",\n textpath: \"textPath\"\n };\n var EXITS_FOREIGN_CONTENT = {\n [$2.B]: true,\n [$2.BIG]: true,\n [$2.BLOCKQUOTE]: true,\n [$2.BODY]: true,\n [$2.BR]: true,\n [$2.CENTER]: true,\n [$2.CODE]: true,\n [$2.DD]: true,\n [$2.DIV]: true,\n [$2.DL]: true,\n [$2.DT]: true,\n [$2.EM]: true,\n [$2.EMBED]: true,\n [$2.H1]: true,\n [$2.H2]: true,\n [$2.H3]: true,\n [$2.H4]: true,\n [$2.H5]: true,\n [$2.H6]: true,\n [$2.HEAD]: true,\n [$2.HR]: true,\n [$2.I]: true,\n [$2.IMG]: true,\n [$2.LI]: true,\n [$2.LISTING]: true,\n [$2.MENU]: true,\n [$2.META]: true,\n [$2.NOBR]: true,\n [$2.OL]: true,\n [$2.P]: true,\n [$2.PRE]: true,\n [$2.RUBY]: true,\n [$2.S]: true,\n [$2.SMALL]: true,\n [$2.SPAN]: true,\n [$2.STRONG]: true,\n [$2.STRIKE]: true,\n [$2.SUB]: true,\n [$2.SUP]: true,\n [$2.TABLE]: true,\n [$2.TT]: true,\n [$2.U]: true,\n [$2.UL]: true,\n [$2.VAR]: true\n };\n exports2.causesExit = function(startTagToken) {\n const tn3 = startTagToken.tagName;\n const isFontWithAttrs = tn3 === $2.FONT && (Tokenizer.getTokenAttr(startTagToken, ATTRS.COLOR) !== null || Tokenizer.getTokenAttr(startTagToken, ATTRS.SIZE) !== null || Tokenizer.getTokenAttr(startTagToken, ATTRS.FACE) !== null);\n return isFontWithAttrs ? true : EXITS_FOREIGN_CONTENT[tn3];\n };\n exports2.adjustTokenMathMLAttrs = function(token) {\n for (let i3 = 0; i3 < token.attrs.length; i3++) {\n if (token.attrs[i3].name === DEFINITION_URL_ATTR) {\n token.attrs[i3].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n };\n exports2.adjustTokenSVGAttrs = function(token) {\n for (let i3 = 0; i3 < token.attrs.length; i3++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP[token.attrs[i3].name];\n if (adjustedAttrName) {\n token.attrs[i3].name = adjustedAttrName;\n }\n }\n };\n exports2.adjustTokenXMLAttrs = function(token) {\n for (let i3 = 0; i3 < token.attrs.length; i3++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP[token.attrs[i3].name];\n if (adjustedAttrEntry) {\n token.attrs[i3].prefix = adjustedAttrEntry.prefix;\n token.attrs[i3].name = adjustedAttrEntry.name;\n token.attrs[i3].namespace = adjustedAttrEntry.namespace;\n }\n }\n };\n exports2.adjustTokenSVGTagName = function(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP[token.tagName];\n if (adjustedTagName) {\n token.tagName = adjustedTagName;\n }\n };\n function isMathMLTextIntegrationPoint(tn3, ns) {\n return ns === NS.MATHML && (tn3 === $2.MI || tn3 === $2.MO || tn3 === $2.MN || tn3 === $2.MS || tn3 === $2.MTEXT);\n }\n function isHtmlIntegrationPoint(tn3, ns, attrs) {\n if (ns === NS.MATHML && tn3 === $2.ANNOTATION_XML) {\n for (let i3 = 0; i3 < attrs.length; i3++) {\n if (attrs[i3].name === ATTRS.ENCODING) {\n const value = attrs[i3].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === NS.SVG && (tn3 === $2.FOREIGN_OBJECT || tn3 === $2.DESC || tn3 === $2.TITLE);\n }\n exports2.isIntegrationPoint = function(tn3, ns, attrs, foreignNS) {\n if ((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn3, ns, attrs)) {\n return true;\n }\n if ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn3, ns)) {\n return true;\n }\n return false;\n };\n }\n});\n\n// node_modules/parse5/lib/parser/index.js\nvar require_parser = __commonJS({\n \"node_modules/parse5/lib/parser/index.js\"(exports2, module2) {\n \"use strict\";\n var Tokenizer = require_tokenizer();\n var OpenElementStack = require_open_element_stack();\n var FormattingElementList = require_formatting_element_list();\n var LocationInfoParserMixin = require_parser_mixin();\n var ErrorReportingParserMixin = require_parser_mixin2();\n var Mixin = require_mixin();\n var defaultTreeAdapter = require_default();\n var mergeOptions = require_merge_options();\n var doctype = require_doctype();\n var foreignContent = require_foreign_content();\n var ERR = require_error_codes();\n var unicode = require_unicode();\n var HTML2 = require_html();\n var $2 = HTML2.TAG_NAMES;\n var NS = HTML2.NAMESPACES;\n var ATTRS = HTML2.ATTRS;\n var DEFAULT_OPTIONS3 = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n onParseError: null,\n treeAdapter: defaultTreeAdapter\n };\n var HIDDEN_INPUT_TYPE = \"hidden\";\n var AA_OUTER_LOOP_ITER = 8;\n var AA_INNER_LOOP_ITER = 3;\n var INITIAL_MODE = \"INITIAL_MODE\";\n var BEFORE_HTML_MODE = \"BEFORE_HTML_MODE\";\n var BEFORE_HEAD_MODE = \"BEFORE_HEAD_MODE\";\n var IN_HEAD_MODE = \"IN_HEAD_MODE\";\n var IN_HEAD_NO_SCRIPT_MODE = \"IN_HEAD_NO_SCRIPT_MODE\";\n var AFTER_HEAD_MODE = \"AFTER_HEAD_MODE\";\n var IN_BODY_MODE = \"IN_BODY_MODE\";\n var TEXT_MODE = \"TEXT_MODE\";\n var IN_TABLE_MODE = \"IN_TABLE_MODE\";\n var IN_TABLE_TEXT_MODE = \"IN_TABLE_TEXT_MODE\";\n var IN_CAPTION_MODE = \"IN_CAPTION_MODE\";\n var IN_COLUMN_GROUP_MODE = \"IN_COLUMN_GROUP_MODE\";\n var IN_TABLE_BODY_MODE = \"IN_TABLE_BODY_MODE\";\n var IN_ROW_MODE = \"IN_ROW_MODE\";\n var IN_CELL_MODE = \"IN_CELL_MODE\";\n var IN_SELECT_MODE = \"IN_SELECT_MODE\";\n var IN_SELECT_IN_TABLE_MODE = \"IN_SELECT_IN_TABLE_MODE\";\n var IN_TEMPLATE_MODE = \"IN_TEMPLATE_MODE\";\n var AFTER_BODY_MODE = \"AFTER_BODY_MODE\";\n var IN_FRAMESET_MODE = \"IN_FRAMESET_MODE\";\n var AFTER_FRAMESET_MODE = \"AFTER_FRAMESET_MODE\";\n var AFTER_AFTER_BODY_MODE = \"AFTER_AFTER_BODY_MODE\";\n var AFTER_AFTER_FRAMESET_MODE = \"AFTER_AFTER_FRAMESET_MODE\";\n var INSERTION_MODE_RESET_MAP = {\n [$2.TR]: IN_ROW_MODE,\n [$2.TBODY]: IN_TABLE_BODY_MODE,\n [$2.THEAD]: IN_TABLE_BODY_MODE,\n [$2.TFOOT]: IN_TABLE_BODY_MODE,\n [$2.CAPTION]: IN_CAPTION_MODE,\n [$2.COLGROUP]: IN_COLUMN_GROUP_MODE,\n [$2.TABLE]: IN_TABLE_MODE,\n [$2.BODY]: IN_BODY_MODE,\n [$2.FRAMESET]: IN_FRAMESET_MODE\n };\n var TEMPLATE_INSERTION_MODE_SWITCH_MAP = {\n [$2.CAPTION]: IN_TABLE_MODE,\n [$2.COLGROUP]: IN_TABLE_MODE,\n [$2.TBODY]: IN_TABLE_MODE,\n [$2.TFOOT]: IN_TABLE_MODE,\n [$2.THEAD]: IN_TABLE_MODE,\n [$2.COL]: IN_COLUMN_GROUP_MODE,\n [$2.TR]: IN_TABLE_BODY_MODE,\n [$2.TD]: IN_ROW_MODE,\n [$2.TH]: IN_ROW_MODE\n };\n var TOKEN_HANDLERS = {\n [INITIAL_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: doctypeInInitialMode,\n [Tokenizer.START_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer.END_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer.EOF_TOKEN]: tokenInInitialMode\n },\n [BEFORE_HTML_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagBeforeHtml,\n [Tokenizer.END_TAG_TOKEN]: endTagBeforeHtml,\n [Tokenizer.EOF_TOKEN]: tokenBeforeHtml\n },\n [BEFORE_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagBeforeHead,\n [Tokenizer.END_TAG_TOKEN]: endTagBeforeHead,\n [Tokenizer.EOF_TOKEN]: tokenBeforeHead\n },\n [IN_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagInHead,\n [Tokenizer.END_TAG_TOKEN]: endTagInHead,\n [Tokenizer.EOF_TOKEN]: tokenInHead\n },\n [IN_HEAD_NO_SCRIPT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagInHeadNoScript,\n [Tokenizer.END_TAG_TOKEN]: endTagInHeadNoScript,\n [Tokenizer.EOF_TOKEN]: tokenInHeadNoScript\n },\n [AFTER_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterHead,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterHead,\n [Tokenizer.EOF_TOKEN]: tokenAfterHead\n },\n [IN_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInBody,\n [Tokenizer.END_TAG_TOKEN]: endTagInBody,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [TEXT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: ignoreToken,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: ignoreToken,\n [Tokenizer.END_TAG_TOKEN]: endTagInText,\n [Tokenizer.EOF_TOKEN]: eofInText\n },\n [IN_TABLE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTable,\n [Tokenizer.END_TAG_TOKEN]: endTagInTable,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_TEXT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTableText,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInTableText,\n [Tokenizer.COMMENT_TOKEN]: tokenInTableText,\n [Tokenizer.DOCTYPE_TOKEN]: tokenInTableText,\n [Tokenizer.START_TAG_TOKEN]: tokenInTableText,\n [Tokenizer.END_TAG_TOKEN]: tokenInTableText,\n [Tokenizer.EOF_TOKEN]: tokenInTableText\n },\n [IN_CAPTION_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInCaption,\n [Tokenizer.END_TAG_TOKEN]: endTagInCaption,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_COLUMN_GROUP_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInColumnGroup,\n [Tokenizer.END_TAG_TOKEN]: endTagInColumnGroup,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTableBody,\n [Tokenizer.END_TAG_TOKEN]: endTagInTableBody,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_ROW_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInRow,\n [Tokenizer.END_TAG_TOKEN]: endTagInRow,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_CELL_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInCell,\n [Tokenizer.END_TAG_TOKEN]: endTagInCell,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInSelect,\n [Tokenizer.END_TAG_TOKEN]: endTagInSelect,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_IN_TABLE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInSelectInTable,\n [Tokenizer.END_TAG_TOKEN]: endTagInSelectInTable,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TEMPLATE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTemplate,\n [Tokenizer.END_TAG_TOKEN]: endTagInTemplate,\n [Tokenizer.EOF_TOKEN]: eofInTemplate\n },\n [AFTER_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToRootHtmlElement,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterBody,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterBody,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [IN_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInFrameset,\n [Tokenizer.END_TAG_TOKEN]: endTagInFrameset,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterFrameset,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterFrameset,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterBody,\n [Tokenizer.END_TAG_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterFrameset,\n [Tokenizer.END_TAG_TOKEN]: ignoreToken,\n [Tokenizer.EOF_TOKEN]: stopParsing\n }\n };\n var Parser = class {\n constructor(options) {\n this.options = mergeOptions(DEFAULT_OPTIONS3, options);\n this.treeAdapter = this.options.treeAdapter;\n this.pendingScript = null;\n if (this.options.sourceCodeLocationInfo) {\n Mixin.install(this, LocationInfoParserMixin);\n }\n if (this.options.onParseError) {\n Mixin.install(this, ErrorReportingParserMixin, { onParseError: this.options.onParseError });\n }\n }\n parse(html2) {\n const document2 = this.treeAdapter.createDocument();\n this._bootstrap(document2, null);\n this.tokenizer.write(html2, true);\n this._runParsingLoop(null);\n return document2;\n }\n parseFragment(html2, fragmentContext) {\n if (!fragmentContext) {\n fragmentContext = this.treeAdapter.createElement($2.TEMPLATE, NS.HTML, []);\n }\n const documentMock = this.treeAdapter.createElement(\"documentmock\", NS.HTML, []);\n this._bootstrap(documentMock, fragmentContext);\n if (this.treeAdapter.getTagName(fragmentContext) === $2.TEMPLATE) {\n this._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n }\n this._initTokenizerForFragmentParsing();\n this._insertFakeRootElement();\n this._resetInsertionMode();\n this._findFormInFragmentContext();\n this.tokenizer.write(html2, true);\n this._runParsingLoop(null);\n const rootElement = this.treeAdapter.getFirstChild(documentMock);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n _bootstrap(document2, fragmentContext) {\n this.tokenizer = new Tokenizer(this.options);\n this.stopped = false;\n this.insertionMode = INITIAL_MODE;\n this.originalInsertionMode = \"\";\n this.document = document2;\n this.fragmentContext = fragmentContext;\n this.headElement = null;\n this.formElement = null;\n this.openElements = new OpenElementStack(this.document, this.treeAdapter);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n this.tmplInsertionModeStack = [];\n this.tmplInsertionModeStackTop = -1;\n this.currentTmplInsertionMode = null;\n this.pendingCharacterTokens = [];\n this.hasNonWhitespacePendingCharacterToken = false;\n this.framesetOk = true;\n this.skipNextNewLine = false;\n this.fosterParentingEnabled = false;\n }\n _err() {\n }\n _runParsingLoop(scriptHandler) {\n while (!this.stopped) {\n this._setupTokenizerCDATAMode();\n const token = this.tokenizer.getNextToken();\n if (token.type === Tokenizer.HIBERNATION_TOKEN) {\n break;\n }\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN && token.chars[0] === \"\\n\") {\n if (token.chars.length === 1) {\n continue;\n }\n token.chars = token.chars.substr(1);\n }\n }\n this._processInputToken(token);\n if (scriptHandler && this.pendingScript) {\n break;\n }\n }\n }\n runParsingLoopForCurrentChunk(writeCallback, scriptHandler) {\n this._runParsingLoop(scriptHandler);\n if (scriptHandler && this.pendingScript) {\n const script = this.pendingScript;\n this.pendingScript = null;\n scriptHandler(script);\n return;\n }\n if (writeCallback) {\n writeCallback();\n }\n }\n _setupTokenizerCDATAMode() {\n const current = this._getAdjustedCurrentElement();\n this.tokenizer.allowCDATA = current && current !== this.document && this.treeAdapter.getNamespaceURI(current) !== NS.HTML && !this._isIntegrationPoint(current);\n }\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = TEXT_MODE;\n }\n switchToPlaintextParsing() {\n this.insertionMode = TEXT_MODE;\n this.originalInsertionMode = IN_BODY_MODE;\n this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext ? this.fragmentContext : this.openElements.current;\n }\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n do {\n if (this.treeAdapter.getTagName(node) === $2.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n } while (node);\n }\n _initTokenizerForFragmentParsing() {\n if (this.treeAdapter.getNamespaceURI(this.fragmentContext) === NS.HTML) {\n const tn3 = this.treeAdapter.getTagName(this.fragmentContext);\n if (tn3 === $2.TITLE || tn3 === $2.TEXTAREA) {\n this.tokenizer.state = Tokenizer.MODE.RCDATA;\n } else if (tn3 === $2.STYLE || tn3 === $2.XMP || tn3 === $2.IFRAME || tn3 === $2.NOEMBED || tn3 === $2.NOFRAMES || tn3 === $2.NOSCRIPT) {\n this.tokenizer.state = Tokenizer.MODE.RAWTEXT;\n } else if (tn3 === $2.SCRIPT) {\n this.tokenizer.state = Tokenizer.MODE.SCRIPT_DATA;\n } else if (tn3 === $2.PLAINTEXT) {\n this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n }\n }\n _setDocumentType(token) {\n const name = token.name || \"\";\n const publicId = token.publicId || \"\";\n const systemId = token.systemId || \"\";\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n }\n _attachElementToTree(element4) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element4);\n } else {\n const parent2 = this.openElements.currentTmplContent || this.openElements.current;\n this.treeAdapter.appendChild(parent2, element4);\n }\n }\n _appendElement(token, namespaceURI) {\n const element4 = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element4);\n }\n _insertElement(token, namespaceURI) {\n const element4 = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element4);\n this.openElements.push(element4);\n }\n _insertFakeElement(tagName) {\n const element4 = this.treeAdapter.createElement(tagName, NS.HTML, []);\n this._attachElementToTree(element4);\n this.openElements.push(element4);\n }\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl);\n this.openElements.push(tmpl);\n }\n _insertFakeRootElement() {\n const element4 = this.treeAdapter.createElement($2.HTML, NS.HTML, []);\n this.treeAdapter.appendChild(this.openElements.current, element4);\n this.openElements.push(element4);\n }\n _appendCommentNode(token, parent2) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent2, commentNode);\n }\n _insertCharacters(token) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentText(token.chars);\n } else {\n const parent2 = this.openElements.currentTmplContent || this.openElements.current;\n this.treeAdapter.insertText(parent2, token.chars);\n }\n }\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n _shouldProcessTokenInForeignContent(token) {\n const current = this._getAdjustedCurrentElement();\n if (!current || current === this.document) {\n return false;\n }\n const ns = this.treeAdapter.getNamespaceURI(current);\n if (ns === NS.HTML) {\n return false;\n }\n if (this.treeAdapter.getTagName(current) === $2.ANNOTATION_XML && ns === NS.MATHML && token.type === Tokenizer.START_TAG_TOKEN && token.tagName === $2.SVG) {\n return false;\n }\n const isCharacterToken = token.type === Tokenizer.CHARACTER_TOKEN || token.type === Tokenizer.NULL_CHARACTER_TOKEN || token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n const isMathMLTextStartTag = token.type === Tokenizer.START_TAG_TOKEN && token.tagName !== $2.MGLYPH && token.tagName !== $2.MALIGNMARK;\n if ((isMathMLTextStartTag || isCharacterToken) && this._isIntegrationPoint(current, NS.MATHML)) {\n return false;\n }\n if ((token.type === Tokenizer.START_TAG_TOKEN || isCharacterToken) && this._isIntegrationPoint(current, NS.HTML)) {\n return false;\n }\n return token.type !== Tokenizer.EOF_TOKEN;\n }\n _processToken(token) {\n TOKEN_HANDLERS[this.insertionMode][token.type](this, token);\n }\n _processTokenInBodyMode(token) {\n TOKEN_HANDLERS[IN_BODY_MODE][token.type](this, token);\n }\n _processTokenInForeignContent(token) {\n if (token.type === Tokenizer.CHARACTER_TOKEN) {\n characterInForeignContent(this, token);\n } else if (token.type === Tokenizer.NULL_CHARACTER_TOKEN) {\n nullCharacterInForeignContent(this, token);\n } else if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN) {\n insertCharacters(this, token);\n } else if (token.type === Tokenizer.COMMENT_TOKEN) {\n appendComment(this, token);\n } else if (token.type === Tokenizer.START_TAG_TOKEN) {\n startTagInForeignContent(this, token);\n } else if (token.type === Tokenizer.END_TAG_TOKEN) {\n endTagInForeignContent(this, token);\n }\n }\n _processInputToken(token) {\n if (this._shouldProcessTokenInForeignContent(token)) {\n this._processTokenInForeignContent(token);\n } else {\n this._processToken(token);\n }\n if (token.type === Tokenizer.START_TAG_TOKEN && token.selfClosing && !token.ackSelfClosing) {\n this._err(ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n _isIntegrationPoint(element4, foreignNS) {\n const tn3 = this.treeAdapter.getTagName(element4);\n const ns = this.treeAdapter.getNamespaceURI(element4);\n const attrs = this.treeAdapter.getAttrList(element4);\n return foreignContent.isIntegrationPoint(tn3, ns, attrs, foreignNS);\n }\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.length;\n if (listLength) {\n let unopenIdx = listLength;\n let entry = null;\n do {\n unopenIdx--;\n entry = this.activeFormattingElements.entries[unopenIdx];\n if (entry.type === FormattingElementList.MARKER_ENTRY || this.openElements.contains(entry.element)) {\n unopenIdx++;\n break;\n }\n } while (unopenIdx > 0);\n for (let i3 = unopenIdx; i3 < listLength; i3++) {\n entry = this.activeFormattingElements.entries[i3];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = IN_ROW_MODE;\n }\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($2.P);\n this.openElements.popUntilTagNamePopped($2.P);\n }\n _resetInsertionMode() {\n for (let i3 = this.openElements.stackTop, last2 = false; i3 >= 0; i3--) {\n let element4 = this.openElements.items[i3];\n if (i3 === 0) {\n last2 = true;\n if (this.fragmentContext) {\n element4 = this.fragmentContext;\n }\n }\n const tn3 = this.treeAdapter.getTagName(element4);\n const newInsertionMode = INSERTION_MODE_RESET_MAP[tn3];\n if (newInsertionMode) {\n this.insertionMode = newInsertionMode;\n break;\n } else if (!last2 && (tn3 === $2.TD || tn3 === $2.TH)) {\n this.insertionMode = IN_CELL_MODE;\n break;\n } else if (!last2 && tn3 === $2.HEAD) {\n this.insertionMode = IN_HEAD_MODE;\n break;\n } else if (tn3 === $2.SELECT) {\n this._resetInsertionModeForSelect(i3);\n break;\n } else if (tn3 === $2.TEMPLATE) {\n this.insertionMode = this.currentTmplInsertionMode;\n break;\n } else if (tn3 === $2.HTML) {\n this.insertionMode = this.headElement ? AFTER_HEAD_MODE : BEFORE_HEAD_MODE;\n break;\n } else if (last2) {\n this.insertionMode = IN_BODY_MODE;\n break;\n }\n }\n }\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i3 = selectIdx - 1; i3 > 0; i3--) {\n const ancestor = this.openElements.items[i3];\n const tn3 = this.treeAdapter.getTagName(ancestor);\n if (tn3 === $2.TEMPLATE) {\n break;\n } else if (tn3 === $2.TABLE) {\n this.insertionMode = IN_SELECT_IN_TABLE_MODE;\n return;\n }\n }\n }\n this.insertionMode = IN_SELECT_MODE;\n }\n _pushTmplInsertionMode(mode) {\n this.tmplInsertionModeStack.push(mode);\n this.tmplInsertionModeStackTop++;\n this.currentTmplInsertionMode = mode;\n }\n _popTmplInsertionMode() {\n this.tmplInsertionModeStack.pop();\n this.tmplInsertionModeStackTop--;\n this.currentTmplInsertionMode = this.tmplInsertionModeStack[this.tmplInsertionModeStackTop];\n }\n _isElementCausesFosterParenting(element4) {\n const tn3 = this.treeAdapter.getTagName(element4);\n return tn3 === $2.TABLE || tn3 === $2.TBODY || tn3 === $2.TFOOT || tn3 === $2.THEAD || tn3 === $2.TR;\n }\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.current);\n }\n _findFosterParentingLocation() {\n const location = {\n parent: null,\n beforeElement: null\n };\n for (let i3 = this.openElements.stackTop; i3 >= 0; i3--) {\n const openElement = this.openElements.items[i3];\n const tn3 = this.treeAdapter.getTagName(openElement);\n const ns = this.treeAdapter.getNamespaceURI(openElement);\n if (tn3 === $2.TEMPLATE && ns === NS.HTML) {\n location.parent = this.treeAdapter.getTemplateContent(openElement);\n break;\n } else if (tn3 === $2.TABLE) {\n location.parent = this.treeAdapter.getParentNode(openElement);\n if (location.parent) {\n location.beforeElement = openElement;\n } else {\n location.parent = this.openElements.items[i3 - 1];\n }\n break;\n }\n }\n if (!location.parent) {\n location.parent = this.openElements.items[0];\n }\n return location;\n }\n _fosterParentElement(element4) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element4, location.beforeElement);\n } else {\n this.treeAdapter.appendChild(location.parent, element4);\n }\n }\n _fosterParentText(chars) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertTextBefore(location.parent, chars, location.beforeElement);\n } else {\n this.treeAdapter.insertText(location.parent, chars);\n }\n }\n _isSpecialElement(element4) {\n const tn3 = this.treeAdapter.getTagName(element4);\n const ns = this.treeAdapter.getNamespaceURI(element4);\n return HTML2.SPECIAL_ELEMENTS[ns][tn3];\n }\n };\n module2.exports = Parser;\n function aaObtainFormattingElementEntry(p4, token) {\n let formattingElementEntry = p4.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p4.openElements.contains(formattingElementEntry.element)) {\n p4.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n } else if (!p4.openElements.hasInScope(token.tagName)) {\n formattingElementEntry = null;\n }\n } else {\n genericEndTagInBody(p4, token);\n }\n return formattingElementEntry;\n }\n function aaObtainFurthestBlock(p4, formattingElementEntry) {\n let furthestBlock = null;\n for (let i3 = p4.openElements.stackTop; i3 >= 0; i3--) {\n const element4 = p4.openElements.items[i3];\n if (element4 === formattingElementEntry.element) {\n break;\n }\n if (p4._isSpecialElement(element4)) {\n furthestBlock = element4;\n }\n }\n if (!furthestBlock) {\n p4.openElements.popUntilElementPopped(formattingElementEntry.element);\n p4.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n }\n function aaInnerLoop(p4, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p4.openElements.getCommonAncestor(furthestBlock);\n for (let i3 = 0, element4 = nextElement; element4 !== formattingElement; i3++, element4 = nextElement) {\n nextElement = p4.openElements.getCommonAncestor(element4);\n const elementEntry = p4.activeFormattingElements.getElementEntry(element4);\n const counterOverflow = elementEntry && i3 >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p4.activeFormattingElements.removeEntry(elementEntry);\n }\n p4.openElements.remove(element4);\n } else {\n element4 = aaRecreateElementFromEntry(p4, elementEntry);\n if (lastElement === furthestBlock) {\n p4.activeFormattingElements.bookmark = elementEntry;\n }\n p4.treeAdapter.detachNode(lastElement);\n p4.treeAdapter.appendChild(element4, lastElement);\n lastElement = element4;\n }\n }\n return lastElement;\n }\n function aaRecreateElementFromEntry(p4, elementEntry) {\n const ns = p4.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p4.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n p4.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n }\n function aaInsertLastNodeInCommonAncestor(p4, commonAncestor, lastElement) {\n if (p4._isElementCausesFosterParenting(commonAncestor)) {\n p4._fosterParentElement(lastElement);\n } else {\n const tn3 = p4.treeAdapter.getTagName(commonAncestor);\n const ns = p4.treeAdapter.getNamespaceURI(commonAncestor);\n if (tn3 === $2.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p4.treeAdapter.getTemplateContent(commonAncestor);\n }\n p4.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n }\n function aaReplaceFormattingElement(p4, furthestBlock, formattingElementEntry) {\n const ns = p4.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const token = formattingElementEntry.token;\n const newElement = p4.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p4._adoptNodes(furthestBlock, newElement);\n p4.treeAdapter.appendChild(furthestBlock, newElement);\n p4.activeFormattingElements.insertElementAfterBookmark(newElement, formattingElementEntry.token);\n p4.activeFormattingElements.removeEntry(formattingElementEntry);\n p4.openElements.remove(formattingElementEntry.element);\n p4.openElements.insertAfter(furthestBlock, newElement);\n }\n function callAdoptionAgency(p4, token) {\n let formattingElementEntry;\n for (let i3 = 0; i3 < AA_OUTER_LOOP_ITER; i3++) {\n formattingElementEntry = aaObtainFormattingElementEntry(p4, token, formattingElementEntry);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p4, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p4.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p4, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p4.openElements.getCommonAncestor(formattingElementEntry.element);\n p4.treeAdapter.detachNode(lastElement);\n aaInsertLastNodeInCommonAncestor(p4, commonAncestor, lastElement);\n aaReplaceFormattingElement(p4, furthestBlock, formattingElementEntry);\n }\n }\n function ignoreToken() {\n }\n function misplacedDoctype(p4) {\n p4._err(ERR.misplacedDoctype);\n }\n function appendComment(p4, token) {\n p4._appendCommentNode(token, p4.openElements.currentTmplContent || p4.openElements.current);\n }\n function appendCommentToRootHtmlElement(p4, token) {\n p4._appendCommentNode(token, p4.openElements.items[0]);\n }\n function appendCommentToDocument(p4, token) {\n p4._appendCommentNode(token, p4.document);\n }\n function insertCharacters(p4, token) {\n p4._insertCharacters(token);\n }\n function stopParsing(p4) {\n p4.stopped = true;\n }\n function doctypeInInitialMode(p4, token) {\n p4._setDocumentType(token);\n const mode = token.forceQuirks ? HTML2.DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n if (!doctype.isConforming(token)) {\n p4._err(ERR.nonConformingDoctype);\n }\n p4.treeAdapter.setDocumentMode(p4.document, mode);\n p4.insertionMode = BEFORE_HTML_MODE;\n }\n function tokenInInitialMode(p4, token) {\n p4._err(ERR.missingDoctype, { beforeToken: true });\n p4.treeAdapter.setDocumentMode(p4.document, HTML2.DOCUMENT_MODE.QUIRKS);\n p4.insertionMode = BEFORE_HTML_MODE;\n p4._processToken(token);\n }\n function startTagBeforeHtml(p4, token) {\n if (token.tagName === $2.HTML) {\n p4._insertElement(token, NS.HTML);\n p4.insertionMode = BEFORE_HEAD_MODE;\n } else {\n tokenBeforeHtml(p4, token);\n }\n }\n function endTagBeforeHtml(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.HTML || tn3 === $2.HEAD || tn3 === $2.BODY || tn3 === $2.BR) {\n tokenBeforeHtml(p4, token);\n }\n }\n function tokenBeforeHtml(p4, token) {\n p4._insertFakeRootElement();\n p4.insertionMode = BEFORE_HEAD_MODE;\n p4._processToken(token);\n }\n function startTagBeforeHead(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.HTML) {\n startTagInBody(p4, token);\n } else if (tn3 === $2.HEAD) {\n p4._insertElement(token, NS.HTML);\n p4.headElement = p4.openElements.current;\n p4.insertionMode = IN_HEAD_MODE;\n } else {\n tokenBeforeHead(p4, token);\n }\n }\n function endTagBeforeHead(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.HEAD || tn3 === $2.BODY || tn3 === $2.HTML || tn3 === $2.BR) {\n tokenBeforeHead(p4, token);\n } else {\n p4._err(ERR.endTagWithoutMatchingOpenElement);\n }\n }\n function tokenBeforeHead(p4, token) {\n p4._insertFakeElement($2.HEAD);\n p4.headElement = p4.openElements.current;\n p4.insertionMode = IN_HEAD_MODE;\n p4._processToken(token);\n }\n function startTagInHead(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.HTML) {\n startTagInBody(p4, token);\n } else if (tn3 === $2.BASE || tn3 === $2.BASEFONT || tn3 === $2.BGSOUND || tn3 === $2.LINK || tn3 === $2.META) {\n p4._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn3 === $2.TITLE) {\n p4._switchToTextParsing(token, Tokenizer.MODE.RCDATA);\n } else if (tn3 === $2.NOSCRIPT) {\n if (p4.options.scriptingEnabled) {\n p4._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n } else {\n p4._insertElement(token, NS.HTML);\n p4.insertionMode = IN_HEAD_NO_SCRIPT_MODE;\n }\n } else if (tn3 === $2.NOFRAMES || tn3 === $2.STYLE) {\n p4._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n } else if (tn3 === $2.SCRIPT) {\n p4._switchToTextParsing(token, Tokenizer.MODE.SCRIPT_DATA);\n } else if (tn3 === $2.TEMPLATE) {\n p4._insertTemplate(token, NS.HTML);\n p4.activeFormattingElements.insertMarker();\n p4.framesetOk = false;\n p4.insertionMode = IN_TEMPLATE_MODE;\n p4._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n } else if (tn3 === $2.HEAD) {\n p4._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenInHead(p4, token);\n }\n }\n function endTagInHead(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.HEAD) {\n p4.openElements.pop();\n p4.insertionMode = AFTER_HEAD_MODE;\n } else if (tn3 === $2.BODY || tn3 === $2.BR || tn3 === $2.HTML) {\n tokenInHead(p4, token);\n } else if (tn3 === $2.TEMPLATE) {\n if (p4.openElements.tmplCount > 0) {\n p4.openElements.generateImpliedEndTagsThoroughly();\n if (p4.openElements.currentTagName !== $2.TEMPLATE) {\n p4._err(ERR.closingOfElementWithOpenChildElements);\n }\n p4.openElements.popUntilTagNamePopped($2.TEMPLATE);\n p4.activeFormattingElements.clearToLastMarker();\n p4._popTmplInsertionMode();\n p4._resetInsertionMode();\n } else {\n p4._err(ERR.endTagWithoutMatchingOpenElement);\n }\n } else {\n p4._err(ERR.endTagWithoutMatchingOpenElement);\n }\n }\n function tokenInHead(p4, token) {\n p4.openElements.pop();\n p4.insertionMode = AFTER_HEAD_MODE;\n p4._processToken(token);\n }\n function startTagInHeadNoScript(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.HTML) {\n startTagInBody(p4, token);\n } else if (tn3 === $2.BASEFONT || tn3 === $2.BGSOUND || tn3 === $2.HEAD || tn3 === $2.LINK || tn3 === $2.META || tn3 === $2.NOFRAMES || tn3 === $2.STYLE) {\n startTagInHead(p4, token);\n } else if (tn3 === $2.NOSCRIPT) {\n p4._err(ERR.nestedNoscriptInHead);\n } else {\n tokenInHeadNoScript(p4, token);\n }\n }\n function endTagInHeadNoScript(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.NOSCRIPT) {\n p4.openElements.pop();\n p4.insertionMode = IN_HEAD_MODE;\n } else if (tn3 === $2.BR) {\n tokenInHeadNoScript(p4, token);\n } else {\n p4._err(ERR.endTagWithoutMatchingOpenElement);\n }\n }\n function tokenInHeadNoScript(p4, token) {\n const errCode = token.type === Tokenizer.EOF_TOKEN ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n p4._err(errCode);\n p4.openElements.pop();\n p4.insertionMode = IN_HEAD_MODE;\n p4._processToken(token);\n }\n function startTagAfterHead(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.HTML) {\n startTagInBody(p4, token);\n } else if (tn3 === $2.BODY) {\n p4._insertElement(token, NS.HTML);\n p4.framesetOk = false;\n p4.insertionMode = IN_BODY_MODE;\n } else if (tn3 === $2.FRAMESET) {\n p4._insertElement(token, NS.HTML);\n p4.insertionMode = IN_FRAMESET_MODE;\n } else if (tn3 === $2.BASE || tn3 === $2.BASEFONT || tn3 === $2.BGSOUND || tn3 === $2.LINK || tn3 === $2.META || tn3 === $2.NOFRAMES || tn3 === $2.SCRIPT || tn3 === $2.STYLE || tn3 === $2.TEMPLATE || tn3 === $2.TITLE) {\n p4._err(ERR.abandonedHeadElementChild);\n p4.openElements.push(p4.headElement);\n startTagInHead(p4, token);\n p4.openElements.remove(p4.headElement);\n } else if (tn3 === $2.HEAD) {\n p4._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenAfterHead(p4, token);\n }\n }\n function endTagAfterHead(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.BODY || tn3 === $2.HTML || tn3 === $2.BR) {\n tokenAfterHead(p4, token);\n } else if (tn3 === $2.TEMPLATE) {\n endTagInHead(p4, token);\n } else {\n p4._err(ERR.endTagWithoutMatchingOpenElement);\n }\n }\n function tokenAfterHead(p4, token) {\n p4._insertFakeElement($2.BODY);\n p4.insertionMode = IN_BODY_MODE;\n p4._processToken(token);\n }\n function whitespaceCharacterInBody(p4, token) {\n p4._reconstructActiveFormattingElements();\n p4._insertCharacters(token);\n }\n function characterInBody(p4, token) {\n p4._reconstructActiveFormattingElements();\n p4._insertCharacters(token);\n p4.framesetOk = false;\n }\n function htmlStartTagInBody(p4, token) {\n if (p4.openElements.tmplCount === 0) {\n p4.treeAdapter.adoptAttributes(p4.openElements.items[0], token.attrs);\n }\n }\n function bodyStartTagInBody(p4, token) {\n const bodyElement = p4.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p4.openElements.tmplCount === 0) {\n p4.framesetOk = false;\n p4.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n }\n function framesetStartTagInBody(p4, token) {\n const bodyElement = p4.openElements.tryPeekProperlyNestedBodyElement();\n if (p4.framesetOk && bodyElement) {\n p4.treeAdapter.detachNode(bodyElement);\n p4.openElements.popAllUpToHtmlElement();\n p4._insertElement(token, NS.HTML);\n p4.insertionMode = IN_FRAMESET_MODE;\n }\n }\n function addressStartTagInBody(p4, token) {\n if (p4.openElements.hasInButtonScope($2.P)) {\n p4._closePElement();\n }\n p4._insertElement(token, NS.HTML);\n }\n function numberedHeaderStartTagInBody(p4, token) {\n if (p4.openElements.hasInButtonScope($2.P)) {\n p4._closePElement();\n }\n const tn3 = p4.openElements.currentTagName;\n if (tn3 === $2.H1 || tn3 === $2.H2 || tn3 === $2.H3 || tn3 === $2.H4 || tn3 === $2.H5 || tn3 === $2.H6) {\n p4.openElements.pop();\n }\n p4._insertElement(token, NS.HTML);\n }\n function preStartTagInBody(p4, token) {\n if (p4.openElements.hasInButtonScope($2.P)) {\n p4._closePElement();\n }\n p4._insertElement(token, NS.HTML);\n p4.skipNextNewLine = true;\n p4.framesetOk = false;\n }\n function formStartTagInBody(p4, token) {\n const inTemplate = p4.openElements.tmplCount > 0;\n if (!p4.formElement || inTemplate) {\n if (p4.openElements.hasInButtonScope($2.P)) {\n p4._closePElement();\n }\n p4._insertElement(token, NS.HTML);\n if (!inTemplate) {\n p4.formElement = p4.openElements.current;\n }\n }\n }\n function listItemStartTagInBody(p4, token) {\n p4.framesetOk = false;\n const tn3 = token.tagName;\n for (let i3 = p4.openElements.stackTop; i3 >= 0; i3--) {\n const element4 = p4.openElements.items[i3];\n const elementTn = p4.treeAdapter.getTagName(element4);\n let closeTn = null;\n if (tn3 === $2.LI && elementTn === $2.LI) {\n closeTn = $2.LI;\n } else if ((tn3 === $2.DD || tn3 === $2.DT) && (elementTn === $2.DD || elementTn === $2.DT)) {\n closeTn = elementTn;\n }\n if (closeTn) {\n p4.openElements.generateImpliedEndTagsWithExclusion(closeTn);\n p4.openElements.popUntilTagNamePopped(closeTn);\n break;\n }\n if (elementTn !== $2.ADDRESS && elementTn !== $2.DIV && elementTn !== $2.P && p4._isSpecialElement(element4)) {\n break;\n }\n }\n if (p4.openElements.hasInButtonScope($2.P)) {\n p4._closePElement();\n }\n p4._insertElement(token, NS.HTML);\n }\n function plaintextStartTagInBody(p4, token) {\n if (p4.openElements.hasInButtonScope($2.P)) {\n p4._closePElement();\n }\n p4._insertElement(token, NS.HTML);\n p4.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n function buttonStartTagInBody(p4, token) {\n if (p4.openElements.hasInScope($2.BUTTON)) {\n p4.openElements.generateImpliedEndTags();\n p4.openElements.popUntilTagNamePopped($2.BUTTON);\n }\n p4._reconstructActiveFormattingElements();\n p4._insertElement(token, NS.HTML);\n p4.framesetOk = false;\n }\n function aStartTagInBody(p4, token) {\n const activeElementEntry = p4.activeFormattingElements.getElementEntryInScopeWithTagName($2.A);\n if (activeElementEntry) {\n callAdoptionAgency(p4, token);\n p4.openElements.remove(activeElementEntry.element);\n p4.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p4._reconstructActiveFormattingElements();\n p4._insertElement(token, NS.HTML);\n p4.activeFormattingElements.pushElement(p4.openElements.current, token);\n }\n function bStartTagInBody(p4, token) {\n p4._reconstructActiveFormattingElements();\n p4._insertElement(token, NS.HTML);\n p4.activeFormattingElements.pushElement(p4.openElements.current, token);\n }\n function nobrStartTagInBody(p4, token) {\n p4._reconstructActiveFormattingElements();\n if (p4.openElements.hasInScope($2.NOBR)) {\n callAdoptionAgency(p4, token);\n p4._reconstructActiveFormattingElements();\n }\n p4._insertElement(token, NS.HTML);\n p4.activeFormattingElements.pushElement(p4.openElements.current, token);\n }\n function appletStartTagInBody(p4, token) {\n p4._reconstructActiveFormattingElements();\n p4._insertElement(token, NS.HTML);\n p4.activeFormattingElements.insertMarker();\n p4.framesetOk = false;\n }\n function tableStartTagInBody(p4, token) {\n if (p4.treeAdapter.getDocumentMode(p4.document) !== HTML2.DOCUMENT_MODE.QUIRKS && p4.openElements.hasInButtonScope($2.P)) {\n p4._closePElement();\n }\n p4._insertElement(token, NS.HTML);\n p4.framesetOk = false;\n p4.insertionMode = IN_TABLE_MODE;\n }\n function areaStartTagInBody(p4, token) {\n p4._reconstructActiveFormattingElements();\n p4._appendElement(token, NS.HTML);\n p4.framesetOk = false;\n token.ackSelfClosing = true;\n }\n function inputStartTagInBody(p4, token) {\n p4._reconstructActiveFormattingElements();\n p4._appendElement(token, NS.HTML);\n const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n if (!inputType || inputType.toLowerCase() !== HIDDEN_INPUT_TYPE) {\n p4.framesetOk = false;\n }\n token.ackSelfClosing = true;\n }\n function paramStartTagInBody(p4, token) {\n p4._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n }\n function hrStartTagInBody(p4, token) {\n if (p4.openElements.hasInButtonScope($2.P)) {\n p4._closePElement();\n }\n p4._appendElement(token, NS.HTML);\n p4.framesetOk = false;\n token.ackSelfClosing = true;\n }\n function imageStartTagInBody(p4, token) {\n token.tagName = $2.IMG;\n areaStartTagInBody(p4, token);\n }\n function textareaStartTagInBody(p4, token) {\n p4._insertElement(token, NS.HTML);\n p4.skipNextNewLine = true;\n p4.tokenizer.state = Tokenizer.MODE.RCDATA;\n p4.originalInsertionMode = p4.insertionMode;\n p4.framesetOk = false;\n p4.insertionMode = TEXT_MODE;\n }\n function xmpStartTagInBody(p4, token) {\n if (p4.openElements.hasInButtonScope($2.P)) {\n p4._closePElement();\n }\n p4._reconstructActiveFormattingElements();\n p4.framesetOk = false;\n p4._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n }\n function iframeStartTagInBody(p4, token) {\n p4.framesetOk = false;\n p4._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n }\n function noembedStartTagInBody(p4, token) {\n p4._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n }\n function selectStartTagInBody(p4, token) {\n p4._reconstructActiveFormattingElements();\n p4._insertElement(token, NS.HTML);\n p4.framesetOk = false;\n if (p4.insertionMode === IN_TABLE_MODE || p4.insertionMode === IN_CAPTION_MODE || p4.insertionMode === IN_TABLE_BODY_MODE || p4.insertionMode === IN_ROW_MODE || p4.insertionMode === IN_CELL_MODE) {\n p4.insertionMode = IN_SELECT_IN_TABLE_MODE;\n } else {\n p4.insertionMode = IN_SELECT_MODE;\n }\n }\n function optgroupStartTagInBody(p4, token) {\n if (p4.openElements.currentTagName === $2.OPTION) {\n p4.openElements.pop();\n }\n p4._reconstructActiveFormattingElements();\n p4._insertElement(token, NS.HTML);\n }\n function rbStartTagInBody(p4, token) {\n if (p4.openElements.hasInScope($2.RUBY)) {\n p4.openElements.generateImpliedEndTags();\n }\n p4._insertElement(token, NS.HTML);\n }\n function rtStartTagInBody(p4, token) {\n if (p4.openElements.hasInScope($2.RUBY)) {\n p4.openElements.generateImpliedEndTagsWithExclusion($2.RTC);\n }\n p4._insertElement(token, NS.HTML);\n }\n function menuStartTagInBody(p4, token) {\n if (p4.openElements.hasInButtonScope($2.P)) {\n p4._closePElement();\n }\n p4._insertElement(token, NS.HTML);\n }\n function mathStartTagInBody(p4, token) {\n p4._reconstructActiveFormattingElements();\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p4._appendElement(token, NS.MATHML);\n } else {\n p4._insertElement(token, NS.MATHML);\n }\n token.ackSelfClosing = true;\n }\n function svgStartTagInBody(p4, token) {\n p4._reconstructActiveFormattingElements();\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p4._appendElement(token, NS.SVG);\n } else {\n p4._insertElement(token, NS.SVG);\n }\n token.ackSelfClosing = true;\n }\n function genericStartTagInBody(p4, token) {\n p4._reconstructActiveFormattingElements();\n p4._insertElement(token, NS.HTML);\n }\n function startTagInBody(p4, token) {\n const tn3 = token.tagName;\n switch (tn3.length) {\n case 1:\n if (tn3 === $2.I || tn3 === $2.S || tn3 === $2.B || tn3 === $2.U) {\n bStartTagInBody(p4, token);\n } else if (tn3 === $2.P) {\n addressStartTagInBody(p4, token);\n } else if (tn3 === $2.A) {\n aStartTagInBody(p4, token);\n } else {\n genericStartTagInBody(p4, token);\n }\n break;\n case 2:\n if (tn3 === $2.DL || tn3 === $2.OL || tn3 === $2.UL) {\n addressStartTagInBody(p4, token);\n } else if (tn3 === $2.H1 || tn3 === $2.H2 || tn3 === $2.H3 || tn3 === $2.H4 || tn3 === $2.H5 || tn3 === $2.H6) {\n numberedHeaderStartTagInBody(p4, token);\n } else if (tn3 === $2.LI || tn3 === $2.DD || tn3 === $2.DT) {\n listItemStartTagInBody(p4, token);\n } else if (tn3 === $2.EM || tn3 === $2.TT) {\n bStartTagInBody(p4, token);\n } else if (tn3 === $2.BR) {\n areaStartTagInBody(p4, token);\n } else if (tn3 === $2.HR) {\n hrStartTagInBody(p4, token);\n } else if (tn3 === $2.RB) {\n rbStartTagInBody(p4, token);\n } else if (tn3 === $2.RT || tn3 === $2.RP) {\n rtStartTagInBody(p4, token);\n } else if (tn3 !== $2.TH && tn3 !== $2.TD && tn3 !== $2.TR) {\n genericStartTagInBody(p4, token);\n }\n break;\n case 3:\n if (tn3 === $2.DIV || tn3 === $2.DIR || tn3 === $2.NAV) {\n addressStartTagInBody(p4, token);\n } else if (tn3 === $2.PRE) {\n preStartTagInBody(p4, token);\n } else if (tn3 === $2.BIG) {\n bStartTagInBody(p4, token);\n } else if (tn3 === $2.IMG || tn3 === $2.WBR) {\n areaStartTagInBody(p4, token);\n } else if (tn3 === $2.XMP) {\n xmpStartTagInBody(p4, token);\n } else if (tn3 === $2.SVG) {\n svgStartTagInBody(p4, token);\n } else if (tn3 === $2.RTC) {\n rbStartTagInBody(p4, token);\n } else if (tn3 !== $2.COL) {\n genericStartTagInBody(p4, token);\n }\n break;\n case 4:\n if (tn3 === $2.HTML) {\n htmlStartTagInBody(p4, token);\n } else if (tn3 === $2.BASE || tn3 === $2.LINK || tn3 === $2.META) {\n startTagInHead(p4, token);\n } else if (tn3 === $2.BODY) {\n bodyStartTagInBody(p4, token);\n } else if (tn3 === $2.MAIN || tn3 === $2.MENU) {\n addressStartTagInBody(p4, token);\n } else if (tn3 === $2.FORM) {\n formStartTagInBody(p4, token);\n } else if (tn3 === $2.CODE || tn3 === $2.FONT) {\n bStartTagInBody(p4, token);\n } else if (tn3 === $2.NOBR) {\n nobrStartTagInBody(p4, token);\n } else if (tn3 === $2.AREA) {\n areaStartTagInBody(p4, token);\n } else if (tn3 === $2.MATH) {\n mathStartTagInBody(p4, token);\n } else if (tn3 === $2.MENU) {\n menuStartTagInBody(p4, token);\n } else if (tn3 !== $2.HEAD) {\n genericStartTagInBody(p4, token);\n }\n break;\n case 5:\n if (tn3 === $2.STYLE || tn3 === $2.TITLE) {\n startTagInHead(p4, token);\n } else if (tn3 === $2.ASIDE) {\n addressStartTagInBody(p4, token);\n } else if (tn3 === $2.SMALL) {\n bStartTagInBody(p4, token);\n } else if (tn3 === $2.TABLE) {\n tableStartTagInBody(p4, token);\n } else if (tn3 === $2.EMBED) {\n areaStartTagInBody(p4, token);\n } else if (tn3 === $2.INPUT) {\n inputStartTagInBody(p4, token);\n } else if (tn3 === $2.PARAM || tn3 === $2.TRACK) {\n paramStartTagInBody(p4, token);\n } else if (tn3 === $2.IMAGE) {\n imageStartTagInBody(p4, token);\n } else if (tn3 !== $2.FRAME && tn3 !== $2.TBODY && tn3 !== $2.TFOOT && tn3 !== $2.THEAD) {\n genericStartTagInBody(p4, token);\n }\n break;\n case 6:\n if (tn3 === $2.SCRIPT) {\n startTagInHead(p4, token);\n } else if (tn3 === $2.CENTER || tn3 === $2.FIGURE || tn3 === $2.FOOTER || tn3 === $2.HEADER || tn3 === $2.HGROUP || tn3 === $2.DIALOG) {\n addressStartTagInBody(p4, token);\n } else if (tn3 === $2.BUTTON) {\n buttonStartTagInBody(p4, token);\n } else if (tn3 === $2.STRIKE || tn3 === $2.STRONG) {\n bStartTagInBody(p4, token);\n } else if (tn3 === $2.APPLET || tn3 === $2.OBJECT) {\n appletStartTagInBody(p4, token);\n } else if (tn3 === $2.KEYGEN) {\n areaStartTagInBody(p4, token);\n } else if (tn3 === $2.SOURCE) {\n paramStartTagInBody(p4, token);\n } else if (tn3 === $2.IFRAME) {\n iframeStartTagInBody(p4, token);\n } else if (tn3 === $2.SELECT) {\n selectStartTagInBody(p4, token);\n } else if (tn3 === $2.OPTION) {\n optgroupStartTagInBody(p4, token);\n } else {\n genericStartTagInBody(p4, token);\n }\n break;\n case 7:\n if (tn3 === $2.BGSOUND) {\n startTagInHead(p4, token);\n } else if (tn3 === $2.DETAILS || tn3 === $2.ADDRESS || tn3 === $2.ARTICLE || tn3 === $2.SECTION || tn3 === $2.SUMMARY) {\n addressStartTagInBody(p4, token);\n } else if (tn3 === $2.LISTING) {\n preStartTagInBody(p4, token);\n } else if (tn3 === $2.MARQUEE) {\n appletStartTagInBody(p4, token);\n } else if (tn3 === $2.NOEMBED) {\n noembedStartTagInBody(p4, token);\n } else if (tn3 !== $2.CAPTION) {\n genericStartTagInBody(p4, token);\n }\n break;\n case 8:\n if (tn3 === $2.BASEFONT) {\n startTagInHead(p4, token);\n } else if (tn3 === $2.FRAMESET) {\n framesetStartTagInBody(p4, token);\n } else if (tn3 === $2.FIELDSET) {\n addressStartTagInBody(p4, token);\n } else if (tn3 === $2.TEXTAREA) {\n textareaStartTagInBody(p4, token);\n } else if (tn3 === $2.TEMPLATE) {\n startTagInHead(p4, token);\n } else if (tn3 === $2.NOSCRIPT) {\n if (p4.options.scriptingEnabled) {\n noembedStartTagInBody(p4, token);\n } else {\n genericStartTagInBody(p4, token);\n }\n } else if (tn3 === $2.OPTGROUP) {\n optgroupStartTagInBody(p4, token);\n } else if (tn3 !== $2.COLGROUP) {\n genericStartTagInBody(p4, token);\n }\n break;\n case 9:\n if (tn3 === $2.PLAINTEXT) {\n plaintextStartTagInBody(p4, token);\n } else {\n genericStartTagInBody(p4, token);\n }\n break;\n case 10:\n if (tn3 === $2.BLOCKQUOTE || tn3 === $2.FIGCAPTION) {\n addressStartTagInBody(p4, token);\n } else {\n genericStartTagInBody(p4, token);\n }\n break;\n default:\n genericStartTagInBody(p4, token);\n }\n }\n function bodyEndTagInBody(p4) {\n if (p4.openElements.hasInScope($2.BODY)) {\n p4.insertionMode = AFTER_BODY_MODE;\n }\n }\n function htmlEndTagInBody(p4, token) {\n if (p4.openElements.hasInScope($2.BODY)) {\n p4.insertionMode = AFTER_BODY_MODE;\n p4._processToken(token);\n }\n }\n function addressEndTagInBody(p4, token) {\n const tn3 = token.tagName;\n if (p4.openElements.hasInScope(tn3)) {\n p4.openElements.generateImpliedEndTags();\n p4.openElements.popUntilTagNamePopped(tn3);\n }\n }\n function formEndTagInBody(p4) {\n const inTemplate = p4.openElements.tmplCount > 0;\n const formElement = p4.formElement;\n if (!inTemplate) {\n p4.formElement = null;\n }\n if ((formElement || inTemplate) && p4.openElements.hasInScope($2.FORM)) {\n p4.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p4.openElements.popUntilTagNamePopped($2.FORM);\n } else {\n p4.openElements.remove(formElement);\n }\n }\n }\n function pEndTagInBody(p4) {\n if (!p4.openElements.hasInButtonScope($2.P)) {\n p4._insertFakeElement($2.P);\n }\n p4._closePElement();\n }\n function liEndTagInBody(p4) {\n if (p4.openElements.hasInListItemScope($2.LI)) {\n p4.openElements.generateImpliedEndTagsWithExclusion($2.LI);\n p4.openElements.popUntilTagNamePopped($2.LI);\n }\n }\n function ddEndTagInBody(p4, token) {\n const tn3 = token.tagName;\n if (p4.openElements.hasInScope(tn3)) {\n p4.openElements.generateImpliedEndTagsWithExclusion(tn3);\n p4.openElements.popUntilTagNamePopped(tn3);\n }\n }\n function numberedHeaderEndTagInBody(p4) {\n if (p4.openElements.hasNumberedHeaderInScope()) {\n p4.openElements.generateImpliedEndTags();\n p4.openElements.popUntilNumberedHeaderPopped();\n }\n }\n function appletEndTagInBody(p4, token) {\n const tn3 = token.tagName;\n if (p4.openElements.hasInScope(tn3)) {\n p4.openElements.generateImpliedEndTags();\n p4.openElements.popUntilTagNamePopped(tn3);\n p4.activeFormattingElements.clearToLastMarker();\n }\n }\n function brEndTagInBody(p4) {\n p4._reconstructActiveFormattingElements();\n p4._insertFakeElement($2.BR);\n p4.openElements.pop();\n p4.framesetOk = false;\n }\n function genericEndTagInBody(p4, token) {\n const tn3 = token.tagName;\n for (let i3 = p4.openElements.stackTop; i3 > 0; i3--) {\n const element4 = p4.openElements.items[i3];\n if (p4.treeAdapter.getTagName(element4) === tn3) {\n p4.openElements.generateImpliedEndTagsWithExclusion(tn3);\n p4.openElements.popUntilElementPopped(element4);\n break;\n }\n if (p4._isSpecialElement(element4)) {\n break;\n }\n }\n }\n function endTagInBody(p4, token) {\n const tn3 = token.tagName;\n switch (tn3.length) {\n case 1:\n if (tn3 === $2.A || tn3 === $2.B || tn3 === $2.I || tn3 === $2.S || tn3 === $2.U) {\n callAdoptionAgency(p4, token);\n } else if (tn3 === $2.P) {\n pEndTagInBody(p4, token);\n } else {\n genericEndTagInBody(p4, token);\n }\n break;\n case 2:\n if (tn3 === $2.DL || tn3 === $2.UL || tn3 === $2.OL) {\n addressEndTagInBody(p4, token);\n } else if (tn3 === $2.LI) {\n liEndTagInBody(p4, token);\n } else if (tn3 === $2.DD || tn3 === $2.DT) {\n ddEndTagInBody(p4, token);\n } else if (tn3 === $2.H1 || tn3 === $2.H2 || tn3 === $2.H3 || tn3 === $2.H4 || tn3 === $2.H5 || tn3 === $2.H6) {\n numberedHeaderEndTagInBody(p4, token);\n } else if (tn3 === $2.BR) {\n brEndTagInBody(p4, token);\n } else if (tn3 === $2.EM || tn3 === $2.TT) {\n callAdoptionAgency(p4, token);\n } else {\n genericEndTagInBody(p4, token);\n }\n break;\n case 3:\n if (tn3 === $2.BIG) {\n callAdoptionAgency(p4, token);\n } else if (tn3 === $2.DIR || tn3 === $2.DIV || tn3 === $2.NAV || tn3 === $2.PRE) {\n addressEndTagInBody(p4, token);\n } else {\n genericEndTagInBody(p4, token);\n }\n break;\n case 4:\n if (tn3 === $2.BODY) {\n bodyEndTagInBody(p4, token);\n } else if (tn3 === $2.HTML) {\n htmlEndTagInBody(p4, token);\n } else if (tn3 === $2.FORM) {\n formEndTagInBody(p4, token);\n } else if (tn3 === $2.CODE || tn3 === $2.FONT || tn3 === $2.NOBR) {\n callAdoptionAgency(p4, token);\n } else if (tn3 === $2.MAIN || tn3 === $2.MENU) {\n addressEndTagInBody(p4, token);\n } else {\n genericEndTagInBody(p4, token);\n }\n break;\n case 5:\n if (tn3 === $2.ASIDE) {\n addressEndTagInBody(p4, token);\n } else if (tn3 === $2.SMALL) {\n callAdoptionAgency(p4, token);\n } else {\n genericEndTagInBody(p4, token);\n }\n break;\n case 6:\n if (tn3 === $2.CENTER || tn3 === $2.FIGURE || tn3 === $2.FOOTER || tn3 === $2.HEADER || tn3 === $2.HGROUP || tn3 === $2.DIALOG) {\n addressEndTagInBody(p4, token);\n } else if (tn3 === $2.APPLET || tn3 === $2.OBJECT) {\n appletEndTagInBody(p4, token);\n } else if (tn3 === $2.STRIKE || tn3 === $2.STRONG) {\n callAdoptionAgency(p4, token);\n } else {\n genericEndTagInBody(p4, token);\n }\n break;\n case 7:\n if (tn3 === $2.ADDRESS || tn3 === $2.ARTICLE || tn3 === $2.DETAILS || tn3 === $2.SECTION || tn3 === $2.SUMMARY || tn3 === $2.LISTING) {\n addressEndTagInBody(p4, token);\n } else if (tn3 === $2.MARQUEE) {\n appletEndTagInBody(p4, token);\n } else {\n genericEndTagInBody(p4, token);\n }\n break;\n case 8:\n if (tn3 === $2.FIELDSET) {\n addressEndTagInBody(p4, token);\n } else if (tn3 === $2.TEMPLATE) {\n endTagInHead(p4, token);\n } else {\n genericEndTagInBody(p4, token);\n }\n break;\n case 10:\n if (tn3 === $2.BLOCKQUOTE || tn3 === $2.FIGCAPTION) {\n addressEndTagInBody(p4, token);\n } else {\n genericEndTagInBody(p4, token);\n }\n break;\n default:\n genericEndTagInBody(p4, token);\n }\n }\n function eofInBody(p4, token) {\n if (p4.tmplInsertionModeStackTop > -1) {\n eofInTemplate(p4, token);\n } else {\n p4.stopped = true;\n }\n }\n function endTagInText(p4, token) {\n if (token.tagName === $2.SCRIPT) {\n p4.pendingScript = p4.openElements.current;\n }\n p4.openElements.pop();\n p4.insertionMode = p4.originalInsertionMode;\n }\n function eofInText(p4, token) {\n p4._err(ERR.eofInElementThatCanContainOnlyText);\n p4.openElements.pop();\n p4.insertionMode = p4.originalInsertionMode;\n p4._processToken(token);\n }\n function characterInTable(p4, token) {\n const curTn = p4.openElements.currentTagName;\n if (curTn === $2.TABLE || curTn === $2.TBODY || curTn === $2.TFOOT || curTn === $2.THEAD || curTn === $2.TR) {\n p4.pendingCharacterTokens = [];\n p4.hasNonWhitespacePendingCharacterToken = false;\n p4.originalInsertionMode = p4.insertionMode;\n p4.insertionMode = IN_TABLE_TEXT_MODE;\n p4._processToken(token);\n } else {\n tokenInTable(p4, token);\n }\n }\n function captionStartTagInTable(p4, token) {\n p4.openElements.clearBackToTableContext();\n p4.activeFormattingElements.insertMarker();\n p4._insertElement(token, NS.HTML);\n p4.insertionMode = IN_CAPTION_MODE;\n }\n function colgroupStartTagInTable(p4, token) {\n p4.openElements.clearBackToTableContext();\n p4._insertElement(token, NS.HTML);\n p4.insertionMode = IN_COLUMN_GROUP_MODE;\n }\n function colStartTagInTable(p4, token) {\n p4.openElements.clearBackToTableContext();\n p4._insertFakeElement($2.COLGROUP);\n p4.insertionMode = IN_COLUMN_GROUP_MODE;\n p4._processToken(token);\n }\n function tbodyStartTagInTable(p4, token) {\n p4.openElements.clearBackToTableContext();\n p4._insertElement(token, NS.HTML);\n p4.insertionMode = IN_TABLE_BODY_MODE;\n }\n function tdStartTagInTable(p4, token) {\n p4.openElements.clearBackToTableContext();\n p4._insertFakeElement($2.TBODY);\n p4.insertionMode = IN_TABLE_BODY_MODE;\n p4._processToken(token);\n }\n function tableStartTagInTable(p4, token) {\n if (p4.openElements.hasInTableScope($2.TABLE)) {\n p4.openElements.popUntilTagNamePopped($2.TABLE);\n p4._resetInsertionMode();\n p4._processToken(token);\n }\n }\n function inputStartTagInTable(p4, token) {\n const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n if (inputType && inputType.toLowerCase() === HIDDEN_INPUT_TYPE) {\n p4._appendElement(token, NS.HTML);\n } else {\n tokenInTable(p4, token);\n }\n token.ackSelfClosing = true;\n }\n function formStartTagInTable(p4, token) {\n if (!p4.formElement && p4.openElements.tmplCount === 0) {\n p4._insertElement(token, NS.HTML);\n p4.formElement = p4.openElements.current;\n p4.openElements.pop();\n }\n }\n function startTagInTable(p4, token) {\n const tn3 = token.tagName;\n switch (tn3.length) {\n case 2:\n if (tn3 === $2.TD || tn3 === $2.TH || tn3 === $2.TR) {\n tdStartTagInTable(p4, token);\n } else {\n tokenInTable(p4, token);\n }\n break;\n case 3:\n if (tn3 === $2.COL) {\n colStartTagInTable(p4, token);\n } else {\n tokenInTable(p4, token);\n }\n break;\n case 4:\n if (tn3 === $2.FORM) {\n formStartTagInTable(p4, token);\n } else {\n tokenInTable(p4, token);\n }\n break;\n case 5:\n if (tn3 === $2.TABLE) {\n tableStartTagInTable(p4, token);\n } else if (tn3 === $2.STYLE) {\n startTagInHead(p4, token);\n } else if (tn3 === $2.TBODY || tn3 === $2.TFOOT || tn3 === $2.THEAD) {\n tbodyStartTagInTable(p4, token);\n } else if (tn3 === $2.INPUT) {\n inputStartTagInTable(p4, token);\n } else {\n tokenInTable(p4, token);\n }\n break;\n case 6:\n if (tn3 === $2.SCRIPT) {\n startTagInHead(p4, token);\n } else {\n tokenInTable(p4, token);\n }\n break;\n case 7:\n if (tn3 === $2.CAPTION) {\n captionStartTagInTable(p4, token);\n } else {\n tokenInTable(p4, token);\n }\n break;\n case 8:\n if (tn3 === $2.COLGROUP) {\n colgroupStartTagInTable(p4, token);\n } else if (tn3 === $2.TEMPLATE) {\n startTagInHead(p4, token);\n } else {\n tokenInTable(p4, token);\n }\n break;\n default:\n tokenInTable(p4, token);\n }\n }\n function endTagInTable(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.TABLE) {\n if (p4.openElements.hasInTableScope($2.TABLE)) {\n p4.openElements.popUntilTagNamePopped($2.TABLE);\n p4._resetInsertionMode();\n }\n } else if (tn3 === $2.TEMPLATE) {\n endTagInHead(p4, token);\n } else if (tn3 !== $2.BODY && tn3 !== $2.CAPTION && tn3 !== $2.COL && tn3 !== $2.COLGROUP && tn3 !== $2.HTML && tn3 !== $2.TBODY && tn3 !== $2.TD && tn3 !== $2.TFOOT && tn3 !== $2.TH && tn3 !== $2.THEAD && tn3 !== $2.TR) {\n tokenInTable(p4, token);\n }\n }\n function tokenInTable(p4, token) {\n const savedFosterParentingState = p4.fosterParentingEnabled;\n p4.fosterParentingEnabled = true;\n p4._processTokenInBodyMode(token);\n p4.fosterParentingEnabled = savedFosterParentingState;\n }\n function whitespaceCharacterInTableText(p4, token) {\n p4.pendingCharacterTokens.push(token);\n }\n function characterInTableText(p4, token) {\n p4.pendingCharacterTokens.push(token);\n p4.hasNonWhitespacePendingCharacterToken = true;\n }\n function tokenInTableText(p4, token) {\n let i3 = 0;\n if (p4.hasNonWhitespacePendingCharacterToken) {\n for (; i3 < p4.pendingCharacterTokens.length; i3++) {\n tokenInTable(p4, p4.pendingCharacterTokens[i3]);\n }\n } else {\n for (; i3 < p4.pendingCharacterTokens.length; i3++) {\n p4._insertCharacters(p4.pendingCharacterTokens[i3]);\n }\n }\n p4.insertionMode = p4.originalInsertionMode;\n p4._processToken(token);\n }\n function startTagInCaption(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.CAPTION || tn3 === $2.COL || tn3 === $2.COLGROUP || tn3 === $2.TBODY || tn3 === $2.TD || tn3 === $2.TFOOT || tn3 === $2.TH || tn3 === $2.THEAD || tn3 === $2.TR) {\n if (p4.openElements.hasInTableScope($2.CAPTION)) {\n p4.openElements.generateImpliedEndTags();\n p4.openElements.popUntilTagNamePopped($2.CAPTION);\n p4.activeFormattingElements.clearToLastMarker();\n p4.insertionMode = IN_TABLE_MODE;\n p4._processToken(token);\n }\n } else {\n startTagInBody(p4, token);\n }\n }\n function endTagInCaption(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.CAPTION || tn3 === $2.TABLE) {\n if (p4.openElements.hasInTableScope($2.CAPTION)) {\n p4.openElements.generateImpliedEndTags();\n p4.openElements.popUntilTagNamePopped($2.CAPTION);\n p4.activeFormattingElements.clearToLastMarker();\n p4.insertionMode = IN_TABLE_MODE;\n if (tn3 === $2.TABLE) {\n p4._processToken(token);\n }\n }\n } else if (tn3 !== $2.BODY && tn3 !== $2.COL && tn3 !== $2.COLGROUP && tn3 !== $2.HTML && tn3 !== $2.TBODY && tn3 !== $2.TD && tn3 !== $2.TFOOT && tn3 !== $2.TH && tn3 !== $2.THEAD && tn3 !== $2.TR) {\n endTagInBody(p4, token);\n }\n }\n function startTagInColumnGroup(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.HTML) {\n startTagInBody(p4, token);\n } else if (tn3 === $2.COL) {\n p4._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn3 === $2.TEMPLATE) {\n startTagInHead(p4, token);\n } else {\n tokenInColumnGroup(p4, token);\n }\n }\n function endTagInColumnGroup(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.COLGROUP) {\n if (p4.openElements.currentTagName === $2.COLGROUP) {\n p4.openElements.pop();\n p4.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn3 === $2.TEMPLATE) {\n endTagInHead(p4, token);\n } else if (tn3 !== $2.COL) {\n tokenInColumnGroup(p4, token);\n }\n }\n function tokenInColumnGroup(p4, token) {\n if (p4.openElements.currentTagName === $2.COLGROUP) {\n p4.openElements.pop();\n p4.insertionMode = IN_TABLE_MODE;\n p4._processToken(token);\n }\n }\n function startTagInTableBody(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.TR) {\n p4.openElements.clearBackToTableBodyContext();\n p4._insertElement(token, NS.HTML);\n p4.insertionMode = IN_ROW_MODE;\n } else if (tn3 === $2.TH || tn3 === $2.TD) {\n p4.openElements.clearBackToTableBodyContext();\n p4._insertFakeElement($2.TR);\n p4.insertionMode = IN_ROW_MODE;\n p4._processToken(token);\n } else if (tn3 === $2.CAPTION || tn3 === $2.COL || tn3 === $2.COLGROUP || tn3 === $2.TBODY || tn3 === $2.TFOOT || tn3 === $2.THEAD) {\n if (p4.openElements.hasTableBodyContextInTableScope()) {\n p4.openElements.clearBackToTableBodyContext();\n p4.openElements.pop();\n p4.insertionMode = IN_TABLE_MODE;\n p4._processToken(token);\n }\n } else {\n startTagInTable(p4, token);\n }\n }\n function endTagInTableBody(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.TBODY || tn3 === $2.TFOOT || tn3 === $2.THEAD) {\n if (p4.openElements.hasInTableScope(tn3)) {\n p4.openElements.clearBackToTableBodyContext();\n p4.openElements.pop();\n p4.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn3 === $2.TABLE) {\n if (p4.openElements.hasTableBodyContextInTableScope()) {\n p4.openElements.clearBackToTableBodyContext();\n p4.openElements.pop();\n p4.insertionMode = IN_TABLE_MODE;\n p4._processToken(token);\n }\n } else if (tn3 !== $2.BODY && tn3 !== $2.CAPTION && tn3 !== $2.COL && tn3 !== $2.COLGROUP || tn3 !== $2.HTML && tn3 !== $2.TD && tn3 !== $2.TH && tn3 !== $2.TR) {\n endTagInTable(p4, token);\n }\n }\n function startTagInRow(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.TH || tn3 === $2.TD) {\n p4.openElements.clearBackToTableRowContext();\n p4._insertElement(token, NS.HTML);\n p4.insertionMode = IN_CELL_MODE;\n p4.activeFormattingElements.insertMarker();\n } else if (tn3 === $2.CAPTION || tn3 === $2.COL || tn3 === $2.COLGROUP || tn3 === $2.TBODY || tn3 === $2.TFOOT || tn3 === $2.THEAD || tn3 === $2.TR) {\n if (p4.openElements.hasInTableScope($2.TR)) {\n p4.openElements.clearBackToTableRowContext();\n p4.openElements.pop();\n p4.insertionMode = IN_TABLE_BODY_MODE;\n p4._processToken(token);\n }\n } else {\n startTagInTable(p4, token);\n }\n }\n function endTagInRow(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.TR) {\n if (p4.openElements.hasInTableScope($2.TR)) {\n p4.openElements.clearBackToTableRowContext();\n p4.openElements.pop();\n p4.insertionMode = IN_TABLE_BODY_MODE;\n }\n } else if (tn3 === $2.TABLE) {\n if (p4.openElements.hasInTableScope($2.TR)) {\n p4.openElements.clearBackToTableRowContext();\n p4.openElements.pop();\n p4.insertionMode = IN_TABLE_BODY_MODE;\n p4._processToken(token);\n }\n } else if (tn3 === $2.TBODY || tn3 === $2.TFOOT || tn3 === $2.THEAD) {\n if (p4.openElements.hasInTableScope(tn3) || p4.openElements.hasInTableScope($2.TR)) {\n p4.openElements.clearBackToTableRowContext();\n p4.openElements.pop();\n p4.insertionMode = IN_TABLE_BODY_MODE;\n p4._processToken(token);\n }\n } else if (tn3 !== $2.BODY && tn3 !== $2.CAPTION && tn3 !== $2.COL && tn3 !== $2.COLGROUP || tn3 !== $2.HTML && tn3 !== $2.TD && tn3 !== $2.TH) {\n endTagInTable(p4, token);\n }\n }\n function startTagInCell(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.CAPTION || tn3 === $2.COL || tn3 === $2.COLGROUP || tn3 === $2.TBODY || tn3 === $2.TD || tn3 === $2.TFOOT || tn3 === $2.TH || tn3 === $2.THEAD || tn3 === $2.TR) {\n if (p4.openElements.hasInTableScope($2.TD) || p4.openElements.hasInTableScope($2.TH)) {\n p4._closeTableCell();\n p4._processToken(token);\n }\n } else {\n startTagInBody(p4, token);\n }\n }\n function endTagInCell(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.TD || tn3 === $2.TH) {\n if (p4.openElements.hasInTableScope(tn3)) {\n p4.openElements.generateImpliedEndTags();\n p4.openElements.popUntilTagNamePopped(tn3);\n p4.activeFormattingElements.clearToLastMarker();\n p4.insertionMode = IN_ROW_MODE;\n }\n } else if (tn3 === $2.TABLE || tn3 === $2.TBODY || tn3 === $2.TFOOT || tn3 === $2.THEAD || tn3 === $2.TR) {\n if (p4.openElements.hasInTableScope(tn3)) {\n p4._closeTableCell();\n p4._processToken(token);\n }\n } else if (tn3 !== $2.BODY && tn3 !== $2.CAPTION && tn3 !== $2.COL && tn3 !== $2.COLGROUP && tn3 !== $2.HTML) {\n endTagInBody(p4, token);\n }\n }\n function startTagInSelect(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.HTML) {\n startTagInBody(p4, token);\n } else if (tn3 === $2.OPTION) {\n if (p4.openElements.currentTagName === $2.OPTION) {\n p4.openElements.pop();\n }\n p4._insertElement(token, NS.HTML);\n } else if (tn3 === $2.OPTGROUP) {\n if (p4.openElements.currentTagName === $2.OPTION) {\n p4.openElements.pop();\n }\n if (p4.openElements.currentTagName === $2.OPTGROUP) {\n p4.openElements.pop();\n }\n p4._insertElement(token, NS.HTML);\n } else if (tn3 === $2.INPUT || tn3 === $2.KEYGEN || tn3 === $2.TEXTAREA || tn3 === $2.SELECT) {\n if (p4.openElements.hasInSelectScope($2.SELECT)) {\n p4.openElements.popUntilTagNamePopped($2.SELECT);\n p4._resetInsertionMode();\n if (tn3 !== $2.SELECT) {\n p4._processToken(token);\n }\n }\n } else if (tn3 === $2.SCRIPT || tn3 === $2.TEMPLATE) {\n startTagInHead(p4, token);\n }\n }\n function endTagInSelect(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.OPTGROUP) {\n const prevOpenElement = p4.openElements.items[p4.openElements.stackTop - 1];\n const prevOpenElementTn = prevOpenElement && p4.treeAdapter.getTagName(prevOpenElement);\n if (p4.openElements.currentTagName === $2.OPTION && prevOpenElementTn === $2.OPTGROUP) {\n p4.openElements.pop();\n }\n if (p4.openElements.currentTagName === $2.OPTGROUP) {\n p4.openElements.pop();\n }\n } else if (tn3 === $2.OPTION) {\n if (p4.openElements.currentTagName === $2.OPTION) {\n p4.openElements.pop();\n }\n } else if (tn3 === $2.SELECT && p4.openElements.hasInSelectScope($2.SELECT)) {\n p4.openElements.popUntilTagNamePopped($2.SELECT);\n p4._resetInsertionMode();\n } else if (tn3 === $2.TEMPLATE) {\n endTagInHead(p4, token);\n }\n }\n function startTagInSelectInTable(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.CAPTION || tn3 === $2.TABLE || tn3 === $2.TBODY || tn3 === $2.TFOOT || tn3 === $2.THEAD || tn3 === $2.TR || tn3 === $2.TD || tn3 === $2.TH) {\n p4.openElements.popUntilTagNamePopped($2.SELECT);\n p4._resetInsertionMode();\n p4._processToken(token);\n } else {\n startTagInSelect(p4, token);\n }\n }\n function endTagInSelectInTable(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.CAPTION || tn3 === $2.TABLE || tn3 === $2.TBODY || tn3 === $2.TFOOT || tn3 === $2.THEAD || tn3 === $2.TR || tn3 === $2.TD || tn3 === $2.TH) {\n if (p4.openElements.hasInTableScope(tn3)) {\n p4.openElements.popUntilTagNamePopped($2.SELECT);\n p4._resetInsertionMode();\n p4._processToken(token);\n }\n } else {\n endTagInSelect(p4, token);\n }\n }\n function startTagInTemplate(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.BASE || tn3 === $2.BASEFONT || tn3 === $2.BGSOUND || tn3 === $2.LINK || tn3 === $2.META || tn3 === $2.NOFRAMES || tn3 === $2.SCRIPT || tn3 === $2.STYLE || tn3 === $2.TEMPLATE || tn3 === $2.TITLE) {\n startTagInHead(p4, token);\n } else {\n const newInsertionMode = TEMPLATE_INSERTION_MODE_SWITCH_MAP[tn3] || IN_BODY_MODE;\n p4._popTmplInsertionMode();\n p4._pushTmplInsertionMode(newInsertionMode);\n p4.insertionMode = newInsertionMode;\n p4._processToken(token);\n }\n }\n function endTagInTemplate(p4, token) {\n if (token.tagName === $2.TEMPLATE) {\n endTagInHead(p4, token);\n }\n }\n function eofInTemplate(p4, token) {\n if (p4.openElements.tmplCount > 0) {\n p4.openElements.popUntilTagNamePopped($2.TEMPLATE);\n p4.activeFormattingElements.clearToLastMarker();\n p4._popTmplInsertionMode();\n p4._resetInsertionMode();\n p4._processToken(token);\n } else {\n p4.stopped = true;\n }\n }\n function startTagAfterBody(p4, token) {\n if (token.tagName === $2.HTML) {\n startTagInBody(p4, token);\n } else {\n tokenAfterBody(p4, token);\n }\n }\n function endTagAfterBody(p4, token) {\n if (token.tagName === $2.HTML) {\n if (!p4.fragmentContext) {\n p4.insertionMode = AFTER_AFTER_BODY_MODE;\n }\n } else {\n tokenAfterBody(p4, token);\n }\n }\n function tokenAfterBody(p4, token) {\n p4.insertionMode = IN_BODY_MODE;\n p4._processToken(token);\n }\n function startTagInFrameset(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.HTML) {\n startTagInBody(p4, token);\n } else if (tn3 === $2.FRAMESET) {\n p4._insertElement(token, NS.HTML);\n } else if (tn3 === $2.FRAME) {\n p4._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn3 === $2.NOFRAMES) {\n startTagInHead(p4, token);\n }\n }\n function endTagInFrameset(p4, token) {\n if (token.tagName === $2.FRAMESET && !p4.openElements.isRootHtmlElementCurrent()) {\n p4.openElements.pop();\n if (!p4.fragmentContext && p4.openElements.currentTagName !== $2.FRAMESET) {\n p4.insertionMode = AFTER_FRAMESET_MODE;\n }\n }\n }\n function startTagAfterFrameset(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.HTML) {\n startTagInBody(p4, token);\n } else if (tn3 === $2.NOFRAMES) {\n startTagInHead(p4, token);\n }\n }\n function endTagAfterFrameset(p4, token) {\n if (token.tagName === $2.HTML) {\n p4.insertionMode = AFTER_AFTER_FRAMESET_MODE;\n }\n }\n function startTagAfterAfterBody(p4, token) {\n if (token.tagName === $2.HTML) {\n startTagInBody(p4, token);\n } else {\n tokenAfterAfterBody(p4, token);\n }\n }\n function tokenAfterAfterBody(p4, token) {\n p4.insertionMode = IN_BODY_MODE;\n p4._processToken(token);\n }\n function startTagAfterAfterFrameset(p4, token) {\n const tn3 = token.tagName;\n if (tn3 === $2.HTML) {\n startTagInBody(p4, token);\n } else if (tn3 === $2.NOFRAMES) {\n startTagInHead(p4, token);\n }\n }\n function nullCharacterInForeignContent(p4, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p4._insertCharacters(token);\n }\n function characterInForeignContent(p4, token) {\n p4._insertCharacters(token);\n p4.framesetOk = false;\n }\n function startTagInForeignContent(p4, token) {\n if (foreignContent.causesExit(token) && !p4.fragmentContext) {\n while (p4.treeAdapter.getNamespaceURI(p4.openElements.current) !== NS.HTML && !p4._isIntegrationPoint(p4.openElements.current)) {\n p4.openElements.pop();\n }\n p4._processToken(token);\n } else {\n const current = p4._getAdjustedCurrentElement();\n const currentNs = p4.treeAdapter.getNamespaceURI(current);\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n } else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p4._appendElement(token, currentNs);\n } else {\n p4._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n }\n function endTagInForeignContent(p4, token) {\n for (let i3 = p4.openElements.stackTop; i3 > 0; i3--) {\n const element4 = p4.openElements.items[i3];\n if (p4.treeAdapter.getNamespaceURI(element4) === NS.HTML) {\n p4._processToken(token);\n break;\n }\n if (p4.treeAdapter.getTagName(element4).toLowerCase() === token.tagName) {\n p4.openElements.popUntilElementPopped(element4);\n break;\n }\n }\n }\n }\n});\n\n// node_modules/parse5/lib/serializer/index.js\nvar require_serializer = __commonJS({\n \"node_modules/parse5/lib/serializer/index.js\"(exports2, module2) {\n \"use strict\";\n var defaultTreeAdapter = require_default();\n var mergeOptions = require_merge_options();\n var doctype = require_doctype();\n var HTML2 = require_html();\n var $2 = HTML2.TAG_NAMES;\n var NS = HTML2.NAMESPACES;\n var DEFAULT_OPTIONS3 = {\n treeAdapter: defaultTreeAdapter\n };\n var AMP_REGEX = /&/g;\n var NBSP_REGEX = /\\u00a0/g;\n var DOUBLE_QUOTE_REGEX = /\"/g;\n var LT_REGEX = //g;\n var Serializer = class {\n constructor(node, options) {\n this.options = mergeOptions(DEFAULT_OPTIONS3, options);\n this.treeAdapter = this.options.treeAdapter;\n this.html = \"\";\n this.startNode = node;\n }\n serialize() {\n this._serializeChildNodes(this.startNode);\n return this.html;\n }\n _serializeChildNodes(parentNode) {\n const childNodes = this.treeAdapter.getChildNodes(parentNode);\n if (childNodes) {\n for (let i3 = 0, cnLength = childNodes.length; i3 < cnLength; i3++) {\n const currentNode = childNodes[i3];\n if (this.treeAdapter.isElementNode(currentNode)) {\n this._serializeElement(currentNode);\n } else if (this.treeAdapter.isTextNode(currentNode)) {\n this._serializeTextNode(currentNode);\n } else if (this.treeAdapter.isCommentNode(currentNode)) {\n this._serializeCommentNode(currentNode);\n } else if (this.treeAdapter.isDocumentTypeNode(currentNode)) {\n this._serializeDocumentTypeNode(currentNode);\n }\n }\n }\n }\n _serializeElement(node) {\n const tn3 = this.treeAdapter.getTagName(node);\n const ns = this.treeAdapter.getNamespaceURI(node);\n this.html += \"<\" + tn3;\n this._serializeAttributes(node);\n this.html += \">\";\n if (tn3 !== $2.AREA && tn3 !== $2.BASE && tn3 !== $2.BASEFONT && tn3 !== $2.BGSOUND && tn3 !== $2.BR && tn3 !== $2.COL && tn3 !== $2.EMBED && tn3 !== $2.FRAME && tn3 !== $2.HR && tn3 !== $2.IMG && tn3 !== $2.INPUT && tn3 !== $2.KEYGEN && tn3 !== $2.LINK && tn3 !== $2.META && tn3 !== $2.PARAM && tn3 !== $2.SOURCE && tn3 !== $2.TRACK && tn3 !== $2.WBR) {\n const childNodesHolder = tn3 === $2.TEMPLATE && ns === NS.HTML ? this.treeAdapter.getTemplateContent(node) : node;\n this._serializeChildNodes(childNodesHolder);\n this.html += \"\";\n }\n }\n _serializeAttributes(node) {\n const attrs = this.treeAdapter.getAttrList(node);\n for (let i3 = 0, attrsLength = attrs.length; i3 < attrsLength; i3++) {\n const attr = attrs[i3];\n const value = Serializer.escapeString(attr.value, true);\n this.html += \" \";\n if (!attr.namespace) {\n this.html += attr.name;\n } else if (attr.namespace === NS.XML) {\n this.html += \"xml:\" + attr.name;\n } else if (attr.namespace === NS.XMLNS) {\n if (attr.name !== \"xmlns\") {\n this.html += \"xmlns:\";\n }\n this.html += attr.name;\n } else if (attr.namespace === NS.XLINK) {\n this.html += \"xlink:\" + attr.name;\n } else {\n this.html += attr.prefix + \":\" + attr.name;\n }\n this.html += '=\"' + value + '\"';\n }\n }\n _serializeTextNode(node) {\n const content = this.treeAdapter.getTextNodeContent(node);\n const parent2 = this.treeAdapter.getParentNode(node);\n let parentTn = void 0;\n if (parent2 && this.treeAdapter.isElementNode(parent2)) {\n parentTn = this.treeAdapter.getTagName(parent2);\n }\n if (parentTn === $2.STYLE || parentTn === $2.SCRIPT || parentTn === $2.XMP || parentTn === $2.IFRAME || parentTn === $2.NOEMBED || parentTn === $2.NOFRAMES || parentTn === $2.PLAINTEXT || parentTn === $2.NOSCRIPT) {\n this.html += content;\n } else {\n this.html += Serializer.escapeString(content, false);\n }\n }\n _serializeCommentNode(node) {\n this.html += \"\";\n }\n _serializeDocumentTypeNode(node) {\n const name = this.treeAdapter.getDocumentTypeNodeName(node);\n this.html += \"<\" + doctype.serializeContent(name, null, null) + \">\";\n }\n };\n Serializer.escapeString = function(str, attrMode) {\n str = str.replace(AMP_REGEX, \"&\").replace(NBSP_REGEX, \" \");\n if (attrMode) {\n str = str.replace(DOUBLE_QUOTE_REGEX, \""\");\n } else {\n str = str.replace(LT_REGEX, \"<\").replace(GT_REGEX, \">\");\n }\n return str;\n };\n module2.exports = Serializer;\n }\n});\n\n// node_modules/parse5/lib/index.js\nvar require_lib11 = __commonJS({\n \"node_modules/parse5/lib/index.js\"(exports2) {\n \"use strict\";\n var Parser = require_parser();\n var Serializer = require_serializer();\n exports2.parse = function parse2(html2, options) {\n const parser = new Parser(options);\n return parser.parse(html2);\n };\n exports2.parseFragment = function parseFragment(fragmentContext, html2, options) {\n if (typeof fragmentContext === \"string\") {\n options = html2;\n html2 = fragmentContext;\n fragmentContext = null;\n }\n const parser = new Parser(options);\n return parser.parseFragment(html2, fragmentContext);\n };\n exports2.serialize = function(node, options) {\n const serializer = new Serializer(node, options);\n return serializer.serialize();\n };\n }\n});\n\n// node_modules/parse5-htmlparser2-tree-adapter/lib/index.js\nvar require_lib12 = __commonJS({\n \"node_modules/parse5-htmlparser2-tree-adapter/lib/index.js\"(exports2) {\n \"use strict\";\n var doctype = require_doctype();\n var { DOCUMENT_MODE } = require_html();\n var nodeTypes = {\n element: 1,\n text: 3,\n cdata: 4,\n comment: 8\n };\n var nodePropertyShorthands = {\n tagName: \"name\",\n childNodes: \"children\",\n parentNode: \"parent\",\n previousSibling: \"prev\",\n nextSibling: \"next\",\n nodeValue: \"data\"\n };\n var Node3 = class {\n constructor(props) {\n for (const key of Object.keys(props)) {\n this[key] = props[key];\n }\n }\n get firstChild() {\n const children = this.children;\n return children && children[0] || null;\n }\n get lastChild() {\n const children = this.children;\n return children && children[children.length - 1] || null;\n }\n get nodeType() {\n return nodeTypes[this.type] || nodeTypes.element;\n }\n };\n Object.keys(nodePropertyShorthands).forEach((key) => {\n const shorthand = nodePropertyShorthands[key];\n Object.defineProperty(Node3.prototype, key, {\n get: function() {\n return this[shorthand] || null;\n },\n set: function(val) {\n this[shorthand] = val;\n return val;\n }\n });\n });\n exports2.createDocument = function() {\n return new Node3({\n type: \"root\",\n name: \"root\",\n parent: null,\n prev: null,\n next: null,\n children: [],\n \"x-mode\": DOCUMENT_MODE.NO_QUIRKS\n });\n };\n exports2.createDocumentFragment = function() {\n return new Node3({\n type: \"root\",\n name: \"root\",\n parent: null,\n prev: null,\n next: null,\n children: []\n });\n };\n exports2.createElement = function(tagName, namespaceURI, attrs) {\n const attribs = /* @__PURE__ */ Object.create(null);\n const attribsNamespace = /* @__PURE__ */ Object.create(null);\n const attribsPrefix = /* @__PURE__ */ Object.create(null);\n for (let i3 = 0; i3 < attrs.length; i3++) {\n const attrName = attrs[i3].name;\n attribs[attrName] = attrs[i3].value;\n attribsNamespace[attrName] = attrs[i3].namespace;\n attribsPrefix[attrName] = attrs[i3].prefix;\n }\n return new Node3({\n type: tagName === \"script\" || tagName === \"style\" ? tagName : \"tag\",\n name: tagName,\n namespace: namespaceURI,\n attribs,\n \"x-attribsNamespace\": attribsNamespace,\n \"x-attribsPrefix\": attribsPrefix,\n children: [],\n parent: null,\n prev: null,\n next: null\n });\n };\n exports2.createCommentNode = function(data) {\n return new Node3({\n type: \"comment\",\n data,\n parent: null,\n prev: null,\n next: null\n });\n };\n var createTextNode = function(value) {\n return new Node3({\n type: \"text\",\n data: value,\n parent: null,\n prev: null,\n next: null\n });\n };\n var appendChild = exports2.appendChild = function(parentNode, newNode) {\n const prev = parentNode.children[parentNode.children.length - 1];\n if (prev) {\n prev.next = newNode;\n newNode.prev = prev;\n }\n parentNode.children.push(newNode);\n newNode.parent = parentNode;\n };\n var insertBefore = exports2.insertBefore = function(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.children.indexOf(referenceNode);\n const prev = referenceNode.prev;\n if (prev) {\n prev.next = newNode;\n newNode.prev = prev;\n }\n referenceNode.prev = newNode;\n newNode.next = referenceNode;\n parentNode.children.splice(insertionIdx, 0, newNode);\n newNode.parent = parentNode;\n };\n exports2.setTemplateContent = function(templateElement, contentElement) {\n appendChild(templateElement, contentElement);\n };\n exports2.getTemplateContent = function(templateElement) {\n return templateElement.children[0];\n };\n exports2.setDocumentType = function(document2, name, publicId, systemId) {\n const data = doctype.serializeContent(name, publicId, systemId);\n let doctypeNode = null;\n for (let i3 = 0; i3 < document2.children.length; i3++) {\n if (document2.children[i3].type === \"directive\" && document2.children[i3].name === \"!doctype\") {\n doctypeNode = document2.children[i3];\n break;\n }\n }\n if (doctypeNode) {\n doctypeNode.data = data;\n doctypeNode[\"x-name\"] = name;\n doctypeNode[\"x-publicId\"] = publicId;\n doctypeNode[\"x-systemId\"] = systemId;\n } else {\n appendChild(document2, new Node3({\n type: \"directive\",\n name: \"!doctype\",\n data,\n \"x-name\": name,\n \"x-publicId\": publicId,\n \"x-systemId\": systemId\n }));\n }\n };\n exports2.setDocumentMode = function(document2, mode) {\n document2[\"x-mode\"] = mode;\n };\n exports2.getDocumentMode = function(document2) {\n return document2[\"x-mode\"];\n };\n exports2.detachNode = function(node) {\n if (node.parent) {\n const idx = node.parent.children.indexOf(node);\n const prev = node.prev;\n const next = node.next;\n node.prev = null;\n node.next = null;\n if (prev) {\n prev.next = next;\n }\n if (next) {\n next.prev = prev;\n }\n node.parent.children.splice(idx, 1);\n node.parent = null;\n }\n };\n exports2.insertText = function(parentNode, text5) {\n const lastChild = parentNode.children[parentNode.children.length - 1];\n if (lastChild && lastChild.type === \"text\") {\n lastChild.data += text5;\n } else {\n appendChild(parentNode, createTextNode(text5));\n }\n };\n exports2.insertTextBefore = function(parentNode, text5, referenceNode) {\n const prevNode = parentNode.children[parentNode.children.indexOf(referenceNode) - 1];\n if (prevNode && prevNode.type === \"text\") {\n prevNode.data += text5;\n } else {\n insertBefore(parentNode, createTextNode(text5), referenceNode);\n }\n };\n exports2.adoptAttributes = function(recipient, attrs) {\n for (let i3 = 0; i3 < attrs.length; i3++) {\n const attrName = attrs[i3].name;\n if (typeof recipient.attribs[attrName] === \"undefined\") {\n recipient.attribs[attrName] = attrs[i3].value;\n recipient[\"x-attribsNamespace\"][attrName] = attrs[i3].namespace;\n recipient[\"x-attribsPrefix\"][attrName] = attrs[i3].prefix;\n }\n }\n };\n exports2.getFirstChild = function(node) {\n return node.children[0];\n };\n exports2.getChildNodes = function(node) {\n return node.children;\n };\n exports2.getParentNode = function(node) {\n return node.parent;\n };\n exports2.getAttrList = function(element4) {\n const attrList = [];\n for (const name in element4.attribs) {\n attrList.push({\n name,\n value: element4.attribs[name],\n namespace: element4[\"x-attribsNamespace\"][name],\n prefix: element4[\"x-attribsPrefix\"][name]\n });\n }\n return attrList;\n };\n exports2.getTagName = function(element4) {\n return element4.name;\n };\n exports2.getNamespaceURI = function(element4) {\n return element4.namespace;\n };\n exports2.getTextNodeContent = function(textNode) {\n return textNode.data;\n };\n exports2.getCommentNodeContent = function(commentNode) {\n return commentNode.data;\n };\n exports2.getDocumentTypeNodeName = function(doctypeNode) {\n return doctypeNode[\"x-name\"];\n };\n exports2.getDocumentTypeNodePublicId = function(doctypeNode) {\n return doctypeNode[\"x-publicId\"];\n };\n exports2.getDocumentTypeNodeSystemId = function(doctypeNode) {\n return doctypeNode[\"x-systemId\"];\n };\n exports2.isTextNode = function(node) {\n return node.type === \"text\";\n };\n exports2.isCommentNode = function(node) {\n return node.type === \"comment\";\n };\n exports2.isDocumentTypeNode = function(node) {\n return node.type === \"directive\" && node.name === \"!doctype\";\n };\n exports2.isElementNode = function(node) {\n return !!node.attribs;\n };\n exports2.setNodeSourceCodeLocation = function(node, location) {\n node.sourceCodeLocation = location;\n };\n exports2.getNodeSourceCodeLocation = function(node) {\n return node.sourceCodeLocation;\n };\n exports2.updateNodeSourceCodeLocation = function(node, endLocation) {\n node.sourceCodeLocation = Object.assign(node.sourceCodeLocation, endLocation);\n };\n }\n});\n\n// node_modules/cheerio/lib/parsers/parse5-adapter.js\nvar require_parse5_adapter = __commonJS({\n \"node_modules/cheerio/lib/parsers/parse5-adapter.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.render = exports2.parse = void 0;\n var tslib_1 = require_tslib2();\n var domhandler_1 = require_lib3();\n var parse5_1 = require_lib11();\n var parse5_htmlparser2_tree_adapter_1 = tslib_1.__importDefault(require_lib12());\n function parse2(content, options, isDocument) {\n var opts = {\n scriptingEnabled: typeof options.scriptingEnabled === \"boolean\" ? options.scriptingEnabled : true,\n treeAdapter: parse5_htmlparser2_tree_adapter_1.default,\n sourceCodeLocationInfo: options.sourceCodeLocationInfo\n };\n var context = options.context;\n return isDocument ? parse5_1.parse(content, opts) : parse5_1.parseFragment(context, content, opts);\n }\n exports2.parse = parse2;\n function render3(dom) {\n var _a;\n var nodes = \"length\" in dom ? dom : [dom];\n for (var index7 = 0; index7 < nodes.length; index7 += 1) {\n var node = nodes[index7];\n if (domhandler_1.isDocument(node)) {\n (_a = Array.prototype.splice).call.apply(_a, tslib_1.__spreadArray([nodes, index7, 1], node.children));\n }\n }\n return parse5_1.serialize({ children: nodes }, { treeAdapter: parse5_htmlparser2_tree_adapter_1.default });\n }\n exports2.render = render3;\n }\n});\n\n// node_modules/cheerio/lib/parsers/htmlparser2-adapter.js\nvar require_htmlparser2_adapter = __commonJS({\n \"node_modules/cheerio/lib/parsers/htmlparser2-adapter.js\"(exports2) {\n \"use strict\";\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.render = exports2.parse = void 0;\n var htmlparser2_1 = require_lib10();\n Object.defineProperty(exports2, \"parse\", { enumerable: true, get: function() {\n return htmlparser2_1.parseDocument;\n } });\n var dom_serializer_1 = require_lib5();\n Object.defineProperty(exports2, \"render\", { enumerable: true, get: function() {\n return __importDefault2(dom_serializer_1).default;\n } });\n }\n});\n\n// node_modules/cheerio/lib/static.js\nvar require_static = __commonJS({\n \"node_modules/cheerio/lib/static.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.merge = exports2.contains = exports2.root = exports2.parseHTML = exports2.text = exports2.xml = exports2.html = void 0;\n var tslib_1 = require_tslib2();\n var options_1 = tslib_1.__importStar(require_options());\n var cheerio_select_1 = require_lib9();\n var htmlparser2_1 = require_lib10();\n var parse5_adapter_1 = require_parse5_adapter();\n var htmlparser2_adapter_1 = require_htmlparser2_adapter();\n function render3(that, dom, options) {\n var _a;\n var toRender = dom ? typeof dom === \"string\" ? cheerio_select_1.select(dom, (_a = that === null || that === void 0 ? void 0 : that._root) !== null && _a !== void 0 ? _a : [], options) : dom : that === null || that === void 0 ? void 0 : that._root.children;\n if (!toRender)\n return \"\";\n return options.xmlMode || options._useHtmlParser2 ? htmlparser2_adapter_1.render(toRender, options) : parse5_adapter_1.render(toRender);\n }\n function isOptions(dom) {\n return typeof dom === \"object\" && dom != null && !(\"length\" in dom) && !(\"type\" in dom);\n }\n function html2(dom, options) {\n if (!options && isOptions(dom)) {\n options = dom;\n dom = void 0;\n }\n var opts = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, options_1.default), this ? this._options : {}), options_1.flatten(options !== null && options !== void 0 ? options : {}));\n return render3(this || void 0, dom, opts);\n }\n exports2.html = html2;\n function xml(dom) {\n var options = tslib_1.__assign(tslib_1.__assign({}, this._options), { xmlMode: true });\n return render3(this, dom, options);\n }\n exports2.xml = xml;\n function text5(elements) {\n var elems = elements ? elements : this ? this.root() : [];\n var ret = \"\";\n for (var i3 = 0; i3 < elems.length; i3++) {\n var elem = elems[i3];\n if (htmlparser2_1.DomUtils.isText(elem))\n ret += elem.data;\n else if (htmlparser2_1.DomUtils.hasChildren(elem) && elem.type !== htmlparser2_1.ElementType.Comment && elem.type !== htmlparser2_1.ElementType.Script && elem.type !== htmlparser2_1.ElementType.Style) {\n ret += text5(elem.children);\n }\n }\n return ret;\n }\n exports2.text = text5;\n function parseHTML(data, context, keepScripts) {\n if (keepScripts === void 0) {\n keepScripts = typeof context === \"boolean\" ? context : false;\n }\n if (!data || typeof data !== \"string\") {\n return null;\n }\n if (typeof context === \"boolean\") {\n keepScripts = context;\n }\n var parsed = this.load(data, options_1.default, false);\n if (!keepScripts) {\n parsed(\"script\").remove();\n }\n return parsed.root()[0].children.slice();\n }\n exports2.parseHTML = parseHTML;\n function root5() {\n return this(this._root);\n }\n exports2.root = root5;\n function contains3(container, contained) {\n if (contained === container) {\n return false;\n }\n var next = contained;\n while (next && next !== next.parent) {\n next = next.parent;\n if (next === container) {\n return true;\n }\n }\n return false;\n }\n exports2.contains = contains3;\n function merge2(arr1, arr2) {\n if (!isArrayLike3(arr1) || !isArrayLike3(arr2)) {\n return;\n }\n var newLength = arr1.length;\n var len = +arr2.length;\n for (var i3 = 0; i3 < len; i3++) {\n arr1[newLength++] = arr2[i3];\n }\n arr1.length = newLength;\n return arr1;\n }\n exports2.merge = merge2;\n function isArrayLike3(item) {\n if (Array.isArray(item)) {\n return true;\n }\n if (typeof item !== \"object\" || !Object.prototype.hasOwnProperty.call(item, \"length\") || typeof item.length !== \"number\" || item.length < 0) {\n return false;\n }\n for (var i3 = 0; i3 < item.length; i3++) {\n if (!(i3 in item)) {\n return false;\n }\n }\n return true;\n }\n }\n});\n\n// node_modules/cheerio/lib/parse.js\nvar require_parse3 = __commonJS({\n \"node_modules/cheerio/lib/parse.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.update = void 0;\n var htmlparser2_1 = require_lib10();\n var htmlparser2_adapter_1 = require_htmlparser2_adapter();\n var parse5_adapter_1 = require_parse5_adapter();\n var domhandler_1 = require_lib3();\n function parse2(content, options, isDocument) {\n if (typeof Buffer !== \"undefined\" && Buffer.isBuffer(content)) {\n content = content.toString();\n }\n if (typeof content === \"string\") {\n return options.xmlMode || options._useHtmlParser2 ? htmlparser2_adapter_1.parse(content, options) : parse5_adapter_1.parse(content, options, isDocument);\n }\n var doc = content;\n if (!Array.isArray(doc) && domhandler_1.isDocument(doc)) {\n return doc;\n }\n var root5 = new domhandler_1.Document([]);\n update(doc, root5);\n return root5;\n }\n exports2.default = parse2;\n function update(newChilds, parent2) {\n var arr = Array.isArray(newChilds) ? newChilds : [newChilds];\n if (parent2) {\n parent2.children = arr;\n } else {\n parent2 = null;\n }\n for (var i3 = 0; i3 < arr.length; i3++) {\n var node = arr[i3];\n if (node.parent && node.parent.children !== arr) {\n htmlparser2_1.DomUtils.removeElement(node);\n }\n if (parent2) {\n node.prev = arr[i3 - 1] || null;\n node.next = arr[i3 + 1] || null;\n } else {\n node.prev = node.next = null;\n }\n node.parent = parent2;\n }\n return parent2;\n }\n exports2.update = update;\n }\n});\n\n// node_modules/cheerio/lib/utils.js\nvar require_utils = __commonJS({\n \"node_modules/cheerio/lib/utils.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.isHtml = exports2.cloneDom = exports2.domEach = exports2.cssCase = exports2.camelCase = exports2.isCheerio = exports2.isTag = void 0;\n var htmlparser2_1 = require_lib10();\n var domhandler_1 = require_lib3();\n exports2.isTag = htmlparser2_1.DomUtils.isTag;\n function isCheerio(maybeCheerio) {\n return maybeCheerio.cheerio != null;\n }\n exports2.isCheerio = isCheerio;\n function camelCase(str) {\n return str.replace(/[_.-](\\w|$)/g, function(_4, x4) {\n return x4.toUpperCase();\n });\n }\n exports2.camelCase = camelCase;\n function cssCase(str) {\n return str.replace(/[A-Z]/g, \"-$&\").toLowerCase();\n }\n exports2.cssCase = cssCase;\n function domEach(array, fn7) {\n var len = array.length;\n for (var i3 = 0; i3 < len; i3++)\n fn7(array[i3], i3);\n return array;\n }\n exports2.domEach = domEach;\n function cloneDom(dom) {\n var clone = \"length\" in dom ? Array.prototype.map.call(dom, function(el) {\n return domhandler_1.cloneNode(el, true);\n }) : [domhandler_1.cloneNode(dom, true)];\n var root5 = new domhandler_1.Document(clone);\n clone.forEach(function(node) {\n node.parent = root5;\n });\n return clone;\n }\n exports2.cloneDom = cloneDom;\n var quickExpr = /<[a-zA-Z][^]*>/;\n function isHtml(str) {\n return quickExpr.test(str);\n }\n exports2.isHtml = isHtml;\n }\n});\n\n// node_modules/cheerio/lib/api/attributes.js\nvar require_attributes2 = __commonJS({\n \"node_modules/cheerio/lib/api/attributes.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.toggleClass = exports2.removeClass = exports2.addClass = exports2.hasClass = exports2.removeAttr = exports2.val = exports2.data = exports2.prop = exports2.attr = void 0;\n var static_1 = require_static();\n var utils_1 = require_utils();\n var hasOwn = Object.prototype.hasOwnProperty;\n var rspace = /\\s+/;\n var dataAttrPrefix = \"data-\";\n var primitives = {\n null: null,\n true: true,\n false: false\n };\n var rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i;\n var rbrace = /^{[^]*}$|^\\[[^]*]$/;\n function getAttr(elem, name, xmlMode) {\n var _a;\n if (!elem || !utils_1.isTag(elem))\n return void 0;\n (_a = elem.attribs) !== null && _a !== void 0 ? _a : elem.attribs = {};\n if (!name) {\n return elem.attribs;\n }\n if (hasOwn.call(elem.attribs, name)) {\n return !xmlMode && rboolean.test(name) ? name : elem.attribs[name];\n }\n if (elem.name === \"option\" && name === \"value\") {\n return static_1.text(elem.children);\n }\n if (elem.name === \"input\" && (elem.attribs.type === \"radio\" || elem.attribs.type === \"checkbox\") && name === \"value\") {\n return \"on\";\n }\n return void 0;\n }\n function setAttr(el, name, value) {\n if (value === null) {\n removeAttribute(el, name);\n } else {\n el.attribs[name] = \"\" + value;\n }\n }\n function attr(name, value) {\n if (typeof name === \"object\" || value !== void 0) {\n if (typeof value === \"function\") {\n if (typeof name !== \"string\") {\n {\n throw new Error(\"Bad combination of arguments.\");\n }\n }\n return utils_1.domEach(this, function(el, i3) {\n if (utils_1.isTag(el))\n setAttr(el, name, value.call(el, i3, el.attribs[name]));\n });\n }\n return utils_1.domEach(this, function(el) {\n if (!utils_1.isTag(el))\n return;\n if (typeof name === \"object\") {\n Object.keys(name).forEach(function(objName) {\n var objValue = name[objName];\n setAttr(el, objName, objValue);\n });\n } else {\n setAttr(el, name, value);\n }\n });\n }\n return arguments.length > 1 ? this : getAttr(this[0], name, this.options.xmlMode);\n }\n exports2.attr = attr;\n function getProp(el, name, xmlMode) {\n if (!el || !utils_1.isTag(el))\n return;\n return name in el ? el[name] : !xmlMode && rboolean.test(name) ? getAttr(el, name, false) !== void 0 : getAttr(el, name, xmlMode);\n }\n function setProp(el, name, value, xmlMode) {\n if (name in el) {\n el[name] = value;\n } else {\n setAttr(el, name, !xmlMode && rboolean.test(name) ? value ? \"\" : null : \"\" + value);\n }\n }\n function prop(name, value) {\n var _this = this;\n if (typeof name === \"string\" && value === void 0) {\n switch (name) {\n case \"style\": {\n var property_12 = this.css();\n var keys3 = Object.keys(property_12);\n keys3.forEach(function(p4, i3) {\n property_12[i3] = p4;\n });\n property_12.length = keys3.length;\n return property_12;\n }\n case \"tagName\":\n case \"nodeName\": {\n var el = this[0];\n return utils_1.isTag(el) ? el.name.toUpperCase() : void 0;\n }\n case \"outerHTML\":\n return this.clone().wrap(\"\").parent().html();\n case \"innerHTML\":\n return this.html();\n default:\n return getProp(this[0], name, this.options.xmlMode);\n }\n }\n if (typeof name === \"object\" || value !== void 0) {\n if (typeof value === \"function\") {\n if (typeof name === \"object\") {\n throw new Error(\"Bad combination of arguments.\");\n }\n return utils_1.domEach(this, function(el2, i3) {\n if (utils_1.isTag(el2))\n setProp(el2, name, value.call(el2, i3, getProp(el2, name, _this.options.xmlMode)), _this.options.xmlMode);\n });\n }\n return utils_1.domEach(this, function(el2) {\n if (!utils_1.isTag(el2))\n return;\n if (typeof name === \"object\") {\n Object.keys(name).forEach(function(key) {\n var val2 = name[key];\n setProp(el2, key, val2, _this.options.xmlMode);\n });\n } else {\n setProp(el2, name, value, _this.options.xmlMode);\n }\n });\n }\n return void 0;\n }\n exports2.prop = prop;\n function setData(el, name, value) {\n var _a;\n var elem = el;\n (_a = elem.data) !== null && _a !== void 0 ? _a : elem.data = {};\n if (typeof name === \"object\")\n Object.assign(elem.data, name);\n else if (typeof name === \"string\" && value !== void 0) {\n elem.data[name] = value;\n }\n }\n function readData(el, name) {\n var domNames;\n var jsNames;\n var value;\n if (name == null) {\n domNames = Object.keys(el.attribs).filter(function(attrName) {\n return attrName.startsWith(dataAttrPrefix);\n });\n jsNames = domNames.map(function(domName2) {\n return utils_1.camelCase(domName2.slice(dataAttrPrefix.length));\n });\n } else {\n domNames = [dataAttrPrefix + utils_1.cssCase(name)];\n jsNames = [name];\n }\n for (var idx = 0; idx < domNames.length; ++idx) {\n var domName = domNames[idx];\n var jsName = jsNames[idx];\n if (hasOwn.call(el.attribs, domName) && !hasOwn.call(el.data, jsName)) {\n value = el.attribs[domName];\n if (hasOwn.call(primitives, value)) {\n value = primitives[value];\n } else if (value === String(Number(value))) {\n value = Number(value);\n } else if (rbrace.test(value)) {\n try {\n value = JSON.parse(value);\n } catch (e2) {\n }\n }\n el.data[jsName] = value;\n }\n }\n return name == null ? el.data : value;\n }\n function data(name, value) {\n var _a;\n var elem = this[0];\n if (!elem || !utils_1.isTag(elem))\n return;\n var dataEl = elem;\n (_a = dataEl.data) !== null && _a !== void 0 ? _a : dataEl.data = {};\n if (!name) {\n return readData(dataEl);\n }\n if (typeof name === \"object\" || value !== void 0) {\n utils_1.domEach(this, function(el) {\n if (utils_1.isTag(el))\n if (typeof name === \"object\")\n setData(el, name);\n else\n setData(el, name, value);\n });\n return this;\n }\n if (hasOwn.call(dataEl.data, name)) {\n return dataEl.data[name];\n }\n return readData(dataEl, name);\n }\n exports2.data = data;\n function val(value) {\n var querying = arguments.length === 0;\n var element4 = this[0];\n if (!element4 || !utils_1.isTag(element4))\n return querying ? void 0 : this;\n switch (element4.name) {\n case \"textarea\":\n return this.text(value);\n case \"select\": {\n var option = this.find(\"option:selected\");\n if (!querying) {\n if (this.attr(\"multiple\") == null && typeof value === \"object\") {\n return this;\n }\n this.find(\"option\").removeAttr(\"selected\");\n var values2 = typeof value !== \"object\" ? [value] : value;\n for (var i3 = 0; i3 < values2.length; i3++) {\n this.find('option[value=\"' + values2[i3] + '\"]').attr(\"selected\", \"\");\n }\n return this;\n }\n return this.attr(\"multiple\") ? option.toArray().map(function(el) {\n return static_1.text(el.children);\n }) : option.attr(\"value\");\n }\n case \"input\":\n case \"option\":\n return querying ? this.attr(\"value\") : this.attr(\"value\", value);\n }\n return void 0;\n }\n exports2.val = val;\n function removeAttribute(elem, name) {\n if (!elem.attribs || !hasOwn.call(elem.attribs, name))\n return;\n delete elem.attribs[name];\n }\n function splitNames(names) {\n return names ? names.trim().split(rspace) : [];\n }\n function removeAttr(name) {\n var attrNames = splitNames(name);\n var _loop_1 = function(i4) {\n utils_1.domEach(this_1, function(elem) {\n if (utils_1.isTag(elem))\n removeAttribute(elem, attrNames[i4]);\n });\n };\n var this_1 = this;\n for (var i3 = 0; i3 < attrNames.length; i3++) {\n _loop_1(i3);\n }\n return this;\n }\n exports2.removeAttr = removeAttr;\n function hasClass(className) {\n return this.toArray().some(function(elem) {\n var clazz = utils_1.isTag(elem) && elem.attribs.class;\n var idx = -1;\n if (clazz && className.length) {\n while ((idx = clazz.indexOf(className, idx + 1)) > -1) {\n var end3 = idx + className.length;\n if ((idx === 0 || rspace.test(clazz[idx - 1])) && (end3 === clazz.length || rspace.test(clazz[end3]))) {\n return true;\n }\n }\n }\n return false;\n });\n }\n exports2.hasClass = hasClass;\n function addClass(value) {\n if (typeof value === \"function\") {\n return utils_1.domEach(this, function(el2, i4) {\n if (utils_1.isTag(el2)) {\n var className2 = el2.attribs.class || \"\";\n addClass.call([el2], value.call(el2, i4, className2));\n }\n });\n }\n if (!value || typeof value !== \"string\")\n return this;\n var classNames = value.split(rspace);\n var numElements = this.length;\n for (var i3 = 0; i3 < numElements; i3++) {\n var el = this[i3];\n if (!utils_1.isTag(el))\n continue;\n var className = getAttr(el, \"class\", false);\n if (!className) {\n setAttr(el, \"class\", classNames.join(\" \").trim());\n } else {\n var setClass = \" \" + className + \" \";\n for (var j4 = 0; j4 < classNames.length; j4++) {\n var appendClass = classNames[j4] + \" \";\n if (!setClass.includes(\" \" + appendClass))\n setClass += appendClass;\n }\n setAttr(el, \"class\", setClass.trim());\n }\n }\n return this;\n }\n exports2.addClass = addClass;\n function removeClass(name) {\n if (typeof name === \"function\") {\n return utils_1.domEach(this, function(el, i3) {\n if (utils_1.isTag(el))\n removeClass.call([el], name.call(el, i3, el.attribs.class || \"\"));\n });\n }\n var classes = splitNames(name);\n var numClasses = classes.length;\n var removeAll = arguments.length === 0;\n return utils_1.domEach(this, function(el) {\n if (!utils_1.isTag(el))\n return;\n if (removeAll) {\n el.attribs.class = \"\";\n } else {\n var elClasses = splitNames(el.attribs.class);\n var changed = false;\n for (var j4 = 0; j4 < numClasses; j4++) {\n var index7 = elClasses.indexOf(classes[j4]);\n if (index7 >= 0) {\n elClasses.splice(index7, 1);\n changed = true;\n j4--;\n }\n }\n if (changed) {\n el.attribs.class = elClasses.join(\" \");\n }\n }\n });\n }\n exports2.removeClass = removeClass;\n function toggleClass(value, stateVal) {\n if (typeof value === \"function\") {\n return utils_1.domEach(this, function(el2, i4) {\n if (utils_1.isTag(el2)) {\n toggleClass.call([el2], value.call(el2, i4, el2.attribs.class || \"\", stateVal), stateVal);\n }\n });\n }\n if (!value || typeof value !== \"string\")\n return this;\n var classNames = value.split(rspace);\n var numClasses = classNames.length;\n var state = typeof stateVal === \"boolean\" ? stateVal ? 1 : -1 : 0;\n var numElements = this.length;\n for (var i3 = 0; i3 < numElements; i3++) {\n var el = this[i3];\n if (!utils_1.isTag(el))\n continue;\n var elementClasses = splitNames(el.attribs.class);\n for (var j4 = 0; j4 < numClasses; j4++) {\n var index7 = elementClasses.indexOf(classNames[j4]);\n if (state >= 0 && index7 < 0) {\n elementClasses.push(classNames[j4]);\n } else if (state <= 0 && index7 >= 0) {\n elementClasses.splice(index7, 1);\n }\n }\n el.attribs.class = elementClasses.join(\" \");\n }\n return this;\n }\n exports2.toggleClass = toggleClass;\n }\n});\n\n// node_modules/cheerio/lib/api/traversing.js\nvar require_traversing = __commonJS({\n \"node_modules/cheerio/lib/api/traversing.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.addBack = exports2.add = exports2.end = exports2.slice = exports2.index = exports2.toArray = exports2.get = exports2.eq = exports2.last = exports2.first = exports2.has = exports2.not = exports2.is = exports2.filterArray = exports2.filter = exports2.map = exports2.each = exports2.contents = exports2.children = exports2.siblings = exports2.prevUntil = exports2.prevAll = exports2.prev = exports2.nextUntil = exports2.nextAll = exports2.next = exports2.closest = exports2.parentsUntil = exports2.parents = exports2.parent = exports2.find = void 0;\n var tslib_1 = require_tslib2();\n var domhandler_1 = require_lib3();\n var select = tslib_1.__importStar(require_lib9());\n var utils_1 = require_utils();\n var static_1 = require_static();\n var htmlparser2_1 = require_lib10();\n var uniqueSort = htmlparser2_1.DomUtils.uniqueSort;\n var reSiblingSelector = /^\\s*[~+]/;\n function find(selectorOrHaystack) {\n var _a;\n if (!selectorOrHaystack) {\n return this._make([]);\n }\n var context = this.toArray();\n if (typeof selectorOrHaystack !== \"string\") {\n var haystack = utils_1.isCheerio(selectorOrHaystack) ? selectorOrHaystack.toArray() : [selectorOrHaystack];\n return this._make(haystack.filter(function(elem) {\n return context.some(function(node) {\n return static_1.contains(node, elem);\n });\n }));\n }\n var elems = reSiblingSelector.test(selectorOrHaystack) ? context : this.children().toArray();\n var options = {\n context,\n root: (_a = this._root) === null || _a === void 0 ? void 0 : _a[0],\n xmlMode: this.options.xmlMode\n };\n return this._make(select.select(selectorOrHaystack, elems, options));\n }\n exports2.find = find;\n function _getMatcher(matchMap) {\n return function(fn7) {\n var postFns = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n postFns[_i - 1] = arguments[_i];\n }\n return function(selector) {\n var _a;\n var matched = matchMap(fn7, this);\n if (selector) {\n matched = filterArray(matched, selector, this.options.xmlMode, (_a = this._root) === null || _a === void 0 ? void 0 : _a[0]);\n }\n return this._make(this.length > 1 && matched.length > 1 ? postFns.reduce(function(elems, fn8) {\n return fn8(elems);\n }, matched) : matched);\n };\n };\n }\n var _matcher = _getMatcher(function(fn7, elems) {\n var _a;\n var ret = [];\n for (var i3 = 0; i3 < elems.length; i3++) {\n var value = fn7(elems[i3]);\n ret.push(value);\n }\n return (_a = new Array()).concat.apply(_a, ret);\n });\n var _singleMatcher = _getMatcher(function(fn7, elems) {\n var ret = [];\n for (var i3 = 0; i3 < elems.length; i3++) {\n var value = fn7(elems[i3]);\n if (value !== null) {\n ret.push(value);\n }\n }\n return ret;\n });\n function _matchUntil(nextElem) {\n var postFns = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n postFns[_i - 1] = arguments[_i];\n }\n var matches = null;\n var innerMatcher = _getMatcher(function(nextElem2, elems) {\n var matched = [];\n utils_1.domEach(elems, function(elem) {\n for (var next_1; next_1 = nextElem2(elem); elem = next_1) {\n if (matches === null || matches === void 0 ? void 0 : matches(next_1, matched.length))\n break;\n matched.push(next_1);\n }\n });\n return matched;\n }).apply(void 0, tslib_1.__spreadArray([nextElem], postFns));\n return function(selector, filterSelector) {\n var _this = this;\n matches = typeof selector === \"string\" ? function(elem) {\n return select.is(elem, selector, _this.options);\n } : selector ? getFilterFn(selector) : null;\n var ret = innerMatcher.call(this, filterSelector);\n matches = null;\n return ret;\n };\n }\n function _removeDuplicates(elems) {\n return Array.from(new Set(elems));\n }\n exports2.parent = _singleMatcher(function(_a) {\n var parent2 = _a.parent;\n return parent2 && !domhandler_1.isDocument(parent2) ? parent2 : null;\n }, _removeDuplicates);\n exports2.parents = _matcher(function(elem) {\n var matched = [];\n while (elem.parent && !domhandler_1.isDocument(elem.parent)) {\n matched.push(elem.parent);\n elem = elem.parent;\n }\n return matched;\n }, uniqueSort, function(elems) {\n return elems.reverse();\n });\n exports2.parentsUntil = _matchUntil(function(_a) {\n var parent2 = _a.parent;\n return parent2 && !domhandler_1.isDocument(parent2) ? parent2 : null;\n }, uniqueSort, function(elems) {\n return elems.reverse();\n });\n function closest(selector) {\n var _this = this;\n var set = [];\n if (!selector) {\n return this._make(set);\n }\n utils_1.domEach(this, function(elem) {\n var _a;\n while (elem && elem.type !== \"root\") {\n if (!selector || filterArray([elem], selector, _this.options.xmlMode, (_a = _this._root) === null || _a === void 0 ? void 0 : _a[0]).length) {\n if (elem && !set.includes(elem)) {\n set.push(elem);\n }\n break;\n }\n elem = elem.parent;\n }\n });\n return this._make(set);\n }\n exports2.closest = closest;\n exports2.next = _singleMatcher(function(elem) {\n return htmlparser2_1.DomUtils.nextElementSibling(elem);\n });\n exports2.nextAll = _matcher(function(elem) {\n var matched = [];\n while (elem.next) {\n elem = elem.next;\n if (utils_1.isTag(elem))\n matched.push(elem);\n }\n return matched;\n }, _removeDuplicates);\n exports2.nextUntil = _matchUntil(function(el) {\n return htmlparser2_1.DomUtils.nextElementSibling(el);\n }, _removeDuplicates);\n exports2.prev = _singleMatcher(function(elem) {\n return htmlparser2_1.DomUtils.prevElementSibling(elem);\n });\n exports2.prevAll = _matcher(function(elem) {\n var matched = [];\n while (elem.prev) {\n elem = elem.prev;\n if (utils_1.isTag(elem))\n matched.push(elem);\n }\n return matched;\n }, _removeDuplicates);\n exports2.prevUntil = _matchUntil(function(el) {\n return htmlparser2_1.DomUtils.prevElementSibling(el);\n }, _removeDuplicates);\n exports2.siblings = _matcher(function(elem) {\n return htmlparser2_1.DomUtils.getSiblings(elem).filter(function(el) {\n return utils_1.isTag(el) && el !== elem;\n });\n }, uniqueSort);\n exports2.children = _matcher(function(elem) {\n return htmlparser2_1.DomUtils.getChildren(elem).filter(utils_1.isTag);\n }, _removeDuplicates);\n function contents() {\n var elems = this.toArray().reduce(function(newElems, elem) {\n return domhandler_1.hasChildren(elem) ? newElems.concat(elem.children) : newElems;\n }, []);\n return this._make(elems);\n }\n exports2.contents = contents;\n function each(fn7) {\n var i3 = 0;\n var len = this.length;\n while (i3 < len && fn7.call(this[i3], i3, this[i3]) !== false)\n ++i3;\n return this;\n }\n exports2.each = each;\n function map2(fn7) {\n var elems = [];\n for (var i3 = 0; i3 < this.length; i3++) {\n var el = this[i3];\n var val = fn7.call(el, i3, el);\n if (val != null) {\n elems = elems.concat(val);\n }\n }\n return this._make(elems);\n }\n exports2.map = map2;\n function getFilterFn(match2) {\n if (typeof match2 === \"function\") {\n return function(el, i3) {\n return match2.call(el, i3, el);\n };\n }\n if (utils_1.isCheerio(match2)) {\n return function(el) {\n return Array.prototype.includes.call(match2, el);\n };\n }\n return function(el) {\n return match2 === el;\n };\n }\n function filter2(match2) {\n var _a;\n return this._make(filterArray(this.toArray(), match2, this.options.xmlMode, (_a = this._root) === null || _a === void 0 ? void 0 : _a[0]));\n }\n exports2.filter = filter2;\n function filterArray(nodes, match2, xmlMode, root5) {\n return typeof match2 === \"string\" ? select.filter(match2, nodes, { xmlMode, root: root5 }) : nodes.filter(getFilterFn(match2));\n }\n exports2.filterArray = filterArray;\n function is2(selector) {\n var nodes = this.toArray();\n return typeof selector === \"string\" ? select.some(nodes.filter(utils_1.isTag), selector, this.options) : selector ? nodes.some(getFilterFn(selector)) : false;\n }\n exports2.is = is2;\n function not(match2) {\n var nodes = this.toArray();\n if (typeof match2 === \"string\") {\n var matches_1 = new Set(select.filter(match2, nodes, this.options));\n nodes = nodes.filter(function(el) {\n return !matches_1.has(el);\n });\n } else {\n var filterFn_1 = getFilterFn(match2);\n nodes = nodes.filter(function(el, i3) {\n return !filterFn_1(el, i3);\n });\n }\n return this._make(nodes);\n }\n exports2.not = not;\n function has(selectorOrHaystack) {\n var _this = this;\n return this.filter(typeof selectorOrHaystack === \"string\" ? \":has(\" + selectorOrHaystack + \")\" : function(_4, el) {\n return _this._make(el).find(selectorOrHaystack).length > 0;\n });\n }\n exports2.has = has;\n function first() {\n return this.length > 1 ? this._make(this[0]) : this;\n }\n exports2.first = first;\n function last2() {\n return this.length > 0 ? this._make(this[this.length - 1]) : this;\n }\n exports2.last = last2;\n function eq4(i3) {\n var _a;\n i3 = +i3;\n if (i3 === 0 && this.length <= 1)\n return this;\n if (i3 < 0)\n i3 = this.length + i3;\n return this._make((_a = this[i3]) !== null && _a !== void 0 ? _a : []);\n }\n exports2.eq = eq4;\n function get3(i3) {\n if (i3 == null) {\n return this.toArray();\n }\n return this[i3 < 0 ? this.length + i3 : i3];\n }\n exports2.get = get3;\n function toArray() {\n return Array.prototype.slice.call(this);\n }\n exports2.toArray = toArray;\n function index7(selectorOrNeedle) {\n var $haystack;\n var needle;\n if (selectorOrNeedle == null) {\n $haystack = this.parent().children();\n needle = this[0];\n } else if (typeof selectorOrNeedle === \"string\") {\n $haystack = this._make(selectorOrNeedle);\n needle = this[0];\n } else {\n $haystack = this;\n needle = utils_1.isCheerio(selectorOrNeedle) ? selectorOrNeedle[0] : selectorOrNeedle;\n }\n return Array.prototype.indexOf.call($haystack, needle);\n }\n exports2.index = index7;\n function slice(start3, end4) {\n return this._make(Array.prototype.slice.call(this, start3, end4));\n }\n exports2.slice = slice;\n function end3() {\n var _a;\n return (_a = this.prevObject) !== null && _a !== void 0 ? _a : this._make([]);\n }\n exports2.end = end3;\n function add2(other, context) {\n var selection = this._make(other, context);\n var contents2 = uniqueSort(tslib_1.__spreadArray(tslib_1.__spreadArray([], this.get()), selection.get()));\n return this._make(contents2);\n }\n exports2.add = add2;\n function addBack(selector) {\n return this.prevObject ? this.add(selector ? this.prevObject.filter(selector) : this.prevObject) : this;\n }\n exports2.addBack = addBack;\n }\n});\n\n// node_modules/cheerio/lib/api/manipulation.js\nvar require_manipulation2 = __commonJS({\n \"node_modules/cheerio/lib/api/manipulation.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.clone = exports2.text = exports2.toString = exports2.html = exports2.empty = exports2.replaceWith = exports2.remove = exports2.insertBefore = exports2.before = exports2.insertAfter = exports2.after = exports2.wrapAll = exports2.unwrap = exports2.wrapInner = exports2.wrap = exports2.prepend = exports2.append = exports2.prependTo = exports2.appendTo = exports2._makeDomArray = void 0;\n var tslib_1 = require_tslib2();\n var domhandler_1 = require_lib3();\n var domhandler_2 = require_lib3();\n var parse_1 = tslib_1.__importStar(require_parse3());\n var static_1 = require_static();\n var utils_1 = require_utils();\n var htmlparser2_1 = require_lib10();\n function _makeDomArray(elem, clone2) {\n var _this = this;\n if (elem == null) {\n return [];\n }\n if (utils_1.isCheerio(elem)) {\n return clone2 ? utils_1.cloneDom(elem.get()) : elem.get();\n }\n if (Array.isArray(elem)) {\n return elem.reduce(function(newElems, el) {\n return newElems.concat(_this._makeDomArray(el, clone2));\n }, []);\n }\n if (typeof elem === \"string\") {\n return parse_1.default(elem, this.options, false).children;\n }\n return clone2 ? utils_1.cloneDom([elem]) : [elem];\n }\n exports2._makeDomArray = _makeDomArray;\n function _insert(concatenator) {\n return function() {\n var _this = this;\n var elems = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n elems[_i] = arguments[_i];\n }\n var lastIdx = this.length - 1;\n return utils_1.domEach(this, function(el, i3) {\n if (!domhandler_1.hasChildren(el))\n return;\n var domSrc = typeof elems[0] === \"function\" ? elems[0].call(el, i3, static_1.html(el.children)) : elems;\n var dom = _this._makeDomArray(domSrc, i3 < lastIdx);\n concatenator(dom, el.children, el);\n });\n };\n }\n function uniqueSplice(array, spliceIdx, spliceCount, newElems, parent2) {\n var _a, _b;\n var spliceArgs = tslib_1.__spreadArray([\n spliceIdx,\n spliceCount\n ], newElems);\n var prev = array[spliceIdx - 1] || null;\n var next = array[spliceIdx + spliceCount] || null;\n for (var idx = 0; idx < newElems.length; ++idx) {\n var node = newElems[idx];\n var oldParent = node.parent;\n if (oldParent) {\n var prevIdx = oldParent.children.indexOf(newElems[idx]);\n if (prevIdx > -1) {\n oldParent.children.splice(prevIdx, 1);\n if (parent2 === oldParent && spliceIdx > prevIdx) {\n spliceArgs[0]--;\n }\n }\n }\n node.parent = parent2;\n if (node.prev) {\n node.prev.next = (_a = node.next) !== null && _a !== void 0 ? _a : null;\n }\n if (node.next) {\n node.next.prev = (_b = node.prev) !== null && _b !== void 0 ? _b : null;\n }\n node.prev = newElems[idx - 1] || prev;\n node.next = newElems[idx + 1] || next;\n }\n if (prev) {\n prev.next = newElems[0];\n }\n if (next) {\n next.prev = newElems[newElems.length - 1];\n }\n return array.splice.apply(array, spliceArgs);\n }\n function appendTo2(target) {\n var appendTarget = utils_1.isCheerio(target) ? target : this._make(target);\n appendTarget.append(this);\n return this;\n }\n exports2.appendTo = appendTo2;\n function prependTo(target) {\n var prependTarget = utils_1.isCheerio(target) ? target : this._make(target);\n prependTarget.prepend(this);\n return this;\n }\n exports2.prependTo = prependTo;\n exports2.append = _insert(function(dom, children, parent2) {\n uniqueSplice(children, children.length, 0, dom, parent2);\n });\n exports2.prepend = _insert(function(dom, children, parent2) {\n uniqueSplice(children, 0, 0, dom, parent2);\n });\n function _wrap(insert) {\n return function(wrapper) {\n var lastIdx = this.length - 1;\n var lastParent = this.parents().last();\n for (var i3 = 0; i3 < this.length; i3++) {\n var el = this[i3];\n var wrap_1 = typeof wrapper === \"function\" ? wrapper.call(el, i3, el) : typeof wrapper === \"string\" && !utils_1.isHtml(wrapper) ? lastParent.find(wrapper).clone() : wrapper;\n var wrapperDom = this._makeDomArray(wrap_1, i3 < lastIdx)[0];\n if (!wrapperDom || !htmlparser2_1.DomUtils.hasChildren(wrapperDom))\n continue;\n var elInsertLocation = wrapperDom;\n var j4 = 0;\n while (j4 < elInsertLocation.children.length) {\n var child = elInsertLocation.children[j4];\n if (utils_1.isTag(child)) {\n elInsertLocation = child;\n j4 = 0;\n } else {\n j4++;\n }\n }\n insert(el, elInsertLocation, [wrapperDom]);\n }\n return this;\n };\n }\n exports2.wrap = _wrap(function(el, elInsertLocation, wrapperDom) {\n var parent2 = el.parent;\n if (!parent2)\n return;\n var siblings = parent2.children;\n var index7 = siblings.indexOf(el);\n parse_1.update([el], elInsertLocation);\n uniqueSplice(siblings, index7, 0, wrapperDom, parent2);\n });\n exports2.wrapInner = _wrap(function(el, elInsertLocation, wrapperDom) {\n if (!domhandler_1.hasChildren(el))\n return;\n parse_1.update(el.children, elInsertLocation);\n parse_1.update(wrapperDom, el);\n });\n function unwrap(selector) {\n var _this = this;\n this.parent(selector).not(\"body\").each(function(_4, el) {\n _this._make(el).replaceWith(el.children);\n });\n return this;\n }\n exports2.unwrap = unwrap;\n function wrapAll(wrapper) {\n var el = this[0];\n if (el) {\n var wrap_2 = this._make(typeof wrapper === \"function\" ? wrapper.call(el, 0, el) : wrapper).insertBefore(el);\n var elInsertLocation = void 0;\n for (var i3 = 0; i3 < wrap_2.length; i3++) {\n if (wrap_2[i3].type === \"tag\")\n elInsertLocation = wrap_2[i3];\n }\n var j4 = 0;\n while (elInsertLocation && j4 < elInsertLocation.children.length) {\n var child = elInsertLocation.children[j4];\n if (child.type === \"tag\") {\n elInsertLocation = child;\n j4 = 0;\n } else {\n j4++;\n }\n }\n if (elInsertLocation)\n this._make(elInsertLocation).append(this);\n }\n return this;\n }\n exports2.wrapAll = wrapAll;\n function after() {\n var _this = this;\n var elems = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n elems[_i] = arguments[_i];\n }\n var lastIdx = this.length - 1;\n return utils_1.domEach(this, function(el, i3) {\n var parent2 = el.parent;\n if (!htmlparser2_1.DomUtils.hasChildren(el) || !parent2) {\n return;\n }\n var siblings = parent2.children;\n var index7 = siblings.indexOf(el);\n if (index7 < 0)\n return;\n var domSrc = typeof elems[0] === \"function\" ? elems[0].call(el, i3, static_1.html(el.children)) : elems;\n var dom = _this._makeDomArray(domSrc, i3 < lastIdx);\n uniqueSplice(siblings, index7 + 1, 0, dom, parent2);\n });\n }\n exports2.after = after;\n function insertAfter(target) {\n var _this = this;\n if (typeof target === \"string\") {\n target = this._make(target);\n }\n this.remove();\n var clones = [];\n this._makeDomArray(target).forEach(function(el) {\n var clonedSelf = _this.clone().toArray();\n var parent2 = el.parent;\n if (!parent2) {\n return;\n }\n var siblings = parent2.children;\n var index7 = siblings.indexOf(el);\n if (index7 < 0)\n return;\n uniqueSplice(siblings, index7 + 1, 0, clonedSelf, parent2);\n clones.push.apply(clones, clonedSelf);\n });\n return this._make(clones);\n }\n exports2.insertAfter = insertAfter;\n function before() {\n var _this = this;\n var elems = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n elems[_i] = arguments[_i];\n }\n var lastIdx = this.length - 1;\n return utils_1.domEach(this, function(el, i3) {\n var parent2 = el.parent;\n if (!htmlparser2_1.DomUtils.hasChildren(el) || !parent2) {\n return;\n }\n var siblings = parent2.children;\n var index7 = siblings.indexOf(el);\n if (index7 < 0)\n return;\n var domSrc = typeof elems[0] === \"function\" ? elems[0].call(el, i3, static_1.html(el.children)) : elems;\n var dom = _this._makeDomArray(domSrc, i3 < lastIdx);\n uniqueSplice(siblings, index7, 0, dom, parent2);\n });\n }\n exports2.before = before;\n function insertBefore(target) {\n var _this = this;\n var targetArr = this._make(target);\n this.remove();\n var clones = [];\n utils_1.domEach(targetArr, function(el) {\n var clonedSelf = _this.clone().toArray();\n var parent2 = el.parent;\n if (!parent2) {\n return;\n }\n var siblings = parent2.children;\n var index7 = siblings.indexOf(el);\n if (index7 < 0)\n return;\n uniqueSplice(siblings, index7, 0, clonedSelf, parent2);\n clones.push.apply(clones, clonedSelf);\n });\n return this._make(clones);\n }\n exports2.insertBefore = insertBefore;\n function remove(selector) {\n var elems = selector ? this.filter(selector) : this;\n utils_1.domEach(elems, function(el) {\n htmlparser2_1.DomUtils.removeElement(el);\n el.prev = el.next = el.parent = null;\n });\n return this;\n }\n exports2.remove = remove;\n function replaceWith(content) {\n var _this = this;\n return utils_1.domEach(this, function(el, i3) {\n var parent2 = el.parent;\n if (!parent2) {\n return;\n }\n var siblings = parent2.children;\n var cont = typeof content === \"function\" ? content.call(el, i3, el) : content;\n var dom = _this._makeDomArray(cont);\n parse_1.update(dom, null);\n var index7 = siblings.indexOf(el);\n uniqueSplice(siblings, index7, 1, dom, parent2);\n if (!dom.includes(el)) {\n el.parent = el.prev = el.next = null;\n }\n });\n }\n exports2.replaceWith = replaceWith;\n function empty() {\n return utils_1.domEach(this, function(el) {\n if (!htmlparser2_1.DomUtils.hasChildren(el))\n return;\n el.children.forEach(function(child) {\n child.next = child.prev = child.parent = null;\n });\n el.children.length = 0;\n });\n }\n exports2.empty = empty;\n function html2(str) {\n if (str === void 0) {\n var el = this[0];\n if (!el || !htmlparser2_1.DomUtils.hasChildren(el))\n return null;\n return static_1.html(el.children, this.options);\n }\n var opts = tslib_1.__assign(tslib_1.__assign({}, this.options), { context: null });\n return utils_1.domEach(this, function(el2) {\n if (!htmlparser2_1.DomUtils.hasChildren(el2))\n return;\n el2.children.forEach(function(child) {\n child.next = child.prev = child.parent = null;\n });\n opts.context = el2;\n var content = utils_1.isCheerio(str) ? str.toArray() : parse_1.default(\"\" + str, opts, false).children;\n parse_1.update(content, el2);\n });\n }\n exports2.html = html2;\n function toString2() {\n return static_1.html(this, this.options);\n }\n exports2.toString = toString2;\n function text5(str) {\n var _this = this;\n if (str === void 0) {\n return static_1.text(this);\n }\n if (typeof str === \"function\") {\n return utils_1.domEach(this, function(el, i3) {\n text5.call(_this._make(el), str.call(el, i3, static_1.text([el])));\n });\n }\n return utils_1.domEach(this, function(el) {\n if (!htmlparser2_1.DomUtils.hasChildren(el))\n return;\n el.children.forEach(function(child) {\n child.next = child.prev = child.parent = null;\n });\n var textNode = new domhandler_2.Text(str);\n parse_1.update(textNode, el);\n });\n }\n exports2.text = text5;\n function clone() {\n return this._make(utils_1.cloneDom(this.get()));\n }\n exports2.clone = clone;\n }\n});\n\n// node_modules/cheerio/lib/api/css.js\nvar require_css = __commonJS({\n \"node_modules/cheerio/lib/api/css.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.css = void 0;\n var utils_1 = require_utils();\n function css19(prop, val) {\n if (prop != null && val != null || typeof prop === \"object\" && !Array.isArray(prop)) {\n return utils_1.domEach(this, function(el, i3) {\n if (utils_1.isTag(el)) {\n setCss(el, prop, val, i3);\n }\n });\n }\n return getCss(this[0], prop);\n }\n exports2.css = css19;\n function setCss(el, prop, value, idx) {\n if (typeof prop === \"string\") {\n var styles2 = getCss(el);\n var val = typeof value === \"function\" ? value.call(el, idx, styles2[prop]) : value;\n if (val === \"\") {\n delete styles2[prop];\n } else if (val != null) {\n styles2[prop] = val;\n }\n el.attribs.style = stringify(styles2);\n } else if (typeof prop === \"object\") {\n Object.keys(prop).forEach(function(k4, i3) {\n setCss(el, k4, prop[k4], i3);\n });\n }\n }\n function getCss(el, prop) {\n if (!el || !utils_1.isTag(el))\n return;\n var styles2 = parse2(el.attribs.style);\n if (typeof prop === \"string\") {\n return styles2[prop];\n }\n if (Array.isArray(prop)) {\n var newStyles_1 = {};\n prop.forEach(function(item) {\n if (styles2[item] != null) {\n newStyles_1[item] = styles2[item];\n }\n });\n return newStyles_1;\n }\n return styles2;\n }\n function stringify(obj) {\n return Object.keys(obj).reduce(function(str, prop) {\n return \"\" + str + (str ? \" \" : \"\") + prop + \": \" + obj[prop] + \";\";\n }, \"\");\n }\n function parse2(styles2) {\n styles2 = (styles2 || \"\").trim();\n if (!styles2)\n return {};\n return styles2.split(\";\").reduce(function(obj, str) {\n var n5 = str.indexOf(\":\");\n if (n5 < 1 || n5 === str.length - 1)\n return obj;\n obj[str.slice(0, n5).trim()] = str.slice(n5 + 1).trim();\n return obj;\n }, {});\n }\n }\n});\n\n// node_modules/cheerio/lib/api/forms.js\nvar require_forms = __commonJS({\n \"node_modules/cheerio/lib/api/forms.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.serializeArray = exports2.serialize = void 0;\n var utils_1 = require_utils();\n var submittableSelector = \"input,select,textarea,keygen\";\n var r20 = /%20/g;\n var rCRLF = /\\r?\\n/g;\n function serialize2() {\n var arr = this.serializeArray();\n var retArr = arr.map(function(data) {\n return encodeURIComponent(data.name) + \"=\" + encodeURIComponent(data.value);\n });\n return retArr.join(\"&\").replace(r20, \"+\");\n }\n exports2.serialize = serialize2;\n function serializeArray() {\n var _this = this;\n return this.map(function(_4, elem) {\n var $elem = _this._make(elem);\n if (utils_1.isTag(elem) && elem.name === \"form\") {\n return $elem.find(submittableSelector).toArray();\n }\n return $elem.filter(submittableSelector).toArray();\n }).filter('[name!=\"\"]:enabled:not(:submit, :button, :image, :reset, :file):matches([checked], :not(:checkbox, :radio))').map(function(_4, elem) {\n var _a;\n var $elem = _this._make(elem);\n var name = $elem.attr(\"name\");\n var value = (_a = $elem.val()) !== null && _a !== void 0 ? _a : \"\";\n if (Array.isArray(value)) {\n return value.map(function(val) {\n return { name, value: val.replace(rCRLF, \"\\r\\n\") };\n });\n }\n return { name, value: value.replace(rCRLF, \"\\r\\n\") };\n }).toArray();\n }\n exports2.serializeArray = serializeArray;\n }\n});\n\n// node_modules/cheerio/lib/cheerio.js\nvar require_cheerio = __commonJS({\n \"node_modules/cheerio/lib/cheerio.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.Cheerio = void 0;\n var tslib_1 = require_tslib2();\n var parse_1 = tslib_1.__importDefault(require_parse3());\n var options_1 = tslib_1.__importDefault(require_options());\n var utils_1 = require_utils();\n var Attributes = tslib_1.__importStar(require_attributes2());\n var Traversing = tslib_1.__importStar(require_traversing());\n var Manipulation = tslib_1.__importStar(require_manipulation2());\n var Css = tslib_1.__importStar(require_css());\n var Forms = tslib_1.__importStar(require_forms());\n var Cheerio = function() {\n function Cheerio2(selector, context, root5, options) {\n var _this = this;\n if (options === void 0) {\n options = options_1.default;\n }\n this.length = 0;\n this.options = options;\n if (!selector)\n return this;\n if (root5) {\n if (typeof root5 === \"string\")\n root5 = parse_1.default(root5, this.options, false);\n this._root = new this.constructor(root5, null, null, this.options);\n this._root._root = this._root;\n }\n if (utils_1.isCheerio(selector))\n return selector;\n var elements = typeof selector === \"string\" && utils_1.isHtml(selector) ? parse_1.default(selector, this.options, false).children : isNode(selector) ? [selector] : Array.isArray(selector) ? selector : null;\n if (elements) {\n elements.forEach(function(elem, idx) {\n _this[idx] = elem;\n });\n this.length = elements.length;\n return this;\n }\n var search = selector;\n var searchContext = !context ? this._root : typeof context === \"string\" ? utils_1.isHtml(context) ? this._make(parse_1.default(context, this.options, false)) : (search = context + \" \" + search, this._root) : utils_1.isCheerio(context) ? context : this._make(context);\n if (!searchContext)\n return this;\n return searchContext.find(search);\n }\n Cheerio2.prototype._make = function(dom, context) {\n var cheerio = new this.constructor(dom, context, this._root, this.options);\n cheerio.prevObject = this;\n return cheerio;\n };\n return Cheerio2;\n }();\n exports2.Cheerio = Cheerio;\n Cheerio.prototype.cheerio = \"[cheerio object]\";\n Cheerio.prototype.splice = Array.prototype.splice;\n Cheerio.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator];\n Object.assign(Cheerio.prototype, Attributes, Traversing, Manipulation, Css, Forms);\n function isNode(obj) {\n return !!obj.name || obj.type === \"root\" || obj.type === \"text\" || obj.type === \"comment\";\n }\n }\n});\n\n// node_modules/cheerio/lib/load.js\nvar require_load = __commonJS({\n \"node_modules/cheerio/lib/load.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.load = void 0;\n var tslib_1 = require_tslib2();\n var options_1 = tslib_1.__importStar(require_options());\n var staticMethods = tslib_1.__importStar(require_static());\n var cheerio_1 = require_cheerio();\n var parse_1 = tslib_1.__importDefault(require_parse3());\n function load(content, options, isDocument) {\n if (isDocument === void 0) {\n isDocument = true;\n }\n if (content == null) {\n throw new Error(\"cheerio.load() expects a string\");\n }\n var internalOpts = tslib_1.__assign(tslib_1.__assign({}, options_1.default), options_1.flatten(options));\n var root5 = parse_1.default(content, internalOpts, isDocument);\n var LoadedCheerio = function(_super) {\n tslib_1.__extends(LoadedCheerio2, _super);\n function LoadedCheerio2() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return LoadedCheerio2;\n }(cheerio_1.Cheerio);\n function initialize(selector, context, r5, opts) {\n if (r5 === void 0) {\n r5 = root5;\n }\n return new LoadedCheerio(selector, context, r5, tslib_1.__assign(tslib_1.__assign({}, internalOpts), options_1.flatten(opts)));\n }\n Object.assign(initialize, staticMethods, {\n load,\n _root: root5,\n _options: internalOpts,\n fn: LoadedCheerio.prototype,\n prototype: LoadedCheerio.prototype\n });\n return initialize;\n }\n exports2.load = load;\n }\n});\n\n// node_modules/cheerio/lib/index.js\nvar require_lib13 = __commonJS({\n \"node_modules/cheerio/lib/index.js\"(exports2) {\n \"use strict\";\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.root = exports2.parseHTML = exports2.merge = exports2.contains = void 0;\n var tslib_1 = require_tslib2();\n tslib_1.__exportStar(require_types(), exports2);\n tslib_1.__exportStar(require_load(), exports2);\n var load_1 = require_load();\n exports2.default = load_1.load([]);\n var staticMethods = tslib_1.__importStar(require_static());\n exports2.contains = staticMethods.contains;\n exports2.merge = staticMethods.merge;\n exports2.parseHTML = staticMethods.parseHTML;\n exports2.root = staticMethods.root;\n }\n});\n\n// node_modules/mensch/lib/debug.js\nvar require_debug = __commonJS({\n \"node_modules/mensch/lib/debug.js\"(exports2, module2) {\n exports2 = module2.exports = debug;\n function debug(label) {\n return _debug.bind(null, label);\n }\n function _debug(label) {\n var args = [].slice.call(arguments, 1);\n args.unshift(\"[\" + label + \"]\");\n process.stderr.write(args.join(\" \") + \"\\n\");\n }\n }\n});\n\n// node_modules/mensch/lib/lexer.js\nvar require_lexer = __commonJS({\n \"node_modules/mensch/lib/lexer.js\"(exports2, module2) {\n var DEBUG = false;\n var TIMER = false;\n var debug = require_debug()(\"lex\");\n exports2 = module2.exports = lex;\n function lex(css19) {\n var start3;\n var buffer = \"\";\n var ch;\n var column = 0;\n var cursor = -1;\n var depth = 0;\n var line = 1;\n var state = \"before-selector\";\n var stack = [state];\n var token = {};\n var tokens = [];\n var atRules = [\n \"media\",\n \"keyframes\",\n { name: \"-webkit-keyframes\", type: \"keyframes\", prefix: \"-webkit-\" },\n { name: \"-moz-keyframes\", type: \"keyframes\", prefix: \"-moz-\" },\n { name: \"-ms-keyframes\", type: \"keyframes\", prefix: \"-ms-\" },\n { name: \"-o-keyframes\", type: \"keyframes\", prefix: \"-o-\" },\n \"font-face\",\n { name: \"import\", state: \"before-at-value\" },\n { name: \"charset\", state: \"before-at-value\" },\n \"supports\",\n \"viewport\",\n { name: \"namespace\", state: \"before-at-value\" },\n \"document\",\n { name: \"-moz-document\", type: \"document\", prefix: \"-moz-\" },\n \"page\"\n ];\n function getCh() {\n skip();\n return css19[cursor];\n }\n function getState2(index7) {\n return index7 ? stack[stack.length - 1 - index7] : state;\n }\n function isNextString(str) {\n var start4 = cursor + 1;\n return str === css19.slice(start4, start4 + str.length);\n }\n function find(str) {\n var pos2 = css19.slice(cursor).indexOf(str);\n return pos2 > 0 ? pos2 : false;\n }\n function isNextChar(ch2) {\n return ch2 === peek(1);\n }\n function peek(offset3) {\n return css19[cursor + (offset3 || 1)];\n }\n function popState() {\n var removed = stack.pop();\n state = stack[stack.length - 1];\n return removed;\n }\n function pushState(newState) {\n state = newState;\n stack.push(state);\n return stack.length;\n }\n function replaceState(newState) {\n var previousState = state;\n stack[stack.length - 1] = state = newState;\n return previousState;\n }\n function skip(n5) {\n if ((n5 || 1) == 1) {\n if (css19[cursor] == \"\\n\") {\n line++;\n column = 1;\n } else {\n column++;\n }\n cursor++;\n } else {\n var skipStr = css19.slice(cursor, cursor + n5).split(\"\\n\");\n if (skipStr.length > 1) {\n line += skipStr.length - 1;\n column = 1;\n }\n column += skipStr[skipStr.length - 1].length;\n cursor = cursor + n5;\n }\n }\n function addToken() {\n token.end = {\n line,\n col: column\n };\n DEBUG && debug(\"addToken:\", JSON.stringify(token, null, 2));\n tokens.push(token);\n buffer = \"\";\n token = {};\n }\n function initializeToken(type) {\n token = {\n type,\n start: {\n line,\n col: column\n }\n };\n }\n TIMER && (start3 = Date.now());\n while (ch = getCh()) {\n DEBUG && debug(ch, getState2());\n switch (ch) {\n case \" \":\n switch (getState2()) {\n case \"selector\":\n case \"value\":\n case \"value-paren\":\n case \"at-group\":\n case \"at-value\":\n case \"comment\":\n case \"double-string\":\n case \"single-string\":\n buffer += ch;\n break;\n }\n break;\n case \"\\n\":\n case \"\t\":\n case \"\\r\":\n case \"\\f\":\n switch (getState2()) {\n case \"value\":\n case \"value-paren\":\n case \"at-group\":\n case \"comment\":\n case \"single-string\":\n case \"double-string\":\n case \"selector\":\n buffer += ch;\n break;\n case \"at-value\":\n if (ch === \"\\n\") {\n token.value = buffer.trim();\n addToken();\n popState();\n }\n break;\n }\n break;\n case \":\":\n switch (getState2()) {\n case \"name\":\n token.name = buffer.trim();\n buffer = \"\";\n replaceState(\"before-value\");\n break;\n case \"before-selector\":\n buffer += ch;\n initializeToken(\"selector\");\n pushState(\"selector\");\n break;\n case \"before-value\":\n replaceState(\"value\");\n buffer += ch;\n break;\n default:\n buffer += ch;\n break;\n }\n break;\n case \";\":\n switch (getState2()) {\n case \"name\":\n case \"before-value\":\n case \"value\":\n if (buffer.trim().length > 0) {\n token.value = buffer.trim(), addToken();\n }\n replaceState(\"before-name\");\n break;\n case \"value-paren\":\n buffer += ch;\n break;\n case \"at-value\":\n token.value = buffer.trim();\n addToken();\n popState();\n break;\n case \"before-name\":\n break;\n default:\n buffer += ch;\n break;\n }\n break;\n case \"{\":\n switch (getState2()) {\n case \"selector\":\n if (peek(-1) === \"\\\\\") {\n buffer += ch;\n break;\n }\n token.text = buffer.trim();\n addToken();\n replaceState(\"before-name\");\n depth = depth + 1;\n break;\n case \"at-group\":\n token.name = buffer.trim();\n switch (token.type) {\n case \"font-face\":\n case \"viewport\":\n case \"page\":\n pushState(\"before-name\");\n break;\n default:\n pushState(\"before-selector\");\n }\n addToken();\n depth = depth + 1;\n break;\n case \"name\":\n case \"at-rule\":\n token.name = buffer.trim();\n addToken();\n pushState(\"before-name\");\n depth = depth + 1;\n break;\n case \"comment\":\n case \"double-string\":\n case \"single-string\":\n buffer += ch;\n break;\n case \"before-value\":\n replaceState(\"value\");\n buffer += ch;\n break;\n }\n break;\n case \"}\":\n switch (getState2()) {\n case \"before-name\":\n case \"name\":\n case \"before-value\":\n case \"value\":\n if (buffer) {\n token.value = buffer.trim();\n }\n if (token.name && token.value) {\n addToken();\n }\n initializeToken(\"end\");\n addToken();\n popState();\n if (getState2() === \"at-group\") {\n initializeToken(\"at-group-end\");\n addToken();\n popState();\n }\n if (depth > 0) {\n depth = depth - 1;\n }\n break;\n case \"at-group\":\n case \"before-selector\":\n case \"selector\":\n if (peek(-1) === \"\\\\\") {\n buffer += ch;\n break;\n }\n if (depth > 0) {\n if (getState2(1) === \"at-group\") {\n initializeToken(\"at-group-end\");\n addToken();\n }\n }\n if (depth > 1) {\n popState();\n }\n if (depth > 0) {\n depth = depth - 1;\n }\n break;\n case \"double-string\":\n case \"single-string\":\n case \"comment\":\n buffer += ch;\n break;\n }\n break;\n case '\"':\n case \"'\":\n switch (getState2()) {\n case \"double-string\":\n if (ch === '\"' && peek(-1) !== \"\\\\\") {\n popState();\n }\n break;\n case \"single-string\":\n if (ch === \"'\" && peek(-1) !== \"\\\\\") {\n popState();\n }\n break;\n case \"before-at-value\":\n replaceState(\"at-value\");\n pushState(ch === '\"' ? \"double-string\" : \"single-string\");\n break;\n case \"before-value\":\n replaceState(\"value\");\n pushState(ch === '\"' ? \"double-string\" : \"single-string\");\n break;\n case \"comment\":\n break;\n default:\n if (peek(-1) !== \"\\\\\") {\n pushState(ch === '\"' ? \"double-string\" : \"single-string\");\n }\n }\n buffer += ch;\n break;\n case \"/\":\n switch (getState2()) {\n case \"comment\":\n case \"double-string\":\n case \"single-string\":\n buffer += ch;\n break;\n case \"before-value\":\n case \"selector\":\n case \"name\":\n case \"value\":\n if (isNextChar(\"*\")) {\n var pos = find(\"*/\");\n if (pos) {\n skip(pos + 1);\n }\n } else {\n if (getState2() == \"before-value\")\n replaceState(\"value\");\n buffer += ch;\n }\n break;\n default:\n if (isNextChar(\"*\")) {\n initializeToken(\"comment\");\n pushState(\"comment\");\n skip();\n } else {\n buffer += ch;\n }\n break;\n }\n break;\n case \"*\":\n switch (getState2()) {\n case \"comment\":\n if (isNextChar(\"/\")) {\n token.text = buffer;\n skip();\n addToken();\n popState();\n } else {\n buffer += ch;\n }\n break;\n case \"before-selector\":\n buffer += ch;\n initializeToken(\"selector\");\n pushState(\"selector\");\n break;\n case \"before-value\":\n replaceState(\"value\");\n buffer += ch;\n break;\n default:\n buffer += ch;\n }\n break;\n case \"@\":\n switch (getState2()) {\n case \"comment\":\n case \"double-string\":\n case \"single-string\":\n buffer += ch;\n break;\n case \"before-value\":\n replaceState(\"value\");\n buffer += ch;\n break;\n default:\n var tokenized = false;\n var name;\n var rule;\n for (var j4 = 0, len = atRules.length; !tokenized && j4 < len; ++j4) {\n rule = atRules[j4];\n name = rule.name || rule;\n if (!isNextString(name)) {\n continue;\n }\n tokenized = true;\n initializeToken(name);\n pushState(rule.state || \"at-group\");\n skip(name.length);\n if (rule.prefix) {\n token.prefix = rule.prefix;\n }\n if (rule.type) {\n token.type = rule.type;\n }\n }\n if (!tokenized) {\n buffer += ch;\n }\n break;\n }\n break;\n case \"(\":\n switch (getState2()) {\n case \"value\":\n pushState(\"value-paren\");\n break;\n case \"before-value\":\n replaceState(\"value\");\n break;\n }\n buffer += ch;\n break;\n case \")\":\n switch (getState2()) {\n case \"value-paren\":\n popState();\n break;\n case \"before-value\":\n replaceState(\"value\");\n break;\n }\n buffer += ch;\n break;\n default:\n switch (getState2()) {\n case \"before-selector\":\n initializeToken(\"selector\");\n pushState(\"selector\");\n break;\n case \"before-name\":\n initializeToken(\"property\");\n replaceState(\"name\");\n break;\n case \"before-value\":\n replaceState(\"value\");\n break;\n case \"before-at-value\":\n replaceState(\"at-value\");\n break;\n }\n buffer += ch;\n break;\n }\n }\n TIMER && debug(\"ran in\", Date.now() - start3 + \"ms\");\n return tokens;\n }\n }\n});\n\n// node_modules/mensch/lib/parser.js\nvar require_parser2 = __commonJS({\n \"node_modules/mensch/lib/parser.js\"(exports2, module2) {\n var DEBUG = false;\n var TIMER = false;\n var debug = require_debug()(\"parse\");\n var lex = require_lexer();\n exports2 = module2.exports = parse2;\n var _comments;\n var _depth;\n var _position;\n var _tokens;\n function parse2(css19, options) {\n var start3;\n options || (options = {});\n _comments = !!options.comments;\n _position = !!options.position;\n _depth = 0;\n _tokens = Array.isArray(css19) ? css19.slice() : lex(css19);\n var rule;\n var rules = [];\n var token;\n TIMER && (start3 = Date.now());\n while (token = next()) {\n rule = parseToken(token);\n rule && rules.push(rule);\n }\n TIMER && debug(\"ran in\", Date.now() - start3 + \"ms\");\n return {\n type: \"stylesheet\",\n stylesheet: {\n rules\n }\n };\n }\n function astNode(token, override) {\n override || (override = {});\n var key;\n var keys3 = [\"type\", \"name\", \"value\"];\n var node = {};\n for (var i3 = 0; i3 < keys3.length; ++i3) {\n key = keys3[i3];\n if (token[key]) {\n node[key] = override[key] || token[key];\n }\n }\n keys3 = Object.keys(override);\n for (i3 = 0; i3 < keys3.length; ++i3) {\n key = keys3[i3];\n if (!node[key]) {\n node[key] = override[key];\n }\n }\n if (_position) {\n node.position = {\n start: token.start,\n end: token.end\n };\n }\n DEBUG && debug(\"astNode:\", JSON.stringify(node, null, 2));\n return node;\n }\n function next() {\n var token = _tokens.shift();\n DEBUG && debug(\"next:\", JSON.stringify(token, null, 2));\n return token;\n }\n function parseAtGroup(token) {\n _depth = _depth + 1;\n var overrides = {};\n switch (token.type) {\n case \"font-face\":\n case \"viewport\":\n overrides.declarations = parseDeclarations();\n break;\n case \"page\":\n overrides.prefix = token.prefix;\n overrides.declarations = parseDeclarations();\n break;\n default:\n overrides.prefix = token.prefix;\n overrides.rules = parseRules();\n }\n return astNode(token, overrides);\n }\n function parseAtImport(token) {\n return astNode(token);\n }\n function parseCharset(token) {\n return astNode(token);\n }\n function parseComment(token) {\n return astNode(token, { text: token.text });\n }\n function parseNamespace(token) {\n return astNode(token);\n }\n function parseProperty(token) {\n return astNode(token);\n }\n function parseSelector(token) {\n function trim(str) {\n return str.trim();\n }\n return astNode(token, {\n type: \"rule\",\n selectors: token.text.split(\",\").map(trim),\n declarations: parseDeclarations(token)\n });\n }\n function parseToken(token) {\n switch (token.type) {\n case \"property\":\n return parseProperty(token);\n case \"selector\":\n return parseSelector(token);\n case \"at-group-end\":\n _depth = _depth - 1;\n return;\n case \"media\":\n case \"keyframes\":\n return parseAtGroup(token);\n case \"comment\":\n if (_comments) {\n return parseComment(token);\n }\n break;\n case \"charset\":\n return parseCharset(token);\n case \"import\":\n return parseAtImport(token);\n case \"namespace\":\n return parseNamespace(token);\n case \"font-face\":\n case \"supports\":\n case \"viewport\":\n case \"document\":\n case \"page\":\n return parseAtGroup(token);\n }\n DEBUG && debug(\"parseToken: unexpected token:\", JSON.stringify(token));\n }\n function parseTokensWhile(conditionFn) {\n var node;\n var nodes = [];\n var token;\n while ((token = next()) && (conditionFn && conditionFn(token))) {\n node = parseToken(token);\n node && nodes.push(node);\n }\n if (token && token.type !== \"end\") {\n _tokens.unshift(token);\n }\n return nodes;\n }\n function parseDeclarations() {\n return parseTokensWhile(function(token) {\n return token.type === \"property\" || token.type === \"comment\";\n });\n }\n function parseRules() {\n return parseTokensWhile(function() {\n return _depth;\n });\n }\n }\n});\n\n// node_modules/mensch/lib/stringify.js\nvar require_stringify3 = __commonJS({\n \"node_modules/mensch/lib/stringify.js\"(exports2, module2) {\n var DEBUG = false;\n var TIMER = false;\n var debug = require_debug()(\"stringify\");\n var _comments;\n var _compress;\n var _indentation;\n var _level;\n var _n;\n var _s;\n exports2 = module2.exports = stringify;\n function stringify(ast, options) {\n var start3;\n options || (options = {});\n _indentation = options.indentation || \"\";\n _compress = !!options.compress;\n _comments = !!options.comments;\n _level = 1;\n if (_compress) {\n _n = _s = \"\";\n } else {\n _n = \"\\n\";\n _s = \" \";\n }\n TIMER && (start3 = Date.now());\n var css19 = reduce7(ast.stylesheet.rules, stringifyNode).join(\"\\n\").trim();\n TIMER && debug(\"ran in\", Date.now() - start3 + \"ms\");\n return css19;\n }\n function indent2(level) {\n if (level) {\n _level += level;\n return;\n }\n if (_compress) {\n return \"\";\n }\n return Array(_level).join(_indentation || \"\");\n }\n function stringifyAtRule(node) {\n return \"@\" + node.type + \" \" + node.value + \";\" + _n;\n }\n function stringifyAtGroup(node) {\n var label = \"\";\n var prefix = node.prefix || \"\";\n if (node.name) {\n label = \" \" + node.name;\n }\n var chomp = node.type !== \"page\";\n return \"@\" + prefix + node.type + label + _s + stringifyBlock(node, chomp) + _n;\n }\n function stringifyComment(node) {\n if (!_comments) {\n return \"\";\n }\n return \"/*\" + (node.text || \"\") + \"*/\" + _n;\n }\n function stringifyRule(node) {\n var label;\n if (node.selectors) {\n label = node.selectors.join(\",\" + _n);\n } else {\n label = \"@\" + node.type;\n label += node.name ? \" \" + node.name : \"\";\n }\n return indent2() + label + _s + stringifyBlock(node) + _n;\n }\n function reduce7(items2, fn7) {\n return items2.reduce(function(results, item) {\n var result = item.type === \"comment\" ? stringifyComment(item) : fn7(item);\n result && results.push(result);\n return results;\n }, []);\n }\n function stringifyBlock(node, chomp) {\n var children = node.declarations;\n var fn7 = stringifyDeclaration;\n if (node.rules) {\n children = node.rules;\n fn7 = stringifyRule;\n }\n children = stringifyChildren(children, fn7);\n children && (children = _n + children + (chomp ? \"\" : _n));\n return \"{\" + children + indent2() + \"}\";\n }\n function stringifyChildren(children, fn7) {\n if (!children) {\n return \"\";\n }\n indent2(1);\n var results = reduce7(children, fn7);\n indent2(-1);\n if (!results.length) {\n return \"\";\n }\n return results.join(_n);\n }\n function stringifyDeclaration(node) {\n if (node.type === \"property\") {\n return stringifyProperty(node);\n }\n DEBUG && debug(\"stringifyDeclaration: unexpected node:\", JSON.stringify(node));\n }\n function stringifyNode(node) {\n switch (node.type) {\n case \"rule\":\n return stringifyRule(node);\n case \"media\":\n case \"keyframes\":\n return stringifyAtGroup(node);\n case \"comment\":\n return stringifyComment(node);\n case \"import\":\n case \"charset\":\n case \"namespace\":\n return stringifyAtRule(node);\n case \"font-face\":\n case \"supports\":\n case \"viewport\":\n case \"document\":\n case \"page\":\n return stringifyAtGroup(node);\n }\n DEBUG && debug(\"stringifyNode: unexpected node: \" + JSON.stringify(node));\n }\n function stringifyProperty(node) {\n var name = node.name ? node.name + \":\" + _s : \"\";\n return indent2() + name + node.value + \";\";\n }\n }\n});\n\n// node_modules/mensch/index.js\nvar require_mensch = __commonJS({\n \"node_modules/mensch/index.js\"(exports2, module2) {\n module2.exports = {\n lex: require_lexer(),\n parse: require_parser2(),\n stringify: require_stringify3()\n };\n }\n});\n\n// node_modules/slick/parser.js\nvar require_parser3 = __commonJS({\n \"node_modules/slick/parser.js\"(exports2, module2) {\n \"use strict\";\n var escapeRe = /([-.*+?^${}()|[\\]\\/\\\\])/g;\n var unescapeRe = /\\\\/g;\n var escape = function(string) {\n return (string + \"\").replace(escapeRe, \"\\\\$1\");\n };\n var unescape = function(string) {\n return (string + \"\").replace(unescapeRe, \"\");\n };\n var slickRe = RegExp(`^(?:\\\\s*(,)\\\\s*|\\\\s*(+)\\\\s*|(\\\\s+)|(+|\\\\*)|\\\\#(+)|\\\\.(+)|\\\\[\\\\s*(+)(?:\\\\s*([*^$!~|]?=)(?:\\\\s*(?:([\"']?)(.*?)\\\\9)))?\\\\s*\\\\](?!\\\\])|(:+)(+)(?:\\\\((?:(?:([\"'])([^\\\\13]*)\\\\13)|((?:\\\\([^)]+\\\\)|[^()]*)+))\\\\))?)`.replace(//, \"[\" + escape(\">+~`!@$%^&={}\\\\;/g, \"(?:[\\\\w\\\\u00a1-\\\\uFFFF-]|\\\\\\\\[^\\\\s0-9a-f])\").replace(//g, \"(?:[:\\\\w\\\\u00a1-\\\\uFFFF-]|\\\\\\\\[^\\\\s0-9a-f])\"));\n var Part = function Part2(combinator) {\n this.combinator = combinator || \" \";\n this.tag = \"*\";\n };\n Part.prototype.toString = function() {\n if (!this.raw) {\n var xpr = \"\", k4, part;\n xpr += this.tag || \"*\";\n if (this.id)\n xpr += \"#\" + this.id;\n if (this.classes)\n xpr += \".\" + this.classList.join(\".\");\n if (this.attributes)\n for (k4 = 0; part = this.attributes[k4++]; ) {\n xpr += \"[\" + part.name + (part.operator ? part.operator + '\"' + part.value + '\"' : \"\") + \"]\";\n }\n if (this.pseudos)\n for (k4 = 0; part = this.pseudos[k4++]; ) {\n xpr += \":\" + part.name;\n if (part.value)\n xpr += \"(\" + part.value + \")\";\n }\n this.raw = xpr;\n }\n return this.raw;\n };\n var Expression = function Expression2() {\n this.length = 0;\n };\n Expression.prototype.toString = function() {\n if (!this.raw) {\n var xpr = \"\";\n for (var j4 = 0, bit; bit = this[j4++]; ) {\n if (j4 !== 1)\n xpr += \" \";\n if (bit.combinator !== \" \")\n xpr += bit.combinator + \" \";\n xpr += bit;\n }\n this.raw = xpr;\n }\n return this.raw;\n };\n var replacer = function(rawMatch, separator, combinator, combinatorChildren, tagName, id, className, attributeKey, attributeOperator, attributeQuote, attributeValue, pseudoMarker, pseudoClass, pseudoQuote, pseudoClassQuotedValue, pseudoClassValue) {\n var expression, current;\n if (separator || !this.length) {\n expression = this[this.length++] = new Expression();\n if (separator)\n return \"\";\n }\n if (!expression)\n expression = this[this.length - 1];\n if (combinator || combinatorChildren || !expression.length) {\n current = expression[expression.length++] = new Part(combinator);\n }\n if (!current)\n current = expression[expression.length - 1];\n if (tagName) {\n current.tag = unescape(tagName);\n } else if (id) {\n current.id = unescape(id);\n } else if (className) {\n var unescaped = unescape(className);\n var classes = current.classes || (current.classes = {});\n if (!classes[unescaped]) {\n classes[unescaped] = escape(className);\n var classList = current.classList || (current.classList = []);\n classList.push(unescaped);\n classList.sort();\n }\n } else if (pseudoClass) {\n pseudoClassValue = pseudoClassValue || pseudoClassQuotedValue;\n (current.pseudos || (current.pseudos = [])).push({\n type: pseudoMarker.length == 1 ? \"class\" : \"element\",\n name: unescape(pseudoClass),\n escapedName: escape(pseudoClass),\n value: pseudoClassValue ? unescape(pseudoClassValue) : null,\n escapedValue: pseudoClassValue ? escape(pseudoClassValue) : null\n });\n } else if (attributeKey) {\n attributeValue = attributeValue ? escape(attributeValue) : null;\n (current.attributes || (current.attributes = [])).push({\n operator: attributeOperator,\n name: unescape(attributeKey),\n escapedName: escape(attributeKey),\n value: attributeValue ? unescape(attributeValue) : null,\n escapedValue: attributeValue ? escape(attributeValue) : null\n });\n }\n return \"\";\n };\n var Expressions = function Expressions2(expression) {\n this.length = 0;\n var self2 = this;\n var original = expression, replaced;\n while (expression) {\n replaced = expression.replace(slickRe, function() {\n return replacer.apply(self2, arguments);\n });\n if (replaced === expression)\n throw new Error(original + \" is an invalid expression\");\n expression = replaced;\n }\n };\n Expressions.prototype.toString = function() {\n if (!this.raw) {\n var expressions = [];\n for (var i3 = 0, expression; expression = this[i3++]; )\n expressions.push(expression);\n this.raw = expressions.join(\", \");\n }\n return this.raw;\n };\n var cache = {};\n var parse2 = function(expression) {\n if (expression == null)\n return null;\n expression = (\"\" + expression).replace(/^\\s+|\\s+$/g, \"\");\n return cache[expression] || (cache[expression] = new Expressions(expression));\n };\n module2.exports = parse2;\n }\n});\n\n// node_modules/juice/lib/selector.js\nvar require_selector = __commonJS({\n \"node_modules/juice/lib/selector.js\"(exports2, module2) {\n \"use strict\";\n var parser = require_parser3();\n module2.exports = exports2 = Selector;\n function Selector(text5, styleAttribute) {\n this.text = text5;\n this.spec = void 0;\n this.styleAttribute = styleAttribute || false;\n }\n Selector.prototype.parsed = function() {\n if (!this.tokens) {\n this.tokens = parse2(this.text);\n }\n return this.tokens;\n };\n Selector.prototype.specificity = function() {\n var styleAttribute = this.styleAttribute;\n if (!this.spec) {\n this.spec = specificity(this.text, this.parsed());\n }\n return this.spec;\n function specificity(text5, parsed) {\n var expressions = parsed || parse2(text5);\n var spec = [styleAttribute ? 1 : 0, 0, 0, 0];\n var nots = [];\n for (var i3 = 0; i3 < expressions.length; i3++) {\n var expression = expressions[i3];\n var pseudos = expression.pseudos;\n if (expression.id) {\n spec[1]++;\n }\n if (expression.attributes) {\n spec[2] += expression.attributes.length;\n }\n if (expression.classList) {\n spec[2] += expression.classList.length;\n }\n if (expression.tag && expression.tag !== \"*\") {\n spec[3]++;\n }\n if (pseudos) {\n spec[3] += pseudos.length;\n for (var p4 = 0; p4 < pseudos.length; p4++) {\n if (pseudos[p4].name === \"not\") {\n nots.push(pseudos[p4].value);\n spec[3]--;\n }\n }\n }\n }\n for (var ii = nots.length; ii--; ) {\n var not = specificity(nots[ii]);\n for (var jj = 4; jj--; ) {\n spec[jj] += not[jj];\n }\n }\n return spec;\n }\n };\n function parse2(text5) {\n try {\n return parser(text5)[0];\n } catch (e2) {\n return [];\n }\n }\n }\n});\n\n// node_modules/juice/lib/property.js\nvar require_property = __commonJS({\n \"node_modules/juice/lib/property.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = exports2 = Property;\n var utils2 = require_utils2();\n function Property(prop, value, selector, priority, additionalPriority) {\n this.prop = prop;\n this.value = value;\n this.selector = selector;\n this.priority = priority || 0;\n this.additionalPriority = additionalPriority || [];\n }\n Property.prototype.compareFunc = function(property2) {\n var a5 = [];\n a5.push.apply(a5, this.selector.specificity());\n a5.push.apply(a5, this.additionalPriority);\n a5[0] += this.priority;\n var b4 = [];\n b4.push.apply(b4, property2.selector.specificity());\n b4.push.apply(b4, property2.additionalPriority);\n b4[0] += property2.priority;\n return utils2.compareFunc(a5, b4);\n };\n Property.prototype.compare = function(property2) {\n var winner = this.compareFunc(property2);\n if (winner === 1) {\n return this;\n }\n return property2;\n };\n Property.prototype.toString = function() {\n return this.prop + \": \" + this.value.replace(/['\"]+/g, \"\") + \";\";\n };\n }\n});\n\n// node_modules/juice/lib/utils.js\nvar require_utils2 = __commonJS({\n \"node_modules/juice/lib/utils.js\"(exports2) {\n \"use strict\";\n var mensch = require_mensch();\n var Selector = require_selector();\n var Property = require_property();\n exports2.Selector = Selector;\n exports2.Property = Property;\n exports2.extract = function extract(selectorText) {\n var attr = 0;\n var sels = [];\n var sel = \"\";\n for (var i3 = 0, l3 = selectorText.length; i3 < l3; i3++) {\n var c3 = selectorText.charAt(i3);\n if (attr) {\n if (c3 === \"]\" || c3 === \")\") {\n attr--;\n }\n sel += c3;\n } else {\n if (c3 === \",\") {\n sels.push(sel);\n sel = \"\";\n } else {\n if (c3 === \"[\" || c3 === \"(\") {\n attr++;\n }\n if (sel.length || c3 !== \",\" && c3 !== \"\\n\" && c3 !== \" \") {\n sel += c3;\n }\n }\n }\n }\n if (sel.length) {\n sels.push(sel);\n }\n return sels;\n };\n exports2.parseCSS = function(css19) {\n var parsed = mensch.parse(css19, { position: true, comments: true });\n var rules = typeof parsed.stylesheet != \"undefined\" && parsed.stylesheet.rules ? parsed.stylesheet.rules : [];\n var ret = [];\n for (var i3 = 0, l3 = rules.length; i3 < l3; i3++) {\n if (rules[i3].type == \"rule\") {\n var rule = rules[i3];\n var selectors = rule.selectors;\n for (var ii = 0, ll = selectors.length; ii < ll; ii++) {\n ret.push([selectors[ii], rule.declarations]);\n }\n }\n }\n return ret;\n };\n exports2.getPreservedText = function(css19, options, ignoredPseudos) {\n var parsed = mensch.parse(css19, { position: true, comments: true });\n var rules = typeof parsed.stylesheet != \"undefined\" && parsed.stylesheet.rules ? parsed.stylesheet.rules : [];\n var preserved = [];\n var lastStart = null;\n for (var i3 = rules.length - 1; i3 >= 0; i3--) {\n if (options.fontFaces && rules[i3].type === \"font-face\" || options.mediaQueries && rules[i3].type === \"media\" || options.keyFrames && rules[i3].type === \"keyframes\" || options.pseudos && rules[i3].selectors && this.matchesPseudo(rules[i3].selectors[0], ignoredPseudos)) {\n preserved.unshift(mensch.stringify({ stylesheet: { rules: [rules[i3]] } }, { comments: false, indentation: \" \" }));\n }\n lastStart = rules[i3].position.start;\n }\n if (preserved.length === 0) {\n return false;\n }\n return \"\\n\" + preserved.join(\"\\n\") + \"\\n\";\n };\n exports2.normalizeLineEndings = function(text5) {\n return text5.replace(/\\r\\n/g, \"\\n\").replace(/\\n/g, \"\\r\\n\");\n };\n exports2.matchesPseudo = function(needle, haystack) {\n return haystack.find(function(element4) {\n return needle.indexOf(element4) > -1;\n });\n };\n exports2.compareFunc = function(a5, b4) {\n var min3 = Math.min(a5.length, b4.length);\n for (var i3 = 0; i3 < min3; i3++) {\n if (a5[i3] === b4[i3]) {\n continue;\n }\n if (a5[i3] > b4[i3]) {\n return 1;\n }\n return -1;\n }\n return a5.length - b4.length;\n };\n exports2.compare = function(a5, b4) {\n return exports2.compareFunc(a5, b4) == 1 ? a5 : b4;\n };\n exports2.getDefaultOptions = function(options) {\n var result = Object.assign({\n extraCss: \"\",\n insertPreservedExtraCss: true,\n applyStyleTags: true,\n removeStyleTags: true,\n preserveMediaQueries: true,\n preserveFontFaces: true,\n preserveKeyFrames: true,\n preservePseudos: true,\n applyWidthAttributes: true,\n applyHeightAttributes: true,\n applyAttributesTableElements: true,\n url: \"\"\n }, options);\n result.webResources = result.webResources || {};\n return result;\n };\n }\n});\n\n// node_modules/juice/lib/cheerio.js\nvar require_cheerio2 = __commonJS({\n \"node_modules/juice/lib/cheerio.js\"(exports2, module2) {\n \"use strict\";\n var cheerio = require_lib13();\n var utils2 = require_utils2();\n var cheerioLoad = function(html2, options, encodeEntities) {\n options = Object.assign({ decodeEntities: false, _useHtmlParser2: true }, options);\n html2 = encodeEntities(html2);\n return cheerio.load(html2, options);\n };\n var createEntityConverters = function() {\n var codeBlockLookup = [];\n var encodeCodeBlocks = function(html2) {\n var blocks = module2.exports.codeBlocks;\n Object.keys(blocks).forEach(function(key) {\n var re = new RegExp(blocks[key].start + \"([\\\\S\\\\s]*?)\" + blocks[key].end, \"g\");\n html2 = html2.replace(re, function(match2, subMatch) {\n codeBlockLookup.push(match2);\n return \"JUICE_CODE_BLOCK_\" + (codeBlockLookup.length - 1) + \"_\";\n });\n });\n return html2;\n };\n var decodeCodeBlocks = function(html2) {\n for (var index7 = 0; index7 < codeBlockLookup.length; index7++) {\n var re = new RegExp(\"JUICE_CODE_BLOCK_\" + index7 + '_(=\"\")?', \"gi\");\n html2 = html2.replace(re, function() {\n return codeBlockLookup[index7];\n });\n }\n return html2;\n };\n return {\n encodeEntities: encodeCodeBlocks,\n decodeEntities: decodeCodeBlocks\n };\n };\n module2.exports = function(html2, options, callback, callbackExtraArguments) {\n var entityConverters = createEntityConverters();\n var $2 = cheerioLoad(html2, options, entityConverters.encodeEntities);\n var args = [$2];\n args.push.apply(args, callbackExtraArguments);\n var doc = callback.apply(void 0, args) || $2;\n if (options && options.xmlMode) {\n return entityConverters.decodeEntities(doc.xml());\n }\n return entityConverters.decodeEntities(doc.html());\n };\n module2.exports.codeBlocks = {\n EJS: { start: \"<%\", end: \"%>\" },\n HBS: { start: \"{{\", end: \"}}\" }\n };\n }\n});\n\n// node_modules/juice/lib/numbers.js\nvar require_numbers = __commonJS({\n \"node_modules/juice/lib/numbers.js\"(exports2) {\n \"use strict\";\n exports2.romanize = function(num) {\n if (isNaN(num))\n return NaN;\n var digits = String(+num).split(\"\"), key = [\n \"\",\n \"C\",\n \"CC\",\n \"CCC\",\n \"CD\",\n \"D\",\n \"DC\",\n \"DCC\",\n \"DCCC\",\n \"CM\",\n \"\",\n \"X\",\n \"XX\",\n \"XXX\",\n \"XL\",\n \"L\",\n \"LX\",\n \"LXX\",\n \"LXXX\",\n \"XC\",\n \"\",\n \"I\",\n \"II\",\n \"III\",\n \"IV\",\n \"V\",\n \"VI\",\n \"VII\",\n \"VIII\",\n \"IX\"\n ], roman = \"\", i3 = 3;\n while (i3--)\n roman = (key[+digits.pop() + i3 * 10] || \"\") + roman;\n return Array(+digits.join(\"\") + 1).join(\"M\") + roman;\n };\n exports2.alphanumeric = function(num) {\n var s3 = \"\", t4;\n while (num > 0) {\n t4 = (num - 1) % 26;\n s3 = String.fromCharCode(65 + t4) + s3;\n num = (num - t4) / 26 | 0;\n }\n return s3 || void 0;\n };\n }\n});\n\n// node_modules/juice/lib/inline.js\nvar require_inline = __commonJS({\n \"node_modules/juice/lib/inline.js\"(exports2, module2) {\n \"use strict\";\n var utils2 = require_utils2();\n var numbers = require_numbers();\n module2.exports = function makeJuiceClient(juiceClient) {\n juiceClient.ignoredPseudos = [\"hover\", \"active\", \"focus\", \"visited\", \"link\"];\n juiceClient.widthElements = [\"TABLE\", \"TD\", \"TH\", \"IMG\"];\n juiceClient.heightElements = [\"TABLE\", \"TD\", \"TH\", \"IMG\"];\n juiceClient.tableElements = [\"TABLE\", \"TH\", \"TR\", \"TD\", \"CAPTION\", \"COLGROUP\", \"COL\", \"THEAD\", \"TBODY\", \"TFOOT\"];\n juiceClient.nonVisualElements = [\"HEAD\", \"TITLE\", \"BASE\", \"LINK\", \"STYLE\", \"META\", \"SCRIPT\", \"NOSCRIPT\"];\n juiceClient.styleToAttribute = {\n \"background-color\": \"bgcolor\",\n \"background-image\": \"background\",\n \"text-align\": \"align\",\n \"vertical-align\": \"valign\"\n };\n juiceClient.excludedProperties = [];\n juiceClient.juiceDocument = juiceDocument;\n juiceClient.inlineDocument = inlineDocument;\n function inlineDocument($2, css19, options) {\n options = options || {};\n var rules = utils2.parseCSS(css19);\n var editedElements = [];\n var styleAttributeName = \"style\";\n var counters = {};\n if (options.styleAttributeName) {\n styleAttributeName = options.styleAttributeName;\n }\n rules.forEach(handleRule);\n editedElements.forEach(setStyleAttrs);\n if (options.inlinePseudoElements) {\n editedElements.forEach(inlinePseudoElements);\n }\n if (options.applyWidthAttributes) {\n editedElements.forEach(function(el) {\n setDimensionAttrs(el, \"width\");\n });\n }\n if (options.applyHeightAttributes) {\n editedElements.forEach(function(el) {\n setDimensionAttrs(el, \"height\");\n });\n }\n if (options.applyAttributesTableElements) {\n editedElements.forEach(setAttributesOnTableElements);\n }\n if (options.insertPreservedExtraCss && options.extraCss) {\n var preservedText = utils2.getPreservedText(options.extraCss, {\n mediaQueries: options.preserveMediaQueries,\n fontFaces: options.preserveFontFaces,\n keyFrames: options.preserveKeyFrames\n });\n if (preservedText) {\n var $appendTo = null;\n if (options.insertPreservedExtraCss !== true) {\n $appendTo = $2(options.insertPreservedExtraCss);\n } else {\n $appendTo = $2(\"head\");\n if (!$appendTo.length) {\n $appendTo = $2(\"body\");\n }\n if (!$appendTo.length) {\n $appendTo = $2.root();\n }\n }\n $appendTo.first().append(\"\");\n }\n }\n function handleRule(rule) {\n var sel = rule[0];\n var style = rule[1];\n var selector = new utils2.Selector(sel);\n var parsedSelector = selector.parsed();\n if (!parsedSelector) {\n return;\n }\n var pseudoElementType = getPseudoElementType(parsedSelector);\n for (var i3 = 0; i3 < parsedSelector.length; ++i3) {\n var subSel = parsedSelector[i3];\n if (subSel.pseudos) {\n for (var j4 = 0; j4 < subSel.pseudos.length; ++j4) {\n var subSelPseudo = subSel.pseudos[j4];\n if (juiceClient.ignoredPseudos.indexOf(subSelPseudo.name) >= 0) {\n return;\n }\n }\n }\n }\n if (pseudoElementType) {\n var last2 = parsedSelector[parsedSelector.length - 1];\n var pseudos = last2.pseudos;\n last2.pseudos = filterElementPseudos(last2.pseudos);\n sel = parsedSelector.toString();\n last2.pseudos = pseudos;\n }\n var els;\n try {\n els = $2(sel);\n } catch (err) {\n return;\n }\n els.each(function() {\n var el = this;\n if (el.name && juiceClient.nonVisualElements.indexOf(el.name.toUpperCase()) >= 0) {\n return;\n }\n if (pseudoElementType) {\n var pseudoElPropName = \"pseudo\" + pseudoElementType;\n var pseudoEl = el[pseudoElPropName];\n if (!pseudoEl) {\n pseudoEl = el[pseudoElPropName] = $2(\"\").get(0);\n pseudoEl.pseudoElementType = pseudoElementType;\n pseudoEl.pseudoElementParent = el;\n pseudoEl.counterProps = el.counterProps;\n el[pseudoElPropName] = pseudoEl;\n }\n el = pseudoEl;\n }\n if (!el.styleProps) {\n el.styleProps = {};\n if ($2(el).attr(styleAttributeName)) {\n var cssText = \"* { \" + $2(el).attr(styleAttributeName) + \" } \";\n addProps(utils2.parseCSS(cssText)[0][1], new utils2.Selector(\"\";\n }, this.getStyleTags = function() {\n return e4.sealed ? _4(2) : e4._emitSheetCSS();\n }, this.getStyleElement = function() {\n var t6;\n if (e4.sealed)\n return _4(2);\n var n6 = ((t6 = {})[v4] = \"\", t6[\"data-styled-version\"] = \"5.3.5\", t6.dangerouslySetInnerHTML = { __html: e4.instance.toString() }, t6), o4 = k4();\n return o4 && (n6.nonce = o4), [r5.createElement(\"style\", c3({}, n6, { key: \"sc-0-0\" }))];\n }, this.seal = function() {\n e4.sealed = true;\n }, this.instance = new L4({ isServer: true }), this.sealed = false;\n }\n var t5 = e3.prototype;\n return t5.collectStyles = function(e4) {\n return this.sealed ? _4(2) : r5.createElement(ae2, { sheet: this.instance }, e4);\n }, t5.interleaveWithNodeStream = function(e4) {\n return _4(3);\n }, e3;\n }();\n var Be2 = { StyleSheet: L4, masterSheet: re };\n typeof navigator != \"undefined\" && navigator.product === \"ReactNative\" && console.warn(\"It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native\"), typeof window != \"undefined\" && (window[\"__styled-components-init__\"] = window[\"__styled-components-init__\"] || 0, window[\"__styled-components-init__\"] === 1 && console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.\"), window[\"__styled-components-init__\"] += 1), exports2.ServerStyleSheet = Me2, exports2.StyleSheetConsumer = te2, exports2.StyleSheetContext = ee2, exports2.StyleSheetManager = ae2, exports2.ThemeConsumer = De2, exports2.ThemeContext = Re2, exports2.ThemeProvider = function(e3) {\n var t5 = n5.useContext(Re2), o4 = n5.useMemo(function() {\n return function(e4, t6) {\n if (!e4)\n return _4(14);\n if (f3(e4)) {\n var n6 = e4(t6);\n return n6 !== null && !Array.isArray(n6) && typeof n6 == \"object\" ? n6 : _4(7);\n }\n return Array.isArray(e4) || typeof e4 != \"object\" ? _4(8) : t6 ? c3({}, t6, {}, e4) : e4;\n }(e3.theme, t5);\n }, [e3.theme, t5]);\n return e3.children ? r5.createElement(Re2.Provider, { value: o4 }, e3.children) : null;\n }, exports2.__PRIVATE__ = Be2, exports2.createGlobalStyle = function(e3) {\n for (var t5 = arguments.length, o4 = new Array(t5 > 1 ? t5 - 1 : 0), s4 = 1; s4 < t5; s4++)\n o4[s4 - 1] = arguments[s4];\n var i4 = ve2.apply(void 0, [e3].concat(o4)), a6 = \"sc-global-\" + Ce2(JSON.stringify(i4)), u4 = new Ve2(i4, a6);\n function l4(e4) {\n var t6 = se2(), o5 = ie2(), s5 = n5.useContext(Re2), c4 = n5.useRef(t6.allocateGSInstance(a6)).current;\n return r5.Children.count(e4.children) && console.warn(\"The global style component \" + a6 + \" was given child JSX. createGlobalStyle does not render children.\"), i4.some(function(e5) {\n return typeof e5 == \"string\" && e5.indexOf(\"@import\") !== -1;\n }) && console.warn(\"Please do not use @import CSS syntax in createGlobalStyle at this time, as the CSSOM APIs we use in production do not handle it well. Instead, we recommend using a library such as react-helmet to inject a typical meta tag to the stylesheet, or simply embedding it manually in your index.html section for a simpler app.\"), t6.server && d4(c4, e4, t6, s5, o5), n5.useLayoutEffect(function() {\n if (!t6.server)\n return d4(c4, e4, t6, s5, o5), function() {\n return u4.removeStyles(c4, t6);\n };\n }, [c4, e4, t6, s5, o5]), null;\n }\n function d4(e4, t6, n6, r6, o5) {\n if (u4.isStatic)\n u4.renderStyles(e4, w4, n6, o5);\n else {\n var s5 = c3({}, t6, { theme: Ee2(t6, r6, l4.defaultProps) });\n u4.renderStyles(e4, s5, n6, o5);\n }\n }\n return we2(a6), r5.memo(l4);\n }, exports2.css = ve2, exports2.default = ke2, exports2.isStyledComponent = y3, exports2.keyframes = function(e3) {\n typeof navigator != \"undefined\" && navigator.product === \"ReactNative\" && console.warn(\"`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.\");\n for (var t5 = arguments.length, n6 = new Array(t5 > 1 ? t5 - 1 : 0), r6 = 1; r6 < t5; r6++)\n n6[r6 - 1] = arguments[r6];\n var o4 = ve2.apply(void 0, [e3].concat(n6)).join(\"\"), s4 = Ce2(o4);\n return new ue2(s4, o4);\n }, exports2.useTheme = function() {\n return n5.useContext(Re2);\n }, exports2.version = \"5.3.5\", exports2.withTheme = function(e3) {\n var t5 = r5.forwardRef(function(t6, o4) {\n var s4 = n5.useContext(Re2), i4 = e3.defaultProps, a6 = Ee2(t6, s4, i4);\n return a6 === void 0 && console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"' + m2(e3) + '\"'), r5.createElement(e3, c3({}, t6, { theme: a6, ref: o4 }));\n });\n return u3(t5, e3), t5.displayName = \"WithTheme(\" + m2(e3) + \")\", t5;\n };\n }\n});\n\n// node_modules/react-fast-compare/index.js\nvar require_react_fast_compare = __commonJS({\n \"node_modules/react-fast-compare/index.js\"(exports2, module2) {\n var hasElementType = typeof Element !== \"undefined\";\n var hasMap = typeof Map === \"function\";\n var hasSet = typeof Set === \"function\";\n var hasArrayBuffer = typeof ArrayBuffer === \"function\" && !!ArrayBuffer.isView;\n function equal2(a5, b4) {\n if (a5 === b4)\n return true;\n if (a5 && b4 && typeof a5 == \"object\" && typeof b4 == \"object\") {\n if (a5.constructor !== b4.constructor)\n return false;\n var length, i3, keys3;\n if (Array.isArray(a5)) {\n length = a5.length;\n if (length != b4.length)\n return false;\n for (i3 = length; i3-- !== 0; )\n if (!equal2(a5[i3], b4[i3]))\n return false;\n return true;\n }\n var it;\n if (hasMap && a5 instanceof Map && b4 instanceof Map) {\n if (a5.size !== b4.size)\n return false;\n it = a5.entries();\n while (!(i3 = it.next()).done)\n if (!b4.has(i3.value[0]))\n return false;\n it = a5.entries();\n while (!(i3 = it.next()).done)\n if (!equal2(i3.value[1], b4.get(i3.value[0])))\n return false;\n return true;\n }\n if (hasSet && a5 instanceof Set && b4 instanceof Set) {\n if (a5.size !== b4.size)\n return false;\n it = a5.entries();\n while (!(i3 = it.next()).done)\n if (!b4.has(i3.value[0]))\n return false;\n return true;\n }\n if (hasArrayBuffer && ArrayBuffer.isView(a5) && ArrayBuffer.isView(b4)) {\n length = a5.length;\n if (length != b4.length)\n return false;\n for (i3 = length; i3-- !== 0; )\n if (a5[i3] !== b4[i3])\n return false;\n return true;\n }\n if (a5.constructor === RegExp)\n return a5.source === b4.source && a5.flags === b4.flags;\n if (a5.valueOf !== Object.prototype.valueOf)\n return a5.valueOf() === b4.valueOf();\n if (a5.toString !== Object.prototype.toString)\n return a5.toString() === b4.toString();\n keys3 = Object.keys(a5);\n length = keys3.length;\n if (length !== Object.keys(b4).length)\n return false;\n for (i3 = length; i3-- !== 0; )\n if (!Object.prototype.hasOwnProperty.call(b4, keys3[i3]))\n return false;\n if (hasElementType && a5 instanceof Element)\n return false;\n for (i3 = length; i3-- !== 0; ) {\n if ((keys3[i3] === \"_owner\" || keys3[i3] === \"__v\" || keys3[i3] === \"__o\") && a5.$$typeof) {\n continue;\n }\n if (!equal2(a5[keys3[i3]], b4[keys3[i3]]))\n return false;\n }\n return true;\n }\n return a5 !== a5 && b4 !== b4;\n }\n module2.exports = function isEqual2(a5, b4) {\n try {\n return equal2(a5, b4);\n } catch (error) {\n if ((error.message || \"\").match(/stack|recursion/i)) {\n console.warn(\"react-fast-compare cannot handle circular refs\");\n return false;\n }\n throw error;\n }\n };\n }\n});\n\n// node_modules/fast-deep-equal/index.js\nvar require_fast_deep_equal = __commonJS({\n \"node_modules/fast-deep-equal/index.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = function equal2(a5, b4) {\n if (a5 === b4)\n return true;\n if (a5 && b4 && typeof a5 == \"object\" && typeof b4 == \"object\") {\n if (a5.constructor !== b4.constructor)\n return false;\n var length, i3, keys3;\n if (Array.isArray(a5)) {\n length = a5.length;\n if (length != b4.length)\n return false;\n for (i3 = length; i3-- !== 0; )\n if (!equal2(a5[i3], b4[i3]))\n return false;\n return true;\n }\n if (a5.constructor === RegExp)\n return a5.source === b4.source && a5.flags === b4.flags;\n if (a5.valueOf !== Object.prototype.valueOf)\n return a5.valueOf() === b4.valueOf();\n if (a5.toString !== Object.prototype.toString)\n return a5.toString() === b4.toString();\n keys3 = Object.keys(a5);\n length = keys3.length;\n if (length !== Object.keys(b4).length)\n return false;\n for (i3 = length; i3-- !== 0; )\n if (!Object.prototype.hasOwnProperty.call(b4, keys3[i3]))\n return false;\n for (i3 = length; i3-- !== 0; ) {\n var key = keys3[i3];\n if (!equal2(a5[key], b4[key]))\n return false;\n }\n return true;\n }\n return a5 !== a5 && b4 !== b4;\n };\n }\n});\n\n// node_modules/lodash.debounce/index.js\nvar require_lodash = __commonJS({\n \"node_modules/lodash.debounce/index.js\"(exports2, module2) {\n var FUNC_ERROR_TEXT4 = \"Expected a function\";\n var NAN2 = 0 / 0;\n var symbolTag4 = \"[object Symbol]\";\n var reTrim = /^\\s+|\\s+$/g;\n var reIsBadHex2 = /^[-+]0x[0-9a-f]+$/i;\n var reIsBinary2 = /^0b[01]+$/i;\n var reIsOctal2 = /^0o[0-7]+$/i;\n var freeParseInt2 = parseInt;\n var freeGlobal5 = typeof global == \"object\" && global && global.Object === Object && global;\n var freeSelf5 = typeof self == \"object\" && self && self.Object === Object && self;\n var root5 = freeGlobal5 || freeSelf5 || Function(\"return this\")();\n var objectProto5 = Object.prototype;\n var objectToString5 = objectProto5.toString;\n var nativeMax3 = Math.max;\n var nativeMin2 = Math.min;\n var now2 = function() {\n return root5.Date.now();\n };\n function debounce8(func, wait, options) {\n var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\n if (typeof func != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT4);\n }\n wait = toNumber2(wait) || 0;\n if (isObject7(options)) {\n leading = !!options.leading;\n maxing = \"maxWait\" in options;\n maxWait = maxing ? nativeMax3(toNumber2(options.maxWait) || 0, wait) : maxWait;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs, thisArg = lastThis;\n lastArgs = lastThis = void 0;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n lastInvokeTime = time;\n timerId = setTimeout(timerExpired, wait);\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, result2 = wait - timeSinceLastCall;\n return maxing ? nativeMin2(result2, maxWait - timeSinceLastInvoke) : result2;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\n return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now2();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = void 0;\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = void 0;\n return result;\n }\n function cancel() {\n if (timerId !== void 0) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = void 0;\n }\n function flush() {\n return timerId === void 0 ? result : trailingEdge(now2());\n }\n function debounced() {\n var time = now2(), isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === void 0) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === void 0) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n function isObject7(value) {\n var type = typeof value;\n return !!value && (type == \"object\" || type == \"function\");\n }\n function isObjectLike5(value) {\n return !!value && typeof value == \"object\";\n }\n function isSymbol3(value) {\n return typeof value == \"symbol\" || isObjectLike5(value) && objectToString5.call(value) == symbolTag4;\n }\n function toNumber2(value) {\n if (typeof value == \"number\") {\n return value;\n }\n if (isSymbol3(value)) {\n return NAN2;\n }\n if (isObject7(value)) {\n var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n value = isObject7(other) ? other + \"\" : other;\n }\n if (typeof value != \"string\") {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, \"\");\n var isBinary = reIsBinary2.test(value);\n return isBinary || reIsOctal2.test(value) ? freeParseInt2(value.slice(2), isBinary ? 2 : 8) : reIsBadHex2.test(value) ? NAN2 : +value;\n }\n module2.exports = debounce8;\n }\n});\n\n// node_modules/lodash.throttle/index.js\nvar require_lodash2 = __commonJS({\n \"node_modules/lodash.throttle/index.js\"(exports2, module2) {\n var FUNC_ERROR_TEXT4 = \"Expected a function\";\n var NAN2 = 0 / 0;\n var symbolTag4 = \"[object Symbol]\";\n var reTrim = /^\\s+|\\s+$/g;\n var reIsBadHex2 = /^[-+]0x[0-9a-f]+$/i;\n var reIsBinary2 = /^0b[01]+$/i;\n var reIsOctal2 = /^0o[0-7]+$/i;\n var freeParseInt2 = parseInt;\n var freeGlobal5 = typeof global == \"object\" && global && global.Object === Object && global;\n var freeSelf5 = typeof self == \"object\" && self && self.Object === Object && self;\n var root5 = freeGlobal5 || freeSelf5 || Function(\"return this\")();\n var objectProto5 = Object.prototype;\n var objectToString5 = objectProto5.toString;\n var nativeMax3 = Math.max;\n var nativeMin2 = Math.min;\n var now2 = function() {\n return root5.Date.now();\n };\n function debounce8(func, wait, options) {\n var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\n if (typeof func != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT4);\n }\n wait = toNumber2(wait) || 0;\n if (isObject7(options)) {\n leading = !!options.leading;\n maxing = \"maxWait\" in options;\n maxWait = maxing ? nativeMax3(toNumber2(options.maxWait) || 0, wait) : maxWait;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs, thisArg = lastThis;\n lastArgs = lastThis = void 0;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n lastInvokeTime = time;\n timerId = setTimeout(timerExpired, wait);\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, result2 = wait - timeSinceLastCall;\n return maxing ? nativeMin2(result2, maxWait - timeSinceLastInvoke) : result2;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\n return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now2();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = void 0;\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = void 0;\n return result;\n }\n function cancel() {\n if (timerId !== void 0) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = void 0;\n }\n function flush() {\n return timerId === void 0 ? result : trailingEdge(now2());\n }\n function debounced() {\n var time = now2(), isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === void 0) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === void 0) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n function throttle3(func, wait, options) {\n var leading = true, trailing = true;\n if (typeof func != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT4);\n }\n if (isObject7(options)) {\n leading = \"leading\" in options ? !!options.leading : leading;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n return debounce8(func, wait, {\n \"leading\": leading,\n \"maxWait\": wait,\n \"trailing\": trailing\n });\n }\n function isObject7(value) {\n var type = typeof value;\n return !!value && (type == \"object\" || type == \"function\");\n }\n function isObjectLike5(value) {\n return !!value && typeof value == \"object\";\n }\n function isSymbol3(value) {\n return typeof value == \"symbol\" || isObjectLike5(value) && objectToString5.call(value) == symbolTag4;\n }\n function toNumber2(value) {\n if (typeof value == \"number\") {\n return value;\n }\n if (isSymbol3(value)) {\n return NAN2;\n }\n if (isObject7(value)) {\n var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n value = isObject7(other) ? other + \"\" : other;\n }\n if (typeof value != \"string\") {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, \"\");\n var isBinary = reIsBinary2.test(value);\n return isBinary || reIsOctal2.test(value) ? freeParseInt2(value.slice(2), isBinary ? 2 : 8) : reIsBadHex2.test(value) ? NAN2 : +value;\n }\n module2.exports = throttle3;\n }\n});\n\n// node_modules/lodash/isArray.js\nvar require_isArray = __commonJS({\n \"node_modules/lodash/isArray.js\"(exports2, module2) {\n var isArray8 = Array.isArray;\n module2.exports = isArray8;\n }\n});\n\n// node_modules/lodash/_isKey.js\nvar require_isKey = __commonJS({\n \"node_modules/lodash/_isKey.js\"(exports2, module2) {\n var isArray8 = require_isArray();\n var isSymbol3 = require_isSymbol();\n var reIsDeepProp2 = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/;\n var reIsPlainProp2 = /^\\w*$/;\n function isKey2(value, object) {\n if (isArray8(value)) {\n return false;\n }\n var type = typeof value;\n if (type == \"number\" || type == \"symbol\" || type == \"boolean\" || value == null || isSymbol3(value)) {\n return true;\n }\n return reIsPlainProp2.test(value) || !reIsDeepProp2.test(value) || object != null && value in Object(object);\n }\n module2.exports = isKey2;\n }\n});\n\n// node_modules/lodash/isFunction.js\nvar require_isFunction = __commonJS({\n \"node_modules/lodash/isFunction.js\"(exports2, module2) {\n var baseGetTag5 = require_baseGetTag();\n var isObject7 = require_isObject();\n var asyncTag4 = \"[object AsyncFunction]\";\n var funcTag4 = \"[object Function]\";\n var genTag4 = \"[object GeneratorFunction]\";\n var proxyTag4 = \"[object Proxy]\";\n function isFunction4(value) {\n if (!isObject7(value)) {\n return false;\n }\n var tag = baseGetTag5(value);\n return tag == funcTag4 || tag == genTag4 || tag == asyncTag4 || tag == proxyTag4;\n }\n module2.exports = isFunction4;\n }\n});\n\n// node_modules/lodash/_coreJsData.js\nvar require_coreJsData = __commonJS({\n \"node_modules/lodash/_coreJsData.js\"(exports2, module2) {\n var root5 = require_root();\n var coreJsData4 = root5[\"__core-js_shared__\"];\n module2.exports = coreJsData4;\n }\n});\n\n// node_modules/lodash/_isMasked.js\nvar require_isMasked = __commonJS({\n \"node_modules/lodash/_isMasked.js\"(exports2, module2) {\n var coreJsData4 = require_coreJsData();\n var maskSrcKey4 = function() {\n var uid = /[^.]+$/.exec(coreJsData4 && coreJsData4.keys && coreJsData4.keys.IE_PROTO || \"\");\n return uid ? \"Symbol(src)_1.\" + uid : \"\";\n }();\n function isMasked4(func) {\n return !!maskSrcKey4 && maskSrcKey4 in func;\n }\n module2.exports = isMasked4;\n }\n});\n\n// node_modules/lodash/_toSource.js\nvar require_toSource = __commonJS({\n \"node_modules/lodash/_toSource.js\"(exports2, module2) {\n var funcProto4 = Function.prototype;\n var funcToString4 = funcProto4.toString;\n function toSource4(func) {\n if (func != null) {\n try {\n return funcToString4.call(func);\n } catch (e2) {\n }\n try {\n return func + \"\";\n } catch (e2) {\n }\n }\n return \"\";\n }\n module2.exports = toSource4;\n }\n});\n\n// node_modules/lodash/_baseIsNative.js\nvar require_baseIsNative = __commonJS({\n \"node_modules/lodash/_baseIsNative.js\"(exports2, module2) {\n var isFunction4 = require_isFunction();\n var isMasked4 = require_isMasked();\n var isObject7 = require_isObject();\n var toSource4 = require_toSource();\n var reRegExpChar4 = /[\\\\^$.*+?()[\\]{}|]/g;\n var reIsHostCtor4 = /^\\[object .+?Constructor\\]$/;\n var funcProto4 = Function.prototype;\n var objectProto5 = Object.prototype;\n var funcToString4 = funcProto4.toString;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n var reIsNative4 = RegExp(\"^\" + funcToString4.call(hasOwnProperty6).replace(reRegExpChar4, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\");\n function baseIsNative4(value) {\n if (!isObject7(value) || isMasked4(value)) {\n return false;\n }\n var pattern = isFunction4(value) ? reIsNative4 : reIsHostCtor4;\n return pattern.test(toSource4(value));\n }\n module2.exports = baseIsNative4;\n }\n});\n\n// node_modules/lodash/_getValue.js\nvar require_getValue = __commonJS({\n \"node_modules/lodash/_getValue.js\"(exports2, module2) {\n function getValue4(object, key) {\n return object == null ? void 0 : object[key];\n }\n module2.exports = getValue4;\n }\n});\n\n// node_modules/lodash/_getNative.js\nvar require_getNative = __commonJS({\n \"node_modules/lodash/_getNative.js\"(exports2, module2) {\n var baseIsNative4 = require_baseIsNative();\n var getValue4 = require_getValue();\n function getNative4(object, key) {\n var value = getValue4(object, key);\n return baseIsNative4(value) ? value : void 0;\n }\n module2.exports = getNative4;\n }\n});\n\n// node_modules/lodash/_nativeCreate.js\nvar require_nativeCreate = __commonJS({\n \"node_modules/lodash/_nativeCreate.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var nativeCreate4 = getNative4(Object, \"create\");\n module2.exports = nativeCreate4;\n }\n});\n\n// node_modules/lodash/_hashClear.js\nvar require_hashClear = __commonJS({\n \"node_modules/lodash/_hashClear.js\"(exports2, module2) {\n var nativeCreate4 = require_nativeCreate();\n function hashClear4() {\n this.__data__ = nativeCreate4 ? nativeCreate4(null) : {};\n this.size = 0;\n }\n module2.exports = hashClear4;\n }\n});\n\n// node_modules/lodash/_hashDelete.js\nvar require_hashDelete = __commonJS({\n \"node_modules/lodash/_hashDelete.js\"(exports2, module2) {\n function hashDelete4(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n module2.exports = hashDelete4;\n }\n});\n\n// node_modules/lodash/_hashGet.js\nvar require_hashGet = __commonJS({\n \"node_modules/lodash/_hashGet.js\"(exports2, module2) {\n var nativeCreate4 = require_nativeCreate();\n var HASH_UNDEFINED4 = \"__lodash_hash_undefined__\";\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function hashGet4(key) {\n var data = this.__data__;\n if (nativeCreate4) {\n var result = data[key];\n return result === HASH_UNDEFINED4 ? void 0 : result;\n }\n return hasOwnProperty6.call(data, key) ? data[key] : void 0;\n }\n module2.exports = hashGet4;\n }\n});\n\n// node_modules/lodash/_hashHas.js\nvar require_hashHas = __commonJS({\n \"node_modules/lodash/_hashHas.js\"(exports2, module2) {\n var nativeCreate4 = require_nativeCreate();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function hashHas4(key) {\n var data = this.__data__;\n return nativeCreate4 ? data[key] !== void 0 : hasOwnProperty6.call(data, key);\n }\n module2.exports = hashHas4;\n }\n});\n\n// node_modules/lodash/_hashSet.js\nvar require_hashSet = __commonJS({\n \"node_modules/lodash/_hashSet.js\"(exports2, module2) {\n var nativeCreate4 = require_nativeCreate();\n var HASH_UNDEFINED4 = \"__lodash_hash_undefined__\";\n function hashSet4(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate4 && value === void 0 ? HASH_UNDEFINED4 : value;\n return this;\n }\n module2.exports = hashSet4;\n }\n});\n\n// node_modules/lodash/_Hash.js\nvar require_Hash = __commonJS({\n \"node_modules/lodash/_Hash.js\"(exports2, module2) {\n var hashClear4 = require_hashClear();\n var hashDelete4 = require_hashDelete();\n var hashGet4 = require_hashGet();\n var hashHas4 = require_hashHas();\n var hashSet4 = require_hashSet();\n function Hash4(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n }\n Hash4.prototype.clear = hashClear4;\n Hash4.prototype[\"delete\"] = hashDelete4;\n Hash4.prototype.get = hashGet4;\n Hash4.prototype.has = hashHas4;\n Hash4.prototype.set = hashSet4;\n module2.exports = Hash4;\n }\n});\n\n// node_modules/lodash/_listCacheClear.js\nvar require_listCacheClear = __commonJS({\n \"node_modules/lodash/_listCacheClear.js\"(exports2, module2) {\n function listCacheClear4() {\n this.__data__ = [];\n this.size = 0;\n }\n module2.exports = listCacheClear4;\n }\n});\n\n// node_modules/lodash/eq.js\nvar require_eq = __commonJS({\n \"node_modules/lodash/eq.js\"(exports2, module2) {\n function eq4(value, other) {\n return value === other || value !== value && other !== other;\n }\n module2.exports = eq4;\n }\n});\n\n// node_modules/lodash/_assocIndexOf.js\nvar require_assocIndexOf = __commonJS({\n \"node_modules/lodash/_assocIndexOf.js\"(exports2, module2) {\n var eq4 = require_eq();\n function assocIndexOf4(array, key) {\n var length = array.length;\n while (length--) {\n if (eq4(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n module2.exports = assocIndexOf4;\n }\n});\n\n// node_modules/lodash/_listCacheDelete.js\nvar require_listCacheDelete = __commonJS({\n \"node_modules/lodash/_listCacheDelete.js\"(exports2, module2) {\n var assocIndexOf4 = require_assocIndexOf();\n var arrayProto4 = Array.prototype;\n var splice4 = arrayProto4.splice;\n function listCacheDelete4(key) {\n var data = this.__data__, index7 = assocIndexOf4(data, key);\n if (index7 < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index7 == lastIndex) {\n data.pop();\n } else {\n splice4.call(data, index7, 1);\n }\n --this.size;\n return true;\n }\n module2.exports = listCacheDelete4;\n }\n});\n\n// node_modules/lodash/_listCacheGet.js\nvar require_listCacheGet = __commonJS({\n \"node_modules/lodash/_listCacheGet.js\"(exports2, module2) {\n var assocIndexOf4 = require_assocIndexOf();\n function listCacheGet4(key) {\n var data = this.__data__, index7 = assocIndexOf4(data, key);\n return index7 < 0 ? void 0 : data[index7][1];\n }\n module2.exports = listCacheGet4;\n }\n});\n\n// node_modules/lodash/_listCacheHas.js\nvar require_listCacheHas = __commonJS({\n \"node_modules/lodash/_listCacheHas.js\"(exports2, module2) {\n var assocIndexOf4 = require_assocIndexOf();\n function listCacheHas4(key) {\n return assocIndexOf4(this.__data__, key) > -1;\n }\n module2.exports = listCacheHas4;\n }\n});\n\n// node_modules/lodash/_listCacheSet.js\nvar require_listCacheSet = __commonJS({\n \"node_modules/lodash/_listCacheSet.js\"(exports2, module2) {\n var assocIndexOf4 = require_assocIndexOf();\n function listCacheSet4(key, value) {\n var data = this.__data__, index7 = assocIndexOf4(data, key);\n if (index7 < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index7][1] = value;\n }\n return this;\n }\n module2.exports = listCacheSet4;\n }\n});\n\n// node_modules/lodash/_ListCache.js\nvar require_ListCache = __commonJS({\n \"node_modules/lodash/_ListCache.js\"(exports2, module2) {\n var listCacheClear4 = require_listCacheClear();\n var listCacheDelete4 = require_listCacheDelete();\n var listCacheGet4 = require_listCacheGet();\n var listCacheHas4 = require_listCacheHas();\n var listCacheSet4 = require_listCacheSet();\n function ListCache4(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n }\n ListCache4.prototype.clear = listCacheClear4;\n ListCache4.prototype[\"delete\"] = listCacheDelete4;\n ListCache4.prototype.get = listCacheGet4;\n ListCache4.prototype.has = listCacheHas4;\n ListCache4.prototype.set = listCacheSet4;\n module2.exports = ListCache4;\n }\n});\n\n// node_modules/lodash/_Map.js\nvar require_Map = __commonJS({\n \"node_modules/lodash/_Map.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var root5 = require_root();\n var Map5 = getNative4(root5, \"Map\");\n module2.exports = Map5;\n }\n});\n\n// node_modules/lodash/_mapCacheClear.js\nvar require_mapCacheClear = __commonJS({\n \"node_modules/lodash/_mapCacheClear.js\"(exports2, module2) {\n var Hash4 = require_Hash();\n var ListCache4 = require_ListCache();\n var Map5 = require_Map();\n function mapCacheClear4() {\n this.size = 0;\n this.__data__ = {\n \"hash\": new Hash4(),\n \"map\": new (Map5 || ListCache4)(),\n \"string\": new Hash4()\n };\n }\n module2.exports = mapCacheClear4;\n }\n});\n\n// node_modules/lodash/_isKeyable.js\nvar require_isKeyable = __commonJS({\n \"node_modules/lodash/_isKeyable.js\"(exports2, module2) {\n function isKeyable4(value) {\n var type = typeof value;\n return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n }\n module2.exports = isKeyable4;\n }\n});\n\n// node_modules/lodash/_getMapData.js\nvar require_getMapData = __commonJS({\n \"node_modules/lodash/_getMapData.js\"(exports2, module2) {\n var isKeyable4 = require_isKeyable();\n function getMapData4(map2, key) {\n var data = map2.__data__;\n return isKeyable4(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n }\n module2.exports = getMapData4;\n }\n});\n\n// node_modules/lodash/_mapCacheDelete.js\nvar require_mapCacheDelete = __commonJS({\n \"node_modules/lodash/_mapCacheDelete.js\"(exports2, module2) {\n var getMapData4 = require_getMapData();\n function mapCacheDelete4(key) {\n var result = getMapData4(this, key)[\"delete\"](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n module2.exports = mapCacheDelete4;\n }\n});\n\n// node_modules/lodash/_mapCacheGet.js\nvar require_mapCacheGet = __commonJS({\n \"node_modules/lodash/_mapCacheGet.js\"(exports2, module2) {\n var getMapData4 = require_getMapData();\n function mapCacheGet4(key) {\n return getMapData4(this, key).get(key);\n }\n module2.exports = mapCacheGet4;\n }\n});\n\n// node_modules/lodash/_mapCacheHas.js\nvar require_mapCacheHas = __commonJS({\n \"node_modules/lodash/_mapCacheHas.js\"(exports2, module2) {\n var getMapData4 = require_getMapData();\n function mapCacheHas4(key) {\n return getMapData4(this, key).has(key);\n }\n module2.exports = mapCacheHas4;\n }\n});\n\n// node_modules/lodash/_mapCacheSet.js\nvar require_mapCacheSet = __commonJS({\n \"node_modules/lodash/_mapCacheSet.js\"(exports2, module2) {\n var getMapData4 = require_getMapData();\n function mapCacheSet4(key, value) {\n var data = getMapData4(this, key), size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n module2.exports = mapCacheSet4;\n }\n});\n\n// node_modules/lodash/_MapCache.js\nvar require_MapCache = __commonJS({\n \"node_modules/lodash/_MapCache.js\"(exports2, module2) {\n var mapCacheClear4 = require_mapCacheClear();\n var mapCacheDelete4 = require_mapCacheDelete();\n var mapCacheGet4 = require_mapCacheGet();\n var mapCacheHas4 = require_mapCacheHas();\n var mapCacheSet4 = require_mapCacheSet();\n function MapCache4(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n }\n MapCache4.prototype.clear = mapCacheClear4;\n MapCache4.prototype[\"delete\"] = mapCacheDelete4;\n MapCache4.prototype.get = mapCacheGet4;\n MapCache4.prototype.has = mapCacheHas4;\n MapCache4.prototype.set = mapCacheSet4;\n module2.exports = MapCache4;\n }\n});\n\n// node_modules/lodash/memoize.js\nvar require_memoize = __commonJS({\n \"node_modules/lodash/memoize.js\"(exports2, module2) {\n var MapCache4 = require_MapCache();\n var FUNC_ERROR_TEXT4 = \"Expected a function\";\n function memoize6(func, resolver) {\n if (typeof func != \"function\" || resolver != null && typeof resolver != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT4);\n }\n var memoized = function() {\n var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize6.Cache || MapCache4)();\n return memoized;\n }\n memoize6.Cache = MapCache4;\n module2.exports = memoize6;\n }\n});\n\n// node_modules/lodash/_memoizeCapped.js\nvar require_memoizeCapped = __commonJS({\n \"node_modules/lodash/_memoizeCapped.js\"(exports2, module2) {\n var memoize6 = require_memoize();\n var MAX_MEMOIZE_SIZE3 = 500;\n function memoizeCapped3(func) {\n var result = memoize6(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE3) {\n cache.clear();\n }\n return key;\n });\n var cache = result.cache;\n return result;\n }\n module2.exports = memoizeCapped3;\n }\n});\n\n// node_modules/lodash/_stringToPath.js\nvar require_stringToPath = __commonJS({\n \"node_modules/lodash/_stringToPath.js\"(exports2, module2) {\n var memoizeCapped3 = require_memoizeCapped();\n var rePropName3 = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n var reEscapeChar3 = /\\\\(\\\\)?/g;\n var stringToPath3 = memoizeCapped3(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46) {\n result.push(\"\");\n }\n string.replace(rePropName3, function(match2, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar3, \"$1\") : number || match2);\n });\n return result;\n });\n module2.exports = stringToPath3;\n }\n});\n\n// node_modules/lodash/_arrayMap.js\nvar require_arrayMap = __commonJS({\n \"node_modules/lodash/_arrayMap.js\"(exports2, module2) {\n function arrayMap2(array, iteratee) {\n var index7 = -1, length = array == null ? 0 : array.length, result = Array(length);\n while (++index7 < length) {\n result[index7] = iteratee(array[index7], index7, array);\n }\n return result;\n }\n module2.exports = arrayMap2;\n }\n});\n\n// node_modules/lodash/_baseToString.js\nvar require_baseToString = __commonJS({\n \"node_modules/lodash/_baseToString.js\"(exports2, module2) {\n var Symbol5 = require_Symbol();\n var arrayMap2 = require_arrayMap();\n var isArray8 = require_isArray();\n var isSymbol3 = require_isSymbol();\n var INFINITY3 = 1 / 0;\n var symbolProto4 = Symbol5 ? Symbol5.prototype : void 0;\n var symbolToString3 = symbolProto4 ? symbolProto4.toString : void 0;\n function baseToString2(value) {\n if (typeof value == \"string\") {\n return value;\n }\n if (isArray8(value)) {\n return arrayMap2(value, baseToString2) + \"\";\n }\n if (isSymbol3(value)) {\n return symbolToString3 ? symbolToString3.call(value) : \"\";\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY3 ? \"-0\" : result;\n }\n module2.exports = baseToString2;\n }\n});\n\n// node_modules/lodash/toString.js\nvar require_toString = __commonJS({\n \"node_modules/lodash/toString.js\"(exports2, module2) {\n var baseToString2 = require_baseToString();\n function toString2(value) {\n return value == null ? \"\" : baseToString2(value);\n }\n module2.exports = toString2;\n }\n});\n\n// node_modules/lodash/_castPath.js\nvar require_castPath = __commonJS({\n \"node_modules/lodash/_castPath.js\"(exports2, module2) {\n var isArray8 = require_isArray();\n var isKey2 = require_isKey();\n var stringToPath3 = require_stringToPath();\n var toString2 = require_toString();\n function castPath2(value, object) {\n if (isArray8(value)) {\n return value;\n }\n return isKey2(value, object) ? [value] : stringToPath3(toString2(value));\n }\n module2.exports = castPath2;\n }\n});\n\n// node_modules/lodash/_toKey.js\nvar require_toKey = __commonJS({\n \"node_modules/lodash/_toKey.js\"(exports2, module2) {\n var isSymbol3 = require_isSymbol();\n var INFINITY3 = 1 / 0;\n function toKey2(value) {\n if (typeof value == \"string\" || isSymbol3(value)) {\n return value;\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY3 ? \"-0\" : result;\n }\n module2.exports = toKey2;\n }\n});\n\n// node_modules/lodash/_baseGet.js\nvar require_baseGet = __commonJS({\n \"node_modules/lodash/_baseGet.js\"(exports2, module2) {\n var castPath2 = require_castPath();\n var toKey2 = require_toKey();\n function baseGet2(object, path) {\n path = castPath2(path, object);\n var index7 = 0, length = path.length;\n while (object != null && index7 < length) {\n object = object[toKey2(path[index7++])];\n }\n return index7 && index7 == length ? object : void 0;\n }\n module2.exports = baseGet2;\n }\n});\n\n// node_modules/lodash/_defineProperty.js\nvar require_defineProperty = __commonJS({\n \"node_modules/lodash/_defineProperty.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var defineProperty5 = function() {\n try {\n var func = getNative4(Object, \"defineProperty\");\n func({}, \"\", {});\n return func;\n } catch (e2) {\n }\n }();\n module2.exports = defineProperty5;\n }\n});\n\n// node_modules/lodash/_baseAssignValue.js\nvar require_baseAssignValue = __commonJS({\n \"node_modules/lodash/_baseAssignValue.js\"(exports2, module2) {\n var defineProperty5 = require_defineProperty();\n function baseAssignValue3(object, key, value) {\n if (key == \"__proto__\" && defineProperty5) {\n defineProperty5(object, key, {\n \"configurable\": true,\n \"enumerable\": true,\n \"value\": value,\n \"writable\": true\n });\n } else {\n object[key] = value;\n }\n }\n module2.exports = baseAssignValue3;\n }\n});\n\n// node_modules/lodash/_assignValue.js\nvar require_assignValue = __commonJS({\n \"node_modules/lodash/_assignValue.js\"(exports2, module2) {\n var baseAssignValue3 = require_baseAssignValue();\n var eq4 = require_eq();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function assignValue3(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty6.call(object, key) && eq4(objValue, value)) || value === void 0 && !(key in object)) {\n baseAssignValue3(object, key, value);\n }\n }\n module2.exports = assignValue3;\n }\n});\n\n// node_modules/lodash/_isIndex.js\nvar require_isIndex = __commonJS({\n \"node_modules/lodash/_isIndex.js\"(exports2, module2) {\n var MAX_SAFE_INTEGER4 = 9007199254740991;\n var reIsUint3 = /^(?:0|[1-9]\\d*)$/;\n function isIndex3(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER4 : length;\n return !!length && (type == \"number\" || type != \"symbol\" && reIsUint3.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n }\n module2.exports = isIndex3;\n }\n});\n\n// node_modules/lodash/_baseSet.js\nvar require_baseSet = __commonJS({\n \"node_modules/lodash/_baseSet.js\"(exports2, module2) {\n var assignValue3 = require_assignValue();\n var castPath2 = require_castPath();\n var isIndex3 = require_isIndex();\n var isObject7 = require_isObject();\n var toKey2 = require_toKey();\n function baseSet(object, path, value, customizer) {\n if (!isObject7(object)) {\n return object;\n }\n path = castPath2(path, object);\n var index7 = -1, length = path.length, lastIndex = length - 1, nested = object;\n while (nested != null && ++index7 < length) {\n var key = toKey2(path[index7]), newValue = value;\n if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") {\n return object;\n }\n if (index7 != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : void 0;\n if (newValue === void 0) {\n newValue = isObject7(objValue) ? objValue : isIndex3(path[index7 + 1]) ? [] : {};\n }\n }\n assignValue3(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n module2.exports = baseSet;\n }\n});\n\n// node_modules/lodash/_basePickBy.js\nvar require_basePickBy = __commonJS({\n \"node_modules/lodash/_basePickBy.js\"(exports2, module2) {\n var baseGet2 = require_baseGet();\n var baseSet = require_baseSet();\n var castPath2 = require_castPath();\n function basePickBy(object, paths, predicate) {\n var index7 = -1, length = paths.length, result = {};\n while (++index7 < length) {\n var path = paths[index7], value = baseGet2(object, path);\n if (predicate(value, path)) {\n baseSet(result, castPath2(path, object), value);\n }\n }\n return result;\n }\n module2.exports = basePickBy;\n }\n});\n\n// node_modules/lodash/_baseHasIn.js\nvar require_baseHasIn = __commonJS({\n \"node_modules/lodash/_baseHasIn.js\"(exports2, module2) {\n function baseHasIn2(object, key) {\n return object != null && key in Object(object);\n }\n module2.exports = baseHasIn2;\n }\n});\n\n// node_modules/lodash/_baseIsArguments.js\nvar require_baseIsArguments = __commonJS({\n \"node_modules/lodash/_baseIsArguments.js\"(exports2, module2) {\n var baseGetTag5 = require_baseGetTag();\n var isObjectLike5 = require_isObjectLike();\n var argsTag3 = \"[object Arguments]\";\n function baseIsArguments4(value) {\n return isObjectLike5(value) && baseGetTag5(value) == argsTag3;\n }\n module2.exports = baseIsArguments4;\n }\n});\n\n// node_modules/lodash/isArguments.js\nvar require_isArguments = __commonJS({\n \"node_modules/lodash/isArguments.js\"(exports2, module2) {\n var baseIsArguments4 = require_baseIsArguments();\n var isObjectLike5 = require_isObjectLike();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n var propertyIsEnumerable4 = objectProto5.propertyIsEnumerable;\n var isArguments4 = baseIsArguments4(function() {\n return arguments;\n }()) ? baseIsArguments4 : function(value) {\n return isObjectLike5(value) && hasOwnProperty6.call(value, \"callee\") && !propertyIsEnumerable4.call(value, \"callee\");\n };\n module2.exports = isArguments4;\n }\n});\n\n// node_modules/lodash/isLength.js\nvar require_isLength = __commonJS({\n \"node_modules/lodash/isLength.js\"(exports2, module2) {\n var MAX_SAFE_INTEGER4 = 9007199254740991;\n function isLength4(value) {\n return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER4;\n }\n module2.exports = isLength4;\n }\n});\n\n// node_modules/lodash/_hasPath.js\nvar require_hasPath = __commonJS({\n \"node_modules/lodash/_hasPath.js\"(exports2, module2) {\n var castPath2 = require_castPath();\n var isArguments4 = require_isArguments();\n var isArray8 = require_isArray();\n var isIndex3 = require_isIndex();\n var isLength4 = require_isLength();\n var toKey2 = require_toKey();\n function hasPath2(object, path, hasFunc) {\n path = castPath2(path, object);\n var index7 = -1, length = path.length, result = false;\n while (++index7 < length) {\n var key = toKey2(path[index7]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index7 != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength4(length) && isIndex3(key, length) && (isArray8(object) || isArguments4(object));\n }\n module2.exports = hasPath2;\n }\n});\n\n// node_modules/lodash/hasIn.js\nvar require_hasIn = __commonJS({\n \"node_modules/lodash/hasIn.js\"(exports2, module2) {\n var baseHasIn2 = require_baseHasIn();\n var hasPath2 = require_hasPath();\n function hasIn2(object, path) {\n return object != null && hasPath2(object, path, baseHasIn2);\n }\n module2.exports = hasIn2;\n }\n});\n\n// node_modules/lodash/_basePick.js\nvar require_basePick = __commonJS({\n \"node_modules/lodash/_basePick.js\"(exports2, module2) {\n var basePickBy = require_basePickBy();\n var hasIn2 = require_hasIn();\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn2(object, path);\n });\n }\n module2.exports = basePick;\n }\n});\n\n// node_modules/lodash/_arrayPush.js\nvar require_arrayPush = __commonJS({\n \"node_modules/lodash/_arrayPush.js\"(exports2, module2) {\n function arrayPush3(array, values2) {\n var index7 = -1, length = values2.length, offset3 = array.length;\n while (++index7 < length) {\n array[offset3 + index7] = values2[index7];\n }\n return array;\n }\n module2.exports = arrayPush3;\n }\n});\n\n// node_modules/lodash/_isFlattenable.js\nvar require_isFlattenable = __commonJS({\n \"node_modules/lodash/_isFlattenable.js\"(exports2, module2) {\n var Symbol5 = require_Symbol();\n var isArguments4 = require_isArguments();\n var isArray8 = require_isArray();\n var spreadableSymbol2 = Symbol5 ? Symbol5.isConcatSpreadable : void 0;\n function isFlattenable2(value) {\n return isArray8(value) || isArguments4(value) || !!(spreadableSymbol2 && value && value[spreadableSymbol2]);\n }\n module2.exports = isFlattenable2;\n }\n});\n\n// node_modules/lodash/_baseFlatten.js\nvar require_baseFlatten = __commonJS({\n \"node_modules/lodash/_baseFlatten.js\"(exports2, module2) {\n var arrayPush3 = require_arrayPush();\n var isFlattenable2 = require_isFlattenable();\n function baseFlatten2(array, depth, predicate, isStrict, result) {\n var index7 = -1, length = array.length;\n predicate || (predicate = isFlattenable2);\n result || (result = []);\n while (++index7 < length) {\n var value = array[index7];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n baseFlatten2(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush3(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n module2.exports = baseFlatten2;\n }\n});\n\n// node_modules/lodash/flatten.js\nvar require_flatten = __commonJS({\n \"node_modules/lodash/flatten.js\"(exports2, module2) {\n var baseFlatten2 = require_baseFlatten();\n function flatten2(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten2(array, 1) : [];\n }\n module2.exports = flatten2;\n }\n});\n\n// node_modules/lodash/_apply.js\nvar require_apply = __commonJS({\n \"node_modules/lodash/_apply.js\"(exports2, module2) {\n function apply2(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n module2.exports = apply2;\n }\n});\n\n// node_modules/lodash/_overRest.js\nvar require_overRest = __commonJS({\n \"node_modules/lodash/_overRest.js\"(exports2, module2) {\n var apply2 = require_apply();\n var nativeMax3 = Math.max;\n function overRest2(func, start3, transform) {\n start3 = nativeMax3(start3 === void 0 ? func.length - 1 : start3, 0);\n return function() {\n var args = arguments, index7 = -1, length = nativeMax3(args.length - start3, 0), array = Array(length);\n while (++index7 < length) {\n array[index7] = args[start3 + index7];\n }\n index7 = -1;\n var otherArgs = Array(start3 + 1);\n while (++index7 < start3) {\n otherArgs[index7] = args[index7];\n }\n otherArgs[start3] = transform(array);\n return apply2(func, this, otherArgs);\n };\n }\n module2.exports = overRest2;\n }\n});\n\n// node_modules/lodash/constant.js\nvar require_constant = __commonJS({\n \"node_modules/lodash/constant.js\"(exports2, module2) {\n function constant2(value) {\n return function() {\n return value;\n };\n }\n module2.exports = constant2;\n }\n});\n\n// node_modules/lodash/identity.js\nvar require_identity = __commonJS({\n \"node_modules/lodash/identity.js\"(exports2, module2) {\n function identity2(value) {\n return value;\n }\n module2.exports = identity2;\n }\n});\n\n// node_modules/lodash/_baseSetToString.js\nvar require_baseSetToString = __commonJS({\n \"node_modules/lodash/_baseSetToString.js\"(exports2, module2) {\n var constant2 = require_constant();\n var defineProperty5 = require_defineProperty();\n var identity2 = require_identity();\n var baseSetToString2 = !defineProperty5 ? identity2 : function(func, string) {\n return defineProperty5(func, \"toString\", {\n \"configurable\": true,\n \"enumerable\": false,\n \"value\": constant2(string),\n \"writable\": true\n });\n };\n module2.exports = baseSetToString2;\n }\n});\n\n// node_modules/lodash/_shortOut.js\nvar require_shortOut = __commonJS({\n \"node_modules/lodash/_shortOut.js\"(exports2, module2) {\n var HOT_COUNT2 = 800;\n var HOT_SPAN2 = 16;\n var nativeNow2 = Date.now;\n function shortOut2(func) {\n var count = 0, lastCalled = 0;\n return function() {\n var stamp = nativeNow2(), remaining = HOT_SPAN2 - (stamp - lastCalled);\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT2) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(void 0, arguments);\n };\n }\n module2.exports = shortOut2;\n }\n});\n\n// node_modules/lodash/_setToString.js\nvar require_setToString = __commonJS({\n \"node_modules/lodash/_setToString.js\"(exports2, module2) {\n var baseSetToString2 = require_baseSetToString();\n var shortOut2 = require_shortOut();\n var setToString2 = shortOut2(baseSetToString2);\n module2.exports = setToString2;\n }\n});\n\n// node_modules/lodash/_flatRest.js\nvar require_flatRest = __commonJS({\n \"node_modules/lodash/_flatRest.js\"(exports2, module2) {\n var flatten2 = require_flatten();\n var overRest2 = require_overRest();\n var setToString2 = require_setToString();\n function flatRest2(func) {\n return setToString2(overRest2(func, void 0, flatten2), func + \"\");\n }\n module2.exports = flatRest2;\n }\n});\n\n// node_modules/lodash/pick.js\nvar require_pick = __commonJS({\n \"node_modules/lodash/pick.js\"(exports2, module2) {\n var basePick = require_basePick();\n var flatRest2 = require_flatRest();\n var pick5 = flatRest2(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n module2.exports = pick5;\n }\n});\n\n// node_modules/html-tags/html-tags.json\nvar require_html_tags = __commonJS({\n \"node_modules/html-tags/html-tags.json\"(exports2, module2) {\n module2.exports = [\n \"a\",\n \"abbr\",\n \"address\",\n \"area\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"base\",\n \"bdi\",\n \"bdo\",\n \"blockquote\",\n \"body\",\n \"br\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"embed\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"head\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"html\",\n \"i\",\n \"iframe\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"label\",\n \"legend\",\n \"li\",\n \"link\",\n \"main\",\n \"map\",\n \"mark\",\n \"math\",\n \"menu\",\n \"menuitem\",\n \"meta\",\n \"meter\",\n \"nav\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"param\",\n \"picture\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rb\",\n \"rp\",\n \"rt\",\n \"rtc\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"slot\",\n \"small\",\n \"source\",\n \"span\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"svg\",\n \"table\",\n \"tbody\",\n \"td\",\n \"template\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"track\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n \"wbr\"\n ];\n }\n});\n\n// node_modules/html-tags/index.js\nvar require_html_tags2 = __commonJS({\n \"node_modules/html-tags/index.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = require_html_tags();\n }\n});\n\n// node_modules/lodash/compact.js\nvar require_compact = __commonJS({\n \"node_modules/lodash/compact.js\"(exports2, module2) {\n function compact2(array) {\n var index7 = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n while (++index7 < length) {\n var value = array[index7];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n module2.exports = compact2;\n }\n});\n\n// node_modules/lodash/_stackClear.js\nvar require_stackClear = __commonJS({\n \"node_modules/lodash/_stackClear.js\"(exports2, module2) {\n var ListCache4 = require_ListCache();\n function stackClear4() {\n this.__data__ = new ListCache4();\n this.size = 0;\n }\n module2.exports = stackClear4;\n }\n});\n\n// node_modules/lodash/_stackDelete.js\nvar require_stackDelete = __commonJS({\n \"node_modules/lodash/_stackDelete.js\"(exports2, module2) {\n function stackDelete4(key) {\n var data = this.__data__, result = data[\"delete\"](key);\n this.size = data.size;\n return result;\n }\n module2.exports = stackDelete4;\n }\n});\n\n// node_modules/lodash/_stackGet.js\nvar require_stackGet = __commonJS({\n \"node_modules/lodash/_stackGet.js\"(exports2, module2) {\n function stackGet4(key) {\n return this.__data__.get(key);\n }\n module2.exports = stackGet4;\n }\n});\n\n// node_modules/lodash/_stackHas.js\nvar require_stackHas = __commonJS({\n \"node_modules/lodash/_stackHas.js\"(exports2, module2) {\n function stackHas4(key) {\n return this.__data__.has(key);\n }\n module2.exports = stackHas4;\n }\n});\n\n// node_modules/lodash/_stackSet.js\nvar require_stackSet = __commonJS({\n \"node_modules/lodash/_stackSet.js\"(exports2, module2) {\n var ListCache4 = require_ListCache();\n var Map5 = require_Map();\n var MapCache4 = require_MapCache();\n var LARGE_ARRAY_SIZE4 = 200;\n function stackSet4(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache4) {\n var pairs = data.__data__;\n if (!Map5 || pairs.length < LARGE_ARRAY_SIZE4 - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache4(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n module2.exports = stackSet4;\n }\n});\n\n// node_modules/lodash/_Stack.js\nvar require_Stack = __commonJS({\n \"node_modules/lodash/_Stack.js\"(exports2, module2) {\n var ListCache4 = require_ListCache();\n var stackClear4 = require_stackClear();\n var stackDelete4 = require_stackDelete();\n var stackGet4 = require_stackGet();\n var stackHas4 = require_stackHas();\n var stackSet4 = require_stackSet();\n function Stack4(entries) {\n var data = this.__data__ = new ListCache4(entries);\n this.size = data.size;\n }\n Stack4.prototype.clear = stackClear4;\n Stack4.prototype[\"delete\"] = stackDelete4;\n Stack4.prototype.get = stackGet4;\n Stack4.prototype.has = stackHas4;\n Stack4.prototype.set = stackSet4;\n module2.exports = Stack4;\n }\n});\n\n// node_modules/lodash/_arrayEach.js\nvar require_arrayEach = __commonJS({\n \"node_modules/lodash/_arrayEach.js\"(exports2, module2) {\n function arrayEach3(array, iteratee) {\n var index7 = -1, length = array == null ? 0 : array.length;\n while (++index7 < length) {\n if (iteratee(array[index7], index7, array) === false) {\n break;\n }\n }\n return array;\n }\n module2.exports = arrayEach3;\n }\n});\n\n// node_modules/lodash/_copyObject.js\nvar require_copyObject = __commonJS({\n \"node_modules/lodash/_copyObject.js\"(exports2, module2) {\n var assignValue3 = require_assignValue();\n var baseAssignValue3 = require_baseAssignValue();\n function copyObject3(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index7 = -1, length = props.length;\n while (++index7 < length) {\n var key = props[index7];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;\n if (newValue === void 0) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue3(object, key, newValue);\n } else {\n assignValue3(object, key, newValue);\n }\n }\n return object;\n }\n module2.exports = copyObject3;\n }\n});\n\n// node_modules/lodash/_baseTimes.js\nvar require_baseTimes = __commonJS({\n \"node_modules/lodash/_baseTimes.js\"(exports2, module2) {\n function baseTimes3(n5, iteratee) {\n var index7 = -1, result = Array(n5);\n while (++index7 < n5) {\n result[index7] = iteratee(index7);\n }\n return result;\n }\n module2.exports = baseTimes3;\n }\n});\n\n// node_modules/lodash/stubFalse.js\nvar require_stubFalse = __commonJS({\n \"node_modules/lodash/stubFalse.js\"(exports2, module2) {\n function stubFalse4() {\n return false;\n }\n module2.exports = stubFalse4;\n }\n});\n\n// node_modules/lodash/isBuffer.js\nvar require_isBuffer = __commonJS({\n \"node_modules/lodash/isBuffer.js\"(exports2, module2) {\n var root5 = require_root();\n var stubFalse4 = require_stubFalse();\n var freeExports = typeof exports2 == \"object\" && exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && typeof module2 == \"object\" && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var Buffer2 = moduleExports ? root5.Buffer : void 0;\n var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;\n var isBuffer = nativeIsBuffer || stubFalse4;\n module2.exports = isBuffer;\n }\n});\n\n// node_modules/lodash/_baseIsTypedArray.js\nvar require_baseIsTypedArray = __commonJS({\n \"node_modules/lodash/_baseIsTypedArray.js\"(exports2, module2) {\n var baseGetTag5 = require_baseGetTag();\n var isLength4 = require_isLength();\n var isObjectLike5 = require_isObjectLike();\n var argsTag3 = \"[object Arguments]\";\n var arrayTag3 = \"[object Array]\";\n var boolTag3 = \"[object Boolean]\";\n var dateTag3 = \"[object Date]\";\n var errorTag3 = \"[object Error]\";\n var funcTag4 = \"[object Function]\";\n var mapTag4 = \"[object Map]\";\n var numberTag3 = \"[object Number]\";\n var objectTag3 = \"[object Object]\";\n var regexpTag3 = \"[object RegExp]\";\n var setTag4 = \"[object Set]\";\n var stringTag3 = \"[object String]\";\n var weakMapTag4 = \"[object WeakMap]\";\n var arrayBufferTag3 = \"[object ArrayBuffer]\";\n var dataViewTag4 = \"[object DataView]\";\n var float32Tag4 = \"[object Float32Array]\";\n var float64Tag4 = \"[object Float64Array]\";\n var int8Tag4 = \"[object Int8Array]\";\n var int16Tag4 = \"[object Int16Array]\";\n var int32Tag4 = \"[object Int32Array]\";\n var uint8Tag4 = \"[object Uint8Array]\";\n var uint8ClampedTag4 = \"[object Uint8ClampedArray]\";\n var uint16Tag4 = \"[object Uint16Array]\";\n var uint32Tag4 = \"[object Uint32Array]\";\n var typedArrayTags4 = {};\n typedArrayTags4[float32Tag4] = typedArrayTags4[float64Tag4] = typedArrayTags4[int8Tag4] = typedArrayTags4[int16Tag4] = typedArrayTags4[int32Tag4] = typedArrayTags4[uint8Tag4] = typedArrayTags4[uint8ClampedTag4] = typedArrayTags4[uint16Tag4] = typedArrayTags4[uint32Tag4] = true;\n typedArrayTags4[argsTag3] = typedArrayTags4[arrayTag3] = typedArrayTags4[arrayBufferTag3] = typedArrayTags4[boolTag3] = typedArrayTags4[dataViewTag4] = typedArrayTags4[dateTag3] = typedArrayTags4[errorTag3] = typedArrayTags4[funcTag4] = typedArrayTags4[mapTag4] = typedArrayTags4[numberTag3] = typedArrayTags4[objectTag3] = typedArrayTags4[regexpTag3] = typedArrayTags4[setTag4] = typedArrayTags4[stringTag3] = typedArrayTags4[weakMapTag4] = false;\n function baseIsTypedArray4(value) {\n return isObjectLike5(value) && isLength4(value.length) && !!typedArrayTags4[baseGetTag5(value)];\n }\n module2.exports = baseIsTypedArray4;\n }\n});\n\n// node_modules/lodash/_baseUnary.js\nvar require_baseUnary = __commonJS({\n \"node_modules/lodash/_baseUnary.js\"(exports2, module2) {\n function baseUnary4(func) {\n return function(value) {\n return func(value);\n };\n }\n module2.exports = baseUnary4;\n }\n});\n\n// node_modules/lodash/_nodeUtil.js\nvar require_nodeUtil = __commonJS({\n \"node_modules/lodash/_nodeUtil.js\"(exports2, module2) {\n var freeGlobal5 = require_freeGlobal();\n var freeExports = typeof exports2 == \"object\" && exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && typeof module2 == \"object\" && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var freeProcess = moduleExports && freeGlobal5.process;\n var nodeUtil = function() {\n try {\n var types = freeModule && freeModule.require && freeModule.require(\"util\").types;\n if (types) {\n return types;\n }\n return freeProcess && freeProcess.binding && freeProcess.binding(\"util\");\n } catch (e2) {\n }\n }();\n module2.exports = nodeUtil;\n }\n});\n\n// node_modules/lodash/isTypedArray.js\nvar require_isTypedArray = __commonJS({\n \"node_modules/lodash/isTypedArray.js\"(exports2, module2) {\n var baseIsTypedArray4 = require_baseIsTypedArray();\n var baseUnary4 = require_baseUnary();\n var nodeUtil = require_nodeUtil();\n var nodeIsTypedArray4 = nodeUtil && nodeUtil.isTypedArray;\n var isTypedArray4 = nodeIsTypedArray4 ? baseUnary4(nodeIsTypedArray4) : baseIsTypedArray4;\n module2.exports = isTypedArray4;\n }\n});\n\n// node_modules/lodash/_arrayLikeKeys.js\nvar require_arrayLikeKeys = __commonJS({\n \"node_modules/lodash/_arrayLikeKeys.js\"(exports2, module2) {\n var baseTimes3 = require_baseTimes();\n var isArguments4 = require_isArguments();\n var isArray8 = require_isArray();\n var isBuffer = require_isBuffer();\n var isIndex3 = require_isIndex();\n var isTypedArray4 = require_isTypedArray();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function arrayLikeKeys3(value, inherited) {\n var isArr = isArray8(value), isArg = !isArr && isArguments4(value), isBuff = !isArr && !isArg && isBuffer(value), isType4 = !isArr && !isArg && !isBuff && isTypedArray4(value), skipIndexes = isArr || isArg || isBuff || isType4, result = skipIndexes ? baseTimes3(value.length, String) : [], length = result.length;\n for (var key in value) {\n if ((inherited || hasOwnProperty6.call(value, key)) && !(skipIndexes && (key == \"length\" || isBuff && (key == \"offset\" || key == \"parent\") || isType4 && (key == \"buffer\" || key == \"byteLength\" || key == \"byteOffset\") || isIndex3(key, length)))) {\n result.push(key);\n }\n }\n return result;\n }\n module2.exports = arrayLikeKeys3;\n }\n});\n\n// node_modules/lodash/_isPrototype.js\nvar require_isPrototype = __commonJS({\n \"node_modules/lodash/_isPrototype.js\"(exports2, module2) {\n var objectProto5 = Object.prototype;\n function isPrototype3(value) {\n var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto5;\n return value === proto;\n }\n module2.exports = isPrototype3;\n }\n});\n\n// node_modules/lodash/_overArg.js\nvar require_overArg = __commonJS({\n \"node_modules/lodash/_overArg.js\"(exports2, module2) {\n function overArg4(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n module2.exports = overArg4;\n }\n});\n\n// node_modules/lodash/_nativeKeys.js\nvar require_nativeKeys = __commonJS({\n \"node_modules/lodash/_nativeKeys.js\"(exports2, module2) {\n var overArg4 = require_overArg();\n var nativeKeys4 = overArg4(Object.keys, Object);\n module2.exports = nativeKeys4;\n }\n});\n\n// node_modules/lodash/_baseKeys.js\nvar require_baseKeys = __commonJS({\n \"node_modules/lodash/_baseKeys.js\"(exports2, module2) {\n var isPrototype3 = require_isPrototype();\n var nativeKeys4 = require_nativeKeys();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function baseKeys3(object) {\n if (!isPrototype3(object)) {\n return nativeKeys4(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty6.call(object, key) && key != \"constructor\") {\n result.push(key);\n }\n }\n return result;\n }\n module2.exports = baseKeys3;\n }\n});\n\n// node_modules/lodash/isArrayLike.js\nvar require_isArrayLike = __commonJS({\n \"node_modules/lodash/isArrayLike.js\"(exports2, module2) {\n var isFunction4 = require_isFunction();\n var isLength4 = require_isLength();\n function isArrayLike3(value) {\n return value != null && isLength4(value.length) && !isFunction4(value);\n }\n module2.exports = isArrayLike3;\n }\n});\n\n// node_modules/lodash/keys.js\nvar require_keys = __commonJS({\n \"node_modules/lodash/keys.js\"(exports2, module2) {\n var arrayLikeKeys3 = require_arrayLikeKeys();\n var baseKeys3 = require_baseKeys();\n var isArrayLike3 = require_isArrayLike();\n function keys3(object) {\n return isArrayLike3(object) ? arrayLikeKeys3(object) : baseKeys3(object);\n }\n module2.exports = keys3;\n }\n});\n\n// node_modules/lodash/_baseAssign.js\nvar require_baseAssign = __commonJS({\n \"node_modules/lodash/_baseAssign.js\"(exports2, module2) {\n var copyObject3 = require_copyObject();\n var keys3 = require_keys();\n function baseAssign3(object, source) {\n return object && copyObject3(source, keys3(source), object);\n }\n module2.exports = baseAssign3;\n }\n});\n\n// node_modules/lodash/_nativeKeysIn.js\nvar require_nativeKeysIn = __commonJS({\n \"node_modules/lodash/_nativeKeysIn.js\"(exports2, module2) {\n function nativeKeysIn3(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n module2.exports = nativeKeysIn3;\n }\n});\n\n// node_modules/lodash/_baseKeysIn.js\nvar require_baseKeysIn = __commonJS({\n \"node_modules/lodash/_baseKeysIn.js\"(exports2, module2) {\n var isObject7 = require_isObject();\n var isPrototype3 = require_isPrototype();\n var nativeKeysIn3 = require_nativeKeysIn();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function baseKeysIn3(object) {\n if (!isObject7(object)) {\n return nativeKeysIn3(object);\n }\n var isProto = isPrototype3(object), result = [];\n for (var key in object) {\n if (!(key == \"constructor\" && (isProto || !hasOwnProperty6.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n module2.exports = baseKeysIn3;\n }\n});\n\n// node_modules/lodash/keysIn.js\nvar require_keysIn = __commonJS({\n \"node_modules/lodash/keysIn.js\"(exports2, module2) {\n var arrayLikeKeys3 = require_arrayLikeKeys();\n var baseKeysIn3 = require_baseKeysIn();\n var isArrayLike3 = require_isArrayLike();\n function keysIn3(object) {\n return isArrayLike3(object) ? arrayLikeKeys3(object, true) : baseKeysIn3(object);\n }\n module2.exports = keysIn3;\n }\n});\n\n// node_modules/lodash/_baseAssignIn.js\nvar require_baseAssignIn = __commonJS({\n \"node_modules/lodash/_baseAssignIn.js\"(exports2, module2) {\n var copyObject3 = require_copyObject();\n var keysIn3 = require_keysIn();\n function baseAssignIn3(object, source) {\n return object && copyObject3(source, keysIn3(source), object);\n }\n module2.exports = baseAssignIn3;\n }\n});\n\n// node_modules/lodash/_cloneBuffer.js\nvar require_cloneBuffer = __commonJS({\n \"node_modules/lodash/_cloneBuffer.js\"(exports2, module2) {\n var root5 = require_root();\n var freeExports = typeof exports2 == \"object\" && exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && typeof module2 == \"object\" && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var Buffer2 = moduleExports ? root5.Buffer : void 0;\n var allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n }\n module2.exports = cloneBuffer;\n }\n});\n\n// node_modules/lodash/_copyArray.js\nvar require_copyArray = __commonJS({\n \"node_modules/lodash/_copyArray.js\"(exports2, module2) {\n function copyArray3(source, array) {\n var index7 = -1, length = source.length;\n array || (array = Array(length));\n while (++index7 < length) {\n array[index7] = source[index7];\n }\n return array;\n }\n module2.exports = copyArray3;\n }\n});\n\n// node_modules/lodash/_arrayFilter.js\nvar require_arrayFilter = __commonJS({\n \"node_modules/lodash/_arrayFilter.js\"(exports2, module2) {\n function arrayFilter3(array, predicate) {\n var index7 = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n while (++index7 < length) {\n var value = array[index7];\n if (predicate(value, index7, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n module2.exports = arrayFilter3;\n }\n});\n\n// node_modules/lodash/stubArray.js\nvar require_stubArray = __commonJS({\n \"node_modules/lodash/stubArray.js\"(exports2, module2) {\n function stubArray3() {\n return [];\n }\n module2.exports = stubArray3;\n }\n});\n\n// node_modules/lodash/_getSymbols.js\nvar require_getSymbols = __commonJS({\n \"node_modules/lodash/_getSymbols.js\"(exports2, module2) {\n var arrayFilter3 = require_arrayFilter();\n var stubArray3 = require_stubArray();\n var objectProto5 = Object.prototype;\n var propertyIsEnumerable4 = objectProto5.propertyIsEnumerable;\n var nativeGetSymbols3 = Object.getOwnPropertySymbols;\n var getSymbols3 = !nativeGetSymbols3 ? stubArray3 : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter3(nativeGetSymbols3(object), function(symbol) {\n return propertyIsEnumerable4.call(object, symbol);\n });\n };\n module2.exports = getSymbols3;\n }\n});\n\n// node_modules/lodash/_copySymbols.js\nvar require_copySymbols = __commonJS({\n \"node_modules/lodash/_copySymbols.js\"(exports2, module2) {\n var copyObject3 = require_copyObject();\n var getSymbols3 = require_getSymbols();\n function copySymbols3(source, object) {\n return copyObject3(source, getSymbols3(source), object);\n }\n module2.exports = copySymbols3;\n }\n});\n\n// node_modules/lodash/_getPrototype.js\nvar require_getPrototype = __commonJS({\n \"node_modules/lodash/_getPrototype.js\"(exports2, module2) {\n var overArg4 = require_overArg();\n var getPrototype3 = overArg4(Object.getPrototypeOf, Object);\n module2.exports = getPrototype3;\n }\n});\n\n// node_modules/lodash/_getSymbolsIn.js\nvar require_getSymbolsIn = __commonJS({\n \"node_modules/lodash/_getSymbolsIn.js\"(exports2, module2) {\n var arrayPush3 = require_arrayPush();\n var getPrototype3 = require_getPrototype();\n var getSymbols3 = require_getSymbols();\n var stubArray3 = require_stubArray();\n var nativeGetSymbols3 = Object.getOwnPropertySymbols;\n var getSymbolsIn3 = !nativeGetSymbols3 ? stubArray3 : function(object) {\n var result = [];\n while (object) {\n arrayPush3(result, getSymbols3(object));\n object = getPrototype3(object);\n }\n return result;\n };\n module2.exports = getSymbolsIn3;\n }\n});\n\n// node_modules/lodash/_copySymbolsIn.js\nvar require_copySymbolsIn = __commonJS({\n \"node_modules/lodash/_copySymbolsIn.js\"(exports2, module2) {\n var copyObject3 = require_copyObject();\n var getSymbolsIn3 = require_getSymbolsIn();\n function copySymbolsIn3(source, object) {\n return copyObject3(source, getSymbolsIn3(source), object);\n }\n module2.exports = copySymbolsIn3;\n }\n});\n\n// node_modules/lodash/_baseGetAllKeys.js\nvar require_baseGetAllKeys = __commonJS({\n \"node_modules/lodash/_baseGetAllKeys.js\"(exports2, module2) {\n var arrayPush3 = require_arrayPush();\n var isArray8 = require_isArray();\n function baseGetAllKeys3(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray8(object) ? result : arrayPush3(result, symbolsFunc(object));\n }\n module2.exports = baseGetAllKeys3;\n }\n});\n\n// node_modules/lodash/_getAllKeys.js\nvar require_getAllKeys = __commonJS({\n \"node_modules/lodash/_getAllKeys.js\"(exports2, module2) {\n var baseGetAllKeys3 = require_baseGetAllKeys();\n var getSymbols3 = require_getSymbols();\n var keys3 = require_keys();\n function getAllKeys3(object) {\n return baseGetAllKeys3(object, keys3, getSymbols3);\n }\n module2.exports = getAllKeys3;\n }\n});\n\n// node_modules/lodash/_getAllKeysIn.js\nvar require_getAllKeysIn = __commonJS({\n \"node_modules/lodash/_getAllKeysIn.js\"(exports2, module2) {\n var baseGetAllKeys3 = require_baseGetAllKeys();\n var getSymbolsIn3 = require_getSymbolsIn();\n var keysIn3 = require_keysIn();\n function getAllKeysIn3(object) {\n return baseGetAllKeys3(object, keysIn3, getSymbolsIn3);\n }\n module2.exports = getAllKeysIn3;\n }\n});\n\n// node_modules/lodash/_DataView.js\nvar require_DataView = __commonJS({\n \"node_modules/lodash/_DataView.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var root5 = require_root();\n var DataView4 = getNative4(root5, \"DataView\");\n module2.exports = DataView4;\n }\n});\n\n// node_modules/lodash/_Promise.js\nvar require_Promise = __commonJS({\n \"node_modules/lodash/_Promise.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var root5 = require_root();\n var Promise2 = getNative4(root5, \"Promise\");\n module2.exports = Promise2;\n }\n});\n\n// node_modules/lodash/_Set.js\nvar require_Set = __commonJS({\n \"node_modules/lodash/_Set.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var root5 = require_root();\n var Set5 = getNative4(root5, \"Set\");\n module2.exports = Set5;\n }\n});\n\n// node_modules/lodash/_WeakMap.js\nvar require_WeakMap = __commonJS({\n \"node_modules/lodash/_WeakMap.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var root5 = require_root();\n var WeakMap4 = getNative4(root5, \"WeakMap\");\n module2.exports = WeakMap4;\n }\n});\n\n// node_modules/lodash/_getTag.js\nvar require_getTag = __commonJS({\n \"node_modules/lodash/_getTag.js\"(exports2, module2) {\n var DataView4 = require_DataView();\n var Map5 = require_Map();\n var Promise2 = require_Promise();\n var Set5 = require_Set();\n var WeakMap4 = require_WeakMap();\n var baseGetTag5 = require_baseGetTag();\n var toSource4 = require_toSource();\n var mapTag4 = \"[object Map]\";\n var objectTag3 = \"[object Object]\";\n var promiseTag4 = \"[object Promise]\";\n var setTag4 = \"[object Set]\";\n var weakMapTag4 = \"[object WeakMap]\";\n var dataViewTag4 = \"[object DataView]\";\n var dataViewCtorString4 = toSource4(DataView4);\n var mapCtorString4 = toSource4(Map5);\n var promiseCtorString4 = toSource4(Promise2);\n var setCtorString4 = toSource4(Set5);\n var weakMapCtorString4 = toSource4(WeakMap4);\n var getTag4 = baseGetTag5;\n if (DataView4 && getTag4(new DataView4(new ArrayBuffer(1))) != dataViewTag4 || Map5 && getTag4(new Map5()) != mapTag4 || Promise2 && getTag4(Promise2.resolve()) != promiseTag4 || Set5 && getTag4(new Set5()) != setTag4 || WeakMap4 && getTag4(new WeakMap4()) != weakMapTag4) {\n getTag4 = function(value) {\n var result = baseGetTag5(value), Ctor = result == objectTag3 ? value.constructor : void 0, ctorString = Ctor ? toSource4(Ctor) : \"\";\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString4:\n return dataViewTag4;\n case mapCtorString4:\n return mapTag4;\n case promiseCtorString4:\n return promiseTag4;\n case setCtorString4:\n return setTag4;\n case weakMapCtorString4:\n return weakMapTag4;\n }\n }\n return result;\n };\n }\n module2.exports = getTag4;\n }\n});\n\n// node_modules/lodash/_initCloneArray.js\nvar require_initCloneArray = __commonJS({\n \"node_modules/lodash/_initCloneArray.js\"(exports2, module2) {\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function initCloneArray3(array) {\n var length = array.length, result = new array.constructor(length);\n if (length && typeof array[0] == \"string\" && hasOwnProperty6.call(array, \"index\")) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n module2.exports = initCloneArray3;\n }\n});\n\n// node_modules/lodash/_Uint8Array.js\nvar require_Uint8Array = __commonJS({\n \"node_modules/lodash/_Uint8Array.js\"(exports2, module2) {\n var root5 = require_root();\n var Uint8Array5 = root5.Uint8Array;\n module2.exports = Uint8Array5;\n }\n});\n\n// node_modules/lodash/_cloneArrayBuffer.js\nvar require_cloneArrayBuffer = __commonJS({\n \"node_modules/lodash/_cloneArrayBuffer.js\"(exports2, module2) {\n var Uint8Array5 = require_Uint8Array();\n function cloneArrayBuffer3(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array5(result).set(new Uint8Array5(arrayBuffer));\n return result;\n }\n module2.exports = cloneArrayBuffer3;\n }\n});\n\n// node_modules/lodash/_cloneDataView.js\nvar require_cloneDataView = __commonJS({\n \"node_modules/lodash/_cloneDataView.js\"(exports2, module2) {\n var cloneArrayBuffer3 = require_cloneArrayBuffer();\n function cloneDataView3(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer3(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n module2.exports = cloneDataView3;\n }\n});\n\n// node_modules/lodash/_cloneRegExp.js\nvar require_cloneRegExp = __commonJS({\n \"node_modules/lodash/_cloneRegExp.js\"(exports2, module2) {\n var reFlags3 = /\\w*$/;\n function cloneRegExp3(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags3.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n module2.exports = cloneRegExp3;\n }\n});\n\n// node_modules/lodash/_cloneSymbol.js\nvar require_cloneSymbol = __commonJS({\n \"node_modules/lodash/_cloneSymbol.js\"(exports2, module2) {\n var Symbol5 = require_Symbol();\n var symbolProto4 = Symbol5 ? Symbol5.prototype : void 0;\n var symbolValueOf4 = symbolProto4 ? symbolProto4.valueOf : void 0;\n function cloneSymbol3(symbol) {\n return symbolValueOf4 ? Object(symbolValueOf4.call(symbol)) : {};\n }\n module2.exports = cloneSymbol3;\n }\n});\n\n// node_modules/lodash/_cloneTypedArray.js\nvar require_cloneTypedArray = __commonJS({\n \"node_modules/lodash/_cloneTypedArray.js\"(exports2, module2) {\n var cloneArrayBuffer3 = require_cloneArrayBuffer();\n function cloneTypedArray3(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer3(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n module2.exports = cloneTypedArray3;\n }\n});\n\n// node_modules/lodash/_initCloneByTag.js\nvar require_initCloneByTag = __commonJS({\n \"node_modules/lodash/_initCloneByTag.js\"(exports2, module2) {\n var cloneArrayBuffer3 = require_cloneArrayBuffer();\n var cloneDataView3 = require_cloneDataView();\n var cloneRegExp3 = require_cloneRegExp();\n var cloneSymbol3 = require_cloneSymbol();\n var cloneTypedArray3 = require_cloneTypedArray();\n var boolTag3 = \"[object Boolean]\";\n var dateTag3 = \"[object Date]\";\n var mapTag4 = \"[object Map]\";\n var numberTag3 = \"[object Number]\";\n var regexpTag3 = \"[object RegExp]\";\n var setTag4 = \"[object Set]\";\n var stringTag3 = \"[object String]\";\n var symbolTag4 = \"[object Symbol]\";\n var arrayBufferTag3 = \"[object ArrayBuffer]\";\n var dataViewTag4 = \"[object DataView]\";\n var float32Tag4 = \"[object Float32Array]\";\n var float64Tag4 = \"[object Float64Array]\";\n var int8Tag4 = \"[object Int8Array]\";\n var int16Tag4 = \"[object Int16Array]\";\n var int32Tag4 = \"[object Int32Array]\";\n var uint8Tag4 = \"[object Uint8Array]\";\n var uint8ClampedTag4 = \"[object Uint8ClampedArray]\";\n var uint16Tag4 = \"[object Uint16Array]\";\n var uint32Tag4 = \"[object Uint32Array]\";\n function initCloneByTag3(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag3:\n return cloneArrayBuffer3(object);\n case boolTag3:\n case dateTag3:\n return new Ctor(+object);\n case dataViewTag4:\n return cloneDataView3(object, isDeep);\n case float32Tag4:\n case float64Tag4:\n case int8Tag4:\n case int16Tag4:\n case int32Tag4:\n case uint8Tag4:\n case uint8ClampedTag4:\n case uint16Tag4:\n case uint32Tag4:\n return cloneTypedArray3(object, isDeep);\n case mapTag4:\n return new Ctor();\n case numberTag3:\n case stringTag3:\n return new Ctor(object);\n case regexpTag3:\n return cloneRegExp3(object);\n case setTag4:\n return new Ctor();\n case symbolTag4:\n return cloneSymbol3(object);\n }\n }\n module2.exports = initCloneByTag3;\n }\n});\n\n// node_modules/lodash/_baseCreate.js\nvar require_baseCreate = __commonJS({\n \"node_modules/lodash/_baseCreate.js\"(exports2, module2) {\n var isObject7 = require_isObject();\n var objectCreate3 = Object.create;\n var baseCreate3 = function() {\n function object() {\n }\n return function(proto) {\n if (!isObject7(proto)) {\n return {};\n }\n if (objectCreate3) {\n return objectCreate3(proto);\n }\n object.prototype = proto;\n var result = new object();\n object.prototype = void 0;\n return result;\n };\n }();\n module2.exports = baseCreate3;\n }\n});\n\n// node_modules/lodash/_initCloneObject.js\nvar require_initCloneObject = __commonJS({\n \"node_modules/lodash/_initCloneObject.js\"(exports2, module2) {\n var baseCreate3 = require_baseCreate();\n var getPrototype3 = require_getPrototype();\n var isPrototype3 = require_isPrototype();\n function initCloneObject3(object) {\n return typeof object.constructor == \"function\" && !isPrototype3(object) ? baseCreate3(getPrototype3(object)) : {};\n }\n module2.exports = initCloneObject3;\n }\n});\n\n// node_modules/lodash/_baseIsMap.js\nvar require_baseIsMap = __commonJS({\n \"node_modules/lodash/_baseIsMap.js\"(exports2, module2) {\n var getTag4 = require_getTag();\n var isObjectLike5 = require_isObjectLike();\n var mapTag4 = \"[object Map]\";\n function baseIsMap3(value) {\n return isObjectLike5(value) && getTag4(value) == mapTag4;\n }\n module2.exports = baseIsMap3;\n }\n});\n\n// node_modules/lodash/isMap.js\nvar require_isMap = __commonJS({\n \"node_modules/lodash/isMap.js\"(exports2, module2) {\n var baseIsMap3 = require_baseIsMap();\n var baseUnary4 = require_baseUnary();\n var nodeUtil = require_nodeUtil();\n var nodeIsMap3 = nodeUtil && nodeUtil.isMap;\n var isMap3 = nodeIsMap3 ? baseUnary4(nodeIsMap3) : baseIsMap3;\n module2.exports = isMap3;\n }\n});\n\n// node_modules/lodash/_baseIsSet.js\nvar require_baseIsSet = __commonJS({\n \"node_modules/lodash/_baseIsSet.js\"(exports2, module2) {\n var getTag4 = require_getTag();\n var isObjectLike5 = require_isObjectLike();\n var setTag4 = \"[object Set]\";\n function baseIsSet3(value) {\n return isObjectLike5(value) && getTag4(value) == setTag4;\n }\n module2.exports = baseIsSet3;\n }\n});\n\n// node_modules/lodash/isSet.js\nvar require_isSet = __commonJS({\n \"node_modules/lodash/isSet.js\"(exports2, module2) {\n var baseIsSet3 = require_baseIsSet();\n var baseUnary4 = require_baseUnary();\n var nodeUtil = require_nodeUtil();\n var nodeIsSet3 = nodeUtil && nodeUtil.isSet;\n var isSet3 = nodeIsSet3 ? baseUnary4(nodeIsSet3) : baseIsSet3;\n module2.exports = isSet3;\n }\n});\n\n// node_modules/lodash/_baseClone.js\nvar require_baseClone = __commonJS({\n \"node_modules/lodash/_baseClone.js\"(exports2, module2) {\n var Stack4 = require_Stack();\n var arrayEach3 = require_arrayEach();\n var assignValue3 = require_assignValue();\n var baseAssign3 = require_baseAssign();\n var baseAssignIn3 = require_baseAssignIn();\n var cloneBuffer = require_cloneBuffer();\n var copyArray3 = require_copyArray();\n var copySymbols3 = require_copySymbols();\n var copySymbolsIn3 = require_copySymbolsIn();\n var getAllKeys3 = require_getAllKeys();\n var getAllKeysIn3 = require_getAllKeysIn();\n var getTag4 = require_getTag();\n var initCloneArray3 = require_initCloneArray();\n var initCloneByTag3 = require_initCloneByTag();\n var initCloneObject3 = require_initCloneObject();\n var isArray8 = require_isArray();\n var isBuffer = require_isBuffer();\n var isMap3 = require_isMap();\n var isObject7 = require_isObject();\n var isSet3 = require_isSet();\n var keys3 = require_keys();\n var keysIn3 = require_keysIn();\n var CLONE_DEEP_FLAG3 = 1;\n var CLONE_FLAT_FLAG3 = 2;\n var CLONE_SYMBOLS_FLAG3 = 4;\n var argsTag3 = \"[object Arguments]\";\n var arrayTag3 = \"[object Array]\";\n var boolTag3 = \"[object Boolean]\";\n var dateTag3 = \"[object Date]\";\n var errorTag3 = \"[object Error]\";\n var funcTag4 = \"[object Function]\";\n var genTag4 = \"[object GeneratorFunction]\";\n var mapTag4 = \"[object Map]\";\n var numberTag3 = \"[object Number]\";\n var objectTag3 = \"[object Object]\";\n var regexpTag3 = \"[object RegExp]\";\n var setTag4 = \"[object Set]\";\n var stringTag3 = \"[object String]\";\n var symbolTag4 = \"[object Symbol]\";\n var weakMapTag4 = \"[object WeakMap]\";\n var arrayBufferTag3 = \"[object ArrayBuffer]\";\n var dataViewTag4 = \"[object DataView]\";\n var float32Tag4 = \"[object Float32Array]\";\n var float64Tag4 = \"[object Float64Array]\";\n var int8Tag4 = \"[object Int8Array]\";\n var int16Tag4 = \"[object Int16Array]\";\n var int32Tag4 = \"[object Int32Array]\";\n var uint8Tag4 = \"[object Uint8Array]\";\n var uint8ClampedTag4 = \"[object Uint8ClampedArray]\";\n var uint16Tag4 = \"[object Uint16Array]\";\n var uint32Tag4 = \"[object Uint32Array]\";\n var cloneableTags3 = {};\n cloneableTags3[argsTag3] = cloneableTags3[arrayTag3] = cloneableTags3[arrayBufferTag3] = cloneableTags3[dataViewTag4] = cloneableTags3[boolTag3] = cloneableTags3[dateTag3] = cloneableTags3[float32Tag4] = cloneableTags3[float64Tag4] = cloneableTags3[int8Tag4] = cloneableTags3[int16Tag4] = cloneableTags3[int32Tag4] = cloneableTags3[mapTag4] = cloneableTags3[numberTag3] = cloneableTags3[objectTag3] = cloneableTags3[regexpTag3] = cloneableTags3[setTag4] = cloneableTags3[stringTag3] = cloneableTags3[symbolTag4] = cloneableTags3[uint8Tag4] = cloneableTags3[uint8ClampedTag4] = cloneableTags3[uint16Tag4] = cloneableTags3[uint32Tag4] = true;\n cloneableTags3[errorTag3] = cloneableTags3[funcTag4] = cloneableTags3[weakMapTag4] = false;\n function baseClone3(value, bitmask, customizer, key, object, stack) {\n var result, isDeep = bitmask & CLONE_DEEP_FLAG3, isFlat = bitmask & CLONE_FLAT_FLAG3, isFull = bitmask & CLONE_SYMBOLS_FLAG3;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== void 0) {\n return result;\n }\n if (!isObject7(value)) {\n return value;\n }\n var isArr = isArray8(value);\n if (isArr) {\n result = initCloneArray3(value);\n if (!isDeep) {\n return copyArray3(value, result);\n }\n } else {\n var tag = getTag4(value), isFunc = tag == funcTag4 || tag == genTag4;\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag3 || tag == argsTag3 || isFunc && !object) {\n result = isFlat || isFunc ? {} : initCloneObject3(value);\n if (!isDeep) {\n return isFlat ? copySymbolsIn3(value, baseAssignIn3(result, value)) : copySymbols3(value, baseAssign3(result, value));\n }\n } else {\n if (!cloneableTags3[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag3(value, tag, isDeep);\n }\n }\n stack || (stack = new Stack4());\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n if (isSet3(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone3(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap3(value)) {\n value.forEach(function(subValue, key2) {\n result.set(key2, baseClone3(subValue, bitmask, customizer, key2, value, stack));\n });\n }\n var keysFunc = isFull ? isFlat ? getAllKeysIn3 : getAllKeys3 : isFlat ? keysIn3 : keys3;\n var props = isArr ? void 0 : keysFunc(value);\n arrayEach3(props || value, function(subValue, key2) {\n if (props) {\n key2 = subValue;\n subValue = value[key2];\n }\n assignValue3(result, key2, baseClone3(subValue, bitmask, customizer, key2, value, stack));\n });\n return result;\n }\n module2.exports = baseClone3;\n }\n});\n\n// node_modules/lodash/last.js\nvar require_last = __commonJS({\n \"node_modules/lodash/last.js\"(exports2, module2) {\n function last2(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : void 0;\n }\n module2.exports = last2;\n }\n});\n\n// node_modules/lodash/_baseSlice.js\nvar require_baseSlice = __commonJS({\n \"node_modules/lodash/_baseSlice.js\"(exports2, module2) {\n function baseSlice2(array, start3, end3) {\n var index7 = -1, length = array.length;\n if (start3 < 0) {\n start3 = -start3 > length ? 0 : length + start3;\n }\n end3 = end3 > length ? length : end3;\n if (end3 < 0) {\n end3 += length;\n }\n length = start3 > end3 ? 0 : end3 - start3 >>> 0;\n start3 >>>= 0;\n var result = Array(length);\n while (++index7 < length) {\n result[index7] = array[index7 + start3];\n }\n return result;\n }\n module2.exports = baseSlice2;\n }\n});\n\n// node_modules/lodash/_parent.js\nvar require_parent = __commonJS({\n \"node_modules/lodash/_parent.js\"(exports2, module2) {\n var baseGet2 = require_baseGet();\n var baseSlice2 = require_baseSlice();\n function parent2(object, path) {\n return path.length < 2 ? object : baseGet2(object, baseSlice2(path, 0, -1));\n }\n module2.exports = parent2;\n }\n});\n\n// node_modules/lodash/_baseUnset.js\nvar require_baseUnset = __commonJS({\n \"node_modules/lodash/_baseUnset.js\"(exports2, module2) {\n var castPath2 = require_castPath();\n var last2 = require_last();\n var parent2 = require_parent();\n var toKey2 = require_toKey();\n function baseUnset2(object, path) {\n path = castPath2(path, object);\n object = parent2(object, path);\n return object == null || delete object[toKey2(last2(path))];\n }\n module2.exports = baseUnset2;\n }\n});\n\n// node_modules/lodash/isPlainObject.js\nvar require_isPlainObject = __commonJS({\n \"node_modules/lodash/isPlainObject.js\"(exports2, module2) {\n var baseGetTag5 = require_baseGetTag();\n var getPrototype3 = require_getPrototype();\n var isObjectLike5 = require_isObjectLike();\n var objectTag3 = \"[object Object]\";\n var funcProto4 = Function.prototype;\n var objectProto5 = Object.prototype;\n var funcToString4 = funcProto4.toString;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n var objectCtorString2 = funcToString4.call(Object);\n function isPlainObject5(value) {\n if (!isObjectLike5(value) || baseGetTag5(value) != objectTag3) {\n return false;\n }\n var proto = getPrototype3(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty6.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor == \"function\" && Ctor instanceof Ctor && funcToString4.call(Ctor) == objectCtorString2;\n }\n module2.exports = isPlainObject5;\n }\n});\n\n// node_modules/lodash/_customOmitClone.js\nvar require_customOmitClone = __commonJS({\n \"node_modules/lodash/_customOmitClone.js\"(exports2, module2) {\n var isPlainObject5 = require_isPlainObject();\n function customOmitClone2(value) {\n return isPlainObject5(value) ? void 0 : value;\n }\n module2.exports = customOmitClone2;\n }\n});\n\n// node_modules/lodash/omit.js\nvar require_omit = __commonJS({\n \"node_modules/lodash/omit.js\"(exports2, module2) {\n var arrayMap2 = require_arrayMap();\n var baseClone3 = require_baseClone();\n var baseUnset2 = require_baseUnset();\n var castPath2 = require_castPath();\n var copyObject3 = require_copyObject();\n var customOmitClone2 = require_customOmitClone();\n var flatRest2 = require_flatRest();\n var getAllKeysIn3 = require_getAllKeysIn();\n var CLONE_DEEP_FLAG3 = 1;\n var CLONE_FLAT_FLAG3 = 2;\n var CLONE_SYMBOLS_FLAG3 = 4;\n var omit3 = flatRest2(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap2(paths, function(path) {\n path = castPath2(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject3(object, getAllKeysIn3(object), result);\n if (isDeep) {\n result = baseClone3(result, CLONE_DEEP_FLAG3 | CLONE_FLAT_FLAG3 | CLONE_SYMBOLS_FLAG3, customOmitClone2);\n }\n var length = paths.length;\n while (length--) {\n baseUnset2(result, paths[length]);\n }\n return result;\n });\n module2.exports = omit3;\n }\n});\n\n// node_modules/tw-react/dist/plugins/linonetwo/tw-react/index.js\nvar require_tw_react = __commonJS({\n \"node_modules/tw-react/dist/plugins/linonetwo/tw-react/index.js\"(exports2, module2) {\n var __defProp4 = Object.defineProperty;\n var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames2 = Object.getOwnPropertyNames;\n var __hasOwnProp4 = Object.prototype.hasOwnProperty;\n var __export2 = (target, all) => {\n for (var name in all)\n __defProp4(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps2 = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames2(from))\n if (!__hasOwnProp4.call(to, key) && key !== except)\n __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toCommonJS = (mod) => __copyProps2(__defProp4({}, \"__esModule\", { value: true }), mod);\n var src_exports = {};\n __export2(src_exports, {\n ParentWidgetContext: () => ParentWidgetContext3,\n useFilter: () => useFilter,\n useRenderTiddler: () => useRenderTiddler,\n useWidget: () => useWidget2\n });\n module2.exports = __toCommonJS(src_exports);\n var import_react97 = require(\"react\");\n function useFilter(twFilter, dependencies = []) {\n const [filterResult, setFilterResult] = (0, import_react97.useState)([]);\n const compiledFilter = (0, import_react97.useMemo)(() => $tw.wiki.compileFilter(twFilter), [twFilter]);\n (0, import_react97.useEffect)(() => {\n setFilterResult(compiledFilter());\n }, [compiledFilter, ...dependencies]);\n return filterResult;\n }\n var import_react310 = require(\"react\");\n var import_react210 = require(\"react\");\n var ParentWidgetContext3 = (0, import_react210.createContext)(void 0);\n function useRenderTiddler(tiddlerTitle, containerRef) {\n const parentWidget = (0, import_react310.useContext)(ParentWidgetContext3);\n (0, import_react310.useEffect)(() => {\n if (containerRef.current === null || parentWidget === void 0) {\n return;\n }\n const transcludeWidgetNode = $tw.wiki.makeTranscludeWidget(tiddlerTitle, {\n document,\n parentWidget,\n recursionMarker: \"yes\",\n mode: \"block\",\n importPageMacros: true\n });\n const tiddlerContainer = document.createElement(\"div\");\n containerRef.current.append(tiddlerContainer);\n transcludeWidgetNode.render(tiddlerContainer, null);\n parentWidget.children.push(transcludeWidgetNode);\n }, [tiddlerTitle, containerRef.current]);\n }\n var import_react410 = require(\"react\");\n function useWidget2(parseTreeNode, containerRef) {\n const parentWidget = (0, import_react410.useContext)(ParentWidgetContext3);\n (0, import_react410.useEffect)(() => {\n if (containerRef.current === null) {\n return;\n }\n if (parentWidget === void 0) {\n throw new Error(\"Your plugin have a bug: `parentWidget` is undefined, you should use ``, see tw-react for document.\");\n }\n const newWidgetNode = parentWidget.makeChildWidget(parseTreeNode, {});\n newWidgetNode.render(containerRef.current, null);\n parentWidget.children.push(newWidgetNode);\n }, [parseTreeNode, containerRef.current]);\n }\n }\n});\n\n// node_modules/lodash/cloneDeep.js\nvar require_cloneDeep = __commonJS({\n \"node_modules/lodash/cloneDeep.js\"(exports2, module2) {\n var baseClone3 = require_baseClone();\n var CLONE_DEEP_FLAG3 = 1;\n var CLONE_SYMBOLS_FLAG3 = 4;\n function cloneDeep4(value) {\n return baseClone3(value, CLONE_DEEP_FLAG3 | CLONE_SYMBOLS_FLAG3);\n }\n module2.exports = cloneDeep4;\n }\n});\n\n// node_modules/lodash/_setCacheAdd.js\nvar require_setCacheAdd = __commonJS({\n \"node_modules/lodash/_setCacheAdd.js\"(exports2, module2) {\n var HASH_UNDEFINED4 = \"__lodash_hash_undefined__\";\n function setCacheAdd3(value) {\n this.__data__.set(value, HASH_UNDEFINED4);\n return this;\n }\n module2.exports = setCacheAdd3;\n }\n});\n\n// node_modules/lodash/_setCacheHas.js\nvar require_setCacheHas = __commonJS({\n \"node_modules/lodash/_setCacheHas.js\"(exports2, module2) {\n function setCacheHas3(value) {\n return this.__data__.has(value);\n }\n module2.exports = setCacheHas3;\n }\n});\n\n// node_modules/lodash/_SetCache.js\nvar require_SetCache = __commonJS({\n \"node_modules/lodash/_SetCache.js\"(exports2, module2) {\n var MapCache4 = require_MapCache();\n var setCacheAdd3 = require_setCacheAdd();\n var setCacheHas3 = require_setCacheHas();\n function SetCache3(values2) {\n var index7 = -1, length = values2 == null ? 0 : values2.length;\n this.__data__ = new MapCache4();\n while (++index7 < length) {\n this.add(values2[index7]);\n }\n }\n SetCache3.prototype.add = SetCache3.prototype.push = setCacheAdd3;\n SetCache3.prototype.has = setCacheHas3;\n module2.exports = SetCache3;\n }\n});\n\n// node_modules/lodash/_arraySome.js\nvar require_arraySome = __commonJS({\n \"node_modules/lodash/_arraySome.js\"(exports2, module2) {\n function arraySome2(array, predicate) {\n var index7 = -1, length = array == null ? 0 : array.length;\n while (++index7 < length) {\n if (predicate(array[index7], index7, array)) {\n return true;\n }\n }\n return false;\n }\n module2.exports = arraySome2;\n }\n});\n\n// node_modules/lodash/_cacheHas.js\nvar require_cacheHas = __commonJS({\n \"node_modules/lodash/_cacheHas.js\"(exports2, module2) {\n function cacheHas2(cache, key) {\n return cache.has(key);\n }\n module2.exports = cacheHas2;\n }\n});\n\n// node_modules/lodash/_equalArrays.js\nvar require_equalArrays = __commonJS({\n \"node_modules/lodash/_equalArrays.js\"(exports2, module2) {\n var SetCache3 = require_SetCache();\n var arraySome2 = require_arraySome();\n var cacheHas2 = require_cacheHas();\n var COMPARE_PARTIAL_FLAG2 = 1;\n var COMPARE_UNORDERED_FLAG2 = 2;\n function equalArrays2(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG2, arrLength = array.length, othLength = other.length;\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index7 = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG2 ? new SetCache3() : void 0;\n stack.set(array, other);\n stack.set(other, array);\n while (++index7 < arrLength) {\n var arrValue = array[index7], othValue = other[index7];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index7, other, array, stack) : customizer(arrValue, othValue, index7, array, other, stack);\n }\n if (compared !== void 0) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n if (seen) {\n if (!arraySome2(other, function(othValue2, othIndex) {\n if (!cacheHas2(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack[\"delete\"](array);\n stack[\"delete\"](other);\n return result;\n }\n module2.exports = equalArrays2;\n }\n});\n\n// node_modules/lodash/_mapToArray.js\nvar require_mapToArray = __commonJS({\n \"node_modules/lodash/_mapToArray.js\"(exports2, module2) {\n function mapToArray2(map2) {\n var index7 = -1, result = Array(map2.size);\n map2.forEach(function(value, key) {\n result[++index7] = [key, value];\n });\n return result;\n }\n module2.exports = mapToArray2;\n }\n});\n\n// node_modules/lodash/_setToArray.js\nvar require_setToArray = __commonJS({\n \"node_modules/lodash/_setToArray.js\"(exports2, module2) {\n function setToArray2(set) {\n var index7 = -1, result = Array(set.size);\n set.forEach(function(value) {\n result[++index7] = value;\n });\n return result;\n }\n module2.exports = setToArray2;\n }\n});\n\n// node_modules/lodash/_equalByTag.js\nvar require_equalByTag = __commonJS({\n \"node_modules/lodash/_equalByTag.js\"(exports2, module2) {\n var Symbol5 = require_Symbol();\n var Uint8Array5 = require_Uint8Array();\n var eq4 = require_eq();\n var equalArrays2 = require_equalArrays();\n var mapToArray2 = require_mapToArray();\n var setToArray2 = require_setToArray();\n var COMPARE_PARTIAL_FLAG2 = 1;\n var COMPARE_UNORDERED_FLAG2 = 2;\n var boolTag3 = \"[object Boolean]\";\n var dateTag3 = \"[object Date]\";\n var errorTag3 = \"[object Error]\";\n var mapTag4 = \"[object Map]\";\n var numberTag3 = \"[object Number]\";\n var regexpTag3 = \"[object RegExp]\";\n var setTag4 = \"[object Set]\";\n var stringTag3 = \"[object String]\";\n var symbolTag4 = \"[object Symbol]\";\n var arrayBufferTag3 = \"[object ArrayBuffer]\";\n var dataViewTag4 = \"[object DataView]\";\n var symbolProto4 = Symbol5 ? Symbol5.prototype : void 0;\n var symbolValueOf4 = symbolProto4 ? symbolProto4.valueOf : void 0;\n function equalByTag2(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag4:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag3:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array5(object), new Uint8Array5(other))) {\n return false;\n }\n return true;\n case boolTag3:\n case dateTag3:\n case numberTag3:\n return eq4(+object, +other);\n case errorTag3:\n return object.name == other.name && object.message == other.message;\n case regexpTag3:\n case stringTag3:\n return object == other + \"\";\n case mapTag4:\n var convert = mapToArray2;\n case setTag4:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG2;\n convert || (convert = setToArray2);\n if (object.size != other.size && !isPartial) {\n return false;\n }\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG2;\n stack.set(object, other);\n var result = equalArrays2(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack[\"delete\"](object);\n return result;\n case symbolTag4:\n if (symbolValueOf4) {\n return symbolValueOf4.call(object) == symbolValueOf4.call(other);\n }\n }\n return false;\n }\n module2.exports = equalByTag2;\n }\n});\n\n// node_modules/lodash/_equalObjects.js\nvar require_equalObjects = __commonJS({\n \"node_modules/lodash/_equalObjects.js\"(exports2, module2) {\n var getAllKeys3 = require_getAllKeys();\n var COMPARE_PARTIAL_FLAG2 = 1;\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function equalObjects2(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG2, objProps = getAllKeys3(object), objLength = objProps.length, othProps = getAllKeys3(other), othLength = othProps.length;\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index7 = objLength;\n while (index7--) {\n var key = objProps[index7];\n if (!(isPartial ? key in other : hasOwnProperty6.call(other, key))) {\n return false;\n }\n }\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n while (++index7 < objLength) {\n key = objProps[index7];\n var objValue = object[key], othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == \"constructor\");\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor, othCtor = other.constructor;\n if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack[\"delete\"](object);\n stack[\"delete\"](other);\n return result;\n }\n module2.exports = equalObjects2;\n }\n});\n\n// node_modules/lodash/_baseIsEqualDeep.js\nvar require_baseIsEqualDeep = __commonJS({\n \"node_modules/lodash/_baseIsEqualDeep.js\"(exports2, module2) {\n var Stack4 = require_Stack();\n var equalArrays2 = require_equalArrays();\n var equalByTag2 = require_equalByTag();\n var equalObjects2 = require_equalObjects();\n var getTag4 = require_getTag();\n var isArray8 = require_isArray();\n var isBuffer = require_isBuffer();\n var isTypedArray4 = require_isTypedArray();\n var COMPARE_PARTIAL_FLAG2 = 1;\n var argsTag3 = \"[object Arguments]\";\n var arrayTag3 = \"[object Array]\";\n var objectTag3 = \"[object Object]\";\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function baseIsEqualDeep2(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray8(object), othIsArr = isArray8(other), objTag = objIsArr ? arrayTag3 : getTag4(object), othTag = othIsArr ? arrayTag3 : getTag4(other);\n objTag = objTag == argsTag3 ? objectTag3 : objTag;\n othTag = othTag == argsTag3 ? objectTag3 : othTag;\n var objIsObj = objTag == objectTag3, othIsObj = othTag == objectTag3, isSameTag = objTag == othTag;\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack4());\n return objIsArr || isTypedArray4(object) ? equalArrays2(object, other, bitmask, customizer, equalFunc, stack) : equalByTag2(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG2)) {\n var objIsWrapped = objIsObj && hasOwnProperty6.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty6.call(other, \"__wrapped__\");\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack4());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack4());\n return equalObjects2(object, other, bitmask, customizer, equalFunc, stack);\n }\n module2.exports = baseIsEqualDeep2;\n }\n});\n\n// node_modules/lodash/_baseIsEqual.js\nvar require_baseIsEqual = __commonJS({\n \"node_modules/lodash/_baseIsEqual.js\"(exports2, module2) {\n var baseIsEqualDeep2 = require_baseIsEqualDeep();\n var isObjectLike5 = require_isObjectLike();\n function baseIsEqual2(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike5(value) && !isObjectLike5(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep2(value, other, bitmask, customizer, baseIsEqual2, stack);\n }\n module2.exports = baseIsEqual2;\n }\n});\n\n// node_modules/lodash/_baseIsMatch.js\nvar require_baseIsMatch = __commonJS({\n \"node_modules/lodash/_baseIsMatch.js\"(exports2, module2) {\n var Stack4 = require_Stack();\n var baseIsEqual2 = require_baseIsEqual();\n var COMPARE_PARTIAL_FLAG2 = 1;\n var COMPARE_UNORDERED_FLAG2 = 2;\n function baseIsMatch2(object, source, matchData, customizer) {\n var index7 = matchData.length, length = index7, noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index7--) {\n var data = matchData[index7];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index7 < length) {\n data = matchData[index7];\n var key = data[0], objValue = object[key], srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === void 0 && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack4();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === void 0 ? baseIsEqual2(srcValue, objValue, COMPARE_PARTIAL_FLAG2 | COMPARE_UNORDERED_FLAG2, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n }\n module2.exports = baseIsMatch2;\n }\n});\n\n// node_modules/lodash/_isStrictComparable.js\nvar require_isStrictComparable = __commonJS({\n \"node_modules/lodash/_isStrictComparable.js\"(exports2, module2) {\n var isObject7 = require_isObject();\n function isStrictComparable2(value) {\n return value === value && !isObject7(value);\n }\n module2.exports = isStrictComparable2;\n }\n});\n\n// node_modules/lodash/_getMatchData.js\nvar require_getMatchData = __commonJS({\n \"node_modules/lodash/_getMatchData.js\"(exports2, module2) {\n var isStrictComparable2 = require_isStrictComparable();\n var keys3 = require_keys();\n function getMatchData2(object) {\n var result = keys3(object), length = result.length;\n while (length--) {\n var key = result[length], value = object[key];\n result[length] = [key, value, isStrictComparable2(value)];\n }\n return result;\n }\n module2.exports = getMatchData2;\n }\n});\n\n// node_modules/lodash/_matchesStrictComparable.js\nvar require_matchesStrictComparable = __commonJS({\n \"node_modules/lodash/_matchesStrictComparable.js\"(exports2, module2) {\n function matchesStrictComparable2(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));\n };\n }\n module2.exports = matchesStrictComparable2;\n }\n});\n\n// node_modules/lodash/_baseMatches.js\nvar require_baseMatches = __commonJS({\n \"node_modules/lodash/_baseMatches.js\"(exports2, module2) {\n var baseIsMatch2 = require_baseIsMatch();\n var getMatchData2 = require_getMatchData();\n var matchesStrictComparable2 = require_matchesStrictComparable();\n function baseMatches2(source) {\n var matchData = getMatchData2(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable2(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch2(object, source, matchData);\n };\n }\n module2.exports = baseMatches2;\n }\n});\n\n// node_modules/lodash/get.js\nvar require_get = __commonJS({\n \"node_modules/lodash/get.js\"(exports2, module2) {\n var baseGet2 = require_baseGet();\n function get3(object, path, defaultValue) {\n var result = object == null ? void 0 : baseGet2(object, path);\n return result === void 0 ? defaultValue : result;\n }\n module2.exports = get3;\n }\n});\n\n// node_modules/lodash/_baseMatchesProperty.js\nvar require_baseMatchesProperty = __commonJS({\n \"node_modules/lodash/_baseMatchesProperty.js\"(exports2, module2) {\n var baseIsEqual2 = require_baseIsEqual();\n var get3 = require_get();\n var hasIn2 = require_hasIn();\n var isKey2 = require_isKey();\n var isStrictComparable2 = require_isStrictComparable();\n var matchesStrictComparable2 = require_matchesStrictComparable();\n var toKey2 = require_toKey();\n var COMPARE_PARTIAL_FLAG2 = 1;\n var COMPARE_UNORDERED_FLAG2 = 2;\n function baseMatchesProperty2(path, srcValue) {\n if (isKey2(path) && isStrictComparable2(srcValue)) {\n return matchesStrictComparable2(toKey2(path), srcValue);\n }\n return function(object) {\n var objValue = get3(object, path);\n return objValue === void 0 && objValue === srcValue ? hasIn2(object, path) : baseIsEqual2(srcValue, objValue, COMPARE_PARTIAL_FLAG2 | COMPARE_UNORDERED_FLAG2);\n };\n }\n module2.exports = baseMatchesProperty2;\n }\n});\n\n// node_modules/lodash/_baseProperty.js\nvar require_baseProperty = __commonJS({\n \"node_modules/lodash/_baseProperty.js\"(exports2, module2) {\n function baseProperty2(key) {\n return function(object) {\n return object == null ? void 0 : object[key];\n };\n }\n module2.exports = baseProperty2;\n }\n});\n\n// node_modules/lodash/_basePropertyDeep.js\nvar require_basePropertyDeep = __commonJS({\n \"node_modules/lodash/_basePropertyDeep.js\"(exports2, module2) {\n var baseGet2 = require_baseGet();\n function basePropertyDeep2(path) {\n return function(object) {\n return baseGet2(object, path);\n };\n }\n module2.exports = basePropertyDeep2;\n }\n});\n\n// node_modules/lodash/property.js\nvar require_property2 = __commonJS({\n \"node_modules/lodash/property.js\"(exports2, module2) {\n var baseProperty2 = require_baseProperty();\n var basePropertyDeep2 = require_basePropertyDeep();\n var isKey2 = require_isKey();\n var toKey2 = require_toKey();\n function property2(path) {\n return isKey2(path) ? baseProperty2(toKey2(path)) : basePropertyDeep2(path);\n }\n module2.exports = property2;\n }\n});\n\n// node_modules/lodash/_baseIteratee.js\nvar require_baseIteratee = __commonJS({\n \"node_modules/lodash/_baseIteratee.js\"(exports2, module2) {\n var baseMatches2 = require_baseMatches();\n var baseMatchesProperty2 = require_baseMatchesProperty();\n var identity2 = require_identity();\n var isArray8 = require_isArray();\n var property2 = require_property2();\n function baseIteratee2(value) {\n if (typeof value == \"function\") {\n return value;\n }\n if (value == null) {\n return identity2;\n }\n if (typeof value == \"object\") {\n return isArray8(value) ? baseMatchesProperty2(value[0], value[1]) : baseMatches2(value);\n }\n return property2(value);\n }\n module2.exports = baseIteratee2;\n }\n});\n\n// node_modules/lodash/_baseWhile.js\nvar require_baseWhile = __commonJS({\n \"node_modules/lodash/_baseWhile.js\"(exports2, module2) {\n var baseSlice2 = require_baseSlice();\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length, index7 = fromRight ? length : -1;\n while ((fromRight ? index7-- : ++index7 < length) && predicate(array[index7], index7, array)) {\n }\n return isDrop ? baseSlice2(array, fromRight ? 0 : index7, fromRight ? index7 + 1 : length) : baseSlice2(array, fromRight ? index7 + 1 : 0, fromRight ? length : index7);\n }\n module2.exports = baseWhile;\n }\n});\n\n// node_modules/lodash/dropRightWhile.js\nvar require_dropRightWhile = __commonJS({\n \"node_modules/lodash/dropRightWhile.js\"(exports2, module2) {\n var baseIteratee2 = require_baseIteratee();\n var baseWhile = require_baseWhile();\n function dropRightWhile2(array, predicate) {\n return array && array.length ? baseWhile(array, baseIteratee2(predicate, 3), true, true) : [];\n }\n module2.exports = dropRightWhile2;\n }\n});\n\n// node_modules/lodash/_baseRepeat.js\nvar require_baseRepeat = __commonJS({\n \"node_modules/lodash/_baseRepeat.js\"(exports2, module2) {\n var MAX_SAFE_INTEGER4 = 9007199254740991;\n var nativeFloor = Math.floor;\n function baseRepeat(string, n5) {\n var result = \"\";\n if (!string || n5 < 1 || n5 > MAX_SAFE_INTEGER4) {\n return result;\n }\n do {\n if (n5 % 2) {\n result += string;\n }\n n5 = nativeFloor(n5 / 2);\n if (n5) {\n string += string;\n }\n } while (n5);\n return result;\n }\n module2.exports = baseRepeat;\n }\n});\n\n// node_modules/lodash/_isIterateeCall.js\nvar require_isIterateeCall = __commonJS({\n \"node_modules/lodash/_isIterateeCall.js\"(exports2, module2) {\n var eq4 = require_eq();\n var isArrayLike3 = require_isArrayLike();\n var isIndex3 = require_isIndex();\n var isObject7 = require_isObject();\n function isIterateeCall2(value, index7, object) {\n if (!isObject7(object)) {\n return false;\n }\n var type = typeof index7;\n if (type == \"number\" ? isArrayLike3(object) && isIndex3(index7, object.length) : type == \"string\" && index7 in object) {\n return eq4(object[index7], value);\n }\n return false;\n }\n module2.exports = isIterateeCall2;\n }\n});\n\n// node_modules/lodash/toFinite.js\nvar require_toFinite = __commonJS({\n \"node_modules/lodash/toFinite.js\"(exports2, module2) {\n var toNumber2 = require_toNumber();\n var INFINITY3 = 1 / 0;\n var MAX_INTEGER = 17976931348623157e292;\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber2(value);\n if (value === INFINITY3 || value === -INFINITY3) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n module2.exports = toFinite;\n }\n});\n\n// node_modules/lodash/toInteger.js\nvar require_toInteger = __commonJS({\n \"node_modules/lodash/toInteger.js\"(exports2, module2) {\n var toFinite = require_toFinite();\n function toInteger(value) {\n var result = toFinite(value), remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n }\n module2.exports = toInteger;\n }\n});\n\n// node_modules/lodash/repeat.js\nvar require_repeat = __commonJS({\n \"node_modules/lodash/repeat.js\"(exports2, module2) {\n var baseRepeat = require_baseRepeat();\n var isIterateeCall2 = require_isIterateeCall();\n var toInteger = require_toInteger();\n var toString2 = require_toString();\n function repeat4(string, n5, guard) {\n if (guard ? isIterateeCall2(string, n5, guard) : n5 === void 0) {\n n5 = 1;\n } else {\n n5 = toInteger(n5);\n }\n return baseRepeat(toString2(string), n5);\n }\n module2.exports = repeat4;\n }\n});\n\n// node_modules/typescript-styled-is/dist/styledIs.js\nvar require_styledIs = __commonJS({\n \"node_modules/typescript-styled-is/dist/styledIs.js\"(exports2) {\n \"use strict\";\n var __makeTemplateObject2 = exports2 && exports2.__makeTemplateObject || function(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", { value: raw });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n };\n var __spreadArrays2 = exports2 && exports2.__spreadArrays || function() {\n for (var s3 = 0, i3 = 0, il = arguments.length; i3 < il; i3++)\n s3 += arguments[i3].length;\n for (var r5 = Array(s3), k4 = 0, i3 = 0; i3 < il; i3++)\n for (var a5 = arguments[i3], j4 = 0, jl = a5.length; j4 < jl; j4++, k4++)\n r5[k4] = a5[j4];\n return r5;\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n var styled_components_1 = require_styled_components_browser_cjs();\n var styledIs = function(method) {\n return function(condition) {\n return function() {\n var names = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n names[_i] = arguments[_i];\n }\n var isValid = function(props) {\n return names[method](function(name) {\n return typeof name === \"string\" ? name in props ? Boolean(props[name]) === condition : !condition : name.valid(props);\n });\n };\n var getCss = function() {\n var styles2 = [];\n for (var _i2 = 0; _i2 < arguments.length; _i2++) {\n styles2[_i2] = arguments[_i2];\n }\n return function(props) {\n var style = styles2[0], rest = styles2.slice(1);\n return isValid(props) ? styled_components_1.css.apply(void 0, __spreadArrays2([style], rest)) : styled_components_1.css(templateObject_1 || (templateObject_1 = __makeTemplateObject2([\"\"], [\"\"])));\n };\n };\n getCss.valid = isValid;\n return getCss;\n };\n };\n };\n exports2.default = styledIs;\n var templateObject_1;\n }\n});\n\n// node_modules/typescript-styled-is/dist/index.js\nvar require_dist2 = __commonJS({\n \"node_modules/typescript-styled-is/dist/index.js\"(exports2) {\n \"use strict\";\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.someNot = exports2.some = exports2.isNot = exports2.is = void 0;\n var styledIs_1 = __importDefault2(require_styledIs());\n var styledEvery = styledIs_1.default(\"every\");\n var is2 = styledEvery(true);\n exports2.is = is2;\n var isNot = styledEvery(false);\n exports2.isNot = isNot;\n var styledSome = styledIs_1.default(\"some\");\n var some = styledSome(true);\n exports2.some = some;\n var someNot = styledSome(false);\n exports2.someNot = someNot;\n exports2.default = is2;\n }\n});\n\n// src/editor/editor.tsx\nvar import_react96 = __toESM(require(\"react\"));\n\n// node_modules/@udecode/plate-core/dist/index.es.js\nvar import_react5 = __toESM(require(\"react\"));\n\n// node_modules/is-plain-object/dist/is-plain-object.mjs\nfunction isObject(o3) {\n return Object.prototype.toString.call(o3) === \"[object Object]\";\n}\nfunction isPlainObject(o3) {\n var ctor, prot;\n if (isObject(o3) === false)\n return false;\n ctor = o3.constructor;\n if (ctor === void 0)\n return true;\n prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n if (prot.hasOwnProperty(\"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\n\n// node_modules/immer/dist/immer.esm.js\nfunction n(n5) {\n for (var r5 = arguments.length, t4 = Array(r5 > 1 ? r5 - 1 : 0), e2 = 1; e2 < r5; e2++)\n t4[e2 - 1] = arguments[e2];\n if (true) {\n var i3 = Y[n5], o3 = i3 ? typeof i3 == \"function\" ? i3.apply(null, t4) : i3 : \"unknown error nr: \" + n5;\n throw Error(\"[Immer] \" + o3);\n }\n throw Error(\"[Immer] minified error nr: \" + n5 + (t4.length ? \" \" + t4.map(function(n6) {\n return \"'\" + n6 + \"'\";\n }).join(\",\") : \"\") + \". Find the full error at: https://bit.ly/3cXEKWf\");\n}\nfunction r(n5) {\n return !!n5 && !!n5[Q];\n}\nfunction t(n5) {\n return !!n5 && (function(n6) {\n if (!n6 || typeof n6 != \"object\")\n return false;\n var r5 = Object.getPrototypeOf(n6);\n if (r5 === null)\n return true;\n var t4 = Object.hasOwnProperty.call(r5, \"constructor\") && r5.constructor;\n return t4 === Object || typeof t4 == \"function\" && Function.toString.call(t4) === Z;\n }(n5) || Array.isArray(n5) || !!n5[L] || !!n5.constructor[L] || s(n5) || v(n5));\n}\nfunction i(n5, r5, t4) {\n t4 === void 0 && (t4 = false), o(n5) === 0 ? (t4 ? Object.keys : nn)(n5).forEach(function(e2) {\n t4 && typeof e2 == \"symbol\" || r5(e2, n5[e2], n5);\n }) : n5.forEach(function(t5, e2) {\n return r5(e2, t5, n5);\n });\n}\nfunction o(n5) {\n var r5 = n5[Q];\n return r5 ? r5.i > 3 ? r5.i - 4 : r5.i : Array.isArray(n5) ? 1 : s(n5) ? 2 : v(n5) ? 3 : 0;\n}\nfunction u(n5, r5) {\n return o(n5) === 2 ? n5.has(r5) : Object.prototype.hasOwnProperty.call(n5, r5);\n}\nfunction a(n5, r5) {\n return o(n5) === 2 ? n5.get(r5) : n5[r5];\n}\nfunction f(n5, r5, t4) {\n var e2 = o(n5);\n e2 === 2 ? n5.set(r5, t4) : e2 === 3 ? (n5.delete(r5), n5.add(t4)) : n5[r5] = t4;\n}\nfunction c(n5, r5) {\n return n5 === r5 ? n5 !== 0 || 1 / n5 == 1 / r5 : n5 != n5 && r5 != r5;\n}\nfunction s(n5) {\n return X && n5 instanceof Map;\n}\nfunction v(n5) {\n return q && n5 instanceof Set;\n}\nfunction p(n5) {\n return n5.o || n5.t;\n}\nfunction l(n5) {\n if (Array.isArray(n5))\n return Array.prototype.slice.call(n5);\n var r5 = rn(n5);\n delete r5[Q];\n for (var t4 = nn(r5), e2 = 0; e2 < t4.length; e2++) {\n var i3 = t4[e2], o3 = r5[i3];\n o3.writable === false && (o3.writable = true, o3.configurable = true), (o3.get || o3.set) && (r5[i3] = { configurable: true, writable: true, enumerable: o3.enumerable, value: n5[i3] });\n }\n return Object.create(Object.getPrototypeOf(n5), r5);\n}\nfunction d(n5, e2) {\n return e2 === void 0 && (e2 = false), y(n5) || r(n5) || !t(n5) ? n5 : (o(n5) > 1 && (n5.set = n5.add = n5.clear = n5.delete = h), Object.freeze(n5), e2 && i(n5, function(n6, r5) {\n return d(r5, true);\n }, true), n5);\n}\nfunction h() {\n n(2);\n}\nfunction y(n5) {\n return n5 == null || typeof n5 != \"object\" || Object.isFrozen(n5);\n}\nfunction b(r5) {\n var t4 = tn[r5];\n return t4 || n(18, r5), t4;\n}\nfunction _() {\n return U || n(0), U;\n}\nfunction j(n5, r5) {\n r5 && (b(\"Patches\"), n5.u = [], n5.s = [], n5.v = r5);\n}\nfunction O(n5) {\n g(n5), n5.p.forEach(S), n5.p = null;\n}\nfunction g(n5) {\n n5 === U && (U = n5.l);\n}\nfunction w(n5) {\n return U = { p: [], l: U, h: n5, m: true, _: 0 };\n}\nfunction S(n5) {\n var r5 = n5[Q];\n r5.i === 0 || r5.i === 1 ? r5.j() : r5.O = true;\n}\nfunction P(r5, e2) {\n e2._ = e2.p.length;\n var i3 = e2.p[0], o3 = r5 !== void 0 && r5 !== i3;\n return e2.h.g || b(\"ES5\").S(e2, r5, o3), o3 ? (i3[Q].P && (O(e2), n(4)), t(r5) && (r5 = M(e2, r5), e2.l || x(e2, r5)), e2.u && b(\"Patches\").M(i3[Q].t, r5, e2.u, e2.s)) : r5 = M(e2, i3, []), O(e2), e2.u && e2.v(e2.u, e2.s), r5 !== H ? r5 : void 0;\n}\nfunction M(n5, r5, t4) {\n if (y(r5))\n return r5;\n var e2 = r5[Q];\n if (!e2)\n return i(r5, function(i3, o4) {\n return A(n5, e2, r5, i3, o4, t4);\n }, true), r5;\n if (e2.A !== n5)\n return r5;\n if (!e2.P)\n return x(n5, e2.t, true), e2.t;\n if (!e2.I) {\n e2.I = true, e2.A._--;\n var o3 = e2.i === 4 || e2.i === 5 ? e2.o = l(e2.k) : e2.o;\n i(e2.i === 3 ? new Set(o3) : o3, function(r6, i3) {\n return A(n5, e2, o3, r6, i3, t4);\n }), x(n5, o3, false), t4 && n5.u && b(\"Patches\").R(e2, t4, n5.u, n5.s);\n }\n return e2.o;\n}\nfunction A(e2, i3, o3, a5, c3, s3) {\n if (c3 === o3 && n(5), r(c3)) {\n var v4 = M(e2, c3, s3 && i3 && i3.i !== 3 && !u(i3.D, a5) ? s3.concat(a5) : void 0);\n if (f(o3, a5, v4), !r(v4))\n return;\n e2.m = false;\n }\n if (t(c3) && !y(c3)) {\n if (!e2.h.F && e2._ < 1)\n return;\n M(e2, c3), i3 && i3.A.l || x(e2, c3);\n }\n}\nfunction x(n5, r5, t4) {\n t4 === void 0 && (t4 = false), n5.h.F && n5.m && d(r5, t4);\n}\nfunction z(n5, r5) {\n var t4 = n5[Q];\n return (t4 ? p(t4) : n5)[r5];\n}\nfunction I(n5, r5) {\n if (r5 in n5)\n for (var t4 = Object.getPrototypeOf(n5); t4; ) {\n var e2 = Object.getOwnPropertyDescriptor(t4, r5);\n if (e2)\n return e2;\n t4 = Object.getPrototypeOf(t4);\n }\n}\nfunction k(n5) {\n n5.P || (n5.P = true, n5.l && k(n5.l));\n}\nfunction E(n5) {\n n5.o || (n5.o = l(n5.t));\n}\nfunction R(n5, r5, t4) {\n var e2 = s(r5) ? b(\"MapSet\").N(r5, t4) : v(r5) ? b(\"MapSet\").T(r5, t4) : n5.g ? function(n6, r6) {\n var t5 = Array.isArray(n6), e3 = { i: t5 ? 1 : 0, A: r6 ? r6.A : _(), P: false, I: false, D: {}, l: r6, t: n6, k: null, o: null, j: null, C: false }, i3 = e3, o3 = en;\n t5 && (i3 = [e3], o3 = on);\n var u3 = Proxy.revocable(i3, o3), a5 = u3.revoke, f3 = u3.proxy;\n return e3.k = f3, e3.j = a5, f3;\n }(r5, t4) : b(\"ES5\").J(r5, t4);\n return (t4 ? t4.A : _()).p.push(e2), e2;\n}\nfunction D(e2) {\n return r(e2) || n(22, e2), function n5(r5) {\n if (!t(r5))\n return r5;\n var e3, u3 = r5[Q], c3 = o(r5);\n if (u3) {\n if (!u3.P && (u3.i < 4 || !b(\"ES5\").K(u3)))\n return u3.t;\n u3.I = true, e3 = F(r5, c3), u3.I = false;\n } else\n e3 = F(r5, c3);\n return i(e3, function(r6, t4) {\n u3 && a(u3.t, r6) === t4 || f(e3, r6, n5(t4));\n }), c3 === 3 ? new Set(e3) : e3;\n }(e2);\n}\nfunction F(n5, r5) {\n switch (r5) {\n case 2:\n return new Map(n5);\n case 3:\n return Array.from(n5);\n }\n return l(n5);\n}\nvar G;\nvar U;\nvar W = typeof Symbol != \"undefined\" && typeof Symbol(\"x\") == \"symbol\";\nvar X = typeof Map != \"undefined\";\nvar q = typeof Set != \"undefined\";\nvar B = typeof Proxy != \"undefined\" && Proxy.revocable !== void 0 && typeof Reflect != \"undefined\";\nvar H = W ? Symbol.for(\"immer-nothing\") : ((G = {})[\"immer-nothing\"] = true, G);\nvar L = W ? Symbol.for(\"immer-draftable\") : \"__$immer_draftable\";\nvar Q = W ? Symbol.for(\"immer-state\") : \"__$immer_state\";\nvar Y = { 0: \"Illegal state\", 1: \"Immer drafts cannot have computed properties\", 2: \"This object has been frozen and should not be mutated\", 3: function(n5) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + n5;\n}, 4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\", 5: \"Immer forbids circular references\", 6: \"The first or second argument to `produce` must be a function\", 7: \"The third argument to `produce` must be a function or undefined\", 8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\", 9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\", 10: \"The given draft is already finalized\", 11: \"Object.defineProperty() cannot be used on an Immer draft\", 12: \"Object.setPrototypeOf() cannot be used on an Immer draft\", 13: \"Immer only supports deleting array indices\", 14: \"Immer only supports setting array indices and the 'length' property\", 15: function(n5) {\n return \"Cannot apply patch, path doesn't resolve: \" + n5;\n}, 16: 'Sets cannot have \"replace\" patches.', 17: function(n5) {\n return \"Unsupported patch operation: \" + n5;\n}, 18: function(n5) {\n return \"The plugin for '\" + n5 + \"' has not been loaded into Immer. To enable the plugin, import and call `enable\" + n5 + \"()` when initializing your application.\";\n}, 20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\", 21: function(n5) {\n return \"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\" + n5 + \"'\";\n}, 22: function(n5) {\n return \"'current' expects a draft, got: \" + n5;\n}, 23: function(n5) {\n return \"'original' expects a draft, got: \" + n5;\n}, 24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\" };\nvar Z = \"\" + Object.prototype.constructor;\nvar nn = typeof Reflect != \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : Object.getOwnPropertySymbols !== void 0 ? function(n5) {\n return Object.getOwnPropertyNames(n5).concat(Object.getOwnPropertySymbols(n5));\n} : Object.getOwnPropertyNames;\nvar rn = Object.getOwnPropertyDescriptors || function(n5) {\n var r5 = {};\n return nn(n5).forEach(function(t4) {\n r5[t4] = Object.getOwnPropertyDescriptor(n5, t4);\n }), r5;\n};\nvar tn = {};\nvar en = { get: function(n5, r5) {\n if (r5 === Q)\n return n5;\n var e2 = p(n5);\n if (!u(e2, r5))\n return function(n6, r6, t4) {\n var e3, i4 = I(r6, t4);\n return i4 ? \"value\" in i4 ? i4.value : (e3 = i4.get) === null || e3 === void 0 ? void 0 : e3.call(n6.k) : void 0;\n }(n5, e2, r5);\n var i3 = e2[r5];\n return n5.I || !t(i3) ? i3 : i3 === z(n5.t, r5) ? (E(n5), n5.o[r5] = R(n5.A.h, i3, n5)) : i3;\n}, has: function(n5, r5) {\n return r5 in p(n5);\n}, ownKeys: function(n5) {\n return Reflect.ownKeys(p(n5));\n}, set: function(n5, r5, t4) {\n var e2 = I(p(n5), r5);\n if (e2 == null ? void 0 : e2.set)\n return e2.set.call(n5.k, t4), true;\n if (!n5.P) {\n var i3 = z(p(n5), r5), o3 = i3 == null ? void 0 : i3[Q];\n if (o3 && o3.t === t4)\n return n5.o[r5] = t4, n5.D[r5] = false, true;\n if (c(t4, i3) && (t4 !== void 0 || u(n5.t, r5)))\n return true;\n E(n5), k(n5);\n }\n return n5.o[r5] === t4 && typeof t4 != \"number\" && (t4 !== void 0 || r5 in n5.o) || (n5.o[r5] = t4, n5.D[r5] = true, true);\n}, deleteProperty: function(n5, r5) {\n return z(n5.t, r5) !== void 0 || r5 in n5.t ? (n5.D[r5] = false, E(n5), k(n5)) : delete n5.D[r5], n5.o && delete n5.o[r5], true;\n}, getOwnPropertyDescriptor: function(n5, r5) {\n var t4 = p(n5), e2 = Reflect.getOwnPropertyDescriptor(t4, r5);\n return e2 ? { writable: true, configurable: n5.i !== 1 || r5 !== \"length\", enumerable: e2.enumerable, value: t4[r5] } : e2;\n}, defineProperty: function() {\n n(11);\n}, getPrototypeOf: function(n5) {\n return Object.getPrototypeOf(n5.t);\n}, setPrototypeOf: function() {\n n(12);\n} };\nvar on = {};\ni(en, function(n5, r5) {\n on[n5] = function() {\n return arguments[0] = arguments[0][0], r5.apply(this, arguments);\n };\n}), on.deleteProperty = function(r5, t4) {\n return isNaN(parseInt(t4)) && n(13), on.set.call(this, r5, t4, void 0);\n}, on.set = function(r5, t4, e2) {\n return t4 !== \"length\" && isNaN(parseInt(t4)) && n(14), en.set.call(this, r5[0], t4, e2, r5[0]);\n};\nvar un = function() {\n function e2(r5) {\n var e3 = this;\n this.g = B, this.F = true, this.produce = function(r6, i4, o3) {\n if (typeof r6 == \"function\" && typeof i4 != \"function\") {\n var u3 = i4;\n i4 = r6;\n var a5 = e3;\n return function(n5) {\n var r7 = this;\n n5 === void 0 && (n5 = u3);\n for (var t4 = arguments.length, e4 = Array(t4 > 1 ? t4 - 1 : 0), o4 = 1; o4 < t4; o4++)\n e4[o4 - 1] = arguments[o4];\n return a5.produce(n5, function(n6) {\n var t5;\n return (t5 = i4).call.apply(t5, [r7, n6].concat(e4));\n });\n };\n }\n var f3;\n if (typeof i4 != \"function\" && n(6), o3 !== void 0 && typeof o3 != \"function\" && n(7), t(r6)) {\n var c3 = w(e3), s3 = R(e3, r6, void 0), v4 = true;\n try {\n f3 = i4(s3), v4 = false;\n } finally {\n v4 ? O(c3) : g(c3);\n }\n return typeof Promise != \"undefined\" && f3 instanceof Promise ? f3.then(function(n5) {\n return j(c3, o3), P(n5, c3);\n }, function(n5) {\n throw O(c3), n5;\n }) : (j(c3, o3), P(f3, c3));\n }\n if (!r6 || typeof r6 != \"object\") {\n if ((f3 = i4(r6)) === void 0 && (f3 = r6), f3 === H && (f3 = void 0), e3.F && d(f3, true), o3) {\n var p4 = [], l3 = [];\n b(\"Patches\").M(r6, f3, p4, l3), o3(p4, l3);\n }\n return f3;\n }\n n(21, r6);\n }, this.produceWithPatches = function(n5, r6) {\n if (typeof n5 == \"function\")\n return function(r7) {\n for (var t5 = arguments.length, i5 = Array(t5 > 1 ? t5 - 1 : 0), o4 = 1; o4 < t5; o4++)\n i5[o4 - 1] = arguments[o4];\n return e3.produceWithPatches(r7, function(r8) {\n return n5.apply(void 0, [r8].concat(i5));\n });\n };\n var t4, i4, o3 = e3.produce(n5, r6, function(n6, r7) {\n t4 = n6, i4 = r7;\n });\n return typeof Promise != \"undefined\" && o3 instanceof Promise ? o3.then(function(n6) {\n return [n6, t4, i4];\n }) : [o3, t4, i4];\n }, typeof (r5 == null ? void 0 : r5.useProxies) == \"boolean\" && this.setUseProxies(r5.useProxies), typeof (r5 == null ? void 0 : r5.autoFreeze) == \"boolean\" && this.setAutoFreeze(r5.autoFreeze);\n }\n var i3 = e2.prototype;\n return i3.createDraft = function(e3) {\n t(e3) || n(8), r(e3) && (e3 = D(e3));\n var i4 = w(this), o3 = R(this, e3, void 0);\n return o3[Q].C = true, g(i4), o3;\n }, i3.finishDraft = function(r5, t4) {\n var e3 = r5 && r5[Q];\n e3 && e3.C || n(9), e3.I && n(10);\n var i4 = e3.A;\n return j(i4, t4), P(void 0, i4);\n }, i3.setAutoFreeze = function(n5) {\n this.F = n5;\n }, i3.setUseProxies = function(r5) {\n r5 && !B && n(20), this.g = r5;\n }, i3.applyPatches = function(n5, t4) {\n var e3;\n for (e3 = t4.length - 1; e3 >= 0; e3--) {\n var i4 = t4[e3];\n if (i4.path.length === 0 && i4.op === \"replace\") {\n n5 = i4.value;\n break;\n }\n }\n e3 > -1 && (t4 = t4.slice(e3 + 1));\n var o3 = b(\"Patches\").$;\n return r(n5) ? o3(n5, t4) : this.produce(n5, function(n6) {\n return o3(n6, t4);\n });\n }, e2;\n}();\nvar an = new un();\nvar fn = an.produce;\nvar cn = an.produceWithPatches.bind(an);\nvar sn = an.setAutoFreeze.bind(an);\nvar vn = an.setUseProxies.bind(an);\nvar pn = an.applyPatches.bind(an);\nvar ln = an.createDraft.bind(an);\nvar dn = an.finishDraft.bind(an);\n\n// node_modules/slate/dist/index.es.js\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar DIRTY_PATHS = /* @__PURE__ */ new WeakMap();\nvar DIRTY_PATH_KEYS = /* @__PURE__ */ new WeakMap();\nvar FLUSHING = /* @__PURE__ */ new WeakMap();\nvar NORMALIZING = /* @__PURE__ */ new WeakMap();\nvar PATH_REFS = /* @__PURE__ */ new WeakMap();\nvar POINT_REFS = /* @__PURE__ */ new WeakMap();\nvar RANGE_REFS = /* @__PURE__ */ new WeakMap();\nfunction ownKeys$9(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$9(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$9(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$9(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar createEditor = () => {\n var editor = {\n children: [],\n operations: [],\n selection: null,\n marks: null,\n isInline: () => false,\n isVoid: () => false,\n onChange: () => {\n },\n apply: (op) => {\n for (var ref of Editor.pathRefs(editor)) {\n PathRef.transform(ref, op);\n }\n for (var _ref of Editor.pointRefs(editor)) {\n PointRef.transform(_ref, op);\n }\n for (var _ref2 of Editor.rangeRefs(editor)) {\n RangeRef.transform(_ref2, op);\n }\n var oldDirtyPaths = DIRTY_PATHS.get(editor) || [];\n var oldDirtyPathKeys = DIRTY_PATH_KEYS.get(editor) || /* @__PURE__ */ new Set();\n var dirtyPaths;\n var dirtyPathKeys;\n var add2 = (path2) => {\n if (path2) {\n var key = path2.join(\",\");\n if (!dirtyPathKeys.has(key)) {\n dirtyPathKeys.add(key);\n dirtyPaths.push(path2);\n }\n }\n };\n if (Path.operationCanTransformPath(op)) {\n dirtyPaths = [];\n dirtyPathKeys = /* @__PURE__ */ new Set();\n for (var path of oldDirtyPaths) {\n var newPath = Path.transform(path, op);\n add2(newPath);\n }\n } else {\n dirtyPaths = oldDirtyPaths;\n dirtyPathKeys = oldDirtyPathKeys;\n }\n var newDirtyPaths = getDirtyPaths(op);\n for (var _path of newDirtyPaths) {\n add2(_path);\n }\n DIRTY_PATHS.set(editor, dirtyPaths);\n DIRTY_PATH_KEYS.set(editor, dirtyPathKeys);\n Transforms.transform(editor, op);\n editor.operations.push(op);\n Editor.normalize(editor);\n if (op.type === \"set_selection\") {\n editor.marks = null;\n }\n if (!FLUSHING.get(editor)) {\n FLUSHING.set(editor, true);\n Promise.resolve().then(() => {\n FLUSHING.set(editor, false);\n editor.onChange();\n editor.operations = [];\n });\n }\n },\n addMark: (key, value) => {\n var {\n selection\n } = editor;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.setNodes(editor, {\n [key]: value\n }, {\n match: Text.isText,\n split: true\n });\n } else {\n var marks3 = _objectSpread$9(_objectSpread$9({}, Editor.marks(editor) || {}), {}, {\n [key]: value\n });\n editor.marks = marks3;\n if (!FLUSHING.get(editor)) {\n editor.onChange();\n }\n }\n }\n },\n deleteBackward: (unit) => {\n var {\n selection\n } = editor;\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit,\n reverse: true\n });\n }\n },\n deleteForward: (unit) => {\n var {\n selection\n } = editor;\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit\n });\n }\n },\n deleteFragment: (direction) => {\n var {\n selection\n } = editor;\n if (selection && Range.isExpanded(selection)) {\n Transforms.delete(editor, {\n reverse: direction === \"backward\"\n });\n }\n },\n getFragment: () => {\n var {\n selection\n } = editor;\n if (selection) {\n return Node2.fragment(editor, selection);\n }\n return [];\n },\n insertBreak: () => {\n Transforms.splitNodes(editor, {\n always: true\n });\n },\n insertSoftBreak: () => {\n Transforms.splitNodes(editor, {\n always: true\n });\n },\n insertFragment: (fragment) => {\n Transforms.insertFragment(editor, fragment);\n },\n insertNode: (node) => {\n Transforms.insertNodes(editor, node);\n },\n insertText: (text5) => {\n var {\n selection,\n marks: marks3\n } = editor;\n if (selection) {\n if (marks3) {\n var node = _objectSpread$9({\n text: text5\n }, marks3);\n Transforms.insertNodes(editor, node);\n } else {\n Transforms.insertText(editor, text5);\n }\n editor.marks = null;\n }\n },\n normalizeNode: (entry) => {\n var [node, path] = entry;\n if (Text.isText(node)) {\n return;\n }\n if (Element2.isElement(node) && node.children.length === 0) {\n var child = {\n text: \"\"\n };\n Transforms.insertNodes(editor, child, {\n at: path.concat(0),\n voids: true\n });\n return;\n }\n var shouldHaveInlines = Editor.isEditor(node) ? false : Element2.isElement(node) && (editor.isInline(node) || node.children.length === 0 || Text.isText(node.children[0]) || editor.isInline(node.children[0]));\n var n5 = 0;\n for (var i3 = 0; i3 < node.children.length; i3++, n5++) {\n var currentNode = Node2.get(editor, path);\n if (Text.isText(currentNode))\n continue;\n var _child = node.children[i3];\n var prev = currentNode.children[n5 - 1];\n var isLast = i3 === node.children.length - 1;\n var isInlineOrText = Text.isText(_child) || Element2.isElement(_child) && editor.isInline(_child);\n if (isInlineOrText !== shouldHaveInlines) {\n Transforms.removeNodes(editor, {\n at: path.concat(n5),\n voids: true\n });\n n5--;\n } else if (Element2.isElement(_child)) {\n if (editor.isInline(_child)) {\n if (prev == null || !Text.isText(prev)) {\n var newChild = {\n text: \"\"\n };\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n5),\n voids: true\n });\n n5++;\n } else if (isLast) {\n var _newChild = {\n text: \"\"\n };\n Transforms.insertNodes(editor, _newChild, {\n at: path.concat(n5 + 1),\n voids: true\n });\n n5++;\n }\n }\n } else {\n if (prev != null && Text.isText(prev)) {\n if (Text.equals(_child, prev, {\n loose: true\n })) {\n Transforms.mergeNodes(editor, {\n at: path.concat(n5),\n voids: true\n });\n n5--;\n } else if (prev.text === \"\") {\n Transforms.removeNodes(editor, {\n at: path.concat(n5 - 1),\n voids: true\n });\n n5--;\n } else if (_child.text === \"\") {\n Transforms.removeNodes(editor, {\n at: path.concat(n5),\n voids: true\n });\n n5--;\n }\n }\n }\n }\n },\n removeMark: (key) => {\n var {\n selection\n } = editor;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.unsetNodes(editor, key, {\n match: Text.isText,\n split: true\n });\n } else {\n var marks3 = _objectSpread$9({}, Editor.marks(editor) || {});\n delete marks3[key];\n editor.marks = marks3;\n if (!FLUSHING.get(editor)) {\n editor.onChange();\n }\n }\n }\n }\n };\n return editor;\n};\nvar getDirtyPaths = (op) => {\n switch (op.type) {\n case \"insert_text\":\n case \"remove_text\":\n case \"set_node\": {\n var {\n path\n } = op;\n return Path.levels(path);\n }\n case \"insert_node\": {\n var {\n node,\n path: _path2\n } = op;\n var levels = Path.levels(_path2);\n var descendants = Text.isText(node) ? [] : Array.from(Node2.nodes(node), (_ref3) => {\n var [, p5] = _ref3;\n return _path2.concat(p5);\n });\n return [...levels, ...descendants];\n }\n case \"merge_node\": {\n var {\n path: _path3\n } = op;\n var ancestors = Path.ancestors(_path3);\n var previousPath = Path.previous(_path3);\n return [...ancestors, previousPath];\n }\n case \"move_node\": {\n var {\n path: _path4,\n newPath\n } = op;\n if (Path.equals(_path4, newPath)) {\n return [];\n }\n var oldAncestors = [];\n var newAncestors = [];\n for (var ancestor of Path.ancestors(_path4)) {\n var p4 = Path.transform(ancestor, op);\n oldAncestors.push(p4);\n }\n for (var _ancestor of Path.ancestors(newPath)) {\n var _p = Path.transform(_ancestor, op);\n newAncestors.push(_p);\n }\n var newParent = newAncestors[newAncestors.length - 1];\n var newIndex = newPath[newPath.length - 1];\n var resultPath = newParent.concat(newIndex);\n return [...oldAncestors, ...newAncestors, resultPath];\n }\n case \"remove_node\": {\n var {\n path: _path5\n } = op;\n var _ancestors = Path.ancestors(_path5);\n return [..._ancestors];\n }\n case \"split_node\": {\n var {\n path: _path6\n } = op;\n var _levels = Path.levels(_path6);\n var nextPath = Path.next(_path6);\n return [..._levels, nextPath];\n }\n default: {\n return [];\n }\n }\n};\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null)\n return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i3;\n for (i3 = 0; i3 < sourceKeys.length; i3++) {\n key = sourceKeys[i3];\n if (excluded.indexOf(key) >= 0)\n continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null)\n return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i3;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i3 = 0; i3 < sourceSymbolKeys.length; i3++) {\n key = sourceSymbolKeys[i3];\n if (excluded.indexOf(key) >= 0)\n continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key))\n continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nvar getCharacterDistance = function getCharacterDistance2(str) {\n var isRTL = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n var isLTR = !isRTL;\n var codepoints = isRTL ? codepointsIteratorRTL(str) : str;\n var left3 = CodepointType.None;\n var right3 = CodepointType.None;\n var distance = 0;\n var gb11 = null;\n var gb12Or13 = null;\n for (var char of codepoints) {\n var code = char.codePointAt(0);\n if (!code)\n break;\n var type = getCodepointType(char, code);\n [left3, right3] = isLTR ? [right3, type] : [type, left3];\n if (intersects(left3, CodepointType.ZWJ) && intersects(right3, CodepointType.ExtPict)) {\n if (isLTR) {\n gb11 = endsWithEmojiZWJ(str.substring(0, distance));\n } else {\n gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance));\n }\n if (!gb11)\n break;\n }\n if (intersects(left3, CodepointType.RI) && intersects(right3, CodepointType.RI)) {\n if (gb12Or13 !== null) {\n gb12Or13 = !gb12Or13;\n } else {\n if (isLTR) {\n gb12Or13 = true;\n } else {\n gb12Or13 = endsWithOddNumberOfRIs(str.substring(0, str.length - distance));\n }\n }\n if (!gb12Or13)\n break;\n }\n if (left3 !== CodepointType.None && right3 !== CodepointType.None && isBoundaryPair(left3, right3)) {\n break;\n }\n distance += char.length;\n }\n return distance || 1;\n};\nvar SPACE = /\\s/;\nvar PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\nvar CHAMELEON = /['\\u2018\\u2019]/;\nvar getWordDistance = function getWordDistance2(text5) {\n var isRTL = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n var dist = 0;\n var started = false;\n while (text5.length > 0) {\n var charDist = getCharacterDistance(text5, isRTL);\n var [char, remaining] = splitByCharacterDistance(text5, charDist, isRTL);\n if (isWordCharacter(char, remaining, isRTL)) {\n started = true;\n dist += charDist;\n } else if (!started) {\n dist += charDist;\n } else {\n break;\n }\n text5 = remaining;\n }\n return dist;\n};\nvar splitByCharacterDistance = (str, dist, isRTL) => {\n if (isRTL) {\n var at = str.length - dist;\n return [str.slice(at, str.length), str.slice(0, at)];\n }\n return [str.slice(0, dist), str.slice(dist)];\n};\nvar isWordCharacter = function isWordCharacter2(char, remaining) {\n var isRTL = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n if (SPACE.test(char)) {\n return false;\n }\n if (CHAMELEON.test(char)) {\n var charDist = getCharacterDistance(remaining, isRTL);\n var [nextChar, nextRemaining] = splitByCharacterDistance(remaining, charDist, isRTL);\n if (isWordCharacter2(nextChar, nextRemaining, isRTL)) {\n return true;\n }\n }\n if (PUNCTUATION.test(char)) {\n return false;\n }\n return true;\n};\nvar codepointsIteratorRTL = function* codepointsIteratorRTL2(str) {\n var end3 = str.length - 1;\n for (var i3 = 0; i3 < str.length; i3++) {\n var char1 = str.charAt(end3 - i3);\n if (isLowSurrogate(char1.charCodeAt(0))) {\n var char2 = str.charAt(end3 - i3 - 1);\n if (isHighSurrogate(char2.charCodeAt(0))) {\n yield char2 + char1;\n i3++;\n continue;\n }\n }\n yield char1;\n }\n};\nvar isHighSurrogate = (charCode) => {\n return charCode >= 55296 && charCode <= 56319;\n};\nvar isLowSurrogate = (charCode) => {\n return charCode >= 56320 && charCode <= 57343;\n};\nvar CodepointType;\n(function(CodepointType2) {\n CodepointType2[CodepointType2[\"None\"] = 0] = \"None\";\n CodepointType2[CodepointType2[\"Extend\"] = 1] = \"Extend\";\n CodepointType2[CodepointType2[\"ZWJ\"] = 2] = \"ZWJ\";\n CodepointType2[CodepointType2[\"RI\"] = 4] = \"RI\";\n CodepointType2[CodepointType2[\"Prepend\"] = 8] = \"Prepend\";\n CodepointType2[CodepointType2[\"SpacingMark\"] = 16] = \"SpacingMark\";\n CodepointType2[CodepointType2[\"L\"] = 32] = \"L\";\n CodepointType2[CodepointType2[\"V\"] = 64] = \"V\";\n CodepointType2[CodepointType2[\"T\"] = 128] = \"T\";\n CodepointType2[CodepointType2[\"LV\"] = 256] = \"LV\";\n CodepointType2[CodepointType2[\"LVT\"] = 512] = \"LVT\";\n CodepointType2[CodepointType2[\"ExtPict\"] = 1024] = \"ExtPict\";\n CodepointType2[CodepointType2[\"Any\"] = 2048] = \"Any\";\n})(CodepointType || (CodepointType = {}));\nvar reExtend = /^(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1AC0\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDF46-\\uDF50]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD30-\\uDD36\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])$/;\nvar rePrepend = /^(?:[\\u0600-\\u0605\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u0D4E]|\\uD804[\\uDCBD\\uDCCD\\uDDC2\\uDDC3]|\\uD806[\\uDD3F\\uDD41\\uDE3A\\uDE84-\\uDE89]|\\uD807\\uDD46)$/;\nvar reSpacingMark = /^(?:[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BF\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0\\u0CC1\\u0CC3\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0D02\\u0D03\\u0D3F\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D82\\u0D83\\u0DD0\\u0DD1\\u0DD8-\\u0DDE\\u0DF2\\u0DF3\\u0E33\\u0EB3\\u0F3E\\u0F3F\\u0F7F\\u1031\\u103B\\u103C\\u1056\\u1057\\u1084\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1A19\\u1A1A\\u1A55\\u1A57\\u1A6D-\\u1A72\\u1B04\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF7\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAAEB\\uAAEE\\uAAEF\\uAAF5\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]|\\uD804[\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8\\uDD2C\\uDD45\\uDD46\\uDD82\\uDDB3-\\uDDB5\\uDDBF\\uDDC0\\uDDCE\\uDE2C-\\uDE2E\\uDE32\\uDE33\\uDE35\\uDEE0-\\uDEE2\\uDF02\\uDF03\\uDF3F\\uDF41-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF62\\uDF63]|\\uD805[\\uDC35-\\uDC37\\uDC40\\uDC41\\uDC45\\uDCB1\\uDCB2\\uDCB9\\uDCBB\\uDCBC\\uDCBE\\uDCC1\\uDDB0\\uDDB1\\uDDB8-\\uDDBB\\uDDBE\\uDE30-\\uDE32\\uDE3B\\uDE3C\\uDE3E\\uDEAC\\uDEAE\\uDEAF\\uDEB6\\uDF26]|\\uD806[\\uDC2C-\\uDC2E\\uDC38\\uDD31-\\uDD35\\uDD37\\uDD38\\uDD3D\\uDD40\\uDD42\\uDDD1-\\uDDD3\\uDDDC-\\uDDDF\\uDDE4\\uDE39\\uDE57\\uDE58\\uDE97]|\\uD807[\\uDC2F\\uDC3E\\uDCA9\\uDCB1\\uDCB4\\uDD8A-\\uDD8E\\uDD93\\uDD94\\uDD96\\uDEF5\\uDEF6]|\\uD81B[\\uDF51-\\uDF87\\uDFF0\\uDFF1]|\\uD834[\\uDD66\\uDD6D])$/;\nvar reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/;\nvar reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/;\nvar reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/;\nvar reLV = /^[\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734\\uD750\\uD76C\\uD788]$/;\nvar reLVT = /^[\\uAC01-\\uAC1B\\uAC1D-\\uAC37\\uAC39-\\uAC53\\uAC55-\\uAC6F\\uAC71-\\uAC8B\\uAC8D-\\uACA7\\uACA9-\\uACC3\\uACC5-\\uACDF\\uACE1-\\uACFB\\uACFD-\\uAD17\\uAD19-\\uAD33\\uAD35-\\uAD4F\\uAD51-\\uAD6B\\uAD6D-\\uAD87\\uAD89-\\uADA3\\uADA5-\\uADBF\\uADC1-\\uADDB\\uADDD-\\uADF7\\uADF9-\\uAE13\\uAE15-\\uAE2F\\uAE31-\\uAE4B\\uAE4D-\\uAE67\\uAE69-\\uAE83\\uAE85-\\uAE9F\\uAEA1-\\uAEBB\\uAEBD-\\uAED7\\uAED9-\\uAEF3\\uAEF5-\\uAF0F\\uAF11-\\uAF2B\\uAF2D-\\uAF47\\uAF49-\\uAF63\\uAF65-\\uAF7F\\uAF81-\\uAF9B\\uAF9D-\\uAFB7\\uAFB9-\\uAFD3\\uAFD5-\\uAFEF\\uAFF1-\\uB00B\\uB00D-\\uB027\\uB029-\\uB043\\uB045-\\uB05F\\uB061-\\uB07B\\uB07D-\\uB097\\uB099-\\uB0B3\\uB0B5-\\uB0CF\\uB0D1-\\uB0EB\\uB0ED-\\uB107\\uB109-\\uB123\\uB125-\\uB13F\\uB141-\\uB15B\\uB15D-\\uB177\\uB179-\\uB193\\uB195-\\uB1AF\\uB1B1-\\uB1CB\\uB1CD-\\uB1E7\\uB1E9-\\uB203\\uB205-\\uB21F\\uB221-\\uB23B\\uB23D-\\uB257\\uB259-\\uB273\\uB275-\\uB28F\\uB291-\\uB2AB\\uB2AD-\\uB2C7\\uB2C9-\\uB2E3\\uB2E5-\\uB2FF\\uB301-\\uB31B\\uB31D-\\uB337\\uB339-\\uB353\\uB355-\\uB36F\\uB371-\\uB38B\\uB38D-\\uB3A7\\uB3A9-\\uB3C3\\uB3C5-\\uB3DF\\uB3E1-\\uB3FB\\uB3FD-\\uB417\\uB419-\\uB433\\uB435-\\uB44F\\uB451-\\uB46B\\uB46D-\\uB487\\uB489-\\uB4A3\\uB4A5-\\uB4BF\\uB4C1-\\uB4DB\\uB4DD-\\uB4F7\\uB4F9-\\uB513\\uB515-\\uB52F\\uB531-\\uB54B\\uB54D-\\uB567\\uB569-\\uB583\\uB585-\\uB59F\\uB5A1-\\uB5BB\\uB5BD-\\uB5D7\\uB5D9-\\uB5F3\\uB5F5-\\uB60F\\uB611-\\uB62B\\uB62D-\\uB647\\uB649-\\uB663\\uB665-\\uB67F\\uB681-\\uB69B\\uB69D-\\uB6B7\\uB6B9-\\uB6D3\\uB6D5-\\uB6EF\\uB6F1-\\uB70B\\uB70D-\\uB727\\uB729-\\uB743\\uB745-\\uB75F\\uB761-\\uB77B\\uB77D-\\uB797\\uB799-\\uB7B3\\uB7B5-\\uB7CF\\uB7D1-\\uB7EB\\uB7ED-\\uB807\\uB809-\\uB823\\uB825-\\uB83F\\uB841-\\uB85B\\uB85D-\\uB877\\uB879-\\uB893\\uB895-\\uB8AF\\uB8B1-\\uB8CB\\uB8CD-\\uB8E7\\uB8E9-\\uB903\\uB905-\\uB91F\\uB921-\\uB93B\\uB93D-\\uB957\\uB959-\\uB973\\uB975-\\uB98F\\uB991-\\uB9AB\\uB9AD-\\uB9C7\\uB9C9-\\uB9E3\\uB9E5-\\uB9FF\\uBA01-\\uBA1B\\uBA1D-\\uBA37\\uBA39-\\uBA53\\uBA55-\\uBA6F\\uBA71-\\uBA8B\\uBA8D-\\uBAA7\\uBAA9-\\uBAC3\\uBAC5-\\uBADF\\uBAE1-\\uBAFB\\uBAFD-\\uBB17\\uBB19-\\uBB33\\uBB35-\\uBB4F\\uBB51-\\uBB6B\\uBB6D-\\uBB87\\uBB89-\\uBBA3\\uBBA5-\\uBBBF\\uBBC1-\\uBBDB\\uBBDD-\\uBBF7\\uBBF9-\\uBC13\\uBC15-\\uBC2F\\uBC31-\\uBC4B\\uBC4D-\\uBC67\\uBC69-\\uBC83\\uBC85-\\uBC9F\\uBCA1-\\uBCBB\\uBCBD-\\uBCD7\\uBCD9-\\uBCF3\\uBCF5-\\uBD0F\\uBD11-\\uBD2B\\uBD2D-\\uBD47\\uBD49-\\uBD63\\uBD65-\\uBD7F\\uBD81-\\uBD9B\\uBD9D-\\uBDB7\\uBDB9-\\uBDD3\\uBDD5-\\uBDEF\\uBDF1-\\uBE0B\\uBE0D-\\uBE27\\uBE29-\\uBE43\\uBE45-\\uBE5F\\uBE61-\\uBE7B\\uBE7D-\\uBE97\\uBE99-\\uBEB3\\uBEB5-\\uBECF\\uBED1-\\uBEEB\\uBEED-\\uBF07\\uBF09-\\uBF23\\uBF25-\\uBF3F\\uBF41-\\uBF5B\\uBF5D-\\uBF77\\uBF79-\\uBF93\\uBF95-\\uBFAF\\uBFB1-\\uBFCB\\uBFCD-\\uBFE7\\uBFE9-\\uC003\\uC005-\\uC01F\\uC021-\\uC03B\\uC03D-\\uC057\\uC059-\\uC073\\uC075-\\uC08F\\uC091-\\uC0AB\\uC0AD-\\uC0C7\\uC0C9-\\uC0E3\\uC0E5-\\uC0FF\\uC101-\\uC11B\\uC11D-\\uC137\\uC139-\\uC153\\uC155-\\uC16F\\uC171-\\uC18B\\uC18D-\\uC1A7\\uC1A9-\\uC1C3\\uC1C5-\\uC1DF\\uC1E1-\\uC1FB\\uC1FD-\\uC217\\uC219-\\uC233\\uC235-\\uC24F\\uC251-\\uC26B\\uC26D-\\uC287\\uC289-\\uC2A3\\uC2A5-\\uC2BF\\uC2C1-\\uC2DB\\uC2DD-\\uC2F7\\uC2F9-\\uC313\\uC315-\\uC32F\\uC331-\\uC34B\\uC34D-\\uC367\\uC369-\\uC383\\uC385-\\uC39F\\uC3A1-\\uC3BB\\uC3BD-\\uC3D7\\uC3D9-\\uC3F3\\uC3F5-\\uC40F\\uC411-\\uC42B\\uC42D-\\uC447\\uC449-\\uC463\\uC465-\\uC47F\\uC481-\\uC49B\\uC49D-\\uC4B7\\uC4B9-\\uC4D3\\uC4D5-\\uC4EF\\uC4F1-\\uC50B\\uC50D-\\uC527\\uC529-\\uC543\\uC545-\\uC55F\\uC561-\\uC57B\\uC57D-\\uC597\\uC599-\\uC5B3\\uC5B5-\\uC5CF\\uC5D1-\\uC5EB\\uC5ED-\\uC607\\uC609-\\uC623\\uC625-\\uC63F\\uC641-\\uC65B\\uC65D-\\uC677\\uC679-\\uC693\\uC695-\\uC6AF\\uC6B1-\\uC6CB\\uC6CD-\\uC6E7\\uC6E9-\\uC703\\uC705-\\uC71F\\uC721-\\uC73B\\uC73D-\\uC757\\uC759-\\uC773\\uC775-\\uC78F\\uC791-\\uC7AB\\uC7AD-\\uC7C7\\uC7C9-\\uC7E3\\uC7E5-\\uC7FF\\uC801-\\uC81B\\uC81D-\\uC837\\uC839-\\uC853\\uC855-\\uC86F\\uC871-\\uC88B\\uC88D-\\uC8A7\\uC8A9-\\uC8C3\\uC8C5-\\uC8DF\\uC8E1-\\uC8FB\\uC8FD-\\uC917\\uC919-\\uC933\\uC935-\\uC94F\\uC951-\\uC96B\\uC96D-\\uC987\\uC989-\\uC9A3\\uC9A5-\\uC9BF\\uC9C1-\\uC9DB\\uC9DD-\\uC9F7\\uC9F9-\\uCA13\\uCA15-\\uCA2F\\uCA31-\\uCA4B\\uCA4D-\\uCA67\\uCA69-\\uCA83\\uCA85-\\uCA9F\\uCAA1-\\uCABB\\uCABD-\\uCAD7\\uCAD9-\\uCAF3\\uCAF5-\\uCB0F\\uCB11-\\uCB2B\\uCB2D-\\uCB47\\uCB49-\\uCB63\\uCB65-\\uCB7F\\uCB81-\\uCB9B\\uCB9D-\\uCBB7\\uCBB9-\\uCBD3\\uCBD5-\\uCBEF\\uCBF1-\\uCC0B\\uCC0D-\\uCC27\\uCC29-\\uCC43\\uCC45-\\uCC5F\\uCC61-\\uCC7B\\uCC7D-\\uCC97\\uCC99-\\uCCB3\\uCCB5-\\uCCCF\\uCCD1-\\uCCEB\\uCCED-\\uCD07\\uCD09-\\uCD23\\uCD25-\\uCD3F\\uCD41-\\uCD5B\\uCD5D-\\uCD77\\uCD79-\\uCD93\\uCD95-\\uCDAF\\uCDB1-\\uCDCB\\uCDCD-\\uCDE7\\uCDE9-\\uCE03\\uCE05-\\uCE1F\\uCE21-\\uCE3B\\uCE3D-\\uCE57\\uCE59-\\uCE73\\uCE75-\\uCE8F\\uCE91-\\uCEAB\\uCEAD-\\uCEC7\\uCEC9-\\uCEE3\\uCEE5-\\uCEFF\\uCF01-\\uCF1B\\uCF1D-\\uCF37\\uCF39-\\uCF53\\uCF55-\\uCF6F\\uCF71-\\uCF8B\\uCF8D-\\uCFA7\\uCFA9-\\uCFC3\\uCFC5-\\uCFDF\\uCFE1-\\uCFFB\\uCFFD-\\uD017\\uD019-\\uD033\\uD035-\\uD04F\\uD051-\\uD06B\\uD06D-\\uD087\\uD089-\\uD0A3\\uD0A5-\\uD0BF\\uD0C1-\\uD0DB\\uD0DD-\\uD0F7\\uD0F9-\\uD113\\uD115-\\uD12F\\uD131-\\uD14B\\uD14D-\\uD167\\uD169-\\uD183\\uD185-\\uD19F\\uD1A1-\\uD1BB\\uD1BD-\\uD1D7\\uD1D9-\\uD1F3\\uD1F5-\\uD20F\\uD211-\\uD22B\\uD22D-\\uD247\\uD249-\\uD263\\uD265-\\uD27F\\uD281-\\uD29B\\uD29D-\\uD2B7\\uD2B9-\\uD2D3\\uD2D5-\\uD2EF\\uD2F1-\\uD30B\\uD30D-\\uD327\\uD329-\\uD343\\uD345-\\uD35F\\uD361-\\uD37B\\uD37D-\\uD397\\uD399-\\uD3B3\\uD3B5-\\uD3CF\\uD3D1-\\uD3EB\\uD3ED-\\uD407\\uD409-\\uD423\\uD425-\\uD43F\\uD441-\\uD45B\\uD45D-\\uD477\\uD479-\\uD493\\uD495-\\uD4AF\\uD4B1-\\uD4CB\\uD4CD-\\uD4E7\\uD4E9-\\uD503\\uD505-\\uD51F\\uD521-\\uD53B\\uD53D-\\uD557\\uD559-\\uD573\\uD575-\\uD58F\\uD591-\\uD5AB\\uD5AD-\\uD5C7\\uD5C9-\\uD5E3\\uD5E5-\\uD5FF\\uD601-\\uD61B\\uD61D-\\uD637\\uD639-\\uD653\\uD655-\\uD66F\\uD671-\\uD68B\\uD68D-\\uD6A7\\uD6A9-\\uD6C3\\uD6C5-\\uD6DF\\uD6E1-\\uD6FB\\uD6FD-\\uD717\\uD719-\\uD733\\uD735-\\uD74F\\uD751-\\uD76B\\uD76D-\\uD787\\uD789-\\uD7A3]$/;\nvar reExtPict = /^(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])$/;\nvar getCodepointType = (char, code) => {\n var type = CodepointType.Any;\n if (char.search(reExtend) !== -1) {\n type |= CodepointType.Extend;\n }\n if (code === 8205) {\n type |= CodepointType.ZWJ;\n }\n if (code >= 127462 && code <= 127487) {\n type |= CodepointType.RI;\n }\n if (char.search(rePrepend) !== -1) {\n type |= CodepointType.Prepend;\n }\n if (char.search(reSpacingMark) !== -1) {\n type |= CodepointType.SpacingMark;\n }\n if (char.search(reL) !== -1) {\n type |= CodepointType.L;\n }\n if (char.search(reV) !== -1) {\n type |= CodepointType.V;\n }\n if (char.search(reT) !== -1) {\n type |= CodepointType.T;\n }\n if (char.search(reLV) !== -1) {\n type |= CodepointType.LV;\n }\n if (char.search(reLVT) !== -1) {\n type |= CodepointType.LVT;\n }\n if (char.search(reExtPict) !== -1) {\n type |= CodepointType.ExtPict;\n }\n return type;\n};\nfunction intersects(x4, y3) {\n return (x4 & y3) !== 0;\n}\nvar NonBoundaryPairs = [\n [CodepointType.L, CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT],\n [CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T],\n [CodepointType.LVT | CodepointType.T, CodepointType.T],\n [CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ],\n [CodepointType.Any, CodepointType.SpacingMark],\n [CodepointType.Prepend, CodepointType.Any],\n [CodepointType.ZWJ, CodepointType.ExtPict],\n [CodepointType.RI, CodepointType.RI]\n];\nfunction isBoundaryPair(left3, right3) {\n return NonBoundaryPairs.findIndex((r5) => intersects(left3, r5[0]) && intersects(right3, r5[1])) === -1;\n}\nvar endingEmojiZWJ = /(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1AC0\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDF46-\\uDF50]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD30-\\uDD36\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])*\\u200D$/;\nvar endsWithEmojiZWJ = (str) => {\n return str.search(endingEmojiZWJ) !== -1;\n};\nvar endingRIs = /(?:\\uD83C[\\uDDE6-\\uDDFF])+$/g;\nvar endsWithOddNumberOfRIs = (str) => {\n var match2 = str.match(endingRIs);\n if (match2 === null) {\n return false;\n } else {\n var numRIs = match2[0].length / 2;\n return numRIs % 2 === 1;\n }\n};\nvar isElement = (value) => {\n return isPlainObject(value) && Node2.isNodeList(value.children) && !Editor.isEditor(value);\n};\nvar Element2 = {\n isAncestor(value) {\n return isPlainObject(value) && Node2.isNodeList(value.children);\n },\n isElement,\n isElementList(value) {\n return Array.isArray(value) && value.every((val) => Element2.isElement(val));\n },\n isElementProps(props) {\n return props.children !== void 0;\n },\n isElementType: function isElementType(value, elementVal) {\n var elementKey = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"type\";\n return isElement(value) && value[elementKey] === elementVal;\n },\n matches(element4, props) {\n for (var key in props) {\n if (key === \"children\") {\n continue;\n }\n if (element4[key] !== props[key]) {\n return false;\n }\n }\n return true;\n }\n};\nvar _excluded$4 = [\"text\"];\nvar _excluded2$3 = [\"text\"];\nfunction ownKeys$8(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$8(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$8(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$8(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar IS_EDITOR_CACHE = /* @__PURE__ */ new WeakMap();\nvar Editor = {\n above(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n voids = false,\n mode = \"lowest\",\n at = editor.selection,\n match: match2\n } = options;\n if (!at) {\n return;\n }\n var path = Editor.path(editor, at);\n var reverse = mode === \"lowest\";\n for (var [n5, p4] of Editor.levels(editor, {\n at: path,\n voids,\n match: match2,\n reverse\n })) {\n if (!Text.isText(n5) && !Path.equals(path, p4)) {\n return [n5, p4];\n }\n }\n },\n addMark(editor, key, value) {\n editor.addMark(key, value);\n },\n after(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var anchor = Editor.point(editor, at, {\n edge: \"end\"\n });\n var focus = Editor.end(editor, []);\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d3 = 0;\n var target;\n for (var p4 of Editor.positions(editor, _objectSpread$8(_objectSpread$8({}, options), {}, {\n at: range\n }))) {\n if (d3 > distance) {\n break;\n }\n if (d3 !== 0) {\n target = p4;\n }\n d3++;\n }\n return target;\n },\n before(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var anchor = Editor.start(editor, []);\n var focus = Editor.point(editor, at, {\n edge: \"start\"\n });\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d3 = 0;\n var target;\n for (var p4 of Editor.positions(editor, _objectSpread$8(_objectSpread$8({}, options), {}, {\n at: range,\n reverse: true\n }))) {\n if (d3 > distance) {\n break;\n }\n if (d3 !== 0) {\n target = p4;\n }\n d3++;\n }\n return target;\n },\n deleteBackward(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n unit = \"character\"\n } = options;\n editor.deleteBackward(unit);\n },\n deleteForward(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n unit = \"character\"\n } = options;\n editor.deleteForward(unit);\n },\n deleteFragment(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n direction = \"forward\"\n } = options;\n editor.deleteFragment(direction);\n },\n edges(editor, at) {\n return [Editor.start(editor, at), Editor.end(editor, at)];\n },\n end(editor, at) {\n return Editor.point(editor, at, {\n edge: \"end\"\n });\n },\n first(editor, at) {\n var path = Editor.path(editor, at, {\n edge: \"start\"\n });\n return Editor.node(editor, path);\n },\n fragment(editor, at) {\n var range = Editor.range(editor, at);\n var fragment = Node2.fragment(editor, range);\n return fragment;\n },\n hasBlocks(editor, element4) {\n return element4.children.some((n5) => Editor.isBlock(editor, n5));\n },\n hasInlines(editor, element4) {\n return element4.children.some((n5) => Text.isText(n5) || Editor.isInline(editor, n5));\n },\n hasTexts(editor, element4) {\n return element4.children.every((n5) => Text.isText(n5));\n },\n insertBreak(editor) {\n editor.insertBreak();\n },\n insertSoftBreak(editor) {\n editor.insertSoftBreak();\n },\n insertFragment(editor, fragment) {\n editor.insertFragment(fragment);\n },\n insertNode(editor, node) {\n editor.insertNode(node);\n },\n insertText(editor, text5) {\n editor.insertText(text5);\n },\n isBlock(editor, value) {\n return Element2.isElement(value) && !editor.isInline(value);\n },\n isEditor(value) {\n if (!isPlainObject(value))\n return false;\n var cachedIsEditor = IS_EDITOR_CACHE.get(value);\n if (cachedIsEditor !== void 0) {\n return cachedIsEditor;\n }\n var isEditor = typeof value.addMark === \"function\" && typeof value.apply === \"function\" && typeof value.deleteBackward === \"function\" && typeof value.deleteForward === \"function\" && typeof value.deleteFragment === \"function\" && typeof value.insertBreak === \"function\" && typeof value.insertSoftBreak === \"function\" && typeof value.insertFragment === \"function\" && typeof value.insertNode === \"function\" && typeof value.insertText === \"function\" && typeof value.isInline === \"function\" && typeof value.isVoid === \"function\" && typeof value.normalizeNode === \"function\" && typeof value.onChange === \"function\" && typeof value.removeMark === \"function\" && (value.marks === null || isPlainObject(value.marks)) && (value.selection === null || Range.isRange(value.selection)) && Node2.isNodeList(value.children) && Operation.isOperationList(value.operations);\n IS_EDITOR_CACHE.set(value, isEditor);\n return isEditor;\n },\n isEnd(editor, point, at) {\n var end3 = Editor.end(editor, at);\n return Point.equals(point, end3);\n },\n isEdge(editor, point, at) {\n return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at);\n },\n isEmpty(editor, element4) {\n var {\n children\n } = element4;\n var [first] = children;\n return children.length === 0 || children.length === 1 && Text.isText(first) && first.text === \"\" && !editor.isVoid(element4);\n },\n isInline(editor, value) {\n return Element2.isElement(value) && editor.isInline(value);\n },\n isNormalizing(editor) {\n var isNormalizing = NORMALIZING.get(editor);\n return isNormalizing === void 0 ? true : isNormalizing;\n },\n isStart(editor, point, at) {\n if (point.offset !== 0) {\n return false;\n }\n var start3 = Editor.start(editor, at);\n return Point.equals(point, start3);\n },\n isVoid(editor, value) {\n return Element2.isElement(value) && editor.isVoid(value);\n },\n last(editor, at) {\n var path = Editor.path(editor, at, {\n edge: \"end\"\n });\n return Editor.node(editor, path);\n },\n leaf(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node2.leaf(editor, path);\n return [node, path];\n },\n *levels(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n at = editor.selection,\n reverse = false,\n voids = false\n } = options;\n var {\n match: match2\n } = options;\n if (match2 == null) {\n match2 = () => true;\n }\n if (!at) {\n return;\n }\n var levels = [];\n var path = Editor.path(editor, at);\n for (var [n5, p4] of Node2.levels(editor, path)) {\n if (!match2(n5, p4)) {\n continue;\n }\n levels.push([n5, p4]);\n if (!voids && Editor.isVoid(editor, n5)) {\n break;\n }\n }\n if (reverse) {\n levels.reverse();\n }\n yield* levels;\n },\n marks(editor) {\n var {\n marks: marks3,\n selection\n } = editor;\n if (!selection) {\n return null;\n }\n if (marks3) {\n return marks3;\n }\n if (Range.isExpanded(selection)) {\n var [match2] = Editor.nodes(editor, {\n match: Text.isText\n });\n if (match2) {\n var [_node] = match2;\n var _rest = _objectWithoutProperties(_node, _excluded$4);\n return _rest;\n } else {\n return {};\n }\n }\n var {\n anchor\n } = selection;\n var {\n path\n } = anchor;\n var [node] = Editor.leaf(editor, path);\n if (anchor.offset === 0) {\n var prev = Editor.previous(editor, {\n at: path,\n match: Text.isText\n });\n var block = Editor.above(editor, {\n match: (n5) => Editor.isBlock(editor, n5)\n });\n if (prev && block) {\n var [prevNode, prevPath] = prev;\n var [, blockPath] = block;\n if (Path.isAncestor(blockPath, prevPath)) {\n node = prevNode;\n }\n }\n }\n var rest = _objectWithoutProperties(node, _excluded2$3);\n return rest;\n },\n next(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n mode = \"lowest\",\n voids = false\n } = options;\n var {\n match: match2,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n var pointAfterLocation = Editor.after(editor, at, {\n voids\n });\n if (!pointAfterLocation)\n return;\n var [, to] = Editor.last(editor, []);\n var span = [pointAfterLocation.path, to];\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the next node from the root node!\");\n }\n if (match2 == null) {\n if (Path.isPath(at)) {\n var [parent2] = Editor.parent(editor, at);\n match2 = (n5) => parent2.children.includes(n5);\n } else {\n match2 = () => true;\n }\n }\n var [next] = Editor.nodes(editor, {\n at: span,\n match: match2,\n mode,\n voids\n });\n return next;\n },\n node(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node2.get(editor, path);\n return [node, path];\n },\n *nodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n at = editor.selection,\n mode = \"all\",\n universal = false,\n reverse = false,\n voids = false\n } = options;\n var {\n match: match2\n } = options;\n if (!match2) {\n match2 = () => true;\n }\n if (!at) {\n return;\n }\n var from;\n var to;\n if (Span.isSpan(at)) {\n from = at[0];\n to = at[1];\n } else {\n var first = Editor.path(editor, at, {\n edge: \"start\"\n });\n var last2 = Editor.path(editor, at, {\n edge: \"end\"\n });\n from = reverse ? last2 : first;\n to = reverse ? first : last2;\n }\n var nodeEntries = Node2.nodes(editor, {\n reverse,\n from,\n to,\n pass: (_ref) => {\n var [n5] = _ref;\n return voids ? false : Editor.isVoid(editor, n5);\n }\n });\n var matches = [];\n var hit;\n for (var [node, path] of nodeEntries) {\n var isLower = hit && Path.compare(path, hit[1]) === 0;\n if (mode === \"highest\" && isLower) {\n continue;\n }\n if (!match2(node, path)) {\n if (universal && !isLower && Text.isText(node)) {\n return;\n } else {\n continue;\n }\n }\n if (mode === \"lowest\" && isLower) {\n hit = [node, path];\n continue;\n }\n var emit2 = mode === \"lowest\" ? hit : [node, path];\n if (emit2) {\n if (universal) {\n matches.push(emit2);\n } else {\n yield emit2;\n }\n }\n hit = [node, path];\n }\n if (mode === \"lowest\" && hit) {\n if (universal) {\n matches.push(hit);\n } else {\n yield hit;\n }\n }\n if (universal) {\n yield* matches;\n }\n },\n normalize(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n force = false\n } = options;\n var getDirtyPaths2 = (editor2) => {\n return DIRTY_PATHS.get(editor2) || [];\n };\n var getDirtyPathKeys = (editor2) => {\n return DIRTY_PATH_KEYS.get(editor2) || /* @__PURE__ */ new Set();\n };\n var popDirtyPath = (editor2) => {\n var path = getDirtyPaths2(editor2).pop();\n var key = path.join(\",\");\n getDirtyPathKeys(editor2).delete(key);\n return path;\n };\n if (!Editor.isNormalizing(editor)) {\n return;\n }\n if (force) {\n var allPaths = Array.from(Node2.nodes(editor), (_ref2) => {\n var [, p4] = _ref2;\n return p4;\n });\n var allPathKeys = new Set(allPaths.map((p4) => p4.join(\",\")));\n DIRTY_PATHS.set(editor, allPaths);\n DIRTY_PATH_KEYS.set(editor, allPathKeys);\n }\n if (getDirtyPaths2(editor).length === 0) {\n return;\n }\n Editor.withoutNormalizing(editor, () => {\n for (var dirtyPath of getDirtyPaths2(editor)) {\n if (Node2.has(editor, dirtyPath)) {\n var entry = Editor.node(editor, dirtyPath);\n var [node, _4] = entry;\n if (Element2.isElement(node) && node.children.length === 0) {\n editor.normalizeNode(entry);\n }\n }\n }\n var max3 = getDirtyPaths2(editor).length * 42;\n var m2 = 0;\n while (getDirtyPaths2(editor).length !== 0) {\n if (m2 > max3) {\n throw new Error(\"\\n Could not completely normalize the editor after \".concat(max3, \" iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.\\n \"));\n }\n var _dirtyPath = popDirtyPath(editor);\n if (Node2.has(editor, _dirtyPath)) {\n var _entry = Editor.node(editor, _dirtyPath);\n editor.normalizeNode(_entry);\n }\n m2++;\n }\n });\n },\n parent(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var parentPath = Path.parent(path);\n var entry = Editor.node(editor, parentPath);\n return entry;\n },\n path(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n depth,\n edge\n } = options;\n if (Path.isPath(at)) {\n if (edge === \"start\") {\n var [, firstPath] = Node2.first(editor, at);\n at = firstPath;\n } else if (edge === \"end\") {\n var [, lastPath] = Node2.last(editor, at);\n at = lastPath;\n }\n }\n if (Range.isRange(at)) {\n if (edge === \"start\") {\n at = Range.start(at);\n } else if (edge === \"end\") {\n at = Range.end(at);\n } else {\n at = Path.common(at.anchor.path, at.focus.path);\n }\n }\n if (Point.isPoint(at)) {\n at = at.path;\n }\n if (depth != null) {\n at = at.slice(0, depth);\n }\n return at;\n },\n hasPath(editor, path) {\n return Node2.has(editor, path);\n },\n pathRef(editor, path) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n affinity = \"forward\"\n } = options;\n var ref = {\n current: path,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var pathRefs = Editor.pathRefs(editor);\n pathRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.pathRefs(editor);\n refs.add(ref);\n return ref;\n },\n pathRefs(editor) {\n var refs = PATH_REFS.get(editor);\n if (!refs) {\n refs = /* @__PURE__ */ new Set();\n PATH_REFS.set(editor, refs);\n }\n return refs;\n },\n point(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n edge = \"start\"\n } = options;\n if (Path.isPath(at)) {\n var path;\n if (edge === \"end\") {\n var [, lastPath] = Node2.last(editor, at);\n path = lastPath;\n } else {\n var [, firstPath] = Node2.first(editor, at);\n path = firstPath;\n }\n var node = Node2.get(editor, path);\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the \".concat(edge, \" point in the node at path [\").concat(at, \"] because it has no \").concat(edge, \" text node.\"));\n }\n return {\n path,\n offset: edge === \"end\" ? node.text.length : 0\n };\n }\n if (Range.isRange(at)) {\n var [start3, end3] = Range.edges(at);\n return edge === \"start\" ? start3 : end3;\n }\n return at;\n },\n pointRef(editor, point) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n affinity = \"forward\"\n } = options;\n var ref = {\n current: point,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var pointRefs = Editor.pointRefs(editor);\n pointRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.pointRefs(editor);\n refs.add(ref);\n return ref;\n },\n pointRefs(editor) {\n var refs = POINT_REFS.get(editor);\n if (!refs) {\n refs = /* @__PURE__ */ new Set();\n POINT_REFS.set(editor, refs);\n }\n return refs;\n },\n *positions(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n at = editor.selection,\n unit = \"offset\",\n reverse = false,\n voids = false\n } = options;\n if (!at) {\n return;\n }\n var range = Editor.range(editor, at);\n var [start3, end3] = Range.edges(range);\n var first = reverse ? end3 : start3;\n var isNewBlock = false;\n var blockText = \"\";\n var distance = 0;\n var leafTextRemaining = 0;\n var leafTextOffset = 0;\n for (var [node, path] of Editor.nodes(editor, {\n at,\n reverse,\n voids\n })) {\n if (Element2.isElement(node)) {\n if (!voids && editor.isVoid(node)) {\n yield Editor.start(editor, path);\n isNewBlock = false;\n continue;\n }\n if (editor.isInline(node))\n continue;\n if (Editor.hasInlines(editor, node)) {\n var e2 = Path.isAncestor(path, end3.path) ? end3 : Editor.end(editor, path);\n var s3 = Path.isAncestor(path, start3.path) ? start3 : Editor.start(editor, path);\n blockText = Editor.string(editor, {\n anchor: s3,\n focus: e2\n }, {\n voids\n });\n isNewBlock = true;\n }\n }\n if (Text.isText(node)) {\n var isFirst = Path.equals(path, first.path);\n if (isFirst) {\n leafTextRemaining = reverse ? first.offset : node.text.length - first.offset;\n leafTextOffset = first.offset;\n } else {\n leafTextRemaining = node.text.length;\n leafTextOffset = reverse ? leafTextRemaining : 0;\n }\n if (isFirst || isNewBlock || unit === \"offset\") {\n yield {\n path,\n offset: leafTextOffset\n };\n isNewBlock = false;\n }\n while (true) {\n if (distance === 0) {\n if (blockText === \"\")\n break;\n distance = calcDistance(blockText, unit, reverse);\n blockText = splitByCharacterDistance(blockText, distance, reverse)[1];\n }\n leafTextOffset = reverse ? leafTextOffset - distance : leafTextOffset + distance;\n leafTextRemaining = leafTextRemaining - distance;\n if (leafTextRemaining < 0) {\n distance = -leafTextRemaining;\n break;\n }\n distance = 0;\n yield {\n path,\n offset: leafTextOffset\n };\n }\n }\n }\n function calcDistance(text5, unit2, reverse2) {\n if (unit2 === \"character\") {\n return getCharacterDistance(text5, reverse2);\n } else if (unit2 === \"word\") {\n return getWordDistance(text5, reverse2);\n } else if (unit2 === \"line\" || unit2 === \"block\") {\n return text5.length;\n }\n return 1;\n }\n },\n previous(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n mode = \"lowest\",\n voids = false\n } = options;\n var {\n match: match2,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n var pointBeforeLocation = Editor.before(editor, at, {\n voids\n });\n if (!pointBeforeLocation) {\n return;\n }\n var [, to] = Editor.first(editor, []);\n var span = [pointBeforeLocation.path, to];\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the previous node from the root node!\");\n }\n if (match2 == null) {\n if (Path.isPath(at)) {\n var [parent2] = Editor.parent(editor, at);\n match2 = (n5) => parent2.children.includes(n5);\n } else {\n match2 = () => true;\n }\n }\n var [previous] = Editor.nodes(editor, {\n reverse: true,\n at: span,\n match: match2,\n mode,\n voids\n });\n return previous;\n },\n range(editor, at, to) {\n if (Range.isRange(at) && !to) {\n return at;\n }\n var start3 = Editor.start(editor, at);\n var end3 = Editor.end(editor, to || at);\n return {\n anchor: start3,\n focus: end3\n };\n },\n rangeRef(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n affinity = \"forward\"\n } = options;\n var ref = {\n current: range,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var rangeRefs = Editor.rangeRefs(editor);\n rangeRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.rangeRefs(editor);\n refs.add(ref);\n return ref;\n },\n rangeRefs(editor) {\n var refs = RANGE_REFS.get(editor);\n if (!refs) {\n refs = /* @__PURE__ */ new Set();\n RANGE_REFS.set(editor, refs);\n }\n return refs;\n },\n removeMark(editor, key) {\n editor.removeMark(key);\n },\n setNormalizing(editor, isNormalizing) {\n NORMALIZING.set(editor, isNormalizing);\n },\n start(editor, at) {\n return Editor.point(editor, at, {\n edge: \"start\"\n });\n },\n string(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var range = Editor.range(editor, at);\n var [start3, end3] = Range.edges(range);\n var text5 = \"\";\n for (var [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText,\n voids\n })) {\n var t4 = node.text;\n if (Path.equals(path, end3.path)) {\n t4 = t4.slice(0, end3.offset);\n }\n if (Path.equals(path, start3.path)) {\n t4 = t4.slice(start3.offset);\n }\n text5 += t4;\n }\n return text5;\n },\n unhangRange(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var [start3, end3] = Range.edges(range);\n if (start3.offset !== 0 || end3.offset !== 0 || Range.isCollapsed(range)) {\n return range;\n }\n var endBlock = Editor.above(editor, {\n at: end3,\n match: (n5) => Editor.isBlock(editor, n5)\n });\n var blockPath = endBlock ? endBlock[1] : [];\n var first = Editor.start(editor, start3);\n var before = {\n anchor: first,\n focus: end3\n };\n var skip = true;\n for (var [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n voids\n })) {\n if (skip) {\n skip = false;\n continue;\n }\n if (node.text !== \"\" || Path.isBefore(path, blockPath)) {\n end3 = {\n path,\n offset: node.text.length\n };\n break;\n }\n }\n return {\n anchor: start3,\n focus: end3\n };\n },\n void(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n return Editor.above(editor, _objectSpread$8(_objectSpread$8({}, options), {}, {\n match: (n5) => Editor.isVoid(editor, n5)\n }));\n },\n withoutNormalizing(editor, fn7) {\n var value = Editor.isNormalizing(editor);\n Editor.setNormalizing(editor, false);\n try {\n fn7();\n } finally {\n Editor.setNormalizing(editor, value);\n }\n Editor.normalize(editor);\n }\n};\nvar Span = {\n isSpan(value) {\n return Array.isArray(value) && value.length === 2 && value.every(Path.isPath);\n }\n};\nvar _excluded$3 = [\"children\"];\nvar _excluded2$2 = [\"text\"];\nvar IS_NODE_LIST_CACHE = /* @__PURE__ */ new WeakMap();\nvar Node2 = {\n ancestor(root5, path) {\n var node = Node2.get(root5, path);\n if (Text.isText(node)) {\n throw new Error(\"Cannot get the ancestor node at path [\".concat(path, \"] because it refers to a text node instead: \").concat(node));\n }\n return node;\n },\n *ancestors(root5, path) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n for (var p4 of Path.ancestors(path, options)) {\n var n5 = Node2.ancestor(root5, p4);\n var entry = [n5, p4];\n yield entry;\n }\n },\n child(root5, index7) {\n if (Text.isText(root5)) {\n throw new Error(\"Cannot get the child of a text node: \".concat(JSON.stringify(root5)));\n }\n var c3 = root5.children[index7];\n if (c3 == null) {\n throw new Error(\"Cannot get child at index `\".concat(index7, \"` in node: \").concat(JSON.stringify(root5)));\n }\n return c3;\n },\n *children(root5, path) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n reverse = false\n } = options;\n var ancestor = Node2.ancestor(root5, path);\n var {\n children\n } = ancestor;\n var index7 = reverse ? children.length - 1 : 0;\n while (reverse ? index7 >= 0 : index7 < children.length) {\n var child = Node2.child(ancestor, index7);\n var childPath = path.concat(index7);\n yield [child, childPath];\n index7 = reverse ? index7 - 1 : index7 + 1;\n }\n },\n common(root5, path, another) {\n var p4 = Path.common(path, another);\n var n5 = Node2.get(root5, p4);\n return [n5, p4];\n },\n descendant(root5, path) {\n var node = Node2.get(root5, path);\n if (Editor.isEditor(node)) {\n throw new Error(\"Cannot get the descendant node at path [\".concat(path, \"] because it refers to the root editor node instead: \").concat(node));\n }\n return node;\n },\n *descendants(root5) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n for (var [node, path] of Node2.nodes(root5, options)) {\n if (path.length !== 0) {\n yield [node, path];\n }\n }\n },\n *elements(root5) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n for (var [node, path] of Node2.nodes(root5, options)) {\n if (Element2.isElement(node)) {\n yield [node, path];\n }\n }\n },\n extractProps(node) {\n if (Element2.isAncestor(node)) {\n var properties = _objectWithoutProperties(node, _excluded$3);\n return properties;\n } else {\n var properties = _objectWithoutProperties(node, _excluded2$2);\n return properties;\n }\n },\n first(root5, path) {\n var p4 = path.slice();\n var n5 = Node2.get(root5, p4);\n while (n5) {\n if (Text.isText(n5) || n5.children.length === 0) {\n break;\n } else {\n n5 = n5.children[0];\n p4.push(0);\n }\n }\n return [n5, p4];\n },\n fragment(root5, range) {\n if (Text.isText(root5)) {\n throw new Error(\"Cannot get a fragment starting from a root text node: \".concat(JSON.stringify(root5)));\n }\n var newRoot = fn({\n children: root5.children\n }, (r5) => {\n var [start3, end3] = Range.edges(range);\n var nodeEntries = Node2.nodes(r5, {\n reverse: true,\n pass: (_ref) => {\n var [, path2] = _ref;\n return !Range.includes(range, path2);\n }\n });\n for (var [, path] of nodeEntries) {\n if (!Range.includes(range, path)) {\n var parent2 = Node2.parent(r5, path);\n var index7 = path[path.length - 1];\n parent2.children.splice(index7, 1);\n }\n if (Path.equals(path, end3.path)) {\n var leaf = Node2.leaf(r5, path);\n leaf.text = leaf.text.slice(0, end3.offset);\n }\n if (Path.equals(path, start3.path)) {\n var _leaf = Node2.leaf(r5, path);\n _leaf.text = _leaf.text.slice(start3.offset);\n }\n }\n if (Editor.isEditor(r5)) {\n r5.selection = null;\n }\n });\n return newRoot.children;\n },\n get(root5, path) {\n var node = root5;\n for (var i3 = 0; i3 < path.length; i3++) {\n var p4 = path[i3];\n if (Text.isText(node) || !node.children[p4]) {\n throw new Error(\"Cannot find a descendant at path [\".concat(path, \"] in node: \").concat(JSON.stringify(root5)));\n }\n node = node.children[p4];\n }\n return node;\n },\n has(root5, path) {\n var node = root5;\n for (var i3 = 0; i3 < path.length; i3++) {\n var p4 = path[i3];\n if (Text.isText(node) || !node.children[p4]) {\n return false;\n }\n node = node.children[p4];\n }\n return true;\n },\n isNode(value) {\n return Text.isText(value) || Element2.isElement(value) || Editor.isEditor(value);\n },\n isNodeList(value) {\n if (!Array.isArray(value)) {\n return false;\n }\n var cachedResult = IS_NODE_LIST_CACHE.get(value);\n if (cachedResult !== void 0) {\n return cachedResult;\n }\n var isNodeList3 = value.every((val) => Node2.isNode(val));\n IS_NODE_LIST_CACHE.set(value, isNodeList3);\n return isNodeList3;\n },\n last(root5, path) {\n var p4 = path.slice();\n var n5 = Node2.get(root5, p4);\n while (n5) {\n if (Text.isText(n5) || n5.children.length === 0) {\n break;\n } else {\n var i3 = n5.children.length - 1;\n n5 = n5.children[i3];\n p4.push(i3);\n }\n }\n return [n5, p4];\n },\n leaf(root5, path) {\n var node = Node2.get(root5, path);\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the leaf node at path [\".concat(path, \"] because it refers to a non-leaf node: \").concat(node));\n }\n return node;\n },\n *levels(root5, path) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n for (var p4 of Path.levels(path, options)) {\n var n5 = Node2.get(root5, p4);\n yield [n5, p4];\n }\n },\n matches(node, props) {\n return Element2.isElement(node) && Element2.isElementProps(props) && Element2.matches(node, props) || Text.isText(node) && Text.isTextProps(props) && Text.matches(node, props);\n },\n *nodes(root5) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n pass,\n reverse = false\n } = options;\n var {\n from = [],\n to\n } = options;\n var visited = /* @__PURE__ */ new Set();\n var p4 = [];\n var n5 = root5;\n while (true) {\n if (to && (reverse ? Path.isBefore(p4, to) : Path.isAfter(p4, to))) {\n break;\n }\n if (!visited.has(n5)) {\n yield [n5, p4];\n }\n if (!visited.has(n5) && !Text.isText(n5) && n5.children.length !== 0 && (pass == null || pass([n5, p4]) === false)) {\n visited.add(n5);\n var nextIndex = reverse ? n5.children.length - 1 : 0;\n if (Path.isAncestor(p4, from)) {\n nextIndex = from[p4.length];\n }\n p4 = p4.concat(nextIndex);\n n5 = Node2.get(root5, p4);\n continue;\n }\n if (p4.length === 0) {\n break;\n }\n if (!reverse) {\n var newPath = Path.next(p4);\n if (Node2.has(root5, newPath)) {\n p4 = newPath;\n n5 = Node2.get(root5, p4);\n continue;\n }\n }\n if (reverse && p4[p4.length - 1] !== 0) {\n var _newPath = Path.previous(p4);\n p4 = _newPath;\n n5 = Node2.get(root5, p4);\n continue;\n }\n p4 = Path.parent(p4);\n n5 = Node2.get(root5, p4);\n visited.add(n5);\n }\n },\n parent(root5, path) {\n var parentPath = Path.parent(path);\n var p4 = Node2.get(root5, parentPath);\n if (Text.isText(p4)) {\n throw new Error(\"Cannot get the parent of path [\".concat(path, \"] because it does not exist in the root.\"));\n }\n return p4;\n },\n string(node) {\n if (Text.isText(node)) {\n return node.text;\n } else {\n return node.children.map(Node2.string).join(\"\");\n }\n },\n *texts(root5) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n for (var [node, path] of Node2.nodes(root5, options)) {\n if (Text.isText(node)) {\n yield [node, path];\n }\n }\n }\n};\nfunction ownKeys$7(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$7(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$7(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$7(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Operation = {\n isNodeOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith(\"_node\");\n },\n isOperation(value) {\n if (!isPlainObject(value)) {\n return false;\n }\n switch (value.type) {\n case \"insert_node\":\n return Path.isPath(value.path) && Node2.isNode(value.node);\n case \"insert_text\":\n return typeof value.offset === \"number\" && typeof value.text === \"string\" && Path.isPath(value.path);\n case \"merge_node\":\n return typeof value.position === \"number\" && Path.isPath(value.path) && isPlainObject(value.properties);\n case \"move_node\":\n return Path.isPath(value.path) && Path.isPath(value.newPath);\n case \"remove_node\":\n return Path.isPath(value.path) && Node2.isNode(value.node);\n case \"remove_text\":\n return typeof value.offset === \"number\" && typeof value.text === \"string\" && Path.isPath(value.path);\n case \"set_node\":\n return Path.isPath(value.path) && isPlainObject(value.properties) && isPlainObject(value.newProperties);\n case \"set_selection\":\n return value.properties === null && Range.isRange(value.newProperties) || value.newProperties === null && Range.isRange(value.properties) || isPlainObject(value.properties) && isPlainObject(value.newProperties);\n case \"split_node\":\n return Path.isPath(value.path) && typeof value.position === \"number\" && isPlainObject(value.properties);\n default:\n return false;\n }\n },\n isOperationList(value) {\n return Array.isArray(value) && value.every((val) => Operation.isOperation(val));\n },\n isSelectionOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith(\"_selection\");\n },\n isTextOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith(\"_text\");\n },\n inverse(op) {\n switch (op.type) {\n case \"insert_node\": {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: \"remove_node\"\n });\n }\n case \"insert_text\": {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: \"remove_text\"\n });\n }\n case \"merge_node\": {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: \"split_node\",\n path: Path.previous(op.path)\n });\n }\n case \"move_node\": {\n var {\n newPath,\n path\n } = op;\n if (Path.equals(newPath, path)) {\n return op;\n }\n if (Path.isSibling(path, newPath)) {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n path: newPath,\n newPath: path\n });\n }\n var inversePath = Path.transform(path, op);\n var inverseNewPath = Path.transform(Path.next(path), op);\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n path: inversePath,\n newPath: inverseNewPath\n });\n }\n case \"remove_node\": {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: \"insert_node\"\n });\n }\n case \"remove_text\": {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: \"insert_text\"\n });\n }\n case \"set_node\": {\n var {\n properties,\n newProperties\n } = op;\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n properties: newProperties,\n newProperties: properties\n });\n }\n case \"set_selection\": {\n var {\n properties: _properties,\n newProperties: _newProperties\n } = op;\n if (_properties == null) {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n properties: _newProperties,\n newProperties: null\n });\n } else if (_newProperties == null) {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n properties: null,\n newProperties: _properties\n });\n } else {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n properties: _newProperties,\n newProperties: _properties\n });\n }\n }\n case \"split_node\": {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: \"merge_node\",\n path: Path.next(op.path)\n });\n }\n }\n }\n};\nvar Path = {\n ancestors(path) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var paths = Path.levels(path, options);\n if (reverse) {\n paths = paths.slice(1);\n } else {\n paths = paths.slice(0, -1);\n }\n return paths;\n },\n common(path, another) {\n var common = [];\n for (var i3 = 0; i3 < path.length && i3 < another.length; i3++) {\n var av = path[i3];\n var bv = another[i3];\n if (av !== bv) {\n break;\n }\n common.push(av);\n }\n return common;\n },\n compare(path, another) {\n var min3 = Math.min(path.length, another.length);\n for (var i3 = 0; i3 < min3; i3++) {\n if (path[i3] < another[i3])\n return -1;\n if (path[i3] > another[i3])\n return 1;\n }\n return 0;\n },\n endsAfter(path, another) {\n var i3 = path.length - 1;\n var as = path.slice(0, i3);\n var bs = another.slice(0, i3);\n var av = path[i3];\n var bv = another[i3];\n return Path.equals(as, bs) && av > bv;\n },\n endsAt(path, another) {\n var i3 = path.length;\n var as = path.slice(0, i3);\n var bs = another.slice(0, i3);\n return Path.equals(as, bs);\n },\n endsBefore(path, another) {\n var i3 = path.length - 1;\n var as = path.slice(0, i3);\n var bs = another.slice(0, i3);\n var av = path[i3];\n var bv = another[i3];\n return Path.equals(as, bs) && av < bv;\n },\n equals(path, another) {\n return path.length === another.length && path.every((n5, i3) => n5 === another[i3]);\n },\n hasPrevious(path) {\n return path[path.length - 1] > 0;\n },\n isAfter(path, another) {\n return Path.compare(path, another) === 1;\n },\n isAncestor(path, another) {\n return path.length < another.length && Path.compare(path, another) === 0;\n },\n isBefore(path, another) {\n return Path.compare(path, another) === -1;\n },\n isChild(path, another) {\n return path.length === another.length + 1 && Path.compare(path, another) === 0;\n },\n isCommon(path, another) {\n return path.length <= another.length && Path.compare(path, another) === 0;\n },\n isDescendant(path, another) {\n return path.length > another.length && Path.compare(path, another) === 0;\n },\n isParent(path, another) {\n return path.length + 1 === another.length && Path.compare(path, another) === 0;\n },\n isPath(value) {\n return Array.isArray(value) && (value.length === 0 || typeof value[0] === \"number\");\n },\n isSibling(path, another) {\n if (path.length !== another.length) {\n return false;\n }\n var as = path.slice(0, -1);\n var bs = another.slice(0, -1);\n var al = path[path.length - 1];\n var bl = another[another.length - 1];\n return al !== bl && Path.equals(as, bs);\n },\n levels(path) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var list = [];\n for (var i3 = 0; i3 <= path.length; i3++) {\n list.push(path.slice(0, i3));\n }\n if (reverse) {\n list.reverse();\n }\n return list;\n },\n next(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the next path of a root path [\".concat(path, \"], because it has no next index.\"));\n }\n var last2 = path[path.length - 1];\n return path.slice(0, -1).concat(last2 + 1);\n },\n operationCanTransformPath(operation) {\n switch (operation.type) {\n case \"insert_node\":\n case \"remove_node\":\n case \"merge_node\":\n case \"split_node\":\n case \"move_node\":\n return true;\n default:\n return false;\n }\n },\n parent(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the parent path of the root path [\".concat(path, \"].\"));\n }\n return path.slice(0, -1);\n },\n previous(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the previous path of a root path [\".concat(path, \"], because it has no previous index.\"));\n }\n var last2 = path[path.length - 1];\n if (last2 <= 0) {\n throw new Error(\"Cannot get the previous path of a first child path [\".concat(path, \"] because it would result in a negative index.\"));\n }\n return path.slice(0, -1).concat(last2 - 1);\n },\n relative(path, ancestor) {\n if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n throw new Error(\"Cannot get the relative path of [\".concat(path, \"] inside ancestor [\").concat(ancestor, \"], because it is not above or equal to the path.\"));\n }\n return path.slice(ancestor.length);\n },\n transform(path, operation) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return fn(path, (p4) => {\n var {\n affinity = \"forward\"\n } = options;\n if (!path || (path === null || path === void 0 ? void 0 : path.length) === 0) {\n return;\n }\n if (p4 === null) {\n return null;\n }\n switch (operation.type) {\n case \"insert_node\": {\n var {\n path: op\n } = operation;\n if (Path.equals(op, p4) || Path.endsBefore(op, p4) || Path.isAncestor(op, p4)) {\n p4[op.length - 1] += 1;\n }\n break;\n }\n case \"remove_node\": {\n var {\n path: _op\n } = operation;\n if (Path.equals(_op, p4) || Path.isAncestor(_op, p4)) {\n return null;\n } else if (Path.endsBefore(_op, p4)) {\n p4[_op.length - 1] -= 1;\n }\n break;\n }\n case \"merge_node\": {\n var {\n path: _op2,\n position\n } = operation;\n if (Path.equals(_op2, p4) || Path.endsBefore(_op2, p4)) {\n p4[_op2.length - 1] -= 1;\n } else if (Path.isAncestor(_op2, p4)) {\n p4[_op2.length - 1] -= 1;\n p4[_op2.length] += position;\n }\n break;\n }\n case \"split_node\": {\n var {\n path: _op3,\n position: _position\n } = operation;\n if (Path.equals(_op3, p4)) {\n if (affinity === \"forward\") {\n p4[p4.length - 1] += 1;\n } else if (affinity === \"backward\")\n ;\n else {\n return null;\n }\n } else if (Path.endsBefore(_op3, p4)) {\n p4[_op3.length - 1] += 1;\n } else if (Path.isAncestor(_op3, p4) && path[_op3.length] >= _position) {\n p4[_op3.length - 1] += 1;\n p4[_op3.length] -= _position;\n }\n break;\n }\n case \"move_node\": {\n var {\n path: _op4,\n newPath: onp\n } = operation;\n if (Path.equals(_op4, onp)) {\n return;\n }\n if (Path.isAncestor(_op4, p4) || Path.equals(_op4, p4)) {\n var copy = onp.slice();\n if (Path.endsBefore(_op4, onp) && _op4.length < onp.length) {\n copy[_op4.length - 1] -= 1;\n }\n return copy.concat(p4.slice(_op4.length));\n } else if (Path.isSibling(_op4, onp) && (Path.isAncestor(onp, p4) || Path.equals(onp, p4))) {\n if (Path.endsBefore(_op4, p4)) {\n p4[_op4.length - 1] -= 1;\n } else {\n p4[_op4.length - 1] += 1;\n }\n } else if (Path.endsBefore(onp, p4) || Path.equals(onp, p4) || Path.isAncestor(onp, p4)) {\n if (Path.endsBefore(_op4, p4)) {\n p4[_op4.length - 1] -= 1;\n }\n p4[onp.length - 1] += 1;\n } else if (Path.endsBefore(_op4, p4)) {\n if (Path.equals(onp, p4)) {\n p4[onp.length - 1] += 1;\n }\n p4[_op4.length - 1] -= 1;\n }\n break;\n }\n }\n });\n }\n};\nvar PathRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var path = Path.transform(current, op, {\n affinity\n });\n ref.current = path;\n if (path == null) {\n ref.unref();\n }\n }\n};\nfunction ownKeys$6(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$6(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$6(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$6(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Point = {\n compare(point, another) {\n var result = Path.compare(point.path, another.path);\n if (result === 0) {\n if (point.offset < another.offset)\n return -1;\n if (point.offset > another.offset)\n return 1;\n return 0;\n }\n return result;\n },\n isAfter(point, another) {\n return Point.compare(point, another) === 1;\n },\n isBefore(point, another) {\n return Point.compare(point, another) === -1;\n },\n equals(point, another) {\n return point.offset === another.offset && Path.equals(point.path, another.path);\n },\n isPoint(value) {\n return isPlainObject(value) && typeof value.offset === \"number\" && Path.isPath(value.path);\n },\n transform(point, op) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return fn(point, (p4) => {\n if (p4 === null) {\n return null;\n }\n var {\n affinity = \"forward\"\n } = options;\n var {\n path,\n offset: offset3\n } = p4;\n switch (op.type) {\n case \"insert_node\":\n case \"move_node\": {\n p4.path = Path.transform(path, op, options);\n break;\n }\n case \"insert_text\": {\n if (Path.equals(op.path, path) && (op.offset < offset3 || op.offset === offset3 && affinity === \"forward\")) {\n p4.offset += op.text.length;\n }\n break;\n }\n case \"merge_node\": {\n if (Path.equals(op.path, path)) {\n p4.offset += op.position;\n }\n p4.path = Path.transform(path, op, options);\n break;\n }\n case \"remove_text\": {\n if (Path.equals(op.path, path) && op.offset <= offset3) {\n p4.offset -= Math.min(offset3 - op.offset, op.text.length);\n }\n break;\n }\n case \"remove_node\": {\n if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n return null;\n }\n p4.path = Path.transform(path, op, options);\n break;\n }\n case \"split_node\": {\n if (Path.equals(op.path, path)) {\n if (op.position === offset3 && affinity == null) {\n return null;\n } else if (op.position < offset3 || op.position === offset3 && affinity === \"forward\") {\n p4.offset -= op.position;\n p4.path = Path.transform(path, op, _objectSpread$6(_objectSpread$6({}, options), {}, {\n affinity: \"forward\"\n }));\n }\n } else {\n p4.path = Path.transform(path, op, options);\n }\n break;\n }\n }\n });\n }\n};\nvar PointRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var point = Point.transform(current, op, {\n affinity\n });\n ref.current = point;\n if (point == null) {\n ref.unref();\n }\n }\n};\nvar _excluded$2 = [\"anchor\", \"focus\"];\nfunction ownKeys$5(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$5(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$5(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$5(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Range = {\n edges(range) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var {\n anchor,\n focus\n } = range;\n return Range.isBackward(range) === reverse ? [anchor, focus] : [focus, anchor];\n },\n end(range) {\n var [, end3] = Range.edges(range);\n return end3;\n },\n equals(range, another) {\n return Point.equals(range.anchor, another.anchor) && Point.equals(range.focus, another.focus);\n },\n includes(range, target) {\n if (Range.isRange(target)) {\n if (Range.includes(range, target.anchor) || Range.includes(range, target.focus)) {\n return true;\n }\n var [rs, re] = Range.edges(range);\n var [ts, te2] = Range.edges(target);\n return Point.isBefore(rs, ts) && Point.isAfter(re, te2);\n }\n var [start3, end3] = Range.edges(range);\n var isAfterStart = false;\n var isBeforeEnd = false;\n if (Point.isPoint(target)) {\n isAfterStart = Point.compare(target, start3) >= 0;\n isBeforeEnd = Point.compare(target, end3) <= 0;\n } else {\n isAfterStart = Path.compare(target, start3.path) >= 0;\n isBeforeEnd = Path.compare(target, end3.path) <= 0;\n }\n return isAfterStart && isBeforeEnd;\n },\n intersection(range, another) {\n var rest = _objectWithoutProperties(range, _excluded$2);\n var [s1, e1] = Range.edges(range);\n var [s22, e2] = Range.edges(another);\n var start3 = Point.isBefore(s1, s22) ? s22 : s1;\n var end3 = Point.isBefore(e1, e2) ? e1 : e2;\n if (Point.isBefore(end3, start3)) {\n return null;\n } else {\n return _objectSpread$5({\n anchor: start3,\n focus: end3\n }, rest);\n }\n },\n isBackward(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.isAfter(anchor, focus);\n },\n isCollapsed(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.equals(anchor, focus);\n },\n isExpanded(range) {\n return !Range.isCollapsed(range);\n },\n isForward(range) {\n return !Range.isBackward(range);\n },\n isRange(value) {\n return isPlainObject(value) && Point.isPoint(value.anchor) && Point.isPoint(value.focus);\n },\n *points(range) {\n yield [range.anchor, \"anchor\"];\n yield [range.focus, \"focus\"];\n },\n start(range) {\n var [start3] = Range.edges(range);\n return start3;\n },\n transform(range, op) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return fn(range, (r5) => {\n if (r5 === null) {\n return null;\n }\n var {\n affinity = \"inward\"\n } = options;\n var affinityAnchor;\n var affinityFocus;\n if (affinity === \"inward\") {\n var isCollapsed2 = Range.isCollapsed(r5);\n if (Range.isForward(r5)) {\n affinityAnchor = \"forward\";\n affinityFocus = isCollapsed2 ? affinityAnchor : \"backward\";\n } else {\n affinityAnchor = \"backward\";\n affinityFocus = isCollapsed2 ? affinityAnchor : \"forward\";\n }\n } else if (affinity === \"outward\") {\n if (Range.isForward(r5)) {\n affinityAnchor = \"backward\";\n affinityFocus = \"forward\";\n } else {\n affinityAnchor = \"forward\";\n affinityFocus = \"backward\";\n }\n } else {\n affinityAnchor = affinity;\n affinityFocus = affinity;\n }\n var anchor = Point.transform(r5.anchor, op, {\n affinity: affinityAnchor\n });\n var focus = Point.transform(r5.focus, op, {\n affinity: affinityFocus\n });\n if (!anchor || !focus) {\n return null;\n }\n r5.anchor = anchor;\n r5.focus = focus;\n });\n }\n};\nvar RangeRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var path = Range.transform(current, op, {\n affinity\n });\n ref.current = path;\n if (path == null) {\n ref.unref();\n }\n }\n};\nvar isDeepEqual = (node, another) => {\n for (var key in node) {\n var a5 = node[key];\n var b4 = another[key];\n if (isPlainObject(a5) && isPlainObject(b4)) {\n if (!isDeepEqual(a5, b4))\n return false;\n } else if (Array.isArray(a5) && Array.isArray(b4)) {\n if (a5.length !== b4.length)\n return false;\n for (var i3 = 0; i3 < a5.length; i3++) {\n if (a5[i3] !== b4[i3])\n return false;\n }\n } else if (a5 !== b4) {\n return false;\n }\n }\n for (var _key in another) {\n if (node[_key] === void 0 && another[_key] !== void 0) {\n return false;\n }\n }\n return true;\n};\nvar _excluded$1 = [\"text\"];\nvar _excluded2$1 = [\"anchor\", \"focus\"];\nfunction ownKeys$4(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$4(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$4(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$4(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Text = {\n equals(text5, another) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n loose = false\n } = options;\n function omitText(obj) {\n var rest = _objectWithoutProperties(obj, _excluded$1);\n return rest;\n }\n return isDeepEqual(loose ? omitText(text5) : text5, loose ? omitText(another) : another);\n },\n isText(value) {\n return isPlainObject(value) && typeof value.text === \"string\";\n },\n isTextList(value) {\n return Array.isArray(value) && value.every((val) => Text.isText(val));\n },\n isTextProps(props) {\n return props.text !== void 0;\n },\n matches(text5, props) {\n for (var key in props) {\n if (key === \"text\") {\n continue;\n }\n if (!text5.hasOwnProperty(key) || text5[key] !== props[key]) {\n return false;\n }\n }\n return true;\n },\n decorations(node, decorations) {\n var leaves = [_objectSpread$4({}, node)];\n for (var dec of decorations) {\n var rest = _objectWithoutProperties(dec, _excluded2$1);\n var [start3, end3] = Range.edges(dec);\n var next = [];\n var o3 = 0;\n for (var leaf of leaves) {\n var {\n length\n } = leaf.text;\n var offset3 = o3;\n o3 += length;\n if (start3.offset <= offset3 && end3.offset >= o3) {\n Object.assign(leaf, rest);\n next.push(leaf);\n continue;\n }\n if (start3.offset !== end3.offset && (start3.offset === o3 || end3.offset === offset3) || start3.offset > o3 || end3.offset < offset3 || end3.offset === offset3 && offset3 !== 0) {\n next.push(leaf);\n continue;\n }\n var middle = leaf;\n var before = void 0;\n var after = void 0;\n if (end3.offset < o3) {\n var off2 = end3.offset - offset3;\n after = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n text: middle.text.slice(off2)\n });\n middle = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n text: middle.text.slice(0, off2)\n });\n }\n if (start3.offset > offset3) {\n var _off = start3.offset - offset3;\n before = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n text: middle.text.slice(0, _off)\n });\n middle = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n text: middle.text.slice(_off)\n });\n }\n Object.assign(middle, rest);\n if (before) {\n next.push(before);\n }\n next.push(middle);\n if (after) {\n next.push(after);\n }\n }\n leaves = next;\n }\n return leaves;\n }\n};\nfunction ownKeys$3(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$3(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$3(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$3(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar applyToDraft = (editor, selection, op) => {\n switch (op.type) {\n case \"insert_node\": {\n var {\n path,\n node\n } = op;\n var parent2 = Node2.parent(editor, path);\n var index7 = path[path.length - 1];\n if (index7 > parent2.children.length) {\n throw new Error('Cannot apply an \"insert_node\" operation at path ['.concat(path, \"] because the destination is past the end of the node.\"));\n }\n parent2.children.splice(index7, 0, node);\n if (selection) {\n for (var [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op);\n }\n }\n break;\n }\n case \"insert_text\": {\n var {\n path: _path,\n offset: offset3,\n text: text5\n } = op;\n if (text5.length === 0)\n break;\n var _node = Node2.leaf(editor, _path);\n var before = _node.text.slice(0, offset3);\n var after = _node.text.slice(offset3);\n _node.text = before + text5 + after;\n if (selection) {\n for (var [_point, _key] of Range.points(selection)) {\n selection[_key] = Point.transform(_point, op);\n }\n }\n break;\n }\n case \"merge_node\": {\n var {\n path: _path2\n } = op;\n var _node2 = Node2.get(editor, _path2);\n var prevPath = Path.previous(_path2);\n var prev = Node2.get(editor, prevPath);\n var _parent2 = Node2.parent(editor, _path2);\n var _index = _path2[_path2.length - 1];\n if (Text.isText(_node2) && Text.isText(prev)) {\n prev.text += _node2.text;\n } else if (!Text.isText(_node2) && !Text.isText(prev)) {\n prev.children.push(..._node2.children);\n } else {\n throw new Error('Cannot apply a \"merge_node\" operation at path ['.concat(_path2, \"] to nodes of different interfaces: \").concat(_node2, \" \").concat(prev));\n }\n _parent2.children.splice(_index, 1);\n if (selection) {\n for (var [_point2, _key2] of Range.points(selection)) {\n selection[_key2] = Point.transform(_point2, op);\n }\n }\n break;\n }\n case \"move_node\": {\n var {\n path: _path3,\n newPath\n } = op;\n if (Path.isAncestor(_path3, newPath)) {\n throw new Error(\"Cannot move a path [\".concat(_path3, \"] to new path [\").concat(newPath, \"] because the destination is inside itself.\"));\n }\n var _node3 = Node2.get(editor, _path3);\n var _parent22 = Node2.parent(editor, _path3);\n var _index2 = _path3[_path3.length - 1];\n _parent22.children.splice(_index2, 1);\n var truePath = Path.transform(_path3, op);\n var newParent = Node2.get(editor, Path.parent(truePath));\n var newIndex = truePath[truePath.length - 1];\n newParent.children.splice(newIndex, 0, _node3);\n if (selection) {\n for (var [_point3, _key3] of Range.points(selection)) {\n selection[_key3] = Point.transform(_point3, op);\n }\n }\n break;\n }\n case \"remove_node\": {\n var {\n path: _path4\n } = op;\n var _index3 = _path4[_path4.length - 1];\n var _parent3 = Node2.parent(editor, _path4);\n _parent3.children.splice(_index3, 1);\n if (selection) {\n for (var [_point4, _key4] of Range.points(selection)) {\n var result = Point.transform(_point4, op);\n if (selection != null && result != null) {\n selection[_key4] = result;\n } else {\n var _prev = void 0;\n var next = void 0;\n for (var [n5, p4] of Node2.texts(editor)) {\n if (Path.compare(p4, _path4) === -1) {\n _prev = [n5, p4];\n } else {\n next = [n5, p4];\n break;\n }\n }\n var preferNext = false;\n if (_prev && next) {\n if (Path.equals(next[1], _path4)) {\n preferNext = !Path.hasPrevious(next[1]);\n } else {\n preferNext = Path.common(_prev[1], _path4).length < Path.common(next[1], _path4).length;\n }\n }\n if (_prev && !preferNext) {\n _point4.path = _prev[1];\n _point4.offset = _prev[0].text.length;\n } else if (next) {\n _point4.path = next[1];\n _point4.offset = 0;\n } else {\n selection = null;\n }\n }\n }\n }\n break;\n }\n case \"remove_text\": {\n var {\n path: _path5,\n offset: _offset,\n text: _text\n } = op;\n if (_text.length === 0)\n break;\n var _node4 = Node2.leaf(editor, _path5);\n var _before = _node4.text.slice(0, _offset);\n var _after = _node4.text.slice(_offset + _text.length);\n _node4.text = _before + _after;\n if (selection) {\n for (var [_point5, _key5] of Range.points(selection)) {\n selection[_key5] = Point.transform(_point5, op);\n }\n }\n break;\n }\n case \"set_node\": {\n var {\n path: _path6,\n properties,\n newProperties\n } = op;\n if (_path6.length === 0) {\n throw new Error(\"Cannot set properties on the root node!\");\n }\n var _node5 = Node2.get(editor, _path6);\n for (var _key6 in newProperties) {\n if (_key6 === \"children\" || _key6 === \"text\") {\n throw new Error('Cannot set the \"'.concat(_key6, '\" property of nodes!'));\n }\n var value = newProperties[_key6];\n if (value == null) {\n delete _node5[_key6];\n } else {\n _node5[_key6] = value;\n }\n }\n for (var _key7 in properties) {\n if (!newProperties.hasOwnProperty(_key7)) {\n delete _node5[_key7];\n }\n }\n break;\n }\n case \"set_selection\": {\n var {\n newProperties: _newProperties\n } = op;\n if (_newProperties == null) {\n selection = _newProperties;\n } else {\n if (selection == null) {\n if (!Range.isRange(_newProperties)) {\n throw new Error('Cannot apply an incomplete \"set_selection\" operation properties '.concat(JSON.stringify(_newProperties), \" when there is no current selection.\"));\n }\n selection = _objectSpread$3({}, _newProperties);\n }\n for (var _key8 in _newProperties) {\n var _value = _newProperties[_key8];\n if (_value == null) {\n if (_key8 === \"anchor\" || _key8 === \"focus\") {\n throw new Error('Cannot remove the \"'.concat(_key8, '\" selection property'));\n }\n delete selection[_key8];\n } else {\n selection[_key8] = _value;\n }\n }\n }\n break;\n }\n case \"split_node\": {\n var {\n path: _path7,\n position,\n properties: _properties\n } = op;\n if (_path7.length === 0) {\n throw new Error('Cannot apply a \"split_node\" operation at path ['.concat(_path7, \"] because the root node cannot be split.\"));\n }\n var _node6 = Node2.get(editor, _path7);\n var _parent4 = Node2.parent(editor, _path7);\n var _index4 = _path7[_path7.length - 1];\n var newNode;\n if (Text.isText(_node6)) {\n var _before2 = _node6.text.slice(0, position);\n var _after2 = _node6.text.slice(position);\n _node6.text = _before2;\n newNode = _objectSpread$3(_objectSpread$3({}, _properties), {}, {\n text: _after2\n });\n } else {\n var _before3 = _node6.children.slice(0, position);\n var _after3 = _node6.children.slice(position);\n _node6.children = _before3;\n newNode = _objectSpread$3(_objectSpread$3({}, _properties), {}, {\n children: _after3\n });\n }\n _parent4.children.splice(_index4 + 1, 0, newNode);\n if (selection) {\n for (var [_point6, _key9] of Range.points(selection)) {\n selection[_key9] = Point.transform(_point6, op);\n }\n }\n break;\n }\n }\n return selection;\n};\nvar GeneralTransforms = {\n transform(editor, op) {\n editor.children = ln(editor.children);\n var selection = editor.selection && ln(editor.selection);\n try {\n selection = applyToDraft(editor, selection, op);\n } finally {\n editor.children = dn(editor.children);\n if (selection) {\n editor.selection = r(selection) ? dn(selection) : selection;\n } else {\n editor.selection = null;\n }\n }\n }\n};\nvar _excluded = [\"text\"];\nvar _excluded2 = [\"children\"];\nfunction ownKeys$2(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$2(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$2(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$2(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar NodeTransforms = {\n insertNodes(editor, nodes) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = \"lowest\"\n } = options;\n var {\n at,\n match: match2,\n select\n } = options;\n if (Node2.isNode(nodes)) {\n nodes = [nodes];\n }\n if (nodes.length === 0) {\n return;\n }\n var [node] = nodes;\n if (!at) {\n if (editor.selection) {\n at = editor.selection;\n } else if (editor.children.length > 0) {\n at = Editor.end(editor, []);\n } else {\n at = [0];\n }\n select = true;\n }\n if (select == null) {\n select = false;\n }\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at);\n }\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end3] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end3);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n }\n if (Point.isPoint(at)) {\n if (match2 == null) {\n if (Text.isText(node)) {\n match2 = (n5) => Text.isText(n5);\n } else if (editor.isInline(node)) {\n match2 = (n5) => Text.isText(n5) || Editor.isInline(editor, n5);\n } else {\n match2 = (n5) => Editor.isBlock(editor, n5);\n }\n }\n var [entry] = Editor.nodes(editor, {\n at: at.path,\n match: match2,\n mode,\n voids\n });\n if (entry) {\n var [, _matchPath] = entry;\n var pathRef = Editor.pathRef(editor, _matchPath);\n var isAtEnd = Editor.isEnd(editor, at, _matchPath);\n Transforms.splitNodes(editor, {\n at,\n match: match2,\n mode,\n voids\n });\n var path = pathRef.unref();\n at = isAtEnd ? Path.next(path) : path;\n } else {\n return;\n }\n }\n var parentPath = Path.parent(at);\n var index7 = at[at.length - 1];\n if (!voids && Editor.void(editor, {\n at: parentPath\n })) {\n return;\n }\n for (var _node of nodes) {\n var _path = parentPath.concat(index7);\n index7++;\n editor.apply({\n type: \"insert_node\",\n path: _path,\n node: _node\n });\n at = Path.next(at);\n }\n at = Path.previous(at);\n if (select) {\n var point = Editor.end(editor, at);\n if (point) {\n Transforms.select(editor, point);\n }\n }\n });\n },\n liftNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n at = editor.selection,\n mode = \"lowest\",\n voids = false\n } = options;\n var {\n match: match2\n } = options;\n if (match2 == null) {\n match2 = Path.isPath(at) ? matchPath(editor, at) : (n5) => Editor.isBlock(editor, n5);\n }\n if (!at) {\n return;\n }\n var matches = Editor.nodes(editor, {\n at,\n match: match2,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, (_ref) => {\n var [, p4] = _ref;\n return Editor.pathRef(editor, p4);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n if (path.length < 2) {\n throw new Error(\"Cannot lift node at a path [\".concat(path, \"] because it has a depth of less than `2`.\"));\n }\n var parentNodeEntry = Editor.node(editor, Path.parent(path));\n var [parent2, parentPath] = parentNodeEntry;\n var index7 = path[path.length - 1];\n var {\n length\n } = parent2.children;\n if (length === 1) {\n var toPath = Path.next(parentPath);\n Transforms.moveNodes(editor, {\n at: path,\n to: toPath,\n voids\n });\n Transforms.removeNodes(editor, {\n at: parentPath,\n voids\n });\n } else if (index7 === 0) {\n Transforms.moveNodes(editor, {\n at: path,\n to: parentPath,\n voids\n });\n } else if (index7 === length - 1) {\n var _toPath = Path.next(parentPath);\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath,\n voids\n });\n } else {\n var splitPath = Path.next(path);\n var _toPath2 = Path.next(parentPath);\n Transforms.splitNodes(editor, {\n at: splitPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath2,\n voids\n });\n }\n }\n });\n },\n mergeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match: match2,\n at = editor.selection\n } = options;\n var {\n hanging = false,\n voids = false,\n mode = \"lowest\"\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n if (Path.isPath(at)) {\n var [parent2] = Editor.parent(editor, at);\n match2 = (n5) => parent2.children.includes(n5);\n } else {\n match2 = (n5) => Editor.isBlock(editor, n5);\n }\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end3] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end3);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n }\n var [current] = Editor.nodes(editor, {\n at,\n match: match2,\n voids,\n mode\n });\n var prev = Editor.previous(editor, {\n at,\n match: match2,\n voids,\n mode\n });\n if (!current || !prev) {\n return;\n }\n var [node, path] = current;\n var [prevNode, prevPath] = prev;\n if (path.length === 0 || prevPath.length === 0) {\n return;\n }\n var newPath = Path.next(prevPath);\n var commonPath = Path.common(path, prevPath);\n var isPreviousSibling = Path.isSibling(path, prevPath);\n var levels = Array.from(Editor.levels(editor, {\n at: path\n }), (_ref2) => {\n var [n5] = _ref2;\n return n5;\n }).slice(commonPath.length).slice(0, -1);\n var emptyAncestor = Editor.above(editor, {\n at: path,\n mode: \"highest\",\n match: (n5) => levels.includes(n5) && hasSingleChildNest(editor, n5)\n });\n var emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1]);\n var properties;\n var position;\n if (Text.isText(node) && Text.isText(prevNode)) {\n var rest = _objectWithoutProperties(node, _excluded);\n position = prevNode.text.length;\n properties = rest;\n } else if (Element2.isElement(node) && Element2.isElement(prevNode)) {\n var rest = _objectWithoutProperties(node, _excluded2);\n position = prevNode.children.length;\n properties = rest;\n } else {\n throw new Error(\"Cannot merge the node at path [\".concat(path, \"] with the previous sibling because it is not the same kind: \").concat(JSON.stringify(node), \" \").concat(JSON.stringify(prevNode)));\n }\n if (!isPreviousSibling) {\n Transforms.moveNodes(editor, {\n at: path,\n to: newPath,\n voids\n });\n }\n if (emptyRef) {\n Transforms.removeNodes(editor, {\n at: emptyRef.current,\n voids\n });\n }\n if (Element2.isElement(prevNode) && Editor.isEmpty(editor, prevNode) || Text.isText(prevNode) && prevNode.text === \"\" && prevPath[prevPath.length - 1] !== 0) {\n Transforms.removeNodes(editor, {\n at: prevPath,\n voids\n });\n } else {\n editor.apply({\n type: \"merge_node\",\n path: newPath,\n position,\n properties\n });\n }\n if (emptyRef) {\n emptyRef.unref();\n }\n });\n },\n moveNodes(editor, options) {\n Editor.withoutNormalizing(editor, () => {\n var {\n to,\n at = editor.selection,\n mode = \"lowest\",\n voids = false\n } = options;\n var {\n match: match2\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n match2 = Path.isPath(at) ? matchPath(editor, at) : (n5) => Editor.isBlock(editor, n5);\n }\n var toRef = Editor.pathRef(editor, to);\n var targets = Editor.nodes(editor, {\n at,\n match: match2,\n mode,\n voids\n });\n var pathRefs = Array.from(targets, (_ref3) => {\n var [, p4] = _ref3;\n return Editor.pathRef(editor, p4);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n var newPath = toRef.current;\n if (path.length !== 0) {\n editor.apply({\n type: \"move_node\",\n path,\n newPath\n });\n }\n if (toRef.current && Path.isSibling(newPath, path) && Path.isAfter(newPath, path)) {\n toRef.current = Path.next(toRef.current);\n }\n }\n toRef.unref();\n });\n },\n removeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = \"lowest\"\n } = options;\n var {\n at = editor.selection,\n match: match2\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n match2 = Path.isPath(at) ? matchPath(editor, at) : (n5) => Editor.isBlock(editor, n5);\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n var depths = Editor.nodes(editor, {\n at,\n match: match2,\n mode,\n voids\n });\n var pathRefs = Array.from(depths, (_ref4) => {\n var [, p4] = _ref4;\n return Editor.pathRef(editor, p4);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n if (path) {\n var [node] = Editor.node(editor, path);\n editor.apply({\n type: \"remove_node\",\n path,\n node\n });\n }\n }\n });\n },\n setNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match: match2,\n at = editor.selection,\n compare,\n merge: merge2\n } = options;\n var {\n hanging = false,\n mode = \"lowest\",\n split = false,\n voids = false\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n match2 = Path.isPath(at) ? matchPath(editor, at) : (n5) => Editor.isBlock(editor, n5);\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n if (split && Range.isRange(at)) {\n if (Range.isCollapsed(at) && Editor.leaf(editor, at.anchor)[0].text.length > 0) {\n return;\n }\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: \"inward\"\n });\n var [start3, end3] = Range.edges(at);\n var splitMode = mode === \"lowest\" ? \"lowest\" : \"highest\";\n var endAtEndOfNode = Editor.isEnd(editor, end3, end3.path);\n Transforms.splitNodes(editor, {\n at: end3,\n match: match2,\n mode: splitMode,\n voids,\n always: !endAtEndOfNode\n });\n var startAtStartOfNode = Editor.isStart(editor, start3, start3.path);\n Transforms.splitNodes(editor, {\n at: start3,\n match: match2,\n mode: splitMode,\n voids,\n always: !startAtStartOfNode\n });\n at = rangeRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n if (!compare) {\n compare = (prop, nodeProp) => prop !== nodeProp;\n }\n for (var [node, path] of Editor.nodes(editor, {\n at,\n match: match2,\n mode,\n voids\n })) {\n var properties = {};\n var newProperties = {};\n if (path.length === 0) {\n continue;\n }\n var hasChanges = false;\n for (var k4 in props) {\n if (k4 === \"children\" || k4 === \"text\") {\n continue;\n }\n if (compare(props[k4], node[k4])) {\n hasChanges = true;\n if (node.hasOwnProperty(k4))\n properties[k4] = node[k4];\n if (merge2) {\n if (props[k4] != null)\n newProperties[k4] = merge2(node[k4], props[k4]);\n } else {\n if (props[k4] != null)\n newProperties[k4] = props[k4];\n }\n }\n }\n if (hasChanges) {\n editor.apply({\n type: \"set_node\",\n path,\n properties,\n newProperties\n });\n }\n }\n });\n },\n splitNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = \"lowest\",\n voids = false\n } = options;\n var {\n match: match2,\n at = editor.selection,\n height = 0,\n always = false\n } = options;\n if (match2 == null) {\n match2 = (n5) => Editor.isBlock(editor, n5);\n }\n if (Range.isRange(at)) {\n at = deleteRange(editor, at);\n }\n if (Path.isPath(at)) {\n var path = at;\n var point = Editor.point(editor, path);\n var [parent2] = Editor.parent(editor, path);\n match2 = (n5) => n5 === parent2;\n height = point.path.length - path.length + 1;\n at = point;\n always = true;\n }\n if (!at) {\n return;\n }\n var beforeRef = Editor.pointRef(editor, at, {\n affinity: \"backward\"\n });\n var afterRef;\n try {\n var [highest] = Editor.nodes(editor, {\n at,\n match: match2,\n mode,\n voids\n });\n if (!highest) {\n return;\n }\n var voidMatch = Editor.void(editor, {\n at,\n mode: \"highest\"\n });\n var nudge = 0;\n if (!voids && voidMatch) {\n var [voidNode, voidPath] = voidMatch;\n if (Element2.isElement(voidNode) && editor.isInline(voidNode)) {\n var after = Editor.after(editor, voidPath);\n if (!after) {\n var text5 = {\n text: \"\"\n };\n var afterPath = Path.next(voidPath);\n Transforms.insertNodes(editor, text5, {\n at: afterPath,\n voids\n });\n after = Editor.point(editor, afterPath);\n }\n at = after;\n always = true;\n }\n var siblingHeight = at.path.length - voidPath.length;\n height = siblingHeight + 1;\n always = true;\n }\n afterRef = Editor.pointRef(editor, at);\n var depth = at.path.length - height;\n var [, highestPath] = highest;\n var lowestPath = at.path.slice(0, depth);\n var position = height === 0 ? at.offset : at.path[depth] + nudge;\n for (var [node, _path2] of Editor.levels(editor, {\n at: lowestPath,\n reverse: true,\n voids\n })) {\n var split = false;\n if (_path2.length < highestPath.length || _path2.length === 0 || !voids && Editor.isVoid(editor, node)) {\n break;\n }\n var _point = beforeRef.current;\n var isEnd2 = Editor.isEnd(editor, _point, _path2);\n if (always || !beforeRef || !Editor.isEdge(editor, _point, _path2)) {\n split = true;\n var properties = Node2.extractProps(node);\n editor.apply({\n type: \"split_node\",\n path: _path2,\n position,\n properties\n });\n }\n position = _path2[_path2.length - 1] + (split || isEnd2 ? 1 : 0);\n }\n if (options.at == null) {\n var _point2 = afterRef.current || Editor.end(editor, []);\n Transforms.select(editor, _point2);\n }\n } finally {\n var _afterRef;\n beforeRef.unref();\n (_afterRef = afterRef) === null || _afterRef === void 0 ? void 0 : _afterRef.unref();\n }\n });\n },\n unsetNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n if (!Array.isArray(props)) {\n props = [props];\n }\n var obj = {};\n for (var key of props) {\n obj[key] = null;\n }\n Transforms.setNodes(editor, obj, options);\n },\n unwrapNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = \"lowest\",\n split = false,\n voids = false\n } = options;\n var {\n at = editor.selection,\n match: match2\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n match2 = Path.isPath(at) ? matchPath(editor, at) : (n5) => Editor.isBlock(editor, n5);\n }\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n var rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null;\n var matches = Editor.nodes(editor, {\n at,\n match: match2,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, (_ref5) => {\n var [, p4] = _ref5;\n return Editor.pathRef(editor, p4);\n }).reverse();\n var _loop = function _loop2(pathRef2) {\n var path = pathRef2.unref();\n var [node] = Editor.node(editor, path);\n var range = Editor.range(editor, path);\n if (split && rangeRef) {\n range = Range.intersection(rangeRef.current, range);\n }\n Transforms.liftNodes(editor, {\n at: range,\n match: (n5) => Element2.isAncestor(node) && node.children.includes(n5),\n voids\n });\n };\n for (var pathRef of pathRefs) {\n _loop(pathRef);\n }\n if (rangeRef) {\n rangeRef.unref();\n }\n });\n },\n wrapNodes(editor, element4) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = \"lowest\",\n split = false,\n voids = false\n } = options;\n var {\n match: match2,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n if (Path.isPath(at)) {\n match2 = matchPath(editor, at);\n } else if (editor.isInline(element4)) {\n match2 = (n5) => Editor.isInline(editor, n5) || Text.isText(n5);\n } else {\n match2 = (n5) => Editor.isBlock(editor, n5);\n }\n }\n if (split && Range.isRange(at)) {\n var [start3, end3] = Range.edges(at);\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: \"inward\"\n });\n Transforms.splitNodes(editor, {\n at: end3,\n match: match2,\n voids\n });\n Transforms.splitNodes(editor, {\n at: start3,\n match: match2,\n voids\n });\n at = rangeRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n var roots = Array.from(Editor.nodes(editor, {\n at,\n match: editor.isInline(element4) ? (n5) => Editor.isBlock(editor, n5) : (n5) => Editor.isEditor(n5),\n mode: \"lowest\",\n voids\n }));\n for (var [, rootPath] of roots) {\n var a5 = Range.isRange(at) ? Range.intersection(at, Editor.range(editor, rootPath)) : at;\n if (!a5) {\n continue;\n }\n var matches = Array.from(Editor.nodes(editor, {\n at: a5,\n match: match2,\n mode,\n voids\n }));\n if (matches.length > 0) {\n var _ret = function() {\n var [first] = matches;\n var last2 = matches[matches.length - 1];\n var [, firstPath] = first;\n var [, lastPath] = last2;\n if (firstPath.length === 0 && lastPath.length === 0) {\n return \"continue\";\n }\n var commonPath = Path.equals(firstPath, lastPath) ? Path.parent(firstPath) : Path.common(firstPath, lastPath);\n var range = Editor.range(editor, firstPath, lastPath);\n var commonNodeEntry = Editor.node(editor, commonPath);\n var [commonNode] = commonNodeEntry;\n var depth = commonPath.length + 1;\n var wrapperPath = Path.next(lastPath.slice(0, depth));\n var wrapper = _objectSpread$2(_objectSpread$2({}, element4), {}, {\n children: []\n });\n Transforms.insertNodes(editor, wrapper, {\n at: wrapperPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: range,\n match: (n5) => Element2.isAncestor(commonNode) && commonNode.children.includes(n5),\n to: wrapperPath.concat(0),\n voids\n });\n }();\n if (_ret === \"continue\")\n continue;\n }\n }\n });\n }\n};\nvar hasSingleChildNest = (editor, node) => {\n if (Element2.isElement(node)) {\n var element4 = node;\n if (Editor.isVoid(editor, node)) {\n return true;\n } else if (element4.children.length === 1) {\n return hasSingleChildNest(editor, element4.children[0]);\n } else {\n return false;\n }\n } else if (Editor.isEditor(node)) {\n return false;\n } else {\n return true;\n }\n};\nvar deleteRange = (editor, range) => {\n if (Range.isCollapsed(range)) {\n return range.anchor;\n } else {\n var [, end3] = Range.edges(range);\n var pointRef = Editor.pointRef(editor, end3);\n Transforms.delete(editor, {\n at: range\n });\n return pointRef.unref();\n }\n};\nvar matchPath = (editor, path) => {\n var [node] = Editor.node(editor, path);\n return (n5) => n5 === node;\n};\nfunction ownKeys$1(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$1(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$1(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$1(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar SelectionTransforms = {\n collapse(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n edge = \"anchor\"\n } = options;\n var {\n selection\n } = editor;\n if (!selection) {\n return;\n } else if (edge === \"anchor\") {\n Transforms.select(editor, selection.anchor);\n } else if (edge === \"focus\") {\n Transforms.select(editor, selection.focus);\n } else if (edge === \"start\") {\n var [start3] = Range.edges(selection);\n Transforms.select(editor, start3);\n } else if (edge === \"end\") {\n var [, end3] = Range.edges(selection);\n Transforms.select(editor, end3);\n }\n },\n deselect(editor) {\n var {\n selection\n } = editor;\n if (selection) {\n editor.apply({\n type: \"set_selection\",\n properties: selection,\n newProperties: null\n });\n }\n },\n move(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n selection\n } = editor;\n var {\n distance = 1,\n unit = \"character\",\n reverse = false\n } = options;\n var {\n edge = null\n } = options;\n if (!selection) {\n return;\n }\n if (edge === \"start\") {\n edge = Range.isBackward(selection) ? \"focus\" : \"anchor\";\n }\n if (edge === \"end\") {\n edge = Range.isBackward(selection) ? \"anchor\" : \"focus\";\n }\n var {\n anchor,\n focus\n } = selection;\n var opts = {\n distance,\n unit\n };\n var props = {};\n if (edge == null || edge === \"anchor\") {\n var point = reverse ? Editor.before(editor, anchor, opts) : Editor.after(editor, anchor, opts);\n if (point) {\n props.anchor = point;\n }\n }\n if (edge == null || edge === \"focus\") {\n var _point = reverse ? Editor.before(editor, focus, opts) : Editor.after(editor, focus, opts);\n if (_point) {\n props.focus = _point;\n }\n }\n Transforms.setSelection(editor, props);\n },\n select(editor, target) {\n var {\n selection\n } = editor;\n target = Editor.range(editor, target);\n if (selection) {\n Transforms.setSelection(editor, target);\n return;\n }\n if (!Range.isRange(target)) {\n throw new Error(\"When setting the selection and the current selection is `null` you must provide at least an `anchor` and `focus`, but you passed: \".concat(JSON.stringify(target)));\n }\n editor.apply({\n type: \"set_selection\",\n properties: selection,\n newProperties: target\n });\n },\n setPoint(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n selection\n } = editor;\n var {\n edge = \"both\"\n } = options;\n if (!selection) {\n return;\n }\n if (edge === \"start\") {\n edge = Range.isBackward(selection) ? \"focus\" : \"anchor\";\n }\n if (edge === \"end\") {\n edge = Range.isBackward(selection) ? \"anchor\" : \"focus\";\n }\n var {\n anchor,\n focus\n } = selection;\n var point = edge === \"anchor\" ? anchor : focus;\n Transforms.setSelection(editor, {\n [edge === \"anchor\" ? \"anchor\" : \"focus\"]: _objectSpread$1(_objectSpread$1({}, point), props)\n });\n },\n setSelection(editor, props) {\n var {\n selection\n } = editor;\n var oldProps = {};\n var newProps = {};\n if (!selection) {\n return;\n }\n for (var k4 in props) {\n if (k4 === \"anchor\" && props.anchor != null && !Point.equals(props.anchor, selection.anchor) || k4 === \"focus\" && props.focus != null && !Point.equals(props.focus, selection.focus) || k4 !== \"anchor\" && k4 !== \"focus\" && props[k4] !== selection[k4]) {\n oldProps[k4] = selection[k4];\n newProps[k4] = props[k4];\n }\n }\n if (Object.keys(oldProps).length > 0) {\n editor.apply({\n type: \"set_selection\",\n properties: oldProps,\n newProperties: newProps\n });\n }\n }\n};\nvar TextTransforms = {\n delete(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n reverse = false,\n unit = \"character\",\n distance = 1,\n voids = false\n } = options;\n var {\n at = editor.selection,\n hanging = false\n } = options;\n if (!at) {\n return;\n }\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n at = at.anchor;\n }\n if (Point.isPoint(at)) {\n var furthestVoid = Editor.void(editor, {\n at,\n mode: \"highest\"\n });\n if (!voids && furthestVoid) {\n var [, voidPath] = furthestVoid;\n at = voidPath;\n } else {\n var opts = {\n unit,\n distance\n };\n var target = reverse ? Editor.before(editor, at, opts) || Editor.start(editor, []) : Editor.after(editor, at, opts) || Editor.end(editor, []);\n at = {\n anchor: at,\n focus: target\n };\n hanging = true;\n }\n }\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, {\n at,\n voids\n });\n return;\n }\n if (Range.isCollapsed(at)) {\n return;\n }\n if (!hanging) {\n var [, _end] = Range.edges(at);\n var endOfDoc = Editor.end(editor, []);\n if (!Point.equals(_end, endOfDoc)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n }\n var [start3, end3] = Range.edges(at);\n var startBlock = Editor.above(editor, {\n match: (n5) => Editor.isBlock(editor, n5),\n at: start3,\n voids\n });\n var endBlock = Editor.above(editor, {\n match: (n5) => Editor.isBlock(editor, n5),\n at: end3,\n voids\n });\n var isAcrossBlocks = startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n var isSingleText = Path.equals(start3.path, end3.path);\n var startVoid = voids ? null : Editor.void(editor, {\n at: start3,\n mode: \"highest\"\n });\n var endVoid = voids ? null : Editor.void(editor, {\n at: end3,\n mode: \"highest\"\n });\n if (startVoid) {\n var before = Editor.before(editor, start3);\n if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n start3 = before;\n }\n }\n if (endVoid) {\n var after = Editor.after(editor, end3);\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end3 = after;\n }\n }\n var matches = [];\n var lastPath;\n for (var entry of Editor.nodes(editor, {\n at,\n voids\n })) {\n var [node, path] = entry;\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue;\n }\n if (!voids && Editor.isVoid(editor, node) || !Path.isCommon(path, start3.path) && !Path.isCommon(path, end3.path)) {\n matches.push(entry);\n lastPath = path;\n }\n }\n var pathRefs = Array.from(matches, (_ref) => {\n var [, p4] = _ref;\n return Editor.pathRef(editor, p4);\n });\n var startRef = Editor.pointRef(editor, start3);\n var endRef = Editor.pointRef(editor, end3);\n if (!isSingleText && !startVoid) {\n var _point = startRef.current;\n var [_node] = Editor.leaf(editor, _point);\n var {\n path: _path\n } = _point;\n var {\n offset: offset3\n } = start3;\n var text5 = _node.text.slice(offset3);\n if (text5.length > 0)\n editor.apply({\n type: \"remove_text\",\n path: _path,\n offset: offset3,\n text: text5\n });\n }\n for (var pathRef of pathRefs) {\n var _path2 = pathRef.unref();\n Transforms.removeNodes(editor, {\n at: _path2,\n voids\n });\n }\n if (!endVoid) {\n var _point2 = endRef.current;\n var [_node2] = Editor.leaf(editor, _point2);\n var {\n path: _path3\n } = _point2;\n var _offset = isSingleText ? start3.offset : 0;\n var _text = _node2.text.slice(_offset, end3.offset);\n if (_text.length > 0)\n editor.apply({\n type: \"remove_text\",\n path: _path3,\n offset: _offset,\n text: _text\n });\n }\n if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n Transforms.mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids\n });\n }\n var startUnref = startRef.unref();\n var endUnref = endRef.unref();\n var point = reverse ? startUnref || endUnref : endUnref || startUnref;\n if (options.at == null && point) {\n Transforms.select(editor, point);\n }\n });\n },\n insertFragment(editor, fragment) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false\n } = options;\n var {\n at = editor.selection\n } = options;\n if (!fragment.length) {\n return;\n }\n if (!at) {\n return;\n } else if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at);\n }\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end3] = Range.edges(at);\n if (!voids && Editor.void(editor, {\n at: end3\n })) {\n return;\n }\n var pointRef = Editor.pointRef(editor, end3);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n } else if (Path.isPath(at)) {\n at = Editor.start(editor, at);\n }\n if (!voids && Editor.void(editor, {\n at\n })) {\n return;\n }\n var inlineElementMatch = Editor.above(editor, {\n at,\n match: (n5) => Editor.isInline(editor, n5),\n mode: \"highest\",\n voids\n });\n if (inlineElementMatch) {\n var [, _inlinePath] = inlineElementMatch;\n if (Editor.isEnd(editor, at, _inlinePath)) {\n var after = Editor.after(editor, _inlinePath);\n at = after;\n } else if (Editor.isStart(editor, at, _inlinePath)) {\n var before = Editor.before(editor, _inlinePath);\n at = before;\n }\n }\n var blockMatch = Editor.above(editor, {\n match: (n5) => Editor.isBlock(editor, n5),\n at,\n voids\n });\n var [, blockPath] = blockMatch;\n var isBlockStart = Editor.isStart(editor, at, blockPath);\n var isBlockEnd = Editor.isEnd(editor, at, blockPath);\n var isBlockEmpty = isBlockStart && isBlockEnd;\n var mergeStart = !isBlockStart || isBlockStart && isBlockEnd;\n var mergeEnd = !isBlockEnd;\n var [, firstPath] = Node2.first({\n children: fragment\n }, []);\n var [, lastPath] = Node2.last({\n children: fragment\n }, []);\n var matches = [];\n var matcher = (_ref2) => {\n var [n5, p4] = _ref2;\n var isRoot = p4.length === 0;\n if (isRoot) {\n return false;\n }\n if (isBlockEmpty) {\n return true;\n }\n if (mergeStart && Path.isAncestor(p4, firstPath) && Element2.isElement(n5) && !editor.isVoid(n5) && !editor.isInline(n5)) {\n return false;\n }\n if (mergeEnd && Path.isAncestor(p4, lastPath) && Element2.isElement(n5) && !editor.isVoid(n5) && !editor.isInline(n5)) {\n return false;\n }\n return true;\n };\n for (var entry of Node2.nodes({\n children: fragment\n }, {\n pass: matcher\n })) {\n if (matcher(entry)) {\n matches.push(entry);\n }\n }\n var starts = [];\n var middles = [];\n var ends = [];\n var starting = true;\n var hasBlocks = false;\n for (var [node] of matches) {\n if (Element2.isElement(node) && !editor.isInline(node)) {\n starting = false;\n hasBlocks = true;\n middles.push(node);\n } else if (starting) {\n starts.push(node);\n } else {\n ends.push(node);\n }\n }\n var [inlineMatch] = Editor.nodes(editor, {\n at,\n match: (n5) => Text.isText(n5) || Editor.isInline(editor, n5),\n mode: \"highest\",\n voids\n });\n var [, inlinePath] = inlineMatch;\n var isInlineStart = Editor.isStart(editor, at, inlinePath);\n var isInlineEnd = Editor.isEnd(editor, at, inlinePath);\n var middleRef = Editor.pathRef(editor, isBlockEnd ? Path.next(blockPath) : blockPath);\n var endRef = Editor.pathRef(editor, isInlineEnd ? Path.next(inlinePath) : inlinePath);\n var blockPathRef = Editor.pathRef(editor, blockPath);\n Transforms.splitNodes(editor, {\n at,\n match: (n5) => hasBlocks ? Editor.isBlock(editor, n5) : Text.isText(n5) || Editor.isInline(editor, n5),\n mode: hasBlocks ? \"lowest\" : \"highest\",\n voids\n });\n var startRef = Editor.pathRef(editor, !isInlineStart || isInlineStart && isInlineEnd ? Path.next(inlinePath) : inlinePath);\n Transforms.insertNodes(editor, starts, {\n at: startRef.current,\n match: (n5) => Text.isText(n5) || Editor.isInline(editor, n5),\n mode: \"highest\",\n voids\n });\n if (isBlockEmpty && middles.length) {\n Transforms.delete(editor, {\n at: blockPathRef.unref(),\n voids\n });\n }\n Transforms.insertNodes(editor, middles, {\n at: middleRef.current,\n match: (n5) => Editor.isBlock(editor, n5),\n mode: \"lowest\",\n voids\n });\n Transforms.insertNodes(editor, ends, {\n at: endRef.current,\n match: (n5) => Text.isText(n5) || Editor.isInline(editor, n5),\n mode: \"highest\",\n voids\n });\n if (!options.at) {\n var path;\n if (ends.length > 0) {\n path = Path.previous(endRef.current);\n } else if (middles.length > 0) {\n path = Path.previous(middleRef.current);\n } else {\n path = Path.previous(startRef.current);\n }\n var _end2 = Editor.end(editor, path);\n Transforms.select(editor, _end2);\n }\n startRef.unref();\n middleRef.unref();\n endRef.unref();\n });\n },\n insertText(editor, text5) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n voids = false\n } = options;\n var {\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var end3 = Range.end(at);\n if (!voids && Editor.void(editor, {\n at: end3\n })) {\n return;\n }\n var pointRef = Editor.pointRef(editor, end3);\n Transforms.delete(editor, {\n at,\n voids\n });\n at = pointRef.unref();\n Transforms.setSelection(editor, {\n anchor: at,\n focus: at\n });\n }\n }\n if (!voids && Editor.void(editor, {\n at\n })) {\n return;\n }\n var {\n path,\n offset: offset3\n } = at;\n if (text5.length > 0)\n editor.apply({\n type: \"insert_text\",\n path,\n offset: offset3,\n text: text5\n });\n });\n }\n};\nfunction ownKeys(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Transforms = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, GeneralTransforms), NodeTransforms), SelectionTransforms), TextTransforms);\n\n// node_modules/slate-react/dist/index.es.js\nvar import_react = __toESM(require(\"react\"));\nvar import_direction = __toESM(require_direction());\nvar import_debounce = __toESM(require_debounce());\nvar import_throttle = __toESM(require_throttle());\n\n// node_modules/compute-scroll-into-view/dist/index.module.js\nfunction t2(t4) {\n return typeof t4 == \"object\" && t4 != null && t4.nodeType === 1;\n}\nfunction e(t4, e2) {\n return (!e2 || t4 !== \"hidden\") && t4 !== \"visible\" && t4 !== \"clip\";\n}\nfunction n2(t4, n5) {\n if (t4.clientHeight < t4.scrollHeight || t4.clientWidth < t4.scrollWidth) {\n var r5 = getComputedStyle(t4, null);\n return e(r5.overflowY, n5) || e(r5.overflowX, n5) || function(t5) {\n var e2 = function(t6) {\n if (!t6.ownerDocument || !t6.ownerDocument.defaultView)\n return null;\n try {\n return t6.ownerDocument.defaultView.frameElement;\n } catch (t7) {\n return null;\n }\n }(t5);\n return !!e2 && (e2.clientHeight < t5.scrollHeight || e2.clientWidth < t5.scrollWidth);\n }(t4);\n }\n return false;\n}\nfunction r2(t4, e2, n5, r5, i3, o3, l3, d3) {\n return o3 < t4 && l3 > e2 || o3 > t4 && l3 < e2 ? 0 : o3 <= t4 && d3 <= n5 || l3 >= e2 && d3 >= n5 ? o3 - t4 - r5 : l3 > e2 && d3 < n5 || o3 < t4 && d3 > n5 ? l3 - e2 + i3 : 0;\n}\nfunction index_module_default(e2, i3) {\n var o3 = window, l3 = i3.scrollMode, d3 = i3.block, u3 = i3.inline, h3 = i3.boundary, a5 = i3.skipOverflowHiddenElements, c3 = typeof h3 == \"function\" ? h3 : function(t4) {\n return t4 !== h3;\n };\n if (!t2(e2))\n throw new TypeError(\"Invalid target\");\n for (var f3 = document.scrollingElement || document.documentElement, s3 = [], p4 = e2; t2(p4) && c3(p4); ) {\n if ((p4 = p4.parentElement) === f3) {\n s3.push(p4);\n break;\n }\n p4 != null && p4 === document.body && n2(p4) && !n2(document.documentElement) || p4 != null && n2(p4, a5) && s3.push(p4);\n }\n for (var m2 = o3.visualViewport ? o3.visualViewport.width : innerWidth, g4 = o3.visualViewport ? o3.visualViewport.height : innerHeight, w4 = window.scrollX || pageXOffset, v4 = window.scrollY || pageYOffset, W4 = e2.getBoundingClientRect(), b4 = W4.height, H4 = W4.width, y3 = W4.top, E4 = W4.right, M4 = W4.bottom, V3 = W4.left, x4 = d3 === \"start\" || d3 === \"nearest\" ? y3 : d3 === \"end\" ? M4 : y3 + b4 / 2, I4 = u3 === \"center\" ? V3 + H4 / 2 : u3 === \"end\" ? E4 : V3, C2 = [], T2 = 0; T2 < s3.length; T2++) {\n var k4 = s3[T2], B4 = k4.getBoundingClientRect(), D4 = B4.height, O3 = B4.width, R4 = B4.top, X4 = B4.right, Y4 = B4.bottom, L4 = B4.left;\n if (l3 === \"if-needed\" && y3 >= 0 && V3 >= 0 && M4 <= g4 && E4 <= m2 && y3 >= R4 && M4 <= Y4 && V3 >= L4 && E4 <= X4)\n return C2;\n var S4 = getComputedStyle(k4), j4 = parseInt(S4.borderLeftWidth, 10), q4 = parseInt(S4.borderTopWidth, 10), z4 = parseInt(S4.borderRightWidth, 10), A4 = parseInt(S4.borderBottomWidth, 10), F4 = 0, G4 = 0, J2 = \"offsetWidth\" in k4 ? k4.offsetWidth - k4.clientWidth - j4 - z4 : 0, K2 = \"offsetHeight\" in k4 ? k4.offsetHeight - k4.clientHeight - q4 - A4 : 0;\n if (f3 === k4)\n F4 = d3 === \"start\" ? x4 : d3 === \"end\" ? x4 - g4 : d3 === \"nearest\" ? r2(v4, v4 + g4, g4, q4, A4, v4 + x4, v4 + x4 + b4, b4) : x4 - g4 / 2, G4 = u3 === \"start\" ? I4 : u3 === \"center\" ? I4 - m2 / 2 : u3 === \"end\" ? I4 - m2 : r2(w4, w4 + m2, m2, j4, z4, w4 + I4, w4 + I4 + H4, H4), F4 = Math.max(0, F4 + v4), G4 = Math.max(0, G4 + w4);\n else {\n F4 = d3 === \"start\" ? x4 - R4 - q4 : d3 === \"end\" ? x4 - Y4 + A4 + K2 : d3 === \"nearest\" ? r2(R4, Y4, D4, q4, A4 + K2, x4, x4 + b4, b4) : x4 - (R4 + D4 / 2) + K2 / 2, G4 = u3 === \"start\" ? I4 - L4 - j4 : u3 === \"center\" ? I4 - (L4 + O3 / 2) + J2 / 2 : u3 === \"end\" ? I4 - X4 + z4 + J2 : r2(L4, X4, O3, j4, z4 + J2, I4, I4 + H4, H4);\n var N2 = k4.scrollLeft, P4 = k4.scrollTop;\n x4 += P4 - (F4 = Math.max(0, Math.min(P4 + F4, k4.scrollHeight - D4 + K2))), I4 += N2 - (G4 = Math.max(0, Math.min(N2 + G4, k4.scrollWidth - O3 + J2)));\n }\n C2.push({ el: k4, top: F4, left: G4 });\n }\n return C2;\n}\n\n// node_modules/scroll-into-view-if-needed/es/index.js\nfunction isOptionsObject(options) {\n return options === Object(options) && Object.keys(options).length !== 0;\n}\nfunction defaultBehavior(actions, behavior) {\n if (behavior === void 0) {\n behavior = \"auto\";\n }\n var canSmoothScroll = \"scrollBehavior\" in document.body.style;\n actions.forEach(function(_ref) {\n var el = _ref.el, top3 = _ref.top, left3 = _ref.left;\n if (el.scroll && canSmoothScroll) {\n el.scroll({\n top: top3,\n left: left3,\n behavior\n });\n } else {\n el.scrollTop = top3;\n el.scrollLeft = left3;\n }\n });\n}\nfunction getOptions(options) {\n if (options === false) {\n return {\n block: \"end\",\n inline: \"nearest\"\n };\n }\n if (isOptionsObject(options)) {\n return options;\n }\n return {\n block: \"start\",\n inline: \"nearest\"\n };\n}\nfunction scrollIntoView(target, options) {\n var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);\n if (isOptionsObject(options) && typeof options.behavior === \"function\") {\n return options.behavior(isTargetAttached ? index_module_default(target, options) : []);\n }\n if (!isTargetAttached) {\n return;\n }\n var computeOptions = getOptions(options);\n return defaultBehavior(index_module_default(target, computeOptions), computeOptions.behavior);\n}\nvar es_default = scrollIntoView;\n\n// node_modules/slate-react/dist/index.es.js\nvar import_is_hotkey = __toESM(require_lib());\nvar import_react_dom = __toESM(require(\"react-dom\"));\nfunction _defineProperty2(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutPropertiesLoose2(source, excluded) {\n if (source == null)\n return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i3;\n for (i3 = 0; i3 < sourceKeys.length; i3++) {\n key = sourceKeys[i3];\n if (excluded.indexOf(key) >= 0)\n continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties2(source, excluded) {\n if (source == null)\n return {};\n var target = _objectWithoutPropertiesLoose2(source, excluded);\n var key, i3;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i3 = 0; i3 < sourceSymbolKeys.length; i3++) {\n key = sourceSymbolKeys[i3];\n if (excluded.indexOf(key) >= 0)\n continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key))\n continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nvar IS_REACT_VERSION_17_OR_ABOVE = parseInt(import_react.default.version.split(\".\")[0], 10) >= 17;\nvar IS_IOS = typeof navigator !== \"undefined\" && typeof window !== \"undefined\" && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar IS_APPLE = typeof navigator !== \"undefined\" && /Mac OS X/.test(navigator.userAgent);\nvar IS_ANDROID = typeof navigator !== \"undefined\" && /Android/.test(navigator.userAgent);\nvar IS_FIREFOX = typeof navigator !== \"undefined\" && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);\nvar IS_SAFARI = typeof navigator !== \"undefined\" && /Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent);\nvar IS_EDGE_LEGACY = typeof navigator !== \"undefined\" && /Edge?\\/(?:[0-6][0-9]|[0-7][0-8])(?:\\.)/i.test(navigator.userAgent);\nvar IS_CHROME = typeof navigator !== \"undefined\" && /Chrome/i.test(navigator.userAgent);\nvar IS_CHROME_LEGACY = typeof navigator !== \"undefined\" && /Chrome?\\/(?:[0-7][0-5]|[0-6][0-9])(?:\\.)/i.test(navigator.userAgent);\nvar IS_FIREFOX_LEGACY = typeof navigator !== \"undefined\" && /^(?!.*Seamonkey)(?=.*Firefox\\/(?:[0-7][0-9]|[0-8][0-6])(?:\\.)).*/i.test(navigator.userAgent);\nvar IS_QQBROWSER = typeof navigator !== \"undefined\" && /.*QQBrowser/.test(navigator.userAgent);\nvar IS_UC_MOBILE = typeof navigator !== \"undefined\" && /.*UCBrowser/.test(navigator.userAgent);\nvar IS_WECHATBROWSER = typeof navigator !== \"undefined\" && /.*Wechat/.test(navigator.userAgent);\nvar CAN_USE_DOM = !!(typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\");\nvar HAS_BEFORE_INPUT_SUPPORT = !IS_CHROME_LEGACY && !IS_EDGE_LEGACY && typeof globalThis !== \"undefined\" && globalThis.InputEvent && typeof globalThis.InputEvent.prototype.getTargetRanges === \"function\";\nvar useIsomorphicLayoutEffect = CAN_USE_DOM ? import_react.useLayoutEffect : import_react.useEffect;\nvar String2 = (props) => {\n var {\n isLast,\n leaf,\n parent: parent2,\n text: text5\n } = props;\n var editor = useSlateStatic();\n var path = ReactEditor.findPath(editor, text5);\n var parentPath = Path.parent(path);\n if (editor.isVoid(parent2)) {\n return /* @__PURE__ */ import_react.default.createElement(ZeroWidthString, {\n length: Node2.string(parent2).length\n });\n }\n if (leaf.text === \"\" && parent2.children[parent2.children.length - 1] === text5 && !editor.isInline(parent2) && Editor.string(editor, parentPath) === \"\") {\n return /* @__PURE__ */ import_react.default.createElement(ZeroWidthString, {\n isLineBreak: true\n });\n }\n if (leaf.text === \"\") {\n return /* @__PURE__ */ import_react.default.createElement(ZeroWidthString, null);\n }\n if (isLast && leaf.text.slice(-1) === \"\\n\") {\n return /* @__PURE__ */ import_react.default.createElement(TextString, {\n isTrailing: true,\n text: leaf.text\n });\n }\n return /* @__PURE__ */ import_react.default.createElement(TextString, {\n text: leaf.text\n });\n};\nvar TextString = (props) => {\n var {\n text: text5,\n isTrailing = false\n } = props;\n var ref = (0, import_react.useRef)(null);\n var getTextContent = () => {\n return \"\".concat(text5 !== null && text5 !== void 0 ? text5 : \"\").concat(isTrailing ? \"\\n\" : \"\");\n };\n useIsomorphicLayoutEffect(() => {\n var textWithTrailing = getTextContent();\n if (ref.current && ref.current.textContent !== textWithTrailing) {\n ref.current.textContent = textWithTrailing;\n }\n });\n if (!ref.current) {\n return /* @__PURE__ */ import_react.default.createElement(\"span\", {\n \"data-slate-string\": true,\n ref\n }, getTextContent());\n }\n return /* @__PURE__ */ import_react.default.createElement(\"span\", {\n \"data-slate-string\": true,\n ref\n });\n};\nvar ZeroWidthString = (props) => {\n var {\n length = 0,\n isLineBreak: isLineBreak2 = false\n } = props;\n return /* @__PURE__ */ import_react.default.createElement(\"span\", {\n \"data-slate-zero-width\": isLineBreak2 ? \"n\" : \"z\",\n \"data-slate-length\": length\n }, \"\\uFEFF\", isLineBreak2 ? /* @__PURE__ */ import_react.default.createElement(\"br\", null) : null);\n};\nvar NODE_TO_INDEX = /* @__PURE__ */ new WeakMap();\nvar NODE_TO_PARENT = /* @__PURE__ */ new WeakMap();\nvar EDITOR_TO_WINDOW = /* @__PURE__ */ new WeakMap();\nvar EDITOR_TO_ELEMENT = /* @__PURE__ */ new WeakMap();\nvar ELEMENT_TO_NODE = /* @__PURE__ */ new WeakMap();\nvar NODE_TO_ELEMENT = /* @__PURE__ */ new WeakMap();\nvar NODE_TO_KEY = /* @__PURE__ */ new WeakMap();\nvar EDITOR_TO_KEY_TO_ELEMENT = /* @__PURE__ */ new WeakMap();\nvar IS_READ_ONLY = /* @__PURE__ */ new WeakMap();\nvar IS_FOCUSED = /* @__PURE__ */ new WeakMap();\nvar IS_COMPOSING = /* @__PURE__ */ new WeakMap();\nvar IS_ON_COMPOSITION_END = /* @__PURE__ */ new WeakMap();\nvar EDITOR_TO_USER_SELECTION = /* @__PURE__ */ new WeakMap();\nvar EDITOR_ON_COMPOSITION_TEXT = /* @__PURE__ */ new WeakMap();\nvar EDITOR_TO_ON_CHANGE = /* @__PURE__ */ new WeakMap();\nvar NODE_TO_RESTORE_DOM = /* @__PURE__ */ new WeakMap();\nvar PLACEHOLDER_SYMBOL = Symbol(\"placeholder\");\nvar Leaf = (props) => {\n var {\n leaf,\n isLast,\n text: text5,\n parent: parent2,\n renderPlaceholder,\n renderLeaf = (props2) => /* @__PURE__ */ import_react.default.createElement(DefaultLeaf, Object.assign({}, props2))\n } = props;\n var placeholderRef = (0, import_react.useRef)(null);\n (0, import_react.useEffect)(() => {\n var placeholderEl = placeholderRef === null || placeholderRef === void 0 ? void 0 : placeholderRef.current;\n var editorEl = document.querySelector('[data-slate-editor=\"true\"]');\n if (!placeholderEl || !editorEl) {\n return;\n }\n editorEl.style.minHeight = \"\".concat(placeholderEl.clientHeight, \"px\");\n return () => {\n editorEl.style.minHeight = \"auto\";\n };\n }, [placeholderRef, leaf]);\n var children = /* @__PURE__ */ import_react.default.createElement(String2, {\n isLast,\n leaf,\n parent: parent2,\n text: text5\n });\n if (leaf[PLACEHOLDER_SYMBOL]) {\n var placeholderProps = {\n children: leaf.placeholder,\n attributes: {\n \"data-slate-placeholder\": true,\n style: {\n position: \"absolute\",\n pointerEvents: \"none\",\n width: \"100%\",\n maxWidth: \"100%\",\n display: \"block\",\n opacity: \"0.333\",\n userSelect: \"none\",\n textDecoration: \"none\"\n },\n contentEditable: false,\n ref: placeholderRef\n }\n };\n children = /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, renderPlaceholder(placeholderProps), children);\n }\n var attributes = {\n \"data-slate-leaf\": true\n };\n return renderLeaf({\n attributes,\n children,\n leaf,\n text: text5\n });\n};\nvar MemoizedLeaf = /* @__PURE__ */ import_react.default.memo(Leaf, (prev, next) => {\n return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.renderPlaceholder === prev.renderPlaceholder && next.text === prev.text && Text.equals(next.leaf, prev.leaf) && next.leaf[PLACEHOLDER_SYMBOL] === prev.leaf[PLACEHOLDER_SYMBOL];\n});\nvar DefaultLeaf = (props) => {\n var {\n attributes,\n children\n } = props;\n return /* @__PURE__ */ import_react.default.createElement(\"span\", Object.assign({}, attributes), children);\n};\nvar _excluded$32 = [\"anchor\", \"focus\"];\nvar _excluded22 = [\"anchor\", \"focus\"];\nvar shallowCompare = (obj1, obj2) => Object.keys(obj1).length === Object.keys(obj2).length && Object.keys(obj1).every((key) => obj2.hasOwnProperty(key) && obj1[key] === obj2[key]);\nvar isDecoratorRangeListEqual = (list, another) => {\n if (list.length !== another.length) {\n return false;\n }\n for (var i3 = 0; i3 < list.length; i3++) {\n var range = list[i3];\n var other = another[i3];\n var rangeOwnProps = _objectWithoutProperties2(range, _excluded$32);\n var otherOwnProps = _objectWithoutProperties2(other, _excluded22);\n if (!Range.equals(range, other) || range[PLACEHOLDER_SYMBOL] !== other[PLACEHOLDER_SYMBOL] || !shallowCompare(rangeOwnProps, otherOwnProps)) {\n return false;\n }\n }\n return true;\n};\nfunction useContentKey(node) {\n var contentKeyRef = (0, import_react.useRef)(0);\n var updateAnimationFrameRef = (0, import_react.useRef)(null);\n var [, setForceRerenderCounter] = (0, import_react.useState)(0);\n (0, import_react.useEffect)(() => {\n NODE_TO_RESTORE_DOM.set(node, () => {\n if (updateAnimationFrameRef.current) {\n return;\n }\n updateAnimationFrameRef.current = requestAnimationFrame(() => {\n setForceRerenderCounter((state) => state + 1);\n updateAnimationFrameRef.current = null;\n });\n contentKeyRef.current++;\n });\n return () => {\n NODE_TO_RESTORE_DOM.delete(node);\n };\n }, [node]);\n if (updateAnimationFrameRef.current) {\n cancelAnimationFrame(updateAnimationFrameRef.current);\n updateAnimationFrameRef.current = null;\n }\n return contentKeyRef.current;\n}\nvar Text2 = (props) => {\n var {\n decorations,\n isLast,\n parent: parent2,\n renderPlaceholder,\n renderLeaf,\n text: text5\n } = props;\n var editor = useSlateStatic();\n var ref = (0, import_react.useRef)(null);\n var leaves = Text.decorations(text5, decorations);\n var key = ReactEditor.findKey(editor, text5);\n var children = [];\n for (var i3 = 0; i3 < leaves.length; i3++) {\n var leaf = leaves[i3];\n children.push(/* @__PURE__ */ import_react.default.createElement(MemoizedLeaf, {\n isLast: isLast && i3 === leaves.length - 1,\n key: \"\".concat(key.id, \"-\").concat(i3),\n renderPlaceholder,\n leaf,\n text: text5,\n parent: parent2,\n renderLeaf\n }));\n }\n useIsomorphicLayoutEffect(() => {\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n if (ref.current) {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.set(key, ref.current);\n NODE_TO_ELEMENT.set(text5, ref.current);\n ELEMENT_TO_NODE.set(ref.current, text5);\n } else {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.delete(key);\n NODE_TO_ELEMENT.delete(text5);\n }\n });\n var contentKey = IS_ANDROID ? useContentKey(text5) : void 0;\n return /* @__PURE__ */ import_react.default.createElement(\"span\", {\n \"data-slate-node\": \"text\",\n ref,\n key: contentKey\n }, children);\n};\nvar MemoizedText = /* @__PURE__ */ import_react.default.memo(Text2, (prev, next) => {\n return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.text === prev.text && isDecoratorRangeListEqual(next.decorations, prev.decorations);\n});\nvar Element3 = (props) => {\n var {\n decorations,\n element: element4,\n renderElement = (p4) => /* @__PURE__ */ import_react.default.createElement(DefaultElement, Object.assign({}, p4)),\n renderPlaceholder,\n renderLeaf,\n selection\n } = props;\n var ref = (0, import_react.useRef)(null);\n var editor = useSlateStatic();\n var readOnly = useReadOnly();\n var isInline = editor.isInline(element4);\n var key = ReactEditor.findKey(editor, element4);\n var children = useChildren({\n decorations,\n node: element4,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection\n });\n var attributes = {\n \"data-slate-node\": \"element\",\n ref\n };\n if (isInline) {\n attributes[\"data-slate-inline\"] = true;\n }\n if (!isInline && Editor.hasInlines(editor, element4)) {\n var text5 = Node2.string(element4);\n var dir = (0, import_direction.default)(text5);\n if (dir === \"rtl\") {\n attributes.dir = dir;\n }\n }\n if (Editor.isVoid(editor, element4)) {\n attributes[\"data-slate-void\"] = true;\n if (!readOnly && isInline) {\n attributes.contentEditable = false;\n }\n var Tag = isInline ? \"span\" : \"div\";\n var [[_text]] = Node2.texts(element4);\n children = /* @__PURE__ */ import_react.default.createElement(Tag, {\n \"data-slate-spacer\": true,\n style: {\n height: \"0\",\n color: \"transparent\",\n outline: \"none\",\n position: \"absolute\"\n }\n }, /* @__PURE__ */ import_react.default.createElement(MemoizedText, {\n renderPlaceholder,\n decorations: [],\n isLast: false,\n parent: element4,\n text: _text\n }));\n NODE_TO_INDEX.set(_text, 0);\n NODE_TO_PARENT.set(_text, element4);\n }\n useIsomorphicLayoutEffect(() => {\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n if (ref.current) {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.set(key, ref.current);\n NODE_TO_ELEMENT.set(element4, ref.current);\n ELEMENT_TO_NODE.set(ref.current, element4);\n } else {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.delete(key);\n NODE_TO_ELEMENT.delete(element4);\n }\n });\n var content = renderElement({\n attributes,\n children,\n element: element4\n });\n if (IS_ANDROID) {\n var contentKey = useContentKey(element4);\n return /* @__PURE__ */ import_react.default.createElement(import_react.Fragment, {\n key: contentKey\n }, content);\n }\n return content;\n};\nvar MemoizedElement = /* @__PURE__ */ import_react.default.memo(Element3, (prev, next) => {\n return prev.element === next.element && prev.renderElement === next.renderElement && prev.renderLeaf === next.renderLeaf && isDecoratorRangeListEqual(prev.decorations, next.decorations) && (prev.selection === next.selection || !!prev.selection && !!next.selection && Range.equals(prev.selection, next.selection));\n});\nvar DefaultElement = (props) => {\n var {\n attributes,\n children,\n element: element4\n } = props;\n var editor = useSlateStatic();\n var Tag = editor.isInline(element4) ? \"span\" : \"div\";\n return /* @__PURE__ */ import_react.default.createElement(Tag, Object.assign({}, attributes, {\n style: {\n position: \"relative\"\n }\n }), children);\n};\nvar EditorContext = /* @__PURE__ */ (0, import_react.createContext)(null);\nvar useSlateStatic = () => {\n var editor = (0, import_react.useContext)(EditorContext);\n if (!editor) {\n throw new Error(\"The `useSlateStatic` hook must be used inside the component's context.\");\n }\n return editor;\n};\nvar SelectedContext = /* @__PURE__ */ (0, import_react.createContext)(false);\nvar useSelected = () => {\n return (0, import_react.useContext)(SelectedContext);\n};\nvar useChildren = (props) => {\n var {\n decorations,\n node,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection\n } = props;\n var editor = useSlateStatic();\n var path = ReactEditor.findPath(editor, node);\n var children = [];\n var isLeafBlock = Element2.isElement(node) && !editor.isInline(node) && Editor.hasInlines(editor, node);\n var _loop = function _loop2(i4) {\n var p4 = path.concat(i4);\n var n5 = node.children[i4];\n var key = ReactEditor.findKey(editor, n5);\n var range = Editor.range(editor, p4);\n var sel = selection && Range.intersection(range, selection);\n var ds = decorations.reduce((acc, dec) => {\n var intersection2 = Range.intersection(dec, range);\n if (intersection2)\n acc.push(intersection2);\n return acc;\n }, []);\n if (Element2.isElement(n5)) {\n children.push(/* @__PURE__ */ import_react.default.createElement(SelectedContext.Provider, {\n key: \"provider-\".concat(key.id),\n value: !!sel\n }, /* @__PURE__ */ import_react.default.createElement(MemoizedElement, {\n decorations: ds,\n element: n5,\n key: key.id,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection: sel\n })));\n } else {\n children.push(/* @__PURE__ */ import_react.default.createElement(MemoizedText, {\n decorations: ds,\n key: key.id,\n isLast: isLeafBlock && i4 === node.children.length - 1,\n parent: node,\n renderPlaceholder,\n renderLeaf,\n text: n5\n }));\n }\n NODE_TO_INDEX.set(n5, i4);\n NODE_TO_PARENT.set(n5, node);\n };\n for (var i3 = 0; i3 < node.children.length; i3++) {\n _loop(i3);\n }\n return children;\n};\nvar HOTKEYS = {\n bold: \"mod+b\",\n compose: [\"down\", \"left\", \"right\", \"up\", \"backspace\", \"enter\"],\n moveBackward: \"left\",\n moveForward: \"right\",\n moveWordBackward: \"ctrl+left\",\n moveWordForward: \"ctrl+right\",\n deleteBackward: \"shift?+backspace\",\n deleteForward: \"shift?+delete\",\n extendBackward: \"shift+left\",\n extendForward: \"shift+right\",\n italic: \"mod+i\",\n insertSoftBreak: \"shift+enter\",\n splitBlock: \"enter\",\n undo: \"mod+z\"\n};\nvar APPLE_HOTKEYS = {\n moveLineBackward: \"opt+up\",\n moveLineForward: \"opt+down\",\n moveWordBackward: \"opt+left\",\n moveWordForward: \"opt+right\",\n deleteBackward: [\"ctrl+backspace\", \"ctrl+h\"],\n deleteForward: [\"ctrl+delete\", \"ctrl+d\"],\n deleteLineBackward: \"cmd+shift?+backspace\",\n deleteLineForward: [\"cmd+shift?+delete\", \"ctrl+k\"],\n deleteWordBackward: \"opt+shift?+backspace\",\n deleteWordForward: \"opt+shift?+delete\",\n extendLineBackward: \"opt+shift+up\",\n extendLineForward: \"opt+shift+down\",\n redo: \"cmd+shift+z\",\n transposeCharacter: \"ctrl+t\"\n};\nvar WINDOWS_HOTKEYS = {\n deleteWordBackward: \"ctrl+shift?+backspace\",\n deleteWordForward: \"ctrl+shift?+delete\",\n redo: [\"ctrl+y\", \"ctrl+shift+z\"]\n};\nvar create = (key) => {\n var generic = HOTKEYS[key];\n var apple = APPLE_HOTKEYS[key];\n var windows = WINDOWS_HOTKEYS[key];\n var isGeneric = generic && (0, import_is_hotkey.isKeyHotkey)(generic);\n var isApple = apple && (0, import_is_hotkey.isKeyHotkey)(apple);\n var isWindows = windows && (0, import_is_hotkey.isKeyHotkey)(windows);\n return (event) => {\n if (isGeneric && isGeneric(event))\n return true;\n if (IS_APPLE && isApple && isApple(event))\n return true;\n if (!IS_APPLE && isWindows && isWindows(event))\n return true;\n return false;\n };\n};\nvar Hotkeys = {\n isBold: create(\"bold\"),\n isCompose: create(\"compose\"),\n isMoveBackward: create(\"moveBackward\"),\n isMoveForward: create(\"moveForward\"),\n isDeleteBackward: create(\"deleteBackward\"),\n isDeleteForward: create(\"deleteForward\"),\n isDeleteLineBackward: create(\"deleteLineBackward\"),\n isDeleteLineForward: create(\"deleteLineForward\"),\n isDeleteWordBackward: create(\"deleteWordBackward\"),\n isDeleteWordForward: create(\"deleteWordForward\"),\n isExtendBackward: create(\"extendBackward\"),\n isExtendForward: create(\"extendForward\"),\n isExtendLineBackward: create(\"extendLineBackward\"),\n isExtendLineForward: create(\"extendLineForward\"),\n isItalic: create(\"italic\"),\n isMoveLineBackward: create(\"moveLineBackward\"),\n isMoveLineForward: create(\"moveLineForward\"),\n isMoveWordBackward: create(\"moveWordBackward\"),\n isMoveWordForward: create(\"moveWordForward\"),\n isRedo: create(\"redo\"),\n isSoftBreak: create(\"insertSoftBreak\"),\n isSplitBlock: create(\"splitBlock\"),\n isTransposeCharacter: create(\"transposeCharacter\"),\n isUndo: create(\"undo\")\n};\nvar ReadOnlyContext = /* @__PURE__ */ (0, import_react.createContext)(false);\nvar useReadOnly = () => {\n return (0, import_react.useContext)(ReadOnlyContext);\n};\nvar SlateContext = /* @__PURE__ */ (0, import_react.createContext)(null);\nvar useSlate = () => {\n var context = (0, import_react.useContext)(SlateContext);\n if (!context) {\n throw new Error(\"The `useSlate` hook must be used inside the component's context.\");\n }\n var [editor] = context;\n return editor;\n};\nvar DecorateContext = /* @__PURE__ */ (0, import_react.createContext)(() => []);\nvar getDefaultView = (value) => {\n return value && value.ownerDocument && value.ownerDocument.defaultView || null;\n};\nvar isDOMComment = (value) => {\n return isDOMNode(value) && value.nodeType === 8;\n};\nvar isDOMElement = (value) => {\n return isDOMNode(value) && value.nodeType === 1;\n};\nvar isDOMNode = (value) => {\n var window2 = getDefaultView(value);\n return !!window2 && value instanceof window2.Node;\n};\nvar isDOMSelection = (value) => {\n var window2 = value && value.anchorNode && getDefaultView(value.anchorNode);\n return !!window2 && value instanceof window2.Selection;\n};\nvar isDOMText = (value) => {\n return isDOMNode(value) && value.nodeType === 3;\n};\nvar isPlainTextOnlyPaste = (event) => {\n return event.clipboardData && event.clipboardData.getData(\"text/plain\") !== \"\" && event.clipboardData.types.length === 1;\n};\nvar normalizeDOMPoint = (domPoint) => {\n var [node, offset3] = domPoint;\n if (isDOMElement(node) && node.childNodes.length) {\n var isLast = offset3 === node.childNodes.length;\n var index7 = isLast ? offset3 - 1 : offset3;\n [node, index7] = getEditableChildAndIndex(node, index7, isLast ? \"backward\" : \"forward\");\n isLast = index7 < offset3;\n while (isDOMElement(node) && node.childNodes.length) {\n var i3 = isLast ? node.childNodes.length - 1 : 0;\n node = getEditableChild(node, i3, isLast ? \"backward\" : \"forward\");\n }\n offset3 = isLast && node.textContent != null ? node.textContent.length : 0;\n }\n return [node, offset3];\n};\nvar hasShadowRoot = () => {\n return !!(window.document.activeElement && window.document.activeElement.shadowRoot);\n};\nvar getEditableChildAndIndex = (parent2, index7, direction) => {\n var {\n childNodes\n } = parent2;\n var child = childNodes[index7];\n var i3 = index7;\n var triedForward = false;\n var triedBackward = false;\n while (isDOMComment(child) || isDOMElement(child) && child.childNodes.length === 0 || isDOMElement(child) && child.getAttribute(\"contenteditable\") === \"false\") {\n if (triedForward && triedBackward) {\n break;\n }\n if (i3 >= childNodes.length) {\n triedForward = true;\n i3 = index7 - 1;\n direction = \"backward\";\n continue;\n }\n if (i3 < 0) {\n triedBackward = true;\n i3 = index7 + 1;\n direction = \"forward\";\n continue;\n }\n child = childNodes[i3];\n index7 = i3;\n i3 += direction === \"forward\" ? 1 : -1;\n }\n return [child, index7];\n};\nvar getEditableChild = (parent2, index7, direction) => {\n var [child] = getEditableChildAndIndex(parent2, index7, direction);\n return child;\n};\nvar getPlainText = (domNode) => {\n var text5 = \"\";\n if (isDOMText(domNode) && domNode.nodeValue) {\n return domNode.nodeValue;\n }\n if (isDOMElement(domNode)) {\n for (var childNode of Array.from(domNode.childNodes)) {\n text5 += getPlainText(childNode);\n }\n var display = getComputedStyle(domNode).getPropertyValue(\"display\");\n if (display === \"block\" || display === \"list\" || domNode.tagName === \"BR\") {\n text5 += \"\\n\";\n }\n }\n return text5;\n};\nvar catchSlateFragment = /data-slate-fragment=\"(.+?)\"/m;\nvar getSlateFragmentAttribute = (dataTransfer5) => {\n var htmlData = dataTransfer5.getData(\"text/html\");\n var [, fragment] = htmlData.match(catchSlateFragment) || [];\n return fragment;\n};\nvar getClipboardData = (dataTransfer5) => {\n if (!dataTransfer5.getData(\"application/x-slate-fragment\")) {\n var fragment = getSlateFragmentAttribute(dataTransfer5);\n if (fragment) {\n var clipboardData = new DataTransfer();\n dataTransfer5.types.forEach((type) => {\n clipboardData.setData(type, dataTransfer5.getData(type));\n });\n clipboardData.setData(\"application/x-slate-fragment\", fragment);\n return clipboardData;\n }\n }\n return dataTransfer5;\n};\nvar TRIPLE_CLICK = 3;\nvar _excluded$22 = [\"autoFocus\", \"decorate\", \"onDOMBeforeInput\", \"placeholder\", \"readOnly\", \"renderElement\", \"renderLeaf\", \"renderPlaceholder\", \"scrollSelectionIntoView\", \"style\", \"as\"];\nfunction ownKeys$12(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$12(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$12(Object(source), true).forEach(function(key) {\n _defineProperty2(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$12(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Children = (props) => /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, useChildren(props));\nvar Editable$1 = (props) => {\n var {\n autoFocus,\n decorate = defaultDecorate,\n onDOMBeforeInput: propsOnDOMBeforeInput,\n placeholder,\n readOnly = false,\n renderElement,\n renderLeaf,\n renderPlaceholder = (props2) => /* @__PURE__ */ import_react.default.createElement(DefaultPlaceholder, Object.assign({}, props2)),\n scrollSelectionIntoView = defaultScrollSelectionIntoView,\n style = {},\n as: Component2 = \"div\"\n } = props, attributes = _objectWithoutProperties2(props, _excluded$22);\n var editor = useSlate();\n var [isComposing, setIsComposing] = (0, import_react.useState)(false);\n var ref = (0, import_react.useRef)(null);\n var deferredOperations = (0, import_react.useRef)([]);\n IS_READ_ONLY.set(editor, readOnly);\n var state = (0, import_react.useMemo)(() => ({\n isComposing: false,\n hasInsertPrefixInCompositon: false,\n isDraggingInternally: false,\n isUpdatingSelection: false,\n latestElement: null\n }), []);\n useIsomorphicLayoutEffect(() => {\n var window2;\n if (ref.current && (window2 = getDefaultView(ref.current))) {\n EDITOR_TO_WINDOW.set(editor, window2);\n EDITOR_TO_ELEMENT.set(editor, ref.current);\n NODE_TO_ELEMENT.set(editor, ref.current);\n ELEMENT_TO_NODE.set(ref.current, editor);\n } else {\n NODE_TO_ELEMENT.delete(editor);\n }\n var {\n selection\n } = editor;\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n var domSelection = root5.getSelection();\n if (state.isComposing || !domSelection || !ReactEditor.isFocused(editor)) {\n return;\n }\n var hasDomSelection = domSelection.type !== \"None\";\n if (!selection && !hasDomSelection) {\n return;\n }\n var editorElement = EDITOR_TO_ELEMENT.get(editor);\n var hasDomSelectionInEditor = false;\n if (editorElement.contains(domSelection.anchorNode) && editorElement.contains(domSelection.focusNode)) {\n hasDomSelectionInEditor = true;\n }\n if (hasDomSelection && hasDomSelectionInEditor && selection) {\n var slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: true,\n suppressThrow: true\n });\n if (slateRange && Range.equals(slateRange, selection)) {\n return;\n }\n }\n if (selection && !ReactEditor.hasRange(editor, selection)) {\n editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false\n });\n return;\n }\n state.isUpdatingSelection = true;\n var newDomRange = selection && ReactEditor.toDOMRange(editor, selection);\n if (newDomRange) {\n if (Range.isBackward(selection)) {\n domSelection.setBaseAndExtent(newDomRange.endContainer, newDomRange.endOffset, newDomRange.startContainer, newDomRange.startOffset);\n } else {\n domSelection.setBaseAndExtent(newDomRange.startContainer, newDomRange.startOffset, newDomRange.endContainer, newDomRange.endOffset);\n }\n scrollSelectionIntoView(editor, newDomRange);\n } else {\n domSelection.removeAllRanges();\n }\n setTimeout(() => {\n if (newDomRange && IS_FIREFOX) {\n var el = ReactEditor.toDOMNode(editor, editor);\n el.focus();\n }\n state.isUpdatingSelection = false;\n });\n });\n (0, import_react.useEffect)(() => {\n if (ref.current && autoFocus) {\n ref.current.focus();\n }\n }, [autoFocus]);\n var onDOMSelectionChange = (0, import_react.useCallback)((0, import_throttle.default)(() => {\n if (!state.isComposing && !state.isUpdatingSelection && !state.isDraggingInternally) {\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n var {\n activeElement\n } = root5;\n var el = ReactEditor.toDOMNode(editor, editor);\n var domSelection = root5.getSelection();\n if (activeElement === el) {\n state.latestElement = activeElement;\n IS_FOCUSED.set(editor, true);\n } else {\n IS_FOCUSED.delete(editor);\n }\n if (!domSelection) {\n return Transforms.deselect(editor);\n }\n var {\n anchorNode,\n focusNode\n } = domSelection;\n var anchorNodeSelectable = hasEditableTarget(editor, anchorNode) || isTargetInsideNonReadonlyVoid(editor, anchorNode);\n var focusNodeSelectable = hasEditableTarget(editor, focusNode) || isTargetInsideNonReadonlyVoid(editor, focusNode);\n if (anchorNodeSelectable && focusNodeSelectable) {\n var range = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false\n });\n Transforms.select(editor, range);\n }\n }\n }, 100), [readOnly]);\n var scheduleOnDOMSelectionChange = (0, import_react.useMemo)(() => (0, import_debounce.default)(onDOMSelectionChange, 0), [onDOMSelectionChange]);\n var onDOMBeforeInput = (0, import_react.useCallback)((event) => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {\n var _EDITOR_TO_USER_SELEC;\n scheduleOnDOMSelectionChange.flush();\n onDOMSelectionChange.flush();\n var {\n selection\n } = editor;\n var {\n inputType: type\n } = event;\n var data = event.dataTransfer || event.data || void 0;\n if (type === \"insertCompositionText\" || type === \"deleteCompositionText\") {\n return;\n }\n var native = false;\n if (type === \"insertText\" && selection && Range.isCollapsed(selection) && event.data && event.data.length === 1 && /[a-z ]/i.test(event.data) && selection.anchor.offset !== 0) {\n var _node$parentElement;\n native = true;\n if (editor.marks) {\n native = false;\n }\n var {\n anchor\n } = selection;\n var [node, offset3] = ReactEditor.toDOMPoint(editor, anchor);\n var anchorNode = (_node$parentElement = node.parentElement) === null || _node$parentElement === void 0 ? void 0 : _node$parentElement.closest(\"a\");\n if (anchorNode && ReactEditor.hasDOMNode(editor, anchorNode)) {\n var _lastText$textContent;\n var {\n document: document2\n } = ReactEditor.getWindow(editor);\n var lastText = document2.createTreeWalker(anchorNode, NodeFilter.SHOW_TEXT).lastChild();\n if (lastText === node && ((_lastText$textContent = lastText.textContent) === null || _lastText$textContent === void 0 ? void 0 : _lastText$textContent.length) === offset3) {\n native = false;\n }\n }\n }\n if (!type.startsWith(\"delete\") || type.startsWith(\"deleteBy\")) {\n var [targetRange] = event.getTargetRanges();\n if (targetRange) {\n var range = ReactEditor.toSlateRange(editor, targetRange, {\n exactMatch: false,\n suppressThrow: false\n });\n if (!selection || !Range.equals(selection, range)) {\n native = false;\n var selectionRef = editor.selection && Editor.rangeRef(editor, editor.selection);\n Transforms.select(editor, range);\n if (selectionRef) {\n EDITOR_TO_USER_SELECTION.set(editor, selectionRef);\n }\n }\n }\n }\n if (!native) {\n event.preventDefault();\n }\n if (selection && Range.isExpanded(selection) && type.startsWith(\"delete\")) {\n var direction = type.endsWith(\"Backward\") ? \"backward\" : \"forward\";\n Editor.deleteFragment(editor, {\n direction\n });\n return;\n }\n switch (type) {\n case \"deleteByComposition\":\n case \"deleteByCut\":\n case \"deleteByDrag\": {\n Editor.deleteFragment(editor);\n break;\n }\n case \"deleteContent\":\n case \"deleteContentForward\": {\n Editor.deleteForward(editor);\n break;\n }\n case \"deleteContentBackward\": {\n Editor.deleteBackward(editor);\n break;\n }\n case \"deleteEntireSoftLine\": {\n Editor.deleteBackward(editor, {\n unit: \"line\"\n });\n Editor.deleteForward(editor, {\n unit: \"line\"\n });\n break;\n }\n case \"deleteHardLineBackward\": {\n Editor.deleteBackward(editor, {\n unit: \"block\"\n });\n break;\n }\n case \"deleteSoftLineBackward\": {\n Editor.deleteBackward(editor, {\n unit: \"line\"\n });\n break;\n }\n case \"deleteHardLineForward\": {\n Editor.deleteForward(editor, {\n unit: \"block\"\n });\n break;\n }\n case \"deleteSoftLineForward\": {\n Editor.deleteForward(editor, {\n unit: \"line\"\n });\n break;\n }\n case \"deleteWordBackward\": {\n Editor.deleteBackward(editor, {\n unit: \"word\"\n });\n break;\n }\n case \"deleteWordForward\": {\n Editor.deleteForward(editor, {\n unit: \"word\"\n });\n break;\n }\n case \"insertLineBreak\":\n Editor.insertSoftBreak(editor);\n break;\n case \"insertParagraph\": {\n Editor.insertBreak(editor);\n break;\n }\n case \"insertFromComposition\":\n case \"insertFromDrop\":\n case \"insertFromPaste\":\n case \"insertFromYank\":\n case \"insertReplacementText\":\n case \"insertText\": {\n var {\n selection: _selection\n } = editor;\n if (_selection) {\n if (Range.isExpanded(_selection)) {\n Editor.deleteFragment(editor);\n }\n }\n if (type === \"insertFromComposition\") {\n state.isComposing && setIsComposing(false);\n state.isComposing = false;\n }\n if ((data === null || data === void 0 ? void 0 : data.constructor.name) === \"DataTransfer\") {\n ReactEditor.insertData(editor, data);\n } else if (typeof data === \"string\") {\n if (native) {\n deferredOperations.current.push(() => Editor.insertText(editor, data));\n } else {\n Editor.insertText(editor, data);\n }\n }\n break;\n }\n }\n var toRestore = (_EDITOR_TO_USER_SELEC = EDITOR_TO_USER_SELECTION.get(editor)) === null || _EDITOR_TO_USER_SELEC === void 0 ? void 0 : _EDITOR_TO_USER_SELEC.unref();\n EDITOR_TO_USER_SELECTION.delete(editor);\n if (toRestore && (!editor.selection || !Range.equals(editor.selection, toRestore))) {\n Transforms.select(editor, toRestore);\n }\n }\n }, [readOnly, propsOnDOMBeforeInput]);\n useIsomorphicLayoutEffect(() => {\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n ref.current.addEventListener(\"beforeinput\", onDOMBeforeInput);\n }\n return () => {\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n ref.current.removeEventListener(\"beforeinput\", onDOMBeforeInput);\n }\n };\n }, [onDOMBeforeInput]);\n useIsomorphicLayoutEffect(() => {\n var window2 = ReactEditor.getWindow(editor);\n window2.document.addEventListener(\"selectionchange\", scheduleOnDOMSelectionChange);\n return () => {\n window2.document.removeEventListener(\"selectionchange\", scheduleOnDOMSelectionChange);\n };\n }, [scheduleOnDOMSelectionChange]);\n var decorations = [...Node2.nodes(editor)].flatMap((_ref) => {\n var [n5, p4] = _ref;\n return decorate([n5, p4]);\n });\n if (placeholder && editor.children.length === 1 && Array.from(Node2.texts(editor)).length === 1 && Node2.string(editor) === \"\" && !isComposing) {\n var start3 = Editor.start(editor, []);\n decorations.push({\n [PLACEHOLDER_SYMBOL]: true,\n placeholder,\n anchor: start3,\n focus: start3\n });\n }\n return /* @__PURE__ */ import_react.default.createElement(ReadOnlyContext.Provider, {\n value: readOnly\n }, /* @__PURE__ */ import_react.default.createElement(DecorateContext.Provider, {\n value: decorate\n }, /* @__PURE__ */ import_react.default.createElement(Component2, Object.assign({\n role: readOnly ? void 0 : \"textbox\"\n }, attributes, {\n spellCheck: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.spellCheck : false,\n autoCorrect: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCorrect : \"false\",\n autoCapitalize: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCapitalize : \"false\",\n \"data-slate-editor\": true,\n \"data-slate-node\": \"value\",\n contentEditable: !readOnly,\n zindex: -1,\n suppressContentEditableWarning: true,\n ref,\n style: _objectSpread$12({\n position: \"relative\",\n outline: \"none\",\n whiteSpace: \"pre-wrap\",\n wordWrap: \"break-word\"\n }, style),\n onBeforeInput: (0, import_react.useCallback)((event) => {\n if (!HAS_BEFORE_INPUT_SUPPORT && !readOnly && !isEventHandled(event, attributes.onBeforeInput) && hasEditableTarget(editor, event.target)) {\n event.preventDefault();\n if (!state.isComposing) {\n var text5 = event.data;\n Editor.insertText(editor, text5);\n }\n }\n }, [readOnly]),\n onInput: (0, import_react.useCallback)((event) => {\n for (var op of deferredOperations.current) {\n op();\n }\n deferredOperations.current = [];\n }, []),\n onBlur: (0, import_react.useCallback)((event) => {\n if (readOnly || state.isUpdatingSelection || !hasEditableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {\n return;\n }\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n if (state.latestElement === root5.activeElement) {\n return;\n }\n var {\n relatedTarget\n } = event;\n var el = ReactEditor.toDOMNode(editor, editor);\n if (relatedTarget === el) {\n return;\n }\n if (isDOMElement(relatedTarget) && relatedTarget.hasAttribute(\"data-slate-spacer\")) {\n return;\n }\n if (relatedTarget != null && isDOMNode(relatedTarget) && ReactEditor.hasDOMNode(editor, relatedTarget)) {\n var node = ReactEditor.toSlateNode(editor, relatedTarget);\n if (Element2.isElement(node) && !editor.isVoid(node)) {\n return;\n }\n }\n if (IS_SAFARI) {\n var domSelection = root5.getSelection();\n domSelection === null || domSelection === void 0 ? void 0 : domSelection.removeAllRanges();\n }\n IS_FOCUSED.delete(editor);\n }, [readOnly, attributes.onBlur]),\n onClick: (0, import_react.useCallback)((event) => {\n if (hasTarget(editor, event.target) && !isEventHandled(event, attributes.onClick) && isDOMNode(event.target)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n if (!Editor.hasPath(editor, path) || Node2.get(editor, path) !== node) {\n return;\n }\n if (event.detail === TRIPLE_CLICK && path.length >= 1) {\n var blockPath = path;\n if (!Editor.isBlock(editor, node)) {\n var _block$;\n var block = Editor.above(editor, {\n match: (n5) => Editor.isBlock(editor, n5),\n at: path\n });\n blockPath = (_block$ = block === null || block === void 0 ? void 0 : block[1]) !== null && _block$ !== void 0 ? _block$ : path.slice(0, 1);\n }\n var range = Editor.range(editor, blockPath);\n Transforms.select(editor, range);\n return;\n }\n if (readOnly) {\n return;\n }\n var _start = Editor.start(editor, path);\n var end3 = Editor.end(editor, path);\n var startVoid = Editor.void(editor, {\n at: _start\n });\n var endVoid = Editor.void(editor, {\n at: end3\n });\n if (startVoid && endVoid && Path.equals(startVoid[1], endVoid[1])) {\n var _range = Editor.range(editor, _start);\n Transforms.select(editor, _range);\n }\n }\n }, [readOnly, attributes.onClick]),\n onCompositionEnd: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionEnd)) {\n state.isComposing && setIsComposing(false);\n state.isComposing = false;\n if (!IS_SAFARI && !IS_FIREFOX_LEGACY && !IS_IOS && !IS_QQBROWSER && !IS_WECHATBROWSER && !IS_UC_MOBILE && event.data) {\n Editor.insertText(editor, event.data);\n }\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n var leafPath = editor.selection.anchor.path;\n var currentTextNode = Node2.leaf(editor, leafPath);\n if (state.hasInsertPrefixInCompositon) {\n state.hasInsertPrefixInCompositon = false;\n Editor.withoutNormalizing(editor, () => {\n var text5 = currentTextNode.text.replace(/^\\uFEFF/, \"\");\n Transforms.delete(editor, {\n distance: currentTextNode.text.length,\n reverse: true\n });\n Editor.insertText(editor, text5);\n });\n }\n }\n }\n }, [attributes.onCompositionEnd]),\n onCompositionUpdate: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate)) {\n !state.isComposing && setIsComposing(true);\n state.isComposing = true;\n }\n }, [attributes.onCompositionUpdate]),\n onCompositionStart: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionStart)) {\n var {\n selection,\n marks: marks3\n } = editor;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n return;\n }\n var inline = Editor.above(editor, {\n match: (n5) => Editor.isInline(editor, n5),\n mode: \"highest\"\n });\n if (inline) {\n var [, inlinePath] = inline;\n if (Editor.isEnd(editor, selection.anchor, inlinePath)) {\n var point = Editor.after(editor, inlinePath);\n Transforms.setSelection(editor, {\n anchor: point,\n focus: point\n });\n }\n }\n if (marks3) {\n state.hasInsertPrefixInCompositon = true;\n Transforms.insertNodes(editor, _objectSpread$12({\n text: \"\\uFEFF\"\n }, marks3), {\n select: true\n });\n }\n }\n }\n }, [attributes.onCompositionStart]),\n onCopy: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, \"copy\");\n }\n }, [attributes.onCopy]),\n onCut: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, \"cut\");\n var {\n selection\n } = editor;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n } else {\n var node = Node2.parent(editor, selection.anchor.path);\n if (Editor.isVoid(editor, node)) {\n Transforms.delete(editor);\n }\n }\n }\n }\n }, [readOnly, attributes.onCut]),\n onDragOver: (0, import_react.useCallback)((event) => {\n if (hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragOver)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n if (Editor.isVoid(editor, node)) {\n event.preventDefault();\n }\n }\n }, [attributes.onDragOver]),\n onDragStart: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragStart)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n var voidMatch = Editor.isVoid(editor, node) || Editor.void(editor, {\n at: path,\n voids: true\n });\n if (voidMatch) {\n var range = Editor.range(editor, path);\n Transforms.select(editor, range);\n }\n state.isDraggingInternally = true;\n ReactEditor.setFragmentData(editor, event.dataTransfer, \"drag\");\n }\n }, [readOnly, attributes.onDragStart]),\n onDrop: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDrop)) {\n event.preventDefault();\n var draggedRange = editor.selection;\n var range = ReactEditor.findEventRange(editor, event);\n var data = event.dataTransfer;\n Transforms.select(editor, range);\n if (state.isDraggingInternally) {\n if (draggedRange && !Range.equals(draggedRange, range) && !Editor.void(editor, {\n at: range,\n voids: true\n })) {\n Transforms.delete(editor, {\n at: draggedRange\n });\n }\n }\n ReactEditor.insertData(editor, data);\n if (!ReactEditor.isFocused(editor)) {\n ReactEditor.focus(editor);\n }\n }\n state.isDraggingInternally = false;\n }, [readOnly, attributes.onDrop]),\n onDragEnd: (0, import_react.useCallback)((event) => {\n if (!readOnly && state.isDraggingInternally && attributes.onDragEnd && hasTarget(editor, event.target)) {\n attributes.onDragEnd(event);\n }\n state.isDraggingInternally = false;\n }, [readOnly, attributes.onDragEnd]),\n onFocus: (0, import_react.useCallback)((event) => {\n if (!readOnly && !state.isUpdatingSelection && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onFocus)) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n state.latestElement = root5.activeElement;\n if (IS_FIREFOX && event.target !== el) {\n el.focus();\n return;\n }\n IS_FOCUSED.set(editor, true);\n }\n }, [readOnly, attributes.onFocus]),\n onKeyDown: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasEditableTarget(editor, event.target)) {\n var {\n nativeEvent\n } = event;\n if (state.isComposing && nativeEvent.isComposing === false) {\n state.isComposing = false;\n setIsComposing(false);\n }\n if (isEventHandled(event, attributes.onKeyDown) || state.isComposing) {\n return;\n }\n var {\n selection\n } = editor;\n var element4 = editor.children[selection !== null ? selection.focus.path[0] : 0];\n var isRTL = (0, import_direction.default)(Node2.string(element4)) === \"rtl\";\n if (Hotkeys.isRedo(nativeEvent)) {\n event.preventDefault();\n var maybeHistoryEditor = editor;\n if (typeof maybeHistoryEditor.redo === \"function\") {\n maybeHistoryEditor.redo();\n }\n return;\n }\n if (Hotkeys.isUndo(nativeEvent)) {\n event.preventDefault();\n var _maybeHistoryEditor = editor;\n if (typeof _maybeHistoryEditor.undo === \"function\") {\n _maybeHistoryEditor.undo();\n }\n return;\n }\n if (Hotkeys.isMoveLineBackward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: \"line\",\n reverse: true\n });\n return;\n }\n if (Hotkeys.isMoveLineForward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: \"line\"\n });\n return;\n }\n if (Hotkeys.isExtendLineBackward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: \"line\",\n edge: \"focus\",\n reverse: true\n });\n return;\n }\n if (Hotkeys.isExtendLineForward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: \"line\",\n edge: \"focus\"\n });\n return;\n }\n if (Hotkeys.isMoveBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, {\n reverse: !isRTL\n });\n } else {\n Transforms.collapse(editor, {\n edge: \"start\"\n });\n }\n return;\n }\n if (Hotkeys.isMoveForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, {\n reverse: isRTL\n });\n } else {\n Transforms.collapse(editor, {\n edge: \"end\"\n });\n }\n return;\n }\n if (Hotkeys.isMoveWordBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, {\n edge: \"focus\"\n });\n }\n Transforms.move(editor, {\n unit: \"word\",\n reverse: !isRTL\n });\n return;\n }\n if (Hotkeys.isMoveWordForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, {\n edge: \"focus\"\n });\n }\n Transforms.move(editor, {\n unit: \"word\",\n reverse: isRTL\n });\n return;\n }\n if (!HAS_BEFORE_INPUT_SUPPORT) {\n if (Hotkeys.isBold(nativeEvent) || Hotkeys.isItalic(nativeEvent) || Hotkeys.isTransposeCharacter(nativeEvent)) {\n event.preventDefault();\n return;\n }\n if (Hotkeys.isSoftBreak(nativeEvent)) {\n event.preventDefault();\n Editor.insertSoftBreak(editor);\n return;\n }\n if (Hotkeys.isSplitBlock(nativeEvent)) {\n event.preventDefault();\n Editor.insertBreak(editor);\n return;\n }\n if (Hotkeys.isDeleteBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: \"backward\"\n });\n } else {\n Editor.deleteBackward(editor);\n }\n return;\n }\n if (Hotkeys.isDeleteForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: \"forward\"\n });\n } else {\n Editor.deleteForward(editor);\n }\n return;\n }\n if (Hotkeys.isDeleteLineBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: \"backward\"\n });\n } else {\n Editor.deleteBackward(editor, {\n unit: \"line\"\n });\n }\n return;\n }\n if (Hotkeys.isDeleteLineForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: \"forward\"\n });\n } else {\n Editor.deleteForward(editor, {\n unit: \"line\"\n });\n }\n return;\n }\n if (Hotkeys.isDeleteWordBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: \"backward\"\n });\n } else {\n Editor.deleteBackward(editor, {\n unit: \"word\"\n });\n }\n return;\n }\n if (Hotkeys.isDeleteWordForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: \"forward\"\n });\n } else {\n Editor.deleteForward(editor, {\n unit: \"word\"\n });\n }\n return;\n }\n } else {\n if (IS_CHROME || IS_SAFARI) {\n if (selection && (Hotkeys.isDeleteBackward(nativeEvent) || Hotkeys.isDeleteForward(nativeEvent)) && Range.isCollapsed(selection)) {\n var currentNode = Node2.parent(editor, selection.anchor.path);\n if (Element2.isElement(currentNode) && Editor.isVoid(editor, currentNode) && Editor.isInline(editor, currentNode)) {\n event.preventDefault();\n Editor.deleteBackward(editor, {\n unit: \"block\"\n });\n return;\n }\n }\n }\n }\n }\n }, [readOnly, attributes.onKeyDown]),\n onPaste: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onPaste)) {\n if (!HAS_BEFORE_INPUT_SUPPORT || isPlainTextOnlyPaste(event.nativeEvent)) {\n event.preventDefault();\n ReactEditor.insertData(editor, event.clipboardData);\n }\n }\n }, [readOnly, attributes.onPaste])\n }), /* @__PURE__ */ import_react.default.createElement(Children, {\n decorations,\n node: editor,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection: editor.selection\n }))));\n};\nvar DefaultPlaceholder = (_ref2) => {\n var {\n attributes,\n children\n } = _ref2;\n return /* @__PURE__ */ import_react.default.createElement(\"span\", Object.assign({}, attributes), children);\n};\nvar defaultDecorate = () => [];\nvar defaultScrollSelectionIntoView = (editor, domRange) => {\n if (!editor.selection || editor.selection && Range.isCollapsed(editor.selection)) {\n var leafEl = domRange.startContainer.parentElement;\n leafEl.getBoundingClientRect = domRange.getBoundingClientRect.bind(domRange);\n es_default(leafEl, {\n scrollMode: \"if-needed\"\n });\n delete leafEl.getBoundingClientRect;\n }\n};\nvar hasTarget = (editor, target) => {\n return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target);\n};\nvar hasEditableTarget = (editor, target) => {\n return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target, {\n editable: true\n });\n};\nvar isTargetInsideNonReadonlyVoid = (editor, target) => {\n if (IS_READ_ONLY.get(editor))\n return false;\n var slateNode2 = hasTarget(editor, target) && ReactEditor.toSlateNode(editor, target);\n return Editor.isVoid(editor, slateNode2);\n};\nvar isEventHandled = (event, handler) => {\n if (!handler) {\n return false;\n }\n var shouldTreatEventAsHandled = handler(event);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return event.isDefaultPrevented() || event.isPropagationStopped();\n};\nvar isDOMEventHandled = (event, handler) => {\n if (!handler) {\n return false;\n }\n var shouldTreatEventAsHandled = handler(event);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return event.defaultPrevented;\n};\nfunction getDiffStart(prev, next) {\n var length = Math.min(prev.length, next.length);\n for (var i3 = 0; i3 < length; i3++) {\n if (prev.charAt(i3) !== next.charAt(i3))\n return i3;\n }\n if (prev.length !== next.length)\n return length;\n return null;\n}\nfunction getDiffEnd(prev, next, max3) {\n var prevLength = prev.length;\n var nextLength = next.length;\n var length = Math.min(prevLength, nextLength, max3);\n for (var i3 = 0; i3 < length; i3++) {\n var prevChar = prev.charAt(prevLength - i3 - 1);\n var nextChar = next.charAt(nextLength - i3 - 1);\n if (prevChar !== nextChar)\n return i3;\n }\n if (prev.length !== next.length)\n return length;\n return null;\n}\nfunction getDiffOffsets(prev, next) {\n if (prev === next)\n return null;\n var start3 = getDiffStart(prev, next);\n if (start3 === null)\n return null;\n var maxEnd = Math.min(prev.length - start3, next.length - start3);\n var end3 = getDiffEnd(prev, next, maxEnd);\n if (end3 === null)\n return null;\n return {\n start: start3,\n end: end3\n };\n}\nfunction sliceText(text5, offsets) {\n return text5.slice(offsets.start, text5.length - offsets.end);\n}\nfunction diffText(prev, next) {\n if (prev === void 0 || next === void 0)\n return null;\n var offsets = getDiffOffsets(prev, next);\n if (offsets == null)\n return null;\n var insertText = sliceText(next, offsets);\n var removeText = sliceText(prev, offsets);\n return {\n start: offsets.start,\n end: prev.length - offsets.end,\n insertText,\n removeText\n };\n}\nfunction combineInsertedText(insertedText) {\n return insertedText.reduce((acc, _ref) => {\n var {\n text: text5\n } = _ref;\n return \"\".concat(acc).concat(text5.insertText);\n }, \"\");\n}\nfunction getTextInsertion(editor, domNode) {\n var node = ReactEditor.toSlateNode(editor, domNode);\n if (!Text.isText(node)) {\n return void 0;\n }\n var prevText = node.text;\n var nextText = domNode.textContent;\n if (nextText.endsWith(\"\\n\")) {\n nextText = nextText.slice(0, nextText.length - 1);\n }\n if (nextText !== prevText) {\n var textDiff = diffText(prevText, nextText);\n if (textDiff !== null) {\n var textPath = ReactEditor.findPath(editor, node);\n return {\n text: textDiff,\n path: textPath\n };\n }\n }\n return void 0;\n}\nfunction normalizeTextInsertionRange(editor, range, _ref2) {\n var {\n path,\n text: text5\n } = _ref2;\n var insertionRange = {\n anchor: {\n path,\n offset: text5.start\n },\n focus: {\n path,\n offset: text5.end\n }\n };\n if (!range || !Range.isCollapsed(range)) {\n return insertionRange;\n }\n var {\n insertText,\n removeText\n } = text5;\n var isSingleCharacterInsertion = insertText.length === 1 || removeText.length === 1;\n if (isSingleCharacterInsertion && Path.equals(range.anchor.path, path)) {\n var [_text] = Array.from(Editor.nodes(editor, {\n at: range,\n match: Text.isText\n }));\n if (_text) {\n var [node] = _text;\n var {\n anchor\n } = range;\n var characterBeforeAnchor = node.text[anchor.offset - 1];\n var characterAfterAnchor = node.text[anchor.offset];\n if (insertText.length === 1 && insertText === characterAfterAnchor) {\n return range;\n }\n if (removeText.length === 1 && removeText === characterBeforeAnchor) {\n return {\n anchor: {\n path,\n offset: anchor.offset - 1\n },\n focus: {\n path,\n offset: anchor.offset\n }\n };\n }\n }\n }\n return insertionRange;\n}\nvar n3 = 0;\nvar Key = class {\n constructor() {\n this.id = \"\".concat(n3++);\n }\n};\nvar ReactEditor = {\n getWindow(editor) {\n var window2 = EDITOR_TO_WINDOW.get(editor);\n if (!window2) {\n throw new Error(\"Unable to find a host window element for this editor\");\n }\n return window2;\n },\n findKey(editor, node) {\n var key = NODE_TO_KEY.get(node);\n if (!key) {\n key = new Key();\n NODE_TO_KEY.set(node, key);\n }\n return key;\n },\n findPath(editor, node) {\n var path = [];\n var child = node;\n while (true) {\n var parent2 = NODE_TO_PARENT.get(child);\n if (parent2 == null) {\n if (Editor.isEditor(child)) {\n return path;\n } else {\n break;\n }\n }\n var i3 = NODE_TO_INDEX.get(child);\n if (i3 == null) {\n break;\n }\n path.unshift(i3);\n child = parent2;\n }\n throw new Error(\"Unable to find the path for Slate node: \".concat(JSON.stringify(node)));\n },\n findDocumentOrShadowRoot(editor) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root5 = el.getRootNode();\n if ((root5 instanceof Document || root5 instanceof ShadowRoot) && root5.getSelection != null) {\n return root5;\n }\n return el.ownerDocument;\n },\n isFocused(editor) {\n return !!IS_FOCUSED.get(editor);\n },\n isReadOnly(editor) {\n return !!IS_READ_ONLY.get(editor);\n },\n blur(editor) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n IS_FOCUSED.set(editor, false);\n if (root5.activeElement === el) {\n el.blur();\n }\n },\n focus(editor) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n IS_FOCUSED.set(editor, true);\n if (root5.activeElement !== el) {\n el.focus({\n preventScroll: true\n });\n }\n },\n deselect(editor) {\n ReactEditor.toDOMNode(editor, editor);\n var {\n selection\n } = editor;\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n var domSelection = root5.getSelection();\n if (domSelection && domSelection.rangeCount > 0) {\n domSelection.removeAllRanges();\n }\n if (selection) {\n Transforms.deselect(editor);\n }\n },\n hasDOMNode(editor, target) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n editable = false\n } = options;\n var editorEl = ReactEditor.toDOMNode(editor, editor);\n var targetEl;\n try {\n targetEl = isDOMElement(target) ? target : target.parentElement;\n } catch (err) {\n if (!err.message.includes('Permission denied to access property \"nodeType\"')) {\n throw err;\n }\n }\n if (!targetEl) {\n return false;\n }\n return targetEl.closest(\"[data-slate-editor]\") === editorEl && (!editable || targetEl.isContentEditable ? true : typeof targetEl.isContentEditable === \"boolean\" && targetEl.closest('[contenteditable=\"false\"]') === editorEl || !!targetEl.getAttribute(\"data-slate-zero-width\"));\n },\n insertData(editor, data) {\n editor.insertData(data);\n },\n insertFragmentData(editor, data) {\n return editor.insertFragmentData(data);\n },\n insertTextData(editor, data) {\n return editor.insertTextData(data);\n },\n setFragmentData(editor, data, originEvent) {\n editor.setFragmentData(data, originEvent);\n },\n toDOMNode(editor, node) {\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n var domNode = Editor.isEditor(node) ? EDITOR_TO_ELEMENT.get(editor) : KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.get(ReactEditor.findKey(editor, node));\n if (!domNode) {\n throw new Error(\"Cannot resolve a DOM node from Slate node: \".concat(JSON.stringify(node)));\n }\n return domNode;\n },\n toDOMPoint(editor, point) {\n var [node] = Editor.node(editor, point.path);\n var el = ReactEditor.toDOMNode(editor, node);\n var domPoint;\n if (Editor.void(editor, {\n at: point\n })) {\n point = {\n path: point.path,\n offset: 0\n };\n }\n var selector = \"[data-slate-string], [data-slate-zero-width]\";\n var texts = Array.from(el.querySelectorAll(selector));\n var start3 = 0;\n for (var text5 of texts) {\n var domNode = text5.childNodes[0];\n if (domNode == null || domNode.textContent == null) {\n continue;\n }\n var {\n length\n } = domNode.textContent;\n var attr = text5.getAttribute(\"data-slate-length\");\n var trueLength = attr == null ? length : parseInt(attr, 10);\n var end3 = start3 + trueLength;\n if (point.offset <= end3) {\n var offset3 = Math.min(length, Math.max(0, point.offset - start3));\n domPoint = [domNode, offset3];\n break;\n }\n start3 = end3;\n }\n if (!domPoint) {\n throw new Error(\"Cannot resolve a DOM point from Slate point: \".concat(JSON.stringify(point)));\n }\n return domPoint;\n },\n toDOMRange(editor, range) {\n var {\n anchor,\n focus\n } = range;\n var isBackward = Range.isBackward(range);\n var domAnchor = ReactEditor.toDOMPoint(editor, anchor);\n var domFocus = Range.isCollapsed(range) ? domAnchor : ReactEditor.toDOMPoint(editor, focus);\n var window2 = ReactEditor.getWindow(editor);\n var domRange = window2.document.createRange();\n var [startNode, startOffset] = isBackward ? domFocus : domAnchor;\n var [endNode, endOffset] = isBackward ? domAnchor : domFocus;\n var startEl = isDOMElement(startNode) ? startNode : startNode.parentElement;\n var isStartAtZeroWidth = !!startEl.getAttribute(\"data-slate-zero-width\");\n var endEl = isDOMElement(endNode) ? endNode : endNode.parentElement;\n var isEndAtZeroWidth = !!endEl.getAttribute(\"data-slate-zero-width\");\n domRange.setStart(startNode, isStartAtZeroWidth ? 1 : startOffset);\n domRange.setEnd(endNode, isEndAtZeroWidth ? 1 : endOffset);\n return domRange;\n },\n toSlateNode(editor, domNode) {\n var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;\n if (domEl && !domEl.hasAttribute(\"data-slate-node\")) {\n domEl = domEl.closest(\"[data-slate-node]\");\n }\n var node = domEl ? ELEMENT_TO_NODE.get(domEl) : null;\n if (!node) {\n throw new Error(\"Cannot resolve a Slate node from DOM node: \".concat(domEl));\n }\n return node;\n },\n findEventRange(editor, event) {\n if (\"nativeEvent\" in event) {\n event = event.nativeEvent;\n }\n var {\n clientX: x4,\n clientY: y3,\n target\n } = event;\n if (x4 == null || y3 == null) {\n throw new Error(\"Cannot resolve a Slate range from a DOM event: \".concat(event));\n }\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n if (Editor.isVoid(editor, node)) {\n var rect = target.getBoundingClientRect();\n var isPrev = editor.isInline(node) ? x4 - rect.left < rect.left + rect.width - x4 : y3 - rect.top < rect.top + rect.height - y3;\n var edge = Editor.point(editor, path, {\n edge: isPrev ? \"start\" : \"end\"\n });\n var point = isPrev ? Editor.before(editor, edge) : Editor.after(editor, edge);\n if (point) {\n var _range = Editor.range(editor, point);\n return _range;\n }\n }\n var domRange;\n var {\n document: document2\n } = ReactEditor.getWindow(editor);\n if (document2.caretRangeFromPoint) {\n domRange = document2.caretRangeFromPoint(x4, y3);\n } else {\n var position = document2.caretPositionFromPoint(x4, y3);\n if (position) {\n domRange = document2.createRange();\n domRange.setStart(position.offsetNode, position.offset);\n domRange.setEnd(position.offsetNode, position.offset);\n }\n }\n if (!domRange) {\n throw new Error(\"Cannot resolve a Slate range from a DOM event: \".concat(event));\n }\n var range = ReactEditor.toSlateRange(editor, domRange, {\n exactMatch: false,\n suppressThrow: false\n });\n return range;\n },\n toSlatePoint(editor, domPoint, options) {\n var {\n exactMatch,\n suppressThrow\n } = options;\n var [nearestNode, nearestOffset] = exactMatch ? domPoint : normalizeDOMPoint(domPoint);\n var parentNode = nearestNode.parentNode;\n var textNode = null;\n var offset3 = 0;\n if (parentNode) {\n var _domNode$textContent;\n var editorEl = ReactEditor.toDOMNode(editor, editor);\n var potentialVoidNode = parentNode.closest('[data-slate-void=\"true\"]');\n var voidNode = potentialVoidNode && editorEl.contains(potentialVoidNode) ? potentialVoidNode : null;\n var leafNode = parentNode.closest(\"[data-slate-leaf]\");\n var domNode = null;\n if (leafNode) {\n textNode = leafNode.closest('[data-slate-node=\"text\"]');\n if (textNode) {\n var window2 = ReactEditor.getWindow(editor);\n var range = window2.document.createRange();\n range.setStart(textNode, 0);\n range.setEnd(nearestNode, nearestOffset);\n var contents = range.cloneContents();\n var removals = [...Array.prototype.slice.call(contents.querySelectorAll(\"[data-slate-zero-width]\")), ...Array.prototype.slice.call(contents.querySelectorAll(\"[contenteditable=false]\"))];\n removals.forEach((el) => {\n el.parentNode.removeChild(el);\n });\n offset3 = contents.textContent.length;\n domNode = textNode;\n }\n } else if (voidNode) {\n leafNode = voidNode.querySelector(\"[data-slate-leaf]\");\n if (!leafNode) {\n offset3 = 1;\n } else {\n textNode = leafNode.closest('[data-slate-node=\"text\"]');\n domNode = leafNode;\n offset3 = domNode.textContent.length;\n domNode.querySelectorAll(\"[data-slate-zero-width]\").forEach((el) => {\n offset3 -= el.textContent.length;\n });\n }\n }\n if (domNode && offset3 === domNode.textContent.length && (parentNode.hasAttribute(\"data-slate-zero-width\") || IS_FIREFOX && (_domNode$textContent = domNode.textContent) !== null && _domNode$textContent !== void 0 && _domNode$textContent.endsWith(\"\\n\\n\"))) {\n offset3--;\n }\n }\n if (!textNode) {\n if (suppressThrow) {\n return null;\n }\n throw new Error(\"Cannot resolve a Slate point from DOM point: \".concat(domPoint));\n }\n var slateNode2 = ReactEditor.toSlateNode(editor, textNode);\n var path = ReactEditor.findPath(editor, slateNode2);\n return {\n path,\n offset: offset3\n };\n },\n toSlateRange(editor, domRange, options) {\n var {\n exactMatch,\n suppressThrow\n } = options;\n var el = isDOMSelection(domRange) ? domRange.anchorNode : domRange.startContainer;\n var anchorNode;\n var anchorOffset;\n var focusNode;\n var focusOffset;\n var isCollapsed2;\n if (el) {\n if (isDOMSelection(domRange)) {\n anchorNode = domRange.anchorNode;\n anchorOffset = domRange.anchorOffset;\n focusNode = domRange.focusNode;\n focusOffset = domRange.focusOffset;\n if (IS_CHROME && hasShadowRoot()) {\n isCollapsed2 = domRange.anchorNode === domRange.focusNode && domRange.anchorOffset === domRange.focusOffset;\n } else {\n isCollapsed2 = domRange.isCollapsed;\n }\n } else {\n anchorNode = domRange.startContainer;\n anchorOffset = domRange.startOffset;\n focusNode = domRange.endContainer;\n focusOffset = domRange.endOffset;\n isCollapsed2 = domRange.collapsed;\n }\n }\n if (anchorNode == null || focusNode == null || anchorOffset == null || focusOffset == null) {\n throw new Error(\"Cannot resolve a Slate range from DOM range: \".concat(domRange));\n }\n var anchor = ReactEditor.toSlatePoint(editor, [anchorNode, anchorOffset], {\n exactMatch,\n suppressThrow\n });\n if (!anchor) {\n return null;\n }\n var focus = isCollapsed2 ? anchor : ReactEditor.toSlatePoint(editor, [focusNode, focusOffset], {\n exactMatch,\n suppressThrow\n });\n if (!focus) {\n return null;\n }\n var range = {\n anchor,\n focus\n };\n if (Range.isExpanded(range) && Range.isForward(range) && isDOMElement(focusNode) && Editor.void(editor, {\n at: range.focus,\n mode: \"highest\"\n })) {\n range = Editor.unhangRange(editor, range, {\n voids: true\n });\n }\n return range;\n },\n hasRange(editor, range) {\n var {\n anchor,\n focus\n } = range;\n return Editor.hasPath(editor, anchor.path) && Editor.hasPath(editor, focus.path);\n }\n};\nfunction gatherMutationData(editor, mutations) {\n var addedNodes = [];\n var removedNodes = [];\n var insertedText = [];\n var characterDataMutations = [];\n mutations.forEach((mutation) => {\n switch (mutation.type) {\n case \"childList\": {\n if (mutation.addedNodes.length) {\n mutation.addedNodes.forEach((addedNode) => {\n addedNodes.push(addedNode);\n });\n }\n mutation.removedNodes.forEach((removedNode) => {\n removedNodes.push(removedNode);\n });\n break;\n }\n case \"characterData\": {\n characterDataMutations.push(mutation);\n var {\n parentNode\n } = mutation.target;\n if (!parentNode) {\n return;\n }\n var textInsertion = getTextInsertion(editor, parentNode);\n if (!textInsertion) {\n return;\n }\n if (insertedText.some((_ref) => {\n var {\n path\n } = _ref;\n return Path.equals(path, textInsertion.path);\n })) {\n return;\n }\n insertedText.push(textInsertion);\n }\n }\n });\n return {\n addedNodes,\n removedNodes,\n insertedText,\n characterDataMutations\n };\n}\nvar isLineBreak = (editor, _ref2) => {\n var {\n addedNodes\n } = _ref2;\n var {\n selection\n } = editor;\n var parentNode = selection ? Node2.parent(editor, selection.anchor.path) : null;\n var parentDOMNode = parentNode ? ReactEditor.toDOMNode(editor, parentNode) : null;\n if (!parentDOMNode) {\n return false;\n }\n return addedNodes.some((addedNode) => addedNode instanceof HTMLElement && addedNode.tagName === (parentDOMNode === null || parentDOMNode === void 0 ? void 0 : parentDOMNode.tagName));\n};\nvar isDeletion = (_4, _ref3) => {\n var {\n removedNodes\n } = _ref3;\n return removedNodes.length > 0;\n};\nvar isReplaceExpandedSelection = (_ref4, _ref5) => {\n var {\n selection\n } = _ref4;\n var {\n removedNodes\n } = _ref5;\n return selection ? Range.isExpanded(selection) && removedNodes.length > 0 : false;\n};\nvar isTextInsertion = (_4, _ref6) => {\n var {\n insertedText\n } = _ref6;\n return insertedText.length > 0;\n};\nvar isRemoveLeafNodes = (_4, _ref7) => {\n var {\n addedNodes,\n characterDataMutations,\n removedNodes\n } = _ref7;\n return removedNodes.length > 0 && addedNodes.length === 0 && characterDataMutations.length > 0;\n};\nvar AndroidInputManager = class {\n constructor(editor, restoreDOM) {\n this.editor = editor;\n this.restoreDOM = restoreDOM;\n this.flush = (mutations) => {\n try {\n this.reconcileMutations(mutations);\n } catch (err) {\n console.error(err);\n this.restoreDOM();\n }\n };\n this.reconcileMutations = (mutations) => {\n var mutationData = gatherMutationData(this.editor, mutations);\n var {\n insertedText,\n removedNodes\n } = mutationData;\n if (isReplaceExpandedSelection(this.editor, mutationData)) {\n var text5 = combineInsertedText(insertedText);\n this.replaceExpandedSelection(text5);\n } else if (isLineBreak(this.editor, mutationData)) {\n this.insertBreak();\n } else if (isRemoveLeafNodes(this.editor, mutationData)) {\n this.removeLeafNodes(removedNodes);\n } else if (isDeletion(this.editor, mutationData)) {\n this.deleteBackward();\n } else if (isTextInsertion(this.editor, mutationData)) {\n this.insertText(insertedText);\n }\n };\n this.insertText = (insertedText) => {\n var {\n selection\n } = this.editor;\n if (IS_COMPOSING.get(this.editor) || IS_ON_COMPOSITION_END.get(this.editor)) {\n EDITOR_ON_COMPOSITION_TEXT.set(this.editor, insertedText);\n IS_ON_COMPOSITION_END.set(this.editor, false);\n return;\n }\n insertedText.forEach((insertion) => {\n var text5 = insertion.text.insertText;\n var at = normalizeTextInsertionRange(this.editor, selection, insertion);\n Transforms.setSelection(this.editor, at);\n Editor.insertText(this.editor, text5);\n });\n };\n this.insertBreak = () => {\n var {\n selection\n } = this.editor;\n Editor.insertBreak(this.editor);\n this.restoreDOM();\n if (selection) {\n setTimeout(() => {\n if (this.editor.selection && Range.equals(selection, this.editor.selection)) {\n Transforms.move(this.editor);\n }\n }, 100);\n }\n };\n this.replaceExpandedSelection = (text5) => {\n Editor.deleteFragment(this.editor);\n if (text5.length) {\n Editor.insertText(this.editor, text5);\n }\n this.restoreDOM();\n };\n this.deleteBackward = () => {\n Editor.deleteBackward(this.editor);\n ReactEditor.focus(this.editor);\n this.restoreDOM();\n };\n this.removeLeafNodes = (nodes) => {\n for (var node of nodes) {\n var slateNode2 = ReactEditor.toSlateNode(this.editor, node);\n if (slateNode2) {\n var path = ReactEditor.findPath(this.editor, slateNode2);\n Transforms.delete(this.editor, {\n at: path\n });\n this.restoreDOM();\n }\n }\n };\n this.editor = editor;\n this.restoreDOM = restoreDOM;\n }\n};\nfunction useMutationObserver(node, callback, options) {\n var [mutationObserver] = (0, import_react.useState)(() => new MutationObserver(callback));\n useIsomorphicLayoutEffect(() => {\n mutationObserver.disconnect();\n });\n (0, import_react.useEffect)(() => {\n if (!node.current) {\n throw new Error(\"Failed to attach MutationObserver, `node` is undefined\");\n }\n mutationObserver.observe(node.current, options);\n return mutationObserver.disconnect.bind(mutationObserver);\n });\n}\nvar MUTATION_OBSERVER_CONFIG$1 = {\n childList: true,\n characterData: true,\n subtree: true\n};\nfunction findClosestKnowSlateNode(domNode) {\n var _domEl;\n var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;\n if (domEl && !domEl.hasAttribute(\"data-slate-node\")) {\n domEl = domEl.closest(\"[data-slate-node]\");\n }\n var slateNode2 = domEl && ELEMENT_TO_NODE.get(domEl);\n if (slateNode2) {\n return slateNode2;\n }\n return (_domEl = domEl) !== null && _domEl !== void 0 && _domEl.parentElement ? findClosestKnowSlateNode(domEl.parentElement) : null;\n}\nfunction useRestoreDom(node, receivedUserInput) {\n var editor = useSlateStatic();\n var mutatedNodes = (0, import_react.useRef)(/* @__PURE__ */ new Set());\n var handleDOMMutation = (0, import_react.useCallback)((mutations) => {\n if (!receivedUserInput.current) {\n return;\n }\n mutations.forEach((_ref) => {\n var {\n target\n } = _ref;\n var slateNode2 = findClosestKnowSlateNode(target);\n if (!slateNode2) {\n return;\n }\n return mutatedNodes.current.add(slateNode2);\n });\n }, []);\n useMutationObserver(node, handleDOMMutation, MUTATION_OBSERVER_CONFIG$1);\n mutatedNodes.current.clear();\n var restore = (0, import_react.useCallback)(() => {\n var mutated = Array.from(mutatedNodes.current.values());\n var nodesToRestore = mutated.filter((n5) => !mutated.some((m2) => Path.isParent(ReactEditor.findPath(editor, m2), ReactEditor.findPath(editor, n5))));\n nodesToRestore.forEach((n5) => {\n var _NODE_TO_RESTORE_DOM$;\n (_NODE_TO_RESTORE_DOM$ = NODE_TO_RESTORE_DOM.get(n5)) === null || _NODE_TO_RESTORE_DOM$ === void 0 ? void 0 : _NODE_TO_RESTORE_DOM$();\n });\n mutatedNodes.current.clear();\n }, []);\n return restore;\n}\nfunction useTrackUserInput() {\n var editor = useSlateStatic();\n var receivedUserInput = (0, import_react.useRef)(false);\n var animationFrameRef = (0, import_react.useRef)(null);\n var onUserInput = (0, import_react.useCallback)(() => {\n if (receivedUserInput.current === false) {\n var window2 = ReactEditor.getWindow(editor);\n receivedUserInput.current = true;\n if (animationFrameRef.current) {\n window2.cancelAnimationFrame(animationFrameRef.current);\n }\n animationFrameRef.current = window2.requestAnimationFrame(() => {\n receivedUserInput.current = false;\n animationFrameRef.current = null;\n });\n }\n }, []);\n (0, import_react.useEffect)(() => {\n if (receivedUserInput.current) {\n receivedUserInput.current = false;\n }\n });\n return {\n receivedUserInput,\n onUserInput\n };\n}\nvar MUTATION_OBSERVER_CONFIG = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n subtree: true\n};\nfunction useAndroidInputManager(node) {\n var editor = useSlateStatic();\n var {\n receivedUserInput,\n onUserInput\n } = useTrackUserInput();\n var restoreDom = useRestoreDom(node, receivedUserInput);\n var inputManager = (0, import_react.useMemo)(() => new AndroidInputManager(editor, restoreDom), [restoreDom, editor]);\n var timeoutId = (0, import_react.useRef)(null);\n var isReconciling = (0, import_react.useRef)(false);\n var flush = (0, import_react.useCallback)((mutations) => {\n if (!receivedUserInput.current) {\n return;\n }\n isReconciling.current = true;\n inputManager.flush(mutations);\n if (timeoutId.current) {\n clearTimeout(timeoutId.current);\n }\n timeoutId.current = setTimeout(() => {\n isReconciling.current = false;\n timeoutId.current = null;\n }, 250);\n }, []);\n useMutationObserver(node, flush, MUTATION_OBSERVER_CONFIG);\n return {\n isReconciling,\n onUserInput\n };\n}\nvar _excluded$12 = [\"autoFocus\", \"decorate\", \"onDOMBeforeInput\", \"placeholder\", \"readOnly\", \"renderElement\", \"renderLeaf\", \"renderPlaceholder\", \"style\", \"as\"];\nfunction ownKeys2(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread2(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys2(Object(source), true).forEach(function(key) {\n _defineProperty2(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys2(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar RESOLVE_DELAY = 20;\nvar AndroidEditable = (props) => {\n var {\n autoFocus,\n decorate = defaultDecorate,\n onDOMBeforeInput: propsOnDOMBeforeInput,\n placeholder,\n readOnly = false,\n renderElement,\n renderLeaf,\n renderPlaceholder = (props2) => /* @__PURE__ */ import_react.default.createElement(DefaultPlaceholder, Object.assign({}, props2)),\n style = {},\n as: Component2 = \"div\"\n } = props, attributes = _objectWithoutProperties2(props, _excluded$12);\n var editor = useSlate();\n var [isComposing, setIsComposing] = (0, import_react.useState)(false);\n var ref = (0, import_react.useRef)(null);\n var inputManager = useAndroidInputManager(ref);\n IS_READ_ONLY.set(editor, readOnly);\n var state = (0, import_react.useMemo)(() => ({\n isComposing: false,\n isUpdatingSelection: false,\n latestElement: null\n }), []);\n var contentKey = useContentKey(editor);\n useIsomorphicLayoutEffect(() => {\n var window2;\n if (ref.current && (window2 = getDefaultView(ref.current))) {\n EDITOR_TO_WINDOW.set(editor, window2);\n EDITOR_TO_ELEMENT.set(editor, ref.current);\n NODE_TO_ELEMENT.set(editor, ref.current);\n ELEMENT_TO_NODE.set(ref.current, editor);\n } else {\n NODE_TO_ELEMENT.delete(editor);\n }\n try {\n var {\n selection\n } = editor;\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n var domSelection = root5.getSelection();\n if (state.isComposing || !domSelection || !ReactEditor.isFocused(editor)) {\n return;\n }\n var hasDomSelection = domSelection.type !== \"None\";\n if (!selection && !hasDomSelection) {\n return;\n }\n var editorElement = EDITOR_TO_ELEMENT.get(editor);\n var hasDomSelectionInEditor = false;\n if (editorElement.contains(domSelection.anchorNode) && editorElement.contains(domSelection.focusNode)) {\n hasDomSelectionInEditor = true;\n }\n if (hasDomSelection && hasDomSelectionInEditor && selection) {\n var slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: true,\n suppressThrow: true\n });\n if (slateRange && Range.equals(slateRange, selection)) {\n return;\n }\n }\n if (selection && !ReactEditor.hasRange(editor, selection)) {\n editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false\n });\n return;\n }\n var el = ReactEditor.toDOMNode(editor, editor);\n state.isUpdatingSelection = true;\n var newDomRange = selection && ReactEditor.toDOMRange(editor, selection);\n if (newDomRange) {\n if (Range.isBackward(selection)) {\n domSelection.setBaseAndExtent(newDomRange.endContainer, newDomRange.endOffset, newDomRange.startContainer, newDomRange.startOffset);\n } else {\n domSelection.setBaseAndExtent(newDomRange.startContainer, newDomRange.startOffset, newDomRange.endContainer, newDomRange.endOffset);\n }\n var leafEl = newDomRange.startContainer.parentElement;\n leafEl.getBoundingClientRect = newDomRange.getBoundingClientRect.bind(newDomRange);\n es_default(leafEl, {\n scrollMode: \"if-needed\",\n boundary: el\n });\n delete leafEl.getBoundingClientRect;\n } else {\n domSelection.removeAllRanges();\n }\n setTimeout(() => {\n state.isUpdatingSelection = false;\n });\n } catch (_unused) {\n state.isUpdatingSelection = false;\n }\n });\n (0, import_react.useEffect)(() => {\n if (ref.current && autoFocus) {\n ref.current.focus();\n }\n }, [autoFocus]);\n var onDOMSelectionChange = (0, import_react.useCallback)((0, import_throttle.default)(() => {\n try {\n if (!state.isComposing && !state.isUpdatingSelection && !inputManager.isReconciling.current) {\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n var {\n activeElement\n } = root5;\n var el = ReactEditor.toDOMNode(editor, editor);\n var domSelection = root5.getSelection();\n if (activeElement === el) {\n state.latestElement = activeElement;\n IS_FOCUSED.set(editor, true);\n } else {\n IS_FOCUSED.delete(editor);\n }\n if (!domSelection) {\n return Transforms.deselect(editor);\n }\n var {\n anchorNode,\n focusNode\n } = domSelection;\n var anchorNodeSelectable = hasEditableTarget(editor, anchorNode) || isTargetInsideNonReadonlyVoid(editor, anchorNode);\n var focusNodeSelectable = hasEditableTarget(editor, focusNode) || isTargetInsideNonReadonlyVoid(editor, focusNode);\n if (anchorNodeSelectable && focusNodeSelectable) {\n var range = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false\n });\n Transforms.select(editor, range);\n } else {\n Transforms.deselect(editor);\n }\n }\n } catch (_unused2) {\n }\n }, 100), [readOnly]);\n var scheduleOnDOMSelectionChange = (0, import_react.useMemo)(() => (0, import_debounce.default)(onDOMSelectionChange, 0), [onDOMSelectionChange]);\n var onDOMBeforeInput = (0, import_react.useCallback)((event) => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {\n scheduleOnDOMSelectionChange.flush();\n inputManager.onUserInput();\n }\n }, [readOnly, propsOnDOMBeforeInput]);\n useIsomorphicLayoutEffect(() => {\n var node = ref.current;\n node === null || node === void 0 ? void 0 : node.addEventListener(\"beforeinput\", onDOMBeforeInput);\n return () => node === null || node === void 0 ? void 0 : node.removeEventListener(\"beforeinput\", onDOMBeforeInput);\n }, [contentKey, propsOnDOMBeforeInput]);\n useIsomorphicLayoutEffect(() => {\n var window2 = ReactEditor.getWindow(editor);\n window2.document.addEventListener(\"selectionchange\", scheduleOnDOMSelectionChange);\n return () => {\n window2.document.removeEventListener(\"selectionchange\", scheduleOnDOMSelectionChange);\n };\n }, [scheduleOnDOMSelectionChange]);\n var decorations = decorate([editor, []]);\n if (placeholder && editor.children.length === 1 && Array.from(Node2.texts(editor)).length === 1 && Node2.string(editor) === \"\" && !isComposing) {\n var start3 = Editor.start(editor, []);\n decorations.push({\n [PLACEHOLDER_SYMBOL]: true,\n placeholder,\n anchor: start3,\n focus: start3\n });\n }\n return /* @__PURE__ */ import_react.default.createElement(ReadOnlyContext.Provider, {\n value: readOnly\n }, /* @__PURE__ */ import_react.default.createElement(DecorateContext.Provider, {\n value: decorate\n }, /* @__PURE__ */ import_react.default.createElement(Component2, Object.assign({\n key: contentKey,\n role: readOnly ? void 0 : \"textbox\"\n }, attributes, {\n spellCheck: attributes.spellCheck,\n autoCorrect: attributes.autoCorrect,\n autoCapitalize: attributes.autoCapitalize,\n \"data-slate-editor\": true,\n \"data-slate-node\": \"value\",\n contentEditable: readOnly ? void 0 : true,\n suppressContentEditableWarning: true,\n ref,\n style: _objectSpread2({\n position: \"relative\",\n outline: \"none\",\n whiteSpace: \"pre-wrap\",\n wordWrap: \"break-word\"\n }, style),\n onCopy: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, \"copy\");\n }\n }, [attributes.onCopy]),\n onCut: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, \"cut\");\n var {\n selection\n } = editor;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n } else {\n var node = Node2.parent(editor, selection.anchor.path);\n if (Editor.isVoid(editor, node)) {\n Transforms.delete(editor);\n }\n }\n }\n }\n }, [readOnly, attributes.onCut]),\n onFocus: (0, import_react.useCallback)((event) => {\n if (!readOnly && !state.isUpdatingSelection && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onFocus)) {\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n state.latestElement = root5.activeElement;\n IS_FOCUSED.set(editor, true);\n }\n }, [readOnly, attributes.onFocus]),\n onBlur: (0, import_react.useCallback)((event) => {\n if (readOnly || state.isUpdatingSelection || !hasEditableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {\n return;\n }\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n if (state.latestElement === root5.activeElement) {\n return;\n }\n var {\n relatedTarget\n } = event;\n var el = ReactEditor.toDOMNode(editor, editor);\n if (relatedTarget === el) {\n return;\n }\n if (isDOMElement(relatedTarget) && relatedTarget.hasAttribute(\"data-slate-spacer\")) {\n return;\n }\n if (relatedTarget != null && isDOMNode(relatedTarget) && ReactEditor.hasDOMNode(editor, relatedTarget)) {\n var node = ReactEditor.toSlateNode(editor, relatedTarget);\n if (Element2.isElement(node) && !editor.isVoid(node)) {\n return;\n }\n }\n IS_FOCUSED.delete(editor);\n }, [readOnly, attributes.onBlur]),\n onClick: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onClick) && isDOMNode(event.target)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n if (Editor.hasPath(editor, path)) {\n var lookupNode = Node2.get(editor, path);\n if (lookupNode === node) {\n var _start = Editor.start(editor, path);\n var end3 = Editor.end(editor, path);\n var startVoid = Editor.void(editor, {\n at: _start\n });\n var endVoid = Editor.void(editor, {\n at: end3\n });\n if (startVoid && endVoid && Path.equals(startVoid[1], endVoid[1])) {\n var range = Editor.range(editor, _start);\n Transforms.select(editor, range);\n }\n }\n }\n }\n }, [readOnly, attributes.onClick]),\n onCompositionEnd: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionEnd)) {\n scheduleOnDOMSelectionChange.flush();\n setTimeout(() => {\n state.isComposing && setIsComposing(false);\n state.isComposing = false;\n IS_COMPOSING.set(editor, false);\n IS_ON_COMPOSITION_END.set(editor, true);\n var insertedText = EDITOR_ON_COMPOSITION_TEXT.get(editor) || [];\n if (!insertedText.length) {\n return;\n }\n EDITOR_ON_COMPOSITION_TEXT.set(editor, []);\n var {\n selection\n } = editor;\n insertedText.forEach((insertion) => {\n var text5 = insertion.text.insertText;\n var at = normalizeTextInsertionRange(editor, selection, insertion);\n Transforms.setSelection(editor, at);\n Editor.insertText(editor, text5);\n });\n }, RESOLVE_DELAY);\n }\n }, [attributes.onCompositionEnd]),\n onCompositionUpdate: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate)) {\n !state.isComposing && setIsComposing(true);\n state.isComposing = true;\n IS_COMPOSING.set(editor, true);\n }\n }, [attributes.onCompositionUpdate]),\n onCompositionStart: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionStart)) {\n !state.isComposing && setIsComposing(true);\n state.isComposing = true;\n IS_COMPOSING.set(editor, true);\n }\n }, [attributes.onCompositionStart]),\n onPaste: (0, import_react.useCallback)((event) => {\n event.clipboardData = getClipboardData(event.clipboardData);\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onPaste) && !readOnly) {\n event.preventDefault();\n ReactEditor.insertData(editor, event.clipboardData);\n }\n }, [readOnly, attributes.onPaste])\n }), useChildren({\n decorations,\n node: editor,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection: editor.selection\n }))));\n};\nvar FocusedContext = /* @__PURE__ */ (0, import_react.createContext)(false);\nvar useFocused = () => {\n return (0, import_react.useContext)(FocusedContext);\n};\nvar SlateSelectorContext = /* @__PURE__ */ (0, import_react.createContext)({});\nfunction getSelectorContext(editor) {\n var eventListeners2 = (0, import_react.useRef)([]).current;\n var slateRef = (0, import_react.useRef)({\n editor\n }).current;\n var onChange = (0, import_react.useCallback)((editor2) => {\n slateRef.editor = editor2;\n eventListeners2.forEach((listener) => listener(editor2));\n }, []);\n var selectorContext = (0, import_react.useMemo)(() => {\n return {\n getSlate: () => slateRef.editor,\n addEventListener: (callback) => {\n eventListeners2.push(callback);\n return () => {\n eventListeners2.splice(eventListeners2.indexOf(callback), 1);\n };\n }\n };\n }, [eventListeners2, slateRef]);\n return {\n selectorContext,\n onChange\n };\n}\nvar _excluded3 = [\"editor\", \"children\", \"onChange\", \"value\"];\nvar Slate = (props) => {\n var {\n editor,\n children,\n onChange,\n value\n } = props, rest = _objectWithoutProperties2(props, _excluded3);\n var unmountRef = (0, import_react.useRef)(false);\n var [context, setContext] = import_react.default.useState(() => {\n if (!Node2.isNodeList(value)) {\n throw new Error(\"[Slate] value is invalid! Expected a list of elements\" + \"but got: \".concat(JSON.stringify(value)));\n }\n if (!Editor.isEditor(editor)) {\n throw new Error(\"[Slate] editor is invalid! you passed:\" + \"\".concat(JSON.stringify(editor)));\n }\n editor.children = value;\n Object.assign(editor, rest);\n return [editor];\n });\n var {\n selectorContext,\n onChange: handleSelectorChange\n } = getSelectorContext(editor);\n var onContextChange = (0, import_react.useCallback)(() => {\n if (onChange) {\n onChange(editor.children);\n }\n setContext([editor]);\n handleSelectorChange(editor);\n }, [onChange]);\n EDITOR_TO_ON_CHANGE.set(editor, onContextChange);\n (0, import_react.useEffect)(() => {\n return () => {\n EDITOR_TO_ON_CHANGE.set(editor, () => {\n });\n unmountRef.current = true;\n };\n }, []);\n var [isFocused, setIsFocused] = (0, import_react.useState)(ReactEditor.isFocused(editor));\n (0, import_react.useEffect)(() => {\n setIsFocused(ReactEditor.isFocused(editor));\n });\n useIsomorphicLayoutEffect(() => {\n var fn7 = () => setIsFocused(ReactEditor.isFocused(editor));\n if (IS_REACT_VERSION_17_OR_ABOVE) {\n document.addEventListener(\"focusin\", fn7);\n document.addEventListener(\"focusout\", fn7);\n return () => {\n document.removeEventListener(\"focusin\", fn7);\n document.removeEventListener(\"focusout\", fn7);\n };\n } else {\n document.addEventListener(\"focus\", fn7, true);\n document.addEventListener(\"blur\", fn7, true);\n return () => {\n document.removeEventListener(\"focus\", fn7, true);\n document.removeEventListener(\"blur\", fn7, true);\n };\n }\n }, []);\n return /* @__PURE__ */ import_react.default.createElement(SlateSelectorContext.Provider, {\n value: selectorContext\n }, /* @__PURE__ */ import_react.default.createElement(SlateContext.Provider, {\n value: context\n }, /* @__PURE__ */ import_react.default.createElement(EditorContext.Provider, {\n value: editor\n }, /* @__PURE__ */ import_react.default.createElement(FocusedContext.Provider, {\n value: isFocused\n }, children))));\n};\nvar doRectsIntersect = (rect, compareRect) => {\n var middle = (compareRect.top + compareRect.bottom) / 2;\n return rect.top <= middle && rect.bottom >= middle;\n};\nvar areRangesSameLine = (editor, range1, range2) => {\n var rect1 = ReactEditor.toDOMRange(editor, range1).getBoundingClientRect();\n var rect2 = ReactEditor.toDOMRange(editor, range2).getBoundingClientRect();\n return doRectsIntersect(rect1, rect2) && doRectsIntersect(rect2, rect1);\n};\nvar findCurrentLineRange = (editor, parentRange) => {\n var parentRangeBoundary = Editor.range(editor, Range.end(parentRange));\n var positions = Array.from(Editor.positions(editor, {\n at: parentRange\n }));\n var left3 = 0;\n var right3 = positions.length;\n var middle = Math.floor(right3 / 2);\n if (areRangesSameLine(editor, Editor.range(editor, positions[left3]), parentRangeBoundary)) {\n return Editor.range(editor, positions[left3], parentRangeBoundary);\n }\n if (positions.length < 2) {\n return Editor.range(editor, positions[positions.length - 1], parentRangeBoundary);\n }\n while (middle !== positions.length && middle !== left3) {\n if (areRangesSameLine(editor, Editor.range(editor, positions[middle]), parentRangeBoundary)) {\n right3 = middle;\n } else {\n left3 = middle;\n }\n middle = Math.floor((left3 + right3) / 2);\n }\n return Editor.range(editor, positions[right3], parentRangeBoundary);\n};\nvar withReact = (editor) => {\n var e2 = editor;\n var {\n apply: apply2,\n onChange,\n deleteBackward\n } = e2;\n EDITOR_TO_KEY_TO_ELEMENT.set(e2, /* @__PURE__ */ new WeakMap());\n e2.deleteBackward = (unit) => {\n if (unit !== \"line\") {\n return deleteBackward(unit);\n }\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n var parentBlockEntry = Editor.above(editor, {\n match: (n5) => Editor.isBlock(editor, n5),\n at: editor.selection\n });\n if (parentBlockEntry) {\n var [, parentBlockPath] = parentBlockEntry;\n var parentElementRange = Editor.range(editor, parentBlockPath, editor.selection.anchor);\n var currentLineRange = findCurrentLineRange(e2, parentElementRange);\n if (!Range.isCollapsed(currentLineRange)) {\n Transforms.delete(editor, {\n at: currentLineRange\n });\n }\n }\n }\n };\n e2.apply = (op) => {\n var matches = [];\n switch (op.type) {\n case \"insert_text\":\n case \"remove_text\":\n case \"set_node\":\n case \"split_node\": {\n matches.push(...getMatches(e2, op.path));\n break;\n }\n case \"set_selection\": {\n var _EDITOR_TO_USER_SELEC;\n (_EDITOR_TO_USER_SELEC = EDITOR_TO_USER_SELECTION.get(editor)) === null || _EDITOR_TO_USER_SELEC === void 0 ? void 0 : _EDITOR_TO_USER_SELEC.unref();\n EDITOR_TO_USER_SELECTION.delete(editor);\n break;\n }\n case \"insert_node\":\n case \"remove_node\": {\n matches.push(...getMatches(e2, Path.parent(op.path)));\n break;\n }\n case \"merge_node\": {\n var prevPath = Path.previous(op.path);\n matches.push(...getMatches(e2, prevPath));\n break;\n }\n case \"move_node\": {\n var commonPath = Path.common(Path.parent(op.path), Path.parent(op.newPath));\n matches.push(...getMatches(e2, commonPath));\n break;\n }\n }\n apply2(op);\n for (var [path, key] of matches) {\n var [node] = Editor.node(e2, path);\n NODE_TO_KEY.set(node, key);\n }\n };\n e2.setFragmentData = (data) => {\n var {\n selection\n } = e2;\n if (!selection) {\n return;\n }\n var [start3, end3] = Range.edges(selection);\n var startVoid = Editor.void(e2, {\n at: start3.path\n });\n var endVoid = Editor.void(e2, {\n at: end3.path\n });\n if (Range.isCollapsed(selection) && !startVoid) {\n return;\n }\n var domRange = ReactEditor.toDOMRange(e2, selection);\n var contents = domRange.cloneContents();\n var attach = contents.childNodes[0];\n contents.childNodes.forEach((node) => {\n if (node.textContent && node.textContent.trim() !== \"\") {\n attach = node;\n }\n });\n if (endVoid) {\n var [voidNode] = endVoid;\n var r5 = domRange.cloneRange();\n var domNode = ReactEditor.toDOMNode(e2, voidNode);\n r5.setEndAfter(domNode);\n contents = r5.cloneContents();\n }\n if (startVoid) {\n attach = contents.querySelector(\"[data-slate-spacer]\");\n }\n Array.from(contents.querySelectorAll(\"[data-slate-zero-width]\")).forEach((zw) => {\n var isNewline = zw.getAttribute(\"data-slate-zero-width\") === \"n\";\n zw.textContent = isNewline ? \"\\n\" : \"\";\n });\n if (isDOMText(attach)) {\n var span = attach.ownerDocument.createElement(\"span\");\n span.style.whiteSpace = \"pre\";\n span.appendChild(attach);\n contents.appendChild(span);\n attach = span;\n }\n var fragment = e2.getFragment();\n var string = JSON.stringify(fragment);\n var encoded = window.btoa(encodeURIComponent(string));\n attach.setAttribute(\"data-slate-fragment\", encoded);\n data.setData(\"application/x-slate-fragment\", encoded);\n var div4 = contents.ownerDocument.createElement(\"div\");\n div4.appendChild(contents);\n div4.setAttribute(\"hidden\", \"true\");\n contents.ownerDocument.body.appendChild(div4);\n data.setData(\"text/html\", div4.innerHTML);\n data.setData(\"text/plain\", getPlainText(div4));\n contents.ownerDocument.body.removeChild(div4);\n return data;\n };\n e2.insertData = (data) => {\n if (!e2.insertFragmentData(data)) {\n e2.insertTextData(data);\n }\n };\n e2.insertFragmentData = (data) => {\n var fragment = data.getData(\"application/x-slate-fragment\") || getSlateFragmentAttribute(data);\n if (fragment) {\n var decoded = decodeURIComponent(window.atob(fragment));\n var parsed = JSON.parse(decoded);\n e2.insertFragment(parsed);\n return true;\n }\n return false;\n };\n e2.insertTextData = (data) => {\n var text5 = data.getData(\"text/plain\");\n if (text5) {\n var lines = text5.split(/\\r\\n|\\r|\\n/);\n var split = false;\n for (var line of lines) {\n if (split) {\n Transforms.splitNodes(e2, {\n always: true\n });\n }\n e2.insertText(line);\n split = true;\n }\n return true;\n }\n return false;\n };\n e2.onChange = () => {\n import_react_dom.default.unstable_batchedUpdates(() => {\n var onContextChange = EDITOR_TO_ON_CHANGE.get(e2);\n if (onContextChange) {\n onContextChange();\n }\n onChange();\n });\n };\n return e2;\n};\nvar getMatches = (e2, path) => {\n var matches = [];\n for (var [n5, p4] of Editor.levels(e2, {\n at: path\n })) {\n var key = ReactEditor.findKey(e2, n5);\n matches.push([p4, key]);\n }\n return matches;\n};\nvar Editable = IS_ANDROID ? AndroidEditable : Editable$1;\n\n// node_modules/use-deep-compare/dist-web/index.js\nvar import_react2 = __toESM(require(\"react\"));\n\n// node_modules/use-deep-compare/node_modules/dequal/dist/dequal.mjs\nfunction dequal(foo, bar) {\n var ctor, len;\n if (foo === bar)\n return true;\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date)\n return foo.getTime() === bar.getTime();\n if (ctor === RegExp)\n return foo.toString() === bar.toString();\n if (ctor === Array && (len = foo.length) === bar.length) {\n while (len-- && dequal(foo[len], bar[len]))\n ;\n return len === -1;\n }\n if (ctor === Object) {\n if (Object.keys(foo).length !== Object.keys(bar).length)\n return false;\n for (len in foo)\n if (!(len in bar) || !dequal(foo[len], bar[len]))\n return false;\n return true;\n }\n }\n return foo !== foo && bar !== bar;\n}\n\n// node_modules/use-deep-compare/dist-web/index.js\nfunction checkDeps(deps, name) {\n const reactHookName = `React.${name.replace(/DeepCompare/, \"\")}`;\n if (!deps || deps.length === 0) {\n throw new Error(`${name} should not be used with no dependencies. Use ${reactHookName} instead.`);\n }\n}\nfunction useDeepCompareMemoize(value) {\n const ref = import_react2.default.useRef([]);\n if (!dequal(value, ref.current)) {\n ref.current = value;\n }\n return ref.current;\n}\nfunction useDeepCompareEffect(effect7, dependencies) {\n if (true) {\n checkDeps(dependencies, \"useDeepCompareEffect\");\n }\n import_react2.default.useEffect(effect7, useDeepCompareMemoize(dependencies));\n}\nfunction useDeepCompareMemo(factory, dependencies) {\n if (true) {\n checkDeps(dependencies, \"useDeepCompareMemo\");\n }\n return import_react2.default.useMemo(factory, useDeepCompareMemoize(dependencies));\n}\n\n// node_modules/@udecode/zustood/node_modules/immer/dist/immer.esm.js\nfunction n4(n5) {\n for (var t4 = arguments.length, r5 = Array(t4 > 1 ? t4 - 1 : 0), e2 = 1; e2 < t4; e2++)\n r5[e2 - 1] = arguments[e2];\n if (true) {\n var i3 = Y2[n5], o3 = i3 ? typeof i3 == \"function\" ? i3.apply(null, r5) : i3 : \"unknown error nr: \" + n5;\n throw Error(\"[Immer] \" + o3);\n }\n throw Error(\"[Immer] minified error nr: \" + n5 + (r5.length ? \" \" + r5.map(function(n6) {\n return \"'\" + n6 + \"'\";\n }).join(\",\") : \"\") + \". Find the full error at: https://bit.ly/3cXEKWf\");\n}\nfunction t3(n5) {\n return !!n5 && !!n5[Q2];\n}\nfunction r3(n5) {\n return !!n5 && (function(n6) {\n if (!n6 || typeof n6 != \"object\")\n return false;\n var t4 = Object.getPrototypeOf(n6);\n if (t4 === null)\n return true;\n var r5 = Object.hasOwnProperty.call(t4, \"constructor\") && t4.constructor;\n return r5 === Object || typeof r5 == \"function\" && Function.toString.call(r5) === Z2;\n }(n5) || Array.isArray(n5) || !!n5[L2] || !!n5.constructor[L2] || s2(n5) || v2(n5));\n}\nfunction i2(n5, t4, r5) {\n r5 === void 0 && (r5 = false), o2(n5) === 0 ? (r5 ? Object.keys : nn2)(n5).forEach(function(e2) {\n r5 && typeof e2 == \"symbol\" || t4(e2, n5[e2], n5);\n }) : n5.forEach(function(r6, e2) {\n return t4(e2, r6, n5);\n });\n}\nfunction o2(n5) {\n var t4 = n5[Q2];\n return t4 ? t4.i > 3 ? t4.i - 4 : t4.i : Array.isArray(n5) ? 1 : s2(n5) ? 2 : v2(n5) ? 3 : 0;\n}\nfunction u2(n5, t4) {\n return o2(n5) === 2 ? n5.has(t4) : Object.prototype.hasOwnProperty.call(n5, t4);\n}\nfunction a2(n5, t4) {\n return o2(n5) === 2 ? n5.get(t4) : n5[t4];\n}\nfunction f2(n5, t4, r5) {\n var e2 = o2(n5);\n e2 === 2 ? n5.set(t4, r5) : e2 === 3 ? (n5.delete(t4), n5.add(r5)) : n5[t4] = r5;\n}\nfunction c2(n5, t4) {\n return n5 === t4 ? n5 !== 0 || 1 / n5 == 1 / t4 : n5 != n5 && t4 != t4;\n}\nfunction s2(n5) {\n return X2 && n5 instanceof Map;\n}\nfunction v2(n5) {\n return q2 && n5 instanceof Set;\n}\nfunction p2(n5) {\n return n5.o || n5.t;\n}\nfunction l2(n5) {\n if (Array.isArray(n5))\n return Array.prototype.slice.call(n5);\n var t4 = tn2(n5);\n delete t4[Q2];\n for (var r5 = nn2(t4), e2 = 0; e2 < r5.length; e2++) {\n var i3 = r5[e2], o3 = t4[i3];\n o3.writable === false && (o3.writable = true, o3.configurable = true), (o3.get || o3.set) && (t4[i3] = { configurable: true, writable: true, enumerable: o3.enumerable, value: n5[i3] });\n }\n return Object.create(Object.getPrototypeOf(n5), t4);\n}\nfunction d2(n5, e2) {\n return e2 === void 0 && (e2 = false), y2(n5) || t3(n5) || !r3(n5) ? n5 : (o2(n5) > 1 && (n5.set = n5.add = n5.clear = n5.delete = h2), Object.freeze(n5), e2 && i2(n5, function(n6, t4) {\n return d2(t4, true);\n }, true), n5);\n}\nfunction h2() {\n n4(2);\n}\nfunction y2(n5) {\n return n5 == null || typeof n5 != \"object\" || Object.isFrozen(n5);\n}\nfunction b2(t4) {\n var r5 = rn2[t4];\n return r5 || n4(18, t4), r5;\n}\nfunction m(n5, t4) {\n rn2[n5] || (rn2[n5] = t4);\n}\nfunction _2() {\n return U2 || n4(0), U2;\n}\nfunction j2(n5, t4) {\n t4 && (b2(\"Patches\"), n5.u = [], n5.s = [], n5.v = t4);\n}\nfunction O2(n5) {\n g2(n5), n5.p.forEach(S2), n5.p = null;\n}\nfunction g2(n5) {\n n5 === U2 && (U2 = n5.l);\n}\nfunction w2(n5) {\n return U2 = { p: [], l: U2, h: n5, m: true, _: 0 };\n}\nfunction S2(n5) {\n var t4 = n5[Q2];\n t4.i === 0 || t4.i === 1 ? t4.j() : t4.O = true;\n}\nfunction P2(t4, e2) {\n e2._ = e2.p.length;\n var i3 = e2.p[0], o3 = t4 !== void 0 && t4 !== i3;\n return e2.h.g || b2(\"ES5\").S(e2, t4, o3), o3 ? (i3[Q2].P && (O2(e2), n4(4)), r3(t4) && (t4 = M2(e2, t4), e2.l || x2(e2, t4)), e2.u && b2(\"Patches\").M(i3[Q2], t4, e2.u, e2.s)) : t4 = M2(e2, i3, []), O2(e2), e2.u && e2.v(e2.u, e2.s), t4 !== H2 ? t4 : void 0;\n}\nfunction M2(n5, t4, r5) {\n if (y2(t4))\n return t4;\n var e2 = t4[Q2];\n if (!e2)\n return i2(t4, function(i3, o4) {\n return A2(n5, e2, t4, i3, o4, r5);\n }, true), t4;\n if (e2.A !== n5)\n return t4;\n if (!e2.P)\n return x2(n5, e2.t, true), e2.t;\n if (!e2.I) {\n e2.I = true, e2.A._--;\n var o3 = e2.i === 4 || e2.i === 5 ? e2.o = l2(e2.k) : e2.o;\n i2(e2.i === 3 ? new Set(o3) : o3, function(t5, i3) {\n return A2(n5, e2, o3, t5, i3, r5);\n }), x2(n5, o3, false), r5 && n5.u && b2(\"Patches\").R(e2, r5, n5.u, n5.s);\n }\n return e2.o;\n}\nfunction A2(e2, i3, o3, a5, c3, s3) {\n if (c3 === o3 && n4(5), t3(c3)) {\n var v4 = M2(e2, c3, s3 && i3 && i3.i !== 3 && !u2(i3.D, a5) ? s3.concat(a5) : void 0);\n if (f2(o3, a5, v4), !t3(v4))\n return;\n e2.m = false;\n }\n if (r3(c3) && !y2(c3)) {\n if (!e2.h.F && e2._ < 1)\n return;\n M2(e2, c3), i3 && i3.A.l || x2(e2, c3);\n }\n}\nfunction x2(n5, t4, r5) {\n r5 === void 0 && (r5 = false), n5.h.F && n5.m && d2(t4, r5);\n}\nfunction z2(n5, t4) {\n var r5 = n5[Q2];\n return (r5 ? p2(r5) : n5)[t4];\n}\nfunction I2(n5, t4) {\n if (t4 in n5)\n for (var r5 = Object.getPrototypeOf(n5); r5; ) {\n var e2 = Object.getOwnPropertyDescriptor(r5, t4);\n if (e2)\n return e2;\n r5 = Object.getPrototypeOf(r5);\n }\n}\nfunction k2(n5) {\n n5.P || (n5.P = true, n5.l && k2(n5.l));\n}\nfunction E2(n5) {\n n5.o || (n5.o = l2(n5.t));\n}\nfunction R2(n5, t4, r5) {\n var e2 = s2(t4) ? b2(\"MapSet\").N(t4, r5) : v2(t4) ? b2(\"MapSet\").T(t4, r5) : n5.g ? function(n6, t5) {\n var r6 = Array.isArray(n6), e3 = { i: r6 ? 1 : 0, A: t5 ? t5.A : _2(), P: false, I: false, D: {}, l: t5, t: n6, k: null, o: null, j: null, C: false }, i3 = e3, o3 = en2;\n r6 && (i3 = [e3], o3 = on2);\n var u3 = Proxy.revocable(i3, o3), a5 = u3.revoke, f3 = u3.proxy;\n return e3.k = f3, e3.j = a5, f3;\n }(t4, r5) : b2(\"ES5\").J(t4, r5);\n return (r5 ? r5.A : _2()).p.push(e2), e2;\n}\nfunction D2(e2) {\n return t3(e2) || n4(22, e2), function n5(t4) {\n if (!r3(t4))\n return t4;\n var e3, u3 = t4[Q2], c3 = o2(t4);\n if (u3) {\n if (!u3.P && (u3.i < 4 || !b2(\"ES5\").K(u3)))\n return u3.t;\n u3.I = true, e3 = F2(t4, c3), u3.I = false;\n } else\n e3 = F2(t4, c3);\n return i2(e3, function(t5, r5) {\n u3 && a2(u3.t, t5) === r5 || f2(e3, t5, n5(r5));\n }), c3 === 3 ? new Set(e3) : e3;\n }(e2);\n}\nfunction F2(n5, t4) {\n switch (t4) {\n case 2:\n return new Map(n5);\n case 3:\n return Array.from(n5);\n }\n return l2(n5);\n}\nfunction C() {\n function t4(n5, t5) {\n function r5() {\n this.constructor = n5;\n }\n a5(n5, t5), n5.prototype = (r5.prototype = t5.prototype, new r5());\n }\n function e2(n5) {\n n5.o || (n5.D = /* @__PURE__ */ new Map(), n5.o = new Map(n5.t));\n }\n function o3(n5) {\n n5.o || (n5.o = /* @__PURE__ */ new Set(), n5.t.forEach(function(t5) {\n if (r3(t5)) {\n var e3 = R2(n5.A.h, t5, n5);\n n5.p.set(t5, e3), n5.o.add(e3);\n } else\n n5.o.add(t5);\n }));\n }\n function u3(t5) {\n t5.O && n4(3, JSON.stringify(p2(t5)));\n }\n var a5 = function(n5, t5) {\n return (a5 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n6, t6) {\n n6.__proto__ = t6;\n } || function(n6, t6) {\n for (var r5 in t6)\n t6.hasOwnProperty(r5) && (n6[r5] = t6[r5]);\n })(n5, t5);\n }, f3 = function() {\n function n5(n6, t5) {\n return this[Q2] = { i: 2, l: t5, A: t5 ? t5.A : _2(), P: false, I: false, o: void 0, D: void 0, t: n6, k: this, C: false, O: false }, this;\n }\n t4(n5, Map);\n var o4 = n5.prototype;\n return Object.defineProperty(o4, \"size\", { get: function() {\n return p2(this[Q2]).size;\n } }), o4.has = function(n6) {\n return p2(this[Q2]).has(n6);\n }, o4.set = function(n6, t5) {\n var r5 = this[Q2];\n return u3(r5), p2(r5).has(n6) && p2(r5).get(n6) === t5 || (e2(r5), k2(r5), r5.D.set(n6, true), r5.o.set(n6, t5), r5.D.set(n6, true)), this;\n }, o4.delete = function(n6) {\n if (!this.has(n6))\n return false;\n var t5 = this[Q2];\n return u3(t5), e2(t5), k2(t5), t5.D.set(n6, false), t5.o.delete(n6), true;\n }, o4.clear = function() {\n var n6 = this[Q2];\n u3(n6), p2(n6).size && (e2(n6), k2(n6), n6.D = /* @__PURE__ */ new Map(), i2(n6.t, function(t5) {\n n6.D.set(t5, false);\n }), n6.o.clear());\n }, o4.forEach = function(n6, t5) {\n var r5 = this;\n p2(this[Q2]).forEach(function(e3, i3) {\n n6.call(t5, r5.get(i3), i3, r5);\n });\n }, o4.get = function(n6) {\n var t5 = this[Q2];\n u3(t5);\n var i3 = p2(t5).get(n6);\n if (t5.I || !r3(i3))\n return i3;\n if (i3 !== t5.t.get(n6))\n return i3;\n var o5 = R2(t5.A.h, i3, t5);\n return e2(t5), t5.o.set(n6, o5), o5;\n }, o4.keys = function() {\n return p2(this[Q2]).keys();\n }, o4.values = function() {\n var n6, t5 = this, r5 = this.keys();\n return (n6 = {})[V] = function() {\n return t5.values();\n }, n6.next = function() {\n var n7 = r5.next();\n return n7.done ? n7 : { done: false, value: t5.get(n7.value) };\n }, n6;\n }, o4.entries = function() {\n var n6, t5 = this, r5 = this.keys();\n return (n6 = {})[V] = function() {\n return t5.entries();\n }, n6.next = function() {\n var n7 = r5.next();\n if (n7.done)\n return n7;\n var e3 = t5.get(n7.value);\n return { done: false, value: [n7.value, e3] };\n }, n6;\n }, o4[V] = function() {\n return this.entries();\n }, n5;\n }(), c3 = function() {\n function n5(n6, t5) {\n return this[Q2] = { i: 3, l: t5, A: t5 ? t5.A : _2(), P: false, I: false, o: void 0, t: n6, k: this, p: /* @__PURE__ */ new Map(), O: false, C: false }, this;\n }\n t4(n5, Set);\n var r5 = n5.prototype;\n return Object.defineProperty(r5, \"size\", { get: function() {\n return p2(this[Q2]).size;\n } }), r5.has = function(n6) {\n var t5 = this[Q2];\n return u3(t5), t5.o ? !!t5.o.has(n6) || !(!t5.p.has(n6) || !t5.o.has(t5.p.get(n6))) : t5.t.has(n6);\n }, r5.add = function(n6) {\n var t5 = this[Q2];\n return u3(t5), this.has(n6) || (o3(t5), k2(t5), t5.o.add(n6)), this;\n }, r5.delete = function(n6) {\n if (!this.has(n6))\n return false;\n var t5 = this[Q2];\n return u3(t5), o3(t5), k2(t5), t5.o.delete(n6) || !!t5.p.has(n6) && t5.o.delete(t5.p.get(n6));\n }, r5.clear = function() {\n var n6 = this[Q2];\n u3(n6), p2(n6).size && (o3(n6), k2(n6), n6.o.clear());\n }, r5.values = function() {\n var n6 = this[Q2];\n return u3(n6), o3(n6), n6.o.values();\n }, r5.entries = function() {\n var n6 = this[Q2];\n return u3(n6), o3(n6), n6.o.entries();\n }, r5.keys = function() {\n return this.values();\n }, r5[V] = function() {\n return this.values();\n }, r5.forEach = function(n6, t5) {\n for (var r6 = this.values(), e3 = r6.next(); !e3.done; )\n n6.call(t5, e3.value, e3.value, this), e3 = r6.next();\n }, n5;\n }();\n m(\"MapSet\", { N: function(n5, t5) {\n return new f3(n5, t5);\n }, T: function(n5, t5) {\n return new c3(n5, t5);\n } });\n}\nvar G2;\nvar U2;\nvar W2 = typeof Symbol != \"undefined\" && typeof Symbol(\"x\") == \"symbol\";\nvar X2 = typeof Map != \"undefined\";\nvar q2 = typeof Set != \"undefined\";\nvar B2 = typeof Proxy != \"undefined\" && Proxy.revocable !== void 0 && typeof Reflect != \"undefined\";\nvar H2 = W2 ? Symbol.for(\"immer-nothing\") : ((G2 = {})[\"immer-nothing\"] = true, G2);\nvar L2 = W2 ? Symbol.for(\"immer-draftable\") : \"__$immer_draftable\";\nvar Q2 = W2 ? Symbol.for(\"immer-state\") : \"__$immer_state\";\nvar V = typeof Symbol != \"undefined\" && Symbol.iterator || \"@@iterator\";\nvar Y2 = { 0: \"Illegal state\", 1: \"Immer drafts cannot have computed properties\", 2: \"This object has been frozen and should not be mutated\", 3: function(n5) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + n5;\n}, 4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\", 5: \"Immer forbids circular references\", 6: \"The first or second argument to `produce` must be a function\", 7: \"The third argument to `produce` must be a function or undefined\", 8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\", 9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\", 10: \"The given draft is already finalized\", 11: \"Object.defineProperty() cannot be used on an Immer draft\", 12: \"Object.setPrototypeOf() cannot be used on an Immer draft\", 13: \"Immer only supports deleting array indices\", 14: \"Immer only supports setting array indices and the 'length' property\", 15: function(n5) {\n return \"Cannot apply patch, path doesn't resolve: \" + n5;\n}, 16: 'Sets cannot have \"replace\" patches.', 17: function(n5) {\n return \"Unsupported patch operation: \" + n5;\n}, 18: function(n5) {\n return \"The plugin for '\" + n5 + \"' has not been loaded into Immer. To enable the plugin, import and call `enable\" + n5 + \"()` when initializing your application.\";\n}, 20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\", 21: function(n5) {\n return \"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\" + n5 + \"'\";\n}, 22: function(n5) {\n return \"'current' expects a draft, got: \" + n5;\n}, 23: function(n5) {\n return \"'original' expects a draft, got: \" + n5;\n}, 24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\" };\nvar Z2 = \"\" + Object.prototype.constructor;\nvar nn2 = typeof Reflect != \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : Object.getOwnPropertySymbols !== void 0 ? function(n5) {\n return Object.getOwnPropertyNames(n5).concat(Object.getOwnPropertySymbols(n5));\n} : Object.getOwnPropertyNames;\nvar tn2 = Object.getOwnPropertyDescriptors || function(n5) {\n var t4 = {};\n return nn2(n5).forEach(function(r5) {\n t4[r5] = Object.getOwnPropertyDescriptor(n5, r5);\n }), t4;\n};\nvar rn2 = {};\nvar en2 = { get: function(n5, t4) {\n if (t4 === Q2)\n return n5;\n var e2 = p2(n5);\n if (!u2(e2, t4))\n return function(n6, t5, r5) {\n var e3, i4 = I2(t5, r5);\n return i4 ? \"value\" in i4 ? i4.value : (e3 = i4.get) === null || e3 === void 0 ? void 0 : e3.call(n6.k) : void 0;\n }(n5, e2, t4);\n var i3 = e2[t4];\n return n5.I || !r3(i3) ? i3 : i3 === z2(n5.t, t4) ? (E2(n5), n5.o[t4] = R2(n5.A.h, i3, n5)) : i3;\n}, has: function(n5, t4) {\n return t4 in p2(n5);\n}, ownKeys: function(n5) {\n return Reflect.ownKeys(p2(n5));\n}, set: function(n5, t4, r5) {\n var e2 = I2(p2(n5), t4);\n if (e2 == null ? void 0 : e2.set)\n return e2.set.call(n5.k, r5), true;\n if (!n5.P) {\n var i3 = z2(p2(n5), t4), o3 = i3 == null ? void 0 : i3[Q2];\n if (o3 && o3.t === r5)\n return n5.o[t4] = r5, n5.D[t4] = false, true;\n if (c2(r5, i3) && (r5 !== void 0 || u2(n5.t, t4)))\n return true;\n E2(n5), k2(n5);\n }\n return n5.o[t4] === r5 && typeof r5 != \"number\" && (r5 !== void 0 || t4 in n5.o) || (n5.o[t4] = r5, n5.D[t4] = true, true);\n}, deleteProperty: function(n5, t4) {\n return z2(n5.t, t4) !== void 0 || t4 in n5.t ? (n5.D[t4] = false, E2(n5), k2(n5)) : delete n5.D[t4], n5.o && delete n5.o[t4], true;\n}, getOwnPropertyDescriptor: function(n5, t4) {\n var r5 = p2(n5), e2 = Reflect.getOwnPropertyDescriptor(r5, t4);\n return e2 ? { writable: true, configurable: n5.i !== 1 || t4 !== \"length\", enumerable: e2.enumerable, value: r5[t4] } : e2;\n}, defineProperty: function() {\n n4(11);\n}, getPrototypeOf: function(n5) {\n return Object.getPrototypeOf(n5.t);\n}, setPrototypeOf: function() {\n n4(12);\n} };\nvar on2 = {};\ni2(en2, function(n5, t4) {\n on2[n5] = function() {\n return arguments[0] = arguments[0][0], t4.apply(this, arguments);\n };\n}), on2.deleteProperty = function(t4, r5) {\n return isNaN(parseInt(r5)) && n4(13), en2.deleteProperty.call(this, t4[0], r5);\n}, on2.set = function(t4, r5, e2) {\n return r5 !== \"length\" && isNaN(parseInt(r5)) && n4(14), en2.set.call(this, t4[0], r5, e2, t4[0]);\n};\nvar un2 = function() {\n function e2(t4) {\n var e3 = this;\n this.g = B2, this.F = true, this.produce = function(t5, i4, o3) {\n if (typeof t5 == \"function\" && typeof i4 != \"function\") {\n var u3 = i4;\n i4 = t5;\n var a5 = e3;\n return function(n5) {\n var t6 = this;\n n5 === void 0 && (n5 = u3);\n for (var r5 = arguments.length, e4 = Array(r5 > 1 ? r5 - 1 : 0), o4 = 1; o4 < r5; o4++)\n e4[o4 - 1] = arguments[o4];\n return a5.produce(n5, function(n6) {\n var r6;\n return (r6 = i4).call.apply(r6, [t6, n6].concat(e4));\n });\n };\n }\n var f3;\n if (typeof i4 != \"function\" && n4(6), o3 !== void 0 && typeof o3 != \"function\" && n4(7), r3(t5)) {\n var c3 = w2(e3), s3 = R2(e3, t5, void 0), v4 = true;\n try {\n f3 = i4(s3), v4 = false;\n } finally {\n v4 ? O2(c3) : g2(c3);\n }\n return typeof Promise != \"undefined\" && f3 instanceof Promise ? f3.then(function(n5) {\n return j2(c3, o3), P2(n5, c3);\n }, function(n5) {\n throw O2(c3), n5;\n }) : (j2(c3, o3), P2(f3, c3));\n }\n if (!t5 || typeof t5 != \"object\") {\n if ((f3 = i4(t5)) === H2)\n return;\n return f3 === void 0 && (f3 = t5), e3.F && d2(f3, true), f3;\n }\n n4(21, t5);\n }, this.produceWithPatches = function(n5, t5) {\n return typeof n5 == \"function\" ? function(t6) {\n for (var r6 = arguments.length, i5 = Array(r6 > 1 ? r6 - 1 : 0), o3 = 1; o3 < r6; o3++)\n i5[o3 - 1] = arguments[o3];\n return e3.produceWithPatches(t6, function(t7) {\n return n5.apply(void 0, [t7].concat(i5));\n });\n } : [e3.produce(n5, t5, function(n6, t6) {\n r5 = n6, i4 = t6;\n }), r5, i4];\n var r5, i4;\n }, typeof (t4 == null ? void 0 : t4.useProxies) == \"boolean\" && this.setUseProxies(t4.useProxies), typeof (t4 == null ? void 0 : t4.autoFreeze) == \"boolean\" && this.setAutoFreeze(t4.autoFreeze);\n }\n var i3 = e2.prototype;\n return i3.createDraft = function(e3) {\n r3(e3) || n4(8), t3(e3) && (e3 = D2(e3));\n var i4 = w2(this), o3 = R2(this, e3, void 0);\n return o3[Q2].C = true, g2(i4), o3;\n }, i3.finishDraft = function(t4, r5) {\n var e3 = t4 && t4[Q2];\n e3 && e3.C || n4(9), e3.I && n4(10);\n var i4 = e3.A;\n return j2(i4, r5), P2(void 0, i4);\n }, i3.setAutoFreeze = function(n5) {\n this.F = n5;\n }, i3.setUseProxies = function(t4) {\n t4 && !B2 && n4(20), this.g = t4;\n }, i3.applyPatches = function(n5, r5) {\n var e3;\n for (e3 = r5.length - 1; e3 >= 0; e3--) {\n var i4 = r5[e3];\n if (i4.path.length === 0 && i4.op === \"replace\") {\n n5 = i4.value;\n break;\n }\n }\n var o3 = b2(\"Patches\").$;\n return t3(n5) ? o3(n5, r5) : this.produce(n5, function(n6) {\n return o3(n6, r5.slice(e3 + 1));\n });\n }, e2;\n}();\nvar an2 = new un2();\nvar fn2 = an2.produce;\nvar cn2 = an2.produceWithPatches.bind(an2);\nvar sn2 = an2.setAutoFreeze.bind(an2);\nvar vn2 = an2.setUseProxies.bind(an2);\nvar pn2 = an2.applyPatches.bind(an2);\nvar ln2 = an2.createDraft.bind(an2);\nvar dn2 = an2.finishDraft.bind(an2);\nvar immer_esm_default = fn2;\n\n// node_modules/zustand/esm/index.mjs\nvar import_react3 = require(\"react\");\nfunction createStore(createState) {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState2 = () => state;\n const subscribeWithSelector = (listener, selector = getState2, equalityFn = Object.is) => {\n console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n let currentSlice = selector(state);\n function listenerToAdd() {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n listener(currentSlice = nextSlice, previousSlice);\n }\n }\n listeners.add(listenerToAdd);\n return () => listeners.delete(listenerToAdd);\n };\n const subscribe = (listener, selector, equalityFn) => {\n if (selector || equalityFn) {\n return subscribeWithSelector(listener, selector, equalityFn);\n }\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState: getState2, subscribe, destroy };\n state = createState(setState, getState2, api);\n return api;\n}\nvar isSSR = typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nvar useIsomorphicLayoutEffect2 = isSSR ? import_react3.useEffect : import_react3.useLayoutEffect;\nfunction create2(createState) {\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useStore = (selector = api.getState, equalityFn = Object.is) => {\n const [, forceUpdate] = (0, import_react3.useReducer)((c3) => c3 + 1, 0);\n const state = api.getState();\n const stateRef = (0, import_react3.useRef)(state);\n const selectorRef = (0, import_react3.useRef)(selector);\n const equalityFnRef = (0, import_react3.useRef)(equalityFn);\n const erroredRef = (0, import_react3.useRef)(false);\n const currentSliceRef = (0, import_react3.useRef)();\n if (currentSliceRef.current === void 0) {\n currentSliceRef.current = selector(state);\n }\n let newStateSlice;\n let hasNewStateSlice = false;\n if (stateRef.current !== state || selectorRef.current !== selector || equalityFnRef.current !== equalityFn || erroredRef.current) {\n newStateSlice = selector(state);\n hasNewStateSlice = !equalityFn(currentSliceRef.current, newStateSlice);\n }\n useIsomorphicLayoutEffect2(() => {\n if (hasNewStateSlice) {\n currentSliceRef.current = newStateSlice;\n }\n stateRef.current = state;\n selectorRef.current = selector;\n equalityFnRef.current = equalityFn;\n erroredRef.current = false;\n });\n const stateBeforeSubscriptionRef = (0, import_react3.useRef)(state);\n useIsomorphicLayoutEffect2(() => {\n const listener = () => {\n try {\n const nextState = api.getState();\n const nextStateSlice = selectorRef.current(nextState);\n if (!equalityFnRef.current(currentSliceRef.current, nextStateSlice)) {\n stateRef.current = nextState;\n currentSliceRef.current = nextStateSlice;\n forceUpdate();\n }\n } catch (error) {\n erroredRef.current = true;\n forceUpdate();\n }\n };\n const unsubscribe = api.subscribe(listener);\n if (api.getState() !== stateBeforeSubscriptionRef.current) {\n listener();\n }\n return unsubscribe;\n }, []);\n const sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;\n (0, import_react3.useDebugValue)(sliceToReturn);\n return sliceToReturn;\n };\n Object.assign(useStore, api);\n useStore[Symbol.iterator] = function() {\n console.warn(\"[useStore, api] = create() is deprecated and will be removed in v4\");\n const items2 = [useStore, api];\n return {\n next() {\n const done = items2.length <= 0;\n return { value: items2.shift(), done };\n }\n };\n };\n return useStore;\n}\n\n// node_modules/zustand/esm/middleware.mjs\nvar import_meta = {};\nfunction devtools(fn7, options) {\n return (set, get3, api) => {\n let didWarnAboutNameDeprecation = false;\n if (typeof options === \"string\" && !didWarnAboutNameDeprecation) {\n console.warn(\"[zustand devtools middleware]: passing `name` as directly will be not allowed in next majorpass the `name` in an object `{ name: ... }` instead\");\n didWarnAboutNameDeprecation = true;\n }\n const devtoolsOptions = options === void 0 ? { name: void 0, anonymousActionType: void 0 } : typeof options === \"string\" ? { name: options } : options;\n let extensionConnector;\n try {\n extensionConnector = window.__REDUX_DEVTOOLS_EXTENSION__ || window.top.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!extensionConnector) {\n if ((import_meta.env && import_meta.env.MODE) !== \"production\" && typeof window !== \"undefined\") {\n console.warn(\"[zustand devtools middleware] Please install/enable Redux devtools extension\");\n }\n return fn7(set, get3, api);\n }\n let extension = Object.create(extensionConnector.connect(devtoolsOptions));\n let didWarnAboutDevtools = false;\n Object.defineProperty(api, \"devtools\", {\n get: () => {\n if (!didWarnAboutDevtools) {\n console.warn(\"[zustand devtools middleware] `devtools` property on the store is deprecated it will be removed in the next major.\\nYou shouldn't interact with the extension directly. But in case you still want to you can patch `window.__REDUX_DEVTOOLS_EXTENSION__` directly\");\n didWarnAboutDevtools = true;\n }\n return extension;\n },\n set: (value) => {\n if (!didWarnAboutDevtools) {\n console.warn(\"[zustand devtools middleware] `api.devtools` is deprecated, it will be removed in the next major.\\nYou shouldn't interact with the extension directly. But in case you still want to you can patch `window.__REDUX_DEVTOOLS_EXTENSION__` directly\");\n didWarnAboutDevtools = true;\n }\n extension = value;\n }\n });\n let didWarnAboutPrefix = false;\n Object.defineProperty(extension, \"prefix\", {\n get: () => {\n if (!didWarnAboutPrefix) {\n console.warn(\"[zustand devtools middleware] along with `api.devtools`, `api.devtools.prefix` is deprecated.\\nWe no longer prefix the actions/names\" + devtoolsOptions.name === void 0 ? \", pass the `name` option to create a separate instance of devtools for each store.\" : \", because the `name` option already creates a separate instance of devtools for each store.\");\n didWarnAboutPrefix = true;\n }\n return \"\";\n },\n set: () => {\n if (!didWarnAboutPrefix) {\n console.warn(\"[zustand devtools middleware] along with `api.devtools`, `api.devtools.prefix` is deprecated.\\nWe no longer prefix the actions/names\" + devtoolsOptions.name === void 0 ? \", pass the `name` option to create a separate instance of devtools for each store.\" : \", because the `name` option already creates a separate instance of devtools for each store.\");\n didWarnAboutPrefix = true;\n }\n }\n });\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n set(state, replace);\n if (!isRecording)\n return;\n extension.send(nameOrAction === void 0 ? { type: devtoolsOptions.anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction, get3());\n };\n const setStateFromDevtools = (...a5) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a5);\n isRecording = originalIsRecording;\n };\n const initialState3 = fn7(api.setState, get3, api);\n extension.init(initialState3);\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a5) => {\n if (a5[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn('[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.');\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a5);\n };\n }\n extension.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\"[zustand devtools middleware] Unsupported action format\");\n return;\n }\n return parseJsonThen(message.payload, (action) => {\n if (action.type === \"__setState\") {\n setStateFromDevtools(action.state);\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n });\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState3);\n return extension.init(api.getState());\n case \"COMMIT\":\n return extension.init(api.getState());\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n extension.init(api.getState());\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState)\n return;\n setStateFromDevtools(lastComputedState);\n extension.send(null, nextLiftedState);\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState3;\n };\n}\nvar parseJsonThen = (stringified, f3) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e2) {\n console.error(\"[zustand devtools middleware] Could not parse the received json\", e2);\n }\n if (parsed !== void 0)\n f3(parsed);\n};\nvar __defProp2 = Object.defineProperty;\nvar __getOwnPropSymbols2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues2 = (a5, b4) => {\n for (var prop in b4 || (b4 = {}))\n if (__hasOwnProp2.call(b4, prop))\n __defNormalProp2(a5, prop, b4[prop]);\n if (__getOwnPropSymbols2)\n for (var prop of __getOwnPropSymbols2(b4)) {\n if (__propIsEnum2.call(b4, prop))\n __defNormalProp2(a5, prop, b4[prop]);\n }\n return a5;\n};\nvar toThenable = (fn7) => (input) => {\n try {\n const result = fn7(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e2) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e2);\n }\n };\n }\n};\nvar persist = (config2, baseOptions) => (set, get3, api) => {\n let options = __spreadValues2({\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => __spreadValues2(__spreadValues2({}, currentState), persistedState)\n }, baseOptions);\n if (options.blacklist || options.whitelist) {\n console.warn(`The ${options.blacklist ? \"blacklist\" : \"whitelist\"} option is deprecated and will be removed in the next version. Please use the 'partialize' option instead.`);\n }\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e2) {\n }\n if (!storage) {\n return config2((...args) => {\n console.warn(`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`);\n set(...args);\n }, get3, api);\n } else if (!storage.removeItem) {\n console.warn(`[zustand persist middleware] The given storage for item '${options.name}' does not contain a 'removeItem' method, which will be required in v4.`);\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize(__spreadValues2({}, get3()));\n if (options.whitelist) {\n Object.keys(state).forEach((key) => {\n var _a;\n !((_a = options.whitelist) == null ? void 0 : _a.includes(key)) && delete state[key];\n });\n }\n if (options.blacklist) {\n options.blacklist.forEach((key) => delete state[key]);\n }\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then((serializedValue) => storage.setItem(options.name, serializedValue)).catch((e2) => {\n errorInSync = e2;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config2((...args) => {\n set(...args);\n void setItem();\n }, get3, api);\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get3()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get3())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(deserializedStorageValue.state, deserializedStorageValue.version);\n }\n console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`);\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n stateFromStorage = options.merge(migratedState, configResult);\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e2) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e2);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = __spreadValues2(__spreadValues2({}, options), newOptions);\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n var _a;\n (_a = storage == null ? void 0 : storage.removeItem) == null ? void 0 : _a.call(storage, options.name);\n },\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\n\n// node_modules/zustand/esm/vanilla.mjs\nfunction createStore2(createState) {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState2 = () => state;\n const subscribeWithSelector = (listener, selector = getState2, equalityFn = Object.is) => {\n console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n let currentSlice = selector(state);\n function listenerToAdd() {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n listener(currentSlice = nextSlice, previousSlice);\n }\n }\n listeners.add(listenerToAdd);\n return () => listeners.delete(listenerToAdd);\n };\n const subscribe = (listener, selector, equalityFn) => {\n if (selector || equalityFn) {\n return subscribeWithSelector(listener, selector, equalityFn);\n }\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState: getState2, subscribe, destroy };\n state = createState(setState, getState2, api);\n return api;\n}\n\n// node_modules/@udecode/zustood/dist/index.es.js\nvar generateStateActions = (store) => {\n const actions = {};\n Object.keys(store.getState()).forEach((key) => {\n actions[key] = (value) => {\n const prevValue = store.getState()[key];\n if (prevValue === value)\n return;\n store.setState((draft) => {\n draft[key] = value;\n });\n };\n });\n return actions;\n};\nvar extendActions = (builder, api) => {\n const actions = builder(api.set, api.get, api);\n return __spreadProps(__spreadValues({}, api), {\n set: __spreadValues(__spreadValues({}, api.set), actions)\n });\n};\nvar extendSelectors = (builder, api) => {\n const use = __spreadValues({}, api.use);\n const get3 = __spreadValues({}, api.get);\n Object.keys(builder(api.store.getState(), api.get, api)).forEach((key) => {\n use[key] = (...args) => api.useStore((state) => builder(state, api.get, api)[key])(...args);\n get3[key] = (...args) => builder(api.store.getState(), api.get, api)[key](...args);\n });\n return __spreadProps(__spreadValues({}, api), {\n get: get3,\n use\n });\n};\nvar storeFactory = (api) => {\n return __spreadProps(__spreadValues({}, api), {\n extendSelectors: (builder) => storeFactory(extendSelectors(builder, api)),\n extendActions: (builder) => storeFactory(extendActions(builder, api))\n });\n};\nvar generateStateGetSelectors = (store) => {\n const selectors = {};\n Object.keys(store.getState()).forEach((key) => {\n selectors[key] = () => store.getState()[key];\n });\n return selectors;\n};\nvar generateStateHookSelectors = (store) => {\n const selectors = {};\n Object.keys(store.getState()).forEach((key) => {\n selectors[key] = () => store((state) => state[key]);\n });\n return selectors;\n};\nvar immerMiddleware = (config2) => (set, get3, api) => {\n const setState = (fn7) => set(immer_esm_default(fn7), true);\n api.setState = setState;\n return config2(setState, get3, api);\n};\nfunction pipe(x4, ...fns) {\n return fns.reduce((y3, fn7) => fn7(y3), x4);\n}\nvar createStore3 = (name) => (initialState3, options = {}) => {\n var _immer$enabledAutoFre;\n const {\n middlewares: _middlewares = [],\n devtools: devtools$1,\n persist: persist$1,\n immer\n } = options;\n sn2((_immer$enabledAutoFre = immer === null || immer === void 0 ? void 0 : immer.enabledAutoFreeze) !== null && _immer$enabledAutoFre !== void 0 ? _immer$enabledAutoFre : false);\n if (immer !== null && immer !== void 0 && immer.enableMapSet) {\n C();\n }\n const middlewares = [immerMiddleware, ..._middlewares];\n if (persist$1 !== null && persist$1 !== void 0 && persist$1.enabled) {\n middlewares.push((config2) => persist(config2, __spreadProps(__spreadValues({}, persist$1), {\n name\n })));\n }\n if (devtools$1 !== null && devtools$1 !== void 0 && devtools$1.enabled) {\n middlewares.push((config2) => devtools(config2, __spreadProps(__spreadValues({}, devtools$1), {\n name\n })));\n }\n middlewares.push(createStore2);\n const createStore6 = (createState) => pipe(createState, ...middlewares);\n const store = createStore6(() => initialState3);\n const useStore = create2(store);\n const stateActions = generateStateActions(useStore);\n const mergeState = (state) => {\n store.setState((draft) => {\n Object.assign(draft, state);\n });\n };\n const hookSelectors = generateStateHookSelectors(useStore);\n const getterSelectors = generateStateGetSelectors(useStore);\n const api = {\n get: __spreadValues({\n state: store.getState\n }, getterSelectors),\n name,\n set: __spreadValues({\n state: store.setState,\n mergeState\n }, stateActions),\n store,\n use: hookSelectors,\n useStore,\n extendSelectors: () => api,\n extendActions: () => api\n };\n return storeFactory(api);\n};\nvar commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nfunction createCommonjsModule(fn7, module2) {\n return module2 = { exports: {} }, fn7(module2, module2.exports), module2.exports;\n}\nvar freeGlobal = typeof commonjsGlobal == \"object\" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\nvar _freeGlobal = freeGlobal;\nvar freeSelf = typeof self == \"object\" && self && self.Object === Object && self;\nvar root = _freeGlobal || freeSelf || Function(\"return this\")();\nvar _root = root;\nvar Symbol2 = _root.Symbol;\nvar _Symbol = Symbol2;\nvar objectProto$b = Object.prototype;\nvar hasOwnProperty$8 = objectProto$b.hasOwnProperty;\nvar nativeObjectToString$1 = objectProto$b.toString;\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : void 0;\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty$8.call(value, symToStringTag$1), tag = value[symToStringTag$1];\n try {\n value[symToStringTag$1] = void 0;\n var unmasked = true;\n } catch (e2) {\n }\n var result = nativeObjectToString$1.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag$1] = tag;\n } else {\n delete value[symToStringTag$1];\n }\n }\n return result;\n}\nvar _getRawTag = getRawTag;\nvar objectProto$a = Object.prototype;\nvar nativeObjectToString = objectProto$a.toString;\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\nvar _objectToString = objectToString;\nvar nullTag = \"[object Null]\";\nvar undefinedTag = \"[object Undefined]\";\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : void 0;\nfunction baseGetTag(value) {\n if (value == null) {\n return value === void 0 ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value) ? _getRawTag(value) : _objectToString(value);\n}\nvar _baseGetTag = baseGetTag;\nfunction isObject2(value) {\n var type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\nvar isObject_1 = isObject2;\nvar asyncTag = \"[object AsyncFunction]\";\nvar funcTag$1 = \"[object Function]\";\nvar genTag = \"[object GeneratorFunction]\";\nvar proxyTag = \"[object Proxy]\";\nfunction isFunction(value) {\n if (!isObject_1(value)) {\n return false;\n }\n var tag = _baseGetTag(value);\n return tag == funcTag$1 || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\nvar isFunction_1 = isFunction;\nvar coreJsData = _root[\"__core-js_shared__\"];\nvar _coreJsData = coreJsData;\nvar maskSrcKey = function() {\n var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || \"\");\n return uid ? \"Symbol(src)_1.\" + uid : \"\";\n}();\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\nvar _isMasked = isMasked;\nvar funcProto$1 = Function.prototype;\nvar funcToString$1 = funcProto$1.toString;\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString$1.call(func);\n } catch (e2) {\n }\n try {\n return func + \"\";\n } catch (e2) {\n }\n }\n return \"\";\n}\nvar _toSource = toSource;\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\nvar funcProto = Function.prototype;\nvar objectProto$9 = Object.prototype;\nvar funcToString = funcProto.toString;\nvar hasOwnProperty$7 = objectProto$9.hasOwnProperty;\nvar reIsNative = RegExp(\"^\" + funcToString.call(hasOwnProperty$7).replace(reRegExpChar, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\");\nfunction baseIsNative(value) {\n if (!isObject_1(value) || _isMasked(value)) {\n return false;\n }\n var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;\n return pattern.test(_toSource(value));\n}\nvar _baseIsNative = baseIsNative;\nfunction getValue(object, key) {\n return object == null ? void 0 : object[key];\n}\nvar _getValue = getValue;\nfunction getNative(object, key) {\n var value = _getValue(object, key);\n return _baseIsNative(value) ? value : void 0;\n}\nvar _getNative = getNative;\nvar defineProperty = function() {\n try {\n var func = _getNative(Object, \"defineProperty\");\n func({}, \"\", {});\n return func;\n } catch (e2) {\n }\n}();\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index7 = -1, iterable = Object(object), props = keysFunc(object), length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index7];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\nvar _createBaseFor = createBaseFor;\nvar baseFor = _createBaseFor();\nfunction isObjectLike(value) {\n return value != null && typeof value == \"object\";\n}\nvar isObjectLike_1 = isObjectLike;\nvar argsTag$2 = \"[object Arguments]\";\nfunction baseIsArguments(value) {\n return isObjectLike_1(value) && _baseGetTag(value) == argsTag$2;\n}\nvar _baseIsArguments = baseIsArguments;\nvar objectProto$8 = Object.prototype;\nvar hasOwnProperty$6 = objectProto$8.hasOwnProperty;\nvar propertyIsEnumerable$1 = objectProto$8.propertyIsEnumerable;\nvar isArguments = _baseIsArguments(function() {\n return arguments;\n}()) ? _baseIsArguments : function(value) {\n return isObjectLike_1(value) && hasOwnProperty$6.call(value, \"callee\") && !propertyIsEnumerable$1.call(value, \"callee\");\n};\nvar isArray = Array.isArray;\nfunction stubFalse() {\n return false;\n}\nvar stubFalse_1 = stubFalse;\nvar isBuffer_1 = createCommonjsModule(function(module2, exports2) {\n var freeExports = exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && true && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var Buffer2 = moduleExports ? _root.Buffer : void 0;\n var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;\n var isBuffer = nativeIsBuffer || stubFalse_1;\n module2.exports = isBuffer;\n});\nvar MAX_SAFE_INTEGER = 9007199254740991;\nfunction isLength(value) {\n return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\nvar isLength_1 = isLength;\nvar argsTag$1 = \"[object Arguments]\";\nvar arrayTag$1 = \"[object Array]\";\nvar boolTag$1 = \"[object Boolean]\";\nvar dateTag$1 = \"[object Date]\";\nvar errorTag$1 = \"[object Error]\";\nvar funcTag = \"[object Function]\";\nvar mapTag$2 = \"[object Map]\";\nvar numberTag$1 = \"[object Number]\";\nvar objectTag$2 = \"[object Object]\";\nvar regexpTag$1 = \"[object RegExp]\";\nvar setTag$2 = \"[object Set]\";\nvar stringTag$1 = \"[object String]\";\nvar weakMapTag$1 = \"[object WeakMap]\";\nvar arrayBufferTag$1 = \"[object ArrayBuffer]\";\nvar dataViewTag$2 = \"[object DataView]\";\nvar float32Tag = \"[object Float32Array]\";\nvar float64Tag = \"[object Float64Array]\";\nvar int8Tag = \"[object Int8Array]\";\nvar int16Tag = \"[object Int16Array]\";\nvar int32Tag = \"[object Int32Array]\";\nvar uint8Tag = \"[object Uint8Array]\";\nvar uint8ClampedTag = \"[object Uint8ClampedArray]\";\nvar uint16Tag = \"[object Uint16Array]\";\nvar uint32Tag = \"[object Uint32Array]\";\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag$1] = typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$1] = typedArrayTags[dataViewTag$2] = typedArrayTags[dateTag$1] = typedArrayTags[errorTag$1] = typedArrayTags[funcTag] = typedArrayTags[mapTag$2] = typedArrayTags[numberTag$1] = typedArrayTags[objectTag$2] = typedArrayTags[regexpTag$1] = typedArrayTags[setTag$2] = typedArrayTags[stringTag$1] = typedArrayTags[weakMapTag$1] = false;\nfunction baseIsTypedArray(value) {\n return isObjectLike_1(value) && isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];\n}\nvar _baseIsTypedArray = baseIsTypedArray;\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\nvar _baseUnary = baseUnary;\nvar _nodeUtil = createCommonjsModule(function(module2, exports2) {\n var freeExports = exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && true && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var freeProcess = moduleExports && _freeGlobal.process;\n var nodeUtil = function() {\n try {\n var types = freeModule && freeModule.require && freeModule.require(\"util\").types;\n if (types) {\n return types;\n }\n return freeProcess && freeProcess.binding && freeProcess.binding(\"util\");\n } catch (e2) {\n }\n }();\n module2.exports = nodeUtil;\n});\nvar nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;\nvar isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;\nvar objectProto$7 = Object.prototype;\nvar hasOwnProperty$5 = objectProto$7.hasOwnProperty;\nvar objectProto$6 = Object.prototype;\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\nvar _overArg = overArg;\nvar nativeKeys = _overArg(Object.keys, Object);\nvar objectProto$5 = Object.prototype;\nvar hasOwnProperty$4 = objectProto$5.hasOwnProperty;\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\nvar _listCacheClear = listCacheClear;\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\nvar eq_1 = eq;\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_1(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\nvar _assocIndexOf = assocIndexOf;\nvar arrayProto = Array.prototype;\nvar splice = arrayProto.splice;\nfunction listCacheDelete(key) {\n var data = this.__data__, index7 = _assocIndexOf(data, key);\n if (index7 < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index7 == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index7, 1);\n }\n --this.size;\n return true;\n}\nvar _listCacheDelete = listCacheDelete;\nfunction listCacheGet(key) {\n var data = this.__data__, index7 = _assocIndexOf(data, key);\n return index7 < 0 ? void 0 : data[index7][1];\n}\nvar _listCacheGet = listCacheGet;\nfunction listCacheHas(key) {\n return _assocIndexOf(this.__data__, key) > -1;\n}\nvar _listCacheHas = listCacheHas;\nfunction listCacheSet(key, value) {\n var data = this.__data__, index7 = _assocIndexOf(data, key);\n if (index7 < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index7][1] = value;\n }\n return this;\n}\nvar _listCacheSet = listCacheSet;\nfunction ListCache(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n}\nListCache.prototype.clear = _listCacheClear;\nListCache.prototype[\"delete\"] = _listCacheDelete;\nListCache.prototype.get = _listCacheGet;\nListCache.prototype.has = _listCacheHas;\nListCache.prototype.set = _listCacheSet;\nvar _ListCache = ListCache;\nfunction stackClear() {\n this.__data__ = new _ListCache();\n this.size = 0;\n}\nvar _stackClear = stackClear;\nfunction stackDelete(key) {\n var data = this.__data__, result = data[\"delete\"](key);\n this.size = data.size;\n return result;\n}\nvar _stackDelete = stackDelete;\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\nvar _stackGet = stackGet;\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\nvar _stackHas = stackHas;\nvar Map2 = _getNative(_root, \"Map\");\nvar _Map = Map2;\nvar nativeCreate = _getNative(Object, \"create\");\nvar _nativeCreate = nativeCreate;\nfunction hashClear() {\n this.__data__ = _nativeCreate ? _nativeCreate(null) : {};\n this.size = 0;\n}\nvar _hashClear = hashClear;\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\nvar _hashDelete = hashDelete;\nvar HASH_UNDEFINED$2 = \"__lodash_hash_undefined__\";\nvar objectProto$4 = Object.prototype;\nvar hasOwnProperty$3 = objectProto$4.hasOwnProperty;\nfunction hashGet(key) {\n var data = this.__data__;\n if (_nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED$2 ? void 0 : result;\n }\n return hasOwnProperty$3.call(data, key) ? data[key] : void 0;\n}\nvar _hashGet = hashGet;\nvar objectProto$3 = Object.prototype;\nvar hasOwnProperty$2 = objectProto$3.hasOwnProperty;\nfunction hashHas(key) {\n var data = this.__data__;\n return _nativeCreate ? data[key] !== void 0 : hasOwnProperty$2.call(data, key);\n}\nvar _hashHas = hashHas;\nvar HASH_UNDEFINED$1 = \"__lodash_hash_undefined__\";\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = _nativeCreate && value === void 0 ? HASH_UNDEFINED$1 : value;\n return this;\n}\nvar _hashSet = hashSet;\nfunction Hash(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n}\nHash.prototype.clear = _hashClear;\nHash.prototype[\"delete\"] = _hashDelete;\nHash.prototype.get = _hashGet;\nHash.prototype.has = _hashHas;\nHash.prototype.set = _hashSet;\nvar _Hash = Hash;\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n \"hash\": new _Hash(),\n \"map\": new (_Map || _ListCache)(),\n \"string\": new _Hash()\n };\n}\nvar _mapCacheClear = mapCacheClear;\nfunction isKeyable(value) {\n var type = typeof value;\n return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n}\nvar _isKeyable = isKeyable;\nfunction getMapData(map2, key) {\n var data = map2.__data__;\n return _isKeyable(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n}\nvar _getMapData = getMapData;\nfunction mapCacheDelete(key) {\n var result = _getMapData(this, key)[\"delete\"](key);\n this.size -= result ? 1 : 0;\n return result;\n}\nvar _mapCacheDelete = mapCacheDelete;\nfunction mapCacheGet(key) {\n return _getMapData(this, key).get(key);\n}\nvar _mapCacheGet = mapCacheGet;\nfunction mapCacheHas(key) {\n return _getMapData(this, key).has(key);\n}\nvar _mapCacheHas = mapCacheHas;\nfunction mapCacheSet(key, value) {\n var data = _getMapData(this, key), size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\nvar _mapCacheSet = mapCacheSet;\nfunction MapCache(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n}\nMapCache.prototype.clear = _mapCacheClear;\nMapCache.prototype[\"delete\"] = _mapCacheDelete;\nMapCache.prototype.get = _mapCacheGet;\nMapCache.prototype.has = _mapCacheHas;\nMapCache.prototype.set = _mapCacheSet;\nvar _MapCache = MapCache;\nvar LARGE_ARRAY_SIZE = 200;\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof _ListCache) {\n var pairs = data.__data__;\n if (!_Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new _MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\nvar _stackSet = stackSet;\nfunction Stack(entries) {\n var data = this.__data__ = new _ListCache(entries);\n this.size = data.size;\n}\nStack.prototype.clear = _stackClear;\nStack.prototype[\"delete\"] = _stackDelete;\nStack.prototype.get = _stackGet;\nStack.prototype.has = _stackHas;\nStack.prototype.set = _stackSet;\nvar HASH_UNDEFINED = \"__lodash_hash_undefined__\";\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\nvar _setCacheAdd = setCacheAdd;\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\nvar _setCacheHas = setCacheHas;\nfunction SetCache(values2) {\n var index7 = -1, length = values2 == null ? 0 : values2.length;\n this.__data__ = new _MapCache();\n while (++index7 < length) {\n this.add(values2[index7]);\n }\n}\nSetCache.prototype.add = SetCache.prototype.push = _setCacheAdd;\nSetCache.prototype.has = _setCacheHas;\nvar Uint8Array2 = _root.Uint8Array;\nvar symbolProto$1 = _Symbol ? _Symbol.prototype : void 0;\nvar symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : void 0;\nvar objectProto$2 = Object.prototype;\nvar propertyIsEnumerable = objectProto$2.propertyIsEnumerable;\nvar objectProto$1 = Object.prototype;\nvar hasOwnProperty$1 = objectProto$1.hasOwnProperty;\nvar DataView = _getNative(_root, \"DataView\");\nvar _DataView = DataView;\nvar Promise$1 = _getNative(_root, \"Promise\");\nvar _Promise = Promise$1;\nvar Set2 = _getNative(_root, \"Set\");\nvar _Set = Set2;\nvar WeakMap2 = _getNative(_root, \"WeakMap\");\nvar _WeakMap = WeakMap2;\nvar mapTag = \"[object Map]\";\nvar objectTag$1 = \"[object Object]\";\nvar promiseTag = \"[object Promise]\";\nvar setTag = \"[object Set]\";\nvar weakMapTag = \"[object WeakMap]\";\nvar dataViewTag = \"[object DataView]\";\nvar dataViewCtorString = _toSource(_DataView);\nvar mapCtorString = _toSource(_Map);\nvar promiseCtorString = _toSource(_Promise);\nvar setCtorString = _toSource(_Set);\nvar weakMapCtorString = _toSource(_WeakMap);\nvar getTag = _baseGetTag;\nif (_DataView && getTag(new _DataView(new ArrayBuffer(1))) != dataViewTag || _Map && getTag(new _Map()) != mapTag || _Promise && getTag(_Promise.resolve()) != promiseTag || _Set && getTag(new _Set()) != setTag || _WeakMap && getTag(new _WeakMap()) != weakMapTag) {\n getTag = function(value) {\n var result = _baseGetTag(value), Ctor = result == objectTag$1 ? value.constructor : void 0, ctorString = Ctor ? _toSource(Ctor) : \"\";\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n return result;\n };\n}\nvar objectProto = Object.prototype;\nvar hasOwnProperty = objectProto.hasOwnProperty;\nvar FUNC_ERROR_TEXT = \"Expected a function\";\nfunction memoize(func, resolver) {\n if (typeof func != \"function\" || resolver != null && typeof resolver != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || _MapCache)();\n return memoized;\n}\nmemoize.Cache = _MapCache;\nvar memoize_1 = memoize;\nvar MAX_MEMOIZE_SIZE = 500;\nfunction memoizeCapped(func) {\n var result = memoize_1(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n var cache = result.cache;\n return result;\n}\nvar _memoizeCapped = memoizeCapped;\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g;\nvar stringToPath = _memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46) {\n result.push(\"\");\n }\n string.replace(rePropName, function(match2, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, \"$1\") : number || match2);\n });\n return result;\n});\nvar INFINITY$1 = 1 / 0;\nvar symbolProto = _Symbol ? _Symbol.prototype : void 0;\nvar symbolToString = symbolProto ? symbolProto.toString : void 0;\nvar INFINITY = 1 / 0;\n\n// node_modules/slate-history/dist/index.es.js\nvar History = {\n isHistory(value) {\n return isPlainObject(value) && Array.isArray(value.redos) && Array.isArray(value.undos) && (value.redos.length === 0 || Operation.isOperationList(value.redos[0])) && (value.undos.length === 0 || Operation.isOperationList(value.undos[0]));\n }\n};\nvar SAVING = /* @__PURE__ */ new WeakMap();\nvar MERGING = /* @__PURE__ */ new WeakMap();\nvar HistoryEditor = {\n isHistoryEditor(value) {\n return History.isHistory(value.history) && Editor.isEditor(value);\n },\n isMerging(editor) {\n return MERGING.get(editor);\n },\n isSaving(editor) {\n return SAVING.get(editor);\n },\n redo(editor) {\n editor.redo();\n },\n undo(editor) {\n editor.undo();\n },\n withoutMerging(editor, fn7) {\n var prev = HistoryEditor.isMerging(editor);\n MERGING.set(editor, false);\n fn7();\n MERGING.set(editor, prev);\n },\n withoutSaving(editor, fn7) {\n var prev = HistoryEditor.isSaving(editor);\n SAVING.set(editor, false);\n fn7();\n SAVING.set(editor, prev);\n }\n};\nvar withHistory = (editor) => {\n var e2 = editor;\n var {\n apply: apply2\n } = e2;\n e2.history = {\n undos: [],\n redos: []\n };\n e2.redo = () => {\n var {\n history\n } = e2;\n var {\n redos\n } = history;\n if (redos.length > 0) {\n var batch = redos[redos.length - 1];\n HistoryEditor.withoutSaving(e2, () => {\n Editor.withoutNormalizing(e2, () => {\n for (var op of batch) {\n e2.apply(op);\n }\n });\n });\n history.redos.pop();\n history.undos.push(batch);\n }\n };\n e2.undo = () => {\n var {\n history\n } = e2;\n var {\n undos\n } = history;\n if (undos.length > 0) {\n var batch = undos[undos.length - 1];\n HistoryEditor.withoutSaving(e2, () => {\n Editor.withoutNormalizing(e2, () => {\n var inverseOps = batch.map(Operation.inverse).reverse();\n for (var op of inverseOps) {\n e2.apply(op);\n }\n });\n });\n history.redos.push(batch);\n history.undos.pop();\n }\n };\n e2.apply = (op) => {\n var {\n operations,\n history\n } = e2;\n var {\n undos\n } = history;\n var lastBatch = undos[undos.length - 1];\n var lastOp = lastBatch && lastBatch[lastBatch.length - 1];\n var overwrite = shouldOverwrite(op, lastOp);\n var save = HistoryEditor.isSaving(e2);\n var merge2 = HistoryEditor.isMerging(e2);\n if (save == null) {\n save = shouldSave(op);\n }\n if (save) {\n if (merge2 == null) {\n if (lastBatch == null) {\n merge2 = false;\n } else if (operations.length !== 0) {\n merge2 = true;\n } else {\n merge2 = shouldMerge(op, lastOp) || overwrite;\n }\n }\n if (lastBatch && merge2) {\n if (overwrite) {\n lastBatch.pop();\n }\n lastBatch.push(op);\n } else {\n var batch = [op];\n undos.push(batch);\n }\n while (undos.length > 100) {\n undos.shift();\n }\n if (shouldClear(op)) {\n history.redos = [];\n }\n }\n apply2(op);\n };\n return e2;\n};\nvar shouldMerge = (op, prev) => {\n if (op.type === \"set_selection\") {\n return true;\n }\n if (prev && op.type === \"insert_text\" && prev.type === \"insert_text\" && op.offset === prev.offset + prev.text.length && Path.equals(op.path, prev.path)) {\n return true;\n }\n if (prev && op.type === \"remove_text\" && prev.type === \"remove_text\" && op.offset + op.text.length === prev.offset && Path.equals(op.path, prev.path)) {\n return true;\n }\n return false;\n};\nvar shouldSave = (op, prev) => {\n if (op.type === \"set_selection\" && (op.properties == null || op.newProperties == null)) {\n return false;\n }\n return true;\n};\nvar shouldOverwrite = (op, prev) => {\n if (prev && op.type === \"set_selection\" && prev.type === \"set_selection\") {\n return true;\n }\n return false;\n};\nvar shouldClear = (op) => {\n if (op.type === \"set_selection\") {\n return false;\n }\n return true;\n};\n\n// node_modules/jotai/esm/index.mjs\nvar import_react4 = require(\"react\");\nvar SUSPENSE_PROMISE = Symbol();\nvar isSuspensePromise = (promise) => !!promise[SUSPENSE_PROMISE];\nvar isSuspensePromiseAlreadyCancelled = (suspensePromise) => !suspensePromise[SUSPENSE_PROMISE].c;\nvar cancelSuspensePromise = (suspensePromise) => {\n var _a, _b;\n (_b = (_a = suspensePromise[SUSPENSE_PROMISE]).c) == null ? void 0 : _b.call(_a);\n};\nvar isEqualSuspensePromise = (oldSuspensePromise, newSuspensePromise) => {\n const oldOriginalPromise = oldSuspensePromise[SUSPENSE_PROMISE].o;\n const newOriginalPromise = newSuspensePromise[SUSPENSE_PROMISE].o;\n return oldOriginalPromise === newOriginalPromise || oldSuspensePromise === newOriginalPromise || isSuspensePromise(oldOriginalPromise) && isEqualSuspensePromise(oldOriginalPromise, newSuspensePromise);\n};\nvar createSuspensePromise = (promise) => {\n const objectToAttach = {\n o: promise,\n c: null\n };\n const suspensePromise = new Promise((resolve) => {\n objectToAttach.c = () => {\n objectToAttach.c = null;\n resolve();\n };\n promise.then(objectToAttach.c, objectToAttach.c);\n });\n suspensePromise[SUSPENSE_PROMISE] = objectToAttach;\n return suspensePromise;\n};\nvar __defProp$1 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a5, b4) => {\n for (var prop in b4 || (b4 = {}))\n if (__hasOwnProp$1.call(b4, prop))\n __defNormalProp$1(a5, prop, b4[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b4)) {\n if (__propIsEnum$1.call(b4, prop))\n __defNormalProp$1(a5, prop, b4[prop]);\n }\n return a5;\n};\nvar __spreadProps$1 = (a5, b4) => __defProps$1(a5, __getOwnPropDescs$1(b4));\nvar hasInitialValue = (atom2) => \"init\" in atom2;\nvar READ_ATOM = \"r\";\nvar WRITE_ATOM = \"w\";\nvar COMMIT_ATOM = \"c\";\nvar SUBSCRIBE_ATOM = \"s\";\nvar RESTORE_ATOMS = \"h\";\nvar DEV_SUBSCRIBE_STATE = \"n\";\nvar DEV_GET_MOUNTED_ATOMS = \"l\";\nvar DEV_GET_ATOM_STATE = \"a\";\nvar DEV_GET_MOUNTED = \"m\";\nvar createStore4 = (initialValues) => {\n const committedAtomStateMap = /* @__PURE__ */ new WeakMap();\n const mountedMap = /* @__PURE__ */ new WeakMap();\n const pendingMap = /* @__PURE__ */ new Map();\n let stateListeners;\n let mountedAtoms;\n if (typeof process === \"object\" && true) {\n stateListeners = /* @__PURE__ */ new Set();\n mountedAtoms = /* @__PURE__ */ new Set();\n }\n if (initialValues) {\n for (const [atom2, value] of initialValues) {\n const atomState = { v: value, r: 0, d: /* @__PURE__ */ new Map() };\n if (typeof process === \"object\" && true) {\n Object.freeze(atomState);\n if (!hasInitialValue(atom2)) {\n console.warn(\"Found initial value for derived atom which can cause unexpected behavior\", atom2);\n }\n }\n committedAtomStateMap.set(atom2, atomState);\n }\n }\n const suspensePromiseCacheMap = /* @__PURE__ */ new WeakMap();\n const addSuspensePromiseToCache = (version2, atom2, suspensePromise) => {\n let cache = suspensePromiseCacheMap.get(atom2);\n if (!cache) {\n cache = /* @__PURE__ */ new Map();\n suspensePromiseCacheMap.set(atom2, cache);\n }\n suspensePromise.then(() => {\n if (cache.get(version2) === suspensePromise) {\n cache.delete(version2);\n if (!cache.size) {\n suspensePromiseCacheMap.delete(atom2);\n }\n }\n });\n cache.set(version2, suspensePromise);\n };\n const cancelAllSuspensePromiseInCache = (atom2) => {\n const versionSet = /* @__PURE__ */ new Set();\n const cache = suspensePromiseCacheMap.get(atom2);\n if (cache) {\n suspensePromiseCacheMap.delete(atom2);\n cache.forEach((suspensePromise, version2) => {\n cancelSuspensePromise(suspensePromise);\n versionSet.add(version2);\n });\n }\n return versionSet;\n };\n const versionedAtomStateMapMap = /* @__PURE__ */ new WeakMap();\n const getVersionedAtomStateMap = (version2) => {\n let versionedAtomStateMap = versionedAtomStateMapMap.get(version2);\n if (!versionedAtomStateMap) {\n versionedAtomStateMap = /* @__PURE__ */ new Map();\n versionedAtomStateMapMap.set(version2, versionedAtomStateMap);\n }\n return versionedAtomStateMap;\n };\n const getAtomState = (version2, atom2) => {\n if (version2) {\n const versionedAtomStateMap = getVersionedAtomStateMap(version2);\n let atomState = versionedAtomStateMap.get(atom2);\n if (!atomState) {\n atomState = getAtomState(version2.p, atom2);\n if (atomState) {\n if (\"p\" in atomState) {\n atomState.p.then(() => versionedAtomStateMap.delete(atom2));\n }\n versionedAtomStateMap.set(atom2, atomState);\n }\n }\n return atomState;\n }\n return committedAtomStateMap.get(atom2);\n };\n const setAtomState = (version2, atom2, atomState) => {\n if (typeof process === \"object\" && true) {\n Object.freeze(atomState);\n }\n if (version2) {\n const versionedAtomStateMap = getVersionedAtomStateMap(version2);\n versionedAtomStateMap.set(atom2, atomState);\n } else {\n const prevAtomState = committedAtomStateMap.get(atom2);\n committedAtomStateMap.set(atom2, atomState);\n if (!pendingMap.has(atom2)) {\n pendingMap.set(atom2, prevAtomState);\n }\n }\n };\n const createReadDependencies = (version2, prevReadDependencies = /* @__PURE__ */ new Map(), dependencies) => {\n if (!dependencies) {\n return prevReadDependencies;\n }\n const readDependencies = /* @__PURE__ */ new Map();\n let changed = false;\n dependencies.forEach((atom2) => {\n var _a;\n const revision = ((_a = getAtomState(version2, atom2)) == null ? void 0 : _a.r) || 0;\n readDependencies.set(atom2, revision);\n if (prevReadDependencies.get(atom2) !== revision) {\n changed = true;\n }\n });\n if (prevReadDependencies.size === readDependencies.size && !changed) {\n return prevReadDependencies;\n }\n return readDependencies;\n };\n const setAtomValue = (version2, atom2, value, dependencies, suspensePromise) => {\n const atomState = getAtomState(version2, atom2);\n if (atomState) {\n if (suspensePromise && (!(\"p\" in atomState) || !isEqualSuspensePromise(atomState.p, suspensePromise))) {\n return atomState;\n }\n if (\"p\" in atomState) {\n cancelSuspensePromise(atomState.p);\n }\n }\n const nextAtomState = {\n v: value,\n r: (atomState == null ? void 0 : atomState.r) || 0,\n d: createReadDependencies(version2, atomState == null ? void 0 : atomState.d, dependencies)\n };\n if (!atomState || !(\"v\" in atomState) || !Object.is(atomState.v, value)) {\n ++nextAtomState.r;\n if (nextAtomState.d.has(atom2)) {\n nextAtomState.d = new Map(nextAtomState.d).set(atom2, nextAtomState.r);\n }\n } else if (nextAtomState.d !== atomState.d && (nextAtomState.d.size !== atomState.d.size || !Array.from(nextAtomState.d.keys()).every((a5) => atomState.d.has(a5)))) {\n Promise.resolve().then(() => {\n flushPending(version2);\n });\n }\n setAtomState(version2, atom2, nextAtomState);\n return nextAtomState;\n };\n const setAtomReadError = (version2, atom2, error, dependencies, suspensePromise) => {\n const atomState = getAtomState(version2, atom2);\n if (atomState) {\n if (suspensePromise && (!(\"p\" in atomState) || !isEqualSuspensePromise(atomState.p, suspensePromise))) {\n return atomState;\n }\n if (\"p\" in atomState) {\n cancelSuspensePromise(atomState.p);\n }\n }\n const nextAtomState = {\n e: error,\n r: (atomState == null ? void 0 : atomState.r) || 0,\n d: createReadDependencies(version2, atomState == null ? void 0 : atomState.d, dependencies)\n };\n setAtomState(version2, atom2, nextAtomState);\n return nextAtomState;\n };\n const setAtomSuspensePromise = (version2, atom2, suspensePromise, dependencies) => {\n const atomState = getAtomState(version2, atom2);\n if (atomState && \"p\" in atomState) {\n if (isEqualSuspensePromise(atomState.p, suspensePromise)) {\n return atomState;\n }\n cancelSuspensePromise(atomState.p);\n }\n addSuspensePromiseToCache(version2, atom2, suspensePromise);\n const nextAtomState = {\n p: suspensePromise,\n r: (atomState == null ? void 0 : atomState.r) || 0,\n d: createReadDependencies(version2, atomState == null ? void 0 : atomState.d, dependencies)\n };\n setAtomState(version2, atom2, nextAtomState);\n return nextAtomState;\n };\n const setAtomPromiseOrValue = (version2, atom2, promiseOrValue, dependencies) => {\n if (promiseOrValue instanceof Promise) {\n const suspensePromise = createSuspensePromise(promiseOrValue.then((value) => {\n setAtomValue(version2, atom2, value, dependencies, suspensePromise);\n flushPending(version2);\n }).catch((e2) => {\n if (e2 instanceof Promise) {\n if (isSuspensePromise(e2)) {\n return e2.then(() => {\n readAtomState(version2, atom2, true);\n });\n }\n return e2;\n }\n setAtomReadError(version2, atom2, e2, dependencies, suspensePromise);\n flushPending(version2);\n }));\n return setAtomSuspensePromise(version2, atom2, suspensePromise, dependencies);\n }\n return setAtomValue(version2, atom2, promiseOrValue, dependencies);\n };\n const setAtomInvalidated = (version2, atom2) => {\n const atomState = getAtomState(version2, atom2);\n if (atomState) {\n const nextAtomState = __spreadProps$1(__spreadValues$1({}, atomState), {\n i: atomState.r\n });\n setAtomState(version2, atom2, nextAtomState);\n } else if (typeof process === \"object\" && true) {\n console.warn(\"[Bug] could not invalidate non existing atom\", atom2);\n }\n };\n const readAtomState = (version2, atom2, force) => {\n if (!force) {\n const atomState = getAtomState(version2, atom2);\n if (atomState) {\n if (atomState.r !== atomState.i && \"p\" in atomState && !isSuspensePromiseAlreadyCancelled(atomState.p)) {\n return atomState;\n }\n atomState.d.forEach((_4, a5) => {\n if (a5 !== atom2) {\n if (!mountedMap.has(a5)) {\n readAtomState(version2, a5);\n } else {\n const aState = getAtomState(version2, a5);\n if (aState && aState.r === aState.i) {\n readAtomState(version2, a5);\n }\n }\n }\n });\n if (Array.from(atomState.d).every(([a5, r5]) => {\n const aState = getAtomState(version2, a5);\n return aState && \"v\" in aState && aState.r === r5;\n })) {\n return atomState;\n }\n }\n }\n const dependencies = /* @__PURE__ */ new Set();\n try {\n const promiseOrValue = atom2.read((a5) => {\n dependencies.add(a5);\n const aState = a5 === atom2 ? getAtomState(version2, a5) : readAtomState(version2, a5);\n if (aState) {\n if (\"e\" in aState) {\n throw aState.e;\n }\n if (\"p\" in aState) {\n throw aState.p;\n }\n return aState.v;\n }\n if (hasInitialValue(a5)) {\n return a5.init;\n }\n throw new Error(\"no atom init\");\n });\n return setAtomPromiseOrValue(version2, atom2, promiseOrValue, dependencies);\n } catch (errorOrPromise) {\n if (errorOrPromise instanceof Promise) {\n const suspensePromise = createSuspensePromise(errorOrPromise);\n return setAtomSuspensePromise(version2, atom2, suspensePromise, dependencies);\n }\n return setAtomReadError(version2, atom2, errorOrPromise, dependencies);\n }\n };\n const readAtom = (readingAtom, version2) => {\n const atomState = readAtomState(version2, readingAtom);\n return atomState;\n };\n const addAtom = (addingAtom) => {\n let mounted = mountedMap.get(addingAtom);\n if (!mounted) {\n mounted = mountAtom(addingAtom);\n }\n return mounted;\n };\n const canUnmountAtom = (atom2, mounted) => !mounted.l.size && (!mounted.t.size || mounted.t.size === 1 && mounted.t.has(atom2));\n const delAtom = (deletingAtom) => {\n const mounted = mountedMap.get(deletingAtom);\n if (mounted && canUnmountAtom(deletingAtom, mounted)) {\n unmountAtom(deletingAtom);\n }\n };\n const invalidateDependents = (version2, atom2) => {\n const mounted = mountedMap.get(atom2);\n mounted == null ? void 0 : mounted.t.forEach((dependent) => {\n if (dependent !== atom2) {\n setAtomInvalidated(version2, dependent);\n invalidateDependents(version2, dependent);\n }\n });\n };\n const writeAtomState = (version2, atom2, update) => {\n let isSync = true;\n const writeGetter = (a5, options) => {\n if (typeof options === \"boolean\") {\n console.warn(\"[DEPRECATED] Please use { unstable_promise: true }\");\n options = { unstable_promise: options };\n }\n const aState = readAtomState(version2, a5);\n if (\"e\" in aState) {\n throw aState.e;\n }\n if (\"p\" in aState) {\n if (options == null ? void 0 : options.unstable_promise) {\n return aState.p.then(() => writeGetter(a5, options));\n }\n if (typeof process === \"object\" && true) {\n console.info(\"Reading pending atom state in write operation. We throw a promise for now.\", a5);\n }\n throw aState.p;\n }\n if (\"v\" in aState) {\n return aState.v;\n }\n if (typeof process === \"object\" && true) {\n console.warn(\"[Bug] no value found while reading atom in write operation. This is probably a bug.\", a5);\n }\n throw new Error(\"no value found\");\n };\n const setter = (a5, v4) => {\n let promiseOrVoid2;\n if (a5 === atom2) {\n if (!hasInitialValue(a5)) {\n throw new Error(\"atom not writable\");\n }\n const versionSet = cancelAllSuspensePromiseInCache(a5);\n versionSet.forEach((cancelledVersion) => {\n if (cancelledVersion !== version2) {\n setAtomPromiseOrValue(cancelledVersion, a5, v4);\n }\n });\n setAtomPromiseOrValue(version2, a5, v4);\n invalidateDependents(version2, a5);\n } else {\n promiseOrVoid2 = writeAtomState(version2, a5, v4);\n }\n if (!isSync) {\n flushPending(version2);\n }\n return promiseOrVoid2;\n };\n const promiseOrVoid = atom2.write(writeGetter, setter, update);\n isSync = false;\n version2 = void 0;\n return promiseOrVoid;\n };\n const writeAtom = (writingAtom, update, version2) => {\n const promiseOrVoid = writeAtomState(version2, writingAtom, update);\n flushPending(version2);\n return promiseOrVoid;\n };\n const isActuallyWritableAtom = (atom2) => !!atom2.write;\n const mountAtom = (atom2, initialDependent) => {\n const mounted = {\n t: new Set(initialDependent && [initialDependent]),\n l: /* @__PURE__ */ new Set()\n };\n mountedMap.set(atom2, mounted);\n if (typeof process === \"object\" && true) {\n mountedAtoms.add(atom2);\n }\n const atomState = readAtomState(void 0, atom2);\n atomState.d.forEach((_4, a5) => {\n const aMounted = mountedMap.get(a5);\n if (aMounted) {\n aMounted.t.add(atom2);\n } else {\n if (a5 !== atom2) {\n mountAtom(a5, atom2);\n }\n }\n });\n if (isActuallyWritableAtom(atom2) && atom2.onMount) {\n const setAtom = (update) => writeAtom(atom2, update);\n const onUnmount = atom2.onMount(setAtom);\n if (onUnmount) {\n mounted.u = onUnmount;\n }\n }\n return mounted;\n };\n const unmountAtom = (atom2) => {\n var _a;\n const onUnmount = (_a = mountedMap.get(atom2)) == null ? void 0 : _a.u;\n if (onUnmount) {\n onUnmount();\n }\n mountedMap.delete(atom2);\n if (typeof process === \"object\" && true) {\n mountedAtoms.delete(atom2);\n }\n const atomState = getAtomState(void 0, atom2);\n if (atomState) {\n atomState.d.forEach((_4, a5) => {\n if (a5 !== atom2) {\n const mounted = mountedMap.get(a5);\n if (mounted) {\n mounted.t.delete(atom2);\n if (canUnmountAtom(a5, mounted)) {\n unmountAtom(a5);\n }\n }\n }\n });\n } else if (typeof process === \"object\" && true) {\n console.warn(\"[Bug] could not find atom state to unmount\", atom2);\n }\n };\n const mountDependencies = (atom2, atomState, prevReadDependencies) => {\n const dependencies = new Set(atomState.d.keys());\n prevReadDependencies == null ? void 0 : prevReadDependencies.forEach((_4, a5) => {\n if (dependencies.has(a5)) {\n dependencies.delete(a5);\n return;\n }\n const mounted = mountedMap.get(a5);\n if (mounted) {\n mounted.t.delete(atom2);\n if (canUnmountAtom(a5, mounted)) {\n unmountAtom(a5);\n }\n }\n });\n dependencies.forEach((a5) => {\n const mounted = mountedMap.get(a5);\n if (mounted) {\n mounted.t.add(atom2);\n } else if (mountedMap.has(atom2)) {\n mountAtom(a5, atom2);\n }\n });\n };\n const flushPending = (version2) => {\n if (version2) {\n const versionedAtomStateMap = getVersionedAtomStateMap(version2);\n versionedAtomStateMap.forEach((atomState, atom2) => {\n if (atomState !== committedAtomStateMap.get(atom2)) {\n const mounted = mountedMap.get(atom2);\n mounted == null ? void 0 : mounted.l.forEach((listener) => listener(version2));\n }\n });\n return;\n }\n while (pendingMap.size) {\n const pending = Array.from(pendingMap);\n pendingMap.clear();\n pending.forEach(([atom2, prevAtomState]) => {\n const atomState = getAtomState(void 0, atom2);\n if (atomState && atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n mountDependencies(atom2, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n }\n const mounted = mountedMap.get(atom2);\n mounted == null ? void 0 : mounted.l.forEach((listener) => listener());\n });\n }\n if (typeof process === \"object\" && true) {\n stateListeners.forEach((l3) => l3());\n }\n };\n const commitVersionedAtomStateMap = (version2) => {\n const versionedAtomStateMap = getVersionedAtomStateMap(version2);\n versionedAtomStateMap.forEach((atomState, atom2) => {\n const prevAtomState = committedAtomStateMap.get(atom2);\n if (atomState.r > ((prevAtomState == null ? void 0 : prevAtomState.r) || 0) || \"v\" in atomState && atomState.r === (prevAtomState == null ? void 0 : prevAtomState.r) && atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n committedAtomStateMap.set(atom2, atomState);\n if (atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n mountDependencies(atom2, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n }\n }\n });\n };\n const commitAtom = (_atom, version2) => {\n if (version2) {\n commitVersionedAtomStateMap(version2);\n }\n flushPending(void 0);\n };\n const subscribeAtom = (atom2, callback) => {\n const mounted = addAtom(atom2);\n const listeners = mounted.l;\n listeners.add(callback);\n return () => {\n listeners.delete(callback);\n delAtom(atom2);\n };\n };\n const restoreAtoms = (values2, version2) => {\n for (const [atom2, value] of values2) {\n if (hasInitialValue(atom2)) {\n setAtomPromiseOrValue(version2, atom2, value);\n invalidateDependents(version2, atom2);\n }\n }\n flushPending(version2);\n };\n if (typeof process === \"object\" && true) {\n return {\n [READ_ATOM]: readAtom,\n [WRITE_ATOM]: writeAtom,\n [COMMIT_ATOM]: commitAtom,\n [SUBSCRIBE_ATOM]: subscribeAtom,\n [RESTORE_ATOMS]: restoreAtoms,\n [DEV_SUBSCRIBE_STATE]: (l3) => {\n stateListeners.add(l3);\n return () => {\n stateListeners.delete(l3);\n };\n },\n [DEV_GET_MOUNTED_ATOMS]: () => mountedAtoms.values(),\n [DEV_GET_ATOM_STATE]: (a5) => committedAtomStateMap.get(a5),\n [DEV_GET_MOUNTED]: (a5) => mountedMap.get(a5)\n };\n }\n return {\n [READ_ATOM]: readAtom,\n [WRITE_ATOM]: writeAtom,\n [COMMIT_ATOM]: commitAtom,\n [SUBSCRIBE_ATOM]: subscribeAtom,\n [RESTORE_ATOMS]: restoreAtoms\n };\n};\nvar createScopeContainer = (initialValues) => {\n const store = createStore4(initialValues);\n return { s: store };\n};\nvar ScopeContextMap = /* @__PURE__ */ new Map();\nvar getScopeContext = (scope2) => {\n if (!ScopeContextMap.has(scope2)) {\n ScopeContextMap.set(scope2, (0, import_react4.createContext)(createScopeContainer()));\n }\n return ScopeContextMap.get(scope2);\n};\nvar __defProp3 = Object.defineProperty;\nvar __defProps2 = Object.defineProperties;\nvar __getOwnPropDescs2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp3 = (obj, key, value) => key in obj ? __defProp3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues3 = (a5, b4) => {\n for (var prop in b4 || (b4 = {}))\n if (__hasOwnProp3.call(b4, prop))\n __defNormalProp3(a5, prop, b4[prop]);\n if (__getOwnPropSymbols3)\n for (var prop of __getOwnPropSymbols3(b4)) {\n if (__propIsEnum3.call(b4, prop))\n __defNormalProp3(a5, prop, b4[prop]);\n }\n return a5;\n};\nvar __spreadProps2 = (a5, b4) => __defProps2(a5, __getOwnPropDescs2(b4));\nvar Provider = ({\n children,\n initialValues,\n scope: scope2,\n unstable_enableVersionedWrite\n}) => {\n const [version2, setVersion] = (0, import_react4.useState)();\n (0, import_react4.useEffect)(() => {\n if (version2) {\n scopeContainerRef.current.s[COMMIT_ATOM](null, version2);\n delete version2.p;\n }\n }, [version2]);\n const scopeContainerRef = (0, import_react4.useRef)();\n if (!scopeContainerRef.current) {\n scopeContainerRef.current = createScopeContainer(initialValues);\n if (unstable_enableVersionedWrite) {\n scopeContainerRef.current.w = (write3) => {\n setVersion((parentVersion) => {\n const nextVersion = parentVersion ? { p: parentVersion } : {};\n write3(nextVersion);\n return nextVersion;\n });\n };\n }\n }\n if (typeof process === \"object\" && true && true) {\n useDebugState(scopeContainerRef.current);\n }\n const ScopeContainerContext = getScopeContext(scope2);\n return (0, import_react4.createElement)(ScopeContainerContext.Provider, {\n value: scopeContainerRef.current\n }, children);\n};\nvar atomToPrintable = (atom2) => atom2.debugLabel || atom2.toString();\nvar stateToPrintable = ([store, atoms]) => Object.fromEntries(atoms.flatMap((atom2) => {\n var _a, _b;\n const mounted = (_a = store[DEV_GET_MOUNTED]) == null ? void 0 : _a.call(store, atom2);\n if (!mounted) {\n return [];\n }\n const dependents = mounted.t;\n const atomState = ((_b = store[DEV_GET_ATOM_STATE]) == null ? void 0 : _b.call(store, atom2)) || {};\n return [\n [\n atomToPrintable(atom2),\n __spreadProps2(__spreadValues3(__spreadValues3(__spreadValues3({}, \"e\" in atomState && { error: atomState.e }), \"p\" in atomState && { promise: atomState.p }), \"v\" in atomState && { value: atomState.v }), {\n dependents: Array.from(dependents).map(atomToPrintable)\n })\n ]\n ];\n}));\nvar useDebugState = (scopeContainer) => {\n const { s: store } = scopeContainer;\n const [atoms, setAtoms] = (0, import_react4.useState)([]);\n (0, import_react4.useEffect)(() => {\n var _a;\n const callback = () => {\n var _a2;\n setAtoms(Array.from(((_a2 = store[DEV_GET_MOUNTED_ATOMS]) == null ? void 0 : _a2.call(store)) || []));\n };\n const unsubscribe = (_a = store[DEV_SUBSCRIBE_STATE]) == null ? void 0 : _a.call(store, callback);\n callback();\n return unsubscribe;\n }, [store]);\n (0, import_react4.useDebugValue)([store, atoms], stateToPrintable);\n};\nvar keyCount = 0;\nfunction atom(read3, write3) {\n const key = `atom${++keyCount}`;\n const config2 = {\n toString: () => key\n };\n if (typeof read3 === \"function\") {\n config2.read = read3;\n } else {\n config2.init = read3;\n config2.read = (get3) => get3(config2);\n config2.write = (get3, set, update) => set(config2, typeof update === \"function\" ? update(get3(config2)) : update);\n }\n if (write3) {\n config2.write = write3;\n }\n return config2;\n}\nvar isWritable = (atom2) => !!atom2.write;\nfunction useAtom(atom2, scope2) {\n if (\"scope\" in atom2) {\n console.warn(\"atom.scope is deprecated. Please do useAtom(atom, scope) instead.\");\n scope2 = atom2.scope;\n }\n const ScopeContext = getScopeContext(scope2);\n const { s: store, w: versionedWrite } = (0, import_react4.useContext)(ScopeContext);\n const getAtomValue = (0, import_react4.useCallback)((version22) => {\n const atomState = store[READ_ATOM](atom2, version22);\n if (\"e\" in atomState) {\n throw atomState.e;\n }\n if (\"p\" in atomState) {\n throw atomState.p;\n }\n if (\"v\" in atomState) {\n return atomState.v;\n }\n throw new Error(\"no atom value\");\n }, [store, atom2]);\n const [[version2, value, atomFromUseReducer], rerenderIfChanged] = (0, import_react4.useReducer)((0, import_react4.useCallback)((prev, nextVersion) => {\n const nextValue = getAtomValue(nextVersion);\n if (Object.is(prev[1], nextValue) && prev[2] === atom2) {\n return prev;\n }\n return [nextVersion, nextValue, atom2];\n }, [getAtomValue, atom2]), void 0, () => {\n const initialVersion = void 0;\n const initialValue = getAtomValue(initialVersion);\n return [initialVersion, initialValue, atom2];\n });\n if (atomFromUseReducer !== atom2) {\n rerenderIfChanged(void 0);\n }\n (0, import_react4.useEffect)(() => {\n const unsubscribe = store[SUBSCRIBE_ATOM](atom2, rerenderIfChanged);\n rerenderIfChanged(void 0);\n return unsubscribe;\n }, [store, atom2]);\n (0, import_react4.useEffect)(() => {\n store[COMMIT_ATOM](atom2, version2);\n });\n const setAtom = (0, import_react4.useCallback)((update) => {\n if (isWritable(atom2)) {\n const write3 = (version22) => store[WRITE_ATOM](atom2, update, version22);\n return versionedWrite ? versionedWrite(write3) : write3();\n } else {\n throw new Error(\"not writable atom\");\n }\n }, [store, versionedWrite, atom2]);\n (0, import_react4.useDebugValue)(value);\n return [value, setAtom];\n}\n\n// node_modules/clsx/dist/clsx.m.js\nfunction toVal(mix) {\n var k4, y3, str = \"\";\n if (typeof mix === \"string\" || typeof mix === \"number\") {\n str += mix;\n } else if (typeof mix === \"object\") {\n if (Array.isArray(mix)) {\n for (k4 = 0; k4 < mix.length; k4++) {\n if (mix[k4]) {\n if (y3 = toVal(mix[k4])) {\n str && (str += \" \");\n str += y3;\n }\n }\n }\n } else {\n for (k4 in mix) {\n if (mix[k4]) {\n str && (str += \" \");\n str += k4;\n }\n }\n }\n }\n return str;\n}\nfunction clsx_m_default() {\n var i3 = 0, tmp, x4, str = \"\";\n while (i3 < arguments.length) {\n if (tmp = arguments[i3++]) {\n if (x4 = toVal(tmp)) {\n str && (str += \" \");\n str += x4;\n }\n }\n }\n return str;\n}\n\n// node_modules/@udecode/plate-core/dist/index.es.js\nvar import_server;\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nvar createNodeHOC = (HOC) => (Component2, props) => (childrenProps) => /* @__PURE__ */ import_react5.default.createElement(HOC, _extends({}, childrenProps, props), /* @__PURE__ */ import_react5.default.createElement(Component2, childrenProps));\nvar isArray2 = Array.isArray;\nvar isArray_1 = isArray2;\nfunction castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray_1(value) ? value : [value];\n}\nvar castArray_1 = castArray;\nvar createHOC = (withHOC2) => {\n return (components2, options) => {\n const _components = __spreadValues({}, components2);\n const optionsByKey = {};\n const optionsList = castArray_1(options);\n optionsList.forEach((_a) => {\n var _b = _a, {\n key,\n keys: keys3\n } = _b, opt = __objRest(_b, [\n \"key\",\n \"keys\"\n ]);\n const _keys = key ? [key] : keys3 !== null && keys3 !== void 0 ? keys3 : Object.keys(_components);\n _keys.forEach((_key) => {\n optionsByKey[_key] = __spreadValues(__spreadValues({}, optionsByKey[_key]), opt);\n });\n });\n Object.keys(optionsByKey).forEach((key) => {\n if (!_components[key])\n return;\n _components[key] = withHOC2(_components[key], optionsByKey[key]);\n });\n return _components;\n };\n};\nvar createNodesHOC = (HOC) => {\n return createHOC(createNodeHOC(HOC));\n};\nvar createNodesWithHOC = (withHOC2) => {\n return createHOC(withHOC2);\n};\nvar withHOC = (HOC, Component2, hocProps) => (props) => /* @__PURE__ */ import_react5.default.createElement(HOC, hocProps, /* @__PURE__ */ import_react5.default.createElement(Component2, props));\nvar withProps = (Component2, props) => (_props) => /* @__PURE__ */ import_react5.default.createElement(Component2, _extends({}, _props, props));\nvar withProviders = (...providers) => (WrappedComponent) => (props) => providers.reduceRight((acc, prov) => {\n let Provider2 = prov;\n if (Array.isArray(prov)) {\n [Provider2] = prov;\n return /* @__PURE__ */ import_react5.default.createElement(Provider2, prov[1], acc);\n }\n return /* @__PURE__ */ import_react5.default.createElement(Provider2, null, acc);\n}, /* @__PURE__ */ import_react5.default.createElement(WrappedComponent, props));\nvar match = (obj, predicate) => {\n if (!predicate)\n return true;\n if (typeof predicate === \"object\") {\n return Object.entries(predicate).every(([key, value]) => {\n const values2 = castArray_1(value);\n return values2.includes(obj[key]);\n });\n }\n return predicate(obj);\n};\nvar getQueryOptions = (editor, options) => {\n return __spreadProps(__spreadValues({}, options), {\n match: (n5) => match(n5, options.match) && (!(options !== null && options !== void 0 && options.block) || Editor.isBlock(editor, n5))\n });\n};\nvar findDescendant = (editor, options) => {\n try {\n const {\n match: _match,\n at = editor.selection,\n reverse = false,\n voids = false\n } = options;\n if (!at)\n return;\n let from;\n let to;\n if (Span.isSpan(at)) {\n [from, to] = at;\n } else if (Range.isRange(at)) {\n const first = Editor.path(editor, at, {\n edge: \"start\"\n });\n const last2 = Editor.path(editor, at, {\n edge: \"end\"\n });\n from = reverse ? last2 : first;\n to = reverse ? first : last2;\n }\n let root5 = [editor, []];\n if (Path.isPath(at)) {\n root5 = Editor.node(editor, at);\n }\n const nodeEntries = Node2.descendants(root5[0], {\n reverse,\n from,\n to,\n pass: ([n5]) => voids ? false : Editor.isVoid(editor, n5)\n });\n for (const [node, path] of nodeEntries) {\n if (match(node, _match)) {\n return [node, at.concat(path)];\n }\n }\n } catch (error) {\n return void 0;\n }\n};\nvar unhangRange = (editor, options = {}) => {\n const {\n at = editor.selection,\n voids,\n unhang = true\n } = options;\n if (Range.isRange(at) && unhang) {\n options.at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n};\nvar getNodes = (editor, options = {}) => {\n unhangRange(editor, options);\n return Editor.nodes(editor, getQueryOptions(editor, options));\n};\nvar findNode = (editor, options = {}) => {\n try {\n const nodeEntries = getNodes(editor, __spreadValues({\n at: editor.selection || []\n }, getQueryOptions(editor, options)));\n for (const [node, path] of nodeEntries) {\n return [node, path];\n }\n } catch (error) {\n return void 0;\n }\n};\nvar findNodePath = (editor, node) => {\n try {\n return ReactEditor.findPath(editor, node);\n } catch (e2) {\n }\n};\nvar getAbove = (editor, options = {}) => {\n return Editor.above(editor, getQueryOptions(editor, options));\n};\nvar getBlockAbove = (editor, options = {}) => getAbove(editor, __spreadProps(__spreadValues({}, options), {\n block: true\n}));\nvar getChildren = (nodeEntry) => {\n const [node, path] = nodeEntry;\n const children = node.children || [];\n return children.map((child, index7) => {\n const childPath = path.concat([index7]);\n return [child, childPath];\n });\n};\nvar getLastChild$1 = (nodeEntry) => {\n const [node, path] = nodeEntry;\n if (!node.children.length)\n return null;\n return [node.children[node.children.length - 1], path.concat([node.children.length - 1])];\n};\nvar getLastChildPath = (nodeEntry) => {\n const lastChild = getLastChild$1(nodeEntry);\n if (!lastChild)\n return nodeEntry[1].concat([-1]);\n return lastChild[1];\n};\nvar isLastChild = (parentEntry, childPath) => {\n const lastChildPath = getLastChildPath(parentEntry);\n return Path.equals(lastChildPath, childPath);\n};\nvar isElement2 = Element2.isElement;\nvar isAncestor = (node) => Editor.isEditor(node) || isElement2(node);\nvar getLastChild = (node, level) => {\n if (!(level + 1) || !isAncestor(node))\n return node;\n const {\n children\n } = node;\n const lastNode = children[children.length - 1];\n return getLastChild(lastNode, level - 1);\n};\nvar getLastNode = (editor, level) => {\n const {\n children\n } = editor;\n const lastNode = children[children.length - 1];\n if (!lastNode)\n return;\n const [, lastPath] = Editor.last(editor, []);\n return [getLastChild(lastNode, level - 1), lastPath.slice(0, level + 1)];\n};\nvar getMark = (editor, type) => {\n var _Editor$marks;\n if (!editor)\n return;\n return (_Editor$marks = Editor.marks(editor)) === null || _Editor$marks === void 0 ? void 0 : _Editor$marks[type];\n};\nvar getNextSiblingNodes = (ancestorEntry, path) => {\n const [ancestor, ancestorPath] = ancestorEntry;\n const leafIndex = path[ancestorPath.length];\n const siblings = [];\n if (leafIndex + 1 < ancestor.children.length) {\n for (let i3 = leafIndex + 1; i3 < ancestor.children.length; i3++) {\n siblings.push(ancestor.children[i3]);\n }\n }\n return siblings;\n};\nvar getNode = (editor, path) => {\n try {\n return Node2.get(editor, path);\n } catch (err) {\n return null;\n }\n};\nvar getParent = (editor, at, options) => {\n try {\n return Editor.parent(editor, at, options);\n } catch (err) {\n }\n};\nfunction arrayMap(array, iteratee) {\n var index7 = -1, length = array == null ? 0 : array.length, result = Array(length);\n while (++index7 < length) {\n result[index7] = iteratee(array[index7], index7, array);\n }\n return result;\n}\nvar _arrayMap = arrayMap;\nfunction listCacheClear2() {\n this.__data__ = [];\n this.size = 0;\n}\nvar _listCacheClear2 = listCacheClear2;\nfunction eq2(value, other) {\n return value === other || value !== value && other !== other;\n}\nvar eq_12 = eq2;\nfunction assocIndexOf2(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_12(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\nvar _assocIndexOf2 = assocIndexOf2;\nvar arrayProto2 = Array.prototype;\nvar splice2 = arrayProto2.splice;\nfunction listCacheDelete2(key) {\n var data = this.__data__, index7 = _assocIndexOf2(data, key);\n if (index7 < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index7 == lastIndex) {\n data.pop();\n } else {\n splice2.call(data, index7, 1);\n }\n --this.size;\n return true;\n}\nvar _listCacheDelete2 = listCacheDelete2;\nfunction listCacheGet2(key) {\n var data = this.__data__, index7 = _assocIndexOf2(data, key);\n return index7 < 0 ? void 0 : data[index7][1];\n}\nvar _listCacheGet2 = listCacheGet2;\nfunction listCacheHas2(key) {\n return _assocIndexOf2(this.__data__, key) > -1;\n}\nvar _listCacheHas2 = listCacheHas2;\nfunction listCacheSet2(key, value) {\n var data = this.__data__, index7 = _assocIndexOf2(data, key);\n if (index7 < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index7][1] = value;\n }\n return this;\n}\nvar _listCacheSet2 = listCacheSet2;\nfunction ListCache2(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n}\nListCache2.prototype.clear = _listCacheClear2;\nListCache2.prototype[\"delete\"] = _listCacheDelete2;\nListCache2.prototype.get = _listCacheGet2;\nListCache2.prototype.has = _listCacheHas2;\nListCache2.prototype.set = _listCacheSet2;\nvar _ListCache2 = ListCache2;\nfunction stackClear2() {\n this.__data__ = new _ListCache2();\n this.size = 0;\n}\nvar _stackClear2 = stackClear2;\nfunction stackDelete2(key) {\n var data = this.__data__, result = data[\"delete\"](key);\n this.size = data.size;\n return result;\n}\nvar _stackDelete2 = stackDelete2;\nfunction stackGet2(key) {\n return this.__data__.get(key);\n}\nvar _stackGet2 = stackGet2;\nfunction stackHas2(key) {\n return this.__data__.has(key);\n}\nvar _stackHas2 = stackHas2;\nvar commonjsGlobal2 = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nfunction unwrapExports(x4) {\n return x4 && x4.__esModule && Object.prototype.hasOwnProperty.call(x4, \"default\") ? x4[\"default\"] : x4;\n}\nfunction createCommonjsModule2(fn7, module2) {\n return module2 = { exports: {} }, fn7(module2, module2.exports), module2.exports;\n}\nvar freeGlobal2 = typeof commonjsGlobal2 == \"object\" && commonjsGlobal2 && commonjsGlobal2.Object === Object && commonjsGlobal2;\nvar _freeGlobal2 = freeGlobal2;\nvar freeSelf2 = typeof self == \"object\" && self && self.Object === Object && self;\nvar root2 = _freeGlobal2 || freeSelf2 || Function(\"return this\")();\nvar _root2 = root2;\nvar Symbol$1 = _root2.Symbol;\nvar _Symbol2 = Symbol$1;\nvar objectProto$g = Object.prototype;\nvar hasOwnProperty$d = objectProto$g.hasOwnProperty;\nvar nativeObjectToString$12 = objectProto$g.toString;\nvar symToStringTag$12 = _Symbol2 ? _Symbol2.toStringTag : void 0;\nfunction getRawTag2(value) {\n var isOwn = hasOwnProperty$d.call(value, symToStringTag$12), tag = value[symToStringTag$12];\n try {\n value[symToStringTag$12] = void 0;\n var unmasked = true;\n } catch (e2) {\n }\n var result = nativeObjectToString$12.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag$12] = tag;\n } else {\n delete value[symToStringTag$12];\n }\n }\n return result;\n}\nvar _getRawTag2 = getRawTag2;\nvar objectProto$f = Object.prototype;\nvar nativeObjectToString2 = objectProto$f.toString;\nfunction objectToString2(value) {\n return nativeObjectToString2.call(value);\n}\nvar _objectToString2 = objectToString2;\nvar nullTag2 = \"[object Null]\";\nvar undefinedTag2 = \"[object Undefined]\";\nvar symToStringTag2 = _Symbol2 ? _Symbol2.toStringTag : void 0;\nfunction baseGetTag2(value) {\n if (value == null) {\n return value === void 0 ? undefinedTag2 : nullTag2;\n }\n return symToStringTag2 && symToStringTag2 in Object(value) ? _getRawTag2(value) : _objectToString2(value);\n}\nvar _baseGetTag2 = baseGetTag2;\nfunction isObject$1(value) {\n var type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\nvar isObject_12 = isObject$1;\nvar asyncTag2 = \"[object AsyncFunction]\";\nvar funcTag$2 = \"[object Function]\";\nvar genTag$1 = \"[object GeneratorFunction]\";\nvar proxyTag2 = \"[object Proxy]\";\nfunction isFunction2(value) {\n if (!isObject_12(value)) {\n return false;\n }\n var tag = _baseGetTag2(value);\n return tag == funcTag$2 || tag == genTag$1 || tag == asyncTag2 || tag == proxyTag2;\n}\nvar isFunction_12 = isFunction2;\nvar coreJsData2 = _root2[\"__core-js_shared__\"];\nvar _coreJsData2 = coreJsData2;\nvar maskSrcKey2 = function() {\n var uid = /[^.]+$/.exec(_coreJsData2 && _coreJsData2.keys && _coreJsData2.keys.IE_PROTO || \"\");\n return uid ? \"Symbol(src)_1.\" + uid : \"\";\n}();\nfunction isMasked2(func) {\n return !!maskSrcKey2 && maskSrcKey2 in func;\n}\nvar _isMasked2 = isMasked2;\nvar funcProto$2 = Function.prototype;\nvar funcToString$2 = funcProto$2.toString;\nfunction toSource2(func) {\n if (func != null) {\n try {\n return funcToString$2.call(func);\n } catch (e2) {\n }\n try {\n return func + \"\";\n } catch (e2) {\n }\n }\n return \"\";\n}\nvar _toSource2 = toSource2;\nvar reRegExpChar2 = /[\\\\^$.*+?()[\\]{}|]/g;\nvar reIsHostCtor2 = /^\\[object .+?Constructor\\]$/;\nvar funcProto$12 = Function.prototype;\nvar objectProto$e = Object.prototype;\nvar funcToString$12 = funcProto$12.toString;\nvar hasOwnProperty$c = objectProto$e.hasOwnProperty;\nvar reIsNative2 = RegExp(\"^\" + funcToString$12.call(hasOwnProperty$c).replace(reRegExpChar2, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\");\nfunction baseIsNative2(value) {\n if (!isObject_12(value) || _isMasked2(value)) {\n return false;\n }\n var pattern = isFunction_12(value) ? reIsNative2 : reIsHostCtor2;\n return pattern.test(_toSource2(value));\n}\nvar _baseIsNative2 = baseIsNative2;\nfunction getValue2(object, key) {\n return object == null ? void 0 : object[key];\n}\nvar _getValue2 = getValue2;\nfunction getNative2(object, key) {\n var value = _getValue2(object, key);\n return _baseIsNative2(value) ? value : void 0;\n}\nvar _getNative2 = getNative2;\nvar Map3 = _getNative2(_root2, \"Map\");\nvar _Map2 = Map3;\nvar nativeCreate2 = _getNative2(Object, \"create\");\nvar _nativeCreate2 = nativeCreate2;\nfunction hashClear2() {\n this.__data__ = _nativeCreate2 ? _nativeCreate2(null) : {};\n this.size = 0;\n}\nvar _hashClear2 = hashClear2;\nfunction hashDelete2(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\nvar _hashDelete2 = hashDelete2;\nvar HASH_UNDEFINED$22 = \"__lodash_hash_undefined__\";\nvar objectProto$d = Object.prototype;\nvar hasOwnProperty$b = objectProto$d.hasOwnProperty;\nfunction hashGet2(key) {\n var data = this.__data__;\n if (_nativeCreate2) {\n var result = data[key];\n return result === HASH_UNDEFINED$22 ? void 0 : result;\n }\n return hasOwnProperty$b.call(data, key) ? data[key] : void 0;\n}\nvar _hashGet2 = hashGet2;\nvar objectProto$c = Object.prototype;\nvar hasOwnProperty$a = objectProto$c.hasOwnProperty;\nfunction hashHas2(key) {\n var data = this.__data__;\n return _nativeCreate2 ? data[key] !== void 0 : hasOwnProperty$a.call(data, key);\n}\nvar _hashHas2 = hashHas2;\nvar HASH_UNDEFINED$12 = \"__lodash_hash_undefined__\";\nfunction hashSet2(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = _nativeCreate2 && value === void 0 ? HASH_UNDEFINED$12 : value;\n return this;\n}\nvar _hashSet2 = hashSet2;\nfunction Hash2(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n}\nHash2.prototype.clear = _hashClear2;\nHash2.prototype[\"delete\"] = _hashDelete2;\nHash2.prototype.get = _hashGet2;\nHash2.prototype.has = _hashHas2;\nHash2.prototype.set = _hashSet2;\nvar _Hash2 = Hash2;\nfunction mapCacheClear2() {\n this.size = 0;\n this.__data__ = {\n \"hash\": new _Hash2(),\n \"map\": new (_Map2 || _ListCache2)(),\n \"string\": new _Hash2()\n };\n}\nvar _mapCacheClear2 = mapCacheClear2;\nfunction isKeyable2(value) {\n var type = typeof value;\n return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n}\nvar _isKeyable2 = isKeyable2;\nfunction getMapData2(map2, key) {\n var data = map2.__data__;\n return _isKeyable2(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n}\nvar _getMapData2 = getMapData2;\nfunction mapCacheDelete2(key) {\n var result = _getMapData2(this, key)[\"delete\"](key);\n this.size -= result ? 1 : 0;\n return result;\n}\nvar _mapCacheDelete2 = mapCacheDelete2;\nfunction mapCacheGet2(key) {\n return _getMapData2(this, key).get(key);\n}\nvar _mapCacheGet2 = mapCacheGet2;\nfunction mapCacheHas2(key) {\n return _getMapData2(this, key).has(key);\n}\nvar _mapCacheHas2 = mapCacheHas2;\nfunction mapCacheSet2(key, value) {\n var data = _getMapData2(this, key), size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\nvar _mapCacheSet2 = mapCacheSet2;\nfunction MapCache2(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n}\nMapCache2.prototype.clear = _mapCacheClear2;\nMapCache2.prototype[\"delete\"] = _mapCacheDelete2;\nMapCache2.prototype.get = _mapCacheGet2;\nMapCache2.prototype.has = _mapCacheHas2;\nMapCache2.prototype.set = _mapCacheSet2;\nvar _MapCache2 = MapCache2;\nvar LARGE_ARRAY_SIZE2 = 200;\nfunction stackSet2(key, value) {\n var data = this.__data__;\n if (data instanceof _ListCache2) {\n var pairs = data.__data__;\n if (!_Map2 || pairs.length < LARGE_ARRAY_SIZE2 - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new _MapCache2(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\nvar _stackSet2 = stackSet2;\nfunction Stack2(entries) {\n var data = this.__data__ = new _ListCache2(entries);\n this.size = data.size;\n}\nStack2.prototype.clear = _stackClear2;\nStack2.prototype[\"delete\"] = _stackDelete2;\nStack2.prototype.get = _stackGet2;\nStack2.prototype.has = _stackHas2;\nStack2.prototype.set = _stackSet2;\nvar _Stack = Stack2;\nvar HASH_UNDEFINED2 = \"__lodash_hash_undefined__\";\nfunction setCacheAdd2(value) {\n this.__data__.set(value, HASH_UNDEFINED2);\n return this;\n}\nvar _setCacheAdd2 = setCacheAdd2;\nfunction setCacheHas2(value) {\n return this.__data__.has(value);\n}\nvar _setCacheHas2 = setCacheHas2;\nfunction SetCache2(values2) {\n var index7 = -1, length = values2 == null ? 0 : values2.length;\n this.__data__ = new _MapCache2();\n while (++index7 < length) {\n this.add(values2[index7]);\n }\n}\nSetCache2.prototype.add = SetCache2.prototype.push = _setCacheAdd2;\nSetCache2.prototype.has = _setCacheHas2;\nvar _SetCache = SetCache2;\nfunction arraySome(array, predicate) {\n var index7 = -1, length = array == null ? 0 : array.length;\n while (++index7 < length) {\n if (predicate(array[index7], index7, array)) {\n return true;\n }\n }\n return false;\n}\nvar _arraySome = arraySome;\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\nvar _cacheHas = cacheHas;\nvar COMPARE_PARTIAL_FLAG$5 = 1;\nvar COMPARE_UNORDERED_FLAG$3 = 2;\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$5, arrLength = array.length, othLength = other.length;\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index7 = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG$3 ? new _SetCache() : void 0;\n stack.set(array, other);\n stack.set(other, array);\n while (++index7 < arrLength) {\n var arrValue = array[index7], othValue = other[index7];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index7, other, array, stack) : customizer(arrValue, othValue, index7, array, other, stack);\n }\n if (compared !== void 0) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n if (seen) {\n if (!_arraySome(other, function(othValue2, othIndex) {\n if (!_cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack[\"delete\"](array);\n stack[\"delete\"](other);\n return result;\n}\nvar _equalArrays = equalArrays;\nvar Uint8Array3 = _root2.Uint8Array;\nvar _Uint8Array = Uint8Array3;\nfunction mapToArray(map2) {\n var index7 = -1, result = Array(map2.size);\n map2.forEach(function(value, key) {\n result[++index7] = [key, value];\n });\n return result;\n}\nvar _mapToArray = mapToArray;\nfunction setToArray(set) {\n var index7 = -1, result = Array(set.size);\n set.forEach(function(value) {\n result[++index7] = value;\n });\n return result;\n}\nvar _setToArray = setToArray;\nvar COMPARE_PARTIAL_FLAG$4 = 1;\nvar COMPARE_UNORDERED_FLAG$2 = 2;\nvar boolTag$3 = \"[object Boolean]\";\nvar dateTag$3 = \"[object Date]\";\nvar errorTag$2 = \"[object Error]\";\nvar mapTag$5 = \"[object Map]\";\nvar numberTag$3 = \"[object Number]\";\nvar regexpTag$3 = \"[object RegExp]\";\nvar setTag$5 = \"[object Set]\";\nvar stringTag$3 = \"[object String]\";\nvar symbolTag$3 = \"[object Symbol]\";\nvar arrayBufferTag$3 = \"[object ArrayBuffer]\";\nvar dataViewTag$4 = \"[object DataView]\";\nvar symbolProto$2 = _Symbol2 ? _Symbol2.prototype : void 0;\nvar symbolValueOf$1 = symbolProto$2 ? symbolProto$2.valueOf : void 0;\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag$4:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag$3:\n if (object.byteLength != other.byteLength || !equalFunc(new _Uint8Array(object), new _Uint8Array(other))) {\n return false;\n }\n return true;\n case boolTag$3:\n case dateTag$3:\n case numberTag$3:\n return eq_12(+object, +other);\n case errorTag$2:\n return object.name == other.name && object.message == other.message;\n case regexpTag$3:\n case stringTag$3:\n return object == other + \"\";\n case mapTag$5:\n var convert = _mapToArray;\n case setTag$5:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4;\n convert || (convert = _setToArray);\n if (object.size != other.size && !isPartial) {\n return false;\n }\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG$2;\n stack.set(object, other);\n var result = _equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack[\"delete\"](object);\n return result;\n case symbolTag$3:\n if (symbolValueOf$1) {\n return symbolValueOf$1.call(object) == symbolValueOf$1.call(other);\n }\n }\n return false;\n}\nvar _equalByTag = equalByTag;\nfunction arrayPush(array, values2) {\n var index7 = -1, length = values2.length, offset3 = array.length;\n while (++index7 < length) {\n array[offset3 + index7] = values2[index7];\n }\n return array;\n}\nvar _arrayPush = arrayPush;\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray_1(object) ? result : _arrayPush(result, symbolsFunc(object));\n}\nvar _baseGetAllKeys = baseGetAllKeys;\nfunction arrayFilter(array, predicate) {\n var index7 = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n while (++index7 < length) {\n var value = array[index7];\n if (predicate(value, index7, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\nvar _arrayFilter = arrayFilter;\nfunction stubArray() {\n return [];\n}\nvar stubArray_1 = stubArray;\nvar objectProto$b2 = Object.prototype;\nvar propertyIsEnumerable$12 = objectProto$b2.propertyIsEnumerable;\nvar nativeGetSymbols$1 = Object.getOwnPropertySymbols;\nvar getSymbols = !nativeGetSymbols$1 ? stubArray_1 : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return _arrayFilter(nativeGetSymbols$1(object), function(symbol) {\n return propertyIsEnumerable$12.call(object, symbol);\n });\n};\nvar _getSymbols = getSymbols;\nfunction baseTimes(n5, iteratee) {\n var index7 = -1, result = Array(n5);\n while (++index7 < n5) {\n result[index7] = iteratee(index7);\n }\n return result;\n}\nvar _baseTimes = baseTimes;\nfunction isObjectLike2(value) {\n return value != null && typeof value == \"object\";\n}\nvar isObjectLike_12 = isObjectLike2;\nvar argsTag$3 = \"[object Arguments]\";\nfunction baseIsArguments2(value) {\n return isObjectLike_12(value) && _baseGetTag2(value) == argsTag$3;\n}\nvar _baseIsArguments2 = baseIsArguments2;\nvar objectProto$a2 = Object.prototype;\nvar hasOwnProperty$9 = objectProto$a2.hasOwnProperty;\nvar propertyIsEnumerable2 = objectProto$a2.propertyIsEnumerable;\nvar isArguments2 = _baseIsArguments2(function() {\n return arguments;\n}()) ? _baseIsArguments2 : function(value) {\n return isObjectLike_12(value) && hasOwnProperty$9.call(value, \"callee\") && !propertyIsEnumerable2.call(value, \"callee\");\n};\nvar isArguments_1 = isArguments2;\nfunction stubFalse2() {\n return false;\n}\nvar stubFalse_12 = stubFalse2;\nvar isBuffer_12 = createCommonjsModule2(function(module2, exports2) {\n var freeExports = exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && true && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var Buffer2 = moduleExports ? _root2.Buffer : void 0;\n var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;\n var isBuffer = nativeIsBuffer || stubFalse_12;\n module2.exports = isBuffer;\n});\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n return !!length && (type == \"number\" || type != \"symbol\" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n}\nvar _isIndex = isIndex;\nvar MAX_SAFE_INTEGER2 = 9007199254740991;\nfunction isLength2(value) {\n return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER2;\n}\nvar isLength_12 = isLength2;\nvar argsTag$22 = \"[object Arguments]\";\nvar arrayTag$2 = \"[object Array]\";\nvar boolTag$2 = \"[object Boolean]\";\nvar dateTag$2 = \"[object Date]\";\nvar errorTag$12 = \"[object Error]\";\nvar funcTag$12 = \"[object Function]\";\nvar mapTag$4 = \"[object Map]\";\nvar numberTag$2 = \"[object Number]\";\nvar objectTag$4 = \"[object Object]\";\nvar regexpTag$2 = \"[object RegExp]\";\nvar setTag$4 = \"[object Set]\";\nvar stringTag$2 = \"[object String]\";\nvar weakMapTag$2 = \"[object WeakMap]\";\nvar arrayBufferTag$2 = \"[object ArrayBuffer]\";\nvar dataViewTag$3 = \"[object DataView]\";\nvar float32Tag$2 = \"[object Float32Array]\";\nvar float64Tag$2 = \"[object Float64Array]\";\nvar int8Tag$2 = \"[object Int8Array]\";\nvar int16Tag$2 = \"[object Int16Array]\";\nvar int32Tag$2 = \"[object Int32Array]\";\nvar uint8Tag$2 = \"[object Uint8Array]\";\nvar uint8ClampedTag$2 = \"[object Uint8ClampedArray]\";\nvar uint16Tag$2 = \"[object Uint16Array]\";\nvar uint32Tag$2 = \"[object Uint32Array]\";\nvar typedArrayTags2 = {};\ntypedArrayTags2[float32Tag$2] = typedArrayTags2[float64Tag$2] = typedArrayTags2[int8Tag$2] = typedArrayTags2[int16Tag$2] = typedArrayTags2[int32Tag$2] = typedArrayTags2[uint8Tag$2] = typedArrayTags2[uint8ClampedTag$2] = typedArrayTags2[uint16Tag$2] = typedArrayTags2[uint32Tag$2] = true;\ntypedArrayTags2[argsTag$22] = typedArrayTags2[arrayTag$2] = typedArrayTags2[arrayBufferTag$2] = typedArrayTags2[boolTag$2] = typedArrayTags2[dataViewTag$3] = typedArrayTags2[dateTag$2] = typedArrayTags2[errorTag$12] = typedArrayTags2[funcTag$12] = typedArrayTags2[mapTag$4] = typedArrayTags2[numberTag$2] = typedArrayTags2[objectTag$4] = typedArrayTags2[regexpTag$2] = typedArrayTags2[setTag$4] = typedArrayTags2[stringTag$2] = typedArrayTags2[weakMapTag$2] = false;\nfunction baseIsTypedArray2(value) {\n return isObjectLike_12(value) && isLength_12(value.length) && !!typedArrayTags2[_baseGetTag2(value)];\n}\nvar _baseIsTypedArray2 = baseIsTypedArray2;\nfunction baseUnary2(func) {\n return function(value) {\n return func(value);\n };\n}\nvar _baseUnary2 = baseUnary2;\nvar _nodeUtil2 = createCommonjsModule2(function(module2, exports2) {\n var freeExports = exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && true && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var freeProcess = moduleExports && _freeGlobal2.process;\n var nodeUtil = function() {\n try {\n var types = freeModule && freeModule.require && freeModule.require(\"util\").types;\n if (types) {\n return types;\n }\n return freeProcess && freeProcess.binding && freeProcess.binding(\"util\");\n } catch (e2) {\n }\n }();\n module2.exports = nodeUtil;\n});\nvar nodeIsTypedArray2 = _nodeUtil2 && _nodeUtil2.isTypedArray;\nvar isTypedArray2 = nodeIsTypedArray2 ? _baseUnary2(nodeIsTypedArray2) : _baseIsTypedArray2;\nvar isTypedArray_1 = isTypedArray2;\nvar objectProto$92 = Object.prototype;\nvar hasOwnProperty$82 = objectProto$92.hasOwnProperty;\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray_1(value), isArg = !isArr && isArguments_1(value), isBuff = !isArr && !isArg && isBuffer_12(value), isType4 = !isArr && !isArg && !isBuff && isTypedArray_1(value), skipIndexes = isArr || isArg || isBuff || isType4, result = skipIndexes ? _baseTimes(value.length, String) : [], length = result.length;\n for (var key in value) {\n if ((inherited || hasOwnProperty$82.call(value, key)) && !(skipIndexes && (key == \"length\" || isBuff && (key == \"offset\" || key == \"parent\") || isType4 && (key == \"buffer\" || key == \"byteLength\" || key == \"byteOffset\") || _isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\nvar _arrayLikeKeys = arrayLikeKeys;\nvar objectProto$82 = Object.prototype;\nfunction isPrototype(value) {\n var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto$82;\n return value === proto;\n}\nvar _isPrototype = isPrototype;\nfunction overArg2(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\nvar _overArg2 = overArg2;\nvar nativeKeys2 = _overArg2(Object.keys, Object);\nvar _nativeKeys = nativeKeys2;\nvar objectProto$72 = Object.prototype;\nvar hasOwnProperty$72 = objectProto$72.hasOwnProperty;\nfunction baseKeys(object) {\n if (!_isPrototype(object)) {\n return _nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty$72.call(object, key) && key != \"constructor\") {\n result.push(key);\n }\n }\n return result;\n}\nvar _baseKeys = baseKeys;\nfunction isArrayLike(value) {\n return value != null && isLength_12(value.length) && !isFunction_12(value);\n}\nvar isArrayLike_1 = isArrayLike;\nfunction keys(object) {\n return isArrayLike_1(object) ? _arrayLikeKeys(object) : _baseKeys(object);\n}\nvar keys_1 = keys;\nfunction getAllKeys(object) {\n return _baseGetAllKeys(object, keys_1, _getSymbols);\n}\nvar _getAllKeys = getAllKeys;\nvar COMPARE_PARTIAL_FLAG$3 = 1;\nvar objectProto$62 = Object.prototype;\nvar hasOwnProperty$62 = objectProto$62.hasOwnProperty;\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, objProps = _getAllKeys(object), objLength = objProps.length, othProps = _getAllKeys(other), othLength = othProps.length;\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index7 = objLength;\n while (index7--) {\n var key = objProps[index7];\n if (!(isPartial ? key in other : hasOwnProperty$62.call(other, key))) {\n return false;\n }\n }\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n while (++index7 < objLength) {\n key = objProps[index7];\n var objValue = object[key], othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == \"constructor\");\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor, othCtor = other.constructor;\n if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack[\"delete\"](object);\n stack[\"delete\"](other);\n return result;\n}\nvar _equalObjects = equalObjects;\nvar DataView2 = _getNative2(_root2, \"DataView\");\nvar _DataView2 = DataView2;\nvar Promise$12 = _getNative2(_root2, \"Promise\");\nvar _Promise2 = Promise$12;\nvar Set3 = _getNative2(_root2, \"Set\");\nvar _Set2 = Set3;\nvar WeakMap$1 = _getNative2(_root2, \"WeakMap\");\nvar _WeakMap2 = WeakMap$1;\nvar mapTag$3 = \"[object Map]\";\nvar objectTag$3 = \"[object Object]\";\nvar promiseTag2 = \"[object Promise]\";\nvar setTag$3 = \"[object Set]\";\nvar weakMapTag$12 = \"[object WeakMap]\";\nvar dataViewTag$22 = \"[object DataView]\";\nvar dataViewCtorString2 = _toSource2(_DataView2);\nvar mapCtorString2 = _toSource2(_Map2);\nvar promiseCtorString2 = _toSource2(_Promise2);\nvar setCtorString2 = _toSource2(_Set2);\nvar weakMapCtorString2 = _toSource2(_WeakMap2);\nvar getTag2 = _baseGetTag2;\nif (_DataView2 && getTag2(new _DataView2(new ArrayBuffer(1))) != dataViewTag$22 || _Map2 && getTag2(new _Map2()) != mapTag$3 || _Promise2 && getTag2(_Promise2.resolve()) != promiseTag2 || _Set2 && getTag2(new _Set2()) != setTag$3 || _WeakMap2 && getTag2(new _WeakMap2()) != weakMapTag$12) {\n getTag2 = function(value) {\n var result = _baseGetTag2(value), Ctor = result == objectTag$3 ? value.constructor : void 0, ctorString = Ctor ? _toSource2(Ctor) : \"\";\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString2:\n return dataViewTag$22;\n case mapCtorString2:\n return mapTag$3;\n case promiseCtorString2:\n return promiseTag2;\n case setCtorString2:\n return setTag$3;\n case weakMapCtorString2:\n return weakMapTag$12;\n }\n }\n return result;\n };\n}\nvar _getTag = getTag2;\nvar COMPARE_PARTIAL_FLAG$2 = 1;\nvar argsTag$12 = \"[object Arguments]\";\nvar arrayTag$12 = \"[object Array]\";\nvar objectTag$22 = \"[object Object]\";\nvar objectProto$52 = Object.prototype;\nvar hasOwnProperty$52 = objectProto$52.hasOwnProperty;\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray_1(object), othIsArr = isArray_1(other), objTag = objIsArr ? arrayTag$12 : _getTag(object), othTag = othIsArr ? arrayTag$12 : _getTag(other);\n objTag = objTag == argsTag$12 ? objectTag$22 : objTag;\n othTag = othTag == argsTag$12 ? objectTag$22 : othTag;\n var objIsObj = objTag == objectTag$22, othIsObj = othTag == objectTag$22, isSameTag = objTag == othTag;\n if (isSameTag && isBuffer_12(object)) {\n if (!isBuffer_12(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new _Stack());\n return objIsArr || isTypedArray_1(object) ? _equalArrays(object, other, bitmask, customizer, equalFunc, stack) : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {\n var objIsWrapped = objIsObj && hasOwnProperty$52.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty$52.call(other, \"__wrapped__\");\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new _Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new _Stack());\n return _equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\nvar _baseIsEqualDeep = baseIsEqualDeep;\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike_12(value) && !isObjectLike_12(other)) {\n return value !== value && other !== other;\n }\n return _baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\nvar _baseIsEqual = baseIsEqual;\nvar COMPARE_PARTIAL_FLAG$1 = 1;\nvar COMPARE_UNORDERED_FLAG$1 = 2;\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index7 = matchData.length, length = index7, noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index7--) {\n var data = matchData[index7];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index7 < length) {\n data = matchData[index7];\n var key = data[0], objValue = object[key], srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === void 0 && !(key in object)) {\n return false;\n }\n } else {\n var stack = new _Stack();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === void 0 ? _baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n}\nvar _baseIsMatch = baseIsMatch;\nfunction isStrictComparable(value) {\n return value === value && !isObject_12(value);\n}\nvar _isStrictComparable = isStrictComparable;\nfunction getMatchData(object) {\n var result = keys_1(object), length = result.length;\n while (length--) {\n var key = result[length], value = object[key];\n result[length] = [key, value, _isStrictComparable(value)];\n }\n return result;\n}\nvar _getMatchData = getMatchData;\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));\n };\n}\nvar _matchesStrictComparable = matchesStrictComparable;\nfunction baseMatches(source) {\n var matchData = _getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return _matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || _baseIsMatch(object, source, matchData);\n };\n}\nvar _baseMatches = baseMatches;\nvar symbolTag$2 = \"[object Symbol]\";\nfunction isSymbol(value) {\n return typeof value == \"symbol\" || isObjectLike_12(value) && _baseGetTag2(value) == symbolTag$2;\n}\nvar isSymbol_1 = isSymbol;\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/;\nvar reIsPlainProp = /^\\w*$/;\nfunction isKey(value, object) {\n if (isArray_1(value)) {\n return false;\n }\n var type = typeof value;\n if (type == \"number\" || type == \"symbol\" || type == \"boolean\" || value == null || isSymbol_1(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\nvar _isKey = isKey;\nvar FUNC_ERROR_TEXT2 = \"Expected a function\";\nfunction memoize2(func, resolver) {\n if (typeof func != \"function\" || resolver != null && typeof resolver != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT2);\n }\n var memoized = function() {\n var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize2.Cache || _MapCache2)();\n return memoized;\n}\nmemoize2.Cache = _MapCache2;\nvar memoize_12 = memoize2;\nvar MAX_MEMOIZE_SIZE2 = 500;\nfunction memoizeCapped2(func) {\n var result = memoize_12(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE2) {\n cache.clear();\n }\n return key;\n });\n var cache = result.cache;\n return result;\n}\nvar _memoizeCapped2 = memoizeCapped2;\nvar rePropName2 = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\nvar reEscapeChar2 = /\\\\(\\\\)?/g;\nvar stringToPath2 = _memoizeCapped2(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46) {\n result.push(\"\");\n }\n string.replace(rePropName2, function(match2, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar2, \"$1\") : number || match2);\n });\n return result;\n});\nvar _stringToPath = stringToPath2;\nvar INFINITY$12 = 1 / 0;\nvar symbolProto$12 = _Symbol2 ? _Symbol2.prototype : void 0;\nvar symbolToString2 = symbolProto$12 ? symbolProto$12.toString : void 0;\nfunction baseToString(value) {\n if (typeof value == \"string\") {\n return value;\n }\n if (isArray_1(value)) {\n return _arrayMap(value, baseToString) + \"\";\n }\n if (isSymbol_1(value)) {\n return symbolToString2 ? symbolToString2.call(value) : \"\";\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY$12 ? \"-0\" : result;\n}\nvar _baseToString = baseToString;\nfunction toString(value) {\n return value == null ? \"\" : _baseToString(value);\n}\nvar toString_1 = toString;\nfunction castPath(value, object) {\n if (isArray_1(value)) {\n return value;\n }\n return _isKey(value, object) ? [value] : _stringToPath(toString_1(value));\n}\nvar _castPath = castPath;\nvar INFINITY2 = 1 / 0;\nfunction toKey(value) {\n if (typeof value == \"string\" || isSymbol_1(value)) {\n return value;\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY2 ? \"-0\" : result;\n}\nvar _toKey = toKey;\nfunction baseGet(object, path) {\n path = _castPath(path, object);\n var index7 = 0, length = path.length;\n while (object != null && index7 < length) {\n object = object[_toKey(path[index7++])];\n }\n return index7 && index7 == length ? object : void 0;\n}\nvar _baseGet = baseGet;\nfunction get(object, path, defaultValue) {\n var result = object == null ? void 0 : _baseGet(object, path);\n return result === void 0 ? defaultValue : result;\n}\nvar get_1 = get;\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\nvar _baseHasIn = baseHasIn;\nfunction hasPath(object, path, hasFunc) {\n path = _castPath(path, object);\n var index7 = -1, length = path.length, result = false;\n while (++index7 < length) {\n var key = _toKey(path[index7]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index7 != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength_12(length) && _isIndex(key, length) && (isArray_1(object) || isArguments_1(object));\n}\nvar _hasPath = hasPath;\nfunction hasIn(object, path) {\n return object != null && _hasPath(object, path, _baseHasIn);\n}\nvar hasIn_1 = hasIn;\nvar COMPARE_PARTIAL_FLAG = 1;\nvar COMPARE_UNORDERED_FLAG = 2;\nfunction baseMatchesProperty(path, srcValue) {\n if (_isKey(path) && _isStrictComparable(srcValue)) {\n return _matchesStrictComparable(_toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get_1(object, path);\n return objValue === void 0 && objValue === srcValue ? hasIn_1(object, path) : _baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\nvar _baseMatchesProperty = baseMatchesProperty;\nfunction identity(value) {\n return value;\n}\nvar identity_1 = identity;\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? void 0 : object[key];\n };\n}\nvar _baseProperty = baseProperty;\nfunction basePropertyDeep(path) {\n return function(object) {\n return _baseGet(object, path);\n };\n}\nvar _basePropertyDeep = basePropertyDeep;\nfunction property(path) {\n return _isKey(path) ? _baseProperty(_toKey(path)) : _basePropertyDeep(path);\n}\nvar property_1 = property;\nfunction baseIteratee(value) {\n if (typeof value == \"function\") {\n return value;\n }\n if (value == null) {\n return identity_1;\n }\n if (typeof value == \"object\") {\n return isArray_1(value) ? _baseMatchesProperty(value[0], value[1]) : _baseMatches(value);\n }\n return property_1(value);\n}\nvar _baseIteratee = baseIteratee;\nfunction createBaseFor2(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index7 = -1, iterable = Object(object), props = keysFunc(object), length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index7];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\nvar _createBaseFor2 = createBaseFor2;\nvar baseFor2 = _createBaseFor2();\nvar _baseFor = baseFor2;\nfunction baseForOwn(object, iteratee) {\n return object && _baseFor(object, iteratee, keys_1);\n}\nvar _baseForOwn = baseForOwn;\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike_1(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length, index7 = fromRight ? length : -1, iterable = Object(collection);\n while (fromRight ? index7-- : ++index7 < length) {\n if (iteratee(iterable[index7], index7, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\nvar _createBaseEach = createBaseEach;\nvar baseEach = _createBaseEach(_baseForOwn);\nvar _baseEach = baseEach;\nfunction baseMap(collection, iteratee) {\n var index7 = -1, result = isArrayLike_1(collection) ? Array(collection.length) : [];\n _baseEach(collection, function(value, key, collection2) {\n result[++index7] = iteratee(value, key, collection2);\n });\n return result;\n}\nvar _baseMap = baseMap;\nfunction map(collection, iteratee) {\n var func = isArray_1(collection) ? _arrayMap : _baseMap;\n return func(collection, _baseIteratee(iteratee));\n}\nvar map_1 = map;\nvar isRangeAcrossBlocks = (editor, _a = {}) => {\n var _b = _a, {\n at\n } = _b, options = __objRest(_b, [\n \"at\"\n ]);\n if (!at)\n at = editor.selection;\n if (!at)\n return false;\n const [start3, end3] = Range.edges(at);\n const startBlock = getBlockAbove(editor, __spreadValues({\n at: start3\n }, options));\n const endBlock = getBlockAbove(editor, __spreadValues({\n at: end3\n }, options));\n return startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n};\nvar getPointBefore = (editor, at, options) => {\n if (!options || !options.match && !options.matchString) {\n return Editor.before(editor, at, options);\n }\n const unitOffset = !options.unit || options.unit === \"offset\";\n const matchStrings = options.matchString ? castArray_1(options.matchString) : [\"\"];\n let point;\n matchStrings.some((matchString) => {\n let beforeAt = at;\n let previousBeforePoint = Editor.point(editor, at, {\n edge: \"end\"\n });\n const stackLength = matchString.length + 1;\n const stack = Array(stackLength);\n let count = 0;\n while (true) {\n var _options$match;\n const beforePoint = Editor.before(editor, beforeAt, options);\n if (!beforePoint)\n return;\n if (isRangeAcrossBlocks(editor, {\n at: {\n anchor: beforePoint,\n focus: previousBeforePoint\n }\n })) {\n return;\n }\n const beforeString = Editor.string(editor, {\n anchor: beforePoint,\n focus: previousBeforePoint\n });\n let beforeStringToMatch = beforeString;\n if (unitOffset && stackLength) {\n stack.unshift({\n point: beforePoint,\n text: beforeString\n });\n stack.pop();\n beforeStringToMatch = map_1(stack.slice(0, -1), \"text\").join(\"\");\n }\n if (matchString === beforeStringToMatch || (_options$match = options.match) !== null && _options$match !== void 0 && _options$match.call(options, {\n beforeString: beforeStringToMatch,\n beforePoint,\n at\n })) {\n if (options.afterMatch) {\n if (stackLength && unitOffset) {\n var _stack;\n point = (_stack = stack[stack.length - 1]) === null || _stack === void 0 ? void 0 : _stack.point;\n return !!point;\n }\n point = previousBeforePoint;\n return true;\n }\n point = beforePoint;\n return true;\n }\n previousBeforePoint = beforePoint;\n beforeAt = beforePoint;\n count += 1;\n if (!options.skipInvalid) {\n if (!matchString || count > matchString.length)\n return;\n }\n }\n });\n return point;\n};\nvar getPointFromLocation = (editor, {\n at = editor.selection,\n focus\n} = {}) => {\n let point;\n if (Range.isRange(at))\n point = !focus ? at.anchor : at.focus;\n if (Point.isPoint(at))\n point = at;\n if (Path.isPath(at))\n point = {\n path: at,\n offset: 0\n };\n return point;\n};\nvar queryNode = (entry, {\n filter: filter2,\n allow,\n exclude\n} = {}) => {\n if (!entry)\n return false;\n if (filter2 && !filter2(entry)) {\n return false;\n }\n if (allow) {\n const allows = castArray_1(allow);\n if (allows.length && !allows.includes(entry[0].type)) {\n return false;\n }\n }\n if (exclude) {\n const excludes = castArray_1(exclude);\n if (excludes.length && excludes.includes(entry[0].type)) {\n return false;\n }\n }\n return true;\n};\nvar getPreviousPath = (path) => {\n if (path.length === 0)\n return;\n const last2 = path[path.length - 1];\n if (last2 <= 0)\n return;\n return path.slice(0, -1).concat(last2 - 1);\n};\nvar getRangeBefore = (editor, at, options) => {\n const anchor = getPointBefore(editor, at, options);\n if (!anchor)\n return;\n const focus = Editor.point(editor, at, {\n edge: \"end\"\n });\n return {\n anchor,\n focus\n };\n};\nvar getRangeFromBlockStart = (editor, options = {}) => {\n var _getBlockAbove;\n const path = (_getBlockAbove = getBlockAbove(editor, options)) === null || _getBlockAbove === void 0 ? void 0 : _getBlockAbove[1];\n if (!path)\n return;\n const start3 = Editor.start(editor, path);\n const focus = getPointFromLocation(editor, options);\n if (!focus)\n return;\n return {\n anchor: start3,\n focus\n };\n};\nvar getText = (editor, at) => {\n var _ref;\n return (_ref = at && Editor.string(editor, at)) !== null && _ref !== void 0 ? _ref : \"\";\n};\nvar getSelectionText = (editor) => getText(editor, editor.selection);\nvar hasSingleChild = (node) => {\n if (Text.isText(node)) {\n return true;\n }\n return node.children.length === 1 && hasSingleChild(node.children[0]);\n};\nvar isAncestorEmpty = (editor, node) => !Node2.string(node) && !node.children.some((n5) => Editor.isInline(editor, n5));\nvar isBlockAboveEmpty = (editor) => {\n var _getBlockAbove;\n const block = (_getBlockAbove = getBlockAbove(editor)) === null || _getBlockAbove === void 0 ? void 0 : _getBlockAbove[0];\n if (!block)\n return false;\n return isAncestorEmpty(editor, block);\n};\nvar isText = Text.isText;\nvar isBlockTextEmptyAfterSelection = (editor) => {\n if (!editor.selection)\n return false;\n const blockAbove = getBlockAbove(editor);\n if (!blockAbove)\n return false;\n const cursor = editor.selection.focus;\n const selectionParentEntry = getParent(editor, editor.selection);\n if (!selectionParentEntry)\n return false;\n const [, selectionParentPath] = selectionParentEntry;\n if (!Editor.isEnd(editor, cursor, selectionParentPath))\n return false;\n const siblingNodes = getNextSiblingNodes(blockAbove, cursor.path);\n if (siblingNodes.length) {\n for (const siblingNode of siblingNodes) {\n if (isText(siblingNode) && siblingNode.text) {\n return false;\n }\n }\n } else {\n return Editor.isEnd(editor, cursor, blockAbove[1]);\n }\n return true;\n};\nvar isCollapsed = (range) => !!range && Range.isCollapsed(range);\nvar isEnd = (editor, point, at) => !!point && Editor.isEnd(editor, point, at);\nvar isExpanded = (range) => !!range && Range.isExpanded(range);\nvar isFirstChild = (path) => path[path.length - 1] === 0;\nfunction isUndefined(obj) {\n return typeof obj === \"undefined\";\n}\nfunction isNull(obj) {\n return obj === null;\n}\nfunction isUndefinedOrNull(obj) {\n return isUndefined(obj) || isNull(obj);\n}\nfunction isDefined(arg) {\n return !isUndefinedOrNull(arg);\n}\nvar isMarkActive = (editor, type) => {\n return isDefined(getMark(editor, type));\n};\nvar isSelectionAtBlockEnd = (editor) => {\n var _getBlockAbove, _editor$selection;\n const path = (_getBlockAbove = getBlockAbove(editor)) === null || _getBlockAbove === void 0 ? void 0 : _getBlockAbove[1];\n return !!path && isEnd(editor, (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.focus, path);\n};\nvar isStart = (editor, point, at) => !!point && Editor.isStart(editor, point, at);\nvar isSelectionAtBlockStart = (editor, options) => {\n var _getBlockAbove, _editor$selection;\n const path = (_getBlockAbove = getBlockAbove(editor, options)) === null || _getBlockAbove === void 0 ? void 0 : _getBlockAbove[1];\n return !!path && isStart(editor, (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.focus, path);\n};\nvar isSelectionExpanded = (editor) => isExpanded(editor.selection);\nvar getPluginsByKey = (editor) => {\n const plugins = {};\n if (editor !== null && editor !== void 0 && editor.pluginsByKey) {\n return editor.pluginsByKey;\n }\n return plugins;\n};\nvar getPlugin = (editor, key) => {\n var _getPluginsByKey$key;\n return (_getPluginsByKey$key = getPluginsByKey(editor)[key]) !== null && _getPluginsByKey$key !== void 0 ? _getPluginsByKey$key : {\n key\n };\n};\nvar getPluginType = (editor, key) => {\n var _ref, _getPlugin$type;\n return (_ref = (_getPlugin$type = getPlugin(editor, key).type) !== null && _getPlugin$type !== void 0 ? _getPlugin$type : key) !== null && _ref !== void 0 ? _ref : \"\";\n};\nvar isType = (editor, node, key) => {\n const keys3 = castArray_1(key);\n const types = [];\n keys3.forEach((_key) => types.push(getPluginType(editor, _key)));\n return types.includes(node === null || node === void 0 ? void 0 : node.type);\n};\nvar escapeRegExp = (text5) => {\n return text5.replace(/[-[\\]{}()*+?.,\\\\^$|#\\\\s]/g, \"\\\\$&\");\n};\nvar someNode = (editor, options) => {\n return !!findNode(editor, options);\n};\nvar unsetNodes = (editor, props, options = {}) => {\n return Transforms.unsetNodes(editor, props, options);\n};\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\nvar _apply = apply;\nvar nativeMax = Math.max;\nfunction overRest(func, start3, transform) {\n start3 = nativeMax(start3 === void 0 ? func.length - 1 : start3, 0);\n return function() {\n var args = arguments, index7 = -1, length = nativeMax(args.length - start3, 0), array = Array(length);\n while (++index7 < length) {\n array[index7] = args[start3 + index7];\n }\n index7 = -1;\n var otherArgs = Array(start3 + 1);\n while (++index7 < start3) {\n otherArgs[index7] = args[index7];\n }\n otherArgs[start3] = transform(array);\n return _apply(func, this, otherArgs);\n };\n}\nvar _overRest = overRest;\nfunction constant(value) {\n return function() {\n return value;\n };\n}\nvar constant_1 = constant;\nvar defineProperty2 = function() {\n try {\n var func = _getNative2(Object, \"defineProperty\");\n func({}, \"\", {});\n return func;\n } catch (e2) {\n }\n}();\nvar _defineProperty$1 = defineProperty2;\nvar baseSetToString = !_defineProperty$1 ? identity_1 : function(func, string) {\n return _defineProperty$1(func, \"toString\", {\n \"configurable\": true,\n \"enumerable\": false,\n \"value\": constant_1(string),\n \"writable\": true\n });\n};\nvar _baseSetToString = baseSetToString;\nvar HOT_COUNT = 800;\nvar HOT_SPAN = 16;\nvar nativeNow = Date.now;\nfunction shortOut(func) {\n var count = 0, lastCalled = 0;\n return function() {\n var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(void 0, arguments);\n };\n}\nvar _shortOut = shortOut;\nvar setToString = _shortOut(_baseSetToString);\nvar _setToString = setToString;\nfunction baseRest(func, start3) {\n return _setToString(_overRest(func, start3, identity_1), func + \"\");\n}\nvar _baseRest = baseRest;\nfunction isIterateeCall(value, index7, object) {\n if (!isObject_12(object)) {\n return false;\n }\n var type = typeof index7;\n if (type == \"number\" ? isArrayLike_1(object) && _isIndex(index7, object.length) : type == \"string\" && index7 in object) {\n return eq_12(object[index7], value);\n }\n return false;\n}\nvar _isIterateeCall = isIterateeCall;\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\nvar _nativeKeysIn = nativeKeysIn;\nvar objectProto$42 = Object.prototype;\nvar hasOwnProperty$42 = objectProto$42.hasOwnProperty;\nfunction baseKeysIn(object) {\n if (!isObject_12(object)) {\n return _nativeKeysIn(object);\n }\n var isProto = _isPrototype(object), result = [];\n for (var key in object) {\n if (!(key == \"constructor\" && (isProto || !hasOwnProperty$42.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\nvar _baseKeysIn = baseKeysIn;\nfunction keysIn(object) {\n return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object);\n}\nvar keysIn_1 = keysIn;\nvar objectProto$32 = Object.prototype;\nvar hasOwnProperty$32 = objectProto$32.hasOwnProperty;\nvar defaults = _baseRest(function(object, sources) {\n object = Object(object);\n var index7 = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : void 0;\n if (guard && _isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n while (++index7 < length) {\n var source = sources[index7];\n var props = keysIn_1(source);\n var propsIndex = -1;\n var propsLength = props.length;\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n if (value === void 0 || eq_12(value, objectProto$32[key]) && !hasOwnProperty$32.call(object, key)) {\n object[key] = source[key];\n }\n }\n }\n return object;\n});\nvar defaults_1 = defaults;\nvar applyDeepToNodes = ({\n node,\n source,\n apply: apply2,\n query\n}) => {\n const entry = [node, []];\n if (queryNode(entry, query)) {\n if (source instanceof Function) {\n apply2(node, source());\n } else {\n apply2(node, source);\n }\n }\n if (!isAncestor(node))\n return;\n node.children.forEach((child) => {\n applyDeepToNodes({\n node: child,\n source,\n apply: apply2,\n query\n });\n });\n};\nvar defaultsDeepToNodes = (options) => {\n applyDeepToNodes(__spreadProps(__spreadValues({}, options), {\n apply: defaults_1\n }));\n};\nvar mergeNodes = (editor, options = {}) => {\n Editor.withoutNormalizing(editor, () => {\n let {\n match: match2,\n at = editor.selection\n } = options;\n const {\n mergeNode,\n removeEmptyAncestor,\n hanging = false,\n voids = false,\n mode = \"lowest\"\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n if (Path.isPath(at)) {\n const [parent2] = Editor.parent(editor, at);\n match2 = (n5) => parent2.children.includes(n5);\n } else {\n match2 = (n5) => Editor.isBlock(editor, n5);\n }\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n const [, end3] = Range.edges(at);\n const pointRef = Editor.pointRef(editor, end3);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n }\n const _nodes = Editor.nodes(editor, {\n at,\n match: match2,\n voids,\n mode\n });\n const [current] = Array.from(_nodes);\n const prev = Editor.previous(editor, {\n at,\n match: match2,\n voids,\n mode\n });\n if (!current || !prev) {\n return;\n }\n const [node, path] = current;\n const [prevNode, prevPath] = prev;\n if (path.length === 0 || prevPath.length === 0) {\n return;\n }\n const newPath = Path.next(prevPath);\n const commonPath = Path.common(path, prevPath);\n const isPreviousSibling = Path.isSibling(path, prevPath);\n const _levels = Editor.levels(editor, {\n at: path\n });\n const levels = Array.from(_levels, ([n5]) => n5).slice(commonPath.length).slice(0, -1);\n const emptyAncestor = Editor.above(editor, {\n at: path,\n mode: \"highest\",\n match: (n5) => levels.includes(n5) && Element2.isElement(n5) && hasSingleChild(n5)\n });\n const emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1]);\n let properties;\n let position;\n if (Text.isText(node) && Text.isText(prevNode)) {\n const _a = node, {\n text: text5\n } = _a, rest = __objRest(_a, [\n \"text\"\n ]);\n position = prevNode.text.length;\n properties = rest;\n } else if (Element2.isElement(node) && Element2.isElement(prevNode)) {\n const _b = node, {\n children\n } = _b, rest = __objRest(_b, [\n \"children\"\n ]);\n position = prevNode.children.length;\n properties = rest;\n } else {\n throw new Error(`Cannot merge the node at path [${path}] with the previous sibling because it is not the same kind: ${JSON.stringify(node)} ${JSON.stringify(prevNode)}`);\n }\n if (!isPreviousSibling) {\n if (!mergeNode) {\n Transforms.moveNodes(editor, {\n at: path,\n to: newPath,\n voids\n });\n }\n }\n if (emptyRef) {\n if (!removeEmptyAncestor) {\n Transforms.removeNodes(editor, {\n at: emptyRef.current,\n voids\n });\n } else {\n const emptyPath = emptyRef.current;\n emptyPath && removeEmptyAncestor(editor, {\n at: emptyPath\n });\n }\n }\n if (mergeNode) {\n mergeNode(editor, {\n at: path,\n to: newPath\n });\n } else if (Element2.isElement(prevNode) && Editor.isEmpty(editor, prevNode) || Text.isText(prevNode) && prevNode.text === \"\") {\n Transforms.removeNodes(editor, {\n at: prevPath,\n voids\n });\n } else {\n editor.apply({\n type: \"merge_node\",\n path: newPath,\n position,\n properties\n });\n }\n if (emptyRef) {\n emptyRef.unref();\n }\n });\n};\nvar deleteFragment = (editor, options = {}) => {\n Editor.withoutNormalizing(editor, () => {\n const {\n reverse = false,\n unit = \"character\",\n distance = 1,\n voids = false\n } = options;\n let {\n at = editor.selection,\n hanging = false\n } = options;\n if (!at) {\n return;\n }\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n at = at.anchor;\n }\n if (Point.isPoint(at)) {\n const furthestVoid = Editor.void(editor, {\n at,\n mode: \"highest\"\n });\n if (!voids && furthestVoid) {\n const [, voidPath] = furthestVoid;\n at = voidPath;\n } else {\n const opts = {\n unit,\n distance\n };\n const target = reverse ? Editor.before(editor, at, opts) || Editor.start(editor, []) : Editor.after(editor, at, opts) || Editor.end(editor, []);\n at = {\n anchor: at,\n focus: target\n };\n hanging = true;\n }\n }\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, {\n at,\n voids\n });\n return;\n }\n if (Range.isCollapsed(at)) {\n return;\n }\n if (!hanging) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n let [start3, end3] = Range.edges(at);\n const startBlock = Editor.above(editor, {\n match: (n5) => Editor.isBlock(editor, n5),\n at: start3,\n voids\n });\n const endBlock = Editor.above(editor, {\n match: (n5) => Editor.isBlock(editor, n5),\n at: end3,\n voids\n });\n const isAcrossBlocks = startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n const isSingleText = Path.equals(start3.path, end3.path);\n const startVoid = voids ? null : Editor.void(editor, {\n at: start3,\n mode: \"highest\"\n });\n const endVoid = voids ? null : Editor.void(editor, {\n at: end3,\n mode: \"highest\"\n });\n if (startVoid) {\n const before = Editor.before(editor, start3);\n if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n start3 = before;\n }\n }\n if (endVoid) {\n const after = Editor.after(editor, end3);\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end3 = after;\n }\n }\n const matches = [];\n let lastPath;\n const _nodes = Editor.nodes(editor, {\n at,\n voids\n });\n for (const entry of _nodes) {\n const [node, path] = entry;\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue;\n }\n if (!voids && Editor.isVoid(editor, node) || !Path.isCommon(path, start3.path) && !Path.isCommon(path, end3.path)) {\n matches.push(entry);\n lastPath = path;\n }\n }\n const pathRefs = Array.from(matches, ([, p4]) => Editor.pathRef(editor, p4));\n const startRef = Editor.pointRef(editor, start3);\n const endRef = Editor.pointRef(editor, end3);\n if (!isSingleText && !startVoid) {\n const point2 = startRef.current;\n const [node] = Editor.leaf(editor, point2);\n const {\n path\n } = point2;\n const {\n offset: offset3\n } = start3;\n const text5 = node.text.slice(offset3);\n editor.apply({\n type: \"remove_text\",\n path,\n offset: offset3,\n text: text5\n });\n }\n for (const pathRef of pathRefs) {\n const path = pathRef.unref();\n Transforms.removeNodes(editor, {\n at: path,\n voids\n });\n }\n if (!endVoid) {\n const point2 = endRef.current;\n const [node] = Editor.leaf(editor, point2);\n const {\n path\n } = point2;\n const offset3 = isSingleText ? start3.offset : 0;\n const text5 = node.text.slice(offset3, end3.offset);\n editor.apply({\n type: \"remove_text\",\n path,\n offset: offset3,\n text: text5\n });\n }\n if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids\n });\n }\n const point = endRef.unref() || startRef.unref();\n if (options.at == null && point) {\n Transforms.select(editor, point);\n }\n });\n};\nvar insertNodes = (editor, props, options) => Transforms.insertNodes(editor, props, options);\nvar insertEmptyElement = (editor, type, options) => {\n insertNodes(editor, {\n type,\n children: [{\n text: \"\"\n }]\n }, getQueryOptions(editor, options));\n};\nvar moveChildren = (editor, {\n at,\n to,\n match: match2,\n fromStartIndex = 0\n}) => {\n let moved = 0;\n const parentPath = Path.isPath(at) ? at : at[1];\n const parentNode = Path.isPath(at) ? Node2.get(editor, parentPath) : at[0];\n if (!Editor.isBlock(editor, parentNode))\n return moved;\n for (let i3 = parentNode.children.length - 1; i3 >= fromStartIndex; i3--) {\n const childPath = [...parentPath, i3];\n const childNode = getNode(editor, childPath);\n if (!match2 || childNode && match2([childNode, childPath])) {\n Transforms.moveNodes(editor, {\n at: childPath,\n to\n });\n moved++;\n }\n }\n return moved;\n};\nvar removeMark = (editor, _a) => {\n var _b = _a, {\n key,\n at,\n shouldChange = true\n } = _b, rest = __objRest(_b, [\n \"key\",\n \"at\",\n \"shouldChange\"\n ]);\n const selection = at !== null && at !== void 0 ? at : editor.selection;\n key = castArray_1(key);\n if (selection) {\n if (Range.isRange(selection) && Range.isExpanded(selection)) {\n Transforms.unsetNodes(editor, key, __spreadValues({\n at: selection,\n match: Text.isText,\n split: true\n }, rest));\n } else if (editor.selection) {\n const marks3 = __spreadValues({}, Editor.marks(editor) || {});\n key.forEach((k4) => {\n delete marks3[k4];\n });\n editor.marks = marks3;\n shouldChange && editor.onChange();\n }\n }\n};\nvar setMarks = (editor, marks3, clear = []) => {\n if (!editor.selection)\n return;\n Editor.withoutNormalizing(editor, () => {\n const clears = castArray_1(clear);\n removeMark(editor, {\n key: clears\n });\n removeMark(editor, {\n key: Object.keys(marks3)\n });\n Object.keys(marks3).forEach((key) => {\n editor.addMark(key, marks3[key]);\n });\n });\n};\nvar setNodes = (editor, props, options) => Transforms.setNodes(editor, props, options);\nvar toggleMark = (editor, {\n key,\n clear\n}) => {\n if (!editor.selection)\n return;\n Editor.withoutNormalizing(editor, () => {\n const isActive = isMarkActive(editor, key);\n if (isActive) {\n removeMark(editor, {\n key\n });\n return;\n }\n if (clear) {\n const clears = castArray_1(clear);\n removeMark(editor, {\n key: clears\n });\n }\n editor.addMark(key, true);\n });\n};\nvar ELEMENT_DEFAULT = \"p\";\nvar toggleNodeType = (editor, options, editorNodesOptions) => {\n const {\n activeType,\n inactiveType = getPluginType(editor, ELEMENT_DEFAULT)\n } = options;\n if (!activeType || !editor.selection)\n return;\n const isActive = someNode(editor, __spreadProps(__spreadValues({}, editorNodesOptions), {\n match: {\n type: activeType\n }\n }));\n if (isActive && activeType === inactiveType)\n return;\n setNodes(editor, {\n type: isActive ? inactiveType : activeType\n });\n};\nvar unwrapNodes = (editor, options) => {\n Transforms.unwrapNodes(editor, getQueryOptions(editor, options));\n};\nvar wrapNodes = (editor, element4, options = {}) => {\n unhangRange(editor, options);\n Transforms.wrapNodes(editor, element4, options);\n};\nvar withoutNormalizing = (editor, fn7) => {\n let normalized = false;\n Editor.withoutNormalizing(editor, () => {\n normalized = !!fn7();\n });\n return normalized;\n};\nvar findHtmlParentElement = (el, nodeName) => {\n if (!el || el.nodeName === nodeName) {\n return el;\n }\n return findHtmlParentElement(el.parentElement, nodeName);\n};\nvar getHandler = (cb, ...args) => () => {\n cb === null || cb === void 0 ? void 0 : cb(...args);\n};\nvar getPreventDefaultHandler = (cb, ...args) => (event) => {\n event.preventDefault();\n cb === null || cb === void 0 ? void 0 : cb(...args);\n};\nvar protocolAndDomainRE = /^(?:\\w+:)?\\/\\/(\\S+)$/;\nvar localhostDomainRE = /^localhost[:?\\d]*(?:[^:?\\d]\\S*)?$/;\nvar nonLocalhostDomainRE = /^[^\\s.]+\\.\\S{2,}$/;\nvar isUrl = (string) => {\n if (typeof string !== \"string\") {\n return false;\n }\n const match2 = string.match(protocolAndDomainRE);\n if (!match2) {\n return false;\n }\n const everythingAfterProtocol = match2[1];\n if (!everythingAfterProtocol) {\n return false;\n }\n try {\n new URL(string);\n } catch (err) {\n return false;\n }\n return localhostDomainRE.test(everythingAfterProtocol) || nonLocalhostDomainRE.test(everythingAfterProtocol);\n};\nvar isInlineNode = (editor) => (node) => Text.isText(node) || editor.isInline(node);\nvar makeBlockLazy = (type) => () => ({\n type,\n children: []\n});\nvar hasDifferentChildNodes = (descendants, isInline) => {\n return descendants.some((descendant, index7, arr) => {\n const prevDescendant = arr[index7 - 1];\n if (index7 !== 0) {\n return isInline(descendant) !== isInline(prevDescendant);\n }\n return false;\n });\n};\nvar normalizeDifferentNodeTypes = (descendants, isInline, makeDefaultBlock) => {\n const hasDifferentNodes = hasDifferentChildNodes(descendants, isInline);\n const {\n fragment\n } = descendants.reduce((memo3, node) => {\n if (hasDifferentNodes && isInline(node)) {\n let block = memo3.precedingBlock;\n if (!block) {\n block = makeDefaultBlock();\n memo3.precedingBlock = block;\n memo3.fragment.push(block);\n }\n block.children.push(node);\n } else {\n memo3.fragment.push(node);\n memo3.precedingBlock = null;\n }\n return memo3;\n }, {\n fragment: [],\n precedingBlock: null\n });\n return fragment;\n};\nvar normalizeEmptyChildren = (descendants) => {\n if (!descendants.length) {\n return [{\n text: \"\"\n }];\n }\n return descendants;\n};\nvar normalize = (descendants, isInline, makeDefaultBlock) => {\n descendants = normalizeEmptyChildren(descendants);\n descendants = normalizeDifferentNodeTypes(descendants, isInline, makeDefaultBlock);\n descendants = descendants.map((node) => {\n if (isElement2(node)) {\n return __spreadProps(__spreadValues({}, node), {\n children: normalize(node.children, isInline, makeDefaultBlock)\n });\n }\n return node;\n });\n return descendants;\n};\nvar normalizeDescendantsToDocumentFragment = (editor, {\n descendants\n}) => {\n const isInline = isInlineNode(editor);\n const defaultType = getPluginType(editor, ELEMENT_DEFAULT);\n const makeDefaultBlock = makeBlockLazy(defaultType);\n return normalize(descendants, isInline, makeDefaultBlock);\n};\nvar lib = createCommonjsModule2(function(module2, exports2) {\n Object.defineProperty(exports2, \"__esModule\", {\n value: true\n });\n var IS_MAC = () => typeof window != \"undefined\" && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n var MODIFIERS = {\n alt: \"altKey\",\n control: \"ctrlKey\",\n meta: \"metaKey\",\n shift: \"shiftKey\"\n };\n var ALIASES = () => ({\n add: \"+\",\n break: \"pause\",\n cmd: \"meta\",\n command: \"meta\",\n ctl: \"control\",\n ctrl: \"control\",\n del: \"delete\",\n down: \"arrowdown\",\n esc: \"escape\",\n ins: \"insert\",\n left: \"arrowleft\",\n mod: IS_MAC() ? \"meta\" : \"control\",\n opt: \"alt\",\n option: \"alt\",\n return: \"enter\",\n right: \"arrowright\",\n space: \" \",\n spacebar: \" \",\n up: \"arrowup\",\n win: \"meta\",\n windows: \"meta\"\n });\n var CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n \" \": 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n \";\": 186,\n \"=\": 187,\n \",\": 188,\n \"-\": 189,\n \".\": 190,\n \"/\": 191,\n \"`\": 192,\n \"[\": 219,\n \"\\\\\": 220,\n \"]\": 221,\n \"'\": 222\n };\n for (var f3 = 1; f3 < 20; f3++) {\n CODES[\"f\" + f3] = 111 + f3;\n }\n function isHotkey6(hotkey, options, event) {\n if (options && !(\"byKey\" in options)) {\n event = options;\n options = null;\n }\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n var array = hotkey.map(function(string) {\n return parseHotkey(string, options);\n });\n var check = function check2(e2) {\n return array.some(function(object) {\n return compareHotkey(object, e2);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n }\n function isCodeHotkey(hotkey, event) {\n return isHotkey6(hotkey, event);\n }\n function isKeyHotkey2(hotkey, event) {\n return isHotkey6(hotkey, { byKey: true }, event);\n }\n function parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n hotkey = hotkey.replace(\"++\", \"+add\");\n var values2 = hotkey.split(\"+\");\n var length = values2.length;\n for (var k4 in MODIFIERS) {\n ret[MODIFIERS[k4]] = false;\n }\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = void 0;\n try {\n for (var _iterator = values2[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n var optional = value.endsWith(\"?\") && value.length > 1;\n if (optional) {\n value = value.slice(0, -1);\n }\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return ret;\n }\n function compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n if (expected == null) {\n continue;\n }\n if (key === \"key\" && event.key != null) {\n actual = event.key.toLowerCase();\n } else if (key === \"which\") {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n if (actual == null && expected === false) {\n continue;\n }\n if (actual !== expected) {\n return false;\n }\n }\n return true;\n }\n function toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n }\n function toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES()[name] || name;\n return name;\n }\n exports2.default = isHotkey6;\n exports2.isHotkey = isHotkey6;\n exports2.isCodeHotkey = isCodeHotkey;\n exports2.isKeyHotkey = isKeyHotkey2;\n exports2.parseHotkey = parseHotkey;\n exports2.compareHotkey = compareHotkey;\n exports2.toKeyCode = toKeyCode;\n exports2.toKeyName = toKeyName;\n});\nvar isHotkey = unwrapExports(lib);\nlib.isHotkey;\nlib.isCodeHotkey;\nlib.isKeyHotkey;\nlib.parseHotkey;\nlib.compareHotkey;\nlib.toKeyCode;\nlib.toKeyName;\nvar onKeyDownToggleElement = (editor, {\n type,\n options: {\n hotkey\n }\n}) => (e2) => {\n const defaultType = getPluginType(editor, ELEMENT_DEFAULT);\n if (!hotkey)\n return;\n const hotkeys = castArray_1(hotkey);\n for (const _hotkey of hotkeys) {\n if (isHotkey(_hotkey, e2)) {\n e2.preventDefault();\n toggleNodeType(editor, {\n activeType: type,\n inactiveType: defaultType\n });\n return;\n }\n }\n};\nvar onKeyDownToggleMark = (editor, {\n type,\n options: {\n hotkey,\n clear\n }\n}) => (e2) => {\n if (!hotkey)\n return;\n if (isHotkey(hotkey, e2)) {\n e2.preventDefault();\n toggleMark(editor, {\n key: type,\n clear\n });\n }\n};\nvar DefaultLeaf2 = (_a) => {\n var _b = _a, {\n attributes,\n children,\n text: text5,\n leaf,\n editor,\n nodeProps\n } = _b, props = __objRest(_b, [\n \"attributes\",\n \"children\",\n \"text\",\n \"leaf\",\n \"editor\",\n \"nodeProps\"\n ]);\n return /* @__PURE__ */ import_react5.default.createElement(\"span\", _extends({}, attributes, props), children);\n};\nfunction arrayEach(array, iteratee) {\n var index7 = -1, length = array == null ? 0 : array.length;\n while (++index7 < length) {\n if (iteratee(array[index7], index7, array) === false) {\n break;\n }\n }\n return array;\n}\nvar _arrayEach = arrayEach;\nfunction baseAssignValue(object, key, value) {\n if (key == \"__proto__\" && _defineProperty$1) {\n _defineProperty$1(object, key, {\n \"configurable\": true,\n \"enumerable\": true,\n \"value\": value,\n \"writable\": true\n });\n } else {\n object[key] = value;\n }\n}\nvar _baseAssignValue = baseAssignValue;\nvar objectProto$22 = Object.prototype;\nvar hasOwnProperty$22 = objectProto$22.hasOwnProperty;\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty$22.call(object, key) && eq_12(objValue, value)) || value === void 0 && !(key in object)) {\n _baseAssignValue(object, key, value);\n }\n}\nvar _assignValue = assignValue;\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index7 = -1, length = props.length;\n while (++index7 < length) {\n var key = props[index7];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;\n if (newValue === void 0) {\n newValue = source[key];\n }\n if (isNew) {\n _baseAssignValue(object, key, newValue);\n } else {\n _assignValue(object, key, newValue);\n }\n }\n return object;\n}\nvar _copyObject = copyObject;\nfunction baseAssign(object, source) {\n return object && _copyObject(source, keys_1(source), object);\n}\nvar _baseAssign = baseAssign;\nfunction baseAssignIn(object, source) {\n return object && _copyObject(source, keysIn_1(source), object);\n}\nvar _baseAssignIn = baseAssignIn;\nvar _cloneBuffer = createCommonjsModule2(function(module2, exports2) {\n var freeExports = exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && true && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var Buffer2 = moduleExports ? _root2.Buffer : void 0, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n }\n module2.exports = cloneBuffer;\n});\nfunction copyArray(source, array) {\n var index7 = -1, length = source.length;\n array || (array = Array(length));\n while (++index7 < length) {\n array[index7] = source[index7];\n }\n return array;\n}\nvar _copyArray = copyArray;\nfunction copySymbols(source, object) {\n return _copyObject(source, _getSymbols(source), object);\n}\nvar _copySymbols = copySymbols;\nvar getPrototype = _overArg2(Object.getPrototypeOf, Object);\nvar _getPrototype = getPrototype;\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\nvar getSymbolsIn = !nativeGetSymbols ? stubArray_1 : function(object) {\n var result = [];\n while (object) {\n _arrayPush(result, _getSymbols(object));\n object = _getPrototype(object);\n }\n return result;\n};\nvar _getSymbolsIn = getSymbolsIn;\nfunction copySymbolsIn(source, object) {\n return _copyObject(source, _getSymbolsIn(source), object);\n}\nvar _copySymbolsIn = copySymbolsIn;\nfunction getAllKeysIn(object) {\n return _baseGetAllKeys(object, keysIn_1, _getSymbolsIn);\n}\nvar _getAllKeysIn = getAllKeysIn;\nvar objectProto$12 = Object.prototype;\nvar hasOwnProperty$12 = objectProto$12.hasOwnProperty;\nfunction initCloneArray(array) {\n var length = array.length, result = new array.constructor(length);\n if (length && typeof array[0] == \"string\" && hasOwnProperty$12.call(array, \"index\")) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\nvar _initCloneArray = initCloneArray;\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new _Uint8Array(result).set(new _Uint8Array(arrayBuffer));\n return result;\n}\nvar _cloneArrayBuffer = cloneArrayBuffer;\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? _cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\nvar _cloneDataView = cloneDataView;\nvar reFlags = /\\w*$/;\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\nvar _cloneRegExp = cloneRegExp;\nvar symbolProto2 = _Symbol2 ? _Symbol2.prototype : void 0;\nvar symbolValueOf2 = symbolProto2 ? symbolProto2.valueOf : void 0;\nfunction cloneSymbol(symbol) {\n return symbolValueOf2 ? Object(symbolValueOf2.call(symbol)) : {};\n}\nvar _cloneSymbol = cloneSymbol;\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? _cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\nvar _cloneTypedArray = cloneTypedArray;\nvar boolTag$12 = \"[object Boolean]\";\nvar dateTag$12 = \"[object Date]\";\nvar mapTag$22 = \"[object Map]\";\nvar numberTag$12 = \"[object Number]\";\nvar regexpTag$12 = \"[object RegExp]\";\nvar setTag$22 = \"[object Set]\";\nvar stringTag$12 = \"[object String]\";\nvar symbolTag$1 = \"[object Symbol]\";\nvar arrayBufferTag$12 = \"[object ArrayBuffer]\";\nvar dataViewTag$1 = \"[object DataView]\";\nvar float32Tag$1 = \"[object Float32Array]\";\nvar float64Tag$1 = \"[object Float64Array]\";\nvar int8Tag$1 = \"[object Int8Array]\";\nvar int16Tag$1 = \"[object Int16Array]\";\nvar int32Tag$1 = \"[object Int32Array]\";\nvar uint8Tag$1 = \"[object Uint8Array]\";\nvar uint8ClampedTag$1 = \"[object Uint8ClampedArray]\";\nvar uint16Tag$1 = \"[object Uint16Array]\";\nvar uint32Tag$1 = \"[object Uint32Array]\";\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag$12:\n return _cloneArrayBuffer(object);\n case boolTag$12:\n case dateTag$12:\n return new Ctor(+object);\n case dataViewTag$1:\n return _cloneDataView(object, isDeep);\n case float32Tag$1:\n case float64Tag$1:\n case int8Tag$1:\n case int16Tag$1:\n case int32Tag$1:\n case uint8Tag$1:\n case uint8ClampedTag$1:\n case uint16Tag$1:\n case uint32Tag$1:\n return _cloneTypedArray(object, isDeep);\n case mapTag$22:\n return new Ctor();\n case numberTag$12:\n case stringTag$12:\n return new Ctor(object);\n case regexpTag$12:\n return _cloneRegExp(object);\n case setTag$22:\n return new Ctor();\n case symbolTag$1:\n return _cloneSymbol(object);\n }\n}\nvar _initCloneByTag = initCloneByTag;\nvar objectCreate = Object.create;\nvar baseCreate = function() {\n function object() {\n }\n return function(proto) {\n if (!isObject_12(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object();\n object.prototype = void 0;\n return result;\n };\n}();\nvar _baseCreate = baseCreate;\nfunction initCloneObject(object) {\n return typeof object.constructor == \"function\" && !_isPrototype(object) ? _baseCreate(_getPrototype(object)) : {};\n}\nvar _initCloneObject = initCloneObject;\nvar mapTag$1 = \"[object Map]\";\nfunction baseIsMap(value) {\n return isObjectLike_12(value) && _getTag(value) == mapTag$1;\n}\nvar _baseIsMap = baseIsMap;\nvar nodeIsMap = _nodeUtil2 && _nodeUtil2.isMap;\nvar isMap = nodeIsMap ? _baseUnary2(nodeIsMap) : _baseIsMap;\nvar isMap_1 = isMap;\nvar setTag$1 = \"[object Set]\";\nfunction baseIsSet(value) {\n return isObjectLike_12(value) && _getTag(value) == setTag$1;\n}\nvar _baseIsSet = baseIsSet;\nvar nodeIsSet = _nodeUtil2 && _nodeUtil2.isSet;\nvar isSet = nodeIsSet ? _baseUnary2(nodeIsSet) : _baseIsSet;\nvar isSet_1 = isSet;\nvar CLONE_DEEP_FLAG$2 = 1;\nvar CLONE_FLAT_FLAG$1 = 2;\nvar CLONE_SYMBOLS_FLAG$2 = 4;\nvar argsTag = \"[object Arguments]\";\nvar arrayTag = \"[object Array]\";\nvar boolTag = \"[object Boolean]\";\nvar dateTag = \"[object Date]\";\nvar errorTag = \"[object Error]\";\nvar funcTag2 = \"[object Function]\";\nvar genTag2 = \"[object GeneratorFunction]\";\nvar mapTag2 = \"[object Map]\";\nvar numberTag = \"[object Number]\";\nvar objectTag$12 = \"[object Object]\";\nvar regexpTag = \"[object RegExp]\";\nvar setTag2 = \"[object Set]\";\nvar stringTag = \"[object String]\";\nvar symbolTag = \"[object Symbol]\";\nvar weakMapTag2 = \"[object WeakMap]\";\nvar arrayBufferTag = \"[object ArrayBuffer]\";\nvar dataViewTag2 = \"[object DataView]\";\nvar float32Tag2 = \"[object Float32Array]\";\nvar float64Tag2 = \"[object Float64Array]\";\nvar int8Tag2 = \"[object Int8Array]\";\nvar int16Tag2 = \"[object Int16Array]\";\nvar int32Tag2 = \"[object Int32Array]\";\nvar uint8Tag2 = \"[object Uint8Array]\";\nvar uint8ClampedTag2 = \"[object Uint8ClampedArray]\";\nvar uint16Tag2 = \"[object Uint16Array]\";\nvar uint32Tag2 = \"[object Uint32Array]\";\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag2] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag2] = cloneableTags[float64Tag2] = cloneableTags[int8Tag2] = cloneableTags[int16Tag2] = cloneableTags[int32Tag2] = cloneableTags[mapTag2] = cloneableTags[numberTag] = cloneableTags[objectTag$12] = cloneableTags[regexpTag] = cloneableTags[setTag2] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag2] = cloneableTags[uint8ClampedTag2] = cloneableTags[uint16Tag2] = cloneableTags[uint32Tag2] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag2] = cloneableTags[weakMapTag2] = false;\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result, isDeep = bitmask & CLONE_DEEP_FLAG$2, isFlat = bitmask & CLONE_FLAT_FLAG$1, isFull = bitmask & CLONE_SYMBOLS_FLAG$2;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== void 0) {\n return result;\n }\n if (!isObject_12(value)) {\n return value;\n }\n var isArr = isArray_1(value);\n if (isArr) {\n result = _initCloneArray(value);\n if (!isDeep) {\n return _copyArray(value, result);\n }\n } else {\n var tag = _getTag(value), isFunc = tag == funcTag2 || tag == genTag2;\n if (isBuffer_12(value)) {\n return _cloneBuffer(value, isDeep);\n }\n if (tag == objectTag$12 || tag == argsTag || isFunc && !object) {\n result = isFlat || isFunc ? {} : _initCloneObject(value);\n if (!isDeep) {\n return isFlat ? _copySymbolsIn(value, _baseAssignIn(result, value)) : _copySymbols(value, _baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = _initCloneByTag(value, tag, isDeep);\n }\n }\n stack || (stack = new _Stack());\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n if (isSet_1(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap_1(value)) {\n value.forEach(function(subValue, key2) {\n result.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));\n });\n }\n var keysFunc = isFull ? isFlat ? _getAllKeysIn : _getAllKeys : isFlat ? keysIn_1 : keys_1;\n var props = isArr ? void 0 : keysFunc(value);\n _arrayEach(props || value, function(subValue, key2) {\n if (props) {\n key2 = subValue;\n subValue = value[key2];\n }\n _assignValue(result, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));\n });\n return result;\n}\nvar _baseClone = baseClone;\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : void 0;\n}\nvar last_1 = last;\nfunction baseSlice(array, start3, end3) {\n var index7 = -1, length = array.length;\n if (start3 < 0) {\n start3 = -start3 > length ? 0 : length + start3;\n }\n end3 = end3 > length ? length : end3;\n if (end3 < 0) {\n end3 += length;\n }\n length = start3 > end3 ? 0 : end3 - start3 >>> 0;\n start3 >>>= 0;\n var result = Array(length);\n while (++index7 < length) {\n result[index7] = array[index7 + start3];\n }\n return result;\n}\nvar _baseSlice = baseSlice;\nfunction parent(object, path) {\n return path.length < 2 ? object : _baseGet(object, _baseSlice(path, 0, -1));\n}\nvar _parent = parent;\nfunction baseUnset(object, path) {\n path = _castPath(path, object);\n object = _parent(object, path);\n return object == null || delete object[_toKey(last_1(path))];\n}\nvar _baseUnset = baseUnset;\nvar objectTag = \"[object Object]\";\nvar funcProto2 = Function.prototype;\nvar objectProto2 = Object.prototype;\nvar funcToString2 = funcProto2.toString;\nvar hasOwnProperty2 = objectProto2.hasOwnProperty;\nvar objectCtorString = funcToString2.call(Object);\nfunction isPlainObject$1(value) {\n if (!isObjectLike_12(value) || _baseGetTag2(value) != objectTag) {\n return false;\n }\n var proto = _getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty2.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor == \"function\" && Ctor instanceof Ctor && funcToString2.call(Ctor) == objectCtorString;\n}\nvar isPlainObject_1 = isPlainObject$1;\nfunction customOmitClone(value) {\n return isPlainObject_1(value) ? void 0 : value;\n}\nvar _customOmitClone = customOmitClone;\nvar spreadableSymbol = _Symbol2 ? _Symbol2.isConcatSpreadable : void 0;\nfunction isFlattenable(value) {\n return isArray_1(value) || isArguments_1(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\nvar _isFlattenable = isFlattenable;\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index7 = -1, length = array.length;\n predicate || (predicate = _isFlattenable);\n result || (result = []);\n while (++index7 < length) {\n var value = array[index7];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n _arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\nvar _baseFlatten = baseFlatten;\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? _baseFlatten(array, 1) : [];\n}\nvar flatten_1 = flatten;\nfunction flatRest(func) {\n return _setToString(_overRest(func, void 0, flatten_1), func + \"\");\n}\nvar _flatRest = flatRest;\nvar CLONE_DEEP_FLAG$1 = 1;\nvar CLONE_FLAT_FLAG = 2;\nvar CLONE_SYMBOLS_FLAG$1 = 4;\nvar omit = _flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = _arrayMap(paths, function(path) {\n path = _castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n _copyObject(object, _getAllKeysIn(object), result);\n if (isDeep) {\n result = _baseClone(result, CLONE_DEEP_FLAG$1 | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG$1, _customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n _baseUnset(result, paths[length]);\n }\n return result;\n});\nvar omit_1 = omit;\nvar eventEditorStore = createStore3(\"event-editor\")({\n blur: null,\n focus: null,\n last: null\n});\nvar eventEditorActions = eventEditorStore.set;\nvar eventEditorSelectors = eventEditorStore.get;\nvar useEventEditorSelectors = eventEditorStore.use;\nfunction assignMergeValue(object, key, value) {\n if (value !== void 0 && !eq_12(object[key], value) || value === void 0 && !(key in object)) {\n _baseAssignValue(object, key, value);\n }\n}\nvar _assignMergeValue = assignMergeValue;\nfunction isArrayLikeObject(value) {\n return isObjectLike_12(value) && isArrayLike_1(value);\n}\nvar isArrayLikeObject_1 = isArrayLikeObject;\nfunction safeGet(object, key) {\n if (key === \"constructor\" && typeof object[key] === \"function\") {\n return;\n }\n if (key == \"__proto__\") {\n return;\n }\n return object[key];\n}\nvar _safeGet = safeGet;\nfunction toPlainObject(value) {\n return _copyObject(value, keysIn_1(value));\n}\nvar toPlainObject_1 = toPlainObject;\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = _safeGet(object, key), srcValue = _safeGet(source, key), stacked = stack.get(srcValue);\n if (stacked) {\n _assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer ? customizer(objValue, srcValue, key + \"\", object, source, stack) : void 0;\n var isCommon = newValue === void 0;\n if (isCommon) {\n var isArr = isArray_1(srcValue), isBuff = !isArr && isBuffer_12(srcValue), isTyped = !isArr && !isBuff && isTypedArray_1(srcValue);\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray_1(objValue)) {\n newValue = objValue;\n } else if (isArrayLikeObject_1(objValue)) {\n newValue = _copyArray(objValue);\n } else if (isBuff) {\n isCommon = false;\n newValue = _cloneBuffer(srcValue, true);\n } else if (isTyped) {\n isCommon = false;\n newValue = _cloneTypedArray(srcValue, true);\n } else {\n newValue = [];\n }\n } else if (isPlainObject_1(srcValue) || isArguments_1(srcValue)) {\n newValue = objValue;\n if (isArguments_1(objValue)) {\n newValue = toPlainObject_1(objValue);\n } else if (!isObject_12(objValue) || isFunction_12(objValue)) {\n newValue = _initCloneObject(srcValue);\n }\n } else {\n isCommon = false;\n }\n }\n if (isCommon) {\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack[\"delete\"](srcValue);\n }\n _assignMergeValue(object, key, newValue);\n}\nvar _baseMergeDeep = baseMergeDeep;\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n _baseFor(source, function(srcValue, key) {\n stack || (stack = new _Stack());\n if (isObject_12(srcValue)) {\n _baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n } else {\n var newValue = customizer ? customizer(_safeGet(object, key), srcValue, key + \"\", object, source, stack) : void 0;\n if (newValue === void 0) {\n newValue = srcValue;\n }\n _assignMergeValue(object, key, newValue);\n }\n }, keysIn_1);\n}\nvar _baseMerge = baseMerge;\nfunction customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject_12(objValue) && isObject_12(srcValue)) {\n stack.set(srcValue, objValue);\n _baseMerge(objValue, srcValue, void 0, customDefaultsMerge, stack);\n stack[\"delete\"](srcValue);\n }\n return objValue;\n}\nvar _customDefaultsMerge = customDefaultsMerge;\nfunction createAssigner(assigner) {\n return _baseRest(function(object, sources) {\n var index7 = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;\n customizer = assigner.length > 3 && typeof customizer == \"function\" ? (length--, customizer) : void 0;\n if (guard && _isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? void 0 : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index7 < length) {\n var source = sources[index7];\n if (source) {\n assigner(object, source, index7, customizer);\n }\n }\n return object;\n });\n}\nvar _createAssigner = createAssigner;\nvar mergeWith = _createAssigner(function(object, source, srcIndex, customizer) {\n _baseMerge(object, source, srcIndex, customizer);\n});\nvar mergeWith_1 = mergeWith;\nvar defaultsDeep = _baseRest(function(args) {\n args.push(void 0, _customDefaultsMerge);\n return _apply(mergeWith_1, void 0, args);\n});\nvar defaultsDeep_1 = defaultsDeep;\nvar overridePluginsByKey = (plugin2, overrideByKey2 = {}, nested) => {\n var _overrideByKey$plugin;\n if (overrideByKey2[plugin2.key]) {\n const _a = overrideByKey2[plugin2.key], {\n plugins: pluginOverridesPlugins,\n then: pluginOverridesThen\n } = _a, pluginOverrides = __objRest(_a, [\n \"plugins\",\n \"then\"\n ]);\n plugin2 = defaultsDeep_1(pluginOverrides, plugin2);\n if (!nested) {\n pluginOverridesPlugins === null || pluginOverridesPlugins === void 0 ? void 0 : pluginOverridesPlugins.forEach((pOverrides) => {\n if (!plugin2.plugins)\n plugin2.plugins = [];\n const found = plugin2.plugins.find((p4) => p4.key === pOverrides.key);\n if (!found)\n plugin2.plugins.push(pOverrides);\n });\n }\n }\n if (plugin2.plugins) {\n plugin2.plugins = plugin2.plugins.map((p4) => overridePluginsByKey(p4, overrideByKey2, true));\n }\n const {\n then\n } = plugin2;\n if (then) {\n plugin2.then = (editor, p4) => {\n const pluginThen = __spreadValues({\n key: plugin2.key\n }, then(editor, p4));\n return defaultsDeep_1(overridePluginsByKey(pluginThen, overrideByKey2), pluginThen);\n };\n } else if ((_overrideByKey$plugin = overrideByKey2[plugin2.key]) !== null && _overrideByKey$plugin !== void 0 && _overrideByKey$plugin.then) {\n plugin2.then = overrideByKey2[plugin2.key].then;\n }\n return plugin2;\n};\nvar createPluginFactory = (defaultPlugin) => (override, overrideByKey2 = {}) => {\n overrideByKey2[defaultPlugin.key] = override;\n return overridePluginsByKey(__spreadValues({}, defaultPlugin), overrideByKey2);\n};\nvar KEY_DESERIALIZE_AST = \"deserializeAst\";\nvar createDeserializeAstPlugin = createPluginFactory({\n key: KEY_DESERIALIZE_AST,\n editor: {\n insertData: {\n format: \"application/x-slate-fragment\",\n getFragment: ({\n data\n }) => {\n const decoded = decodeURIComponent(window.atob(data));\n return JSON.parse(decoded);\n }\n }\n }\n});\nvar KEY_EVENT_EDITOR = \"event-editor\";\nvar createEventEditorPlugin = createPluginFactory({\n key: KEY_EVENT_EDITOR,\n handlers: {\n onFocus: (editor) => () => {\n eventEditorActions.focus(editor.id);\n },\n onBlur: (editor) => () => {\n const focus = eventEditorSelectors.focus();\n if (focus === editor.id) {\n eventEditorActions.focus(null);\n }\n eventEditorActions.blur(editor.id);\n }\n }\n});\nvar createHistoryPlugin = createPluginFactory({\n key: \"history\",\n withOverrides: withHistory\n});\nvar KEY_INLINE_VOID = \"inline-void\";\nvar withInlineVoid = (editor) => {\n const {\n isInline\n } = editor;\n const {\n isVoid\n } = editor;\n const inlineTypes = [];\n const voidTypes = [];\n editor.plugins.forEach((plugin2) => {\n if (plugin2.isInline) {\n inlineTypes.push(plugin2.type);\n }\n if (plugin2.isVoid) {\n voidTypes.push(plugin2.type);\n }\n });\n editor.isInline = (element4) => {\n return inlineTypes.includes(element4.type) ? true : isInline(element4);\n };\n editor.isVoid = (element4) => voidTypes.includes(element4.type) ? true : isVoid(element4);\n return editor;\n};\nvar createInlineVoidPlugin = createPluginFactory({\n key: KEY_INLINE_VOID,\n withOverrides: withInlineVoid\n});\nvar getInjectedPlugins = (editor, plugin2) => {\n const injectedPlugins = [];\n [...editor.plugins].reverse().forEach((p4) => {\n var _p$inject$pluginsByKe;\n const injectedPlugin = (_p$inject$pluginsByKe = p4.inject.pluginsByKey) === null || _p$inject$pluginsByKe === void 0 ? void 0 : _p$inject$pluginsByKe[plugin2.key];\n if (injectedPlugin)\n injectedPlugins.push(injectedPlugin);\n });\n return [plugin2, ...injectedPlugins];\n};\nvar pipeInsertDataQuery = (plugins, {\n data,\n dataTransfer: dataTransfer5\n}) => plugins.every((p4) => {\n var _p$editor, _p$editor$insertData;\n const query = (_p$editor = p4.editor) === null || _p$editor === void 0 ? void 0 : (_p$editor$insertData = _p$editor.insertData) === null || _p$editor$insertData === void 0 ? void 0 : _p$editor$insertData.query;\n return !query || query({\n data,\n dataTransfer: dataTransfer5\n });\n});\nvar pipeInsertFragment = (editor, injectedPlugins, _a) => {\n var _b = _a, {\n fragment\n } = _b, options = __objRest(_b, [\n \"fragment\"\n ]);\n Editor.withoutNormalizing(editor, () => {\n injectedPlugins.some((p4) => {\n var _p$editor, _p$editor$insertData, _p$editor$insertData$;\n return ((_p$editor = p4.editor) === null || _p$editor === void 0 ? void 0 : (_p$editor$insertData = _p$editor.insertData) === null || _p$editor$insertData === void 0 ? void 0 : (_p$editor$insertData$ = _p$editor$insertData.preInsert) === null || _p$editor$insertData$ === void 0 ? void 0 : _p$editor$insertData$.call(_p$editor$insertData, fragment, options)) === true;\n });\n editor.insertFragment(fragment);\n });\n};\nvar pipeTransformData = (plugins, {\n data,\n dataTransfer: dataTransfer5\n}) => {\n plugins.forEach((p4) => {\n var _p$editor, _p$editor$insertData;\n const transformData = (_p$editor = p4.editor) === null || _p$editor === void 0 ? void 0 : (_p$editor$insertData = _p$editor.insertData) === null || _p$editor$insertData === void 0 ? void 0 : _p$editor$insertData.transformData;\n if (!transformData)\n return;\n data = transformData(data, {\n dataTransfer: dataTransfer5\n });\n });\n return data;\n};\nvar pipeTransformFragment = (plugins, _a) => {\n var _b = _a, {\n fragment\n } = _b, options = __objRest(_b, [\n \"fragment\"\n ]);\n plugins.forEach((p4) => {\n var _p$editor, _p$editor$insertData;\n const transformFragment = (_p$editor = p4.editor) === null || _p$editor === void 0 ? void 0 : (_p$editor$insertData = _p$editor.insertData) === null || _p$editor$insertData === void 0 ? void 0 : _p$editor$insertData.transformFragment;\n if (!transformFragment)\n return;\n fragment = transformFragment(fragment, options);\n });\n return fragment;\n};\nvar withInsertData = (editor) => {\n const {\n insertData\n } = editor;\n editor.insertData = (dataTransfer5) => {\n const inserted = [...editor.plugins].reverse().some((plugin2) => {\n var _fragment;\n const insertDataOptions = plugin2.editor.insertData;\n if (!insertDataOptions)\n return false;\n const injectedPlugins = getInjectedPlugins(editor, plugin2);\n const {\n format: format4,\n getFragment\n } = insertDataOptions;\n if (!format4)\n return false;\n let data = dataTransfer5.getData(format4);\n if (!data)\n return;\n if (!pipeInsertDataQuery(injectedPlugins, {\n data,\n dataTransfer: dataTransfer5\n })) {\n return false;\n }\n data = pipeTransformData(injectedPlugins, {\n data,\n dataTransfer: dataTransfer5\n });\n let fragment = getFragment === null || getFragment === void 0 ? void 0 : getFragment({\n data,\n dataTransfer: dataTransfer5\n });\n if (!((_fragment = fragment) !== null && _fragment !== void 0 && _fragment.length))\n return false;\n fragment = pipeTransformFragment(injectedPlugins, {\n fragment,\n data,\n dataTransfer: dataTransfer5\n });\n if (!fragment.length)\n return false;\n pipeInsertFragment(editor, injectedPlugins, {\n fragment,\n data,\n dataTransfer: dataTransfer5\n });\n return true;\n });\n if (inserted)\n return;\n insertData(dataTransfer5);\n };\n return editor;\n};\nvar KEY_INSERT_DATA = \"insertData\";\nvar createInsertDataPlugin = createPluginFactory({\n key: KEY_INSERT_DATA,\n withOverrides: withInsertData\n});\nvar createReactPlugin = createPluginFactory({\n key: \"react\",\n withOverrides: withReact\n});\nvar htmlStringToDOMNode = (rawHtml, stripWhitespace = true) => {\n const node = document.createElement(\"body\");\n node.innerHTML = rawHtml;\n if (stripWhitespace) {\n node.innerHTML = node.innerHTML.replace(/(\\r\\n|\\n|\\r|\\t)/gm, \"\");\n }\n return node;\n};\nfunction isObject3(o3) {\n return Object.prototype.toString.call(o3) === \"[object Object]\";\n}\nfunction isPlainObject2(o3) {\n var ctor, prot;\n if (isObject3(o3) === false)\n return false;\n ctor = o3.constructor;\n if (ctor === void 0)\n return true;\n prot = ctor.prototype;\n if (isObject3(prot) === false)\n return false;\n if (prot.hasOwnProperty(\"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nfunction _defineProperty3(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar ANCHOR = /* @__PURE__ */ new WeakMap();\nvar FOCUS = /* @__PURE__ */ new WeakMap();\nvar Token = class {\n};\nvar AnchorToken = class extends Token {\n constructor() {\n var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n super();\n var {\n offset: offset3,\n path\n } = props;\n this.offset = offset3;\n this.path = path;\n }\n};\nvar FocusToken = class extends Token {\n constructor() {\n var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n super();\n var {\n offset: offset3,\n path\n } = props;\n this.offset = offset3;\n this.path = path;\n }\n};\nvar addAnchorToken = (text5, token) => {\n var offset3 = text5.text.length;\n ANCHOR.set(text5, [offset3, token]);\n};\nvar getAnchorOffset = (text5) => {\n return ANCHOR.get(text5);\n};\nvar addFocusToken = (text5, token) => {\n var offset3 = text5.text.length;\n FOCUS.set(text5, [offset3, token]);\n};\nvar getFocusOffset = (text5) => {\n return FOCUS.get(text5);\n};\nfunction ownKeys$13(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$13(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$13(Object(source), true).forEach(function(key) {\n _defineProperty3(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$13(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar STRINGS = /* @__PURE__ */ new WeakSet();\nvar resolveDescendants = (children) => {\n var nodes = [];\n var addChild = (child2) => {\n if (child2 == null) {\n return;\n }\n var prev = nodes[nodes.length - 1];\n if (typeof child2 === \"string\") {\n var text5 = {\n text: child2\n };\n STRINGS.add(text5);\n child2 = text5;\n }\n if (Text.isText(child2)) {\n var c3 = child2;\n if (Text.isText(prev) && STRINGS.has(prev) && STRINGS.has(c3) && Text.equals(prev, c3, {\n loose: true\n })) {\n prev.text += c3.text;\n } else {\n nodes.push(c3);\n }\n } else if (Element2.isElement(child2)) {\n nodes.push(child2);\n } else if (child2 instanceof Token) {\n var n5 = nodes[nodes.length - 1];\n if (!Text.isText(n5)) {\n addChild(\"\");\n n5 = nodes[nodes.length - 1];\n }\n if (child2 instanceof AnchorToken) {\n addAnchorToken(n5, child2);\n } else if (child2 instanceof FocusToken) {\n addFocusToken(n5, child2);\n }\n } else {\n throw new Error(\"Unexpected hyperscript child object: \".concat(child2));\n }\n };\n for (var child of children.flat(Infinity)) {\n addChild(child);\n }\n return nodes;\n};\nfunction createAnchor(tagName, attributes, children) {\n return new AnchorToken(attributes);\n}\nfunction createCursor(tagName, attributes, children) {\n return [new AnchorToken(attributes), new FocusToken(attributes)];\n}\nfunction createElement2(tagName, attributes, children) {\n return _objectSpread$13(_objectSpread$13({}, attributes), {}, {\n children: resolveDescendants(children)\n });\n}\nfunction createFocus(tagName, attributes, children) {\n return new FocusToken(attributes);\n}\nfunction createFragment(tagName, attributes, children) {\n return resolveDescendants(children);\n}\nfunction createSelection(tagName, attributes, children) {\n var anchor = children.find((c3) => c3 instanceof AnchorToken);\n var focus = children.find((c3) => c3 instanceof FocusToken);\n if (!anchor || anchor.offset == null || anchor.path == null) {\n throw new Error(\"The hyperscript tag must have an tag as a child with `path` and `offset` attributes defined.\");\n }\n if (!focus || focus.offset == null || focus.path == null) {\n throw new Error(\"The hyperscript tag must have a tag as a child with `path` and `offset` attributes defined.\");\n }\n return _objectSpread$13({\n anchor: {\n offset: anchor.offset,\n path: anchor.path\n },\n focus: {\n offset: focus.offset,\n path: focus.path\n }\n }, attributes);\n}\nfunction createText(tagName, attributes, children) {\n var nodes = resolveDescendants(children);\n if (nodes.length > 1) {\n throw new Error(\"The hyperscript tag must only contain a single node's worth of children.\");\n }\n var [node] = nodes;\n if (node == null) {\n node = {\n text: \"\"\n };\n }\n if (!Text.isText(node)) {\n throw new Error(\"\\n The hyperscript tag can only contain text content as children.\");\n }\n STRINGS.delete(node);\n Object.assign(node, attributes);\n return node;\n}\nvar createEditor2 = (makeEditor) => (tagName, attributes, children) => {\n var otherChildren = [];\n var selectionChild;\n for (var child of children) {\n if (Range.isRange(child)) {\n selectionChild = child;\n } else {\n otherChildren.push(child);\n }\n }\n var descendants = resolveDescendants(otherChildren);\n var selection = {};\n var editor = makeEditor();\n Object.assign(editor, attributes);\n editor.children = descendants;\n for (var [node, path] of Node2.texts(editor)) {\n var anchor = getAnchorOffset(node);\n var focus = getFocusOffset(node);\n if (anchor != null) {\n var [offset3] = anchor;\n selection.anchor = {\n path,\n offset: offset3\n };\n }\n if (focus != null) {\n var [_offset] = focus;\n selection.focus = {\n path,\n offset: _offset\n };\n }\n }\n if (selection.anchor && !selection.focus) {\n throw new Error(\"Slate hyperscript ranges must have both `` and `` defined if one is defined, but you only defined ``. For collapsed selections, use `` instead.\");\n }\n if (!selection.anchor && selection.focus) {\n throw new Error(\"Slate hyperscript ranges must have both `` and `` defined if one is defined, but you only defined ``. For collapsed selections, use `` instead.\");\n }\n if (selectionChild != null) {\n editor.selection = selectionChild;\n } else if (Range.isRange(selection)) {\n editor.selection = selection;\n }\n return editor;\n};\nfunction ownKeys3(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread3(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys3(Object(source), true).forEach(function(key) {\n _defineProperty3(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys3(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar DEFAULT_CREATORS = {\n anchor: createAnchor,\n cursor: createCursor,\n editor: createEditor2(createEditor),\n element: createElement2,\n focus: createFocus,\n fragment: createFragment,\n selection: createSelection,\n text: createText\n};\nvar createHyperscript = function createHyperscript2() {\n var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n var {\n elements = {}\n } = options;\n var elementCreators = normalizeElements(elements);\n var creators = _objectSpread3(_objectSpread3(_objectSpread3({}, DEFAULT_CREATORS), elementCreators), options.creators);\n var jsx3 = createFactory(creators);\n return jsx3;\n};\nvar createFactory = (creators) => {\n var jsx3 = function jsx4(tagName, attributes) {\n for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n children[_key - 2] = arguments[_key];\n }\n var creator = creators[tagName];\n if (!creator) {\n throw new Error(\"No hyperscript creator found for tag: <\".concat(tagName, \">\"));\n }\n if (attributes == null) {\n attributes = {};\n }\n if (!isPlainObject2(attributes)) {\n children = [attributes].concat(children);\n attributes = {};\n }\n children = children.filter((child) => Boolean(child)).flat();\n var ret = creator(tagName, attributes, children);\n return ret;\n };\n return jsx3;\n};\nvar normalizeElements = (elements) => {\n var creators = {};\n var _loop = function _loop2(tagName2) {\n var props = elements[tagName2];\n if (typeof props !== \"object\") {\n throw new Error(\"Properties specified for a hyperscript shorthand should be an object, but for the custom element <\".concat(tagName2, \"> tag you passed: \").concat(props));\n }\n creators[tagName2] = (tagName3, attributes, children) => {\n return createElement2(\"element\", _objectSpread3(_objectSpread3({}, props), attributes), children);\n };\n };\n for (var tagName in elements) {\n _loop(tagName);\n }\n return creators;\n};\nvar jsx = createHyperscript();\nvar deserializeHtmlNodeChildren = (editor, node) => {\n return Array.from(node.childNodes).map(deserializeHtmlNode(editor)).flat();\n};\nvar htmlBodyToFragment = (editor, element4) => {\n if (element4.nodeName === \"BODY\") {\n return jsx(\"fragment\", {}, deserializeHtmlNodeChildren(editor, element4));\n }\n};\nvar htmlBrToNewLine = (node) => {\n if (node.nodeName === \"BR\") {\n return \"\\n\";\n }\n};\nvar pluginDeserializeHtml = (editor, plugin2, {\n element: el,\n deserializeLeaf\n}) => {\n var _getNode;\n const {\n deserializeHtml: deserializeHtml2,\n isElement: isElementRoot,\n isLeaf: isLeafRoot,\n type\n } = plugin2;\n if (!deserializeHtml2)\n return;\n const {\n attributeNames,\n query,\n isLeaf: isLeafRule,\n isElement: isElementRule,\n rules\n } = deserializeHtml2;\n let {\n getNode: getNode2\n } = deserializeHtml2;\n const isElement6 = isElementRule || isElementRoot;\n const isLeaf = isLeafRule || isLeafRoot;\n if (!deserializeLeaf && !isElement6) {\n return;\n }\n if (deserializeLeaf && !isLeaf) {\n return;\n }\n if (rules) {\n const isValid = rules.some(({\n validNodeName = \"*\",\n validStyle,\n validClassName,\n validAttribute\n }) => {\n if (validNodeName) {\n const validNodeNames = castArray_1(validNodeName);\n if (validNodeNames.length && !validNodeNames.includes(el.nodeName) && validNodeName !== \"*\")\n return false;\n }\n if (validClassName && !el.className.includes(validClassName))\n return false;\n if (validStyle) {\n for (const [key, value] of Object.entries(validStyle)) {\n var _plugin$inject$props;\n const values2 = castArray_1(value);\n if (!values2.includes(el.style[key]) && value !== \"*\")\n return;\n if (value === \"*\" && !el.style[key])\n return;\n const defaultNodeValue = (_plugin$inject$props = plugin2.inject.props) === null || _plugin$inject$props === void 0 ? void 0 : _plugin$inject$props.defaultNodeValue;\n if (defaultNodeValue && defaultNodeValue === el.style[key]) {\n return false;\n }\n }\n }\n if (validAttribute) {\n if (typeof validAttribute === \"string\") {\n if (!el.getAttributeNames().includes(validAttribute))\n return false;\n } else {\n for (const [attributeName, attributeValue] of Object.entries(validAttribute)) {\n const attributeValues = castArray_1(attributeValue);\n const elAttribute = el.getAttribute(attributeName);\n if (!elAttribute || !attributeValues.includes(elAttribute))\n return false;\n }\n }\n }\n return true;\n });\n if (!isValid)\n return;\n }\n if (query && !query(el)) {\n return;\n }\n if (!getNode2) {\n if (isElement6) {\n getNode2 = () => ({\n type\n });\n } else if (isLeaf) {\n getNode2 = () => ({\n [type]: true\n });\n } else {\n return;\n }\n }\n let node = (_getNode = getNode2(el, {})) !== null && _getNode !== void 0 ? _getNode : {};\n if (!Object.keys(node).length)\n return;\n const injectedPlugins = getInjectedPlugins(editor, plugin2);\n injectedPlugins.forEach((injectedPlugin) => {\n var _injectedPlugin$deser, _injectedPlugin$deser2;\n const res = (_injectedPlugin$deser = injectedPlugin.deserializeHtml) === null || _injectedPlugin$deser === void 0 ? void 0 : (_injectedPlugin$deser2 = _injectedPlugin$deser.getNode) === null || _injectedPlugin$deser2 === void 0 ? void 0 : _injectedPlugin$deser2.call(_injectedPlugin$deser, el, node);\n if (res) {\n node = __spreadValues(__spreadValues({}, node), res);\n }\n });\n if (attributeNames) {\n const elementAttributes = {};\n const elementAttributeNames = el.getAttributeNames();\n for (const elementAttributeName of elementAttributeNames) {\n if (attributeNames.includes(elementAttributeName)) {\n elementAttributes[elementAttributeName] = el.getAttribute(elementAttributeName);\n }\n }\n if (Object.keys(elementAttributes).length) {\n node.attributes = elementAttributes;\n }\n }\n return __spreadProps(__spreadValues({}, deserializeHtml2), {\n node\n });\n};\nvar pipeDeserializeHtmlElement = (editor, element4) => {\n let result;\n [...editor.plugins].reverse().some((plugin2) => {\n result = pluginDeserializeHtml(editor, plugin2, {\n element: element4\n });\n return !!result;\n });\n return result;\n};\nvar htmlElementToElement = (editor, element4) => {\n const deserialized = pipeDeserializeHtmlElement(editor, element4);\n if (deserialized) {\n var _node$children;\n const {\n node,\n withoutChildren\n } = deserialized;\n let descendants = (_node$children = node.children) !== null && _node$children !== void 0 ? _node$children : deserializeHtmlNodeChildren(editor, element4);\n if (!descendants.length || withoutChildren) {\n descendants = [{\n text: \"\"\n }];\n }\n return jsx(\"element\", node, descendants);\n }\n};\nvar merge = _createAssigner(function(object, source, srcIndex) {\n _baseMerge(object, source, srcIndex);\n});\nvar merge_1 = merge;\nvar mergeDeepToNodes = (options) => {\n applyDeepToNodes(__spreadProps(__spreadValues({}, options), {\n apply: merge_1\n }));\n};\nvar pipeDeserializeHtmlLeaf = (editor, element4) => {\n let node = {};\n [...editor.plugins].reverse().forEach((plugin2) => {\n const deserialized = pluginDeserializeHtml(editor, plugin2, {\n element: element4,\n deserializeLeaf: true\n });\n if (!deserialized)\n return;\n node = __spreadValues(__spreadValues({}, node), deserialized.node);\n });\n return node;\n};\nvar htmlElementToLeaf = (editor, element4) => {\n const node = pipeDeserializeHtmlLeaf(editor, element4);\n return deserializeHtmlNodeChildren(editor, element4).reduce((arr, child) => {\n if (!child)\n return arr;\n if (isElement2(child)) {\n if (Object.keys(node).length) {\n mergeDeepToNodes({\n node: child,\n source: node,\n query: {\n filter: ([n5]) => Text.isText(n5)\n }\n });\n }\n arr.push(child);\n } else {\n const attributes = __spreadValues({}, node);\n if (child.text) {\n Object.keys(attributes).forEach((key) => {\n if (attributes[key] && child[key]) {\n attributes[key] = child[key];\n }\n });\n }\n arr.push(jsx(\"text\", attributes, child));\n }\n return arr;\n }, []);\n};\nvar isHtmlText = (node) => node.nodeType === Node.TEXT_NODE;\nvar htmlTextNodeToString = (node) => {\n if (isHtmlText(node)) {\n return node.nodeValue === \"\\n\" ? null : node.textContent;\n }\n};\nvar isHtmlElement = (node) => node.nodeType === Node.ELEMENT_NODE;\nvar deserializeHtmlNode = (editor) => (node) => {\n const textNode = htmlTextNodeToString(node);\n if (textNode)\n return textNode;\n if (!isHtmlElement(node))\n return null;\n const breakLine = htmlBrToNewLine(node);\n if (breakLine)\n return breakLine;\n const fragment = htmlBodyToFragment(editor, node);\n if (fragment)\n return fragment;\n const element4 = htmlElementToElement(editor, node);\n if (element4)\n return element4;\n return htmlElementToLeaf(editor, node);\n};\nvar deserializeHtmlElement = (editor, element4) => {\n return deserializeHtmlNode(editor)(element4);\n};\nvar deserializeHtml = (editor, {\n element: element4,\n stripWhitespace = true\n}) => {\n if (typeof element4 === \"string\") {\n element4 = htmlStringToDOMNode(element4, stripWhitespace);\n }\n const fragment = deserializeHtmlElement(editor, element4);\n return normalizeDescendantsToDocumentFragment(editor, {\n descendants: fragment\n });\n};\nvar parseHtmlDocument = (html2) => {\n return new DOMParser().parseFromString(html2, \"text/html\");\n};\nvar KEY_DESERIALIZE_HTML = \"deserializeHtml\";\nvar createDeserializeHtmlPlugin = createPluginFactory({\n key: KEY_DESERIALIZE_HTML,\n then: (editor) => ({\n editor: {\n insertData: {\n format: \"text/html\",\n getFragment: ({\n data\n }) => {\n const document2 = parseHtmlDocument(data);\n return deserializeHtml(editor, {\n element: document2.body\n });\n }\n }\n }\n })\n});\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index7 = -1, length = array == null ? 0 : array.length;\n while (++index7 < length) {\n var value = array[index7];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\nvar _arrayAggregator = arrayAggregator;\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n _baseEach(collection, function(value, key, collection2) {\n setter(accumulator, value, iteratee(value), collection2);\n });\n return accumulator;\n}\nvar _baseAggregator = baseAggregator;\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray_1(collection) ? _arrayAggregator : _baseAggregator, accumulator = initializer ? initializer() : {};\n return func(collection, setter, _baseIteratee(iteratee), accumulator);\n };\n}\nvar _createAggregator = createAggregator;\nvar keyBy = _createAggregator(function(result, value, key) {\n _baseAssignValue(result, key, value);\n});\nvar keyBy_1 = keyBy;\nfunction baseValues(object, props) {\n return _arrayMap(props, function(key) {\n return object[key];\n });\n}\nvar _baseValues = baseValues;\nfunction values(object) {\n return object == null ? [] : _baseValues(object, keys_1(object));\n}\nvar values_1 = values;\nvar mergeDeepPlugins = (editor, _plugin) => {\n const plugin2 = __spreadValues({}, _plugin);\n const {\n then\n } = plugin2;\n if (then) {\n delete plugin2.then;\n const {\n plugins: pluginPlugins\n } = plugin2;\n const pluginThen = mergeDeepPlugins(editor, defaultsDeep_1(then(editor, plugin2), plugin2));\n if (pluginPlugins && pluginThen.plugins) {\n const merged = merge_1(keyBy_1(pluginPlugins, \"key\"), keyBy_1(pluginThen.plugins, \"key\"));\n pluginThen.plugins = values_1(merged);\n }\n return pluginThen;\n }\n return plugin2;\n};\nvar setDefaultPlugin = (plugin2) => {\n if (plugin2.type === void 0)\n plugin2.type = plugin2.key;\n if (!plugin2.options)\n plugin2.options = {};\n if (!plugin2.inject)\n plugin2.inject = {};\n if (!plugin2.editor)\n plugin2.editor = {};\n return plugin2;\n};\nvar flattenDeepPlugins = (editor, plugins) => {\n if (!plugins)\n return;\n plugins.forEach((plugin2) => {\n let p4 = setDefaultPlugin(plugin2);\n p4 = mergeDeepPlugins(editor, p4);\n if (!editor.pluginsByKey[p4.key]) {\n editor.plugins.push(p4);\n editor.pluginsByKey[p4.key] = p4;\n } else {\n const index7 = editor.plugins.indexOf(editor.pluginsByKey[p4.key]);\n const mergedPlugin = defaultsDeep_1(p4, editor.pluginsByKey[p4.key]);\n if (index7 >= 0) {\n editor.plugins[index7] = mergedPlugin;\n }\n editor.pluginsByKey[p4.key] = mergedPlugin;\n }\n flattenDeepPlugins(editor, p4.plugins);\n });\n};\nvar setPlatePlugins = (editor, {\n disableCorePlugins,\n plugins: _plugins = []\n}) => {\n let plugins = [];\n if (disableCorePlugins !== true) {\n const dcp = disableCorePlugins;\n if (typeof dcp !== \"object\" || !dcp.react) {\n var _editor$pluginsByKey$, _editor$pluginsByKey;\n plugins.push((_editor$pluginsByKey$ = (_editor$pluginsByKey = editor.pluginsByKey) === null || _editor$pluginsByKey === void 0 ? void 0 : _editor$pluginsByKey.react) !== null && _editor$pluginsByKey$ !== void 0 ? _editor$pluginsByKey$ : createReactPlugin());\n }\n if (typeof dcp !== \"object\" || !dcp.history) {\n var _editor$pluginsByKey$2, _editor$pluginsByKey2;\n plugins.push((_editor$pluginsByKey$2 = (_editor$pluginsByKey2 = editor.pluginsByKey) === null || _editor$pluginsByKey2 === void 0 ? void 0 : _editor$pluginsByKey2.history) !== null && _editor$pluginsByKey$2 !== void 0 ? _editor$pluginsByKey$2 : createHistoryPlugin());\n }\n if (typeof dcp !== \"object\" || !dcp.eventEditor) {\n var _editor$pluginsByKey$3, _editor$pluginsByKey3;\n plugins.push((_editor$pluginsByKey$3 = (_editor$pluginsByKey3 = editor.pluginsByKey) === null || _editor$pluginsByKey3 === void 0 ? void 0 : _editor$pluginsByKey3[KEY_EVENT_EDITOR]) !== null && _editor$pluginsByKey$3 !== void 0 ? _editor$pluginsByKey$3 : createEventEditorPlugin());\n }\n if (typeof dcp !== \"object\" || !dcp.inlineVoid) {\n var _editor$pluginsByKey$4, _editor$pluginsByKey4;\n plugins.push((_editor$pluginsByKey$4 = (_editor$pluginsByKey4 = editor.pluginsByKey) === null || _editor$pluginsByKey4 === void 0 ? void 0 : _editor$pluginsByKey4[KEY_INLINE_VOID]) !== null && _editor$pluginsByKey$4 !== void 0 ? _editor$pluginsByKey$4 : createInlineVoidPlugin());\n }\n if (typeof dcp !== \"object\" || !dcp.insertData) {\n var _editor$pluginsByKey$5, _editor$pluginsByKey5;\n plugins.push((_editor$pluginsByKey$5 = (_editor$pluginsByKey5 = editor.pluginsByKey) === null || _editor$pluginsByKey5 === void 0 ? void 0 : _editor$pluginsByKey5[KEY_INSERT_DATA]) !== null && _editor$pluginsByKey$5 !== void 0 ? _editor$pluginsByKey$5 : createInsertDataPlugin());\n }\n if (typeof dcp !== \"object\" || !dcp.deserializeHtml) {\n var _editor$pluginsByKey$6, _editor$pluginsByKey6;\n plugins.push((_editor$pluginsByKey$6 = (_editor$pluginsByKey6 = editor.pluginsByKey) === null || _editor$pluginsByKey6 === void 0 ? void 0 : _editor$pluginsByKey6[KEY_DESERIALIZE_HTML]) !== null && _editor$pluginsByKey$6 !== void 0 ? _editor$pluginsByKey$6 : createDeserializeHtmlPlugin());\n }\n if (typeof dcp !== \"object\" || !dcp.deserializeAst) {\n var _editor$pluginsByKey$7, _editor$pluginsByKey7;\n plugins.push((_editor$pluginsByKey$7 = (_editor$pluginsByKey7 = editor.pluginsByKey) === null || _editor$pluginsByKey7 === void 0 ? void 0 : _editor$pluginsByKey7[KEY_DESERIALIZE_AST]) !== null && _editor$pluginsByKey$7 !== void 0 ? _editor$pluginsByKey$7 : createDeserializeAstPlugin());\n }\n }\n plugins = [...plugins, ..._plugins];\n editor.plugins = [];\n editor.pluginsByKey = {};\n flattenDeepPlugins(editor, plugins);\n editor.plugins.forEach((plugin2) => {\n if (plugin2.overrideByKey) {\n const newPlugins = editor.plugins.map((p4) => {\n return overridePluginsByKey(p4, plugin2.overrideByKey);\n });\n editor.plugins = [];\n editor.pluginsByKey = {};\n flattenDeepPlugins(editor, newPlugins);\n }\n });\n getPlateActions(editor.id).incrementKey(\"keyPlugins\");\n};\nvar withPlate = (e2, {\n id = \"main\",\n plugins = [],\n disableCorePlugins\n} = {}) => {\n let editor = e2;\n editor.id = id;\n if (!editor.key) {\n editor.key = Math.random();\n }\n setPlatePlugins(editor, {\n plugins,\n disableCorePlugins\n });\n editor.plugins.forEach((plugin2) => {\n if (plugin2.withOverrides) {\n editor = plugin2.withOverrides(editor, plugin2);\n }\n });\n return editor;\n};\nvar createPlateStore = (state = {}) => createStore3(`plate-${state.id}`)(__spreadValues({\n id: \"main\",\n value: [{\n type: ELEMENT_DEFAULT,\n children: [{\n text: \"\"\n }]\n }],\n editor: null,\n keyEditor: 1,\n keyPlugins: 1,\n keySelection: 1,\n decorate: null,\n enabled: true,\n editableProps: null,\n onChange: null,\n plugins: [],\n renderElement: null,\n renderLeaf: null\n}, state)).extendActions((_set, _get) => ({\n resetEditor: () => {\n var _get$editor;\n _set.editor(withPlate(createEditor(), {\n id: state.id,\n plugins: (_get$editor = _get.editor()) === null || _get$editor === void 0 ? void 0 : _get$editor.plugins\n }));\n },\n incrementKey: (key) => {\n var _get$key;\n const prev = (_get$key = _get[key]()) !== null && _get$key !== void 0 ? _get$key : 1;\n _set[key](prev + 1);\n }\n}));\nvar getEventEditorId = (id) => {\n var _eventEditorSelectors;\n if (id)\n return id;\n const focus = eventEditorSelectors.focus();\n if (focus)\n return focus;\n const blur = eventEditorSelectors.blur();\n if (blur)\n return blur;\n return (_eventEditorSelectors = eventEditorSelectors.last()) !== null && _eventEditorSelectors !== void 0 ? _eventEditorSelectors : \"main\";\n};\nvar plateIdAtom = atom(null);\nvar usePlateId = () => {\n const [plateId] = useAtom(plateIdAtom);\n return plateId;\n};\nvar loadingStore = createPlateStore({\n id: \"loading\"\n});\nvar getPlateStore = (id) => {\n id = getEventEditorId(id);\n const store = platesStore.get.get(id);\n return store || loadingStore;\n};\nvar usePlateStore = (id) => {\n var _ref, _id;\n const plateId = usePlateId();\n id = (_ref = (_id = id) !== null && _id !== void 0 ? _id : plateId) !== null && _ref !== void 0 ? _ref : \"main\";\n const store = platesStore.use.get(id);\n if (store) {\n return store;\n }\n console.warn(\"The plate hooks must be used inside the component's context.\");\n return store || loadingStore;\n};\nvar setPlateState = (draft, state) => {\n if (!isUndefined(state.onChange))\n draft.onChange = state.onChange;\n if (!isUndefined(state.plugins))\n draft.plugins = state.plugins;\n if (!isUndefined(state.editableProps))\n draft.editableProps = state.editableProps;\n if (!isUndefined(state.renderElement))\n draft.renderElement = state.renderElement;\n if (!isUndefined(state.renderLeaf))\n draft.renderLeaf = state.renderLeaf;\n if (!isUndefined(state.decorate))\n draft.decorate = state.decorate;\n if (!isUndefined(state.enabled))\n draft.enabled = state.enabled;\n if (!isUndefined(state.editor)) {\n draft.editor = state.editor;\n if (state.editor) {\n draft.value = state.editor.children;\n }\n }\n if (!isUndefined(state.initialValue))\n draft.value = state.initialValue;\n if (!isUndefined(state.value))\n draft.value = state.value;\n return draft;\n};\nvar platesStore = createStore3(\"plate\")({}).extendActions((set) => ({\n set: (id, state) => {\n set.state((draft) => {\n if (!id)\n return;\n let store = draft[id];\n if (!store) {\n store = createPlateStore(__spreadValues({\n id\n }, setPlateState({}, state !== null && state !== void 0 ? state : {})));\n draft[id] = store;\n eventEditorActions.last(id);\n }\n });\n },\n unset: (id) => {\n set.state((draft) => {\n delete draft[id];\n });\n }\n})).extendSelectors((state) => ({\n get(id) {\n return state[id];\n },\n has(id) {\n const ids = castArray_1(id);\n return ids.every((_id) => !!state[_id]);\n }\n}));\nvar platesActions = platesStore.set;\nvar platesSelectors = platesStore.get;\nvar usePlatesSelectors = platesStore.use;\nvar getPlateActions = (id) => getPlateStore(id).set;\nvar usePlateSelectors = (id) => usePlateStore(id).use;\nvar usePlateEditorRef = (id) => usePlateSelectors(id).editor();\nvar DOM_HANDLERS = [\n \"onCopy\",\n \"onCopyCapture\",\n \"onCut\",\n \"onCutCapture\",\n \"onPaste\",\n \"onPasteCapture\",\n \"onCompositionEnd\",\n \"onCompositionEndCapture\",\n \"onCompositionStart\",\n \"onCompositionStartCapture\",\n \"onCompositionUpdate\",\n \"onCompositionUpdateCapture\",\n \"onFocus\",\n \"onFocusCapture\",\n \"onBlur\",\n \"onBlurCapture\",\n \"onDOMBeforeInput\",\n \"onBeforeInput\",\n \"onBeforeInputCapture\",\n \"onInput\",\n \"onInputCapture\",\n \"onReset\",\n \"onResetCapture\",\n \"onSubmit\",\n \"onSubmitCapture\",\n \"onInvalid\",\n \"onInvalidCapture\",\n \"onLoad\",\n \"onLoadCapture\",\n \"onKeyDown\",\n \"onKeyDownCapture\",\n \"onKeyPress\",\n \"onKeyPressCapture\",\n \"onKeyUp\",\n \"onKeyUpCapture\",\n \"onAbort\",\n \"onAbortCapture\",\n \"onCanPlay\",\n \"onCanPlayCapture\",\n \"onCanPlayThrough\",\n \"onCanPlayThroughCapture\",\n \"onDurationChange\",\n \"onDurationChangeCapture\",\n \"onEmptied\",\n \"onEmptiedCapture\",\n \"onEncrypted\",\n \"onEncryptedCapture\",\n \"onEnded\",\n \"onEndedCapture\",\n \"onLoadedData\",\n \"onLoadedDataCapture\",\n \"onLoadedMetadata\",\n \"onLoadedMetadataCapture\",\n \"onLoadStart\",\n \"onLoadStartCapture\",\n \"onPause\",\n \"onPauseCapture\",\n \"onPlay\",\n \"onPlayCapture\",\n \"onPlaying\",\n \"onPlayingCapture\",\n \"onProgress\",\n \"onProgressCapture\",\n \"onRateChange\",\n \"onRateChangeCapture\",\n \"onSeeked\",\n \"onSeekedCapture\",\n \"onSeeking\",\n \"onSeekingCapture\",\n \"onStalled\",\n \"onStalledCapture\",\n \"onSuspend\",\n \"onSuspendCapture\",\n \"onTimeUpdate\",\n \"onTimeUpdateCapture\",\n \"onVolumeChange\",\n \"onVolumeChangeCapture\",\n \"onWaiting\",\n \"onWaitingCapture\",\n \"onAuxClick\",\n \"onAuxClickCapture\",\n \"onClick\",\n \"onClickCapture\",\n \"onContextMenu\",\n \"onContextMenuCapture\",\n \"onDoubleClick\",\n \"onDoubleClickCapture\",\n \"onDrag\",\n \"onDragCapture\",\n \"onDragEnd\",\n \"onDragEndCapture\",\n \"onDragEnter\",\n \"onDragEnterCapture\",\n \"onDragExit\",\n \"onDragExitCapture\",\n \"onDragLeave\",\n \"onDragLeaveCapture\",\n \"onDragOver\",\n \"onDragOverCapture\",\n \"onDragStart\",\n \"onDragStartCapture\",\n \"onDrop\",\n \"onDropCapture\",\n \"onMouseDown\",\n \"onMouseDownCapture\",\n \"onMouseEnter\",\n \"onMouseLeave\",\n \"onMouseMove\",\n \"onMouseMoveCapture\",\n \"onMouseOut\",\n \"onMouseOutCapture\",\n \"onMouseOver\",\n \"onMouseOverCapture\",\n \"onMouseUp\",\n \"onMouseUpCapture\",\n \"onSelect\",\n \"onSelectCapture\",\n \"onTouchCancel\",\n \"onTouchCancelCapture\",\n \"onTouchEnd\",\n \"onTouchEndCapture\",\n \"onTouchMove\",\n \"onTouchMoveCapture\",\n \"onTouchStart\",\n \"onTouchStartCapture\",\n \"onPointerDown\",\n \"onPointerDownCapture\",\n \"onPointerMove\",\n \"onPointerMoveCapture\",\n \"onPointerUp\",\n \"onPointerUpCapture\",\n \"onPointerCancel\",\n \"onPointerCancelCapture\",\n \"onPointerEnter\",\n \"onPointerEnterCapture\",\n \"onPointerLeave\",\n \"onPointerLeaveCapture\",\n \"onPointerOver\",\n \"onPointerOverCapture\",\n \"onPointerOut\",\n \"onPointerOutCapture\",\n \"onGotPointerCapture\",\n \"onGotPointerCaptureCapture\",\n \"onLostPointerCapture\",\n \"onLostPointerCaptureCapture\",\n \"onScroll\",\n \"onScrollCapture\",\n \"onWheel\",\n \"onWheelCapture\",\n \"onAnimationStart\",\n \"onAnimationStartCapture\",\n \"onAnimationEnd\",\n \"onAnimationEndCapture\",\n \"onAnimationIteration\",\n \"onAnimationIterationCapture\",\n \"onTransitionEnd\",\n \"onTransitionEndCapture\"\n];\nvar pipeDecorate = (editor, decorateProp) => {\n const decorates = editor.plugins.flatMap((plugin2) => {\n var _plugin$decorate, _plugin$decorate2;\n return (_plugin$decorate = (_plugin$decorate2 = plugin2.decorate) === null || _plugin$decorate2 === void 0 ? void 0 : _plugin$decorate2.call(plugin2, editor, plugin2)) !== null && _plugin$decorate !== void 0 ? _plugin$decorate : [];\n });\n if (decorateProp) {\n decorates.push(decorateProp);\n }\n if (!decorates.length)\n return;\n return (entry) => {\n let ranges = [];\n const addRanges = (newRanges) => {\n if (newRanges !== null && newRanges !== void 0 && newRanges.length)\n ranges = [...ranges, ...newRanges];\n };\n decorates.forEach((decorate) => {\n addRanges(decorate(entry));\n });\n return ranges;\n };\n};\nvar isEventHandled2 = (event, handler) => {\n if (!handler) {\n return false;\n }\n const shouldTreatEventAsHandled = handler(event);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return event.isPropagationStopped();\n};\nvar pipeHandler = (editor, {\n editableProps,\n handlerKey\n}) => {\n let pluginsHandlers = [];\n pluginsHandlers = editor.plugins.flatMap((plugin2) => {\n var _plugin$handlers$hand, _plugin$handlers, _plugin$handlers$hand2;\n return (_plugin$handlers$hand = (_plugin$handlers = plugin2.handlers) === null || _plugin$handlers === void 0 ? void 0 : (_plugin$handlers$hand2 = _plugin$handlers[handlerKey]) === null || _plugin$handlers$hand2 === void 0 ? void 0 : _plugin$handlers$hand2.call(_plugin$handlers, editor, plugin2)) !== null && _plugin$handlers$hand !== void 0 ? _plugin$handlers$hand : [];\n });\n const propsHandler = editableProps === null || editableProps === void 0 ? void 0 : editableProps[handlerKey];\n if (!pluginsHandlers.length && !propsHandler)\n return;\n return (event) => {\n const eventIsHandled = pluginsHandlers.some((handler) => isEventHandled2(event, handler));\n if (eventIsHandled)\n return true;\n return isEventHandled2(event, propsHandler);\n };\n};\nvar pluginInjectProps = (editor, {\n key,\n inject: {\n props\n }\n}, nodeProps) => {\n var _transformNodeValue;\n const {\n element: element4,\n text: text5,\n className,\n style\n } = nodeProps;\n const node = element4 !== null && element4 !== void 0 ? element4 : text5;\n if (!node)\n return;\n if (!props)\n return;\n const {\n nodeKey = key,\n styleKey = nodeKey,\n validTypes,\n classNames,\n transformClassName,\n transformNodeValue,\n transformStyle,\n validNodeValues,\n defaultNodeValue\n } = props;\n if (validTypes && node.type && !validTypes.includes(node.type)) {\n return;\n }\n const nodeValue = node[nodeKey];\n if (!nodeValue || validNodeValues && !validNodeValues.includes(nodeValue) || nodeValue === defaultNodeValue) {\n return;\n }\n const res = {};\n const transformOptions = __spreadProps(__spreadValues({}, nodeProps), {\n nodeValue\n });\n const value = (_transformNodeValue = transformNodeValue === null || transformNodeValue === void 0 ? void 0 : transformNodeValue(transformOptions)) !== null && _transformNodeValue !== void 0 ? _transformNodeValue : nodeValue;\n if (element4) {\n res.className = clsx_m_default(className, `slate-${nodeKey}-${nodeValue}`);\n }\n if (classNames !== null && classNames !== void 0 && classNames[nodeValue] || transformClassName) {\n var _transformClassName;\n res.className = (_transformClassName = transformClassName === null || transformClassName === void 0 ? void 0 : transformClassName(transformOptions)) !== null && _transformClassName !== void 0 ? _transformClassName : clsx_m_default(className, classNames === null || classNames === void 0 ? void 0 : classNames[value]);\n }\n if (styleKey) {\n var _transformStyle;\n res.style = (_transformStyle = transformStyle === null || transformStyle === void 0 ? void 0 : transformStyle(transformOptions)) !== null && _transformStyle !== void 0 ? _transformStyle : __spreadProps(__spreadValues({}, style), {\n [styleKey]: value\n });\n }\n return res;\n};\nvar pipeInjectProps = (editor, nodeProps) => {\n editor.plugins.forEach((plugin2) => {\n if (plugin2.inject.props) {\n const props = pluginInjectProps(editor, plugin2, nodeProps);\n if (props) {\n nodeProps = __spreadValues(__spreadValues({}, nodeProps), props);\n }\n }\n });\n return __spreadProps(__spreadValues({}, nodeProps), {\n editor\n });\n};\nvar getSlateClass = (type) => `slate-${type}`;\nvar getRenderNodeProps = ({\n attributes,\n nodeProps,\n props,\n type\n}) => {\n let newProps = {};\n if (props) {\n var _ref;\n newProps = (_ref = typeof props === \"function\" ? props(nodeProps) : props) !== null && _ref !== void 0 ? _ref : {};\n }\n if (!newProps.nodeProps && attributes) {\n newProps.nodeProps = attributes;\n }\n nodeProps = __spreadValues(__spreadValues({}, nodeProps), newProps);\n const {\n className\n } = nodeProps;\n return __spreadProps(__spreadValues({}, nodeProps), {\n className: clsx_m_default(getSlateClass(type), className)\n });\n};\nvar pluginRenderElement = (editor, {\n key,\n type,\n component: _component,\n props\n}) => (nodeProps) => {\n const {\n element: element4,\n children: _children\n } = nodeProps;\n if (element4.type === type) {\n const Element4 = _component !== null && _component !== void 0 ? _component : DefaultElement;\n const injectAboveComponents = editor.plugins.flatMap((o3) => {\n var _o$inject$aboveCompon, _o$inject;\n return (_o$inject$aboveCompon = (_o$inject = o3.inject) === null || _o$inject === void 0 ? void 0 : _o$inject.aboveComponent) !== null && _o$inject$aboveCompon !== void 0 ? _o$inject$aboveCompon : [];\n });\n const injectBelowComponents = editor.plugins.flatMap((o3) => {\n var _o$inject$belowCompon, _o$inject2;\n return (_o$inject$belowCompon = (_o$inject2 = o3.inject) === null || _o$inject2 === void 0 ? void 0 : _o$inject2.belowComponent) !== null && _o$inject$belowCompon !== void 0 ? _o$inject$belowCompon : [];\n });\n nodeProps = getRenderNodeProps({\n attributes: element4.attributes,\n nodeProps,\n props,\n type\n });\n let children = _children;\n injectBelowComponents.forEach((withHOC2) => {\n const hoc = withHOC2(__spreadProps(__spreadValues({}, nodeProps), {\n key\n }));\n if (hoc) {\n children = hoc(__spreadProps(__spreadValues({}, nodeProps), {\n children\n }));\n }\n });\n let component = /* @__PURE__ */ import_react5.default.createElement(Element4, nodeProps, children);\n injectAboveComponents.forEach((withHOC2) => {\n const hoc = withHOC2(__spreadProps(__spreadValues({}, nodeProps), {\n key\n }));\n if (hoc) {\n component = hoc(__spreadProps(__spreadValues({}, nodeProps), {\n children: component\n }));\n }\n });\n return component;\n }\n};\nvar pipeRenderElement = (editor, renderElementProp) => {\n const renderElements = [];\n editor.plugins.forEach((plugin2) => {\n if (plugin2.isElement) {\n renderElements.push(pluginRenderElement(editor, plugin2));\n }\n });\n return (nodeProps) => {\n const props = pipeInjectProps(editor, nodeProps);\n let element4;\n renderElements.some((renderElement) => {\n element4 = renderElement(props);\n return !!element4;\n });\n if (element4)\n return element4;\n if (renderElementProp) {\n return renderElementProp(props);\n }\n return /* @__PURE__ */ import_react5.default.createElement(DefaultElement, props);\n };\n};\nvar pluginRenderLeaf = (editor, {\n key,\n type = key,\n component,\n props\n}) => (nodeProps) => {\n const {\n leaf,\n children\n } = nodeProps;\n if (leaf[type]) {\n const Leaf2 = component !== null && component !== void 0 ? component : DefaultLeaf2;\n nodeProps = getRenderNodeProps({\n attributes: leaf.attributes,\n props,\n nodeProps,\n type\n });\n return /* @__PURE__ */ import_react5.default.createElement(Leaf2, nodeProps, children);\n }\n return children;\n};\nvar pipeRenderLeaf = (editor, renderLeafProp) => {\n const renderLeafs = [];\n editor.plugins.forEach((plugin2) => {\n if (plugin2.isLeaf && plugin2.key) {\n renderLeafs.push(pluginRenderLeaf(editor, plugin2));\n }\n });\n return (nodeProps) => {\n const props = pipeInjectProps(editor, nodeProps);\n renderLeafs.forEach((renderLeaf) => {\n const newChildren = renderLeaf(props);\n if (newChildren !== void 0) {\n props.children = newChildren;\n }\n });\n if (renderLeafProp) {\n return renderLeafProp(props);\n }\n return /* @__PURE__ */ import_react5.default.createElement(DefaultLeaf2, props);\n };\n};\nvar useEditableProps = ({\n id = \"main\"\n}) => {\n const editor = usePlateEditorRef(id);\n const keyPlugins = usePlateSelectors(id).keyPlugins();\n const editableProps = usePlateSelectors(id).editableProps();\n const storeDecorate = usePlateSelectors(id).decorate();\n const storeRenderLeaf = usePlateSelectors(id).renderLeaf();\n const storeRenderElement = usePlateSelectors(id).renderElement();\n const isValid = editor && !!keyPlugins;\n const decorate = (0, import_react5.useMemo)(() => {\n if (!isValid)\n return;\n return pipeDecorate(editor, storeDecorate !== null && storeDecorate !== void 0 ? storeDecorate : editableProps === null || editableProps === void 0 ? void 0 : editableProps.decorate);\n }, [editableProps === null || editableProps === void 0 ? void 0 : editableProps.decorate, editor, isValid, storeDecorate]);\n const renderElement = (0, import_react5.useMemo)(() => {\n if (!isValid)\n return;\n return pipeRenderElement(editor, storeRenderElement !== null && storeRenderElement !== void 0 ? storeRenderElement : editableProps === null || editableProps === void 0 ? void 0 : editableProps.renderElement);\n }, [editableProps === null || editableProps === void 0 ? void 0 : editableProps.renderElement, editor, isValid, storeRenderElement]);\n const renderLeaf = (0, import_react5.useMemo)(() => {\n if (!isValid)\n return;\n return pipeRenderLeaf(editor, storeRenderLeaf !== null && storeRenderLeaf !== void 0 ? storeRenderLeaf : editableProps === null || editableProps === void 0 ? void 0 : editableProps.renderLeaf);\n }, [editableProps === null || editableProps === void 0 ? void 0 : editableProps.renderLeaf, editor, isValid, storeRenderLeaf]);\n const props = useDeepCompareMemo(() => {\n if (!isValid)\n return {};\n const _props = {\n decorate,\n renderElement,\n renderLeaf\n };\n DOM_HANDLERS.forEach((handlerKey) => {\n const handler = pipeHandler(editor, {\n editableProps,\n handlerKey\n });\n if (handler) {\n _props[handlerKey] = handler;\n }\n });\n return _props;\n }, [decorate, editableProps, isValid, renderElement, renderLeaf]);\n return useDeepCompareMemo(() => __spreadValues(__spreadValues({}, omit_1(editableProps, [...DOM_HANDLERS, \"renderElement\", \"renderLeaf\"])), props), [editableProps, props]);\n};\nvar usePlateStoreEffects = ({\n id,\n value: valueProp,\n enabled: enabledProp = true,\n onChange,\n editableProps,\n plugins,\n decorate,\n renderElement,\n renderLeaf\n}) => {\n const plateActions = getPlateActions(id);\n (0, import_react5.useEffect)(() => {\n if (!isUndefined(valueProp)) {\n valueProp && plateActions.value(valueProp);\n }\n }, [valueProp, plateActions]);\n (0, import_react5.useEffect)(() => {\n if (!isUndefined(enabledProp)) {\n plateActions.enabled(enabledProp);\n }\n }, [enabledProp, plateActions]);\n (0, import_react5.useEffect)(() => {\n if (!isUndefined(onChange)) {\n plateActions.onChange(onChange);\n }\n }, [onChange, plateActions]);\n useDeepCompareEffect(() => {\n if (!isUndefined(editableProps)) {\n plateActions.editableProps(editableProps);\n }\n }, [editableProps, plateActions]);\n (0, import_react5.useEffect)(() => {\n if (!isUndefined(decorate)) {\n plateActions.decorate(decorate);\n }\n }, [decorate, plateActions]);\n (0, import_react5.useEffect)(() => {\n if (!isUndefined(renderElement)) {\n plateActions.renderElement(renderElement);\n }\n }, [renderElement, plateActions]);\n (0, import_react5.useEffect)(() => {\n if (!isUndefined(renderLeaf)) {\n plateActions.renderLeaf(renderLeaf);\n }\n }, [renderLeaf, plateActions]);\n (0, import_react5.useEffect)(() => {\n if (!isUndefined(plugins)) {\n plateActions.plugins(plugins);\n }\n }, [plugins, plateActions]);\n};\nvar usePlateEffects = ({\n id = \"main\",\n editor: editorProp,\n initialValue,\n normalizeInitialValue,\n plugins: pluginsProp,\n disableCorePlugins,\n editableProps,\n onChange,\n value,\n enabled: enabledProp\n}) => {\n const editor = usePlateEditorRef(id);\n const enabled = usePlateSelectors(id).enabled();\n const plugins = usePlateSelectors(id).plugins();\n const prevEditor = (0, import_react5.useRef)(editor);\n const prevPlugins = (0, import_react5.useRef)(plugins);\n const plateActions = getPlateActions(id);\n (0, import_react5.useEffect)(() => {\n initialValue && plateActions.value(initialValue);\n }, [plateActions]);\n usePlateStoreEffects({\n editableProps,\n onChange,\n id,\n value,\n enabled: enabledProp,\n plugins: pluginsProp\n });\n (0, import_react5.useEffect)(() => {\n if (editor && !enabled) {\n plateActions.editor(null);\n }\n }, [enabled, editor, plateActions]);\n (0, import_react5.useEffect)(() => {\n if (!editor && enabled) {\n var _ref;\n plateActions.editor((_ref = editorProp) !== null && _ref !== void 0 ? _ref : withPlate(createEditor(), {\n id,\n plugins: pluginsProp,\n disableCorePlugins\n }));\n }\n }, [editorProp, id, plugins, editor, enabled, disableCorePlugins, plateActions, pluginsProp]);\n (0, import_react5.useEffect)(() => {\n if (editor && prevEditor.current === editor && prevPlugins.current !== plugins) {\n setPlatePlugins(editor, {\n plugins,\n disableCorePlugins\n });\n prevPlugins.current = plugins;\n }\n }, [plugins, editor, disableCorePlugins]);\n (0, import_react5.useEffect)(() => {\n if (editor && normalizeInitialValue) {\n Editor.normalize(editor, {\n force: true\n });\n }\n }, [editor, normalizeInitialValue]);\n (0, import_react5.useEffect)(() => {\n prevEditor.current = editor;\n }, [editor]);\n};\nvar pipeOnChange = (editor) => {\n const onChanges = editor.plugins.flatMap((plugin2) => {\n var _plugin$handlers$onCh, _plugin$handlers, _plugin$handlers$onCh2;\n return (_plugin$handlers$onCh = (_plugin$handlers = plugin2.handlers) === null || _plugin$handlers === void 0 ? void 0 : (_plugin$handlers$onCh2 = _plugin$handlers.onChange) === null || _plugin$handlers$onCh2 === void 0 ? void 0 : _plugin$handlers$onCh2.call(_plugin$handlers, editor, plugin2)) !== null && _plugin$handlers$onCh !== void 0 ? _plugin$handlers$onCh : [];\n });\n return (nodes) => {\n return onChanges.some((handler) => {\n if (!handler) {\n return false;\n }\n const shouldTreatEventAsHandled = handler(nodes);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return false;\n });\n };\n};\nvar useSlateProps = ({\n id\n} = {}) => {\n const editor = usePlateEditorRef(id);\n const keyPlugins = usePlateSelectors(id).keyPlugins();\n const value = usePlateSelectors(id).value();\n const onChangeProp = usePlateSelectors(id).onChange();\n const onChange = (0, import_react5.useCallback)((newValue) => {\n if (!editor || !keyPlugins)\n return;\n const eventIsHandled = pipeOnChange(editor)(newValue);\n if (!eventIsHandled) {\n onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(newValue);\n }\n getPlateActions(id).value(newValue);\n }, [onChangeProp, editor, id, keyPlugins]);\n return (0, import_react5.useMemo)(() => {\n if (!editor)\n return {};\n return {\n key: editor.key,\n editor,\n onChange,\n value\n };\n }, [editor, onChange, value]);\n};\nvar usePlate = (options) => {\n const {\n id\n } = options;\n usePlateEffects(options);\n return {\n slateProps: useSlateProps({\n id\n }),\n editableProps: useEditableProps({\n id\n })\n };\n};\nvar useEditorRef = () => useSlateStatic();\nvar EditorRefPluginEffect = ({\n plugin: plugin2\n}) => {\n var _plugin$useHooks;\n const editor = useEditorRef();\n (_plugin$useHooks = plugin2.useHooks) === null || _plugin$useHooks === void 0 ? void 0 : _plugin$useHooks.call(plugin2, editor, plugin2);\n return null;\n};\nvar EditorRefEffect = ({\n id\n}) => {\n const editor = useEditorRef();\n usePlateSelectors(id).keyPlugins();\n return /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null, editor.plugins.map((plugin2) => /* @__PURE__ */ import_react5.default.createElement(EditorRefPluginEffect, {\n key: plugin2.key,\n plugin: plugin2\n })));\n};\nvar useEditorState = () => useSlate();\nvar EditorStateEffect = /* @__PURE__ */ (0, import_react5.memo)(({\n id\n}) => {\n const editorState = useEditorState();\n (0, import_react5.useEffect)(() => {\n getPlateActions(id).incrementKey(\"keyEditor\");\n });\n (0, import_react5.useEffect)(() => {\n getPlateActions(id).incrementKey(\"keySelection\");\n }, [editorState.selection, id]);\n return null;\n});\nvar usePlatesStoreEffect = (id, props) => {\n (0, import_react5.useEffect)(() => {\n if (!platesSelectors.has(id)) {\n platesActions.set(id, props);\n }\n }, [id]);\n};\nvar PlateContent = (_a) => {\n var _b = _a, {\n children,\n renderEditable\n } = _b, options = __objRest(_b, [\n \"children\",\n \"renderEditable\"\n ]);\n const {\n slateProps,\n editableProps\n } = usePlate(options);\n if (!slateProps.editor)\n return null;\n const editable = /* @__PURE__ */ import_react5.default.createElement(Editable, editableProps);\n return /* @__PURE__ */ import_react5.default.createElement(Slate, slateProps, children, /* @__PURE__ */ import_react5.default.createElement(EditorStateEffect, {\n id: options.id\n }), /* @__PURE__ */ import_react5.default.createElement(EditorRefEffect, {\n id: options.id\n }), renderEditable ? renderEditable(editable) : editable);\n};\nvar Plate = (props) => {\n const _a = props, {\n id = \"main\"\n } = _a, state = __objRest(_a, [\n \"id\"\n ]);\n const hasId = usePlatesSelectors.has(id);\n (0, import_react5.useEffect)(() => () => {\n platesActions.unset(id);\n }, [id]);\n usePlatesStoreEffect(id, state);\n if (!hasId)\n return null;\n return /* @__PURE__ */ import_react5.default.createElement(Provider, {\n initialValues: [[plateIdAtom, id]]\n }, /* @__PURE__ */ import_react5.default.createElement(PlateContent, props));\n};\nvar useEventEditorId = () => {\n const focus = useEventEditorSelectors.focus();\n const blur = useEventEditorSelectors.blur();\n const last2 = useEventEditorSelectors.last();\n if (focus)\n return focus;\n if (blur)\n return blur;\n return last2;\n};\nvar useEventPlateId = (id) => {\n var _ref, _ref2;\n const plateId = usePlateId();\n const eventEditorId = useEventEditorId();\n return (_ref = (_ref2 = id !== null && id !== void 0 ? id : plateId) !== null && _ref2 !== void 0 ? _ref2 : eventEditorId) !== null && _ref !== void 0 ? _ref : \"main\";\n};\nvar PlateProvider = ({\n id = \"main\",\n children\n}) => {\n const hasId = usePlatesSelectors.has(id);\n usePlatesStoreEffect(id);\n if (!hasId)\n return null;\n return /* @__PURE__ */ import_react5.default.createElement(Provider, {\n key: id,\n initialValues: [[plateIdAtom, id]]\n }, children);\n};\nvar PlateEventProvider = ({\n id,\n children\n}) => {\n id = useEventPlateId(id);\n return /* @__PURE__ */ import_react5.default.createElement(PlateProvider, {\n id\n }, children);\n};\nvar withPlateEventProvider = (Component2, hocProps) => withHOC(PlateEventProvider, Component2, hocProps);\nvar CLONE_DEEP_FLAG = 1;\nvar CLONE_SYMBOLS_FLAG = 4;\nfunction cloneDeep(value) {\n return _baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\nvar cloneDeep_1 = cloneDeep;\nvar createPlugins = (plugins, {\n components: components2,\n overrideByKey: overrideByKey2\n} = {}) => {\n let allOverrideByKey = {};\n if (overrideByKey2) {\n allOverrideByKey = cloneDeep_1(overrideByKey2);\n }\n if (components2) {\n Object.keys(components2).forEach((key) => {\n if (!allOverrideByKey[key])\n allOverrideByKey[key] = {};\n allOverrideByKey[key].component = components2[key];\n });\n }\n if (Object.keys(allOverrideByKey).length) {\n return plugins.map((plugin2) => {\n return overridePluginsByKey(plugin2, allOverrideByKey);\n });\n }\n return plugins;\n};\nvar CARRIAGE_RETURN = \"\\r\";\nvar LINE_FEED = \"\\n\";\nvar NO_BREAK_SPACE = \"\\xA0\";\nvar SPACE2 = \" \";\nvar TAB = \"\t\";\nvar ZERO_WIDTH_SPACE = \"\\u200B\";\nvar traverseHtmlNode = (node, callback) => {\n const keepTraversing = callback(node);\n if (!keepTraversing) {\n return;\n }\n let child = node.firstChild;\n while (child) {\n const currentChild = child;\n const previousChild = child.previousSibling;\n child = child.nextSibling;\n traverseHtmlNode(currentChild, callback);\n if (!currentChild.previousSibling && !currentChild.nextSibling && !currentChild.parentNode && child && previousChild !== child.previousSibling && child.parentNode) {\n if (previousChild) {\n child = previousChild.nextSibling;\n } else {\n child = node.firstChild;\n }\n } else if (!currentChild.previousSibling && !currentChild.nextSibling && !currentChild.parentNode && child && !child.previousSibling && !child.nextSibling && !child.parentNode) {\n if (previousChild) {\n if (previousChild.nextSibling) {\n child = previousChild.nextSibling.nextSibling;\n } else {\n child = null;\n }\n } else if (node.firstChild) {\n child = node.firstChild.nextSibling;\n }\n }\n }\n};\nvar traverseHtmlElements = (rootNode, callback) => {\n traverseHtmlNode(rootNode, (node) => {\n if (!isHtmlElement(node)) {\n return true;\n }\n return callback(node);\n });\n};\nvar cleanHtmlBrElements = (rootNode) => {\n traverseHtmlElements(rootNode, (element4) => {\n if (element4.tagName !== \"BR\") {\n return true;\n }\n const replacementTextNode = document.createTextNode(LINE_FEED);\n if (element4.parentElement) {\n element4.parentElement.replaceChild(replacementTextNode, element4);\n }\n return false;\n });\n};\nvar cleanHtmlCrLf = (html2) => {\n return html2.replace(/(\\r\\n|\\r)/gm, \"\\n\");\n};\nvar ALLOWED_EMPTY_ELEMENTS = [\"BR\", \"IMG\"];\nvar isEmpty = (element4) => {\n return !ALLOWED_EMPTY_ELEMENTS.includes(element4.nodeName) && !element4.innerHTML.trim();\n};\nvar removeIfEmpty = (element4) => {\n if (isEmpty(element4)) {\n const {\n parentElement\n } = element4;\n element4.remove();\n if (parentElement) {\n removeIfEmpty(parentElement);\n }\n }\n};\nvar cleanHtmlEmptyElements = (rootNode) => {\n traverseHtmlElements(rootNode, (element4) => {\n removeIfEmpty(element4);\n return true;\n });\n};\nvar replaceTagName = (element4, tagName) => {\n const newElement = document.createElement(tagName);\n newElement.innerHTML = element4.innerHTML;\n for (const {\n name\n } of element4.attributes) {\n const value = element4.getAttribute(name);\n if (value) {\n newElement.setAttribute(name, value);\n }\n }\n if (element4.parentNode) {\n element4.parentNode.replaceChild(newElement, element4);\n }\n return newElement;\n};\nvar cleanHtmlFontElements = (rootNode) => {\n traverseHtmlElements(rootNode, (element4) => {\n if (element4.tagName === \"FONT\") {\n if (element4.textContent) {\n replaceTagName(element4, \"span\");\n } else {\n element4.remove();\n }\n }\n return true;\n });\n};\nvar isHtmlFragmentHref = (href) => href.startsWith(\"#\");\nvar unwrapHtmlElement = (element4) => {\n element4.outerHTML = element4.innerHTML;\n};\nvar cleanHtmlLinkElements = (rootNode) => {\n traverseHtmlElements(rootNode, (element4) => {\n if (element4.tagName !== \"A\") {\n return true;\n }\n const href = element4.getAttribute(\"href\");\n if (!href || isHtmlFragmentHref(href)) {\n unwrapHtmlElement(element4);\n }\n if (href && element4.querySelector(\"img\")) {\n for (const span of element4.querySelectorAll(\"span\")) {\n if (!span.innerText) {\n unwrapHtmlElement(span);\n }\n }\n }\n return true;\n });\n};\nvar traverseHtmlTexts = (rootNode, callback) => {\n traverseHtmlNode(rootNode, (node) => {\n if (!isHtmlText(node)) {\n return true;\n }\n return callback(node);\n });\n};\nvar cleanHtmlTextNodes = (rootNode) => {\n traverseHtmlTexts(rootNode, (textNode) => {\n if (/^\\n\\s*$/.test(textNode.data) && (textNode.previousElementSibling || textNode.nextElementSibling)) {\n textNode.remove();\n return true;\n }\n textNode.data = textNode.data.replace(/\\n\\s*/g, \"\\n\");\n if (textNode.data.includes(CARRIAGE_RETURN) || textNode.data.includes(LINE_FEED) || textNode.data.includes(NO_BREAK_SPACE)) {\n const hasSpace = textNode.data.includes(SPACE2);\n const hasNonWhitespace = /\\S/.test(textNode.data);\n const hasLineFeed = textNode.data.includes(LINE_FEED);\n if (!(hasSpace || hasNonWhitespace) && !hasLineFeed) {\n if (textNode.data === NO_BREAK_SPACE) {\n textNode.data = SPACE2;\n return true;\n }\n textNode.remove();\n return true;\n }\n if (textNode.previousSibling && textNode.previousSibling.nodeName === \"BR\" && textNode.parentElement) {\n textNode.parentElement.removeChild(textNode.previousSibling);\n const matches = textNode.data.match(/^[\\r\\n]+/);\n const offset3 = matches ? matches[0].length : 0;\n textNode.data = textNode.data.substring(offset3).replace(new RegExp(LINE_FEED, \"g\"), SPACE2).replace(new RegExp(CARRIAGE_RETURN, \"g\"), SPACE2);\n textNode.data = `\n${textNode.data}`;\n } else {\n textNode.data = textNode.data.replace(new RegExp(LINE_FEED, \"g\"), SPACE2).replace(new RegExp(CARRIAGE_RETURN, \"g\"), SPACE2);\n }\n }\n return true;\n });\n};\nvar isHtmlBlockElement = (element4) => {\n const blockRegex = /^(address|blockquote|body|center|dir|div|dl|fieldset|form|h[1-6]|hr|isindex|menu|noframes|noscript|ol|p|pre|table|ul|dd|dt|frameset|li|tbody|td|tfoot|th|thead|tr|html)$/i;\n return blockRegex.test(element4.nodeName);\n};\nvar copyBlockMarksToSpanChild = (rootNode) => {\n traverseHtmlElements(rootNode, (element4) => {\n const el = element4;\n const styleAttribute = element4.getAttribute(\"style\");\n if (!styleAttribute)\n return true;\n if (isHtmlBlockElement(el)) {\n const {\n style: {\n backgroundColor,\n color,\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n textDecoration\n }\n } = el;\n if (backgroundColor || color || fontFamily || fontSize || fontStyle || fontWeight || textDecoration) {\n const span = document.createElement(\"span\");\n if (![\"initial\", \"inherit\"].includes(color)) {\n span.style.color = color;\n }\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n if (![\"normal\", \"initial\", \"inherit\"].includes(color)) {\n span.style.fontStyle = fontStyle;\n }\n if (![\"normal\", 400].includes(fontWeight)) {\n span.style.fontWeight = fontWeight;\n }\n span.style.textDecoration = textDecoration;\n span.innerHTML = el.innerHTML;\n element4.innerHTML = span.outerHTML;\n }\n }\n return true;\n });\n};\nvar findHtmlElement = (rootNode, predicate) => {\n let res = null;\n traverseHtmlElements(rootNode, (node) => {\n if (predicate(node)) {\n res = node;\n return false;\n }\n return true;\n });\n return res;\n};\nvar someHtmlElement = (rootNode, predicate) => {\n return !!findHtmlElement(rootNode, predicate);\n};\nvar acceptNode = () => NodeFilter.FILTER_ACCEPT;\nvar getHtmlComments = (node) => {\n const comments = [];\n const iterator = document.createNodeIterator(node, NodeFilter.SHOW_COMMENT, {\n acceptNode\n });\n let currentNode = iterator.nextNode();\n while (currentNode) {\n if (currentNode.nodeValue) {\n comments.push(currentNode.nodeValue);\n }\n currentNode = iterator.nextNode();\n }\n return comments;\n};\nvar isHtmlComment = (node) => node.nodeType === Node.COMMENT_NODE;\nvar postCleanHtml = (html2) => {\n const cleanHtml = html2.trim().replace(new RegExp(ZERO_WIDTH_SPACE, \"g\"), \"\");\n return `${cleanHtml}`;\n};\nvar removeBeforeHtml = (html2) => {\n const index7 = html2.indexOf(\" {\n const index7 = html2.lastIndexOf(\"\");\n if (index7 === -1) {\n return html2;\n }\n return html2.substring(0, index7 + \"\".length);\n};\nvar removeHtmlSurroundings = (html2) => {\n return removeBeforeHtml(removeAfterHtml(html2));\n};\nvar cleaners = [removeHtmlSurroundings, cleanHtmlCrLf];\nvar preCleanHtml = (html2) => {\n return cleaners.reduce((result, clean3) => clean3(result), html2);\n};\nvar traverseHtmlComments = (rootNode, callback) => {\n traverseHtmlNode(rootNode, (node) => {\n if (!isHtmlComment(node)) {\n return true;\n }\n return callback(node);\n });\n};\nvar removeHtmlNodesBetweenComments = (rootNode, start3, end3) => {\n const isClosingComment = (node) => isHtmlComment(node) && node.data === end3;\n traverseHtmlComments(rootNode, (comment) => {\n if (comment.data === start3) {\n let node = comment.nextSibling;\n comment.remove();\n while (node && !isClosingComment(node)) {\n const {\n nextSibling\n } = node;\n node.remove();\n node = nextSibling;\n }\n if (node && isClosingComment(node)) {\n node.remove();\n }\n }\n return true;\n });\n};\nvar usePlateEditorState = (id) => {\n usePlateSelectors(id).keyEditor();\n return usePlateEditorRef(id);\n};\nvar getKeysByTypes = (editor, type) => {\n const types = castArray_1(type);\n const found = Object.values(editor.pluginsByKey).filter((plugin2) => {\n return types.includes(plugin2.type);\n });\n return found.map((p4) => p4.key);\n};\nvar getPluginInjectProps = (editor, key) => {\n var _getPlugin$inject$pro, _getPlugin$inject;\n return (_getPlugin$inject$pro = (_getPlugin$inject = getPlugin(editor, key).inject) === null || _getPlugin$inject === void 0 ? void 0 : _getPlugin$inject.props) !== null && _getPlugin$inject$pro !== void 0 ? _getPlugin$inject$pro : {};\n};\nvar getPluginOptions = (editor, key) => {\n var _getPlugin$options;\n return (_getPlugin$options = getPlugin(editor, key).options) !== null && _getPlugin$options !== void 0 ? _getPlugin$options : {};\n};\nvar hexToBase64 = (hex) => {\n const hexPairs = hex.match(/\\w{2}/g) || [];\n const binary = hexPairs.map((hexPair) => String.fromCharCode(parseInt(hexPair, 16)));\n return btoa(binary.join(\"\"));\n};\nvar mapInjectPropsToPlugin = (editor, plugin2, injectedPlugin) => {\n var _plugin$inject$props;\n const validTypes = (_plugin$inject$props = plugin2.inject.props) === null || _plugin$inject$props === void 0 ? void 0 : _plugin$inject$props.validTypes;\n if (!validTypes)\n return;\n const keys3 = getKeysByTypes(editor, validTypes);\n const injected = {};\n keys3.forEach((key) => {\n injected[key] = injectedPlugin;\n });\n return {\n inject: {\n pluginsByKey: injected\n }\n };\n};\nvar mockPlugin = (plugin2) => __spreadValues({\n key: \"\",\n type: \"\",\n editor: {},\n inject: {},\n options: {}\n}, plugin2);\n\n// node_modules/@udecode/plate-alignment/dist/index.es.js\nvar KEY_ALIGN = \"align\";\nvar createAlignPlugin = createPluginFactory({\n key: KEY_ALIGN,\n then: (editor) => ({\n inject: {\n props: {\n nodeKey: KEY_ALIGN,\n defaultNodeValue: \"left\",\n styleKey: \"textAlign\",\n validNodeValues: [\"left\", \"center\", \"right\", \"justify\"],\n validTypes: [getPluginType(editor, ELEMENT_DEFAULT)]\n }\n },\n then: (_4, plugin2) => mapInjectPropsToPlugin(editor, plugin2, {\n deserializeHtml: {\n getNode: (el, node) => {\n if (el.style.textAlign) {\n node[plugin2.key] = el.style.textAlign;\n }\n }\n }\n })\n })\n});\nvar setAlign = (editor, {\n key = KEY_ALIGN,\n value,\n setNodesOptions\n}) => {\n const {\n validTypes,\n defaultNodeValue,\n nodeKey\n } = getPluginInjectProps(editor, key);\n const match2 = (n5) => Editor.isBlock(editor, n5) && !!validTypes && validTypes.includes(n5.type);\n if (value === defaultNodeValue) {\n unsetNodes(editor, nodeKey, __spreadValues({\n match: match2\n }, setNodesOptions));\n } else {\n setNodes(editor, {\n [nodeKey]: value\n }, __spreadValues({\n match: match2\n }, setNodesOptions));\n }\n};\n\n// node_modules/@udecode/plate-autoformat/dist/index.es.js\nvar isArray3 = Array.isArray;\nvar isArray_12 = isArray3;\nfunction castArray2() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray_12(value) ? value : [value];\n}\nvar castArray_12 = castArray2;\nvar getMatchRange = ({\n match: match2,\n trigger\n}) => {\n let start3;\n let end3;\n if (typeof match2 === \"object\") {\n start3 = match2.start;\n end3 = match2.end;\n } else {\n start3 = match2;\n end3 = start3.split(\"\").reverse().join(\"\");\n }\n const triggers = trigger ? castArray_12(trigger) : [end3.slice(-1)];\n end3 = trigger ? end3 : end3.slice(0, -1);\n return {\n start: start3,\n end: end3,\n triggers\n };\n};\nvar autoformatBlock = (editor, {\n text: text5,\n trigger,\n match: _match,\n type = ELEMENT_DEFAULT,\n allowSameTypeAbove = false,\n preFormat,\n format: format4,\n triggerAtBlockStart = true\n}) => {\n const matches = castArray_12(_match);\n for (const match2 of matches) {\n const {\n end: end3,\n triggers\n } = getMatchRange({\n match: {\n start: \"\",\n end: match2\n },\n trigger\n });\n if (!triggers.includes(text5))\n continue;\n let matchRange;\n if (triggerAtBlockStart) {\n matchRange = getRangeFromBlockStart(editor);\n const hasVoidNode = someNode(editor, {\n at: matchRange,\n match: (n5) => Editor.isVoid(editor, n5)\n });\n if (hasVoidNode)\n continue;\n const textFromBlockStart = getText(editor, matchRange);\n if (end3 !== textFromBlockStart)\n continue;\n } else {\n matchRange = getRangeBefore(editor, editor.selection, {\n matchString: end3\n });\n if (!matchRange)\n continue;\n }\n if (!allowSameTypeAbove) {\n const isBelowSameBlockType = someNode(editor, {\n match: {\n type\n }\n });\n if (isBelowSameBlockType)\n continue;\n }\n Transforms.delete(editor, {\n at: matchRange\n });\n preFormat === null || preFormat === void 0 ? void 0 : preFormat(editor);\n if (!format4) {\n setNodes(editor, {\n type\n }, {\n match: (n5) => Editor.isBlock(editor, n5)\n });\n } else {\n format4(editor);\n }\n return true;\n }\n return false;\n};\nvar isPreviousCharacterEmpty = (editor, at) => {\n const range = getRangeBefore(editor, at);\n if (range) {\n const text5 = getText(editor, range);\n if (text5) {\n const noWhiteSpaceRegex = new RegExp(`\\\\S+`);\n return !text5.match(noWhiteSpaceRegex);\n }\n }\n return true;\n};\nvar getMatchPoints = (editor, {\n start: start3,\n end: end3\n}) => {\n const selection = editor.selection;\n let beforeEndMatchPoint = selection.anchor;\n if (end3) {\n beforeEndMatchPoint = getPointBefore(editor, selection, {\n matchString: end3\n });\n if (!beforeEndMatchPoint)\n return;\n }\n let afterStartMatchPoint;\n let beforeStartMatchPoint;\n if (start3) {\n afterStartMatchPoint = getPointBefore(editor, beforeEndMatchPoint, {\n matchString: start3,\n skipInvalid: true,\n afterMatch: true\n });\n if (!afterStartMatchPoint)\n return;\n beforeStartMatchPoint = getPointBefore(editor, beforeEndMatchPoint, {\n matchString: start3,\n skipInvalid: true\n });\n if (!isPreviousCharacterEmpty(editor, beforeStartMatchPoint))\n return;\n }\n return {\n afterStartMatchPoint,\n beforeStartMatchPoint,\n beforeEndMatchPoint\n };\n};\nvar autoformatMark = (editor, {\n type,\n text: text5,\n trigger,\n match: _match,\n ignoreTrim\n}) => {\n if (!type)\n return false;\n const selection = editor.selection;\n const matches = castArray_12(_match);\n for (const match2 of matches) {\n const {\n start: start3,\n end: end3,\n triggers\n } = getMatchRange({\n match: match2,\n trigger\n });\n if (!triggers.includes(text5))\n continue;\n const matched = getMatchPoints(editor, {\n start: start3,\n end: end3\n });\n if (!matched)\n continue;\n const {\n afterStartMatchPoint,\n beforeEndMatchPoint,\n beforeStartMatchPoint\n } = matched;\n const matchRange = {\n anchor: afterStartMatchPoint,\n focus: beforeEndMatchPoint\n };\n if (!ignoreTrim) {\n const matchText = getText(editor, matchRange);\n if (matchText.trim() !== matchText)\n continue;\n }\n if (end3) {\n Transforms.delete(editor, {\n at: {\n anchor: beforeEndMatchPoint,\n focus: selection.anchor\n }\n });\n }\n const marks3 = castArray_12(type);\n Transforms.select(editor, matchRange);\n marks3.forEach((mark) => {\n editor.addMark(mark, true);\n });\n Transforms.collapse(editor, {\n edge: \"end\"\n });\n removeMark(editor, {\n key: marks3,\n shouldChange: false\n });\n Transforms.delete(editor, {\n at: {\n anchor: beforeStartMatchPoint,\n focus: afterStartMatchPoint\n }\n });\n return true;\n }\n return false;\n};\nvar autoformatText = (editor, {\n text: text5,\n match: _match,\n trigger,\n format: format4\n}) => {\n const selection = editor.selection;\n const matches = castArray_12(_match);\n for (const match2 of matches) {\n const {\n start: start3,\n end: end3,\n triggers\n } = getMatchRange({\n match: Array.isArray(format4) ? match2 : {\n start: \"\",\n end: match2\n },\n trigger\n });\n if (!triggers.includes(text5))\n continue;\n const matched = getMatchPoints(editor, {\n start: start3,\n end: end3\n });\n if (!matched)\n continue;\n const {\n afterStartMatchPoint,\n beforeEndMatchPoint,\n beforeStartMatchPoint\n } = matched;\n if (end3) {\n Transforms.delete(editor, {\n at: {\n anchor: beforeEndMatchPoint,\n focus: selection.anchor\n }\n });\n }\n if (typeof format4 === \"function\") {\n format4(editor, matched);\n } else {\n const formatEnd = Array.isArray(format4) ? format4[1] : format4;\n editor.insertText(formatEnd);\n if (beforeStartMatchPoint) {\n const formatStart = Array.isArray(format4) ? format4[0] : format4;\n Transforms.delete(editor, {\n at: {\n anchor: beforeStartMatchPoint,\n focus: afterStartMatchPoint\n }\n });\n Transforms.insertText(editor, formatStart, {\n at: beforeStartMatchPoint\n });\n }\n }\n return true;\n }\n return false;\n};\nvar withAutoformat = (editor, {\n options: {\n rules\n }\n}) => {\n const {\n insertText\n } = editor;\n editor.insertText = (text5) => {\n if (!isCollapsed(editor.selection))\n return insertText(text5);\n for (const rule of rules) {\n var _autoformatter$mode;\n const {\n mode = \"text\",\n insertTrigger,\n query\n } = rule;\n if (query && !query(editor, __spreadProps(__spreadValues({}, rule), {\n text: text5\n })))\n continue;\n const autoformatter = {\n block: autoformatBlock,\n mark: autoformatMark,\n text: autoformatText\n };\n if ((_autoformatter$mode = autoformatter[mode]) !== null && _autoformatter$mode !== void 0 && _autoformatter$mode.call(autoformatter, editor, __spreadProps(__spreadValues({}, rule), {\n text: text5\n }))) {\n return insertTrigger && insertText(text5);\n }\n }\n insertText(text5);\n };\n return editor;\n};\nvar KEY_AUTOFORMAT = \"autoformat\";\nvar createAutoformatPlugin = createPluginFactory({\n key: KEY_AUTOFORMAT,\n withOverrides: withAutoformat,\n options: {\n rules: []\n }\n});\nvar autoformatComparison = [{\n mode: \"text\",\n match: \"!>\",\n format: \"\\u226F\"\n}, {\n mode: \"text\",\n match: \"!<\",\n format: \"\\u226E\"\n}, {\n mode: \"text\",\n match: \">=\",\n format: \"\\u2265\"\n}, {\n mode: \"text\",\n match: \"<=\",\n format: \"\\u2264\"\n}, {\n mode: \"text\",\n match: \"!>=\",\n format: \"\\u2271\"\n}, {\n mode: \"text\",\n match: \"!<=\",\n format: \"\\u2270\"\n}];\nvar autoformatEquality = [{\n mode: \"text\",\n match: \"!=\",\n format: \"\\u2260\"\n}, {\n mode: \"text\",\n match: \"==\",\n format: \"\\u2261\"\n}, {\n mode: \"text\",\n match: [\"!==\", \"\\u2260=\"],\n format: \"\\u2262\"\n}, {\n mode: \"text\",\n match: \"~=\",\n format: \"\\u2248\"\n}, {\n mode: \"text\",\n match: \"!~=\",\n format: \"\\u2249\"\n}];\nvar autoformatFraction = [{\n mode: \"text\",\n match: \"1/2\",\n format: \"\\xBD\"\n}, {\n mode: \"text\",\n match: \"1/3\",\n format: \"\\u2153\"\n}, {\n mode: \"text\",\n match: \"1/4\",\n format: \"\\xBC\"\n}, {\n mode: \"text\",\n match: \"1/5\",\n format: \"\\u2155\"\n}, {\n mode: \"text\",\n match: \"1/6\",\n format: \"\\u2159\"\n}, {\n mode: \"text\",\n match: \"1/7\",\n format: \"\\u2150\"\n}, {\n mode: \"text\",\n match: \"1/8\",\n format: \"\\u215B\"\n}, {\n mode: \"text\",\n match: \"1/9\",\n format: \"\\u2151\"\n}, {\n mode: \"text\",\n match: \"1/10\",\n format: \"\\u2152\"\n}, {\n mode: \"text\",\n match: \"2/3\",\n format: \"\\u2154\"\n}, {\n mode: \"text\",\n match: \"2/5\",\n format: \"\\u2156\"\n}, {\n mode: \"text\",\n match: \"3/4\",\n format: \"\\xBE\"\n}, {\n mode: \"text\",\n match: \"3/5\",\n format: \"\\u2157\"\n}, {\n mode: \"text\",\n match: \"3/8\",\n format: \"\\u215C\"\n}, {\n mode: \"text\",\n match: \"4/5\",\n format: \"\\u2158\"\n}, {\n mode: \"text\",\n match: \"5/6\",\n format: \"\\u215A\"\n}, {\n mode: \"text\",\n match: \"5/8\",\n format: \"\\u215D\"\n}, {\n mode: \"text\",\n match: \"7/8\",\n format: \"\\u215E\"\n}];\nvar autoformatDivision = [{\n mode: \"text\",\n match: \"//\",\n format: \"\\xF7\"\n}];\nvar autoformatOperation = [{\n mode: \"text\",\n match: \"+-\",\n format: \"\\xB1\"\n}, {\n mode: \"text\",\n match: \"%%\",\n format: \"\\u2030\"\n}, {\n mode: \"text\",\n match: [\"%%%\", \"\\u2030%\"],\n format: \"\\u2031\"\n}, ...autoformatDivision];\nvar autoformatSubscriptNumbers = [{\n mode: \"text\",\n match: \"~0\",\n format: \"\\u2080\"\n}, {\n mode: \"text\",\n match: \"~1\",\n format: \"\\u2081\"\n}, {\n mode: \"text\",\n match: \"~2\",\n format: \"\\u2082\"\n}, {\n mode: \"text\",\n match: \"~3\",\n format: \"\\u2083\"\n}, {\n mode: \"text\",\n match: \"~4\",\n format: \"\\u2084\"\n}, {\n mode: \"text\",\n match: \"~5\",\n format: \"\\u2085\"\n}, {\n mode: \"text\",\n match: \"~6\",\n format: \"\\u2086\"\n}, {\n mode: \"text\",\n match: \"~7\",\n format: \"\\u2087\"\n}, {\n mode: \"text\",\n match: \"~8\",\n format: \"\\u2088\"\n}, {\n mode: \"text\",\n match: \"~9\",\n format: \"\\u2089\"\n}];\nvar autoformatSubscriptSymbols = [{\n mode: \"text\",\n match: \"~+\",\n format: \"\\u208A\"\n}, {\n mode: \"text\",\n match: \"~-\",\n format: \"\\u208B\"\n}];\nvar autoformatSuperscriptNumbers = [{\n mode: \"text\",\n match: \"^0\",\n format: \"\\u2070\"\n}, {\n mode: \"text\",\n match: \"^1\",\n format: \"\\xB9\"\n}, {\n mode: \"text\",\n match: \"^2\",\n format: \"\\xB2\"\n}, {\n mode: \"text\",\n match: \"^3\",\n format: \"\\xB3\"\n}, {\n mode: \"text\",\n match: \"^4\",\n format: \"\\u2074\"\n}, {\n mode: \"text\",\n match: \"^5\",\n format: \"\\u2075\"\n}, {\n mode: \"text\",\n match: \"^6\",\n format: \"\\u2076\"\n}, {\n mode: \"text\",\n match: \"^7\",\n format: \"\\u2077\"\n}, {\n mode: \"text\",\n match: \"^8\",\n format: \"\\u2078\"\n}, {\n mode: \"text\",\n match: \"^9\",\n format: \"\\u2079\"\n}];\nvar autoformatSuperscriptSymbols = [{\n mode: \"text\",\n match: \"^o\",\n format: \"\\xB0\"\n}, {\n mode: \"text\",\n match: \"^+\",\n format: \"\\u207A\"\n}, {\n mode: \"text\",\n match: \"^-\",\n format: \"\\u207B\"\n}];\nvar autoformatMath = [...autoformatComparison, ...autoformatEquality, ...autoformatOperation, ...autoformatFraction, ...autoformatSuperscriptSymbols, ...autoformatSubscriptSymbols, ...autoformatSuperscriptNumbers, ...autoformatSubscriptNumbers];\n\n// node_modules/@udecode/plate-block-quote/dist/index.es.js\nvar ELEMENT_BLOCKQUOTE = \"blockquote\";\nvar createBlockquotePlugin = createPluginFactory({\n key: ELEMENT_BLOCKQUOTE,\n isElement: true,\n deserializeHtml: {\n rules: [{\n validNodeName: \"BLOCKQUOTE\"\n }]\n },\n handlers: {\n onKeyDown: onKeyDownToggleElement\n },\n options: {\n hotkey: \"mod+shift+.\"\n }\n});\n\n// node_modules/@udecode/plate-code-block/dist/index.es.js\nvar import_prismjs = __toESM(require_prism());\nvar ELEMENT_CODE_BLOCK = \"code_block\";\nvar ELEMENT_CODE_LINE = \"code_line\";\nvar ELEMENT_CODE_SYNTAX = \"code_syntax\";\nvar CODE_BLOCK_LANGUAGES_POPULAR = {\n bash: \"Bash\",\n css: \"CSS\",\n git: \"Git\",\n graphql: \"GraphQL\",\n html: \"HTML\",\n javascript: \"JavaScript\",\n json: \"JSON\",\n jsx: \"JSX\",\n markdown: \"Markdown\",\n sql: \"SQL\",\n svg: \"SVG\",\n tsx: \"TSX\",\n typescript: \"TypeScript\",\n wasm: \"WebAssembly\"\n};\nvar CODE_BLOCK_LANGUAGES = {\n antlr4: \"ANTLR4\",\n bash: \"Bash\",\n c: \"C\",\n csharp: \"C#\",\n css: \"CSS\",\n coffeescript: \"CoffeeScript\",\n cmake: \"CMake\",\n dart: \"Dart\",\n django: \"Django\",\n docker: \"Docker\",\n ejs: \"EJS\",\n erlang: \"Erlang\",\n git: \"Git\",\n go: \"Go\",\n graphql: \"GraphQL\",\n groovy: \"Groovy\",\n html: \"HTML\",\n java: \"Java\",\n javascript: \"JavaScript\",\n json: \"JSON\",\n jsx: \"JSX\",\n kotlin: \"Kotlin\",\n latex: \"LaTeX\",\n less: \"Less\",\n lua: \"Lua\",\n makefile: \"Makefile\",\n markdown: \"Markdown\",\n matlab: \"MATLAB\",\n markup: \"Markup\",\n objectivec: \"Objective-C\",\n perl: \"Perl\",\n php: \"PHP\",\n powershell: \"PowerShell\",\n properties: \".properties\",\n protobuf: \"Protocol Buffers\",\n python: \"Python\",\n r: \"R\",\n ruby: \"Ruby\",\n sass: \"Sass (Sass)\",\n scss: \"Sass (Scss)\",\n scheme: \"Scheme\",\n sql: \"SQL\",\n shell: \"Shell\",\n swift: \"Swift\",\n svg: \"SVG\",\n tsx: \"TSX\",\n typescript: \"TypeScript\",\n wasm: \"WebAssembly\",\n yaml: \"YAML\",\n xml: \"XML\"\n};\nPrism.languages.antlr4 = {\n \"comment\": /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n \"string\": {\n pattern: /'(?:\\\\.|[^\\\\'\\r\\n])*'/,\n greedy: true\n },\n \"character-class\": {\n pattern: /\\[(?:\\\\.|[^\\\\\\]\\r\\n])*\\]/,\n greedy: true,\n alias: \"regex\",\n inside: {\n \"range\": {\n pattern: /([^[]|(?:^|[^\\\\])(?:\\\\\\\\)*\\\\\\[)-(?!\\])/,\n lookbehind: true,\n alias: \"punctuation\"\n },\n \"escape\": /\\\\(?:u(?:[a-fA-F\\d]{4}|\\{[a-fA-F\\d]+\\})|[pP]\\{[=\\w-]+\\}|[^\\r\\nupP])/,\n \"punctuation\": /[\\[\\]]/\n }\n },\n \"action\": {\n pattern: /\\{(?:[^{}]|\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\})*\\}/,\n greedy: true,\n inside: {\n \"content\": {\n pattern: /(\\{)[\\s\\S]+(?=\\})/,\n lookbehind: true\n },\n \"punctuation\": /[{}]/\n }\n },\n \"command\": {\n pattern: /(->\\s*(?!\\s))(?:\\s*(?:,\\s*)?\\b[a-z]\\w*(?:\\s*\\([^()\\r\\n]*\\))?)+(?=\\s*;)/i,\n lookbehind: true,\n inside: {\n \"function\": /\\b\\w+(?=\\s*(?:[,(]|$))/,\n \"punctuation\": /[,()]/\n }\n },\n \"annotation\": {\n pattern: /@\\w+(?:::\\w+)*/,\n alias: \"keyword\"\n },\n \"label\": {\n pattern: /#[ \\t]*\\w+/,\n alias: \"punctuation\"\n },\n \"keyword\": /\\b(?:catch|channels|finally|fragment|grammar|import|lexer|locals|mode|options|parser|returns|throws|tokens)\\b/,\n \"definition\": [\n {\n pattern: /\\b[a-z]\\w*(?=\\s*:)/,\n alias: [\"rule\", \"class-name\"]\n },\n {\n pattern: /\\b[A-Z]\\w*(?=\\s*:)/,\n alias: [\"token\", \"constant\"]\n }\n ],\n \"constant\": /\\b[A-Z][A-Z_]*\\b/,\n \"operator\": /\\.\\.|->|[|~]|[*+?]\\??/,\n \"punctuation\": /[;:()=]/\n};\nPrism.languages.g4 = Prism.languages.antlr4;\n(function(Prism2) {\n var envVars = \"\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b\";\n var commandAfterHeredoc = {\n pattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n lookbehind: true,\n alias: \"punctuation\",\n inside: null\n };\n var insideString = {\n \"bash\": commandAfterHeredoc,\n \"environment\": {\n pattern: RegExp(\"\\\\$\" + envVars),\n alias: \"constant\"\n },\n \"variable\": [\n {\n pattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n greedy: true,\n inside: {\n \"variable\": [\n {\n pattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n lookbehind: true\n },\n /^\\$\\(\\(/\n ],\n \"number\": /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n \"operator\": /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n \"punctuation\": /\\(\\(?|\\)\\)?|,|;/\n }\n },\n {\n pattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n greedy: true,\n inside: {\n \"variable\": /^\\$\\(|^`|\\)$|`$/\n }\n },\n {\n pattern: /\\$\\{[^}]+\\}/,\n greedy: true,\n inside: {\n \"operator\": /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n \"punctuation\": /[\\[\\]]/,\n \"environment\": {\n pattern: RegExp(\"(\\\\{)\" + envVars),\n lookbehind: true,\n alias: \"constant\"\n }\n }\n },\n /\\$(?:\\w+|[#?*!@$])/\n ],\n \"entity\": /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/\n };\n Prism2.languages.bash = {\n \"shebang\": {\n pattern: /^#!\\s*\\/.*/,\n alias: \"important\"\n },\n \"comment\": {\n pattern: /(^|[^\"{\\\\$])#.*/,\n lookbehind: true\n },\n \"function-name\": [\n {\n pattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n lookbehind: true,\n alias: \"function\"\n },\n {\n pattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n alias: \"function\"\n }\n ],\n \"for-or-select\": {\n pattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n alias: \"variable\",\n lookbehind: true\n },\n \"assign-left\": {\n pattern: /(^|[\\s;|&]|[<>]\\()\\w+(?=\\+?=)/,\n inside: {\n \"environment\": {\n pattern: RegExp(\"(^|[\\\\s;|&]|[<>]\\\\()\" + envVars),\n lookbehind: true,\n alias: \"constant\"\n }\n },\n alias: \"variable\",\n lookbehind: true\n },\n \"string\": [\n {\n pattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n },\n {\n pattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n lookbehind: true,\n greedy: true,\n inside: {\n \"bash\": commandAfterHeredoc\n }\n },\n {\n pattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n },\n {\n pattern: /(^|[^$\\\\])'[^']*'/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n greedy: true,\n inside: {\n \"entity\": insideString.entity\n }\n }\n ],\n \"environment\": {\n pattern: RegExp(\"\\\\$?\" + envVars),\n alias: \"constant\"\n },\n \"variable\": insideString.variable,\n \"function\": {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n \"keyword\": {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n \"builtin\": {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\\s;|&])/,\n lookbehind: true,\n alias: \"class-name\"\n },\n \"boolean\": {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:true|false)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n \"file-descriptor\": {\n pattern: /\\B&\\d\\b/,\n alias: \"important\"\n },\n \"operator\": {\n pattern: /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n inside: {\n \"file-descriptor\": {\n pattern: /^\\d/,\n alias: \"important\"\n }\n }\n },\n \"punctuation\": /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n \"number\": {\n pattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n lookbehind: true\n }\n };\n commandAfterHeredoc.inside = Prism2.languages.bash;\n var toBeCopied = [\n \"comment\",\n \"function-name\",\n \"for-or-select\",\n \"assign-left\",\n \"string\",\n \"environment\",\n \"function\",\n \"keyword\",\n \"builtin\",\n \"boolean\",\n \"file-descriptor\",\n \"operator\",\n \"punctuation\",\n \"number\"\n ];\n var inside = insideString.variable[1].inside;\n for (var i3 = 0; i3 < toBeCopied.length; i3++) {\n inside[toBeCopied[i3]] = Prism2.languages.bash[toBeCopied[i3]];\n }\n Prism2.languages.shell = Prism2.languages.bash;\n})(Prism);\nPrism.languages.c = Prism.languages.extend(\"clike\", {\n \"comment\": {\n pattern: /\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n \"class-name\": {\n pattern: /(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,\n lookbehind: true\n },\n \"keyword\": /\\b(?:__attribute__|_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\\b/,\n \"function\": /\\b[a-z_]\\w*(?=\\s*\\()/i,\n \"number\": /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n \"operator\": />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/\n});\nPrism.languages.insertBefore(\"c\", \"string\", {\n \"macro\": {\n pattern: /(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n lookbehind: true,\n greedy: true,\n alias: \"property\",\n inside: {\n \"string\": [\n {\n pattern: /^(#\\s*include\\s*)<[^>]+>/,\n lookbehind: true\n },\n Prism.languages.c[\"string\"]\n ],\n \"comment\": Prism.languages.c[\"comment\"],\n \"macro-name\": [\n {\n pattern: /(^#\\s*define\\s+)\\w+\\b(?!\\()/i,\n lookbehind: true\n },\n {\n pattern: /(^#\\s*define\\s+)\\w+\\b(?=\\()/i,\n lookbehind: true,\n alias: \"function\"\n }\n ],\n \"directive\": {\n pattern: /^(#\\s*)[a-z]+/,\n lookbehind: true,\n alias: \"keyword\"\n },\n \"directive-hash\": /^#/,\n \"punctuation\": /##|\\\\(?=[\\r\\n])/,\n \"expression\": {\n pattern: /\\S[\\s\\S]*/,\n inside: Prism.languages.c\n }\n }\n },\n \"constant\": /\\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\\b/\n});\ndelete Prism.languages.c[\"boolean\"];\nPrism.languages.cmake = {\n \"comment\": /#.*/,\n \"string\": {\n pattern: /\"(?:[^\\\\\"]|\\\\.)*\"/,\n greedy: true,\n inside: {\n \"interpolation\": {\n pattern: /\\$\\{(?:[^{}$]|\\$\\{[^{}$]*\\})*\\}/,\n inside: {\n \"punctuation\": /\\$\\{|\\}/,\n \"variable\": /\\w+/\n }\n }\n }\n },\n \"variable\": /\\b(?:CMAKE_\\w+|\\w+_(?:VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?|(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_(?:BINARY_DIR|DESCRIPTION|HOMEPAGE_URL|NAME|SOURCE_DIR|VERSION|VERSION_(?:MAJOR|MINOR|PATCH|TWEAK))|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE|XCODE_VERSION))\\b/,\n \"property\": /\\b(?:cxx_\\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\\w+|\\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|GLOBAL_KEYWORD|GLOBAL_PROJECT_TYPES|GLOBAL_ROOTNAMESPACE|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\\b/,\n \"keyword\": /\\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\\s*\\()\\b/,\n \"boolean\": /\\b(?:ON|OFF|TRUE|FALSE)\\b/,\n \"namespace\": /\\b(?:PROPERTIES|SHARED|PRIVATE|STATIC|PUBLIC|INTERFACE|TARGET_OBJECTS)\\b/,\n \"operator\": /\\b(?:NOT|AND|OR|MATCHES|LESS|GREATER|EQUAL|STRLESS|STRGREATER|STREQUAL|VERSION_LESS|VERSION_EQUAL|VERSION_GREATER|DEFINED)\\b/,\n \"inserted\": {\n pattern: /\\b\\w+::\\w+\\b/,\n alias: \"class-name\"\n },\n \"number\": /\\b\\d+(?:\\.\\d+)*\\b/,\n \"function\": /\\b[a-z_]\\w*(?=\\s*\\()\\b/i,\n \"punctuation\": /[()>}]|\\$[<{]/\n};\n(function(Prism2) {\n var comment = /#(?!\\{).+/;\n var interpolation = {\n pattern: /#\\{[^}]+\\}/,\n alias: \"variable\"\n };\n Prism2.languages.coffeescript = Prism2.languages.extend(\"javascript\", {\n \"comment\": comment,\n \"string\": [\n {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n greedy: true\n },\n {\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n greedy: true,\n inside: {\n \"interpolation\": interpolation\n }\n }\n ],\n \"keyword\": /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n \"class-member\": {\n pattern: /@(?!\\d)\\w+/,\n alias: \"variable\"\n }\n });\n Prism2.languages.insertBefore(\"coffeescript\", \"comment\", {\n \"multiline-comment\": {\n pattern: /###[\\s\\S]+?###/,\n alias: \"comment\"\n },\n \"block-regex\": {\n pattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n alias: \"regex\",\n inside: {\n \"comment\": comment,\n \"interpolation\": interpolation\n }\n }\n });\n Prism2.languages.insertBefore(\"coffeescript\", \"string\", {\n \"inline-javascript\": {\n pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n inside: {\n \"delimiter\": {\n pattern: /^`|`$/,\n alias: \"punctuation\"\n },\n \"script\": {\n pattern: /[\\s\\S]+/,\n alias: \"language-javascript\",\n inside: Prism2.languages.javascript\n }\n }\n },\n \"multiline-string\": [\n {\n pattern: /'''[\\s\\S]*?'''/,\n greedy: true,\n alias: \"string\"\n },\n {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: \"string\",\n inside: {\n interpolation\n }\n }\n ]\n });\n Prism2.languages.insertBefore(\"coffeescript\", \"keyword\", {\n \"property\": /(?!\\d)\\w+(?=\\s*:(?!:))/\n });\n delete Prism2.languages.coffeescript[\"template-string\"];\n Prism2.languages.coffee = Prism2.languages.coffeescript;\n})(Prism);\n(function(Prism2) {\n var keyword = /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/;\n var modName = /\\b(?!)\\w+(?:\\s*\\.\\s*\\w+)*\\b/.source.replace(//g, function() {\n return keyword.source;\n });\n Prism2.languages.cpp = Prism2.languages.extend(\"c\", {\n \"class-name\": [\n {\n pattern: RegExp(/(\\b(?:class|concept|enum|struct|typename)\\s+)(?!)\\w+/.source.replace(//g, function() {\n return keyword.source;\n })),\n lookbehind: true\n },\n /\\b[A-Z]\\w*(?=\\s*::\\s*\\w+\\s*\\()/,\n /\\b[A-Z_]\\w*(?=\\s*::\\s*~\\w+\\s*\\()/i,\n /\\b\\w+(?=\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\\s*::\\s*\\w+\\s*\\()/\n ],\n \"keyword\": keyword,\n \"number\": {\n pattern: /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+(?:\\.[\\da-f']*)?|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+(?:\\.[\\d']*)?|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]{0,4}/i,\n greedy: true\n },\n \"operator\": />>=?|<<=?|->|--|\\+\\+|&&|\\|\\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n \"boolean\": /\\b(?:true|false)\\b/\n });\n Prism2.languages.insertBefore(\"cpp\", \"string\", {\n \"module\": {\n pattern: RegExp(/(\\b(?:module|import)\\s+)/.source + \"(?:\" + /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|<[^<>\\r\\n]*>/.source + \"|\" + /(?:\\s*:\\s*)?|:\\s*/.source.replace(//g, function() {\n return modName;\n }) + \")\"),\n lookbehind: true,\n greedy: true,\n inside: {\n \"string\": /^[<\"][\\s\\S]+/,\n \"operator\": /:/,\n \"punctuation\": /\\./\n }\n },\n \"raw-string\": {\n pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n alias: \"string\",\n greedy: true\n }\n });\n Prism2.languages.insertBefore(\"cpp\", \"keyword\", {\n \"generic-function\": {\n pattern: /\\b(?!operator\\b)[a-z_]\\w*\\s*<(?:[^<>]|<[^<>]*>)*>(?=\\s*\\()/i,\n inside: {\n \"function\": /^\\w+/,\n \"generic\": {\n pattern: /<[\\s\\S]+/,\n alias: \"class-name\",\n inside: Prism2.languages.cpp\n }\n }\n }\n });\n Prism2.languages.insertBefore(\"cpp\", \"operator\", {\n \"double-colon\": {\n pattern: /::/,\n alias: \"punctuation\"\n }\n });\n Prism2.languages.insertBefore(\"cpp\", \"class-name\", {\n \"base-clause\": {\n pattern: /(\\b(?:class|struct)\\s+\\w+\\s*:\\s*)[^;{}\"'\\s]+(?:\\s+[^;{}\"'\\s]+)*(?=\\s*[;{])/,\n lookbehind: true,\n greedy: true,\n inside: Prism2.languages.extend(\"cpp\", {})\n }\n });\n Prism2.languages.insertBefore(\"inside\", \"double-colon\", {\n \"class-name\": /\\b[a-z_]\\w*\\b(?!\\s*::)/i\n }, Prism2.languages.cpp[\"base-clause\"]);\n})(Prism);\n(function(Prism2) {\n function replace(pattern, replacements) {\n return pattern.replace(/<<(\\d+)>>/g, function(m2, index7) {\n return \"(?:\" + replacements[+index7] + \")\";\n });\n }\n function re(pattern, replacements, flags) {\n return RegExp(replace(pattern, replacements), flags || \"\");\n }\n function nested(pattern, depthLog2) {\n for (var i3 = 0; i3 < depthLog2; i3++) {\n pattern = pattern.replace(/<>/g, function() {\n return \"(?:\" + pattern + \")\";\n });\n }\n return pattern.replace(/<>/g, \"[^\\\\s\\\\S]\");\n }\n var keywordKinds = {\n type: \"bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void\",\n typeDeclaration: \"class enum interface record struct\",\n contextual: \"add alias and ascending async await by descending from(?=\\\\s*(?:\\\\w|$)) get global group into init(?=\\\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\\\s*{)\",\n other: \"abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield\"\n };\n function keywordsToPattern(words) {\n return \"\\\\b(?:\" + words.trim().replace(/ /g, \"|\") + \")\\\\b\";\n }\n var typeDeclarationKeywords = keywordsToPattern(keywordKinds.typeDeclaration);\n var keywords = RegExp(keywordsToPattern(keywordKinds.type + \" \" + keywordKinds.typeDeclaration + \" \" + keywordKinds.contextual + \" \" + keywordKinds.other));\n var nonTypeKeywords = keywordsToPattern(keywordKinds.typeDeclaration + \" \" + keywordKinds.contextual + \" \" + keywordKinds.other);\n var nonContextualKeywords = keywordsToPattern(keywordKinds.type + \" \" + keywordKinds.typeDeclaration + \" \" + keywordKinds.other);\n var generic = nested(/<(?:[^<>;=+\\-*/%&|^]|<>)*>/.source, 2);\n var nestedRound = nested(/\\((?:[^()]|<>)*\\)/.source, 2);\n var name = /@?\\b[A-Za-z_]\\w*\\b/.source;\n var genericName = replace(/<<0>>(?:\\s*<<1>>)?/.source, [name, generic]);\n var identifier = replace(/(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*/.source, [nonTypeKeywords, genericName]);\n var array = /\\[\\s*(?:,\\s*)*\\]/.source;\n var typeExpressionWithoutTuple = replace(/<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?/.source, [identifier, array]);\n var tupleElement = replace(/[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source, [generic, nestedRound, array]);\n var tuple = replace(/\\(<<0>>+(?:,<<0>>+)+\\)/.source, [tupleElement]);\n var typeExpression = replace(/(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?/.source, [tuple, identifier, array]);\n var typeInside = {\n \"keyword\": keywords,\n \"punctuation\": /[<>()?,.:[\\]]/\n };\n var character = /'(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'/.source;\n var regularString = /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/.source;\n var verbatimString = /@\"(?:\"\"|\\\\[\\s\\S]|[^\\\\\"])*\"(?!\")/.source;\n Prism2.languages.csharp = Prism2.languages.extend(\"clike\", {\n \"string\": [\n {\n pattern: re(/(^|[^$\\\\])<<0>>/.source, [verbatimString]),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: re(/(^|[^@$\\\\])<<0>>/.source, [regularString]),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: RegExp(character),\n greedy: true,\n alias: \"character\"\n }\n ],\n \"class-name\": [\n {\n pattern: re(/(\\busing\\s+static\\s+)<<0>>(?=\\s*;)/.source, [identifier]),\n lookbehind: true,\n inside: typeInside\n },\n {\n pattern: re(/(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)/.source, [name, typeExpression]),\n lookbehind: true,\n inside: typeInside\n },\n {\n pattern: re(/(\\busing\\s+)<<0>>(?=\\s*=)/.source, [name]),\n lookbehind: true\n },\n {\n pattern: re(/(\\b<<0>>\\s+)<<1>>/.source, [typeDeclarationKeywords, genericName]),\n lookbehind: true,\n inside: typeInside\n },\n {\n pattern: re(/(\\bcatch\\s*\\(\\s*)<<0>>/.source, [identifier]),\n lookbehind: true,\n inside: typeInside\n },\n {\n pattern: re(/(\\bwhere\\s+)<<0>>/.source, [name]),\n lookbehind: true\n },\n {\n pattern: re(/(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>/.source, [typeExpressionWithoutTuple]),\n lookbehind: true,\n inside: typeInside\n },\n {\n pattern: re(/\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))/.source, [typeExpression, nonContextualKeywords, name]),\n inside: typeInside\n }\n ],\n \"keyword\": keywords,\n \"number\": /(?:\\b0(?:x[\\da-f_]*[\\da-f]|b[01_]*[01])|(?:\\B\\.\\d+(?:_+\\d+)*|\\b\\d+(?:_+\\d+)*(?:\\.\\d+(?:_+\\d+)*)?)(?:e[-+]?\\d+(?:_+\\d+)*)?)(?:ul|lu|[dflmu])?\\b/i,\n \"operator\": />>=?|<<=?|[-=]>|([-+&|])\\1|~|\\?\\?=?|[-+*/%&|^!=<>]=?/,\n \"punctuation\": /\\?\\.?|::|[{}[\\];(),.:]/\n });\n Prism2.languages.insertBefore(\"csharp\", \"number\", {\n \"range\": {\n pattern: /\\.\\./,\n alias: \"operator\"\n }\n });\n Prism2.languages.insertBefore(\"csharp\", \"punctuation\", {\n \"named-parameter\": {\n pattern: re(/([(,]\\s*)<<0>>(?=\\s*:)/.source, [name]),\n lookbehind: true,\n alias: \"punctuation\"\n }\n });\n Prism2.languages.insertBefore(\"csharp\", \"class-name\", {\n \"namespace\": {\n pattern: re(/(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])/.source, [name]),\n lookbehind: true,\n inside: {\n \"punctuation\": /\\./\n }\n },\n \"type-expression\": {\n pattern: re(/(\\b(?:default|typeof|sizeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))/.source, [nestedRound]),\n lookbehind: true,\n alias: \"class-name\",\n inside: typeInside\n },\n \"return-type\": {\n pattern: re(/<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))/.source, [typeExpression, identifier]),\n inside: typeInside,\n alias: \"class-name\"\n },\n \"constructor-invocation\": {\n pattern: re(/(\\bnew\\s+)<<0>>(?=\\s*[[({])/.source, [typeExpression]),\n lookbehind: true,\n inside: typeInside,\n alias: \"class-name\"\n },\n \"generic-method\": {\n pattern: re(/<<0>>\\s*<<1>>(?=\\s*\\()/.source, [name, generic]),\n inside: {\n \"function\": re(/^<<0>>/.source, [name]),\n \"generic\": {\n pattern: RegExp(generic),\n alias: \"class-name\",\n inside: typeInside\n }\n }\n },\n \"type-list\": {\n pattern: re(/\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))/.source, [typeDeclarationKeywords, genericName, name, typeExpression, keywords.source, nestedRound, /\\bnew\\s*\\(\\s*\\)/.source]),\n lookbehind: true,\n inside: {\n \"record-arguments\": {\n pattern: re(/(^(?!new\\s*\\()<<0>>\\s*)<<1>>/.source, [genericName, nestedRound]),\n lookbehind: true,\n greedy: true,\n inside: Prism2.languages.csharp\n },\n \"keyword\": keywords,\n \"class-name\": {\n pattern: RegExp(typeExpression),\n greedy: true,\n inside: typeInside\n },\n \"punctuation\": /[,()]/\n }\n },\n \"preprocessor\": {\n pattern: /(^[\\t ]*)#.*/m,\n lookbehind: true,\n alias: \"property\",\n inside: {\n \"directive\": {\n pattern: /(#)\\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\\b/,\n lookbehind: true,\n alias: \"keyword\"\n }\n }\n }\n });\n var regularStringOrCharacter = regularString + \"|\" + character;\n var regularStringCharacterOrComment = replace(/\\/(?![*/])|\\/\\/[^\\r\\n]*[\\r\\n]|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>/.source, [regularStringOrCharacter]);\n var roundExpression = nested(replace(/[^\"'/()]|<<0>>|\\(<>*\\)/.source, [regularStringCharacterOrComment]), 2);\n var attrTarget = /\\b(?:assembly|event|field|method|module|param|property|return|type)\\b/.source;\n var attr = replace(/<<0>>(?:\\s*\\(<<1>>*\\))?/.source, [identifier, roundExpression]);\n Prism2.languages.insertBefore(\"csharp\", \"class-name\", {\n \"attribute\": {\n pattern: re(/((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])/.source, [attrTarget, attr]),\n lookbehind: true,\n greedy: true,\n inside: {\n \"target\": {\n pattern: re(/^<<0>>(?=\\s*:)/.source, [attrTarget]),\n alias: \"keyword\"\n },\n \"attribute-arguments\": {\n pattern: re(/\\(<<0>>*\\)/.source, [roundExpression]),\n inside: Prism2.languages.csharp\n },\n \"class-name\": {\n pattern: RegExp(identifier),\n inside: {\n \"punctuation\": /\\./\n }\n },\n \"punctuation\": /[:,]/\n }\n }\n });\n var formatString = /:[^}\\r\\n]+/.source;\n var mInterpolationRound = nested(replace(/[^\"'/()]|<<0>>|\\(<>*\\)/.source, [regularStringCharacterOrComment]), 2);\n var mInterpolation = replace(/\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}/.source, [mInterpolationRound, formatString]);\n var sInterpolationRound = nested(replace(/[^\"'/()]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>|\\(<>*\\)/.source, [regularStringOrCharacter]), 2);\n var sInterpolation = replace(/\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}/.source, [sInterpolationRound, formatString]);\n function createInterpolationInside(interpolation, interpolationRound) {\n return {\n \"interpolation\": {\n pattern: re(/((?:^|[^{])(?:\\{\\{)*)<<0>>/.source, [interpolation]),\n lookbehind: true,\n inside: {\n \"format-string\": {\n pattern: re(/(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)/.source, [interpolationRound, formatString]),\n lookbehind: true,\n inside: {\n \"punctuation\": /^:/\n }\n },\n \"punctuation\": /^\\{|\\}$/,\n \"expression\": {\n pattern: /[\\s\\S]+/,\n alias: \"language-csharp\",\n inside: Prism2.languages.csharp\n }\n }\n },\n \"string\": /[\\s\\S]+/\n };\n }\n Prism2.languages.insertBefore(\"csharp\", \"string\", {\n \"interpolation-string\": [\n {\n pattern: re(/(^|[^\\\\])(?:\\$@|@\\$)\"(?:\"\"|\\\\[\\s\\S]|\\{\\{|<<0>>|[^\\\\{\"])*\"/.source, [mInterpolation]),\n lookbehind: true,\n greedy: true,\n inside: createInterpolationInside(mInterpolation, mInterpolationRound)\n },\n {\n pattern: re(/(^|[^@\\\\])\\$\"(?:\\\\.|\\{\\{|<<0>>|[^\\\\\"{])*\"/.source, [sInterpolation]),\n lookbehind: true,\n greedy: true,\n inside: createInterpolationInside(sInterpolation, sInterpolationRound)\n }\n ]\n });\n})(Prism);\nPrism.languages.dotnet = Prism.languages.cs = Prism.languages.csharp;\n(function(Prism2) {\n var string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n Prism2.languages.css = {\n \"comment\": /\\/\\*[\\s\\S]*?\\*\\//,\n \"atrule\": {\n pattern: /@[\\w-](?:[^;{\\s]|\\s+(?![\\s{]))*(?:;|(?=\\s*\\{))/,\n inside: {\n \"rule\": /^@[\\w-]+/,\n \"selector-function-argument\": {\n pattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n lookbehind: true,\n alias: \"selector\"\n },\n \"keyword\": {\n pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n lookbehind: true\n }\n }\n },\n \"url\": {\n pattern: RegExp(\"\\\\burl\\\\((?:\" + string.source + \"|\" + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + \")\\\\)\", \"i\"),\n greedy: true,\n inside: {\n \"function\": /^url/i,\n \"punctuation\": /^\\(|\\)$/,\n \"string\": {\n pattern: RegExp(\"^\" + string.source + \"$\"),\n alias: \"url\"\n }\n }\n },\n \"selector\": {\n pattern: RegExp(`(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"'\\\\s]|\\\\s+(?![\\\\s{])|` + string.source + \")*(?=\\\\s*\\\\{)\"),\n lookbehind: true\n },\n \"string\": {\n pattern: string,\n greedy: true\n },\n \"property\": {\n pattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n lookbehind: true\n },\n \"important\": /!important\\b/i,\n \"function\": {\n pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n lookbehind: true\n },\n \"punctuation\": /[(){};:,]/\n };\n Prism2.languages.css[\"atrule\"].inside.rest = Prism2.languages.css;\n var markup = Prism2.languages.markup;\n if (markup) {\n markup.tag.addInlined(\"style\", \"css\");\n markup.tag.addAttribute(\"style\", \"css\");\n }\n})(Prism);\n(function(Prism2) {\n var keywords = [\n /\\b(?:async|sync|yield)\\*/,\n /\\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extension|external|extends|factory|final|finally|for|get|hide|if|implements|interface|import|in|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\\b/\n ];\n var packagePrefix = /(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/.source;\n var className = {\n pattern: RegExp(packagePrefix + /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source),\n lookbehind: true,\n inside: {\n \"namespace\": {\n pattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n inside: {\n \"punctuation\": /\\./\n }\n }\n }\n };\n Prism2.languages.dart = Prism2.languages.extend(\"clike\", {\n \"string\": [\n {\n pattern: /r?(\"\"\"|''')[\\s\\S]*?\\1/,\n greedy: true\n },\n {\n pattern: /r?([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n }\n ],\n \"class-name\": [\n className,\n {\n pattern: RegExp(packagePrefix + /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])/.source),\n lookbehind: true,\n inside: className.inside\n }\n ],\n \"keyword\": keywords,\n \"operator\": /\\bis!|\\b(?:as|is)\\b|\\+\\+|--|&&|\\|\\||<<=?|>>=?|~(?:\\/=?)?|[+\\-*\\/%&^|=!<>]=?|\\?/\n });\n Prism2.languages.insertBefore(\"dart\", \"function\", {\n \"metadata\": {\n pattern: /@\\w+/,\n alias: \"symbol\"\n }\n });\n Prism2.languages.insertBefore(\"dart\", \"class-name\", {\n \"generics\": {\n pattern: /<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<[\\w\\s,.&?]*>)*>)*>)*>/,\n inside: {\n \"class-name\": className,\n \"keyword\": keywords,\n \"punctuation\": /[<>(),.:]/,\n \"operator\": /[?&|]/\n }\n }\n });\n})(Prism);\n(function(Prism2) {\n Prism2.languages.django = {\n \"comment\": /^\\{#[\\s\\S]*?#\\}$/,\n \"tag\": {\n pattern: /(^\\{%[+-]?\\s*)\\w+/,\n lookbehind: true,\n alias: \"keyword\"\n },\n \"delimiter\": {\n pattern: /^\\{[{%][+-]?|[+-]?[}%]\\}$/,\n alias: \"punctuation\"\n },\n \"string\": {\n pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n \"filter\": {\n pattern: /(\\|)\\w+/,\n lookbehind: true,\n alias: \"function\"\n },\n \"test\": {\n pattern: /(\\bis\\s+(?:not\\s+)?)(?!not\\b)\\w+/,\n lookbehind: true,\n alias: \"function\"\n },\n \"function\": /\\b[a-z_]\\w+(?=\\s*\\()/i,\n \"keyword\": /\\b(?:and|as|by|else|for|if|import|in|is|loop|not|or|recursive|with|without)\\b/,\n \"operator\": /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n \"number\": /\\b\\d+(?:\\.\\d+)?\\b/,\n \"boolean\": /[Tt]rue|[Ff]alse|[Nn]one/,\n \"variable\": /\\b\\w+?\\b/,\n \"punctuation\": /[{}[\\](),.:;]/\n };\n var pattern = /\\{\\{[\\s\\S]*?\\}\\}|\\{%[\\s\\S]*?%\\}|\\{#[\\s\\S]*?#\\}/g;\n var markupTemplating = Prism2.languages[\"markup-templating\"];\n Prism2.hooks.add(\"before-tokenize\", function(env2) {\n markupTemplating.buildPlaceholders(env2, \"django\", pattern);\n });\n Prism2.hooks.add(\"after-tokenize\", function(env2) {\n markupTemplating.tokenizePlaceholders(env2, \"django\");\n });\n Prism2.languages.jinja2 = Prism2.languages.django;\n Prism2.hooks.add(\"before-tokenize\", function(env2) {\n markupTemplating.buildPlaceholders(env2, \"jinja2\", pattern);\n });\n Prism2.hooks.add(\"after-tokenize\", function(env2) {\n markupTemplating.tokenizePlaceholders(env2, \"jinja2\");\n });\n})(Prism);\n(function(Prism2) {\n var spaceAfterBackSlash = /\\\\[\\r\\n](?:\\s|\\\\[\\r\\n]|#.*(?!.))*(?![\\s#]|\\\\[\\r\\n])/.source;\n var space = /(?:[ \\t]+(?![ \\t])(?:)?|)/.source.replace(//g, function() {\n return spaceAfterBackSlash;\n });\n var string = /\"(?:[^\"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\"|'(?:[^'\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*'/.source;\n var option = /--[\\w-]+=(?:|(?![\"'])(?:[^\\s\\\\]|\\\\.)+)/.source.replace(//g, function() {\n return string;\n });\n var stringRule = {\n pattern: RegExp(string),\n greedy: true\n };\n var commentRule = {\n pattern: /(^[ \\t]*)#.*/m,\n lookbehind: true,\n greedy: true\n };\n function re(source, flags) {\n source = source.replace(//g, function() {\n return option;\n }).replace(//g, function() {\n return space;\n });\n return RegExp(source, flags);\n }\n Prism2.languages.docker = {\n \"instruction\": {\n pattern: /(^[ \\t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\\s)(?:\\\\.|[^\\r\\n\\\\])*(?:\\\\$(?:\\s|#.*$)*(?![\\s#])(?:\\\\.|[^\\r\\n\\\\])*)*/im,\n lookbehind: true,\n greedy: true,\n inside: {\n \"options\": {\n pattern: re(/(^(?:ONBUILD)?\\w+)(?:)*/.source, \"i\"),\n lookbehind: true,\n greedy: true,\n inside: {\n \"property\": {\n pattern: /(^|\\s)--[\\w-]+/,\n lookbehind: true\n },\n \"string\": [\n stringRule,\n {\n pattern: /(=)(?![\"'])(?:[^\\s\\\\]|\\\\.)+/,\n lookbehind: true\n }\n ],\n \"operator\": /\\\\$/m,\n \"punctuation\": /=/\n }\n },\n \"keyword\": [\n {\n pattern: re(/(^(?:ONBUILD)?HEALTHCHECK(?:)*)(?:CMD|NONE)\\b/.source, \"i\"),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: re(/(^(?:ONBUILD)?FROM(?:)*(?!--)[^ \\t\\\\]+)AS/.source, \"i\"),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: re(/(^ONBUILD)\\w+/.source, \"i\"),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /^\\w+/,\n greedy: true\n }\n ],\n \"comment\": commentRule,\n \"string\": stringRule,\n \"variable\": /\\$(?:\\w+|\\{[^{}\"'\\\\]*\\})/,\n \"operator\": /\\\\$/m\n }\n },\n \"comment\": commentRule\n };\n Prism2.languages.dockerfile = Prism2.languages.docker;\n})(Prism);\n(function(Prism2) {\n Prism2.languages.ejs = {\n \"delimiter\": {\n pattern: /^<%[-_=]?|[-_]?%>$/,\n alias: \"punctuation\"\n },\n \"comment\": /^#[\\s\\S]*/,\n \"language-javascript\": {\n pattern: /[\\s\\S]+/,\n inside: Prism2.languages.javascript\n }\n };\n Prism2.hooks.add(\"before-tokenize\", function(env2) {\n var ejsPattern = /<%(?!%)[\\s\\S]+?%>/g;\n Prism2.languages[\"markup-templating\"].buildPlaceholders(env2, \"ejs\", ejsPattern);\n });\n Prism2.hooks.add(\"after-tokenize\", function(env2) {\n Prism2.languages[\"markup-templating\"].tokenizePlaceholders(env2, \"ejs\");\n });\n Prism2.languages.eta = Prism2.languages.ejs;\n})(Prism);\nPrism.languages.erlang = {\n \"comment\": /%.+/,\n \"string\": {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n \"quoted-function\": {\n pattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'(?=\\()/,\n alias: \"function\"\n },\n \"quoted-atom\": {\n pattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'/,\n alias: \"atom\"\n },\n \"boolean\": /\\b(?:true|false)\\b/,\n \"keyword\": /\\b(?:fun|when|case|of|end|if|receive|after|try|catch)\\b/,\n \"number\": [\n /\\$\\\\?./,\n /\\b\\d+#[a-z0-9]+/i,\n /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i\n ],\n \"function\": /\\b[a-z][\\w@]*(?=\\()/,\n \"variable\": {\n pattern: /(^|[^@])(?:\\b|\\?)[A-Z_][\\w@]*/,\n lookbehind: true\n },\n \"operator\": [\n /[=\\/<>:]=|=[:\\/]=|\\+\\+?|--?|[=*\\/!]|\\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\\b/,\n {\n pattern: /(^|[^<])<(?!<)/,\n lookbehind: true\n },\n {\n pattern: /(^|[^>])>(?!>)/,\n lookbehind: true\n }\n ],\n \"atom\": /\\b[a-z][\\w@]*/,\n \"punctuation\": /[()[\\]{}:;,.#|]|<<|>>/\n};\nPrism.languages.git = {\n \"comment\": /^#.*/m,\n \"deleted\": /^[-–].*/m,\n \"inserted\": /^\\+.*/m,\n \"string\": /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/m,\n \"command\": {\n pattern: /^.*\\$ git .*$/m,\n inside: {\n \"parameter\": /\\s--?\\w+/m\n }\n },\n \"coord\": /^@@.*@@$/m,\n \"commit-sha1\": /^commit \\w{40}$/m\n};\nPrism.languages.go = Prism.languages.extend(\"clike\", {\n \"string\": {\n pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n greedy: true\n },\n \"keyword\": /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n \"boolean\": /\\b(?:_|iota|nil|true|false)\\b/,\n \"number\": /(?:\\b0x[a-f\\d]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[-+]?\\d+)?)i?/i,\n \"operator\": /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n \"builtin\": /\\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\\b/\n});\ndelete Prism.languages.go[\"class-name\"];\nPrism.languages.graphql = {\n \"comment\": /#.*/,\n \"description\": {\n pattern: /(?:\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")(?=\\s*[a-z_])/i,\n greedy: true,\n alias: \"string\",\n inside: {\n \"language-markdown\": {\n pattern: /(^\"(?:\"\")?)(?!\\1)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: Prism.languages.markdown\n }\n }\n },\n \"string\": {\n pattern: /\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n \"number\": /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n \"boolean\": /\\b(?:true|false)\\b/,\n \"variable\": /\\$[a-z_]\\w*/i,\n \"directive\": {\n pattern: /@[a-z_]\\w*/i,\n alias: \"function\"\n },\n \"attr-name\": {\n pattern: /[a-z_]\\w*(?=\\s*(?:\\((?:[^()\"]|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")*\\))?:)/i,\n greedy: true\n },\n \"atom-input\": {\n pattern: /[A-Z]\\w*Input(?=!?.*$)/m,\n alias: \"class-name\"\n },\n \"scalar\": /\\b(?:Boolean|Float|ID|Int|String)\\b/,\n \"constant\": /\\b[A-Z][A-Z_\\d]*\\b/,\n \"class-name\": {\n pattern: /(\\b(?:enum|implements|interface|on|scalar|type|union)\\s+|&\\s*|:\\s*|\\[)[A-Z_]\\w*/,\n lookbehind: true\n },\n \"fragment\": {\n pattern: /(\\bfragment\\s+|\\.{3}\\s*(?!on\\b))[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: \"function\"\n },\n \"definition-mutation\": {\n pattern: /(\\bmutation\\s+)[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: \"function\"\n },\n \"definition-query\": {\n pattern: /(\\bquery\\s+)[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: \"function\"\n },\n \"keyword\": /\\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\\b/,\n \"operator\": /[!=|&]|\\.{3}/,\n \"property-query\": /\\w+(?=\\s*\\()/,\n \"object\": /\\w+(?=\\s*\\{)/,\n \"punctuation\": /[!(){}\\[\\]:=,]/,\n \"property\": /\\w+/\n};\nPrism.hooks.add(\"after-tokenize\", function afterTokenizeGraphql(env2) {\n if (env2.language !== \"graphql\") {\n return;\n }\n var validTokens = env2.tokens.filter(function(token) {\n return typeof token !== \"string\" && token.type !== \"comment\" && token.type !== \"scalar\";\n });\n var currentIndex = 0;\n function getToken(offset3) {\n return validTokens[currentIndex + offset3];\n }\n function isTokenType(types, offset3) {\n offset3 = offset3 || 0;\n for (var i4 = 0; i4 < types.length; i4++) {\n var token = getToken(i4 + offset3);\n if (!token || token.type !== types[i4]) {\n return false;\n }\n }\n return true;\n }\n function findClosingBracket(open, close) {\n var stackHeight = 1;\n for (var i4 = currentIndex; i4 < validTokens.length; i4++) {\n var token = validTokens[i4];\n var content = token.content;\n if (token.type === \"punctuation\" && typeof content === \"string\") {\n if (open.test(content)) {\n stackHeight++;\n } else if (close.test(content)) {\n stackHeight--;\n if (stackHeight === 0) {\n return i4;\n }\n }\n }\n }\n return -1;\n }\n function addAlias(token, alias) {\n var aliases = token.alias;\n if (!aliases) {\n token.alias = aliases = [];\n } else if (!Array.isArray(aliases)) {\n token.alias = aliases = [aliases];\n }\n aliases.push(alias);\n }\n for (; currentIndex < validTokens.length; ) {\n var startToken = validTokens[currentIndex++];\n if (startToken.type === \"keyword\" && startToken.content === \"mutation\") {\n var inputVariables = [];\n if (isTokenType([\"definition-mutation\", \"punctuation\"]) && getToken(1).content === \"(\") {\n currentIndex += 2;\n var definitionEnd = findClosingBracket(/^\\($/, /^\\)$/);\n if (definitionEnd === -1) {\n continue;\n }\n for (; currentIndex < definitionEnd; currentIndex++) {\n var t4 = getToken(0);\n if (t4.type === \"variable\") {\n addAlias(t4, \"variable-input\");\n inputVariables.push(t4.content);\n }\n }\n currentIndex = definitionEnd + 1;\n }\n if (isTokenType([\"punctuation\", \"property-query\"]) && getToken(0).content === \"{\") {\n currentIndex++;\n addAlias(getToken(0), \"property-mutation\");\n if (inputVariables.length > 0) {\n var mutationEnd = findClosingBracket(/^\\{$/, /^\\}$/);\n if (mutationEnd === -1) {\n continue;\n }\n for (var i3 = currentIndex; i3 < mutationEnd; i3++) {\n var varToken = validTokens[i3];\n if (varToken.type === \"variable\" && inputVariables.indexOf(varToken.content) >= 0) {\n addAlias(varToken, \"variable-input\");\n }\n }\n }\n }\n }\n }\n});\nPrism.languages.groovy = Prism.languages.extend(\"clike\", {\n \"string\": [\n {\n pattern: /(\"\"\"|''')(?:[^\\\\]|\\\\[\\s\\S])*?\\1|\\$\\/(?:[^/$]|\\$(?:[/$]|(?![/$]))|\\/(?!\\$))*\\/\\$/,\n greedy: true\n },\n {\n pattern: /([\"'/])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n }\n ],\n \"keyword\": /\\b(?:as|def|in|abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\\b/,\n \"number\": /\\b(?:0b[01_]+|0x[\\da-f_]+(?:\\.[\\da-f_p\\-]+)?|[\\d_]+(?:\\.[\\d_]+)?(?:e[+-]?\\d+)?)[glidf]?\\b/i,\n \"operator\": {\n pattern: /(^|[^.])(?:~|==?~?|\\?[.:]?|\\*(?:[.=]|\\*=?)?|\\.[@&]|\\.\\.<|\\.\\.(?!\\.)|-[-=>]?|\\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\\|[|=]?|\\/=?|\\^=?|%=?)/,\n lookbehind: true\n },\n \"punctuation\": /\\.+|[{}[\\];(),:$]/\n});\nPrism.languages.insertBefore(\"groovy\", \"string\", {\n \"shebang\": {\n pattern: /#!.+/,\n alias: \"comment\"\n }\n});\nPrism.languages.insertBefore(\"groovy\", \"punctuation\", {\n \"spock-block\": /\\b(?:setup|given|when|then|and|cleanup|expect|where):/\n});\nPrism.languages.insertBefore(\"groovy\", \"function\", {\n \"annotation\": {\n pattern: /(^|[^.])@\\w+/,\n lookbehind: true,\n alias: \"punctuation\"\n }\n});\nPrism.hooks.add(\"wrap\", function(env2) {\n if (env2.language === \"groovy\" && env2.type === \"string\") {\n var delimiter = env2.content[0];\n if (delimiter != \"'\") {\n var pattern = /([^\\\\])(?:\\$(?:\\{.*?\\}|[\\w.]+))/;\n if (delimiter === \"$\") {\n pattern = /([^\\$])(?:\\$(?:\\{.*?\\}|[\\w.]+))/;\n }\n env2.content = env2.content.replace(/</g, \"<\").replace(/&/g, \"&\");\n env2.content = Prism.highlight(env2.content, {\n \"expression\": {\n pattern,\n lookbehind: true,\n inside: Prism.languages.groovy\n }\n });\n env2.classes.push(delimiter === \"/\" ? \"regex\" : \"gstring\");\n }\n }\n});\n(function(Prism2) {\n var keywords = /\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/;\n var classNamePrefix = /(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/.source;\n var className = {\n pattern: RegExp(classNamePrefix + /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source),\n lookbehind: true,\n inside: {\n \"namespace\": {\n pattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n inside: {\n \"punctuation\": /\\./\n }\n },\n \"punctuation\": /\\./\n }\n };\n Prism2.languages.java = Prism2.languages.extend(\"clike\", {\n \"class-name\": [\n className,\n {\n pattern: RegExp(classNamePrefix + /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])/.source),\n lookbehind: true,\n inside: className.inside\n }\n ],\n \"keyword\": keywords,\n \"function\": [\n Prism2.languages.clike.function,\n {\n pattern: /(::\\s*)[a-z_]\\w*/,\n lookbehind: true\n }\n ],\n \"number\": /\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,\n \"operator\": {\n pattern: /(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,\n lookbehind: true\n }\n });\n Prism2.languages.insertBefore(\"java\", \"string\", {\n \"triple-quoted-string\": {\n pattern: /\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,\n greedy: true,\n alias: \"string\"\n }\n });\n Prism2.languages.insertBefore(\"java\", \"class-name\", {\n \"annotation\": {\n pattern: /(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,\n lookbehind: true,\n alias: \"punctuation\"\n },\n \"generics\": {\n pattern: /<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,\n inside: {\n \"class-name\": className,\n \"keyword\": keywords,\n \"punctuation\": /[<>(),.:]/,\n \"operator\": /[?&|]/\n }\n },\n \"namespace\": {\n pattern: RegExp(/(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?/.source.replace(//g, function() {\n return keywords.source;\n })),\n lookbehind: true,\n inside: {\n \"punctuation\": /\\./\n }\n }\n });\n})(Prism);\nPrism.languages.javascript = Prism.languages.extend(\"clike\", {\n \"class-name\": [\n Prism.languages.clike[\"class-name\"],\n {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:prototype|constructor))/,\n lookbehind: true\n }\n ],\n \"keyword\": [\n {\n pattern: /((?:^|\\})\\s*)catch\\b/,\n lookbehind: true\n },\n {\n pattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n lookbehind: true\n }\n ],\n \"function\": /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n \"number\": /\\b(?:(?:0[xX](?:[\\dA-Fa-f](?:_[\\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\\d(?:_\\d)?)+n|NaN|Infinity)\\b|(?:\\b(?:\\d(?:_\\d)?)+\\.?(?:\\d(?:_\\d)?)*|\\B\\.(?:\\d(?:_\\d)?)+)(?:[Ee][+-]?(?:\\d(?:_\\d)?)+)?/,\n \"operator\": /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\nPrism.languages.javascript[\"class-name\"][0].pattern = /(\\b(?:class|interface|extends|implements|instanceof|new)\\s+)[\\w.\\\\]+/;\nPrism.languages.insertBefore(\"javascript\", \"keyword\", {\n \"regex\": {\n pattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/,\n lookbehind: true,\n greedy: true,\n inside: {\n \"regex-source\": {\n pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n lookbehind: true,\n alias: \"language-regex\",\n inside: Prism.languages.regex\n },\n \"regex-delimiter\": /^\\/|\\/$/,\n \"regex-flags\": /^[a-z]+$/\n }\n },\n \"function-variable\": {\n pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n alias: \"function\"\n },\n \"parameter\": [\n {\n pattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n {\n pattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n {\n pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }\n ],\n \"constant\": /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\nPrism.languages.insertBefore(\"javascript\", \"string\", {\n \"hashbang\": {\n pattern: /^#!.*/,\n greedy: true,\n alias: \"comment\"\n },\n \"template-string\": {\n pattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n greedy: true,\n inside: {\n \"template-punctuation\": {\n pattern: /^`|`$/,\n alias: \"string\"\n },\n \"interpolation\": {\n pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n lookbehind: true,\n inside: {\n \"interpolation-punctuation\": {\n pattern: /^\\$\\{|\\}$/,\n alias: \"punctuation\"\n },\n rest: Prism.languages.javascript\n }\n },\n \"string\": /[\\s\\S]+/\n }\n }\n});\nif (Prism.languages.markup) {\n Prism.languages.markup.tag.addInlined(\"script\", \"javascript\");\n Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source, \"javascript\");\n}\nPrism.languages.js = Prism.languages.javascript;\nPrism.languages.json = {\n \"property\": {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n lookbehind: true,\n greedy: true\n },\n \"string\": {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n lookbehind: true,\n greedy: true\n },\n \"comment\": {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n \"number\": /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n \"punctuation\": /[{}[\\],]/,\n \"operator\": /:/,\n \"boolean\": /\\b(?:true|false)\\b/,\n \"null\": {\n pattern: /\\bnull\\b/,\n alias: \"keyword\"\n }\n};\nPrism.languages.webmanifest = Prism.languages.json;\n(function(Prism2) {\n var javascript = Prism2.util.clone(Prism2.languages.javascript);\n var space = /(?:\\s|\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))\\*\\/)/.source;\n var braces = /(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})/.source;\n var spread = /(?:\\{*\\.{3}(?:[^{}]|)*\\})/.source;\n function re(source, flags) {\n source = source.replace(//g, function() {\n return space;\n }).replace(//g, function() {\n return braces;\n }).replace(//g, function() {\n return spread;\n });\n return RegExp(source, flags);\n }\n spread = re(spread).source;\n Prism2.languages.jsx = Prism2.languages.extend(\"markup\", javascript);\n Prism2.languages.jsx.tag.pattern = re(/<\\/?(?:[\\w.:-]+(?:+(?:[\\w.:$-]+(?:=(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s{'\"/>=]+|))?|))**\\/?)?>/.source);\n Prism2.languages.jsx.tag.inside[\"tag\"].pattern = /^<\\/?[^\\s>\\/]*/i;\n Prism2.languages.jsx.tag.inside[\"attr-value\"].pattern = /=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/i;\n Prism2.languages.jsx.tag.inside[\"tag\"].inside[\"class-name\"] = /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/;\n Prism2.languages.jsx.tag.inside[\"comment\"] = javascript[\"comment\"];\n Prism2.languages.insertBefore(\"inside\", \"attr-name\", {\n \"spread\": {\n pattern: re(//.source),\n inside: Prism2.languages.jsx\n }\n }, Prism2.languages.jsx.tag);\n Prism2.languages.insertBefore(\"inside\", \"special-attr\", {\n \"script\": {\n pattern: re(/=/.source),\n inside: {\n \"script-punctuation\": {\n pattern: /^=(?=\\{)/,\n alias: \"punctuation\"\n },\n rest: Prism2.languages.jsx\n },\n \"alias\": \"language-javascript\"\n }\n }, Prism2.languages.jsx.tag);\n var stringifyToken = function(token) {\n if (!token) {\n return \"\";\n }\n if (typeof token === \"string\") {\n return token;\n }\n if (typeof token.content === \"string\") {\n return token.content;\n }\n return token.content.map(stringifyToken).join(\"\");\n };\n var walkTokens = function(tokens) {\n var openedTags = [];\n for (var i3 = 0; i3 < tokens.length; i3++) {\n var token = tokens[i3];\n var notTagNorBrace = false;\n if (typeof token !== \"string\") {\n if (token.type === \"tag\" && token.content[0] && token.content[0].type === \"tag\") {\n if (token.content[0].content[0].content === \" 0 && openedTags[openedTags.length - 1].tagName === stringifyToken(token.content[0].content[1])) {\n openedTags.pop();\n }\n } else {\n if (token.content[token.content.length - 1].content === \"/>\")\n ;\n else {\n openedTags.push({\n tagName: stringifyToken(token.content[0].content[1]),\n openedBraces: 0\n });\n }\n }\n } else if (openedTags.length > 0 && token.type === \"punctuation\" && token.content === \"{\") {\n openedTags[openedTags.length - 1].openedBraces++;\n } else if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces > 0 && token.type === \"punctuation\" && token.content === \"}\") {\n openedTags[openedTags.length - 1].openedBraces--;\n } else {\n notTagNorBrace = true;\n }\n }\n if (notTagNorBrace || typeof token === \"string\") {\n if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces === 0) {\n var plainText = stringifyToken(token);\n if (i3 < tokens.length - 1 && (typeof tokens[i3 + 1] === \"string\" || tokens[i3 + 1].type === \"plain-text\")) {\n plainText += stringifyToken(tokens[i3 + 1]);\n tokens.splice(i3 + 1, 1);\n }\n if (i3 > 0 && (typeof tokens[i3 - 1] === \"string\" || tokens[i3 - 1].type === \"plain-text\")) {\n plainText = stringifyToken(tokens[i3 - 1]) + plainText;\n tokens.splice(i3 - 1, 1);\n i3--;\n }\n tokens[i3] = new Prism2.Token(\"plain-text\", plainText, null, plainText);\n }\n }\n if (token.content && typeof token.content !== \"string\") {\n walkTokens(token.content);\n }\n }\n };\n Prism2.hooks.add(\"after-tokenize\", function(env2) {\n if (env2.language !== \"jsx\" && env2.language !== \"tsx\") {\n return;\n }\n walkTokens(env2.tokens);\n });\n})(Prism);\n(function(Prism2) {\n Prism2.languages.kotlin = Prism2.languages.extend(\"clike\", {\n \"keyword\": {\n pattern: /(^|[^.])\\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\\b/,\n lookbehind: true\n },\n \"function\": [\n {\n pattern: /(?:`[^\\r\\n`]+`|\\b\\w+)(?=\\s*\\()/,\n greedy: true\n },\n {\n pattern: /(\\.)(?:`[^\\r\\n`]+`|\\w+)(?=\\s*\\{)/,\n lookbehind: true,\n greedy: true\n }\n ],\n \"number\": /\\b(?:0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?(?:[eE][+-]?\\d+(?:_\\d+)*)?[fFL]?)\\b/,\n \"operator\": /\\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\\/*%<>]=?|[?:]:?|\\.\\.|&&|\\|\\||\\b(?:and|inv|or|shl|shr|ushr|xor)\\b/\n });\n delete Prism2.languages.kotlin[\"class-name\"];\n Prism2.languages.insertBefore(\"kotlin\", \"string\", {\n \"raw-string\": {\n pattern: /(\"\"\"|''')[\\s\\S]*?\\1/,\n alias: \"string\"\n }\n });\n Prism2.languages.insertBefore(\"kotlin\", \"keyword\", {\n \"annotation\": {\n pattern: /\\B@(?:\\w+:)?(?:[A-Z]\\w*|\\[[^\\]]+\\])/,\n alias: \"builtin\"\n }\n });\n Prism2.languages.insertBefore(\"kotlin\", \"function\", {\n \"label\": {\n pattern: /\\b\\w+@|@\\w+\\b/,\n alias: \"symbol\"\n }\n });\n var interpolation = [\n {\n pattern: /\\$\\{[^}]+\\}/,\n inside: {\n \"delimiter\": {\n pattern: /^\\$\\{|\\}$/,\n alias: \"variable\"\n },\n rest: Prism2.languages.kotlin\n }\n },\n {\n pattern: /\\$\\w+/,\n alias: \"variable\"\n }\n ];\n Prism2.languages.kotlin[\"string\"].inside = Prism2.languages.kotlin[\"raw-string\"].inside = {\n interpolation\n };\n Prism2.languages.kt = Prism2.languages.kotlin;\n Prism2.languages.kts = Prism2.languages.kotlin;\n})(Prism);\n(function(Prism2) {\n var funcPattern = /\\\\(?:[^a-z()[\\]]|[a-z*]+)/i;\n var insideEqu = {\n \"equation-command\": {\n pattern: funcPattern,\n alias: \"regex\"\n }\n };\n Prism2.languages.latex = {\n \"comment\": /%.*/m,\n \"cdata\": {\n pattern: /(\\\\begin\\{((?:verbatim|lstlisting)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n lookbehind: true\n },\n \"equation\": [\n {\n pattern: /\\$\\$(?:\\\\[\\s\\S]|[^\\\\$])+\\$\\$|\\$(?:\\\\[\\s\\S]|[^\\\\$])+\\$|\\\\\\([\\s\\S]*?\\\\\\)|\\\\\\[[\\s\\S]*?\\\\\\]/,\n inside: insideEqu,\n alias: \"string\"\n },\n {\n pattern: /(\\\\begin\\{((?:equation|math|eqnarray|align|multline|gather)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n lookbehind: true,\n inside: insideEqu,\n alias: \"string\"\n }\n ],\n \"keyword\": {\n pattern: /(\\\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n lookbehind: true\n },\n \"url\": {\n pattern: /(\\\\url\\{)[^}]+(?=\\})/,\n lookbehind: true\n },\n \"headline\": {\n pattern: /(\\\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\\*?(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n lookbehind: true,\n alias: \"class-name\"\n },\n \"function\": {\n pattern: funcPattern,\n alias: \"selector\"\n },\n \"punctuation\": /[[\\]{}&]/\n };\n Prism2.languages.tex = Prism2.languages.latex;\n Prism2.languages.context = Prism2.languages.latex;\n})(Prism);\nPrism.languages.less = Prism.languages.extend(\"css\", {\n \"comment\": [\n /\\/\\*[\\s\\S]*?\\*\\//,\n {\n pattern: /(^|[^\\\\])\\/\\/.*/,\n lookbehind: true\n }\n ],\n \"atrule\": {\n pattern: /@[\\w-](?:\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n inside: {\n \"punctuation\": /[:()]/\n }\n },\n \"selector\": {\n pattern: /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};@\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n inside: {\n \"variable\": /@+[\\w-]+/\n }\n },\n \"property\": /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/i,\n \"operator\": /[+\\-*\\/]/\n});\nPrism.languages.insertBefore(\"less\", \"property\", {\n \"variable\": [\n {\n pattern: /@[\\w-]+\\s*:/,\n inside: {\n \"punctuation\": /:/\n }\n },\n /@@?[\\w-]+/\n ],\n \"mixin-usage\": {\n pattern: /([{;]\\s*)[.#](?!\\d)[\\w-].*?(?=[(;])/,\n lookbehind: true,\n alias: \"function\"\n }\n});\nPrism.languages.lua = {\n \"comment\": /^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,\n \"string\": {\n pattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[^z]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,\n greedy: true\n },\n \"number\": /\\b0x[a-f\\d]+(?:\\.[a-f\\d]*)?(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|(?:\\.\\d*)?(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,\n \"keyword\": /\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,\n \"function\": /(?!\\d)\\w+(?=\\s*(?:[({]))/,\n \"operator\": [\n /[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,\n {\n pattern: /(^|[^.])\\.\\.(?!\\.)/,\n lookbehind: true\n }\n ],\n \"punctuation\": /[\\[\\](){},;]|\\.+|:+/\n};\nPrism.languages.makefile = {\n \"comment\": {\n pattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])*/,\n lookbehind: true\n },\n \"string\": {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n \"builtin\": /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n \"symbol\": {\n pattern: /^(?:[^:=\\s]|[ \\t]+(?![\\s:]))+(?=\\s*:(?!=))/m,\n inside: {\n \"variable\": /\\$+(?:(?!\\$)[^(){}:#=\\s]+|(?=[({]))/\n }\n },\n \"variable\": /\\$+(?:(?!\\$)[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n \"keyword\": [\n /-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/,\n {\n pattern: /(\\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \\t])/,\n lookbehind: true\n }\n ],\n \"operator\": /(?:::|[?:+!])?=|[|@]/,\n \"punctuation\": /[:;(){}]/\n};\n(function(Prism2) {\n var inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))/.source;\n function createInline(pattern) {\n pattern = pattern.replace(//g, function() {\n return inner;\n });\n return RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + \"(?:\" + pattern + \")\");\n }\n var tableCell = /(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/.source;\n var tableRow = /\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))/.source.replace(/__/g, function() {\n return tableCell;\n });\n var tableLine = /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)/.source;\n Prism2.languages.markdown = Prism2.languages.extend(\"markup\", {});\n Prism2.languages.insertBefore(\"markdown\", \"prolog\", {\n \"front-matter-block\": {\n pattern: /(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,\n lookbehind: true,\n greedy: true,\n inside: {\n \"punctuation\": /^---|---$/,\n \"font-matter\": {\n pattern: /\\S+(?:\\s+\\S+)*/,\n alias: [\"yaml\", \"language-yaml\"],\n inside: Prism2.languages.yaml\n }\n }\n },\n \"blockquote\": {\n pattern: /^>(?:[\\t ]*>)*/m,\n alias: \"punctuation\"\n },\n \"table\": {\n pattern: RegExp(\"^\" + tableRow + tableLine + \"(?:\" + tableRow + \")*\", \"m\"),\n inside: {\n \"table-data-rows\": {\n pattern: RegExp(\"^(\" + tableRow + tableLine + \")(?:\" + tableRow + \")*$\"),\n lookbehind: true,\n inside: {\n \"table-data\": {\n pattern: RegExp(tableCell),\n inside: Prism2.languages.markdown\n },\n \"punctuation\": /\\|/\n }\n },\n \"table-line\": {\n pattern: RegExp(\"^(\" + tableRow + \")\" + tableLine + \"$\"),\n lookbehind: true,\n inside: {\n \"punctuation\": /\\||:?-{3,}:?/\n }\n },\n \"table-header-row\": {\n pattern: RegExp(\"^\" + tableRow + \"$\"),\n inside: {\n \"table-header\": {\n pattern: RegExp(tableCell),\n alias: \"important\",\n inside: Prism2.languages.markdown\n },\n \"punctuation\": /\\|/\n }\n }\n }\n },\n \"code\": [\n {\n pattern: /((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,\n lookbehind: true,\n alias: \"keyword\"\n },\n {\n pattern: /^```[\\s\\S]*?^```$/m,\n greedy: true,\n inside: {\n \"code-block\": {\n pattern: /^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,\n lookbehind: true\n },\n \"code-language\": {\n pattern: /^(```).+/,\n lookbehind: true\n },\n \"punctuation\": /```/\n }\n }\n ],\n \"title\": [\n {\n pattern: /\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,\n alias: \"important\",\n inside: {\n punctuation: /==+$|--+$/\n }\n },\n {\n pattern: /(^\\s*)#.+/m,\n lookbehind: true,\n alias: \"important\",\n inside: {\n punctuation: /^#+|#+$/\n }\n }\n ],\n \"hr\": {\n pattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n lookbehind: true,\n alias: \"punctuation\"\n },\n \"list\": {\n pattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n lookbehind: true,\n alias: \"punctuation\"\n },\n \"url-reference\": {\n pattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n inside: {\n \"variable\": {\n pattern: /^(!?\\[)[^\\]]+/,\n lookbehind: true\n },\n \"string\": /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n \"punctuation\": /^[\\[\\]!:]|[<>]/\n },\n alias: \"url\"\n },\n \"bold\": {\n pattern: createInline(/\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n \"content\": {\n pattern: /(^..)[\\s\\S]+(?=..$)/,\n lookbehind: true,\n inside: {}\n },\n \"punctuation\": /\\*\\*|__/\n }\n },\n \"italic\": {\n pattern: createInline(/\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n \"content\": {\n pattern: /(^.)[\\s\\S]+(?=.$)/,\n lookbehind: true,\n inside: {}\n },\n \"punctuation\": /[*_]/\n }\n },\n \"strike\": {\n pattern: createInline(/(~~?)(?:(?!~))+\\2/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n \"content\": {\n pattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: {}\n },\n \"punctuation\": /~~?/\n }\n },\n \"code-snippet\": {\n pattern: /(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,\n lookbehind: true,\n greedy: true,\n alias: [\"code\", \"keyword\"]\n },\n \"url\": {\n pattern: createInline(/!?\\[(?:(?!\\]))+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)|[ \\t]?\\[(?:(?!\\]))+\\])/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n \"operator\": /^!/,\n \"content\": {\n pattern: /(^\\[)[^\\]]+(?=\\])/,\n lookbehind: true,\n inside: {}\n },\n \"variable\": {\n pattern: /(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,\n lookbehind: true\n },\n \"url\": {\n pattern: /(^\\]\\()[^\\s)]+/,\n lookbehind: true\n },\n \"string\": {\n pattern: /(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,\n lookbehind: true\n }\n }\n }\n });\n [\"url\", \"bold\", \"italic\", \"strike\"].forEach(function(token) {\n [\"url\", \"bold\", \"italic\", \"strike\", \"code-snippet\"].forEach(function(inside) {\n if (token !== inside) {\n Prism2.languages.markdown[token].inside.content.inside[inside] = Prism2.languages.markdown[inside];\n }\n });\n });\n Prism2.hooks.add(\"after-tokenize\", function(env2) {\n if (env2.language !== \"markdown\" && env2.language !== \"md\") {\n return;\n }\n function walkTokens(tokens) {\n if (!tokens || typeof tokens === \"string\") {\n return;\n }\n for (var i3 = 0, l3 = tokens.length; i3 < l3; i3++) {\n var token = tokens[i3];\n if (token.type !== \"code\") {\n walkTokens(token.content);\n continue;\n }\n var codeLang = token.content[1];\n var codeBlock2 = token.content[3];\n if (codeLang && codeBlock2 && codeLang.type === \"code-language\" && codeBlock2.type === \"code-block\" && typeof codeLang.content === \"string\") {\n var lang = codeLang.content.replace(/\\b#/g, \"sharp\").replace(/\\b\\+\\+/g, \"pp\");\n lang = (/[a-z][\\w-]*/i.exec(lang) || [\"\"])[0].toLowerCase();\n var alias = \"language-\" + lang;\n if (!codeBlock2.alias) {\n codeBlock2.alias = [alias];\n } else if (typeof codeBlock2.alias === \"string\") {\n codeBlock2.alias = [codeBlock2.alias, alias];\n } else {\n codeBlock2.alias.push(alias);\n }\n }\n }\n }\n walkTokens(env2.tokens);\n });\n Prism2.hooks.add(\"wrap\", function(env2) {\n if (env2.type !== \"code-block\") {\n return;\n }\n var codeLang = \"\";\n for (var i3 = 0, l3 = env2.classes.length; i3 < l3; i3++) {\n var cls = env2.classes[i3];\n var match2 = /language-(.+)/.exec(cls);\n if (match2) {\n codeLang = match2[1];\n break;\n }\n }\n var grammar = Prism2.languages[codeLang];\n if (!grammar) {\n if (codeLang && codeLang !== \"none\" && Prism2.plugins.autoloader) {\n var id = \"md-\" + new Date().valueOf() + \"-\" + Math.floor(Math.random() * 1e16);\n env2.attributes[\"id\"] = id;\n Prism2.plugins.autoloader.loadLanguages(codeLang, function() {\n var ele = document.getElementById(id);\n if (ele) {\n ele.innerHTML = Prism2.highlight(ele.textContent, Prism2.languages[codeLang], codeLang);\n }\n });\n }\n } else {\n env2.content = Prism2.highlight(textContent(env2.content), grammar, codeLang);\n }\n });\n var tagPattern = RegExp(Prism2.languages.markup.tag.pattern.source, \"gi\");\n var KNOWN_ENTITY_NAMES = {\n \"amp\": \"&\",\n \"lt\": \"<\",\n \"gt\": \">\",\n \"quot\": '\"'\n };\n var fromCodePoint = String.fromCodePoint || String.fromCharCode;\n function textContent(html2) {\n var text5 = html2.replace(tagPattern, \"\");\n text5 = text5.replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi, function(m2, code) {\n code = code.toLowerCase();\n if (code[0] === \"#\") {\n var value;\n if (code[1] === \"x\") {\n value = parseInt(code.slice(2), 16);\n } else {\n value = Number(code.slice(1));\n }\n return fromCodePoint(value);\n } else {\n var known = KNOWN_ENTITY_NAMES[code];\n if (known) {\n return known;\n }\n return m2;\n }\n });\n return text5;\n }\n Prism2.languages.md = Prism2.languages.markdown;\n})(Prism);\nPrism.languages.matlab = {\n \"comment\": [\n /%\\{[\\s\\S]*?\\}%/,\n /%.+/\n ],\n \"string\": {\n pattern: /\\B'(?:''|[^'\\r\\n])*'/,\n greedy: true\n },\n \"number\": /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?(?:[ij])?|\\b[ij]\\b/,\n \"keyword\": /\\b(?:break|case|catch|continue|else|elseif|end|for|function|if|inf|NaN|otherwise|parfor|pause|pi|return|switch|try|while)\\b/,\n \"function\": /\\b(?!\\d)\\w+(?=\\s*\\()/,\n \"operator\": /\\.?[*^\\/\\\\']|[+\\-:@]|[<>=~]=?|&&?|\\|\\|?/,\n \"punctuation\": /\\.{3}|[.,;\\[\\](){}!]/\n};\nPrism.languages.objectivec = Prism.languages.extend(\"c\", {\n \"string\": /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|@\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n \"keyword\": /\\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n \"operator\": /-[->]?|\\+\\+?|!=?|<>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n});\ndelete Prism.languages.objectivec[\"class-name\"];\nPrism.languages.objc = Prism.languages.objectivec;\nPrism.languages.perl = {\n \"comment\": [\n {\n pattern: /(^\\s*)=\\w[\\s\\S]*?=cut.*/m,\n lookbehind: true\n },\n {\n pattern: /(^|[^\\\\$])#.*/,\n lookbehind: true\n }\n ],\n \"string\": [\n {\n pattern: /\\b(?:q|qq|qx|qw)\\s*([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n greedy: true\n },\n {\n pattern: /\\b(?:q|qq|qx|qw)\\s+([a-zA-Z0-9])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n greedy: true\n },\n {\n pattern: /\\b(?:q|qq|qx|qw)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n greedy: true\n },\n {\n pattern: /\\b(?:q|qq|qx|qw)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}/,\n greedy: true\n },\n {\n pattern: /\\b(?:q|qq|qx|qw)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n greedy: true\n },\n {\n pattern: /\\b(?:q|qq|qx|qw)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n greedy: true\n },\n {\n pattern: /(\"|`)(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n greedy: true\n },\n {\n pattern: /'(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n greedy: true\n }\n ],\n \"regex\": [\n {\n pattern: /\\b(?:m|qr)\\s*([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1[msixpodualngc]*/,\n greedy: true\n },\n {\n pattern: /\\b(?:m|qr)\\s+([a-zA-Z0-9])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1[msixpodualngc]*/,\n greedy: true\n },\n {\n pattern: /\\b(?:m|qr)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngc]*/,\n greedy: true\n },\n {\n pattern: /\\b(?:m|qr)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngc]*/,\n greedy: true\n },\n {\n pattern: /\\b(?:m|qr)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngc]*/,\n greedy: true\n },\n {\n pattern: /\\b(?:m|qr)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngc]*/,\n greedy: true\n },\n {\n pattern: /(^|[^-]\\b)(?:s|tr|y)\\s*([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2[msixpodualngcer]*/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^-]\\b)(?:s|tr|y)\\s+([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2[msixpodualngcer]*/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngcer]*/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngcer]*/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngcer]*/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^-]\\b)(?:s|tr|y)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngcer]*/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\/[msixpodualngc]*(?=\\s*(?:$|[\\r\\n,.;})&|\\-+*~<>!?^]|(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\\b))/,\n greedy: true\n }\n ],\n \"variable\": [\n /[&*$@%]\\{\\^[A-Z]+\\}/,\n /[&*$@%]\\^[A-Z_]/,\n /[&*$@%]#?(?=\\{)/,\n /[&*$@%]#?(?:(?:::)*'?(?!\\d)[\\w$]+(?![\\w$]))+(?:::)*/i,\n /[&*$@%]\\d+/,\n /(?!%=)[$@%][!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~]/\n ],\n \"filehandle\": {\n pattern: /<(?![<=])\\S*>|\\b_\\b/,\n alias: \"symbol\"\n },\n \"vstring\": {\n pattern: /v\\d+(?:\\.\\d+)*|\\d+(?:\\.\\d+){2,}/,\n alias: \"string\"\n },\n \"function\": {\n pattern: /sub \\w+/i,\n inside: {\n keyword: /sub/\n }\n },\n \"keyword\": /\\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\\b/,\n \"number\": /\\b(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\\d(?:_?\\d)*)?\\.)?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)\\b/,\n \"operator\": /-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b|\\+[+=]?|-[-=>]?|\\*\\*?=?|\\/\\/?=?|=[=~>]?|~[~=]?|\\|\\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\\.(?:=|\\.\\.?)?|[\\\\?]|\\bx(?:=|\\b)|\\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\\b/,\n \"punctuation\": /[{}[\\];(),:]/\n};\n(function(Prism2) {\n var comment = /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*|#(?!\\[).*/;\n var constant2 = [\n {\n pattern: /\\b(?:false|true)\\b/i,\n alias: \"boolean\"\n },\n {\n pattern: /(::\\s*)\\b[a-z_]\\w*\\b(?!\\s*\\()/i,\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\b(?:case|const)\\s+)\\b[a-z_]\\w*(?=\\s*[;=])/i,\n greedy: true,\n lookbehind: true\n },\n /\\b(?:null)\\b/i,\n /\\b[A-Z_][A-Z0-9_]*\\b(?!\\s*\\()/\n ];\n var number = /\\b0b[01]+(?:_[01]+)*\\b|\\b0o[0-7]+(?:_[0-7]+)*\\b|\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b|(?:\\b\\d+(?:_\\d+)*\\.?(?:\\d+(?:_\\d+)*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i;\n var operator = /|\\?\\?=?|\\.{3}|\\??->|[!=]=?=?|::|\\*\\*=?|--|\\+\\+|&&|\\|\\||<<|>>|[?~]|[/^|%*&<>.+-]=?/;\n var punctuation = /[{}\\[\\](),:;]/;\n Prism2.languages.php = {\n \"delimiter\": {\n pattern: /\\?>$|^<\\?(?:php(?=\\s)|=)?/i,\n alias: \"important\"\n },\n \"comment\": comment,\n \"variable\": /\\$+(?:\\w+\\b|(?=\\{))/i,\n \"package\": {\n pattern: /(namespace\\s+|use\\s+(?:function\\s+)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n \"class-name-definition\": {\n pattern: /(\\b(?:class|enum|interface|trait)\\s+)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n lookbehind: true,\n alias: \"class-name\"\n },\n \"function-definition\": {\n pattern: /(\\bfunction\\s+)[a-z_]\\w*(?=\\s*\\()/i,\n lookbehind: true,\n alias: \"function\"\n },\n \"keyword\": [\n {\n pattern: /(\\(\\s*)\\b(?:bool|boolean|int|integer|float|string|object|array)\\b(?=\\s*\\))/i,\n alias: \"type-casting\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /([(,?]\\s*)\\b(?:bool|int|float|string|object|array(?!\\s*\\()|mixed|self|static|callable|iterable|(?:null|false)(?=\\s*\\|))\\b(?=\\s*\\$)/i,\n alias: \"type-hint\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /([(,?]\\s*[\\w|]\\|\\s*)(?:null|false)\\b(?=\\s*\\$)/i,\n alias: \"type-hint\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b(?:bool|int|float|string|object|void|array(?!\\s*\\()|mixed|self|static|callable|iterable|(?:null|false)(?=\\s*\\|))\\b/i,\n alias: \"return-type\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?[\\w|]\\|\\s*)(?:null|false)\\b/i,\n alias: \"return-type\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /\\b(?:bool|int|float|string|object|void|array(?!\\s*\\()|mixed|iterable|(?:null|false)(?=\\s*\\|))\\b/i,\n alias: \"type-declaration\",\n greedy: true\n },\n {\n pattern: /(\\|\\s*)(?:null|false)\\b/i,\n alias: \"type-declaration\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /\\b(?:parent|self|static)(?=\\s*::)/i,\n alias: \"static-context\",\n greedy: true\n },\n {\n pattern: /(\\byield\\s+)from\\b/i,\n lookbehind: true\n },\n /\\bclass\\b/i,\n {\n pattern: /((?:^|[^\\s>:]|(?:^|[^-])>|(?:^|[^:]):)\\s*)\\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\\b/i,\n lookbehind: true\n }\n ],\n \"argument-name\": {\n pattern: /([(,]\\s+)\\b[a-z_]\\w*(?=\\s*:(?!:))/i,\n lookbehind: true\n },\n \"class-name\": [\n {\n pattern: /(\\b(?:extends|implements|instanceof|new(?!\\s+self|\\s+static))\\s+|\\bcatch\\s*\\()\\b[a-z_]\\w*(?!\\\\)\\b/i,\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\|\\s*)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /\\b[a-z_]\\w*(?!\\\\)\\b(?=\\s*\\|)/i,\n greedy: true\n },\n {\n pattern: /(\\|\\s*)(?:\\\\?\\b[a-z_]\\w*)+\\b/i,\n alias: \"class-name-fully-qualified\",\n greedy: true,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n {\n pattern: /(?:\\\\?\\b[a-z_]\\w*)+\\b(?=\\s*\\|)/i,\n alias: \"class-name-fully-qualified\",\n greedy: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n {\n pattern: /(\\b(?:extends|implements|instanceof|new(?!\\s+self\\b|\\s+static\\b))\\s+|\\bcatch\\s*\\()(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n alias: \"class-name-fully-qualified\",\n greedy: true,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n {\n pattern: /\\b[a-z_]\\w*(?=\\s*\\$)/i,\n alias: \"type-declaration\",\n greedy: true\n },\n {\n pattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n alias: [\"class-name-fully-qualified\", \"type-declaration\"],\n greedy: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n {\n pattern: /\\b[a-z_]\\w*(?=\\s*::)/i,\n alias: \"static-context\",\n greedy: true\n },\n {\n pattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*::)/i,\n alias: [\"class-name-fully-qualified\", \"static-context\"],\n greedy: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n {\n pattern: /([(,?]\\s*)[a-z_]\\w*(?=\\s*\\$)/i,\n alias: \"type-hint\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /([(,?]\\s*)(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n alias: [\"class-name-fully-qualified\", \"type-hint\"],\n greedy: true,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n {\n pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n alias: \"return-type\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n alias: [\"class-name-fully-qualified\", \"return-type\"],\n greedy: true,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n }\n ],\n \"constant\": constant2,\n \"function\": {\n pattern: /(^|[^\\\\\\w])\\\\?[a-z_](?:[\\w\\\\]*\\w)?(?=\\s*\\()/i,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n \"property\": {\n pattern: /(->\\s*)\\w+/,\n lookbehind: true\n },\n \"number\": number,\n \"operator\": operator,\n \"punctuation\": punctuation\n };\n var string_interpolation = {\n pattern: /\\{\\$(?:\\{(?:\\{[^{}]+\\}|[^{}]+)\\}|[^{}])+\\}|(^|[^\\\\{])\\$+(?:\\w+(?:\\[[^\\r\\n\\[\\]]+\\]|->\\w+)?)/,\n lookbehind: true,\n inside: Prism2.languages.php\n };\n var string = [\n {\n pattern: /<<<'([^']+)'[\\r\\n](?:.*[\\r\\n])*?\\1;/,\n alias: \"nowdoc-string\",\n greedy: true,\n inside: {\n \"delimiter\": {\n pattern: /^<<<'[^']+'|[a-z_]\\w*;$/i,\n alias: \"symbol\",\n inside: {\n \"punctuation\": /^<<<'?|[';]$/\n }\n }\n }\n },\n {\n pattern: /<<<(?:\"([^\"]+)\"[\\r\\n](?:.*[\\r\\n])*?\\1;|([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?\\2;)/i,\n alias: \"heredoc-string\",\n greedy: true,\n inside: {\n \"delimiter\": {\n pattern: /^<<<(?:\"[^\"]+\"|[a-z_]\\w*)|[a-z_]\\w*;$/i,\n alias: \"symbol\",\n inside: {\n \"punctuation\": /^<<<\"?|[\";]$/\n }\n },\n \"interpolation\": string_interpolation\n }\n },\n {\n pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n alias: \"backtick-quoted-string\",\n greedy: true\n },\n {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n alias: \"single-quoted-string\",\n greedy: true\n },\n {\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n alias: \"double-quoted-string\",\n greedy: true,\n inside: {\n \"interpolation\": string_interpolation\n }\n }\n ];\n Prism2.languages.insertBefore(\"php\", \"variable\", {\n \"string\": string,\n \"attribute\": {\n pattern: /#\\[(?:[^\"'\\/#]|\\/(?![*/])|\\/\\/.*$|#(?!\\[).*$|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*')+\\](?=\\s*[a-z$#])/im,\n greedy: true,\n inside: {\n \"attribute-content\": {\n pattern: /^(#\\[)[\\s\\S]+(?=\\]$)/,\n lookbehind: true,\n inside: {\n \"comment\": comment,\n \"string\": string,\n \"attribute-class-name\": [\n {\n pattern: /([^:]|^)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n alias: \"class-name\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /([^:]|^)(?:\\\\?\\b[a-z_]\\w*)+/i,\n alias: [\n \"class-name\",\n \"class-name-fully-qualified\"\n ],\n greedy: true,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n }\n ],\n \"constant\": constant2,\n \"number\": number,\n \"operator\": operator,\n \"punctuation\": punctuation\n }\n },\n \"delimiter\": {\n pattern: /^#\\[|\\]$/,\n alias: \"punctuation\"\n }\n }\n }\n });\n Prism2.hooks.add(\"before-tokenize\", function(env2) {\n if (!/<\\?/.test(env2.code)) {\n return;\n }\n var phpPattern = /<\\?(?:[^\"'/#]|\\/(?![*/])|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|(?:\\/\\/|#(?!\\[))(?:[^?\\n\\r]|\\?(?!>))*(?=$|\\?>|[\\r\\n])|#\\[|\\/\\*(?:[^*]|\\*(?!\\/))*(?:\\*\\/|$))*?(?:\\?>|$)/gi;\n Prism2.languages[\"markup-templating\"].buildPlaceholders(env2, \"php\", phpPattern);\n });\n Prism2.hooks.add(\"after-tokenize\", function(env2) {\n Prism2.languages[\"markup-templating\"].tokenizePlaceholders(env2, \"php\");\n });\n})(Prism);\n(function(Prism2) {\n var powershell = Prism2.languages.powershell = {\n \"comment\": [\n {\n pattern: /(^|[^`])<#[\\s\\S]*?#>/,\n lookbehind: true\n },\n {\n pattern: /(^|[^`])#.*/,\n lookbehind: true\n }\n ],\n \"string\": [\n {\n pattern: /\"(?:`[\\s\\S]|[^`\"])*\"/,\n greedy: true,\n inside: {\n \"function\": {\n pattern: /(^|[^`])\\$\\((?:\\$\\([^\\r\\n()]*\\)|(?!\\$\\()[^\\r\\n)])*\\)/,\n lookbehind: true,\n inside: {}\n }\n }\n },\n {\n pattern: /'(?:[^']|'')*'/,\n greedy: true\n }\n ],\n \"namespace\": /\\[[a-z](?:\\[(?:\\[[^\\]]*\\]|[^\\[\\]])*\\]|[^\\[\\]])*\\]/i,\n \"boolean\": /\\$(?:true|false)\\b/i,\n \"variable\": /\\$\\w+\\b/,\n \"function\": [\n /\\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\\b/i,\n /\\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\\b/i\n ],\n \"keyword\": /\\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\\b/i,\n \"operator\": {\n pattern: /(\\W?)(?:!|-(?:eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\\b|-[-=]?|\\+[+=]?|[*\\/%]=?)/i,\n lookbehind: true\n },\n \"punctuation\": /[|{}[\\];(),.]/\n };\n var stringInside = powershell.string[0].inside;\n stringInside.boolean = powershell.boolean;\n stringInside.variable = powershell.variable;\n stringInside.function.inside = powershell;\n})(Prism);\nPrism.languages.properties = {\n \"comment\": /^[ \\t]*[#!].*$/m,\n \"attr-value\": {\n pattern: /(^[ \\t]*(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\s:=])+(?: *[=:] *(?! )| ))(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])+/m,\n lookbehind: true\n },\n \"attr-name\": /^[ \\t]*(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\s:=])+(?= *[=:]| )/m,\n \"punctuation\": /[=:]/\n};\n(function(Prism2) {\n var builtinTypes = /\\b(?:double|float|[su]?int(?:32|64)|s?fixed(?:32|64)|bool|string|bytes)\\b/;\n Prism2.languages.protobuf = Prism2.languages.extend(\"clike\", {\n \"class-name\": [\n {\n pattern: /(\\b(?:enum|extend|message|service)\\s+)[A-Za-z_]\\w*(?=\\s*\\{)/,\n lookbehind: true\n },\n {\n pattern: /(\\b(?:rpc\\s+\\w+|returns)\\s*\\(\\s*(?:stream\\s+)?)\\.?[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*(?=\\s*\\))/,\n lookbehind: true\n }\n ],\n \"keyword\": /\\b(?:enum|extend|extensions|import|message|oneof|option|optional|package|public|repeated|required|reserved|returns|rpc(?=\\s+\\w)|service|stream|syntax|to)\\b(?!\\s*=\\s*\\d)/,\n \"function\": /\\b[a-z_]\\w*(?=\\s*\\()/i\n });\n Prism2.languages.insertBefore(\"protobuf\", \"operator\", {\n \"map\": {\n pattern: /\\bmap<\\s*[\\w.]+\\s*,\\s*[\\w.]+\\s*>(?=\\s+[a-z_]\\w*\\s*[=;])/i,\n alias: \"class-name\",\n inside: {\n \"punctuation\": /[<>.,]/,\n \"builtin\": builtinTypes\n }\n },\n \"builtin\": builtinTypes,\n \"positional-class-name\": {\n pattern: /(?:\\b|\\B\\.)[a-z_]\\w*(?:\\.[a-z_]\\w*)*(?=\\s+[a-z_]\\w*\\s*[=;])/i,\n alias: \"class-name\",\n inside: {\n \"punctuation\": /\\./\n }\n },\n \"annotation\": {\n pattern: /(\\[\\s*)[a-z_]\\w*(?=\\s*=)/i,\n lookbehind: true\n }\n });\n})(Prism);\nPrism.languages.python = {\n \"comment\": {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true\n },\n \"string-interpolation\": {\n pattern: /(?:f|rf|fr)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n greedy: true,\n inside: {\n \"interpolation\": {\n pattern: /((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,\n lookbehind: true,\n inside: {\n \"format-spec\": {\n pattern: /(:)[^:(){}]+(?=\\}$)/,\n lookbehind: true\n },\n \"conversion-option\": {\n pattern: /![sra](?=[:}]$)/,\n alias: \"punctuation\"\n },\n rest: null\n }\n },\n \"string\": /[\\s\\S]+/\n }\n },\n \"triple-quoted-string\": {\n pattern: /(?:[rub]|rb|br)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n greedy: true,\n alias: \"string\"\n },\n \"string\": {\n pattern: /(?:[rub]|rb|br)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n greedy: true\n },\n \"function\": {\n pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n lookbehind: true\n },\n \"class-name\": {\n pattern: /(\\bclass\\s+)\\w+/i,\n lookbehind: true\n },\n \"decorator\": {\n pattern: /(^[\\t ]*)@\\w+(?:\\.\\w+)*/im,\n lookbehind: true,\n alias: [\"annotation\", \"punctuation\"],\n inside: {\n \"punctuation\": /\\./\n }\n },\n \"keyword\": /\\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n \"builtin\": /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n \"boolean\": /\\b(?:True|False|None)\\b/,\n \"number\": /\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?\\b/i,\n \"operator\": /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n \"punctuation\": /[{}[\\];(),.:]/\n};\nPrism.languages.python[\"string-interpolation\"].inside[\"interpolation\"].inside.rest = Prism.languages.python;\nPrism.languages.py = Prism.languages.python;\nPrism.languages.r = {\n \"comment\": /#.*/,\n \"string\": {\n pattern: /(['\"])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n \"percent-operator\": {\n pattern: /%[^%\\s]*%/,\n alias: \"operator\"\n },\n \"boolean\": /\\b(?:TRUE|FALSE)\\b/,\n \"ellipsis\": /\\.\\.(?:\\.|\\d+)/,\n \"number\": [\n /\\b(?:NaN|Inf)\\b/,\n /(?:\\b0x[\\dA-Fa-f]+(?:\\.\\d*)?|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[EePp][+-]?\\d+)?[iL]?/\n ],\n \"keyword\": /\\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\\b/,\n \"operator\": /->?>?|<(?:=|=!]=?|::?|&&?|\\|\\|?|[+*\\/^$@~]/,\n \"punctuation\": /[(){}\\[\\],;]/\n};\n(function(Prism2) {\n Prism2.languages.ruby = Prism2.languages.extend(\"clike\", {\n \"comment\": [\n /#.*/,\n {\n pattern: /^=begin\\s[\\s\\S]*?^=end/m,\n greedy: true\n }\n ],\n \"class-name\": {\n pattern: /(\\b(?:class)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n lookbehind: true,\n inside: {\n \"punctuation\": /[.\\\\]/\n }\n },\n \"keyword\": /\\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\\b/\n });\n var interpolation = {\n pattern: /#\\{[^}]+\\}/,\n inside: {\n \"delimiter\": {\n pattern: /^#\\{|\\}$/,\n alias: \"tag\"\n },\n rest: Prism2.languages.ruby\n }\n };\n delete Prism2.languages.ruby.function;\n Prism2.languages.insertBefore(\"ruby\", \"keyword\", {\n \"regex\": [\n {\n pattern: RegExp(/%r/.source + \"(?:\" + [\n /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source,\n /\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/.source,\n /\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}/.source,\n /\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\]/.source,\n /<(?:[^<>\\\\]|\\\\[\\s\\S])*>/.source\n ].join(\"|\") + \")\" + /[egimnosux]{0,6}/.source),\n greedy: true,\n inside: {\n \"interpolation\": interpolation\n }\n },\n {\n pattern: /(^|[^/])\\/(?!\\/)(?:\\[[^\\r\\n\\]]+\\]|\\\\.|[^[/\\\\\\r\\n])+\\/[egimnosux]{0,6}(?=\\s*(?:$|[\\r\\n,.;})#]))/,\n lookbehind: true,\n greedy: true,\n inside: {\n \"interpolation\": interpolation\n }\n }\n ],\n \"variable\": /[@$]+[a-zA-Z_]\\w*(?:[?!]|\\b)/,\n \"symbol\": {\n pattern: /(^|[^:]):[a-zA-Z_]\\w*(?:[?!]|\\b)/,\n lookbehind: true\n },\n \"method-definition\": {\n pattern: /(\\bdef\\s+)[\\w.]+/,\n lookbehind: true,\n inside: {\n \"function\": /\\w+$/,\n rest: Prism2.languages.ruby\n }\n }\n });\n Prism2.languages.insertBefore(\"ruby\", \"number\", {\n \"builtin\": /\\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\\b/,\n \"constant\": /\\b[A-Z]\\w*(?:[?!]|\\b)/\n });\n Prism2.languages.ruby.string = [\n {\n pattern: RegExp(/%[qQiIwWxs]?/.source + \"(?:\" + [\n /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source,\n /\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/.source,\n /\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}/.source,\n /\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\]/.source,\n /<(?:[^<>\\\\]|\\\\[\\s\\S])*>/.source\n ].join(\"|\") + \")\"),\n greedy: true,\n inside: {\n \"interpolation\": interpolation\n }\n },\n {\n pattern: /(\"|')(?:#\\{[^}]+\\}|#(?!\\{)|\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\#\\r\\n])*\\1/,\n greedy: true,\n inside: {\n \"interpolation\": interpolation\n }\n },\n {\n pattern: /<<[-~]?([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n alias: \"heredoc-string\",\n greedy: true,\n inside: {\n \"delimiter\": {\n pattern: /^<<[-~]?[a-z_]\\w*|[a-z_]\\w*$/i,\n alias: \"symbol\",\n inside: {\n \"punctuation\": /^<<[-~]?/\n }\n },\n \"interpolation\": interpolation\n }\n },\n {\n pattern: /<<[-~]?'([a-z_]\\w*)'[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n alias: \"heredoc-string\",\n greedy: true,\n inside: {\n \"delimiter\": {\n pattern: /^<<[-~]?'[a-z_]\\w*'|[a-z_]\\w*$/i,\n alias: \"symbol\",\n inside: {\n \"punctuation\": /^<<[-~]?'|'$/\n }\n }\n }\n }\n ];\n Prism2.languages.rb = Prism2.languages.ruby;\n})(Prism);\n(function(Prism2) {\n Prism2.languages.sass = Prism2.languages.extend(\"css\", {\n \"comment\": {\n pattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t].+)*/m,\n lookbehind: true,\n greedy: true\n }\n });\n Prism2.languages.insertBefore(\"sass\", \"atrule\", {\n \"atrule-line\": {\n pattern: /^(?:[ \\t]*)[@+=].+/m,\n greedy: true,\n inside: {\n \"atrule\": /(?:@[\\w-]+|[+=])/m\n }\n }\n });\n delete Prism2.languages.sass.atrule;\n var variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/;\n var operator = [\n /[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|or|not)\\b/,\n {\n pattern: /(\\s)-(?=\\s)/,\n lookbehind: true\n }\n ];\n Prism2.languages.insertBefore(\"sass\", \"property\", {\n \"variable-line\": {\n pattern: /^[ \\t]*\\$.+/m,\n greedy: true,\n inside: {\n \"punctuation\": /:/,\n \"variable\": variable,\n \"operator\": operator\n }\n },\n \"property-line\": {\n pattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s].*)/m,\n greedy: true,\n inside: {\n \"property\": [\n /[^:\\s]+(?=\\s*:)/,\n {\n pattern: /(:)[^:\\s]+/,\n lookbehind: true\n }\n ],\n \"punctuation\": /:/,\n \"variable\": variable,\n \"operator\": operator,\n \"important\": Prism2.languages.sass.important\n }\n }\n });\n delete Prism2.languages.sass.property;\n delete Prism2.languages.sass.important;\n Prism2.languages.insertBefore(\"sass\", \"punctuation\", {\n \"selector\": {\n pattern: /^([ \\t]*)\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*)*/m,\n lookbehind: true,\n greedy: true\n }\n });\n})(Prism);\nPrism.languages.scala = Prism.languages.extend(\"java\", {\n \"triple-quoted-string\": {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: \"string\"\n },\n \"string\": {\n pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n \"keyword\": /<-|=>|\\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\\b/,\n \"number\": /\\b0x(?:[\\da-f]*\\.)?[\\da-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e\\d+)?[dfl]?/i,\n \"builtin\": /\\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\\b/,\n \"symbol\": /'[^\\d\\s\\\\]\\w*/\n});\ndelete Prism.languages.scala[\"class-name\"];\ndelete Prism.languages.scala[\"function\"];\n(function(Prism2) {\n Prism2.languages.scheme = {\n \"comment\": /;.*|#;\\s*(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\[(?:[^\\[\\]]|\\[[^\\[\\]]*\\])*\\])|#\\|(?:[^#|]|#(?!\\|)|\\|(?!#)|#\\|(?:[^#|]|#(?!\\|)|\\|(?!#))*\\|#)*\\|#/,\n \"string\": {\n pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n greedy: true\n },\n \"symbol\": {\n pattern: /'[^()\\[\\]#'\\s]+/,\n greedy: true\n },\n \"character\": {\n pattern: /#\\\\(?:[ux][a-fA-F\\d]+\\b|[-a-zA-Z]+\\b|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\\S)/,\n greedy: true,\n alias: \"string\"\n },\n \"lambda-parameter\": [\n {\n pattern: /((?:^|[^'`#])[(\\[]lambda\\s+)(?:[^|()\\[\\]'\\s]+|\\|(?:[^\\\\|]|\\\\.)*\\|)/,\n lookbehind: true\n },\n {\n pattern: /((?:^|[^'`#])[(\\[]lambda\\s+[(\\[])[^()\\[\\]']+/,\n lookbehind: true\n }\n ],\n \"keyword\": {\n pattern: /((?:^|[^'`#])[(\\[])(?:begin|case(?:-lambda)?|cond(?:-expand)?|define(?:-library|-macro|-record-type|-syntax|-values)?|defmacro|delay(?:-force)?|do|else|export|except|guard|if|import|include(?:-ci|-library-declarations)?|lambda|let(?:rec)?(?:-syntax|-values|\\*)?|let\\*-values|only|parameterize|prefix|(?:quasi-?)?quote|rename|set!|syntax-(?:case|rules)|unless|unquote(?:-splicing)?|when)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n \"builtin\": {\n pattern: /((?:^|[^'`#])[(\\[])(?:abs|and|append|apply|assoc|ass[qv]|binary-port\\?|boolean=?\\?|bytevector(?:-append|-copy|-copy!|-length|-u8-ref|-u8-set!|\\?)?|caar|cadr|call-with-(?:current-continuation|port|values)|call\\/cc|car|cdar|cddr|cdr|ceiling|char(?:->integer|-ready\\?|\\?|<\\?|<=\\?|=\\?|>\\?|>=\\?)|close-(?:input-port|output-port|port)|complex\\?|cons|current-(?:error|input|output)-port|denominator|dynamic-wind|eof-object\\??|eq\\?|equal\\?|eqv\\?|error|error-object(?:-irritants|-message|\\?)|eval|even\\?|exact(?:-integer-sqrt|-integer\\?|\\?)?|expt|features|file-error\\?|floor(?:-quotient|-remainder|\\/)?|flush-output-port|for-each|gcd|get-output-(?:bytevector|string)|inexact\\??|input-port(?:-open\\?|\\?)|integer(?:->char|\\?)|lcm|length|list(?:->string|->vector|-copy|-ref|-set!|-tail|\\?)?|make-(?:bytevector|list|parameter|string|vector)|map|max|member|memq|memv|min|modulo|negative\\?|newline|not|null\\?|number(?:->string|\\?)|numerator|odd\\?|open-(?:input|output)-(?:bytevector|string)|or|output-port(?:-open\\?|\\?)|pair\\?|peek-char|peek-u8|port\\?|positive\\?|procedure\\?|quotient|raise|raise-continuable|rational\\?|rationalize|read-(?:bytevector|bytevector!|char|error\\?|line|string|u8)|real\\?|remainder|reverse|round|set-c[ad]r!|square|string(?:->list|->number|->symbol|->utf8|->vector|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\\?|<\\?|<=\\?|=\\?|>\\?|>=\\?)?|substring|symbol(?:->string|\\?|=\\?)|syntax-error|textual-port\\?|truncate(?:-quotient|-remainder|\\/)?|u8-ready\\?|utf8->string|values|vector(?:->list|->string|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\\?)?|with-exception-handler|write-(?:bytevector|char|string|u8)|zero\\?)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n \"operator\": {\n pattern: /((?:^|[^'`#])[(\\[])(?:[-+*%/]|[<>]=?|=>?)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n \"number\": {\n pattern: RegExp(SortedBNF({\n \"\": /\\d+(?:\\/\\d+)|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?/.source,\n \"\": /[+-]?|[+-](?:inf|nan)\\.0/.source,\n \"\": /[+-](?:|(?:inf|nan)\\.0)?i/.source,\n \"\": /(?:@|)?|/.source,\n \"\": /(?:#d(?:#[ei])?|#[ei](?:#d)?)?/.source,\n \"\": /[0-9a-f]+(?:\\/[0-9a-f]+)?/.source,\n \"\": /[+-]?|[+-](?:inf|nan)\\.0/.source,\n \"\": /[+-](?:|(?:inf|nan)\\.0)?i/.source,\n \"\": /(?:@|)?|/.source,\n \"\": /#[box](?:#[ei])?|(?:#[ei])?#[box]/.source,\n \"\": /(^|[()\\[\\]\\s])(?:|)(?=[()\\[\\]\\s]|$)/.source\n }), \"i\"),\n lookbehind: true\n },\n \"boolean\": {\n pattern: /(^|[()\\[\\]\\s])#(?:[ft]|false|true)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n \"function\": {\n pattern: /((?:^|[^'`#])[(\\[])(?:[^|()\\[\\]'\\s]+|\\|(?:[^\\\\|]|\\\\.)*\\|)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n \"identifier\": {\n pattern: /(^|[()\\[\\]\\s])\\|(?:[^\\\\|]|\\\\.)*\\|(?=[()\\[\\]\\s]|$)/,\n lookbehind: true,\n greedy: true\n },\n \"punctuation\": /[()\\[\\]']/\n };\n function SortedBNF(grammar) {\n for (var key in grammar) {\n grammar[key] = grammar[key].replace(/<[\\w\\s]+>/g, function(key2) {\n return \"(?:\" + grammar[key2].trim() + \")\";\n });\n }\n return grammar[key];\n }\n})(Prism);\nPrism.languages.scss = Prism.languages.extend(\"css\", {\n \"comment\": {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n \"atrule\": {\n pattern: /@[\\w-](?:\\([^()]+\\)|[^()\\s]|\\s+(?!\\s))*?(?=\\s+[{;])/,\n inside: {\n \"rule\": /@[\\w-]+/\n }\n },\n \"url\": /(?:[-a-z]+-)?url(?=\\()/i,\n \"selector\": {\n pattern: /(?=\\S)[^@;{}()]?(?:[^@;{}()\\s]|\\s+(?!\\s)|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}][^:{}]*[:{][^}]))/m,\n inside: {\n \"parent\": {\n pattern: /&/,\n alias: \"important\"\n },\n \"placeholder\": /%[-\\w]+/,\n \"variable\": /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n },\n \"property\": {\n pattern: /(?:[-\\w]|\\$[-\\w]|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,\n inside: {\n \"variable\": /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n }\n});\nPrism.languages.insertBefore(\"scss\", \"atrule\", {\n \"keyword\": [\n /@(?:if|else(?: if)?|forward|for|each|while|import|use|extend|debug|warn|mixin|include|function|return|content)\\b/i,\n {\n pattern: /( )(?:from|through)(?= )/,\n lookbehind: true\n }\n ]\n});\nPrism.languages.insertBefore(\"scss\", \"important\", {\n \"variable\": /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n});\nPrism.languages.insertBefore(\"scss\", \"function\", {\n \"module-modifier\": {\n pattern: /\\b(?:as|with|show|hide)\\b/i,\n alias: \"keyword\"\n },\n \"placeholder\": {\n pattern: /%[-\\w]+/,\n alias: \"selector\"\n },\n \"statement\": {\n pattern: /\\B!(?:default|optional)\\b/i,\n alias: \"keyword\"\n },\n \"boolean\": /\\b(?:true|false)\\b/,\n \"null\": {\n pattern: /\\bnull\\b/,\n alias: \"keyword\"\n },\n \"operator\": {\n pattern: /(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|or|not)(?=\\s)/,\n lookbehind: true\n }\n});\nPrism.languages.scss[\"atrule\"].inside.rest = Prism.languages.scss;\nPrism.languages.sql = {\n \"comment\": {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n lookbehind: true\n },\n \"variable\": [\n {\n pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n greedy: true\n },\n /@[\\w.$]+/\n ],\n \"string\": {\n pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n greedy: true,\n lookbehind: true\n },\n \"function\": /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i,\n \"keyword\": /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:S|ING)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\\b/i,\n \"boolean\": /\\b(?:TRUE|FALSE|NULL)\\b/i,\n \"number\": /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n \"operator\": /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|DIV|IN|ILIKE|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n \"punctuation\": /[;[\\]()`,.]/\n};\nPrism.languages.swift = {\n \"comment\": {\n pattern: /(^|[^\\\\:])(?:\\/\\/.*|\\/\\*(?:[^/*]|\\/(?!\\*)|\\*(?!\\/)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\*\\/)/,\n lookbehind: true,\n greedy: true\n },\n \"string-literal\": [\n {\n pattern: RegExp(/(^|[^\"#])/.source + \"(?:\" + /\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^(])|[^\\\\\\r\\n\"])*\"/.source + \"|\" + /\"\"\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\\"]|\"(?!\"\"))*\"\"\"/.source + \")\" + /(?![\"#])/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n \"interpolation\": {\n pattern: /(\\\\\\()(?:[^()]|\\([^()]*\\))*(?=\\))/,\n lookbehind: true,\n inside: null\n },\n \"interpolation-punctuation\": {\n pattern: /^\\)|\\\\\\($/,\n alias: \"punctuation\"\n },\n \"punctuation\": /\\\\(?=[\\r\\n])/,\n \"string\": /[\\s\\S]+/\n }\n },\n {\n pattern: RegExp(/(^|[^\"#])(#+)/.source + \"(?:\" + /\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^#])|[^\\\\\\r\\n])*?\"/.source + \"|\" + /\"\"\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?\"\"\"/.source + \")\\\\2\"),\n lookbehind: true,\n greedy: true,\n inside: {\n \"interpolation\": {\n pattern: /(\\\\#+\\()(?:[^()]|\\([^()]*\\))*(?=\\))/,\n lookbehind: true,\n inside: null\n },\n \"interpolation-punctuation\": {\n pattern: /^\\)|\\\\#+\\($/,\n alias: \"punctuation\"\n },\n \"string\": /[\\s\\S]+/\n }\n }\n ],\n \"directive\": {\n pattern: RegExp(/#/.source + \"(?:\" + (/(?:elseif|if)\\b/.source + \"(?:[ \t]*\" + /(?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \\t]*(?:&&|\\|\\|))?/.source + \")+\") + \"|\" + /(?:else|endif)\\b/.source + \")\"),\n alias: \"property\",\n inside: {\n \"directive-name\": /^#\\w+/,\n \"boolean\": /\\b(?:true|false)\\b/,\n \"number\": /\\b\\d+(?:\\.\\d+)*\\b/,\n \"operator\": /!|&&|\\|\\||[<>]=?/,\n \"punctuation\": /[(),]/\n }\n },\n \"literal\": {\n pattern: /#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\\b/,\n alias: \"constant\"\n },\n \"other-directive\": {\n pattern: /#\\w+\\b/,\n alias: \"property\"\n },\n \"attribute\": {\n pattern: /@\\w+/,\n alias: \"atrule\"\n },\n \"function-definition\": {\n pattern: /(\\bfunc\\s+)\\w+/,\n lookbehind: true,\n alias: \"function\"\n },\n \"label\": {\n pattern: /\\b(break|continue)\\s+\\w+|\\b[a-zA-Z_]\\w*(?=\\s*:\\s*(?:for|repeat|while)\\b)/,\n lookbehind: true,\n alias: \"important\"\n },\n \"keyword\": /\\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\\b/,\n \"boolean\": /\\b(?:true|false)\\b/,\n \"nil\": {\n pattern: /\\bnil\\b/,\n alias: \"constant\"\n },\n \"short-argument\": /\\$\\d+\\b/,\n \"omit\": {\n pattern: /\\b_\\b/,\n alias: \"keyword\"\n },\n \"number\": /\\b(?:[\\d_]+(?:\\.[\\de_]+)?|0x[a-f0-9_]+(?:\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i,\n \"class-name\": /\\b[A-Z](?:[A-Z_\\d]*[a-z]\\w*)?\\b/,\n \"function\": /\\b[a-z_]\\w*(?=\\s*\\()/i,\n \"constant\": /\\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/,\n \"operator\": /[-+*/%=!<>&|^~?]+|\\.[.\\-+*/%=!<>&|^~?]+/,\n \"punctuation\": /[{}[\\]();,.:\\\\]/\n};\nPrism.languages.swift[\"string-literal\"].forEach(function(rule) {\n rule.inside[\"interpolation\"].inside = Prism.languages.swift;\n});\n(function(Prism2) {\n var typescript = Prism2.util.clone(Prism2.languages.typescript);\n Prism2.languages.tsx = Prism2.languages.extend(\"jsx\", typescript);\n var tag = Prism2.languages.tsx.tag;\n tag.pattern = RegExp(/(^|[^\\w$]|(?=<\\/))/.source + \"(?:\" + tag.pattern.source + \")\", tag.pattern.flags);\n tag.lookbehind = true;\n})(Prism);\n(function(Prism2) {\n Prism2.languages.typescript = Prism2.languages.extend(\"javascript\", {\n \"class-name\": {\n pattern: /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,\n lookbehind: true,\n greedy: true,\n inside: null\n },\n \"builtin\": /\\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\\b/\n });\n Prism2.languages.typescript.keyword.push(/\\b(?:abstract|as|declare|implements|is|keyof|readonly|require)\\b/, /\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/, /\\btype\\b(?=\\s*(?:[\\{*]|$))/);\n delete Prism2.languages.typescript[\"parameter\"];\n var typeInside = Prism2.languages.extend(\"typescript\", {});\n delete typeInside[\"class-name\"];\n Prism2.languages.typescript[\"class-name\"].inside = typeInside;\n Prism2.languages.insertBefore(\"typescript\", \"function\", {\n \"decorator\": {\n pattern: /@[$\\w\\xA0-\\uFFFF]+/,\n inside: {\n \"at\": {\n pattern: /^@/,\n alias: \"operator\"\n },\n \"function\": /^[\\s\\S]+/\n }\n },\n \"generic-function\": {\n pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,\n greedy: true,\n inside: {\n \"function\": /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,\n \"generic\": {\n pattern: /<[\\s\\S]+/,\n alias: \"class-name\",\n inside: typeInside\n }\n }\n }\n });\n Prism2.languages.ts = Prism2.languages.typescript;\n})(Prism);\nPrism.languages.wasm = {\n \"comment\": [\n /\\(;[\\s\\S]*?;\\)/,\n {\n pattern: /;;.*/,\n greedy: true\n }\n ],\n \"string\": {\n pattern: /\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n greedy: true\n },\n \"keyword\": [\n {\n pattern: /\\b(?:align|offset)=/,\n inside: {\n \"operator\": /=/\n }\n },\n {\n pattern: /\\b(?:(?:f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))?|memory\\.(?:grow|size))\\b/,\n inside: {\n \"punctuation\": /\\./\n }\n },\n /\\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\\b/\n ],\n \"variable\": /\\$[\\w!#$%&'*+\\-./:<=>?@\\\\^`|~]+/i,\n \"number\": /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/,\n \"punctuation\": /[()]/\n};\n(function(Prism2) {\n var anchorOrAlias = /[*&][^\\s[\\]{},]+/;\n var tag = /!(?:<[\\w\\-%#;/?:@&=+$,.!~*'()[\\]]+>|(?:[a-zA-Z\\d-]*!)?[\\w\\-%#;/?:@&=+$.~*'()]+)?/;\n var properties = \"(?:\" + tag.source + \"(?:[ \t]+\" + anchorOrAlias.source + \")?|\" + anchorOrAlias.source + \"(?:[ \t]+\" + tag.source + \")?)\";\n var plainKey = /(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \\t]*(?:(?![#:])|:))*/.source.replace(//g, function() {\n return /[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]/.source;\n });\n var string = /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'/.source;\n function createValuePattern(value, flags) {\n flags = (flags || \"\").replace(/m/g, \"\") + \"m\";\n var pattern = /([:\\-,[{]\\s*(?:\\s<>[ \\t]+)?)(?:<>)(?=[ \\t]*(?:$|,|\\]|\\}|(?:[\\r\\n]\\s*)?#))/.source.replace(/<>/g, function() {\n return properties;\n }).replace(/<>/g, function() {\n return value;\n });\n return RegExp(pattern, flags);\n }\n Prism2.languages.yaml = {\n \"scalar\": {\n pattern: RegExp(/([\\-:]\\s*(?:\\s<>[ \\t]+)?[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)\\S[^\\r\\n]*(?:\\2[^\\r\\n]+)*)/.source.replace(/<>/g, function() {\n return properties;\n })),\n lookbehind: true,\n alias: \"string\"\n },\n \"comment\": /#.*/,\n \"key\": {\n pattern: RegExp(/((?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:<>[ \\t]+)?)<>(?=\\s*:\\s)/.source.replace(/<>/g, function() {\n return properties;\n }).replace(/<>/g, function() {\n return \"(?:\" + plainKey + \"|\" + string + \")\";\n })),\n lookbehind: true,\n greedy: true,\n alias: \"atrule\"\n },\n \"directive\": {\n pattern: /(^[ \\t]*)%.+/m,\n lookbehind: true,\n alias: \"important\"\n },\n \"datetime\": {\n pattern: createValuePattern(/\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?/.source),\n lookbehind: true,\n alias: \"number\"\n },\n \"boolean\": {\n pattern: createValuePattern(/true|false/.source, \"i\"),\n lookbehind: true,\n alias: \"important\"\n },\n \"null\": {\n pattern: createValuePattern(/null|~/.source, \"i\"),\n lookbehind: true,\n alias: \"important\"\n },\n \"string\": {\n pattern: createValuePattern(string),\n lookbehind: true,\n greedy: true\n },\n \"number\": {\n pattern: createValuePattern(/[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)/.source, \"i\"),\n lookbehind: true\n },\n \"tag\": tag,\n \"important\": anchorOrAlias,\n \"punctuation\": /---|[:[\\]{}\\-,|>?]|\\.\\.\\./\n };\n Prism2.languages.yml = Prism2.languages.yaml;\n})(Prism);\nvar decorateCodeLine = (editor) => {\n const code_block = getPlugin(editor, ELEMENT_CODE_BLOCK);\n const code_line = getPlugin(editor, ELEMENT_CODE_LINE);\n return ([node, path]) => {\n const ranges = [];\n if (!code_block.options.syntax || node.type !== code_line.type) {\n return ranges;\n }\n const codeBlock2 = getParent(editor, path);\n if (!codeBlock2) {\n return ranges;\n }\n let langName = codeBlock2[0].lang;\n if (langName === \"plain\") {\n langName = \"\";\n }\n const lang = import_prismjs.languages[langName];\n if (!lang) {\n return ranges;\n }\n const text5 = Node2.string(node);\n const tokens = (0, import_prismjs.tokenize)(text5, lang);\n let offset3 = 0;\n for (const element4 of tokens) {\n if (element4 instanceof import_prismjs.Token) {\n ranges.push({\n anchor: {\n path,\n offset: offset3\n },\n focus: {\n path,\n offset: offset3 + element4.length\n },\n tokenType: element4.type,\n [ELEMENT_CODE_SYNTAX]: true\n });\n }\n offset3 += element4.length;\n }\n return ranges;\n };\n};\nvar deserializeHtmlCodeBlock = {\n rules: [{\n validNodeName: \"PRE\"\n }, {\n validNodeName: \"P\",\n validStyle: {\n fontFamily: \"Consolas\"\n }\n }],\n getNode: (el) => {\n var _find, _el$textContent, _lines;\n const languageSelectorText = ((_find = [...el.childNodes].find((node) => node.nodeName === \"SELECT\")) === null || _find === void 0 ? void 0 : _find.textContent) || \"\";\n const textContent = ((_el$textContent = el.textContent) === null || _el$textContent === void 0 ? void 0 : _el$textContent.replace(languageSelectorText, \"\")) || \"\";\n let lines = textContent.split(\"\\n\");\n if (!((_lines = lines) !== null && _lines !== void 0 && _lines.length)) {\n lines = [textContent];\n }\n const codeLines = lines.map((line) => ({\n type: ELEMENT_CODE_LINE,\n children: [{\n text: line\n }]\n }));\n return {\n type: ELEMENT_CODE_BLOCK,\n children: codeLines\n };\n }\n};\nvar getCodeLineType = (editor) => getPluginType(editor, ELEMENT_CODE_LINE);\nvar getCodeLineEntry = (editor, {\n at = editor.selection\n} = {}) => {\n if (at && someNode(editor, {\n at,\n match: {\n type: getCodeLineType(editor)\n }\n })) {\n const selectionParent = getParent(editor, at);\n if (!selectionParent)\n return;\n const [, parentPath] = selectionParent;\n const codeLine = getAbove(editor, {\n at,\n match: {\n type: getCodeLineType(editor)\n }\n }) || getParent(editor, parentPath);\n if (!codeLine)\n return;\n const [codeLineNode, codeLinePath] = codeLine;\n if (isElement2(codeLineNode) && codeLineNode.type !== getCodeLineType(editor))\n return;\n const codeBlock2 = getParent(editor, codeLinePath);\n if (!codeBlock2)\n return;\n return {\n codeBlock: codeBlock2,\n codeLine\n };\n }\n};\nvar indentCodeLine = (editor, {\n codeLine\n}) => {\n const [, codeLinePath] = codeLine;\n const codeLineStart = Editor.start(editor, codeLinePath);\n if (!isExpanded(editor.selection)) {\n var _editor$selection;\n const cursor = (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.anchor;\n const range = Editor.range(editor, codeLineStart, cursor);\n const text5 = Editor.string(editor, range);\n if (/\\S/.test(text5)) {\n Transforms.insertText(editor, \" \", {\n at: editor.selection\n });\n return;\n }\n }\n Transforms.insertText(editor, \" \", {\n at: codeLineStart\n });\n};\nvar deleteStartSpace = (editor, {\n codeLine\n}) => {\n const [, codeLinePath] = codeLine;\n const codeLineStart = Editor.start(editor, codeLinePath);\n const codeLineEnd = codeLineStart && Editor.after(editor, codeLineStart);\n const spaceRange = codeLineEnd && Editor.range(editor, codeLineStart, codeLineEnd);\n const spaceText = getText(editor, spaceRange);\n if (/\\s/.test(spaceText)) {\n Transforms.delete(editor, {\n at: spaceRange\n });\n return true;\n }\n return false;\n};\nvar outdentCodeLine = (editor, {\n codeBlock: codeBlock2,\n codeLine\n}) => {\n const deleted = deleteStartSpace(editor, {\n codeBlock: codeBlock2,\n codeLine\n });\n deleted && deleteStartSpace(editor, {\n codeBlock: codeBlock2,\n codeLine\n });\n};\nvar onKeyDownCodeBlock = (editor) => (e2) => {\n if (e2.key === \"Tab\") {\n const shiftTab = e2.shiftKey;\n const _codeLines = getNodes(editor, {\n match: {\n type: getCodeLineType(editor)\n }\n });\n const codeLines = Array.from(_codeLines);\n if (codeLines.length) {\n e2.preventDefault();\n const [, firstLinePath] = codeLines[0];\n const codeBlock2 = getParent(editor, firstLinePath);\n if (!codeBlock2)\n return;\n Editor.withoutNormalizing(editor, () => {\n for (const codeLine of codeLines) {\n if (shiftTab) {\n outdentCodeLine(editor, {\n codeBlock: codeBlock2,\n codeLine\n });\n }\n if (!shiftTab) {\n indentCodeLine(editor, {\n codeBlock: codeBlock2,\n codeLine\n });\n }\n }\n });\n }\n }\n if (e2.key === \"a\" && (e2.metaKey || e2.ctrlKey)) {\n const res = getCodeLineEntry(editor, {});\n if (!res)\n return;\n const {\n codeBlock: codeBlock2\n } = res;\n const [, codeBlockPath] = codeBlock2;\n Transforms.select(editor, codeBlockPath);\n e2.preventDefault();\n e2.stopPropagation();\n }\n};\nvar insertFragmentCodeBlock = (editor) => {\n const {\n insertFragment\n } = editor;\n const codeBlockType = getPluginType(editor, ELEMENT_CODE_BLOCK);\n const codeLineType = getPluginType(editor, ELEMENT_CODE_LINE);\n function convertNodeToCodeLine(node) {\n return {\n type: codeLineType,\n children: [{\n text: Node2.string(node)\n }]\n };\n }\n function extractCodeLinesFromCodeBlock(node) {\n return node.children;\n }\n return (fragment) => {\n const inCodeLine = findNode(editor, {\n match: {\n type: codeLineType\n }\n });\n if (!inCodeLine) {\n return insertFragment(fragment);\n }\n return Transforms.insertFragment(editor, fragment.flatMap((node) => node.type === codeBlockType ? extractCodeLinesFromCodeBlock(node) : convertNodeToCodeLine(node)));\n };\n};\nvar getIndentDepth = (editor, {\n codeLine\n}) => {\n const [, codeLinePath] = codeLine;\n const text5 = getText(editor, codeLinePath);\n return text5.search(/\\S|$/);\n};\nvar insertCodeBlock = (editor, insertNodesOptions = {}) => {\n if (!editor.selection || isExpanded(editor.selection))\n return;\n const matchCodeElements = (node) => node.type === getPluginType(editor, ELEMENT_CODE_BLOCK) || node.type === getCodeLineType(editor);\n if (someNode(editor, {\n match: matchCodeElements\n })) {\n return;\n }\n if (!isSelectionAtBlockStart(editor)) {\n editor.insertBreak();\n }\n setNodes(editor, {\n type: getCodeLineType(editor),\n children: [{\n text: \"\"\n }]\n }, insertNodesOptions);\n wrapNodes(editor, {\n type: getPluginType(editor, ELEMENT_CODE_BLOCK),\n children: []\n }, insertNodesOptions);\n};\nvar insertCodeLine = (editor, indentDepth = 0) => {\n if (editor.selection) {\n const indent2 = \" \".repeat(indentDepth);\n insertNodes(editor, {\n type: getCodeLineType(editor),\n children: [{\n text: indent2\n }]\n });\n }\n};\nvar insertEmptyCodeBlock = (editor, {\n defaultType = getPluginType(editor, ELEMENT_DEFAULT),\n insertNodesOptions,\n level = 0\n}) => {\n if (!editor.selection)\n return;\n if (isExpanded(editor.selection) || !isBlockAboveEmpty(editor)) {\n const selectionPath = Editor.path(editor, editor.selection);\n const insertPath = Path.next(selectionPath.slice(0, level + 1));\n insertNodes(editor, {\n type: defaultType,\n children: [{\n text: \"\"\n }]\n }, {\n at: insertPath,\n select: true\n });\n }\n insertCodeBlock(editor, insertNodesOptions);\n};\nvar withCodeBlock = (editor) => {\n const {\n insertBreak\n } = editor;\n const insertBreakCodeBlock = () => {\n if (!editor.selection)\n return;\n const res = getCodeLineEntry(editor, {});\n if (!res)\n return;\n const {\n codeBlock: codeBlock2,\n codeLine\n } = res;\n const indentDepth = getIndentDepth(editor, {\n codeBlock: codeBlock2,\n codeLine\n });\n insertCodeLine(editor, indentDepth);\n return true;\n };\n editor.insertBreak = () => {\n if (insertBreakCodeBlock())\n return;\n insertBreak();\n };\n editor.insertFragment = insertFragmentCodeBlock(editor);\n return editor;\n};\nvar createCodeBlockPlugin = createPluginFactory({\n key: ELEMENT_CODE_BLOCK,\n isElement: true,\n deserializeHtml: deserializeHtmlCodeBlock,\n handlers: {\n onKeyDown: onKeyDownCodeBlock\n },\n withOverrides: withCodeBlock,\n options: {\n hotkey: [\"mod+opt+8\", \"mod+shift+8\"],\n syntax: true,\n syntaxPopularFirst: false\n },\n then: (editor) => ({\n inject: {\n pluginsByKey: {\n [KEY_DESERIALIZE_HTML]: {\n editor: {\n insertData: {\n query: () => {\n const code_line = getPlugin(editor, ELEMENT_CODE_LINE);\n return !someNode(editor, {\n match: {\n type: code_line.type\n }\n });\n }\n }\n }\n }\n }\n }\n }),\n plugins: [{\n key: ELEMENT_CODE_LINE,\n isElement: true\n }, {\n key: ELEMENT_CODE_SYNTAX,\n isLeaf: true,\n decorate: decorateCodeLine\n }]\n});\n\n// node_modules/@udecode/plate-heading/dist/index.es.js\nvar ELEMENT_H1 = \"h1\";\nvar ELEMENT_H2 = \"h2\";\nvar ELEMENT_H3 = \"h3\";\nvar ELEMENT_H4 = \"h4\";\nvar ELEMENT_H5 = \"h5\";\nvar ELEMENT_H6 = \"h6\";\nvar KEYS_HEADING = [ELEMENT_H1, ELEMENT_H2, ELEMENT_H3, ELEMENT_H4, ELEMENT_H5, ELEMENT_H6];\nvar createHeadingPlugin = createPluginFactory({\n key: \"heading\",\n options: {\n levels: 6\n },\n then: (editor, {\n options: {\n levels\n } = {}\n }) => {\n const plugins = [];\n for (let level = 1; level <= levels; level++) {\n const key = KEYS_HEADING[level - 1];\n const plugin2 = {\n key,\n isElement: true,\n deserializeHtml: {\n rules: [{\n validNodeName: `H${level}`\n }]\n },\n handlers: {\n onKeyDown: onKeyDownToggleElement\n },\n options: {}\n };\n if (level < 4) {\n plugin2.options.hotkey = [`mod+opt+${level}`, `mod+shift+${level}`];\n }\n plugins.push(plugin2);\n }\n return {\n plugins\n };\n }\n});\n\n// node_modules/@udecode/plate-paragraph/dist/index.es.js\nvar ELEMENT_PARAGRAPH = \"p\";\nvar createParagraphPlugin = createPluginFactory({\n key: ELEMENT_PARAGRAPH,\n isElement: true,\n handlers: {\n onKeyDown: onKeyDownToggleElement\n },\n options: {\n hotkey: [\"mod+opt+0\", \"mod+shift+0\"]\n },\n deserializeHtml: {\n rules: [{\n validNodeName: \"P\"\n }],\n query: (el) => el.style.fontFamily !== \"Consolas\"\n }\n});\n\n// node_modules/@udecode/plate-basic-elements/dist/index.es.js\nvar createBasicElementsPlugin = createPluginFactory({\n key: \"basicElements\",\n plugins: [createBlockquotePlugin(), createCodeBlockPlugin(), createHeadingPlugin(), createParagraphPlugin()]\n});\n\n// node_modules/@udecode/plate-basic-marks/dist/index.es.js\nvar MARK_BOLD = \"bold\";\nvar createBoldPlugin = createPluginFactory({\n key: MARK_BOLD,\n isLeaf: true,\n deserializeHtml: {\n rules: [{\n validNodeName: [\"STRONG\", \"B\"]\n }, {\n validStyle: {\n fontWeight: [\"600\", \"700\", \"bold\"]\n }\n }],\n query: (el) => !someHtmlElement(el, (node) => node.style.fontWeight === \"normal\")\n },\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+b\"\n }\n});\nvar MARK_CODE = \"code\";\nvar createCodePlugin = createPluginFactory({\n key: MARK_CODE,\n isLeaf: true,\n deserializeHtml: {\n rules: [{\n validNodeName: [\"CODE\"]\n }, {\n validStyle: {\n wordWrap: \"break-word\"\n }\n }, {\n validStyle: {\n fontFamily: \"Consolas\"\n }\n }],\n query(el) {\n const blockAbove = findHtmlParentElement(el, \"P\");\n if ((blockAbove === null || blockAbove === void 0 ? void 0 : blockAbove.style.fontFamily) === \"Consolas\")\n return false;\n return !findHtmlParentElement(el, \"PRE\");\n }\n },\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+e\"\n }\n});\nvar MARK_ITALIC = \"italic\";\nvar createItalicPlugin = createPluginFactory({\n key: MARK_ITALIC,\n isLeaf: true,\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+i\"\n },\n deserializeHtml: {\n rules: [{\n validNodeName: [\"EM\", \"I\"]\n }, {\n validStyle: {\n fontStyle: \"italic\"\n }\n }],\n query: (el) => !someHtmlElement(el, (node) => node.style.fontStyle === \"normal\")\n }\n});\nvar MARK_STRIKETHROUGH = \"strikethrough\";\nvar createStrikethroughPlugin = createPluginFactory({\n key: MARK_STRIKETHROUGH,\n isLeaf: true,\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+shift+x\"\n },\n deserializeHtml: {\n rules: [{\n validNodeName: [\"S\", \"DEL\", \"STRIKE\"]\n }, {\n validStyle: {\n textDecoration: \"line-through\"\n }\n }],\n query: (el) => !someHtmlElement(el, (node) => node.style.textDecoration === \"none\")\n }\n});\nvar MARK_SUBSCRIPT$1 = \"subscript\";\nvar MARK_SUPERSCRIPT$1 = \"superscript\";\nvar createSubscriptPlugin = createPluginFactory({\n key: MARK_SUBSCRIPT$1,\n isLeaf: true,\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+,\",\n clear: MARK_SUPERSCRIPT$1\n },\n deserializeHtml: {\n rules: [{\n validNodeName: [\"SUB\"]\n }, {\n validStyle: {\n verticalAlign: \"sub\"\n }\n }]\n }\n});\nvar MARK_SUPERSCRIPT = \"superscript\";\nvar MARK_SUBSCRIPT = \"subscript\";\nvar createSuperscriptPlugin = createPluginFactory({\n key: MARK_SUPERSCRIPT,\n isLeaf: true,\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+.\",\n clear: MARK_SUBSCRIPT\n },\n deserializeHtml: {\n rules: [{\n validNodeName: [\"SUP\"]\n }, {\n validStyle: {\n verticalAlign: \"super\"\n }\n }]\n }\n});\nvar MARK_UNDERLINE = \"underline\";\nvar createUnderlinePlugin = createPluginFactory({\n key: MARK_UNDERLINE,\n isLeaf: true,\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+u\"\n },\n deserializeHtml: {\n rules: [{\n validNodeName: [\"U\"]\n }, {\n validStyle: {\n textDecoration: [\"underline\"]\n }\n }],\n query: (el) => !someHtmlElement(el, (node) => node.style.textDecoration === \"none\")\n }\n});\nvar createBasicMarksPlugin = createPluginFactory({\n key: \"basicMarks\",\n plugins: [createBoldPlugin(), createCodePlugin(), createItalicPlugin(), createStrikethroughPlugin(), createSubscriptPlugin(), createSuperscriptPlugin(), createUnderlinePlugin()]\n});\n\n// node_modules/@udecode/plate-break/dist/index.es.js\nfunction unwrapExports2(x4) {\n return x4 && x4.__esModule && Object.prototype.hasOwnProperty.call(x4, \"default\") ? x4[\"default\"] : x4;\n}\nfunction createCommonjsModule3(fn7, module2) {\n return module2 = { exports: {} }, fn7(module2, module2.exports), module2.exports;\n}\nvar lib2 = createCommonjsModule3(function(module2, exports2) {\n Object.defineProperty(exports2, \"__esModule\", {\n value: true\n });\n var IS_MAC = () => typeof window != \"undefined\" && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n var MODIFIERS = {\n alt: \"altKey\",\n control: \"ctrlKey\",\n meta: \"metaKey\",\n shift: \"shiftKey\"\n };\n var ALIASES = () => ({\n add: \"+\",\n break: \"pause\",\n cmd: \"meta\",\n command: \"meta\",\n ctl: \"control\",\n ctrl: \"control\",\n del: \"delete\",\n down: \"arrowdown\",\n esc: \"escape\",\n ins: \"insert\",\n left: \"arrowleft\",\n mod: IS_MAC() ? \"meta\" : \"control\",\n opt: \"alt\",\n option: \"alt\",\n return: \"enter\",\n right: \"arrowright\",\n space: \" \",\n spacebar: \" \",\n up: \"arrowup\",\n win: \"meta\",\n windows: \"meta\"\n });\n var CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n \" \": 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n \";\": 186,\n \"=\": 187,\n \",\": 188,\n \"-\": 189,\n \".\": 190,\n \"/\": 191,\n \"`\": 192,\n \"[\": 219,\n \"\\\\\": 220,\n \"]\": 221,\n \"'\": 222\n };\n for (var f3 = 1; f3 < 20; f3++) {\n CODES[\"f\" + f3] = 111 + f3;\n }\n function isHotkey6(hotkey, options, event) {\n if (options && !(\"byKey\" in options)) {\n event = options;\n options = null;\n }\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n var array = hotkey.map(function(string) {\n return parseHotkey(string, options);\n });\n var check = function check2(e2) {\n return array.some(function(object) {\n return compareHotkey(object, e2);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n }\n function isCodeHotkey(hotkey, event) {\n return isHotkey6(hotkey, event);\n }\n function isKeyHotkey2(hotkey, event) {\n return isHotkey6(hotkey, { byKey: true }, event);\n }\n function parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n hotkey = hotkey.replace(\"++\", \"+add\");\n var values2 = hotkey.split(\"+\");\n var length = values2.length;\n for (var k4 in MODIFIERS) {\n ret[MODIFIERS[k4]] = false;\n }\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = void 0;\n try {\n for (var _iterator = values2[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n var optional = value.endsWith(\"?\") && value.length > 1;\n if (optional) {\n value = value.slice(0, -1);\n }\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return ret;\n }\n function compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n if (expected == null) {\n continue;\n }\n if (key === \"key\" && event.key != null) {\n actual = event.key.toLowerCase();\n } else if (key === \"which\") {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n if (actual == null && expected === false) {\n continue;\n }\n if (actual !== expected) {\n return false;\n }\n }\n return true;\n }\n function toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n }\n function toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES()[name] || name;\n return name;\n }\n exports2.default = isHotkey6;\n exports2.isHotkey = isHotkey6;\n exports2.isCodeHotkey = isCodeHotkey;\n exports2.isKeyHotkey = isKeyHotkey2;\n exports2.parseHotkey = parseHotkey;\n exports2.compareHotkey = compareHotkey;\n exports2.toKeyCode = toKeyCode;\n exports2.toKeyName = toKeyName;\n});\nvar isHotkey2 = unwrapExports2(lib2);\nlib2.isHotkey;\nlib2.isCodeHotkey;\nlib2.isKeyHotkey;\nlib2.parseHotkey;\nlib2.compareHotkey;\nlib2.toKeyCode;\nlib2.toKeyName;\nvar exitBreakAtEdges = (editor, {\n start: start3,\n end: end3\n}) => {\n let queryEdge = false;\n let isEdge = false;\n let isStart2 = false;\n if (start3 || end3) {\n queryEdge = true;\n if (start3 && isSelectionAtBlockStart(editor)) {\n isEdge = true;\n isStart2 = true;\n }\n if (end3 && isSelectionAtBlockEnd(editor)) {\n isEdge = true;\n }\n if (isEdge && isExpanded(editor.selection)) {\n editor.deleteFragment();\n }\n }\n return {\n queryEdge,\n isEdge,\n isStart: isStart2\n };\n};\nvar exitBreak = (editor, {\n level = 0,\n defaultType = getPluginType(editor, ELEMENT_DEFAULT),\n query = {},\n before\n}) => {\n if (!editor.selection)\n return;\n const {\n queryEdge,\n isEdge,\n isStart: isStart2\n } = exitBreakAtEdges(editor, query);\n if (isStart2)\n before = true;\n if (queryEdge && !isEdge)\n return;\n const selectionPath = Editor.path(editor, editor.selection);\n let insertPath;\n if (before) {\n insertPath = selectionPath.slice(0, level + 1);\n } else {\n insertPath = Path.next(selectionPath.slice(0, level + 1));\n }\n insertNodes(editor, {\n type: defaultType,\n children: [{\n text: \"\"\n }]\n }, {\n at: insertPath,\n select: !isStart2\n });\n return true;\n};\nvar onKeyDownExitBreak = (editor, {\n options: {\n rules = []\n }\n}) => (event) => {\n const entry = getBlockAbove(editor);\n if (!entry)\n return;\n rules.forEach((_a) => {\n var _b = _a, {\n hotkey\n } = _b, rule = __objRest(_b, [\n \"hotkey\"\n ]);\n if (isHotkey2(hotkey, event) && queryNode(entry, rule.query)) {\n if (exitBreak(editor, rule)) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n });\n};\nvar KEY_EXIT_BREAK = \"exitBreak\";\nvar createExitBreakPlugin = createPluginFactory({\n key: KEY_EXIT_BREAK,\n handlers: {\n onKeyDown: onKeyDownExitBreak\n },\n options: {\n rules: [{\n hotkey: \"mod+enter\"\n }, {\n hotkey: \"mod+shift+enter\",\n before: true\n }]\n }\n});\nvar onKeyDownSingleLine = () => (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n }\n};\nvar withSingleLine = (editor) => {\n const {\n normalizeNode\n } = editor;\n editor.insertBreak = () => null;\n editor.normalizeNode = (entry) => {\n if (editor.children.length > 1) {\n Transforms.removeNodes(editor, {\n at: [],\n mode: \"highest\",\n match: (node, path) => path[0] > 0\n });\n }\n normalizeNode(entry);\n };\n return editor;\n};\nvar KEY_SINGLE_LINE = \"singleLine\";\nvar createSingleLinePlugin = createPluginFactory({\n key: KEY_SINGLE_LINE,\n handlers: {\n onKeyDown: onKeyDownSingleLine\n },\n withOverrides: withSingleLine\n});\nvar onKeyDownSoftBreak = (editor, {\n options: {\n rules = []\n }\n}) => (event) => {\n const entry = getBlockAbove(editor);\n if (!entry)\n return;\n rules.forEach(({\n hotkey,\n query\n }) => {\n if (isHotkey2(hotkey, event) && queryNode(entry, query)) {\n event.preventDefault();\n event.stopPropagation();\n editor.insertText(\"\\n\");\n }\n });\n};\nvar KEY_SOFT_BREAK = \"softBreak\";\nvar createSoftBreakPlugin = createPluginFactory({\n key: KEY_SOFT_BREAK,\n handlers: {\n onKeyDown: onKeyDownSoftBreak\n },\n options: {\n rules: [{\n hotkey: \"shift+enter\"\n }]\n }\n});\n\n// node_modules/@udecode/plate-combobox/dist/index.es.js\nvar import_react7 = require(\"react\");\n\n// node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\nfunction _objectWithoutPropertiesLoose3(source, excluded) {\n if (source == null)\n return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i3;\n for (i3 = 0; i3 < sourceKeys.length; i3++) {\n key = sourceKeys[i3];\n if (excluded.indexOf(key) >= 0)\n continue;\n target[key] = source[key];\n }\n return target;\n}\n\n// node_modules/@babel/runtime/helpers/esm/extends.js\nfunction _extends2() {\n _extends2 = Object.assign || function(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends2.apply(this, arguments);\n}\n\n// node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\nfunction _assertThisInitialized(self2) {\n if (self2 === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self2;\n}\n\n// node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js\nfunction _setPrototypeOf(o3, p4) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o4, p5) {\n o4.__proto__ = p5;\n return o4;\n };\n return _setPrototypeOf(o3, p4);\n}\n\n// node_modules/@babel/runtime/helpers/esm/inheritsLoose.js\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\n\n// node_modules/downshift/dist/downshift.esm.js\nvar import_prop_types = __toESM(require_prop_types());\nvar import_react6 = require(\"react\");\nvar import_react_is = __toESM(require_react_is2());\n\n// node_modules/downshift/node_modules/tslib/modules/index.js\nvar import_tslib = __toESM(require_tslib(), 1);\nvar {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __exportStar,\n __createBinding,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn\n} = import_tslib.default;\n\n// node_modules/downshift/dist/downshift.esm.js\nvar idCounter = 0;\nfunction cbToCb(cb) {\n return typeof cb === \"function\" ? cb : noop;\n}\nfunction noop() {\n}\nfunction scrollIntoView2(node, menuNode) {\n if (!node) {\n return;\n }\n var actions = index_module_default(node, {\n boundary: menuNode,\n block: \"nearest\",\n scrollMode: \"if-needed\"\n });\n actions.forEach(function(_ref) {\n var el = _ref.el, top3 = _ref.top, left3 = _ref.left;\n el.scrollTop = top3;\n el.scrollLeft = left3;\n });\n}\nfunction isOrContainsNode(parent2, child, environment) {\n var result = parent2 === child || child instanceof environment.Node && parent2.contains && parent2.contains(child);\n return result;\n}\nfunction debounce2(fn7, time) {\n var timeoutId;\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n function wrapper() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n cancel();\n timeoutId = setTimeout(function() {\n timeoutId = null;\n fn7.apply(void 0, args);\n }, time);\n }\n wrapper.cancel = cancel;\n return wrapper;\n}\nfunction callAllEventHandlers() {\n for (var _len2 = arguments.length, fns = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n return function(event) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return fns.some(function(fn7) {\n if (fn7) {\n fn7.apply(void 0, [event].concat(args));\n }\n return event.preventDownshiftDefault || event.hasOwnProperty(\"nativeEvent\") && event.nativeEvent.preventDownshiftDefault;\n });\n };\n}\nfunction handleRefs() {\n for (var _len4 = arguments.length, refs = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n refs[_key4] = arguments[_key4];\n }\n return function(node) {\n refs.forEach(function(ref) {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n });\n };\n}\nfunction generateId() {\n return String(idCounter++);\n}\nfunction getA11yStatusMessage$1(_ref2) {\n var isOpen = _ref2.isOpen, resultCount = _ref2.resultCount, previousResultCount = _ref2.previousResultCount;\n if (!isOpen) {\n return \"\";\n }\n if (!resultCount) {\n return \"No results are available.\";\n }\n if (resultCount !== previousResultCount) {\n return resultCount + \" result\" + (resultCount === 1 ? \" is\" : \"s are\") + \" available, use up and down arrow keys to navigate. Press Enter key to select.\";\n }\n return \"\";\n}\nfunction unwrapArray(arg, defaultValue) {\n arg = Array.isArray(arg) ? arg[0] : arg;\n if (!arg && defaultValue) {\n return defaultValue;\n } else {\n return arg;\n }\n}\nfunction isDOMElement2(element4) {\n return typeof element4.type === \"string\";\n}\nfunction getElementProps(element4) {\n return element4.props;\n}\nfunction requiredProp(fnName, propName) {\n console.error('The property \"' + propName + '\" is required in \"' + fnName + '\"');\n}\nvar stateKeys = [\"highlightedIndex\", \"inputValue\", \"isOpen\", \"selectedItem\", \"type\"];\nfunction pickState(state) {\n if (state === void 0) {\n state = {};\n }\n var result = {};\n stateKeys.forEach(function(k4) {\n if (state.hasOwnProperty(k4)) {\n result[k4] = state[k4];\n }\n });\n return result;\n}\nfunction getState(state, props) {\n return Object.keys(state).reduce(function(prevState, key) {\n prevState[key] = isControlledProp(props, key) ? props[key] : state[key];\n return prevState;\n }, {});\n}\nfunction isControlledProp(props, key) {\n return props[key] !== void 0;\n}\nfunction normalizeArrowKey(event) {\n var key = event.key, keyCode = event.keyCode;\n if (keyCode >= 37 && keyCode <= 40 && key.indexOf(\"Arrow\") !== 0) {\n return \"Arrow\" + key;\n }\n return key;\n}\nfunction isPlainObject3(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction getNextWrappingIndex(moveAmount, baseIndex, itemCount, getItemNodeFromIndex, circular) {\n if (circular === void 0) {\n circular = true;\n }\n if (itemCount === 0) {\n return -1;\n }\n var itemsLastIndex = itemCount - 1;\n if (typeof baseIndex !== \"number\" || baseIndex < 0 || baseIndex >= itemCount) {\n baseIndex = moveAmount > 0 ? -1 : itemsLastIndex + 1;\n }\n var newIndex = baseIndex + moveAmount;\n if (newIndex < 0) {\n newIndex = circular ? itemsLastIndex : 0;\n } else if (newIndex > itemsLastIndex) {\n newIndex = circular ? 0 : itemsLastIndex;\n }\n var nonDisabledNewIndex = getNextNonDisabledIndex(moveAmount, newIndex, itemCount, getItemNodeFromIndex, circular);\n if (nonDisabledNewIndex === -1) {\n return baseIndex >= itemCount ? -1 : baseIndex;\n }\n return nonDisabledNewIndex;\n}\nfunction getNextNonDisabledIndex(moveAmount, baseIndex, itemCount, getItemNodeFromIndex, circular) {\n var currentElementNode = getItemNodeFromIndex(baseIndex);\n if (!currentElementNode || !currentElementNode.hasAttribute(\"disabled\")) {\n return baseIndex;\n }\n if (moveAmount > 0) {\n for (var index7 = baseIndex + 1; index7 < itemCount; index7++) {\n if (!getItemNodeFromIndex(index7).hasAttribute(\"disabled\")) {\n return index7;\n }\n }\n } else {\n for (var _index = baseIndex - 1; _index >= 0; _index--) {\n if (!getItemNodeFromIndex(_index).hasAttribute(\"disabled\")) {\n return _index;\n }\n }\n }\n if (circular) {\n return moveAmount > 0 ? getNextNonDisabledIndex(1, 0, itemCount, getItemNodeFromIndex, false) : getNextNonDisabledIndex(-1, itemCount - 1, itemCount, getItemNodeFromIndex, false);\n }\n return -1;\n}\nfunction targetWithinDownshift(target, downshiftElements, environment, checkActiveElement) {\n if (checkActiveElement === void 0) {\n checkActiveElement = true;\n }\n return downshiftElements.some(function(contextNode) {\n return contextNode && (isOrContainsNode(contextNode, target, environment) || checkActiveElement && isOrContainsNode(contextNode, environment.document.activeElement, environment));\n });\n}\nvar validateControlledUnchanged = noop;\nif (true) {\n validateControlledUnchanged = function validateControlledUnchanged2(state, prevProps, nextProps) {\n var warningDescription = \"This prop should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled Downshift element for the lifetime of the component. More info: https://github.com/downshift-js/downshift#control-props\";\n Object.keys(state).forEach(function(propKey) {\n if (prevProps[propKey] !== void 0 && nextProps[propKey] === void 0) {\n console.error('downshift: A component has changed the controlled prop \"' + propKey + '\" to be uncontrolled. ' + warningDescription);\n } else if (prevProps[propKey] === void 0 && nextProps[propKey] !== void 0) {\n console.error('downshift: A component has changed the uncontrolled prop \"' + propKey + '\" to be controlled. ' + warningDescription);\n }\n });\n };\n}\nvar cleanupStatus = debounce2(function(documentProp) {\n getStatusDiv(documentProp).textContent = \"\";\n}, 500);\nfunction setStatus(status, documentProp) {\n var div4 = getStatusDiv(documentProp);\n if (!status) {\n return;\n }\n div4.textContent = status;\n cleanupStatus(documentProp);\n}\nfunction getStatusDiv(documentProp) {\n if (documentProp === void 0) {\n documentProp = document;\n }\n var statusDiv = documentProp.getElementById(\"a11y-status-message\");\n if (statusDiv) {\n return statusDiv;\n }\n statusDiv = documentProp.createElement(\"div\");\n statusDiv.setAttribute(\"id\", \"a11y-status-message\");\n statusDiv.setAttribute(\"role\", \"status\");\n statusDiv.setAttribute(\"aria-live\", \"polite\");\n statusDiv.setAttribute(\"aria-relevant\", \"additions text\");\n Object.assign(statusDiv.style, {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\"\n });\n documentProp.body.appendChild(statusDiv);\n return statusDiv;\n}\nvar unknown = true ? \"__autocomplete_unknown__\" : 0;\nvar mouseUp = true ? \"__autocomplete_mouseup__\" : 1;\nvar itemMouseEnter = true ? \"__autocomplete_item_mouseenter__\" : 2;\nvar keyDownArrowUp = true ? \"__autocomplete_keydown_arrow_up__\" : 3;\nvar keyDownArrowDown = true ? \"__autocomplete_keydown_arrow_down__\" : 4;\nvar keyDownEscape = true ? \"__autocomplete_keydown_escape__\" : 5;\nvar keyDownEnter = true ? \"__autocomplete_keydown_enter__\" : 6;\nvar keyDownHome = true ? \"__autocomplete_keydown_home__\" : 7;\nvar keyDownEnd = true ? \"__autocomplete_keydown_end__\" : 8;\nvar clickItem = true ? \"__autocomplete_click_item__\" : 9;\nvar blurInput = true ? \"__autocomplete_blur_input__\" : 10;\nvar changeInput = true ? \"__autocomplete_change_input__\" : 11;\nvar keyDownSpaceButton = true ? \"__autocomplete_keydown_space_button__\" : 12;\nvar clickButton = true ? \"__autocomplete_click_button__\" : 13;\nvar blurButton = true ? \"__autocomplete_blur_button__\" : 14;\nvar controlledPropUpdatedSelectedItem = true ? \"__autocomplete_controlled_prop_updated_selected_item__\" : 15;\nvar touchEnd = true ? \"__autocomplete_touchend__\" : 16;\nvar stateChangeTypes$3 = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n unknown,\n mouseUp,\n itemMouseEnter,\n keyDownArrowUp,\n keyDownArrowDown,\n keyDownEscape,\n keyDownEnter,\n keyDownHome,\n keyDownEnd,\n clickItem,\n blurInput,\n changeInput,\n keyDownSpaceButton,\n clickButton,\n blurButton,\n controlledPropUpdatedSelectedItem,\n touchEnd\n});\nvar _excluded$42 = [\"refKey\", \"ref\"];\nvar _excluded2$32 = [\"onClick\", \"onPress\", \"onKeyDown\", \"onKeyUp\", \"onBlur\"];\nvar _excluded3$2 = [\"onKeyDown\", \"onBlur\", \"onChange\", \"onInput\", \"onChangeText\"];\nvar _excluded4$1 = [\"refKey\", \"ref\"];\nvar _excluded5$1 = [\"onMouseMove\", \"onMouseDown\", \"onClick\", \"onPress\", \"index\", \"item\"];\nvar Downshift = /* @__PURE__ */ function() {\n var Downshift2 = /* @__PURE__ */ function(_Component) {\n _inheritsLoose(Downshift3, _Component);\n function Downshift3(_props) {\n var _this;\n _this = _Component.call(this, _props) || this;\n _this.id = _this.props.id || \"downshift-\" + generateId();\n _this.menuId = _this.props.menuId || _this.id + \"-menu\";\n _this.labelId = _this.props.labelId || _this.id + \"-label\";\n _this.inputId = _this.props.inputId || _this.id + \"-input\";\n _this.getItemId = _this.props.getItemId || function(index7) {\n return _this.id + \"-item-\" + index7;\n };\n _this.input = null;\n _this.items = [];\n _this.itemCount = null;\n _this.previousResultCount = 0;\n _this.timeoutIds = [];\n _this.internalSetTimeout = function(fn7, time) {\n var id = setTimeout(function() {\n _this.timeoutIds = _this.timeoutIds.filter(function(i3) {\n return i3 !== id;\n });\n fn7();\n }, time);\n _this.timeoutIds.push(id);\n };\n _this.setItemCount = function(count) {\n _this.itemCount = count;\n };\n _this.unsetItemCount = function() {\n _this.itemCount = null;\n };\n _this.setHighlightedIndex = function(highlightedIndex, otherStateToSet) {\n if (highlightedIndex === void 0) {\n highlightedIndex = _this.props.defaultHighlightedIndex;\n }\n if (otherStateToSet === void 0) {\n otherStateToSet = {};\n }\n otherStateToSet = pickState(otherStateToSet);\n _this.internalSetState(_extends2({\n highlightedIndex\n }, otherStateToSet));\n };\n _this.clearSelection = function(cb) {\n _this.internalSetState({\n selectedItem: null,\n inputValue: \"\",\n highlightedIndex: _this.props.defaultHighlightedIndex,\n isOpen: _this.props.defaultIsOpen\n }, cb);\n };\n _this.selectItem = function(item, otherStateToSet, cb) {\n otherStateToSet = pickState(otherStateToSet);\n _this.internalSetState(_extends2({\n isOpen: _this.props.defaultIsOpen,\n highlightedIndex: _this.props.defaultHighlightedIndex,\n selectedItem: item,\n inputValue: _this.props.itemToString(item)\n }, otherStateToSet), cb);\n };\n _this.selectItemAtIndex = function(itemIndex, otherStateToSet, cb) {\n var item = _this.items[itemIndex];\n if (item == null) {\n return;\n }\n _this.selectItem(item, otherStateToSet, cb);\n };\n _this.selectHighlightedItem = function(otherStateToSet, cb) {\n return _this.selectItemAtIndex(_this.getState().highlightedIndex, otherStateToSet, cb);\n };\n _this.internalSetState = function(stateToSet, cb) {\n var isItemSelected, onChangeArg;\n var onStateChangeArg = {};\n var isStateToSetFunction = typeof stateToSet === \"function\";\n if (!isStateToSetFunction && stateToSet.hasOwnProperty(\"inputValue\")) {\n _this.props.onInputValueChange(stateToSet.inputValue, _extends2({}, _this.getStateAndHelpers(), stateToSet));\n }\n return _this.setState(function(state) {\n state = _this.getState(state);\n var newStateToSet = isStateToSetFunction ? stateToSet(state) : stateToSet;\n newStateToSet = _this.props.stateReducer(state, newStateToSet);\n isItemSelected = newStateToSet.hasOwnProperty(\"selectedItem\");\n var nextState = {};\n var nextFullState = {};\n if (isItemSelected && newStateToSet.selectedItem !== state.selectedItem) {\n onChangeArg = newStateToSet.selectedItem;\n }\n newStateToSet.type = newStateToSet.type || unknown;\n Object.keys(newStateToSet).forEach(function(key) {\n if (state[key] !== newStateToSet[key]) {\n onStateChangeArg[key] = newStateToSet[key];\n }\n if (key === \"type\") {\n return;\n }\n nextFullState[key] = newStateToSet[key];\n if (!isControlledProp(_this.props, key)) {\n nextState[key] = newStateToSet[key];\n }\n });\n if (isStateToSetFunction && newStateToSet.hasOwnProperty(\"inputValue\")) {\n _this.props.onInputValueChange(newStateToSet.inputValue, _extends2({}, _this.getStateAndHelpers(), newStateToSet));\n }\n return nextState;\n }, function() {\n cbToCb(cb)();\n var hasMoreStateThanType = Object.keys(onStateChangeArg).length > 1;\n if (hasMoreStateThanType) {\n _this.props.onStateChange(onStateChangeArg, _this.getStateAndHelpers());\n }\n if (isItemSelected) {\n _this.props.onSelect(stateToSet.selectedItem, _this.getStateAndHelpers());\n }\n if (onChangeArg !== void 0) {\n _this.props.onChange(onChangeArg, _this.getStateAndHelpers());\n }\n _this.props.onUserAction(onStateChangeArg, _this.getStateAndHelpers());\n });\n };\n _this.rootRef = function(node) {\n return _this._rootNode = node;\n };\n _this.getRootProps = function(_temp, _temp2) {\n var _extends22;\n var _ref = _temp === void 0 ? {} : _temp, _ref$refKey = _ref.refKey, refKey = _ref$refKey === void 0 ? \"ref\" : _ref$refKey, ref = _ref.ref, rest = _objectWithoutPropertiesLoose3(_ref, _excluded$42);\n var _ref2 = _temp2 === void 0 ? {} : _temp2, _ref2$suppressRefErro = _ref2.suppressRefError, suppressRefError = _ref2$suppressRefErro === void 0 ? false : _ref2$suppressRefErro;\n _this.getRootProps.called = true;\n _this.getRootProps.refKey = refKey;\n _this.getRootProps.suppressRefError = suppressRefError;\n var _this$getState = _this.getState(), isOpen = _this$getState.isOpen;\n return _extends2((_extends22 = {}, _extends22[refKey] = handleRefs(ref, _this.rootRef), _extends22.role = \"combobox\", _extends22[\"aria-expanded\"] = isOpen, _extends22[\"aria-haspopup\"] = \"listbox\", _extends22[\"aria-owns\"] = isOpen ? _this.menuId : null, _extends22[\"aria-labelledby\"] = _this.labelId, _extends22), rest);\n };\n _this.keyDownHandlers = {\n ArrowDown: function ArrowDown(event) {\n var _this2 = this;\n event.preventDefault();\n if (this.getState().isOpen) {\n var amount = event.shiftKey ? 5 : 1;\n this.moveHighlightedIndex(amount, {\n type: keyDownArrowDown\n });\n } else {\n this.internalSetState({\n isOpen: true,\n type: keyDownArrowDown\n }, function() {\n var itemCount = _this2.getItemCount();\n if (itemCount > 0) {\n var _this2$getState = _this2.getState(), highlightedIndex = _this2$getState.highlightedIndex;\n var nextHighlightedIndex = getNextWrappingIndex(1, highlightedIndex, itemCount, function(index7) {\n return _this2.getItemNodeFromIndex(index7);\n });\n _this2.setHighlightedIndex(nextHighlightedIndex, {\n type: keyDownArrowDown\n });\n }\n });\n }\n },\n ArrowUp: function ArrowUp(event) {\n var _this3 = this;\n event.preventDefault();\n if (this.getState().isOpen) {\n var amount = event.shiftKey ? -5 : -1;\n this.moveHighlightedIndex(amount, {\n type: keyDownArrowUp\n });\n } else {\n this.internalSetState({\n isOpen: true,\n type: keyDownArrowUp\n }, function() {\n var itemCount = _this3.getItemCount();\n if (itemCount > 0) {\n var _this3$getState = _this3.getState(), highlightedIndex = _this3$getState.highlightedIndex;\n var nextHighlightedIndex = getNextWrappingIndex(-1, highlightedIndex, itemCount, function(index7) {\n return _this3.getItemNodeFromIndex(index7);\n });\n _this3.setHighlightedIndex(nextHighlightedIndex, {\n type: keyDownArrowUp\n });\n }\n });\n }\n },\n Enter: function Enter(event) {\n if (event.which === 229) {\n return;\n }\n var _this$getState2 = this.getState(), isOpen = _this$getState2.isOpen, highlightedIndex = _this$getState2.highlightedIndex;\n if (isOpen && highlightedIndex != null) {\n event.preventDefault();\n var item = this.items[highlightedIndex];\n var itemNode = this.getItemNodeFromIndex(highlightedIndex);\n if (item == null || itemNode && itemNode.hasAttribute(\"disabled\")) {\n return;\n }\n this.selectHighlightedItem({\n type: keyDownEnter\n });\n }\n },\n Escape: function Escape(event) {\n event.preventDefault();\n this.reset(_extends2({\n type: keyDownEscape\n }, !this.state.isOpen && {\n selectedItem: null,\n inputValue: \"\"\n }));\n }\n };\n _this.buttonKeyDownHandlers = _extends2({}, _this.keyDownHandlers, {\n \" \": function _4(event) {\n event.preventDefault();\n this.toggleMenu({\n type: keyDownSpaceButton\n });\n }\n });\n _this.inputKeyDownHandlers = _extends2({}, _this.keyDownHandlers, {\n Home: function Home(event) {\n var _this4 = this;\n var _this$getState3 = this.getState(), isOpen = _this$getState3.isOpen;\n if (!isOpen) {\n return;\n }\n event.preventDefault();\n var itemCount = this.getItemCount();\n if (itemCount <= 0 || !isOpen) {\n return;\n }\n var newHighlightedIndex = getNextNonDisabledIndex(1, 0, itemCount, function(index7) {\n return _this4.getItemNodeFromIndex(index7);\n }, false);\n this.setHighlightedIndex(newHighlightedIndex, {\n type: keyDownHome\n });\n },\n End: function End(event) {\n var _this5 = this;\n var _this$getState4 = this.getState(), isOpen = _this$getState4.isOpen;\n if (!isOpen) {\n return;\n }\n event.preventDefault();\n var itemCount = this.getItemCount();\n if (itemCount <= 0 || !isOpen) {\n return;\n }\n var newHighlightedIndex = getNextNonDisabledIndex(-1, itemCount - 1, itemCount, function(index7) {\n return _this5.getItemNodeFromIndex(index7);\n }, false);\n this.setHighlightedIndex(newHighlightedIndex, {\n type: keyDownEnd\n });\n }\n });\n _this.getToggleButtonProps = function(_temp3) {\n var _ref3 = _temp3 === void 0 ? {} : _temp3, onClick = _ref3.onClick;\n _ref3.onPress;\n var onKeyDown = _ref3.onKeyDown, onKeyUp = _ref3.onKeyUp, onBlur = _ref3.onBlur, rest = _objectWithoutPropertiesLoose3(_ref3, _excluded2$32);\n var _this$getState5 = _this.getState(), isOpen = _this$getState5.isOpen;\n var enabledEventHandlers = {\n onClick: callAllEventHandlers(onClick, _this.buttonHandleClick),\n onKeyDown: callAllEventHandlers(onKeyDown, _this.buttonHandleKeyDown),\n onKeyUp: callAllEventHandlers(onKeyUp, _this.buttonHandleKeyUp),\n onBlur: callAllEventHandlers(onBlur, _this.buttonHandleBlur)\n };\n var eventHandlers = rest.disabled ? {} : enabledEventHandlers;\n return _extends2({\n type: \"button\",\n role: \"button\",\n \"aria-label\": isOpen ? \"close menu\" : \"open menu\",\n \"aria-haspopup\": true,\n \"data-toggle\": true\n }, eventHandlers, rest);\n };\n _this.buttonHandleKeyUp = function(event) {\n event.preventDefault();\n };\n _this.buttonHandleKeyDown = function(event) {\n var key = normalizeArrowKey(event);\n if (_this.buttonKeyDownHandlers[key]) {\n _this.buttonKeyDownHandlers[key].call(_assertThisInitialized(_this), event);\n }\n };\n _this.buttonHandleClick = function(event) {\n event.preventDefault();\n if (_this.props.environment.document.activeElement === _this.props.environment.document.body) {\n event.target.focus();\n }\n if (false) {\n _this.toggleMenu({\n type: clickButton\n });\n } else {\n _this.internalSetTimeout(function() {\n return _this.toggleMenu({\n type: clickButton\n });\n });\n }\n };\n _this.buttonHandleBlur = function(event) {\n var blurTarget = event.target;\n _this.internalSetTimeout(function() {\n if (!_this.isMouseDown && (_this.props.environment.document.activeElement == null || _this.props.environment.document.activeElement.id !== _this.inputId) && _this.props.environment.document.activeElement !== blurTarget) {\n _this.reset({\n type: blurButton\n });\n }\n });\n };\n _this.getLabelProps = function(props) {\n return _extends2({\n htmlFor: _this.inputId,\n id: _this.labelId\n }, props);\n };\n _this.getInputProps = function(_temp4) {\n var _ref4 = _temp4 === void 0 ? {} : _temp4, onKeyDown = _ref4.onKeyDown, onBlur = _ref4.onBlur, onChange = _ref4.onChange, onInput = _ref4.onInput;\n _ref4.onChangeText;\n var rest = _objectWithoutPropertiesLoose3(_ref4, _excluded3$2);\n var onChangeKey;\n var eventHandlers = {};\n {\n onChangeKey = \"onChange\";\n }\n var _this$getState6 = _this.getState(), inputValue = _this$getState6.inputValue, isOpen = _this$getState6.isOpen, highlightedIndex = _this$getState6.highlightedIndex;\n if (!rest.disabled) {\n var _eventHandlers;\n eventHandlers = (_eventHandlers = {}, _eventHandlers[onChangeKey] = callAllEventHandlers(onChange, onInput, _this.inputHandleChange), _eventHandlers.onKeyDown = callAllEventHandlers(onKeyDown, _this.inputHandleKeyDown), _eventHandlers.onBlur = callAllEventHandlers(onBlur, _this.inputHandleBlur), _eventHandlers);\n }\n return _extends2({\n \"aria-autocomplete\": \"list\",\n \"aria-activedescendant\": isOpen && typeof highlightedIndex === \"number\" && highlightedIndex >= 0 ? _this.getItemId(highlightedIndex) : null,\n \"aria-controls\": isOpen ? _this.menuId : null,\n \"aria-labelledby\": _this.labelId,\n autoComplete: \"off\",\n value: inputValue,\n id: _this.inputId\n }, eventHandlers, rest);\n };\n _this.inputHandleKeyDown = function(event) {\n var key = normalizeArrowKey(event);\n if (key && _this.inputKeyDownHandlers[key]) {\n _this.inputKeyDownHandlers[key].call(_assertThisInitialized(_this), event);\n }\n };\n _this.inputHandleChange = function(event) {\n _this.internalSetState({\n type: changeInput,\n isOpen: true,\n inputValue: event.target.value,\n highlightedIndex: _this.props.defaultHighlightedIndex\n });\n };\n _this.inputHandleBlur = function() {\n _this.internalSetTimeout(function() {\n var downshiftButtonIsActive = _this.props.environment.document && !!_this.props.environment.document.activeElement && !!_this.props.environment.document.activeElement.dataset && _this.props.environment.document.activeElement.dataset.toggle && _this._rootNode && _this._rootNode.contains(_this.props.environment.document.activeElement);\n if (!_this.isMouseDown && !downshiftButtonIsActive) {\n _this.reset({\n type: blurInput\n });\n }\n });\n };\n _this.menuRef = function(node) {\n _this._menuNode = node;\n };\n _this.getMenuProps = function(_temp5, _temp6) {\n var _extends32;\n var _ref5 = _temp5 === void 0 ? {} : _temp5, _ref5$refKey = _ref5.refKey, refKey = _ref5$refKey === void 0 ? \"ref\" : _ref5$refKey, ref = _ref5.ref, props = _objectWithoutPropertiesLoose3(_ref5, _excluded4$1);\n var _ref6 = _temp6 === void 0 ? {} : _temp6, _ref6$suppressRefErro = _ref6.suppressRefError, suppressRefError = _ref6$suppressRefErro === void 0 ? false : _ref6$suppressRefErro;\n _this.getMenuProps.called = true;\n _this.getMenuProps.refKey = refKey;\n _this.getMenuProps.suppressRefError = suppressRefError;\n return _extends2((_extends32 = {}, _extends32[refKey] = handleRefs(ref, _this.menuRef), _extends32.role = \"listbox\", _extends32[\"aria-labelledby\"] = props && props[\"aria-label\"] ? null : _this.labelId, _extends32.id = _this.menuId, _extends32), props);\n };\n _this.getItemProps = function(_temp7) {\n var _enabledEventHandlers;\n var _ref7 = _temp7 === void 0 ? {} : _temp7, onMouseMove = _ref7.onMouseMove, onMouseDown = _ref7.onMouseDown, onClick = _ref7.onClick;\n _ref7.onPress;\n var index7 = _ref7.index, _ref7$item = _ref7.item, item = _ref7$item === void 0 ? false ? void 0 : requiredProp(\"getItemProps\", \"item\") : _ref7$item, rest = _objectWithoutPropertiesLoose3(_ref7, _excluded5$1);\n if (index7 === void 0) {\n _this.items.push(item);\n index7 = _this.items.indexOf(item);\n } else {\n _this.items[index7] = item;\n }\n var onSelectKey = \"onClick\";\n var customClickHandler = onClick;\n var enabledEventHandlers = (_enabledEventHandlers = {\n onMouseMove: callAllEventHandlers(onMouseMove, function() {\n if (index7 === _this.getState().highlightedIndex) {\n return;\n }\n _this.setHighlightedIndex(index7, {\n type: itemMouseEnter\n });\n _this.avoidScrolling = true;\n _this.internalSetTimeout(function() {\n return _this.avoidScrolling = false;\n }, 250);\n }),\n onMouseDown: callAllEventHandlers(onMouseDown, function(event) {\n event.preventDefault();\n })\n }, _enabledEventHandlers[onSelectKey] = callAllEventHandlers(customClickHandler, function() {\n _this.selectItemAtIndex(index7, {\n type: clickItem\n });\n }), _enabledEventHandlers);\n var eventHandlers = rest.disabled ? {\n onMouseDown: enabledEventHandlers.onMouseDown\n } : enabledEventHandlers;\n return _extends2({\n id: _this.getItemId(index7),\n role: \"option\",\n \"aria-selected\": _this.getState().highlightedIndex === index7\n }, eventHandlers, rest);\n };\n _this.clearItems = function() {\n _this.items = [];\n };\n _this.reset = function(otherStateToSet, cb) {\n if (otherStateToSet === void 0) {\n otherStateToSet = {};\n }\n otherStateToSet = pickState(otherStateToSet);\n _this.internalSetState(function(_ref8) {\n var selectedItem = _ref8.selectedItem;\n return _extends2({\n isOpen: _this.props.defaultIsOpen,\n highlightedIndex: _this.props.defaultHighlightedIndex,\n inputValue: _this.props.itemToString(selectedItem)\n }, otherStateToSet);\n }, cb);\n };\n _this.toggleMenu = function(otherStateToSet, cb) {\n if (otherStateToSet === void 0) {\n otherStateToSet = {};\n }\n otherStateToSet = pickState(otherStateToSet);\n _this.internalSetState(function(_ref9) {\n var isOpen = _ref9.isOpen;\n return _extends2({\n isOpen: !isOpen\n }, isOpen && {\n highlightedIndex: _this.props.defaultHighlightedIndex\n }, otherStateToSet);\n }, function() {\n var _this$getState7 = _this.getState(), isOpen = _this$getState7.isOpen, highlightedIndex = _this$getState7.highlightedIndex;\n if (isOpen) {\n if (_this.getItemCount() > 0 && typeof highlightedIndex === \"number\") {\n _this.setHighlightedIndex(highlightedIndex, otherStateToSet);\n }\n }\n cbToCb(cb)();\n });\n };\n _this.openMenu = function(cb) {\n _this.internalSetState({\n isOpen: true\n }, cb);\n };\n _this.closeMenu = function(cb) {\n _this.internalSetState({\n isOpen: false\n }, cb);\n };\n _this.updateStatus = debounce2(function() {\n var state = _this.getState();\n var item = _this.items[state.highlightedIndex];\n var resultCount = _this.getItemCount();\n var status = _this.props.getA11yStatusMessage(_extends2({\n itemToString: _this.props.itemToString,\n previousResultCount: _this.previousResultCount,\n resultCount,\n highlightedItem: item\n }, state));\n _this.previousResultCount = resultCount;\n setStatus(status, _this.props.environment.document);\n }, 200);\n var _this$props = _this.props, defaultHighlightedIndex = _this$props.defaultHighlightedIndex, _this$props$initialHi = _this$props.initialHighlightedIndex, _highlightedIndex = _this$props$initialHi === void 0 ? defaultHighlightedIndex : _this$props$initialHi, defaultIsOpen = _this$props.defaultIsOpen, _this$props$initialIs = _this$props.initialIsOpen, _isOpen = _this$props$initialIs === void 0 ? defaultIsOpen : _this$props$initialIs, _this$props$initialIn = _this$props.initialInputValue, _inputValue = _this$props$initialIn === void 0 ? \"\" : _this$props$initialIn, _this$props$initialSe = _this$props.initialSelectedItem, _selectedItem = _this$props$initialSe === void 0 ? null : _this$props$initialSe;\n var _state = _this.getState({\n highlightedIndex: _highlightedIndex,\n isOpen: _isOpen,\n inputValue: _inputValue,\n selectedItem: _selectedItem\n });\n if (_state.selectedItem != null && _this.props.initialInputValue === void 0) {\n _state.inputValue = _this.props.itemToString(_state.selectedItem);\n }\n _this.state = _state;\n return _this;\n }\n var _proto = Downshift3.prototype;\n _proto.internalClearTimeouts = function internalClearTimeouts() {\n this.timeoutIds.forEach(function(id) {\n clearTimeout(id);\n });\n this.timeoutIds = [];\n };\n _proto.getState = function getState$1(stateToMerge) {\n if (stateToMerge === void 0) {\n stateToMerge = this.state;\n }\n return getState(stateToMerge, this.props);\n };\n _proto.getItemCount = function getItemCount() {\n var itemCount = this.items.length;\n if (this.itemCount != null) {\n itemCount = this.itemCount;\n } else if (this.props.itemCount !== void 0) {\n itemCount = this.props.itemCount;\n }\n return itemCount;\n };\n _proto.getItemNodeFromIndex = function getItemNodeFromIndex(index7) {\n return this.props.environment.document.getElementById(this.getItemId(index7));\n };\n _proto.scrollHighlightedItemIntoView = function scrollHighlightedItemIntoView() {\n {\n var node = this.getItemNodeFromIndex(this.getState().highlightedIndex);\n this.props.scrollIntoView(node, this._menuNode);\n }\n };\n _proto.moveHighlightedIndex = function moveHighlightedIndex(amount, otherStateToSet) {\n var _this6 = this;\n var itemCount = this.getItemCount();\n var _this$getState8 = this.getState(), highlightedIndex = _this$getState8.highlightedIndex;\n if (itemCount > 0) {\n var nextHighlightedIndex = getNextWrappingIndex(amount, highlightedIndex, itemCount, function(index7) {\n return _this6.getItemNodeFromIndex(index7);\n });\n this.setHighlightedIndex(nextHighlightedIndex, otherStateToSet);\n }\n };\n _proto.getStateAndHelpers = function getStateAndHelpers() {\n var _this$getState9 = this.getState(), highlightedIndex = _this$getState9.highlightedIndex, inputValue = _this$getState9.inputValue, selectedItem = _this$getState9.selectedItem, isOpen = _this$getState9.isOpen;\n var itemToString2 = this.props.itemToString;\n var id = this.id;\n var getRootProps2 = this.getRootProps, getToggleButtonProps = this.getToggleButtonProps, getLabelProps = this.getLabelProps, getMenuProps = this.getMenuProps, getInputProps = this.getInputProps, getItemProps = this.getItemProps, openMenu = this.openMenu, closeMenu = this.closeMenu, toggleMenu = this.toggleMenu, selectItem = this.selectItem, selectItemAtIndex = this.selectItemAtIndex, selectHighlightedItem = this.selectHighlightedItem, setHighlightedIndex = this.setHighlightedIndex, clearSelection = this.clearSelection, clearItems = this.clearItems, reset = this.reset, setItemCount = this.setItemCount, unsetItemCount = this.unsetItemCount, setState = this.internalSetState;\n return {\n getRootProps: getRootProps2,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getInputProps,\n getItemProps,\n reset,\n openMenu,\n closeMenu,\n toggleMenu,\n selectItem,\n selectItemAtIndex,\n selectHighlightedItem,\n setHighlightedIndex,\n clearSelection,\n clearItems,\n setItemCount,\n unsetItemCount,\n setState,\n itemToString: itemToString2,\n id,\n highlightedIndex,\n inputValue,\n isOpen,\n selectedItem\n };\n };\n _proto.componentDidMount = function componentDidMount() {\n var _this7 = this;\n if (this.getMenuProps.called && !this.getMenuProps.suppressRefError) {\n validateGetMenuPropsCalledCorrectly(this._menuNode, this.getMenuProps);\n }\n {\n var onMouseDown = function onMouseDown2() {\n _this7.isMouseDown = true;\n };\n var onMouseUp = function onMouseUp2(event) {\n _this7.isMouseDown = false;\n var contextWithinDownshift = targetWithinDownshift(event.target, [_this7._rootNode, _this7._menuNode], _this7.props.environment);\n if (!contextWithinDownshift && _this7.getState().isOpen) {\n _this7.reset({\n type: mouseUp\n }, function() {\n return _this7.props.onOuterClick(_this7.getStateAndHelpers());\n });\n }\n };\n var onTouchStart = function onTouchStart2() {\n _this7.isTouchMove = false;\n };\n var onTouchMove = function onTouchMove2() {\n _this7.isTouchMove = true;\n };\n var onTouchEnd = function onTouchEnd2(event) {\n var contextWithinDownshift = targetWithinDownshift(event.target, [_this7._rootNode, _this7._menuNode], _this7.props.environment, false);\n if (!_this7.isTouchMove && !contextWithinDownshift && _this7.getState().isOpen) {\n _this7.reset({\n type: touchEnd\n }, function() {\n return _this7.props.onOuterClick(_this7.getStateAndHelpers());\n });\n }\n };\n var environment = this.props.environment;\n environment.addEventListener(\"mousedown\", onMouseDown);\n environment.addEventListener(\"mouseup\", onMouseUp);\n environment.addEventListener(\"touchstart\", onTouchStart);\n environment.addEventListener(\"touchmove\", onTouchMove);\n environment.addEventListener(\"touchend\", onTouchEnd);\n this.cleanup = function() {\n _this7.internalClearTimeouts();\n _this7.updateStatus.cancel();\n environment.removeEventListener(\"mousedown\", onMouseDown);\n environment.removeEventListener(\"mouseup\", onMouseUp);\n environment.removeEventListener(\"touchstart\", onTouchStart);\n environment.removeEventListener(\"touchmove\", onTouchMove);\n environment.removeEventListener(\"touchend\", onTouchEnd);\n };\n }\n };\n _proto.shouldScroll = function shouldScroll(prevState, prevProps) {\n var _ref10 = this.props.highlightedIndex === void 0 ? this.getState() : this.props, currentHighlightedIndex = _ref10.highlightedIndex;\n var _ref11 = prevProps.highlightedIndex === void 0 ? prevState : prevProps, prevHighlightedIndex = _ref11.highlightedIndex;\n var scrollWhenOpen = currentHighlightedIndex && this.getState().isOpen && !prevState.isOpen;\n var scrollWhenNavigating = currentHighlightedIndex !== prevHighlightedIndex;\n return scrollWhenOpen || scrollWhenNavigating;\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (true) {\n validateControlledUnchanged(this.state, prevProps, this.props);\n if (this.getMenuProps.called && !this.getMenuProps.suppressRefError) {\n validateGetMenuPropsCalledCorrectly(this._menuNode, this.getMenuProps);\n }\n }\n if (isControlledProp(this.props, \"selectedItem\") && this.props.selectedItemChanged(prevProps.selectedItem, this.props.selectedItem)) {\n this.internalSetState({\n type: controlledPropUpdatedSelectedItem,\n inputValue: this.props.itemToString(this.props.selectedItem)\n });\n }\n if (!this.avoidScrolling && this.shouldScroll(prevState, prevProps)) {\n this.scrollHighlightedItemIntoView();\n }\n {\n this.updateStatus();\n }\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cleanup();\n };\n _proto.render = function render3() {\n var children = unwrapArray(this.props.children, noop);\n this.clearItems();\n this.getRootProps.called = false;\n this.getRootProps.refKey = void 0;\n this.getRootProps.suppressRefError = void 0;\n this.getMenuProps.called = false;\n this.getMenuProps.refKey = void 0;\n this.getMenuProps.suppressRefError = void 0;\n this.getLabelProps.called = false;\n this.getInputProps.called = false;\n var element4 = unwrapArray(children(this.getStateAndHelpers()));\n if (!element4) {\n return null;\n }\n if (this.getRootProps.called || this.props.suppressRefError) {\n if (!this.getRootProps.suppressRefError && !this.props.suppressRefError) {\n validateGetRootPropsCalledCorrectly(element4, this.getRootProps);\n }\n return element4;\n } else if (isDOMElement2(element4)) {\n return /* @__PURE__ */ (0, import_react6.cloneElement)(element4, this.getRootProps(getElementProps(element4)));\n }\n if (true) {\n throw new Error(\"downshift: If you return a non-DOM element, you must apply the getRootProps function\");\n }\n return void 0;\n };\n return Downshift3;\n }(import_react6.Component);\n Downshift2.defaultProps = {\n defaultHighlightedIndex: null,\n defaultIsOpen: false,\n getA11yStatusMessage: getA11yStatusMessage$1,\n itemToString: function itemToString2(i3) {\n if (i3 == null) {\n return \"\";\n }\n if (isPlainObject3(i3) && !i3.hasOwnProperty(\"toString\")) {\n console.warn(\"downshift: An object was passed to the default implementation of `itemToString`. You should probably provide your own `itemToString` implementation. Please refer to the `itemToString` API documentation.\", \"The object that was passed:\", i3);\n }\n return String(i3);\n },\n onStateChange: noop,\n onInputValueChange: noop,\n onUserAction: noop,\n onChange: noop,\n onSelect: noop,\n onOuterClick: noop,\n selectedItemChanged: function selectedItemChanged(prevItem, item) {\n return prevItem !== item;\n },\n environment: typeof window === \"undefined\" ? {} : window,\n stateReducer: function stateReducer2(state, stateToSet) {\n return stateToSet;\n },\n suppressRefError: false,\n scrollIntoView: scrollIntoView2\n };\n Downshift2.stateChangeTypes = stateChangeTypes$3;\n return Downshift2;\n}();\ntrue ? Downshift.propTypes = {\n children: import_prop_types.default.func,\n defaultHighlightedIndex: import_prop_types.default.number,\n defaultIsOpen: import_prop_types.default.bool,\n initialHighlightedIndex: import_prop_types.default.number,\n initialSelectedItem: import_prop_types.default.any,\n initialInputValue: import_prop_types.default.string,\n initialIsOpen: import_prop_types.default.bool,\n getA11yStatusMessage: import_prop_types.default.func,\n itemToString: import_prop_types.default.func,\n onChange: import_prop_types.default.func,\n onSelect: import_prop_types.default.func,\n onStateChange: import_prop_types.default.func,\n onInputValueChange: import_prop_types.default.func,\n onUserAction: import_prop_types.default.func,\n onOuterClick: import_prop_types.default.func,\n selectedItemChanged: import_prop_types.default.func,\n stateReducer: import_prop_types.default.func,\n itemCount: import_prop_types.default.number,\n id: import_prop_types.default.string,\n environment: import_prop_types.default.shape({\n addEventListener: import_prop_types.default.func,\n removeEventListener: import_prop_types.default.func,\n document: import_prop_types.default.shape({\n getElementById: import_prop_types.default.func,\n activeElement: import_prop_types.default.any,\n body: import_prop_types.default.any\n })\n }),\n suppressRefError: import_prop_types.default.bool,\n scrollIntoView: import_prop_types.default.func,\n selectedItem: import_prop_types.default.any,\n isOpen: import_prop_types.default.bool,\n inputValue: import_prop_types.default.string,\n highlightedIndex: import_prop_types.default.number,\n labelId: import_prop_types.default.string,\n inputId: import_prop_types.default.string,\n menuId: import_prop_types.default.string,\n getItemId: import_prop_types.default.func\n} : void 0;\nfunction validateGetMenuPropsCalledCorrectly(node, _ref12) {\n var refKey = _ref12.refKey;\n if (!node) {\n console.error('downshift: The ref prop \"' + refKey + '\" from getMenuProps was not applied correctly on your menu element.');\n }\n}\nfunction validateGetRootPropsCalledCorrectly(element4, _ref13) {\n var refKey = _ref13.refKey;\n var refKeySpecified = refKey !== \"ref\";\n var isComposite = !isDOMElement2(element4);\n if (isComposite && !refKeySpecified && !(0, import_react_is.isForwardRef)(element4)) {\n console.error(\"downshift: You returned a non-DOM element. You must specify a refKey in getRootProps\");\n } else if (!isComposite && refKeySpecified) {\n console.error('downshift: You returned a DOM element. You should not specify a refKey in getRootProps. You specified \"' + refKey + '\"');\n }\n if (!(0, import_react_is.isForwardRef)(element4) && !getElementProps(element4)[refKey]) {\n console.error('downshift: You must apply the ref prop \"' + refKey + '\" from getRootProps onto your root element.');\n }\n}\nvar _excluded$33 = [\"isInitialMount\", \"highlightedIndex\", \"items\", \"environment\"];\nvar dropdownDefaultStateValues = {\n highlightedIndex: -1,\n isOpen: false,\n selectedItem: null,\n inputValue: \"\"\n};\nfunction callOnChangeProps(action, state, newState) {\n var props = action.props, type = action.type;\n var changes = {};\n Object.keys(state).forEach(function(key) {\n invokeOnChangeHandler(key, action, state, newState);\n if (newState[key] !== state[key]) {\n changes[key] = newState[key];\n }\n });\n if (props.onStateChange && Object.keys(changes).length) {\n props.onStateChange(_extends2({\n type\n }, changes));\n }\n}\nfunction invokeOnChangeHandler(key, action, state, newState) {\n var props = action.props, type = action.type;\n var handler = \"on\" + capitalizeString(key) + \"Change\";\n if (props[handler] && newState[key] !== void 0 && newState[key] !== state[key]) {\n props[handler](_extends2({\n type\n }, newState));\n }\n}\nfunction stateReducer(s3, a5) {\n return a5.changes;\n}\nfunction getA11ySelectionMessage(selectionParameters) {\n var selectedItem = selectionParameters.selectedItem, itemToStringLocal = selectionParameters.itemToString;\n return selectedItem ? itemToStringLocal(selectedItem) + \" has been selected.\" : \"\";\n}\nvar updateA11yStatus = debounce2(function(getA11yMessage, document2) {\n setStatus(getA11yMessage(), document2);\n}, 200);\nvar useIsomorphicLayoutEffect3 = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\" ? import_react6.useLayoutEffect : import_react6.useEffect;\nfunction useElementIds(_ref) {\n var _ref$id = _ref.id, id = _ref$id === void 0 ? \"downshift-\" + generateId() : _ref$id, labelId = _ref.labelId, menuId = _ref.menuId, getItemId = _ref.getItemId, toggleButtonId = _ref.toggleButtonId, inputId = _ref.inputId;\n var elementIdsRef = (0, import_react6.useRef)({\n labelId: labelId || id + \"-label\",\n menuId: menuId || id + \"-menu\",\n getItemId: getItemId || function(index7) {\n return id + \"-item-\" + index7;\n },\n toggleButtonId: toggleButtonId || id + \"-toggle-button\",\n inputId: inputId || id + \"-input\"\n });\n return elementIdsRef.current;\n}\nfunction getItemIndex(index7, item, items2) {\n if (index7 !== void 0) {\n return index7;\n }\n if (items2.length === 0) {\n return -1;\n }\n return items2.indexOf(item);\n}\nfunction itemToString(item) {\n return item ? String(item) : \"\";\n}\nfunction isAcceptedCharacterKey(key) {\n return /^\\S{1}$/.test(key);\n}\nfunction capitalizeString(string) {\n return \"\" + string.slice(0, 1).toUpperCase() + string.slice(1);\n}\nfunction useLatestRef(val) {\n var ref = (0, import_react6.useRef)(val);\n ref.current = val;\n return ref;\n}\nfunction useEnhancedReducer(reducer, initialState3, props) {\n var prevStateRef = (0, import_react6.useRef)();\n var actionRef = (0, import_react6.useRef)();\n var enhancedReducer = (0, import_react6.useCallback)(function(state2, action2) {\n actionRef.current = action2;\n state2 = getState(state2, action2.props);\n var changes = reducer(state2, action2);\n var newState = action2.props.stateReducer(state2, _extends2({}, action2, {\n changes\n }));\n return newState;\n }, [reducer]);\n var _useReducer = (0, import_react6.useReducer)(enhancedReducer, initialState3), state = _useReducer[0], dispatch = _useReducer[1];\n var propsRef = useLatestRef(props);\n var dispatchWithProps = (0, import_react6.useCallback)(function(action2) {\n return dispatch(_extends2({\n props: propsRef.current\n }, action2));\n }, [propsRef]);\n var action = actionRef.current;\n (0, import_react6.useEffect)(function() {\n if (action && prevStateRef.current && prevStateRef.current !== state) {\n callOnChangeProps(action, getState(prevStateRef.current, action.props), state);\n }\n prevStateRef.current = state;\n }, [state, props, action]);\n return [state, dispatchWithProps];\n}\nfunction useControlledReducer$1(reducer, initialState3, props) {\n var _useEnhancedReducer = useEnhancedReducer(reducer, initialState3, props), state = _useEnhancedReducer[0], dispatch = _useEnhancedReducer[1];\n return [getState(state, props), dispatch];\n}\nvar defaultProps$3 = {\n itemToString,\n stateReducer,\n getA11ySelectionMessage,\n scrollIntoView: scrollIntoView2,\n circularNavigation: false,\n environment: typeof window === \"undefined\" ? {} : window\n};\nfunction getDefaultValue$1(props, propKey, defaultStateValues2) {\n if (defaultStateValues2 === void 0) {\n defaultStateValues2 = dropdownDefaultStateValues;\n }\n var defaultPropKey = \"default\" + capitalizeString(propKey);\n if (defaultPropKey in props) {\n return props[defaultPropKey];\n }\n return defaultStateValues2[propKey];\n}\nfunction getInitialValue$1(props, propKey, defaultStateValues2) {\n if (defaultStateValues2 === void 0) {\n defaultStateValues2 = dropdownDefaultStateValues;\n }\n if (propKey in props) {\n return props[propKey];\n }\n var initialPropKey = \"initial\" + capitalizeString(propKey);\n if (initialPropKey in props) {\n return props[initialPropKey];\n }\n return getDefaultValue$1(props, propKey, defaultStateValues2);\n}\nfunction getInitialState$2(props) {\n var selectedItem = getInitialValue$1(props, \"selectedItem\");\n var isOpen = getInitialValue$1(props, \"isOpen\");\n var highlightedIndex = getInitialValue$1(props, \"highlightedIndex\");\n var inputValue = getInitialValue$1(props, \"inputValue\");\n return {\n highlightedIndex: highlightedIndex < 0 && selectedItem && isOpen ? props.items.indexOf(selectedItem) : highlightedIndex,\n isOpen,\n selectedItem,\n inputValue\n };\n}\nfunction getHighlightedIndexOnOpen(props, state, offset3, getItemNodeFromIndex) {\n var items2 = props.items, initialHighlightedIndex = props.initialHighlightedIndex, defaultHighlightedIndex = props.defaultHighlightedIndex;\n var selectedItem = state.selectedItem, highlightedIndex = state.highlightedIndex;\n if (items2.length === 0) {\n return -1;\n }\n if (initialHighlightedIndex !== void 0 && highlightedIndex === initialHighlightedIndex) {\n return initialHighlightedIndex;\n }\n if (defaultHighlightedIndex !== void 0) {\n return defaultHighlightedIndex;\n }\n if (selectedItem) {\n if (offset3 === 0) {\n return items2.indexOf(selectedItem);\n }\n return getNextWrappingIndex(offset3, items2.indexOf(selectedItem), items2.length, getItemNodeFromIndex, false);\n }\n if (offset3 === 0) {\n return -1;\n }\n return offset3 < 0 ? items2.length - 1 : 0;\n}\nfunction useMouseAndTouchTracker(isOpen, downshiftElementRefs, environment, handleBlur) {\n var mouseAndTouchTrackersRef = (0, import_react6.useRef)({\n isMouseDown: false,\n isTouchMove: false\n });\n (0, import_react6.useEffect)(function() {\n var onMouseDown = function onMouseDown2() {\n mouseAndTouchTrackersRef.current.isMouseDown = true;\n };\n var onMouseUp = function onMouseUp2(event) {\n mouseAndTouchTrackersRef.current.isMouseDown = false;\n if (isOpen && !targetWithinDownshift(event.target, downshiftElementRefs.map(function(ref) {\n return ref.current;\n }), environment)) {\n handleBlur();\n }\n };\n var onTouchStart = function onTouchStart2() {\n mouseAndTouchTrackersRef.current.isTouchMove = false;\n };\n var onTouchMove = function onTouchMove2() {\n mouseAndTouchTrackersRef.current.isTouchMove = true;\n };\n var onTouchEnd = function onTouchEnd2(event) {\n if (isOpen && !mouseAndTouchTrackersRef.current.isTouchMove && !targetWithinDownshift(event.target, downshiftElementRefs.map(function(ref) {\n return ref.current;\n }), environment, false)) {\n handleBlur();\n }\n };\n environment.addEventListener(\"mousedown\", onMouseDown);\n environment.addEventListener(\"mouseup\", onMouseUp);\n environment.addEventListener(\"touchstart\", onTouchStart);\n environment.addEventListener(\"touchmove\", onTouchMove);\n environment.addEventListener(\"touchend\", onTouchEnd);\n return function cleanup() {\n environment.removeEventListener(\"mousedown\", onMouseDown);\n environment.removeEventListener(\"mouseup\", onMouseUp);\n environment.removeEventListener(\"touchstart\", onTouchStart);\n environment.removeEventListener(\"touchmove\", onTouchMove);\n environment.removeEventListener(\"touchend\", onTouchEnd);\n };\n }, [isOpen, environment]);\n return mouseAndTouchTrackersRef;\n}\nvar useGetterPropsCalledChecker = function useGetterPropsCalledChecker2() {\n return noop;\n};\nif (true) {\n useGetterPropsCalledChecker = function useGetterPropsCalledChecker3() {\n var isInitialMountRef = (0, import_react6.useRef)(true);\n for (var _len = arguments.length, propKeys = new Array(_len), _key = 0; _key < _len; _key++) {\n propKeys[_key] = arguments[_key];\n }\n var getterPropsCalledRef = (0, import_react6.useRef)(propKeys.reduce(function(acc, propKey) {\n acc[propKey] = {};\n return acc;\n }, {}));\n (0, import_react6.useEffect)(function() {\n Object.keys(getterPropsCalledRef.current).forEach(function(propKey) {\n var propCallInfo = getterPropsCalledRef.current[propKey];\n if (isInitialMountRef.current) {\n if (!Object.keys(propCallInfo).length) {\n console.error(\"downshift: You forgot to call the \" + propKey + \" getter function on your component / element.\");\n return;\n }\n }\n var suppressRefError = propCallInfo.suppressRefError, refKey = propCallInfo.refKey, elementRef = propCallInfo.elementRef;\n if ((!elementRef || !elementRef.current) && !suppressRefError) {\n console.error('downshift: The ref prop \"' + refKey + '\" from ' + propKey + \" was not applied correctly on your element.\");\n }\n });\n isInitialMountRef.current = false;\n });\n var setGetterPropCallInfo = (0, import_react6.useCallback)(function(propKey, suppressRefError, refKey, elementRef) {\n getterPropsCalledRef.current[propKey] = {\n suppressRefError,\n refKey,\n elementRef\n };\n }, []);\n return setGetterPropCallInfo;\n };\n}\nfunction useA11yMessageSetter(getA11yMessage, dependencyArray, _ref2) {\n var isInitialMount = _ref2.isInitialMount, highlightedIndex = _ref2.highlightedIndex, items2 = _ref2.items, environment = _ref2.environment, rest = _objectWithoutPropertiesLoose3(_ref2, _excluded$33);\n (0, import_react6.useEffect)(function() {\n if (isInitialMount || false) {\n return;\n }\n updateA11yStatus(function() {\n return getA11yMessage(_extends2({\n highlightedIndex,\n highlightedItem: items2[highlightedIndex],\n resultCount: items2.length\n }, rest));\n }, environment.document);\n }, dependencyArray);\n}\nfunction useScrollIntoView(_ref3) {\n var highlightedIndex = _ref3.highlightedIndex, isOpen = _ref3.isOpen, itemRefs = _ref3.itemRefs, getItemNodeFromIndex = _ref3.getItemNodeFromIndex, menuElement = _ref3.menuElement, scrollIntoViewProp = _ref3.scrollIntoView;\n var shouldScrollRef = (0, import_react6.useRef)(true);\n useIsomorphicLayoutEffect3(function() {\n if (highlightedIndex < 0 || !isOpen || !Object.keys(itemRefs.current).length) {\n return;\n }\n if (shouldScrollRef.current === false) {\n shouldScrollRef.current = true;\n } else {\n scrollIntoViewProp(getItemNodeFromIndex(highlightedIndex), menuElement);\n }\n }, [highlightedIndex]);\n return shouldScrollRef;\n}\nvar useControlPropsValidator = noop;\nif (true) {\n useControlPropsValidator = function useControlPropsValidator2(_ref4) {\n var isInitialMount = _ref4.isInitialMount, props = _ref4.props, state = _ref4.state;\n var prevPropsRef = (0, import_react6.useRef)(props);\n (0, import_react6.useEffect)(function() {\n if (isInitialMount) {\n return;\n }\n validateControlledUnchanged(state, prevPropsRef.current, props);\n prevPropsRef.current = props;\n }, [state, props, isInitialMount]);\n };\n}\nfunction downshiftCommonReducer(state, action, stateChangeTypes2) {\n var type = action.type, props = action.props;\n var changes;\n switch (type) {\n case stateChangeTypes2.ItemMouseMove:\n changes = {\n highlightedIndex: action.index\n };\n break;\n case stateChangeTypes2.MenuMouseLeave:\n changes = {\n highlightedIndex: -1\n };\n break;\n case stateChangeTypes2.ToggleButtonClick:\n case stateChangeTypes2.FunctionToggleMenu:\n changes = {\n isOpen: !state.isOpen,\n highlightedIndex: state.isOpen ? -1 : getHighlightedIndexOnOpen(props, state, 0)\n };\n break;\n case stateChangeTypes2.FunctionOpenMenu:\n changes = {\n isOpen: true,\n highlightedIndex: getHighlightedIndexOnOpen(props, state, 0)\n };\n break;\n case stateChangeTypes2.FunctionCloseMenu:\n changes = {\n isOpen: false\n };\n break;\n case stateChangeTypes2.FunctionSetHighlightedIndex:\n changes = {\n highlightedIndex: action.highlightedIndex\n };\n break;\n case stateChangeTypes2.FunctionSetInputValue:\n changes = {\n inputValue: action.inputValue\n };\n break;\n case stateChangeTypes2.FunctionReset:\n changes = {\n highlightedIndex: getDefaultValue$1(props, \"highlightedIndex\"),\n isOpen: getDefaultValue$1(props, \"isOpen\"),\n selectedItem: getDefaultValue$1(props, \"selectedItem\"),\n inputValue: getDefaultValue$1(props, \"inputValue\")\n };\n break;\n default:\n throw new Error(\"Reducer called without proper action type.\");\n }\n return _extends2({}, state, changes);\n}\nfunction getItemIndexByCharacterKey(_a) {\n var keysSoFar = _a.keysSoFar, highlightedIndex = _a.highlightedIndex, items2 = _a.items, itemToString2 = _a.itemToString, getItemNodeFromIndex = _a.getItemNodeFromIndex;\n var lowerCasedKeysSoFar = keysSoFar.toLowerCase();\n for (var index7 = 0; index7 < items2.length; index7++) {\n var offsetIndex = (index7 + highlightedIndex + 1) % items2.length;\n var item = items2[offsetIndex];\n if (item !== void 0 && itemToString2(item).toLowerCase().startsWith(lowerCasedKeysSoFar)) {\n var element4 = getItemNodeFromIndex(offsetIndex);\n if (!(element4 === null || element4 === void 0 ? void 0 : element4.hasAttribute(\"disabled\"))) {\n return offsetIndex;\n }\n }\n }\n return highlightedIndex;\n}\nvar propTypes$2 = {\n items: import_prop_types.default.array.isRequired,\n itemToString: import_prop_types.default.func,\n getA11yStatusMessage: import_prop_types.default.func,\n getA11ySelectionMessage: import_prop_types.default.func,\n circularNavigation: import_prop_types.default.bool,\n highlightedIndex: import_prop_types.default.number,\n defaultHighlightedIndex: import_prop_types.default.number,\n initialHighlightedIndex: import_prop_types.default.number,\n isOpen: import_prop_types.default.bool,\n defaultIsOpen: import_prop_types.default.bool,\n initialIsOpen: import_prop_types.default.bool,\n selectedItem: import_prop_types.default.any,\n initialSelectedItem: import_prop_types.default.any,\n defaultSelectedItem: import_prop_types.default.any,\n id: import_prop_types.default.string,\n labelId: import_prop_types.default.string,\n menuId: import_prop_types.default.string,\n getItemId: import_prop_types.default.func,\n toggleButtonId: import_prop_types.default.string,\n stateReducer: import_prop_types.default.func,\n onSelectedItemChange: import_prop_types.default.func,\n onHighlightedIndexChange: import_prop_types.default.func,\n onStateChange: import_prop_types.default.func,\n onIsOpenChange: import_prop_types.default.func,\n environment: import_prop_types.default.shape({\n addEventListener: import_prop_types.default.func,\n removeEventListener: import_prop_types.default.func,\n document: import_prop_types.default.shape({\n getElementById: import_prop_types.default.func,\n activeElement: import_prop_types.default.any,\n body: import_prop_types.default.any\n })\n })\n};\nfunction getA11yStatusMessage(_a) {\n var isOpen = _a.isOpen, resultCount = _a.resultCount, previousResultCount = _a.previousResultCount;\n if (!isOpen) {\n return \"\";\n }\n if (!resultCount) {\n return \"No results are available.\";\n }\n if (resultCount !== previousResultCount) {\n return resultCount + \" result\" + (resultCount === 1 ? \" is\" : \"s are\") + \" available, use up and down arrow keys to navigate. Press Enter or Space Bar keys to select.\";\n }\n return \"\";\n}\nvar defaultProps$2 = __assign(__assign({}, defaultProps$3), { getA11yStatusMessage });\nvar validatePropTypes$2 = noop;\nif (true) {\n validatePropTypes$2 = function(options, caller) {\n import_prop_types.default.checkPropTypes(propTypes$2, options, \"prop\", caller.name);\n };\n}\nvar MenuKeyDownArrowDown = true ? \"__menu_keydown_arrow_down__\" : 0;\nvar MenuKeyDownArrowUp = true ? \"__menu_keydown_arrow_up__\" : 1;\nvar MenuKeyDownEscape = true ? \"__menu_keydown_escape__\" : 2;\nvar MenuKeyDownHome = true ? \"__menu_keydown_home__\" : 3;\nvar MenuKeyDownEnd = true ? \"__menu_keydown_end__\" : 4;\nvar MenuKeyDownEnter = true ? \"__menu_keydown_enter__\" : 5;\nvar MenuKeyDownSpaceButton = true ? \"__menu_keydown_space_button__\" : 6;\nvar MenuKeyDownCharacter = true ? \"__menu_keydown_character__\" : 7;\nvar MenuBlur = true ? \"__menu_blur__\" : 8;\nvar MenuMouseLeave$1 = true ? \"__menu_mouse_leave__\" : 9;\nvar ItemMouseMove$1 = true ? \"__item_mouse_move__\" : 10;\nvar ItemClick$1 = true ? \"__item_click__\" : 11;\nvar ToggleButtonClick$1 = true ? \"__togglebutton_click__\" : 12;\nvar ToggleButtonKeyDownArrowDown = true ? \"__togglebutton_keydown_arrow_down__\" : 13;\nvar ToggleButtonKeyDownArrowUp = true ? \"__togglebutton_keydown_arrow_up__\" : 14;\nvar ToggleButtonKeyDownCharacter = true ? \"__togglebutton_keydown_character__\" : 15;\nvar FunctionToggleMenu$1 = true ? \"__function_toggle_menu__\" : 16;\nvar FunctionOpenMenu$1 = true ? \"__function_open_menu__\" : 17;\nvar FunctionCloseMenu$1 = true ? \"__function_close_menu__\" : 18;\nvar FunctionSetHighlightedIndex$1 = true ? \"__function_set_highlighted_index__\" : 19;\nvar FunctionSelectItem$1 = true ? \"__function_select_item__\" : 20;\nvar FunctionSetInputValue$1 = true ? \"__function_set_input_value__\" : 21;\nvar FunctionReset$2 = true ? \"__function_reset__\" : 22;\nvar stateChangeTypes$2 = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n MenuKeyDownArrowDown,\n MenuKeyDownArrowUp,\n MenuKeyDownEscape,\n MenuKeyDownHome,\n MenuKeyDownEnd,\n MenuKeyDownEnter,\n MenuKeyDownSpaceButton,\n MenuKeyDownCharacter,\n MenuBlur,\n MenuMouseLeave: MenuMouseLeave$1,\n ItemMouseMove: ItemMouseMove$1,\n ItemClick: ItemClick$1,\n ToggleButtonClick: ToggleButtonClick$1,\n ToggleButtonKeyDownArrowDown,\n ToggleButtonKeyDownArrowUp,\n ToggleButtonKeyDownCharacter,\n FunctionToggleMenu: FunctionToggleMenu$1,\n FunctionOpenMenu: FunctionOpenMenu$1,\n FunctionCloseMenu: FunctionCloseMenu$1,\n FunctionSetHighlightedIndex: FunctionSetHighlightedIndex$1,\n FunctionSelectItem: FunctionSelectItem$1,\n FunctionSetInputValue: FunctionSetInputValue$1,\n FunctionReset: FunctionReset$2\n});\nfunction downshiftSelectReducer(state, action) {\n var type = action.type, props = action.props, shiftKey = action.shiftKey;\n var changes;\n switch (type) {\n case ItemClick$1:\n changes = {\n isOpen: getDefaultValue$1(props, \"isOpen\"),\n highlightedIndex: getDefaultValue$1(props, \"highlightedIndex\"),\n selectedItem: props.items[action.index]\n };\n break;\n case ToggleButtonKeyDownCharacter:\n {\n var lowercasedKey = action.key;\n var inputValue = \"\" + state.inputValue + lowercasedKey;\n var itemIndex = getItemIndexByCharacterKey({\n keysSoFar: inputValue,\n highlightedIndex: state.selectedItem ? props.items.indexOf(state.selectedItem) : -1,\n items: props.items,\n itemToString: props.itemToString,\n getItemNodeFromIndex: action.getItemNodeFromIndex\n });\n changes = _extends2({\n inputValue\n }, itemIndex >= 0 && {\n selectedItem: props.items[itemIndex]\n });\n }\n break;\n case ToggleButtonKeyDownArrowDown:\n changes = {\n highlightedIndex: getHighlightedIndexOnOpen(props, state, 1, action.getItemNodeFromIndex),\n isOpen: true\n };\n break;\n case ToggleButtonKeyDownArrowUp:\n changes = {\n highlightedIndex: getHighlightedIndexOnOpen(props, state, -1, action.getItemNodeFromIndex),\n isOpen: true\n };\n break;\n case MenuKeyDownEnter:\n case MenuKeyDownSpaceButton:\n changes = _extends2({\n isOpen: getDefaultValue$1(props, \"isOpen\"),\n highlightedIndex: getDefaultValue$1(props, \"highlightedIndex\")\n }, state.highlightedIndex >= 0 && {\n selectedItem: props.items[state.highlightedIndex]\n });\n break;\n case MenuKeyDownHome:\n changes = {\n highlightedIndex: getNextNonDisabledIndex(1, 0, props.items.length, action.getItemNodeFromIndex, false)\n };\n break;\n case MenuKeyDownEnd:\n changes = {\n highlightedIndex: getNextNonDisabledIndex(-1, props.items.length - 1, props.items.length, action.getItemNodeFromIndex, false)\n };\n break;\n case MenuKeyDownEscape:\n changes = {\n isOpen: false,\n highlightedIndex: -1\n };\n break;\n case MenuBlur:\n changes = {\n isOpen: false,\n highlightedIndex: -1\n };\n break;\n case MenuKeyDownCharacter:\n {\n var _lowercasedKey = action.key;\n var _inputValue = \"\" + state.inputValue + _lowercasedKey;\n var highlightedIndex = getItemIndexByCharacterKey({\n keysSoFar: _inputValue,\n highlightedIndex: state.highlightedIndex,\n items: props.items,\n itemToString: props.itemToString,\n getItemNodeFromIndex: action.getItemNodeFromIndex\n });\n changes = _extends2({\n inputValue: _inputValue\n }, highlightedIndex >= 0 && {\n highlightedIndex\n });\n }\n break;\n case MenuKeyDownArrowDown:\n changes = {\n highlightedIndex: getNextWrappingIndex(shiftKey ? 5 : 1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n };\n break;\n case MenuKeyDownArrowUp:\n changes = {\n highlightedIndex: getNextWrappingIndex(shiftKey ? -5 : -1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n };\n break;\n case FunctionSelectItem$1:\n changes = {\n selectedItem: action.selectedItem\n };\n break;\n default:\n return downshiftCommonReducer(state, action, stateChangeTypes$2);\n }\n return _extends2({}, state, changes);\n}\nvar _excluded$23 = [\"onMouseLeave\", \"refKey\", \"onKeyDown\", \"onBlur\", \"ref\"];\nvar _excluded2$22 = [\"onClick\", \"onKeyDown\", \"refKey\", \"ref\"];\nvar _excluded3$1 = [\"item\", \"index\", \"onMouseMove\", \"onClick\", \"refKey\", \"ref\"];\nuseSelect.stateChangeTypes = stateChangeTypes$2;\nfunction useSelect(userProps) {\n if (userProps === void 0) {\n userProps = {};\n }\n validatePropTypes$2(userProps, useSelect);\n var props = _extends2({}, defaultProps$2, userProps);\n var items2 = props.items, scrollIntoView3 = props.scrollIntoView, environment = props.environment, initialIsOpen = props.initialIsOpen, defaultIsOpen = props.defaultIsOpen, itemToString2 = props.itemToString, getA11ySelectionMessage2 = props.getA11ySelectionMessage, getA11yStatusMessage2 = props.getA11yStatusMessage;\n var initialState3 = getInitialState$2(props);\n var _useControlledReducer = useControlledReducer$1(downshiftSelectReducer, initialState3, props), state = _useControlledReducer[0], dispatch = _useControlledReducer[1];\n var isOpen = state.isOpen, highlightedIndex = state.highlightedIndex, selectedItem = state.selectedItem, inputValue = state.inputValue;\n var toggleButtonRef = (0, import_react6.useRef)(null);\n var menuRef = (0, import_react6.useRef)(null);\n var itemRefs = (0, import_react6.useRef)({});\n var shouldBlurRef = (0, import_react6.useRef)(true);\n var clearTimeoutRef = (0, import_react6.useRef)(null);\n var elementIds = useElementIds(props);\n var previousResultCountRef = (0, import_react6.useRef)();\n var isInitialMountRef = (0, import_react6.useRef)(true);\n var latest = useLatestRef({\n state,\n props\n });\n var getItemNodeFromIndex = (0, import_react6.useCallback)(function(index7) {\n return itemRefs.current[elementIds.getItemId(index7)];\n }, [elementIds]);\n useA11yMessageSetter(getA11yStatusMessage2, [isOpen, highlightedIndex, inputValue, items2], _extends2({\n isInitialMount: isInitialMountRef.current,\n previousResultCount: previousResultCountRef.current,\n items: items2,\n environment,\n itemToString: itemToString2\n }, state));\n useA11yMessageSetter(getA11ySelectionMessage2, [selectedItem], _extends2({\n isInitialMount: isInitialMountRef.current,\n previousResultCount: previousResultCountRef.current,\n items: items2,\n environment,\n itemToString: itemToString2\n }, state));\n var shouldScrollRef = useScrollIntoView({\n menuElement: menuRef.current,\n highlightedIndex,\n isOpen,\n itemRefs,\n scrollIntoView: scrollIntoView3,\n getItemNodeFromIndex\n });\n (0, import_react6.useEffect)(function() {\n clearTimeoutRef.current = debounce2(function(outerDispatch) {\n outerDispatch({\n type: FunctionSetInputValue$1,\n inputValue: \"\"\n });\n }, 500);\n return function() {\n clearTimeoutRef.current.cancel();\n };\n }, []);\n (0, import_react6.useEffect)(function() {\n if (!inputValue) {\n return;\n }\n clearTimeoutRef.current(dispatch);\n }, [dispatch, inputValue]);\n useControlPropsValidator({\n isInitialMount: isInitialMountRef.current,\n props,\n state\n });\n (0, import_react6.useEffect)(function() {\n if (isInitialMountRef.current) {\n if ((initialIsOpen || defaultIsOpen || isOpen) && menuRef.current) {\n menuRef.current.focus();\n }\n return;\n }\n if (isOpen) {\n if (menuRef.current) {\n menuRef.current.focus();\n }\n return;\n }\n if (environment.document.activeElement === menuRef.current) {\n if (toggleButtonRef.current) {\n shouldBlurRef.current = false;\n toggleButtonRef.current.focus();\n }\n }\n }, [isOpen]);\n (0, import_react6.useEffect)(function() {\n if (isInitialMountRef.current) {\n return;\n }\n previousResultCountRef.current = items2.length;\n });\n var mouseAndTouchTrackersRef = useMouseAndTouchTracker(isOpen, [menuRef, toggleButtonRef], environment, function() {\n dispatch({\n type: MenuBlur\n });\n });\n var setGetterPropCallInfo = useGetterPropsCalledChecker(\"getMenuProps\", \"getToggleButtonProps\");\n (0, import_react6.useEffect)(function() {\n isInitialMountRef.current = false;\n }, []);\n (0, import_react6.useEffect)(function() {\n if (!isOpen) {\n itemRefs.current = {};\n }\n }, [isOpen]);\n var toggleButtonKeyDownHandlers = (0, import_react6.useMemo)(function() {\n return {\n ArrowDown: function ArrowDown(event) {\n event.preventDefault();\n dispatch({\n type: ToggleButtonKeyDownArrowDown,\n getItemNodeFromIndex,\n shiftKey: event.shiftKey\n });\n },\n ArrowUp: function ArrowUp(event) {\n event.preventDefault();\n dispatch({\n type: ToggleButtonKeyDownArrowUp,\n getItemNodeFromIndex,\n shiftKey: event.shiftKey\n });\n }\n };\n }, [dispatch, getItemNodeFromIndex]);\n var menuKeyDownHandlers = (0, import_react6.useMemo)(function() {\n return {\n ArrowDown: function ArrowDown(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownArrowDown,\n getItemNodeFromIndex,\n shiftKey: event.shiftKey\n });\n },\n ArrowUp: function ArrowUp(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownArrowUp,\n getItemNodeFromIndex,\n shiftKey: event.shiftKey\n });\n },\n Home: function Home(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownHome,\n getItemNodeFromIndex\n });\n },\n End: function End(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownEnd,\n getItemNodeFromIndex\n });\n },\n Escape: function Escape() {\n dispatch({\n type: MenuKeyDownEscape\n });\n },\n Enter: function Enter(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownEnter\n });\n },\n \" \": function _4(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownSpaceButton\n });\n }\n };\n }, [dispatch, getItemNodeFromIndex]);\n var toggleMenu = (0, import_react6.useCallback)(function() {\n dispatch({\n type: FunctionToggleMenu$1\n });\n }, [dispatch]);\n var closeMenu = (0, import_react6.useCallback)(function() {\n dispatch({\n type: FunctionCloseMenu$1\n });\n }, [dispatch]);\n var openMenu = (0, import_react6.useCallback)(function() {\n dispatch({\n type: FunctionOpenMenu$1\n });\n }, [dispatch]);\n var setHighlightedIndex = (0, import_react6.useCallback)(function(newHighlightedIndex) {\n dispatch({\n type: FunctionSetHighlightedIndex$1,\n highlightedIndex: newHighlightedIndex\n });\n }, [dispatch]);\n var selectItem = (0, import_react6.useCallback)(function(newSelectedItem) {\n dispatch({\n type: FunctionSelectItem$1,\n selectedItem: newSelectedItem\n });\n }, [dispatch]);\n var reset = (0, import_react6.useCallback)(function() {\n dispatch({\n type: FunctionReset$2\n });\n }, [dispatch]);\n var setInputValue = (0, import_react6.useCallback)(function(newInputValue) {\n dispatch({\n type: FunctionSetInputValue$1,\n inputValue: newInputValue\n });\n }, [dispatch]);\n var getLabelProps = (0, import_react6.useCallback)(function(labelProps) {\n return _extends2({\n id: elementIds.labelId,\n htmlFor: elementIds.toggleButtonId\n }, labelProps);\n }, [elementIds]);\n var getMenuProps = (0, import_react6.useCallback)(function(_temp, _temp2) {\n var _extends22;\n var _ref = _temp === void 0 ? {} : _temp, onMouseLeave = _ref.onMouseLeave, _ref$refKey = _ref.refKey, refKey = _ref$refKey === void 0 ? \"ref\" : _ref$refKey, onKeyDown = _ref.onKeyDown, onBlur = _ref.onBlur, ref = _ref.ref, rest = _objectWithoutPropertiesLoose3(_ref, _excluded$23);\n var _ref2 = _temp2 === void 0 ? {} : _temp2, _ref2$suppressRefErro = _ref2.suppressRefError, suppressRefError = _ref2$suppressRefErro === void 0 ? false : _ref2$suppressRefErro;\n var latestState = latest.current.state;\n var menuHandleKeyDown = function menuHandleKeyDown2(event) {\n var key = normalizeArrowKey(event);\n if (key && menuKeyDownHandlers[key]) {\n menuKeyDownHandlers[key](event);\n } else if (isAcceptedCharacterKey(key)) {\n dispatch({\n type: MenuKeyDownCharacter,\n key,\n getItemNodeFromIndex\n });\n }\n };\n var menuHandleBlur = function menuHandleBlur2() {\n if (shouldBlurRef.current === false) {\n shouldBlurRef.current = true;\n return;\n }\n var shouldBlur = !mouseAndTouchTrackersRef.current.isMouseDown;\n if (shouldBlur) {\n dispatch({\n type: MenuBlur\n });\n }\n };\n var menuHandleMouseLeave = function menuHandleMouseLeave2() {\n dispatch({\n type: MenuMouseLeave$1\n });\n };\n setGetterPropCallInfo(\"getMenuProps\", suppressRefError, refKey, menuRef);\n return _extends2((_extends22 = {}, _extends22[refKey] = handleRefs(ref, function(menuNode) {\n menuRef.current = menuNode;\n }), _extends22.id = elementIds.menuId, _extends22.role = \"listbox\", _extends22[\"aria-labelledby\"] = elementIds.labelId, _extends22.tabIndex = -1, _extends22), latestState.isOpen && latestState.highlightedIndex > -1 && {\n \"aria-activedescendant\": elementIds.getItemId(latestState.highlightedIndex)\n }, {\n onMouseLeave: callAllEventHandlers(onMouseLeave, menuHandleMouseLeave),\n onKeyDown: callAllEventHandlers(onKeyDown, menuHandleKeyDown),\n onBlur: callAllEventHandlers(onBlur, menuHandleBlur)\n }, rest);\n }, [dispatch, latest, menuKeyDownHandlers, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds, getItemNodeFromIndex]);\n var getToggleButtonProps = (0, import_react6.useCallback)(function(_temp3, _temp4) {\n var _extends32;\n var _ref3 = _temp3 === void 0 ? {} : _temp3, onClick = _ref3.onClick, onKeyDown = _ref3.onKeyDown, _ref3$refKey = _ref3.refKey, refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey, ref = _ref3.ref, rest = _objectWithoutPropertiesLoose3(_ref3, _excluded2$22);\n var _ref4 = _temp4 === void 0 ? {} : _temp4, _ref4$suppressRefErro = _ref4.suppressRefError, suppressRefError = _ref4$suppressRefErro === void 0 ? false : _ref4$suppressRefErro;\n var toggleButtonHandleClick = function toggleButtonHandleClick2() {\n dispatch({\n type: ToggleButtonClick$1\n });\n };\n var toggleButtonHandleKeyDown = function toggleButtonHandleKeyDown2(event) {\n var key = normalizeArrowKey(event);\n if (key && toggleButtonKeyDownHandlers[key]) {\n toggleButtonKeyDownHandlers[key](event);\n } else if (isAcceptedCharacterKey(key)) {\n dispatch({\n type: ToggleButtonKeyDownCharacter,\n key,\n getItemNodeFromIndex\n });\n }\n };\n var toggleProps = _extends2((_extends32 = {}, _extends32[refKey] = handleRefs(ref, function(toggleButtonNode) {\n toggleButtonRef.current = toggleButtonNode;\n }), _extends32.id = elementIds.toggleButtonId, _extends32[\"aria-haspopup\"] = \"listbox\", _extends32[\"aria-expanded\"] = latest.current.state.isOpen, _extends32[\"aria-labelledby\"] = elementIds.labelId + \" \" + elementIds.toggleButtonId, _extends32), rest);\n if (!rest.disabled) {\n toggleProps.onClick = callAllEventHandlers(onClick, toggleButtonHandleClick);\n toggleProps.onKeyDown = callAllEventHandlers(onKeyDown, toggleButtonHandleKeyDown);\n }\n setGetterPropCallInfo(\"getToggleButtonProps\", suppressRefError, refKey, toggleButtonRef);\n return toggleProps;\n }, [dispatch, latest, toggleButtonKeyDownHandlers, setGetterPropCallInfo, elementIds, getItemNodeFromIndex]);\n var getItemProps = (0, import_react6.useCallback)(function(_temp5) {\n var _extends42;\n var _ref5 = _temp5 === void 0 ? {} : _temp5, item = _ref5.item, index7 = _ref5.index, onMouseMove = _ref5.onMouseMove, onClick = _ref5.onClick, _ref5$refKey = _ref5.refKey, refKey = _ref5$refKey === void 0 ? \"ref\" : _ref5$refKey, ref = _ref5.ref, rest = _objectWithoutPropertiesLoose3(_ref5, _excluded3$1);\n var _latest$current = latest.current, latestState = _latest$current.state, latestProps = _latest$current.props;\n var itemHandleMouseMove = function itemHandleMouseMove2() {\n if (index7 === latestState.highlightedIndex) {\n return;\n }\n shouldScrollRef.current = false;\n dispatch({\n type: ItemMouseMove$1,\n index: index7\n });\n };\n var itemHandleClick = function itemHandleClick2() {\n dispatch({\n type: ItemClick$1,\n index: index7\n });\n };\n var itemIndex = getItemIndex(index7, item, latestProps.items);\n if (itemIndex < 0) {\n throw new Error(\"Pass either item or item index in getItemProps!\");\n }\n var itemProps = _extends2((_extends42 = {\n role: \"option\",\n \"aria-selected\": \"\" + (itemIndex === latestState.highlightedIndex),\n id: elementIds.getItemId(itemIndex)\n }, _extends42[refKey] = handleRefs(ref, function(itemNode) {\n if (itemNode) {\n itemRefs.current[elementIds.getItemId(itemIndex)] = itemNode;\n }\n }), _extends42), rest);\n if (!rest.disabled) {\n itemProps.onMouseMove = callAllEventHandlers(onMouseMove, itemHandleMouseMove);\n itemProps.onClick = callAllEventHandlers(onClick, itemHandleClick);\n }\n return itemProps;\n }, [dispatch, latest, shouldScrollRef, elementIds]);\n return {\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getItemProps,\n toggleMenu,\n openMenu,\n closeMenu,\n setHighlightedIndex,\n selectItem,\n reset,\n setInputValue,\n highlightedIndex,\n isOpen,\n selectedItem,\n inputValue\n };\n}\nvar InputKeyDownArrowDown = true ? \"__input_keydown_arrow_down__\" : 0;\nvar InputKeyDownArrowUp = true ? \"__input_keydown_arrow_up__\" : 1;\nvar InputKeyDownEscape = true ? \"__input_keydown_escape__\" : 2;\nvar InputKeyDownHome = true ? \"__input_keydown_home__\" : 3;\nvar InputKeyDownEnd = true ? \"__input_keydown_end__\" : 4;\nvar InputKeyDownEnter = true ? \"__input_keydown_enter__\" : 5;\nvar InputChange = true ? \"__input_change__\" : 6;\nvar InputBlur = true ? \"__input_blur__\" : 7;\nvar MenuMouseLeave = true ? \"__menu_mouse_leave__\" : 8;\nvar ItemMouseMove = true ? \"__item_mouse_move__\" : 9;\nvar ItemClick = true ? \"__item_click__\" : 10;\nvar ToggleButtonClick = true ? \"__togglebutton_click__\" : 11;\nvar FunctionToggleMenu = true ? \"__function_toggle_menu__\" : 12;\nvar FunctionOpenMenu = true ? \"__function_open_menu__\" : 13;\nvar FunctionCloseMenu = true ? \"__function_close_menu__\" : 14;\nvar FunctionSetHighlightedIndex = true ? \"__function_set_highlighted_index__\" : 15;\nvar FunctionSelectItem = true ? \"__function_select_item__\" : 16;\nvar FunctionSetInputValue = true ? \"__function_set_input_value__\" : 17;\nvar FunctionReset$1 = true ? \"__function_reset__\" : 18;\nvar ControlledPropUpdatedSelectedItem = true ? \"__controlled_prop_updated_selected_item__\" : 19;\nvar stateChangeTypes$1 = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n InputKeyDownArrowDown,\n InputKeyDownArrowUp,\n InputKeyDownEscape,\n InputKeyDownHome,\n InputKeyDownEnd,\n InputKeyDownEnter,\n InputChange,\n InputBlur,\n MenuMouseLeave,\n ItemMouseMove,\n ItemClick,\n ToggleButtonClick,\n FunctionToggleMenu,\n FunctionOpenMenu,\n FunctionCloseMenu,\n FunctionSetHighlightedIndex,\n FunctionSelectItem,\n FunctionSetInputValue,\n FunctionReset: FunctionReset$1,\n ControlledPropUpdatedSelectedItem\n});\nfunction getInitialState$1(props) {\n var initialState3 = getInitialState$2(props);\n var selectedItem = initialState3.selectedItem;\n var inputValue = initialState3.inputValue;\n if (inputValue === \"\" && selectedItem && props.defaultInputValue === void 0 && props.initialInputValue === void 0 && props.inputValue === void 0) {\n inputValue = props.itemToString(selectedItem);\n }\n return _extends2({}, initialState3, {\n inputValue\n });\n}\nvar propTypes$1 = {\n items: import_prop_types.default.array.isRequired,\n itemToString: import_prop_types.default.func,\n getA11yStatusMessage: import_prop_types.default.func,\n getA11ySelectionMessage: import_prop_types.default.func,\n circularNavigation: import_prop_types.default.bool,\n highlightedIndex: import_prop_types.default.number,\n defaultHighlightedIndex: import_prop_types.default.number,\n initialHighlightedIndex: import_prop_types.default.number,\n isOpen: import_prop_types.default.bool,\n defaultIsOpen: import_prop_types.default.bool,\n initialIsOpen: import_prop_types.default.bool,\n selectedItem: import_prop_types.default.any,\n initialSelectedItem: import_prop_types.default.any,\n defaultSelectedItem: import_prop_types.default.any,\n inputValue: import_prop_types.default.string,\n defaultInputValue: import_prop_types.default.string,\n initialInputValue: import_prop_types.default.string,\n id: import_prop_types.default.string,\n labelId: import_prop_types.default.string,\n menuId: import_prop_types.default.string,\n getItemId: import_prop_types.default.func,\n inputId: import_prop_types.default.string,\n toggleButtonId: import_prop_types.default.string,\n stateReducer: import_prop_types.default.func,\n onSelectedItemChange: import_prop_types.default.func,\n onHighlightedIndexChange: import_prop_types.default.func,\n onStateChange: import_prop_types.default.func,\n onIsOpenChange: import_prop_types.default.func,\n onInputValueChange: import_prop_types.default.func,\n environment: import_prop_types.default.shape({\n addEventListener: import_prop_types.default.func,\n removeEventListener: import_prop_types.default.func,\n document: import_prop_types.default.shape({\n getElementById: import_prop_types.default.func,\n activeElement: import_prop_types.default.any,\n body: import_prop_types.default.any\n })\n })\n};\nfunction useControlledReducer(reducer, initialState3, props) {\n var previousSelectedItemRef = (0, import_react6.useRef)();\n var _useEnhancedReducer = useEnhancedReducer(reducer, initialState3, props), state = _useEnhancedReducer[0], dispatch = _useEnhancedReducer[1];\n (0, import_react6.useEffect)(function() {\n if (isControlledProp(props, \"selectedItem\")) {\n if (previousSelectedItemRef.current !== props.selectedItem) {\n dispatch({\n type: ControlledPropUpdatedSelectedItem,\n inputValue: props.itemToString(props.selectedItem)\n });\n }\n previousSelectedItemRef.current = state.selectedItem === previousSelectedItemRef.current ? props.selectedItem : state.selectedItem;\n }\n });\n return [getState(state, props), dispatch];\n}\nvar validatePropTypes$1 = noop;\nif (true) {\n validatePropTypes$1 = function validatePropTypes2(options, caller) {\n import_prop_types.default.checkPropTypes(propTypes$1, options, \"prop\", caller.name);\n };\n}\nvar defaultProps$1 = _extends2({}, defaultProps$3, {\n getA11yStatusMessage: getA11yStatusMessage$1,\n circularNavigation: true\n});\nfunction downshiftUseComboboxReducer(state, action) {\n var type = action.type, props = action.props, shiftKey = action.shiftKey;\n var changes;\n switch (type) {\n case ItemClick:\n changes = {\n isOpen: getDefaultValue$1(props, \"isOpen\"),\n highlightedIndex: getDefaultValue$1(props, \"highlightedIndex\"),\n selectedItem: props.items[action.index],\n inputValue: props.itemToString(props.items[action.index])\n };\n break;\n case InputKeyDownArrowDown:\n if (state.isOpen) {\n changes = {\n highlightedIndex: getNextWrappingIndex(shiftKey ? 5 : 1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n };\n } else {\n changes = {\n highlightedIndex: getHighlightedIndexOnOpen(props, state, 1, action.getItemNodeFromIndex),\n isOpen: props.items.length >= 0\n };\n }\n break;\n case InputKeyDownArrowUp:\n if (state.isOpen) {\n changes = {\n highlightedIndex: getNextWrappingIndex(shiftKey ? -5 : -1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n };\n } else {\n changes = {\n highlightedIndex: getHighlightedIndexOnOpen(props, state, -1, action.getItemNodeFromIndex),\n isOpen: props.items.length >= 0\n };\n }\n break;\n case InputKeyDownEnter:\n changes = _extends2({}, state.isOpen && state.highlightedIndex >= 0 && {\n selectedItem: props.items[state.highlightedIndex],\n isOpen: getDefaultValue$1(props, \"isOpen\"),\n highlightedIndex: getDefaultValue$1(props, \"highlightedIndex\"),\n inputValue: props.itemToString(props.items[state.highlightedIndex])\n });\n break;\n case InputKeyDownEscape:\n changes = _extends2({\n isOpen: false,\n highlightedIndex: -1\n }, !state.isOpen && {\n selectedItem: null,\n inputValue: \"\"\n });\n break;\n case InputKeyDownHome:\n changes = {\n highlightedIndex: getNextNonDisabledIndex(1, 0, props.items.length, action.getItemNodeFromIndex, false)\n };\n break;\n case InputKeyDownEnd:\n changes = {\n highlightedIndex: getNextNonDisabledIndex(-1, props.items.length - 1, props.items.length, action.getItemNodeFromIndex, false)\n };\n break;\n case InputBlur:\n changes = _extends2({\n isOpen: false,\n highlightedIndex: -1\n }, state.highlightedIndex >= 0 && action.selectItem && {\n selectedItem: props.items[state.highlightedIndex],\n inputValue: props.itemToString(props.items[state.highlightedIndex])\n });\n break;\n case InputChange:\n changes = {\n isOpen: true,\n highlightedIndex: getDefaultValue$1(props, \"highlightedIndex\"),\n inputValue: action.inputValue\n };\n break;\n case FunctionSelectItem:\n changes = {\n selectedItem: action.selectedItem,\n inputValue: props.itemToString(action.selectedItem)\n };\n break;\n case ControlledPropUpdatedSelectedItem:\n changes = {\n inputValue: action.inputValue\n };\n break;\n default:\n return downshiftCommonReducer(state, action, stateChangeTypes$1);\n }\n return _extends2({}, state, changes);\n}\nvar _excluded$13 = [\"onMouseLeave\", \"refKey\", \"ref\"];\nvar _excluded2$12 = [\"item\", \"index\", \"refKey\", \"ref\", \"onMouseMove\", \"onClick\", \"onPress\"];\nvar _excluded32 = [\"onClick\", \"onPress\", \"refKey\", \"ref\"];\nvar _excluded4 = [\"onKeyDown\", \"onChange\", \"onInput\", \"onBlur\", \"onChangeText\", \"refKey\", \"ref\"];\nvar _excluded5 = [\"refKey\", \"ref\"];\nuseCombobox.stateChangeTypes = stateChangeTypes$1;\nfunction useCombobox(userProps) {\n if (userProps === void 0) {\n userProps = {};\n }\n validatePropTypes$1(userProps, useCombobox);\n var props = _extends2({}, defaultProps$1, userProps);\n var initialIsOpen = props.initialIsOpen, defaultIsOpen = props.defaultIsOpen, items2 = props.items, scrollIntoView3 = props.scrollIntoView, environment = props.environment, getA11yStatusMessage2 = props.getA11yStatusMessage, getA11ySelectionMessage2 = props.getA11ySelectionMessage, itemToString2 = props.itemToString;\n var initialState3 = getInitialState$1(props);\n var _useControlledReducer = useControlledReducer(downshiftUseComboboxReducer, initialState3, props), state = _useControlledReducer[0], dispatch = _useControlledReducer[1];\n var isOpen = state.isOpen, highlightedIndex = state.highlightedIndex, selectedItem = state.selectedItem, inputValue = state.inputValue;\n var menuRef = (0, import_react6.useRef)(null);\n var itemRefs = (0, import_react6.useRef)({});\n var inputRef = (0, import_react6.useRef)(null);\n var toggleButtonRef = (0, import_react6.useRef)(null);\n var comboboxRef = (0, import_react6.useRef)(null);\n var isInitialMountRef = (0, import_react6.useRef)(true);\n var elementIds = useElementIds(props);\n var previousResultCountRef = (0, import_react6.useRef)();\n var latest = useLatestRef({\n state,\n props\n });\n var getItemNodeFromIndex = (0, import_react6.useCallback)(function(index7) {\n return itemRefs.current[elementIds.getItemId(index7)];\n }, [elementIds]);\n useA11yMessageSetter(getA11yStatusMessage2, [isOpen, highlightedIndex, inputValue, items2], _extends2({\n isInitialMount: isInitialMountRef.current,\n previousResultCount: previousResultCountRef.current,\n items: items2,\n environment,\n itemToString: itemToString2\n }, state));\n useA11yMessageSetter(getA11ySelectionMessage2, [selectedItem], _extends2({\n isInitialMount: isInitialMountRef.current,\n previousResultCount: previousResultCountRef.current,\n items: items2,\n environment,\n itemToString: itemToString2\n }, state));\n var shouldScrollRef = useScrollIntoView({\n menuElement: menuRef.current,\n highlightedIndex,\n isOpen,\n itemRefs,\n scrollIntoView: scrollIntoView3,\n getItemNodeFromIndex\n });\n useControlPropsValidator({\n isInitialMount: isInitialMountRef.current,\n props,\n state\n });\n (0, import_react6.useEffect)(function() {\n var focusOnOpen = initialIsOpen || defaultIsOpen || isOpen;\n if (focusOnOpen && inputRef.current) {\n inputRef.current.focus();\n }\n }, []);\n (0, import_react6.useEffect)(function() {\n if (isInitialMountRef.current) {\n return;\n }\n previousResultCountRef.current = items2.length;\n });\n var mouseAndTouchTrackersRef = useMouseAndTouchTracker(isOpen, [comboboxRef, menuRef, toggleButtonRef], environment, function() {\n dispatch({\n type: InputBlur,\n selectItem: false\n });\n });\n var setGetterPropCallInfo = useGetterPropsCalledChecker(\"getInputProps\", \"getComboboxProps\", \"getMenuProps\");\n (0, import_react6.useEffect)(function() {\n isInitialMountRef.current = false;\n }, []);\n (0, import_react6.useEffect)(function() {\n if (!isOpen) {\n itemRefs.current = {};\n }\n }, [isOpen]);\n var inputKeyDownHandlers = (0, import_react6.useMemo)(function() {\n return {\n ArrowDown: function ArrowDown(event) {\n event.preventDefault();\n dispatch({\n type: InputKeyDownArrowDown,\n shiftKey: event.shiftKey,\n getItemNodeFromIndex\n });\n },\n ArrowUp: function ArrowUp(event) {\n event.preventDefault();\n dispatch({\n type: InputKeyDownArrowUp,\n shiftKey: event.shiftKey,\n getItemNodeFromIndex\n });\n },\n Home: function Home(event) {\n if (!latest.current.state.isOpen) {\n return;\n }\n event.preventDefault();\n dispatch({\n type: InputKeyDownHome,\n getItemNodeFromIndex\n });\n },\n End: function End(event) {\n if (!latest.current.state.isOpen) {\n return;\n }\n event.preventDefault();\n dispatch({\n type: InputKeyDownEnd,\n getItemNodeFromIndex\n });\n },\n Escape: function Escape() {\n var latestState = latest.current.state;\n if (latestState.isOpen || latestState.inputValue || latestState.selectedItem || latestState.highlightedIndex > -1) {\n dispatch({\n type: InputKeyDownEscape\n });\n }\n },\n Enter: function Enter(event) {\n var latestState = latest.current.state;\n if (!latestState.isOpen || latestState.highlightedIndex < 0 || event.which === 229) {\n return;\n }\n event.preventDefault();\n dispatch({\n type: InputKeyDownEnter,\n getItemNodeFromIndex\n });\n }\n };\n }, [dispatch, latest, getItemNodeFromIndex]);\n var getLabelProps = (0, import_react6.useCallback)(function(labelProps) {\n return _extends2({\n id: elementIds.labelId,\n htmlFor: elementIds.inputId\n }, labelProps);\n }, [elementIds]);\n var getMenuProps = (0, import_react6.useCallback)(function(_temp, _temp2) {\n var _extends22;\n var _ref = _temp === void 0 ? {} : _temp, onMouseLeave = _ref.onMouseLeave, _ref$refKey = _ref.refKey, refKey = _ref$refKey === void 0 ? \"ref\" : _ref$refKey, ref = _ref.ref, rest = _objectWithoutPropertiesLoose3(_ref, _excluded$13);\n var _ref2 = _temp2 === void 0 ? {} : _temp2, _ref2$suppressRefErro = _ref2.suppressRefError, suppressRefError = _ref2$suppressRefErro === void 0 ? false : _ref2$suppressRefErro;\n setGetterPropCallInfo(\"getMenuProps\", suppressRefError, refKey, menuRef);\n return _extends2((_extends22 = {}, _extends22[refKey] = handleRefs(ref, function(menuNode) {\n menuRef.current = menuNode;\n }), _extends22.id = elementIds.menuId, _extends22.role = \"listbox\", _extends22[\"aria-labelledby\"] = elementIds.labelId, _extends22.onMouseLeave = callAllEventHandlers(onMouseLeave, function() {\n dispatch({\n type: MenuMouseLeave\n });\n }), _extends22), rest);\n }, [dispatch, setGetterPropCallInfo, elementIds]);\n var getItemProps = (0, import_react6.useCallback)(function(_temp3) {\n var _extends32, _ref4;\n var _ref3 = _temp3 === void 0 ? {} : _temp3, item = _ref3.item, index7 = _ref3.index, _ref3$refKey = _ref3.refKey, refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey, ref = _ref3.ref, onMouseMove = _ref3.onMouseMove, onClick = _ref3.onClick;\n _ref3.onPress;\n var rest = _objectWithoutPropertiesLoose3(_ref3, _excluded2$12);\n var _latest$current = latest.current, latestProps = _latest$current.props, latestState = _latest$current.state;\n var itemIndex = getItemIndex(index7, item, latestProps.items);\n if (itemIndex < 0) {\n throw new Error(\"Pass either item or item index in getItemProps!\");\n }\n var onSelectKey = \"onClick\";\n var customClickHandler = onClick;\n var itemHandleMouseMove = function itemHandleMouseMove2() {\n if (index7 === latestState.highlightedIndex) {\n return;\n }\n shouldScrollRef.current = false;\n dispatch({\n type: ItemMouseMove,\n index: index7\n });\n };\n var itemHandleClick = function itemHandleClick2() {\n dispatch({\n type: ItemClick,\n index: index7\n });\n if (inputRef.current) {\n inputRef.current.focus();\n }\n };\n return _extends2((_extends32 = {}, _extends32[refKey] = handleRefs(ref, function(itemNode) {\n if (itemNode) {\n itemRefs.current[elementIds.getItemId(itemIndex)] = itemNode;\n }\n }), _extends32.role = \"option\", _extends32[\"aria-selected\"] = \"\" + (itemIndex === latestState.highlightedIndex), _extends32.id = elementIds.getItemId(itemIndex), _extends32), !rest.disabled && (_ref4 = {\n onMouseMove: callAllEventHandlers(onMouseMove, itemHandleMouseMove)\n }, _ref4[onSelectKey] = callAllEventHandlers(customClickHandler, itemHandleClick), _ref4), rest);\n }, [dispatch, latest, shouldScrollRef, elementIds]);\n var getToggleButtonProps = (0, import_react6.useCallback)(function(_temp4) {\n var _extends42;\n var _ref5 = _temp4 === void 0 ? {} : _temp4, onClick = _ref5.onClick;\n _ref5.onPress;\n var _ref5$refKey = _ref5.refKey, refKey = _ref5$refKey === void 0 ? \"ref\" : _ref5$refKey, ref = _ref5.ref, rest = _objectWithoutPropertiesLoose3(_ref5, _excluded32);\n var toggleButtonHandleClick = function toggleButtonHandleClick2() {\n dispatch({\n type: ToggleButtonClick\n });\n if (!latest.current.state.isOpen && inputRef.current) {\n inputRef.current.focus();\n }\n };\n return _extends2((_extends42 = {}, _extends42[refKey] = handleRefs(ref, function(toggleButtonNode) {\n toggleButtonRef.current = toggleButtonNode;\n }), _extends42.id = elementIds.toggleButtonId, _extends42.tabIndex = -1, _extends42), !rest.disabled && _extends2({}, {\n onClick: callAllEventHandlers(onClick, toggleButtonHandleClick)\n }), rest);\n }, [dispatch, latest, elementIds]);\n var getInputProps = (0, import_react6.useCallback)(function(_temp5, _temp6) {\n var _extends52;\n var _ref6 = _temp5 === void 0 ? {} : _temp5, onKeyDown = _ref6.onKeyDown, onChange = _ref6.onChange, onInput = _ref6.onInput, onBlur = _ref6.onBlur;\n _ref6.onChangeText;\n var _ref6$refKey = _ref6.refKey, refKey = _ref6$refKey === void 0 ? \"ref\" : _ref6$refKey, ref = _ref6.ref, rest = _objectWithoutPropertiesLoose3(_ref6, _excluded4);\n var _ref7 = _temp6 === void 0 ? {} : _temp6, _ref7$suppressRefErro = _ref7.suppressRefError, suppressRefError = _ref7$suppressRefErro === void 0 ? false : _ref7$suppressRefErro;\n setGetterPropCallInfo(\"getInputProps\", suppressRefError, refKey, inputRef);\n var latestState = latest.current.state;\n var inputHandleKeyDown = function inputHandleKeyDown2(event) {\n var key = normalizeArrowKey(event);\n if (key && inputKeyDownHandlers[key]) {\n inputKeyDownHandlers[key](event);\n }\n };\n var inputHandleChange = function inputHandleChange2(event) {\n dispatch({\n type: InputChange,\n inputValue: event.target.value\n });\n };\n var inputHandleBlur = function inputHandleBlur2() {\n if (latestState.isOpen && !mouseAndTouchTrackersRef.current.isMouseDown) {\n dispatch({\n type: InputBlur,\n selectItem: true\n });\n }\n };\n var onChangeKey = \"onChange\";\n var eventHandlers = {};\n if (!rest.disabled) {\n var _eventHandlers;\n eventHandlers = (_eventHandlers = {}, _eventHandlers[onChangeKey] = callAllEventHandlers(onChange, onInput, inputHandleChange), _eventHandlers.onKeyDown = callAllEventHandlers(onKeyDown, inputHandleKeyDown), _eventHandlers.onBlur = callAllEventHandlers(onBlur, inputHandleBlur), _eventHandlers);\n }\n return _extends2((_extends52 = {}, _extends52[refKey] = handleRefs(ref, function(inputNode) {\n inputRef.current = inputNode;\n }), _extends52.id = elementIds.inputId, _extends52[\"aria-autocomplete\"] = \"list\", _extends52[\"aria-controls\"] = elementIds.menuId, _extends52), latestState.isOpen && latestState.highlightedIndex > -1 && {\n \"aria-activedescendant\": elementIds.getItemId(latestState.highlightedIndex)\n }, {\n \"aria-labelledby\": elementIds.labelId,\n autoComplete: \"off\",\n value: latestState.inputValue\n }, eventHandlers, rest);\n }, [dispatch, inputKeyDownHandlers, latest, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds]);\n var getComboboxProps = (0, import_react6.useCallback)(function(_temp7, _temp8) {\n var _extends62;\n var _ref8 = _temp7 === void 0 ? {} : _temp7, _ref8$refKey = _ref8.refKey, refKey = _ref8$refKey === void 0 ? \"ref\" : _ref8$refKey, ref = _ref8.ref, rest = _objectWithoutPropertiesLoose3(_ref8, _excluded5);\n var _ref9 = _temp8 === void 0 ? {} : _temp8, _ref9$suppressRefErro = _ref9.suppressRefError, suppressRefError = _ref9$suppressRefErro === void 0 ? false : _ref9$suppressRefErro;\n setGetterPropCallInfo(\"getComboboxProps\", suppressRefError, refKey, comboboxRef);\n return _extends2((_extends62 = {}, _extends62[refKey] = handleRefs(ref, function(comboboxNode) {\n comboboxRef.current = comboboxNode;\n }), _extends62.role = \"combobox\", _extends62[\"aria-haspopup\"] = \"listbox\", _extends62[\"aria-owns\"] = elementIds.menuId, _extends62[\"aria-expanded\"] = latest.current.state.isOpen, _extends62), rest);\n }, [latest, setGetterPropCallInfo, elementIds]);\n var toggleMenu = (0, import_react6.useCallback)(function() {\n dispatch({\n type: FunctionToggleMenu\n });\n }, [dispatch]);\n var closeMenu = (0, import_react6.useCallback)(function() {\n dispatch({\n type: FunctionCloseMenu\n });\n }, [dispatch]);\n var openMenu = (0, import_react6.useCallback)(function() {\n dispatch({\n type: FunctionOpenMenu\n });\n }, [dispatch]);\n var setHighlightedIndex = (0, import_react6.useCallback)(function(newHighlightedIndex) {\n dispatch({\n type: FunctionSetHighlightedIndex,\n highlightedIndex: newHighlightedIndex\n });\n }, [dispatch]);\n var selectItem = (0, import_react6.useCallback)(function(newSelectedItem) {\n dispatch({\n type: FunctionSelectItem,\n selectedItem: newSelectedItem\n });\n }, [dispatch]);\n var setInputValue = (0, import_react6.useCallback)(function(newInputValue) {\n dispatch({\n type: FunctionSetInputValue,\n inputValue: newInputValue\n });\n }, [dispatch]);\n var reset = (0, import_react6.useCallback)(function() {\n dispatch({\n type: FunctionReset$1\n });\n }, [dispatch]);\n return {\n getItemProps,\n getLabelProps,\n getMenuProps,\n getInputProps,\n getComboboxProps,\n getToggleButtonProps,\n toggleMenu,\n openMenu,\n closeMenu,\n setHighlightedIndex,\n setInputValue,\n selectItem,\n reset,\n highlightedIndex,\n isOpen,\n selectedItem,\n inputValue\n };\n}\nvar defaultStateValues = {\n activeIndex: -1,\n selectedItems: []\n};\nfunction getInitialValue(props, propKey) {\n return getInitialValue$1(props, propKey, defaultStateValues);\n}\nfunction getDefaultValue(props, propKey) {\n return getDefaultValue$1(props, propKey, defaultStateValues);\n}\nfunction getInitialState(props) {\n var activeIndex = getInitialValue(props, \"activeIndex\");\n var selectedItems = getInitialValue(props, \"selectedItems\");\n return {\n activeIndex,\n selectedItems\n };\n}\nfunction isKeyDownOperationPermitted(event) {\n if (event.shiftKey || event.metaKey || event.ctrlKey || event.altKey) {\n return false;\n }\n var element4 = event.target;\n if (element4 instanceof HTMLInputElement && element4.value !== \"\" && (element4.selectionStart !== 0 || element4.selectionEnd !== 0)) {\n return false;\n }\n return true;\n}\nfunction getA11yRemovalMessage(selectionParameters) {\n var removedSelectedItem = selectionParameters.removedSelectedItem, itemToStringLocal = selectionParameters.itemToString;\n return itemToStringLocal(removedSelectedItem) + \" has been removed.\";\n}\nvar propTypes = {\n selectedItems: import_prop_types.default.array,\n initialSelectedItems: import_prop_types.default.array,\n defaultSelectedItems: import_prop_types.default.array,\n itemToString: import_prop_types.default.func,\n getA11yRemovalMessage: import_prop_types.default.func,\n stateReducer: import_prop_types.default.func,\n activeIndex: import_prop_types.default.number,\n initialActiveIndex: import_prop_types.default.number,\n defaultActiveIndex: import_prop_types.default.number,\n onActiveIndexChange: import_prop_types.default.func,\n onSelectedItemsChange: import_prop_types.default.func,\n keyNavigationNext: import_prop_types.default.string,\n keyNavigationPrevious: import_prop_types.default.string,\n environment: import_prop_types.default.shape({\n addEventListener: import_prop_types.default.func,\n removeEventListener: import_prop_types.default.func,\n document: import_prop_types.default.shape({\n getElementById: import_prop_types.default.func,\n activeElement: import_prop_types.default.any,\n body: import_prop_types.default.any\n })\n })\n};\nvar defaultProps = {\n itemToString: defaultProps$3.itemToString,\n stateReducer: defaultProps$3.stateReducer,\n environment: defaultProps$3.environment,\n getA11yRemovalMessage,\n keyNavigationNext: \"ArrowRight\",\n keyNavigationPrevious: \"ArrowLeft\"\n};\nvar validatePropTypes = noop;\nif (true) {\n validatePropTypes = function validatePropTypes2(options, caller) {\n import_prop_types.default.checkPropTypes(propTypes, options, \"prop\", caller.name);\n };\n}\nvar SelectedItemClick = true ? \"__selected_item_click__\" : 0;\nvar SelectedItemKeyDownDelete = true ? \"__selected_item_keydown_delete__\" : 1;\nvar SelectedItemKeyDownBackspace = true ? \"__selected_item_keydown_backspace__\" : 2;\nvar SelectedItemKeyDownNavigationNext = true ? \"__selected_item_keydown_navigation_next__\" : 3;\nvar SelectedItemKeyDownNavigationPrevious = true ? \"__selected_item_keydown_navigation_previous__\" : 4;\nvar DropdownKeyDownNavigationPrevious = true ? \"__dropdown_keydown_navigation_previous__\" : 5;\nvar DropdownKeyDownBackspace = true ? \"__dropdown_keydown_backspace__\" : 6;\nvar DropdownClick = true ? \"__dropdown_click__\" : 7;\nvar FunctionAddSelectedItem = true ? \"__function_add_selected_item__\" : 8;\nvar FunctionRemoveSelectedItem = true ? \"__function_remove_selected_item__\" : 9;\nvar FunctionSetSelectedItems = true ? \"__function_set_selected_items__\" : 10;\nvar FunctionSetActiveIndex = true ? \"__function_set_active_index__\" : 11;\nvar FunctionReset = true ? \"__function_reset__\" : 12;\nvar stateChangeTypes = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n SelectedItemClick,\n SelectedItemKeyDownDelete,\n SelectedItemKeyDownBackspace,\n SelectedItemKeyDownNavigationNext,\n SelectedItemKeyDownNavigationPrevious,\n DropdownKeyDownNavigationPrevious,\n DropdownKeyDownBackspace,\n DropdownClick,\n FunctionAddSelectedItem,\n FunctionRemoveSelectedItem,\n FunctionSetSelectedItems,\n FunctionSetActiveIndex,\n FunctionReset\n});\nfunction downshiftMultipleSelectionReducer(state, action) {\n var type = action.type, index7 = action.index, props = action.props, selectedItem = action.selectedItem;\n var activeIndex = state.activeIndex, selectedItems = state.selectedItems;\n var changes;\n switch (type) {\n case SelectedItemClick:\n changes = {\n activeIndex: index7\n };\n break;\n case SelectedItemKeyDownNavigationPrevious:\n changes = {\n activeIndex: activeIndex - 1 < 0 ? 0 : activeIndex - 1\n };\n break;\n case SelectedItemKeyDownNavigationNext:\n changes = {\n activeIndex: activeIndex + 1 >= selectedItems.length ? -1 : activeIndex + 1\n };\n break;\n case SelectedItemKeyDownBackspace:\n case SelectedItemKeyDownDelete: {\n var newActiveIndex = activeIndex;\n if (selectedItems.length === 1) {\n newActiveIndex = -1;\n } else if (activeIndex === selectedItems.length - 1) {\n newActiveIndex = selectedItems.length - 2;\n }\n changes = _extends2({\n selectedItems: [].concat(selectedItems.slice(0, activeIndex), selectedItems.slice(activeIndex + 1))\n }, {\n activeIndex: newActiveIndex\n });\n break;\n }\n case DropdownKeyDownNavigationPrevious:\n changes = {\n activeIndex: selectedItems.length - 1\n };\n break;\n case DropdownKeyDownBackspace:\n changes = {\n selectedItems: selectedItems.slice(0, selectedItems.length - 1)\n };\n break;\n case FunctionAddSelectedItem:\n changes = {\n selectedItems: [].concat(selectedItems, [selectedItem])\n };\n break;\n case DropdownClick:\n changes = {\n activeIndex: -1\n };\n break;\n case FunctionRemoveSelectedItem: {\n var _newActiveIndex = activeIndex;\n var selectedItemIndex = selectedItems.indexOf(selectedItem);\n if (selectedItems.length === 1) {\n _newActiveIndex = -1;\n } else if (selectedItemIndex === selectedItems.length - 1) {\n _newActiveIndex = selectedItems.length - 2;\n }\n changes = _extends2({\n selectedItems: [].concat(selectedItems.slice(0, selectedItemIndex), selectedItems.slice(selectedItemIndex + 1))\n }, {\n activeIndex: _newActiveIndex\n });\n break;\n }\n case FunctionSetSelectedItems: {\n var newSelectedItems = action.selectedItems;\n changes = {\n selectedItems: newSelectedItems\n };\n break;\n }\n case FunctionSetActiveIndex: {\n var _newActiveIndex2 = action.activeIndex;\n changes = {\n activeIndex: _newActiveIndex2\n };\n break;\n }\n case FunctionReset:\n changes = {\n activeIndex: getDefaultValue(props, \"activeIndex\"),\n selectedItems: getDefaultValue(props, \"selectedItems\")\n };\n break;\n default:\n throw new Error(\"Reducer called without proper action type.\");\n }\n return _extends2({}, state, changes);\n}\nvar _excluded6 = [\"refKey\", \"ref\", \"onClick\", \"onKeyDown\", \"selectedItem\", \"index\"];\nvar _excluded23 = [\"refKey\", \"ref\", \"onKeyDown\", \"onClick\", \"preventKeyAction\"];\nuseMultipleSelection.stateChangeTypes = stateChangeTypes;\nfunction useMultipleSelection(userProps) {\n if (userProps === void 0) {\n userProps = {};\n }\n validatePropTypes(userProps, useMultipleSelection);\n var props = _extends2({}, defaultProps, userProps);\n var getA11yRemovalMessage2 = props.getA11yRemovalMessage, itemToString2 = props.itemToString, environment = props.environment, keyNavigationNext = props.keyNavigationNext, keyNavigationPrevious = props.keyNavigationPrevious;\n var _useControlledReducer = useControlledReducer$1(downshiftMultipleSelectionReducer, getInitialState(props), props), state = _useControlledReducer[0], dispatch = _useControlledReducer[1];\n var activeIndex = state.activeIndex, selectedItems = state.selectedItems;\n var isInitialMountRef = (0, import_react6.useRef)(true);\n var dropdownRef = (0, import_react6.useRef)(null);\n var previousSelectedItemsRef = (0, import_react6.useRef)(selectedItems);\n var selectedItemRefs = (0, import_react6.useRef)();\n selectedItemRefs.current = [];\n var latest = useLatestRef({\n state,\n props\n });\n (0, import_react6.useEffect)(function() {\n if (isInitialMountRef.current) {\n return;\n }\n if (selectedItems.length < previousSelectedItemsRef.current.length) {\n var removedSelectedItem = previousSelectedItemsRef.current.find(function(item) {\n return selectedItems.indexOf(item) < 0;\n });\n setStatus(getA11yRemovalMessage2({\n itemToString: itemToString2,\n resultCount: selectedItems.length,\n removedSelectedItem,\n activeIndex,\n activeSelectedItem: selectedItems[activeIndex]\n }), environment.document);\n }\n previousSelectedItemsRef.current = selectedItems;\n }, [selectedItems.length]);\n (0, import_react6.useEffect)(function() {\n if (isInitialMountRef.current) {\n return;\n }\n if (activeIndex === -1 && dropdownRef.current) {\n dropdownRef.current.focus();\n } else if (selectedItemRefs.current[activeIndex]) {\n selectedItemRefs.current[activeIndex].focus();\n }\n }, [activeIndex]);\n useControlPropsValidator({\n isInitialMount: isInitialMountRef.current,\n props,\n state\n });\n var setGetterPropCallInfo = useGetterPropsCalledChecker(\"getDropdownProps\");\n (0, import_react6.useEffect)(function() {\n isInitialMountRef.current = false;\n }, []);\n var selectedItemKeyDownHandlers = (0, import_react6.useMemo)(function() {\n var _ref;\n return _ref = {}, _ref[keyNavigationPrevious] = function() {\n dispatch({\n type: SelectedItemKeyDownNavigationPrevious\n });\n }, _ref[keyNavigationNext] = function() {\n dispatch({\n type: SelectedItemKeyDownNavigationNext\n });\n }, _ref.Delete = function Delete() {\n dispatch({\n type: SelectedItemKeyDownDelete\n });\n }, _ref.Backspace = function Backspace() {\n dispatch({\n type: SelectedItemKeyDownBackspace\n });\n }, _ref;\n }, [dispatch, keyNavigationNext, keyNavigationPrevious]);\n var dropdownKeyDownHandlers = (0, import_react6.useMemo)(function() {\n var _ref2;\n return _ref2 = {}, _ref2[keyNavigationPrevious] = function(event) {\n if (isKeyDownOperationPermitted(event)) {\n dispatch({\n type: DropdownKeyDownNavigationPrevious\n });\n }\n }, _ref2.Backspace = function Backspace(event) {\n if (isKeyDownOperationPermitted(event)) {\n dispatch({\n type: DropdownKeyDownBackspace\n });\n }\n }, _ref2;\n }, [dispatch, keyNavigationPrevious]);\n var getSelectedItemProps = (0, import_react6.useCallback)(function(_temp) {\n var _extends22;\n var _ref3 = _temp === void 0 ? {} : _temp, _ref3$refKey = _ref3.refKey, refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey, ref = _ref3.ref, onClick = _ref3.onClick, onKeyDown = _ref3.onKeyDown, selectedItem = _ref3.selectedItem, index7 = _ref3.index, rest = _objectWithoutPropertiesLoose3(_ref3, _excluded6);\n var latestState = latest.current.state;\n var itemIndex = getItemIndex(index7, selectedItem, latestState.selectedItems);\n if (itemIndex < 0) {\n throw new Error(\"Pass either selectedItem or index in getSelectedItemProps!\");\n }\n var selectedItemHandleClick = function selectedItemHandleClick2() {\n dispatch({\n type: SelectedItemClick,\n index: index7\n });\n };\n var selectedItemHandleKeyDown = function selectedItemHandleKeyDown2(event) {\n var key = normalizeArrowKey(event);\n if (key && selectedItemKeyDownHandlers[key]) {\n selectedItemKeyDownHandlers[key](event);\n }\n };\n return _extends2((_extends22 = {}, _extends22[refKey] = handleRefs(ref, function(selectedItemNode) {\n if (selectedItemNode) {\n selectedItemRefs.current.push(selectedItemNode);\n }\n }), _extends22.tabIndex = index7 === latestState.activeIndex ? 0 : -1, _extends22.onClick = callAllEventHandlers(onClick, selectedItemHandleClick), _extends22.onKeyDown = callAllEventHandlers(onKeyDown, selectedItemHandleKeyDown), _extends22), rest);\n }, [dispatch, latest, selectedItemKeyDownHandlers]);\n var getDropdownProps = (0, import_react6.useCallback)(function(_temp2, _temp3) {\n var _extends32;\n var _ref4 = _temp2 === void 0 ? {} : _temp2, _ref4$refKey = _ref4.refKey, refKey = _ref4$refKey === void 0 ? \"ref\" : _ref4$refKey, ref = _ref4.ref, onKeyDown = _ref4.onKeyDown, onClick = _ref4.onClick, _ref4$preventKeyActio = _ref4.preventKeyAction, preventKeyAction = _ref4$preventKeyActio === void 0 ? false : _ref4$preventKeyActio, rest = _objectWithoutPropertiesLoose3(_ref4, _excluded23);\n var _ref5 = _temp3 === void 0 ? {} : _temp3, _ref5$suppressRefErro = _ref5.suppressRefError, suppressRefError = _ref5$suppressRefErro === void 0 ? false : _ref5$suppressRefErro;\n setGetterPropCallInfo(\"getDropdownProps\", suppressRefError, refKey, dropdownRef);\n var dropdownHandleKeyDown = function dropdownHandleKeyDown2(event) {\n var key = normalizeArrowKey(event);\n if (key && dropdownKeyDownHandlers[key]) {\n dropdownKeyDownHandlers[key](event);\n }\n };\n var dropdownHandleClick = function dropdownHandleClick2() {\n dispatch({\n type: DropdownClick\n });\n };\n return _extends2((_extends32 = {}, _extends32[refKey] = handleRefs(ref, function(dropdownNode) {\n if (dropdownNode) {\n dropdownRef.current = dropdownNode;\n }\n }), _extends32), !preventKeyAction && {\n onKeyDown: callAllEventHandlers(onKeyDown, dropdownHandleKeyDown),\n onClick: callAllEventHandlers(onClick, dropdownHandleClick)\n }, rest);\n }, [dispatch, dropdownKeyDownHandlers, setGetterPropCallInfo]);\n var addSelectedItem = (0, import_react6.useCallback)(function(selectedItem) {\n dispatch({\n type: FunctionAddSelectedItem,\n selectedItem\n });\n }, [dispatch]);\n var removeSelectedItem = (0, import_react6.useCallback)(function(selectedItem) {\n dispatch({\n type: FunctionRemoveSelectedItem,\n selectedItem\n });\n }, [dispatch]);\n var setSelectedItems = (0, import_react6.useCallback)(function(newSelectedItems) {\n dispatch({\n type: FunctionSetSelectedItems,\n selectedItems: newSelectedItems\n });\n }, [dispatch]);\n var setActiveIndex = (0, import_react6.useCallback)(function(newActiveIndex) {\n dispatch({\n type: FunctionSetActiveIndex,\n activeIndex: newActiveIndex\n });\n }, [dispatch]);\n var reset = (0, import_react6.useCallback)(function() {\n dispatch({\n type: FunctionReset\n });\n }, [dispatch]);\n return {\n getSelectedItemProps,\n getDropdownProps,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n setActiveIndex,\n reset,\n selectedItems,\n activeIndex\n };\n}\n\n// node_modules/@udecode/plate-combobox/dist/index.es.js\nvar createComboboxStore = (state) => createStore3(`combobox-${state.id}`)(state);\nvar comboboxStore = createStore3(\"combobox\")({\n activeId: null,\n byId: {},\n highlightedIndex: 0,\n items: [],\n filteredItems: [],\n targetRange: null,\n text: null\n}).extendActions((set, get3) => ({\n setComboboxById: (state) => {\n if (get3.byId()[state.id])\n return;\n set.state((draft) => {\n draft.byId[state.id] = createComboboxStore(state);\n });\n },\n open: (state) => {\n set.mergeState(state);\n },\n reset: () => {\n set.state((draft) => {\n draft.activeId = null;\n draft.highlightedIndex = 0;\n draft.items = [];\n draft.text = null;\n draft.targetRange = null;\n });\n }\n})).extendSelectors((state) => ({\n isOpen: () => !!state.activeId\n}));\nvar useComboboxSelectors = comboboxStore.use;\nvar comboboxSelectors = comboboxStore.get;\nvar comboboxActions = comboboxStore.set;\nvar getComboboxStoreById = (id) => id ? comboboxSelectors.byId()[id] : null;\nvar useActiveComboboxStore = () => {\n const activeId = useComboboxSelectors.activeId();\n const comboboxes = useComboboxSelectors.byId();\n return activeId ? comboboxes[activeId] : null;\n};\nvar getTextFromTrigger = (editor, {\n at,\n trigger,\n searchPattern = `\\\\S+`\n}) => {\n const escapedTrigger = escapeRegExp(trigger);\n const triggerRegex = new RegExp(`(?:^|\\\\s)${escapedTrigger}`);\n let start3 = at;\n let end3;\n while (true) {\n end3 = start3;\n if (!start3)\n break;\n start3 = Editor.before(editor, start3);\n const charRange = start3 && Editor.range(editor, start3, end3);\n const charText = getText(editor, charRange);\n if (!charText.match(searchPattern)) {\n start3 = end3;\n break;\n }\n }\n const range = start3 && Editor.range(editor, start3, at);\n const text5 = getText(editor, range);\n if (!range || !text5.match(triggerRegex))\n return;\n return {\n range,\n textAfterTrigger: text5.substring(trigger.length)\n };\n};\nvar onChangeCombobox = (editor) => () => {\n const byId = comboboxSelectors.byId();\n const activeId = comboboxSelectors.activeId();\n let shouldClose = true;\n for (const store of Object.values(byId)) {\n var _store$get$controlled, _store$get, _store$get$searchPatt, _store$get2;\n const id = store.get.id();\n const controlled = (_store$get$controlled = (_store$get = store.get).controlled) === null || _store$get$controlled === void 0 ? void 0 : _store$get$controlled.call(_store$get);\n if (controlled) {\n if (activeId === id) {\n shouldClose = false;\n break;\n } else {\n continue;\n }\n }\n const {\n selection\n } = editor;\n if (!selection || !isCollapsed(selection)) {\n continue;\n }\n const trigger = store.get.trigger();\n const searchPattern = (_store$get$searchPatt = (_store$get2 = store.get).searchPattern) === null || _store$get$searchPatt === void 0 ? void 0 : _store$get$searchPatt.call(_store$get2);\n const isCursorAfterTrigger = getTextFromTrigger(editor, {\n at: Range.start(selection),\n trigger,\n searchPattern\n });\n if (!isCursorAfterTrigger) {\n continue;\n }\n const {\n range,\n textAfterTrigger\n } = isCursorAfterTrigger;\n comboboxActions.open({\n activeId: id,\n text: textAfterTrigger,\n targetRange: range\n });\n shouldClose = false;\n break;\n }\n if (shouldClose && comboboxSelectors.isOpen()) {\n comboboxActions.reset();\n }\n};\nvar getNextNonDisabledIndex2 = (moveAmount, baseIndex, itemCount, getItemNodeFromIndex, circular) => {\n const currentElementNode = getItemNodeFromIndex(baseIndex);\n if (!currentElementNode || !currentElementNode.hasAttribute(\"disabled\")) {\n return baseIndex;\n }\n if (moveAmount > 0) {\n for (let index7 = baseIndex + 1; index7 < itemCount; index7++) {\n if (!getItemNodeFromIndex(index7).hasAttribute(\"disabled\")) {\n return index7;\n }\n }\n } else {\n for (let index7 = baseIndex - 1; index7 >= 0; index7--) {\n if (!getItemNodeFromIndex(index7).hasAttribute(\"disabled\")) {\n return index7;\n }\n }\n }\n if (circular) {\n return moveAmount > 0 ? getNextNonDisabledIndex2(1, 0, itemCount, getItemNodeFromIndex, false) : getNextNonDisabledIndex2(-1, itemCount - 1, itemCount, getItemNodeFromIndex, false);\n }\n return -1;\n};\nvar getNextWrappingIndex2 = (moveAmount, baseIndex, itemCount, getItemNodeFromIndex, circular = true) => {\n if (itemCount === 0) {\n return -1;\n }\n const itemsLastIndex = itemCount - 1;\n if (typeof baseIndex !== \"number\" || baseIndex < 0 || baseIndex >= itemCount) {\n baseIndex = moveAmount > 0 ? -1 : itemsLastIndex + 1;\n }\n let newIndex = baseIndex + moveAmount;\n if (newIndex < 0) {\n newIndex = circular ? itemsLastIndex : 0;\n } else if (newIndex > itemsLastIndex) {\n newIndex = circular ? 0 : itemsLastIndex;\n }\n const nonDisabledNewIndex = getNextNonDisabledIndex2(moveAmount, newIndex, itemCount, getItemNodeFromIndex, circular);\n if (nonDisabledNewIndex === -1) {\n return baseIndex >= itemCount ? -1 : baseIndex;\n }\n return nonDisabledNewIndex;\n};\nvar onKeyDownCombobox = (editor) => (event) => {\n const {\n highlightedIndex,\n filteredItems,\n activeId\n } = comboboxSelectors.state();\n const isOpen = comboboxSelectors.isOpen();\n if (!isOpen)\n return;\n const store = getComboboxStoreById(activeId);\n if (!store)\n return;\n const onSelectItem = store.get.onSelectItem();\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const newIndex = getNextWrappingIndex2(1, highlightedIndex, filteredItems.length, () => {\n }, true);\n comboboxActions.highlightedIndex(newIndex);\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const newIndex = getNextWrappingIndex2(-1, highlightedIndex, filteredItems.length, () => {\n }, true);\n comboboxActions.highlightedIndex(newIndex);\n return;\n }\n if (event.key === \"Escape\") {\n event.preventDefault();\n comboboxActions.reset();\n return;\n }\n if ([\"Tab\", \"Enter\"].includes(event.key)) {\n event.preventDefault();\n event.stopPropagation();\n if (filteredItems[highlightedIndex]) {\n onSelectItem === null || onSelectItem === void 0 ? void 0 : onSelectItem(editor, filteredItems[highlightedIndex]);\n }\n }\n};\nvar KEY_COMBOBOX = \"combobox\";\nvar createComboboxPlugin = createPluginFactory({\n key: KEY_COMBOBOX,\n handlers: {\n onChange: onChangeCombobox,\n onKeyDown: onKeyDownCombobox\n }\n});\nvar useComboboxControls = () => {\n const isOpen = useComboboxSelectors.isOpen();\n const highlightedIndex = useComboboxSelectors.highlightedIndex();\n const filteredItems = useComboboxSelectors.filteredItems();\n const {\n closeMenu,\n getMenuProps,\n getComboboxProps,\n getInputProps,\n getItemProps\n } = useCombobox({\n isOpen,\n highlightedIndex,\n items: filteredItems,\n circularNavigation: true\n });\n getMenuProps({}, {\n suppressRefError: true\n });\n getComboboxProps({}, {\n suppressRefError: true\n });\n getInputProps({}, {\n suppressRefError: true\n });\n return (0, import_react7.useMemo)(() => ({\n closeMenu,\n getMenuProps,\n getItemProps\n }), [closeMenu, getItemProps, getMenuProps]);\n};\n\n// node_modules/@udecode/plate-find-replace/dist/index.es.js\nvar decorateFindReplace = (editor, {\n key,\n type\n}) => ([node, path]) => {\n const ranges = [];\n const {\n search\n } = editor.pluginsByKey[key].options;\n if (!search || !Text.isText(node)) {\n return ranges;\n }\n const {\n text: text5\n } = node;\n const parts = text5.toLowerCase().split(search.toLowerCase());\n let offset3 = 0;\n parts.forEach((part, i3) => {\n if (i3 !== 0) {\n ranges.push({\n anchor: {\n path,\n offset: offset3 - search.length\n },\n focus: {\n path,\n offset: offset3\n },\n search,\n [type]: true\n });\n }\n offset3 = offset3 + part.length + search.length;\n });\n return ranges;\n};\nvar MARK_SEARCH_HIGHLIGHT = \"search_highlight\";\nvar createFindReplacePlugin = createPluginFactory({\n key: MARK_SEARCH_HIGHLIGHT,\n isLeaf: true,\n decorate: decorateFindReplace\n});\n\n// node_modules/@udecode/plate-font/dist/index.es.js\nvar MARK_BG_COLOR = \"backgroundColor\";\nvar createFontBackgroundColorPlugin = createPluginFactory({\n key: MARK_BG_COLOR,\n inject: {\n props: {\n nodeKey: MARK_BG_COLOR\n }\n },\n then: (editor, {\n type\n }) => ({\n deserializeHtml: {\n isLeaf: true,\n getNode: (element4) => ({\n [type]: element4.style.backgroundColor\n }),\n rules: [{\n validStyle: {\n backgroundColor: \"*\"\n }\n }]\n }\n })\n});\nvar MARK_COLOR = \"color\";\nvar createFontColorPlugin = createPluginFactory({\n key: MARK_COLOR,\n inject: {\n props: {\n nodeKey: MARK_COLOR,\n defaultNodeValue: \"black\"\n }\n },\n then: (editor, {\n type\n }) => ({\n deserializeHtml: {\n isLeaf: true,\n getNode(element4) {\n if (element4.style.color) {\n return {\n [type]: element4.style.color\n };\n }\n },\n rules: [{\n validStyle: {\n color: \"*\"\n }\n }]\n }\n })\n});\nvar MARK_FONT_FAMILY = \"fontFamily\";\nvar createFontFamilyPlugin = createPluginFactory({\n key: MARK_FONT_FAMILY,\n inject: {\n props: {\n nodeKey: MARK_FONT_FAMILY\n }\n },\n then: (editor, {\n type\n }) => ({\n deserializeHtml: {\n isLeaf: true,\n getNode: (element4) => ({\n [type]: element4.style.fontFamily\n }),\n rules: [{\n validStyle: {\n fontFamily: \"*\"\n }\n }]\n }\n })\n});\nvar MARK_FONT_SIZE = \"fontSize\";\nvar createFontSizePlugin = createPluginFactory({\n key: MARK_FONT_SIZE,\n inject: {\n props: {\n nodeKey: MARK_FONT_SIZE\n }\n },\n then: (editor, {\n type\n }) => ({\n deserializeHtml: {\n isLeaf: true,\n getNode: (element4) => ({\n [type]: element4.style.fontSize\n }),\n rules: [{\n validStyle: {\n fontSize: \"*\"\n }\n }]\n }\n })\n});\nvar MARK_FONT_WEIGHT = \"fontWeight\";\nvar createFontWeightPlugin = createPluginFactory({\n key: MARK_FONT_WEIGHT,\n inject: {\n props: {\n nodeKey: MARK_FONT_WEIGHT\n }\n },\n then: (editor, {\n type\n }) => ({\n deserializeHtml: {\n isLeaf: true,\n getNode: (element4) => ({\n [type]: element4.style.fontWeight\n }),\n rules: [{\n validStyle: {\n fontWeight: \"*\"\n }\n }]\n }\n })\n});\n\n// node_modules/@udecode/plate-highlight/dist/index.es.js\nvar MARK_HIGHLIGHT = \"highlight\";\nvar createHighlightPlugin = createPluginFactory({\n key: MARK_HIGHLIGHT,\n isLeaf: true,\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n deserializeHtml: {\n rules: [{\n validNodeName: [\"MARK\"]\n }]\n },\n options: {\n hotkey: \"mod+shift+h\"\n }\n});\n\n// node_modules/@udecode/plate-horizontal-rule/dist/index.es.js\nvar ELEMENT_HR = \"hr\";\nvar createHorizontalRulePlugin = createPluginFactory({\n key: ELEMENT_HR,\n isElement: true,\n isVoid: true,\n deserializeHtml: {\n rules: [{\n validNodeName: \"HR\"\n }]\n }\n});\n\n// node_modules/@udecode/plate-image/dist/index.es.js\nvar insertImage = (editor, url) => {\n const text5 = {\n text: \"\"\n };\n const image2 = {\n type: getPluginType(editor, ELEMENT_IMAGE),\n url,\n children: [text5]\n };\n insertNodes(editor, image2);\n};\nvar imageExtensions = [\"ase\", \"art\", \"bmp\", \"blp\", \"cd5\", \"cit\", \"cpt\", \"cr2\", \"cut\", \"dds\", \"dib\", \"djvu\", \"egt\", \"exif\", \"gif\", \"gpl\", \"grf\", \"icns\", \"ico\", \"iff\", \"jng\", \"jpeg\", \"jpg\", \"jfif\", \"jp2\", \"jps\", \"lbm\", \"max\", \"miff\", \"mng\", \"msp\", \"nitf\", \"ota\", \"pbm\", \"pc1\", \"pc2\", \"pc3\", \"pcf\", \"pcx\", \"pdn\", \"pgm\", \"PI1\", \"PI2\", \"PI3\", \"pict\", \"pct\", \"pnm\", \"pns\", \"ppm\", \"psb\", \"psd\", \"pdd\", \"psp\", \"px\", \"pxm\", \"pxr\", \"qfx\", \"raw\", \"rle\", \"sct\", \"sgi\", \"rgb\", \"int\", \"bw\", \"tga\", \"tiff\", \"tif\", \"vtf\", \"xbm\", \"xcf\", \"xpm\", \"3dv\", \"amf\", \"ai\", \"awg\", \"cgm\", \"cdr\", \"cmx\", \"dxf\", \"e2d\", \"egt\", \"eps\", \"fs\", \"gbr\", \"odg\", \"svg\", \"stl\", \"vrml\", \"x3d\", \"sxd\", \"v2d\", \"vnd\", \"wmf\", \"emf\", \"art\", \"xar\", \"png\", \"webp\", \"jxr\", \"hdp\", \"wdp\", \"cur\", \"ecw\", \"iff\", \"lbm\", \"liff\", \"nrrd\", \"pam\", \"pcx\", \"pgf\", \"sgi\", \"rgb\", \"rgba\", \"bw\", \"int\", \"inta\", \"sid\", \"ras\", \"sun\", \"tga\"];\nvar isImageUrl = (url) => {\n if (!isUrl(url))\n return false;\n const ext = new URL(url).pathname.split(\".\").pop();\n return imageExtensions.includes(ext);\n};\nvar withImageUpload = (editor, plugin2) => {\n const {\n options: {\n uploadImage\n }\n } = plugin2;\n const {\n insertData\n } = editor;\n editor.insertData = (dataTransfer5) => {\n const text5 = dataTransfer5.getData(\"text/plain\");\n const {\n files: files2\n } = dataTransfer5;\n if (files2 && files2.length > 0) {\n const injectedPlugins = getInjectedPlugins(editor, plugin2);\n if (!pipeInsertDataQuery(injectedPlugins, {\n data: text5,\n dataTransfer: dataTransfer5\n })) {\n return insertData(dataTransfer5);\n }\n for (const file of files2) {\n const reader = new FileReader();\n const [mime] = file.type.split(\"/\");\n if (mime === \"image\") {\n reader.addEventListener(\"load\", async () => {\n if (!reader.result) {\n return;\n }\n const uploadedUrl = uploadImage ? await uploadImage(reader.result) : reader.result;\n insertImage(editor, uploadedUrl);\n });\n reader.readAsDataURL(file);\n }\n }\n } else if (isImageUrl(text5)) {\n insertImage(editor, text5);\n } else {\n insertData(dataTransfer5);\n }\n };\n return editor;\n};\nvar ELEMENT_IMAGE = \"img\";\nvar createImagePlugin = createPluginFactory({\n key: ELEMENT_IMAGE,\n isElement: true,\n isVoid: true,\n withOverrides: withImageUpload,\n then: (editor, {\n type\n }) => ({\n deserializeHtml: {\n rules: [{\n validNodeName: \"IMG\"\n }],\n getNode: (el) => ({\n type,\n url: el.getAttribute(\"src\")\n })\n }\n })\n});\n\n// node_modules/@udecode/plate-indent/dist/index.es.js\nvar setIndent = (editor, {\n offset: offset3 = 1,\n getNodesOptions,\n setNodesProps,\n unsetNodesProps = []\n}) => {\n const {\n nodeKey\n } = getPluginInjectProps(editor, KEY_INDENT);\n const _nodes = getNodes(editor, __spreadValues({\n block: true\n }, getNodesOptions));\n const nodes = Array.from(_nodes);\n withoutNormalizing(editor, () => {\n nodes.forEach(([node, path]) => {\n var _node, _setNodesProps;\n const blockIndent = (_node = node[nodeKey]) !== null && _node !== void 0 ? _node : 0;\n const newIndent = blockIndent + offset3;\n const props = (_setNodesProps = setNodesProps === null || setNodesProps === void 0 ? void 0 : setNodesProps({\n indent: newIndent\n })) !== null && _setNodesProps !== void 0 ? _setNodesProps : {};\n if (newIndent <= 0) {\n Transforms.unsetNodes(editor, [nodeKey, ...unsetNodesProps], {\n at: path\n });\n } else {\n setNodes(editor, __spreadValues({\n [nodeKey]: newIndent\n }, props), {\n at: path\n });\n }\n });\n });\n};\nvar indent = (editor, options) => {\n setIndent(editor, __spreadValues({\n offset: 1\n }, options));\n};\nvar outdent = (editor, options) => {\n setIndent(editor, __spreadValues({\n offset: -1\n }, options));\n};\nvar onKeyDownIndent = (editor) => (e2) => {\n if (e2.key === \"Tab\" && !e2.altKey && !e2.ctrlKey && !e2.metaKey) {\n e2.preventDefault();\n e2.shiftKey ? outdent(editor) : indent(editor);\n }\n};\nvar withIndent = (editor, {\n inject: {\n props: {\n validTypes\n } = {}\n },\n options: {\n indentMax\n }\n}) => {\n const {\n normalizeNode\n } = editor;\n editor.normalizeNode = ([node, path]) => {\n const element4 = node;\n const {\n type\n } = element4;\n if (type) {\n if (validTypes.includes(type)) {\n if (indentMax && element4.indent && element4.indent > indentMax) {\n setNodes(editor, {\n indent: indentMax\n }, {\n at: path\n });\n return;\n }\n } else if (element4.indent) {\n Transforms.unsetNodes(editor, \"indent\", {\n at: path\n });\n return;\n }\n }\n return normalizeNode([node, path]);\n };\n return editor;\n};\nvar KEY_INDENT = \"indent\";\nvar createIndentPlugin = createPluginFactory({\n key: KEY_INDENT,\n withOverrides: withIndent,\n handlers: {\n onKeyDown: onKeyDownIndent\n },\n options: {\n offset: 24,\n unit: \"px\"\n },\n then: (editor, {\n options: {\n offset: offset3,\n unit\n } = {}\n }) => ({\n inject: {\n props: {\n nodeKey: KEY_INDENT,\n styleKey: \"marginLeft\",\n validTypes: [getPluginType(editor, ELEMENT_DEFAULT)],\n transformNodeValue: ({\n nodeValue\n }) => nodeValue * offset3 + unit\n }\n }\n })\n});\nvar KEY_TEXT_INDENT = \"textIndent\";\nvar createTextIndentPlugin = createPluginFactory({\n key: KEY_TEXT_INDENT,\n options: {\n offset: 24,\n unit: \"px\"\n },\n then: (editor, {\n options: {\n offset: offset3,\n unit\n } = {}\n }) => ({\n inject: {\n props: {\n nodeKey: KEY_TEXT_INDENT,\n styleKey: \"textIndent\",\n validTypes: [getPluginType(editor, ELEMENT_DEFAULT)],\n transformNodeValue({\n nodeValue\n }) {\n return nodeValue * offset3 + unit;\n }\n }\n }\n })\n});\n\n// node_modules/@udecode/plate-indent-list/dist/index.es.js\nvar import_react8 = __toESM(require(\"react\"));\nfunction toVal2(mix) {\n var k4, y3, str = \"\";\n if (typeof mix === \"string\" || typeof mix === \"number\") {\n str += mix;\n } else if (typeof mix === \"object\") {\n if (Array.isArray(mix)) {\n for (k4 = 0; k4 < mix.length; k4++) {\n if (mix[k4]) {\n if (y3 = toVal2(mix[k4])) {\n str && (str += \" \");\n str += y3;\n }\n }\n }\n } else {\n for (k4 in mix) {\n if (mix[k4]) {\n str && (str += \" \");\n str += k4;\n }\n }\n }\n }\n return str;\n}\nfunction clsx() {\n var i3 = 0, tmp, x4, str = \"\";\n while (i3 < arguments.length) {\n if (tmp = arguments[i3++]) {\n if (x4 = toVal2(tmp)) {\n str && (str += \" \");\n str += x4;\n }\n }\n }\n return str;\n}\nvar ListStyleType;\n(function(ListStyleType2) {\n ListStyleType2[\"Armenian\"] = \"armenian\";\n ListStyleType2[\"Circle\"] = \"circle\";\n ListStyleType2[\"CjkIdeographic\"] = \"cjk-ideographic\";\n ListStyleType2[\"Decimal\"] = \"decimal\";\n ListStyleType2[\"DecimalLeadingZero\"] = \"decimal-leading-zero\";\n ListStyleType2[\"Disc\"] = \"disc\";\n ListStyleType2[\"Georgian\"] = \"georgian\";\n ListStyleType2[\"Hebrew\"] = \"hebrew\";\n ListStyleType2[\"Hiragana\"] = \"hiragana\";\n ListStyleType2[\"HiraganaIroha\"] = \"hiragana-iroha\";\n ListStyleType2[\"Katakana\"] = \"katakana\";\n ListStyleType2[\"KatakanaIroha\"] = \"katakana-iroha\";\n ListStyleType2[\"LowerAlpha\"] = \"lower-alpha\";\n ListStyleType2[\"LowerGreek\"] = \"lower-greek\";\n ListStyleType2[\"LowerLatin\"] = \"lower-latin\";\n ListStyleType2[\"LowerRoman\"] = \"lower-roman\";\n ListStyleType2[\"None\"] = \"none\";\n ListStyleType2[\"Square\"] = \"square\";\n ListStyleType2[\"UpperAlpha\"] = \"upper-alpha\";\n ListStyleType2[\"UpperLatin\"] = \"upper-latin\";\n ListStyleType2[\"UpperRoman\"] = \"upper-roman\";\n ListStyleType2[\"Initial\"] = \"initial\";\n ListStyleType2[\"Inherit\"] = \"inherit\";\n})(ListStyleType || (ListStyleType = {}));\nvar injectIndentListComponent = (props) => {\n const {\n element: element4\n } = props;\n if (element4[KEY_LIST_STYLE_TYPE]) {\n let className = clsx(`slate-${KEY_LIST_STYLE_TYPE}-${element4[KEY_LIST_STYLE_TYPE]}`);\n const style = {\n padding: 0,\n margin: 0,\n listStyleType: element4[KEY_LIST_STYLE_TYPE]\n };\n if ([ListStyleType.Disc, ListStyleType.Circle, ListStyleType.Square].includes(element4[KEY_LIST_STYLE_TYPE])) {\n className = clsx(className, \"slate-list-bullet\");\n return ({\n children\n }) => /* @__PURE__ */ import_react8.default.createElement(\"ul\", {\n style,\n className\n }, /* @__PURE__ */ import_react8.default.createElement(\"li\", null, children));\n }\n className = clsx(className, \"slate-list-number\");\n return ({\n children\n }) => /* @__PURE__ */ import_react8.default.createElement(\"ol\", {\n style,\n className,\n start: element4[KEY_LIST_START]\n }, /* @__PURE__ */ import_react8.default.createElement(\"li\", null, children));\n }\n};\nvar getSiblingIndentList = (editor, [node, path], {\n getPreviousEntry,\n getNextEntry,\n query,\n eqIndent = true,\n breakQuery,\n breakOnLowerIndent = true,\n breakOnEqIndentNeqListStyleType = true\n}) => {\n if (!getPreviousEntry && !getNextEntry)\n return;\n const getSiblingEntry = getNextEntry !== null && getNextEntry !== void 0 ? getNextEntry : getPreviousEntry;\n let nextEntry = getSiblingEntry([node, path]);\n while (true) {\n if (!nextEntry)\n return;\n const [nextNode, nextPath] = nextEntry;\n if (!nextNode[KEY_INDENT])\n return;\n if (breakQuery && breakQuery(nextNode))\n return;\n if (breakOnLowerIndent && nextNode[KEY_INDENT] < node[KEY_INDENT])\n return;\n if (breakOnEqIndentNeqListStyleType && nextNode[KEY_INDENT] === node[KEY_INDENT] && nextNode[KEY_LIST_STYLE_TYPE] !== node[KEY_LIST_STYLE_TYPE])\n return;\n let valid = !query || query(nextNode);\n if (valid) {\n valid = !eqIndent || nextNode[KEY_INDENT] === node[KEY_INDENT];\n if (valid)\n return [nextNode, nextPath];\n }\n nextEntry = getSiblingEntry(nextEntry);\n }\n};\nvar getNextIndentList = (editor, entry, options) => {\n return getSiblingIndentList(editor, entry, __spreadProps(__spreadValues({\n getNextEntry: ([, currPath]) => {\n const nextPath = Path.next(currPath);\n const nextNode = getNode(editor, nextPath);\n if (!nextNode)\n return;\n return [nextNode, nextPath];\n }\n }, options), {\n getPreviousEntry: void 0\n }));\n};\nvar getPreviousIndentList = (editor, entry, options) => {\n return getSiblingIndentList(editor, entry, __spreadProps(__spreadValues({\n getPreviousEntry: ([, currPath]) => {\n const prevPath = getPreviousPath(currPath);\n if (!prevPath)\n return;\n const prevNode = getNode(editor, prevPath);\n if (!prevNode)\n return;\n return [prevNode, prevPath];\n }\n }, options), {\n getNextEntry: void 0\n }));\n};\nvar normalizeFirstIndentListStart = (editor, [node, path]) => {\n if (isDefined(node[KEY_LIST_START])) {\n unsetNodes(editor, KEY_LIST_START, {\n at: path\n });\n return true;\n }\n};\nvar normalizeNextIndentListStart = (editor, entry, prevEntry) => {\n var _prevNode$KEY_LIST_ST, _node$KEY_LIST_START;\n const [node, path] = entry;\n const [prevNode] = prevEntry !== null && prevEntry !== void 0 ? prevEntry : [null];\n const prevListStart = (_prevNode$KEY_LIST_ST = prevNode === null || prevNode === void 0 ? void 0 : prevNode[KEY_LIST_START]) !== null && _prevNode$KEY_LIST_ST !== void 0 ? _prevNode$KEY_LIST_ST : 1;\n const currListStart = (_node$KEY_LIST_START = node[KEY_LIST_START]) !== null && _node$KEY_LIST_START !== void 0 ? _node$KEY_LIST_START : 1;\n const listStart = prevListStart + 1;\n if (currListStart !== listStart) {\n setNodes(editor, {\n [KEY_LIST_START]: listStart\n }, {\n at: path\n });\n return true;\n }\n return false;\n};\nvar normalizeIndentListStart = (editor, entry, options) => {\n return withoutNormalizing(editor, () => {\n const [node] = entry;\n const listStyleType = node[KEY_LIST_STYLE_TYPE];\n if (!listStyleType)\n return;\n let normalized = false;\n let prevEntry = getPreviousIndentList(editor, entry, options);\n if (!prevEntry) {\n normalized = normalizeFirstIndentListStart(editor, entry);\n if (!normalized)\n return;\n }\n let normalizeNext = true;\n let currEntry = entry;\n while (normalizeNext) {\n normalizeNext = normalizeNextIndentListStart(editor, currEntry, prevEntry) || normalized;\n if (normalizeNext)\n normalized = true;\n prevEntry = [getNode(editor, currEntry[1]), currEntry[1]];\n currEntry = getNextIndentList(editor, currEntry, options);\n if (!currEntry)\n break;\n }\n return normalized;\n });\n};\nvar normalizeIndentListNotIndented = (editor, [node, path]) => {\n if (!node[KEY_INDENT] && (node[KEY_LIST_STYLE_TYPE] || node[KEY_LIST_START])) {\n unsetNodes(editor, [KEY_LIST_STYLE_TYPE, KEY_LIST_START], {\n at: path\n });\n return true;\n }\n};\nvar normalizeIndentList = (editor, {\n getSiblingIndentListOptions\n} = {}) => {\n const {\n normalizeNode\n } = editor;\n return ([node, path]) => {\n const normalized = withoutNormalizing(editor, () => {\n if (normalizeIndentListNotIndented(editor, [node, path]))\n return true;\n if (normalizeIndentListStart(editor, [node, path], getSiblingIndentListOptions))\n return true;\n });\n if (normalized)\n return;\n return normalizeNode([node, path]);\n };\n};\nvar withIndentList = (editor, {\n options\n}) => {\n const {\n apply: apply2\n } = editor;\n const {\n getSiblingIndentListOptions\n } = options;\n editor.normalizeNode = normalizeIndentList(editor, options);\n editor.apply = (operation) => {\n const {\n path\n } = operation;\n let nodeBefore = null;\n if (operation.type === \"set_node\") {\n nodeBefore = getNode(editor, path);\n }\n if (operation.type === \"insert_node\") {\n const listStyleType = operation.node[KEY_LIST_STYLE_TYPE];\n if (listStyleType && [\"lower-roman\", \"upper-roman\"].includes(listStyleType)) {\n const prevNodeEntry = getPreviousIndentList(editor, [operation.node, path], __spreadValues({\n eqIndent: false,\n breakOnEqIndentNeqListStyleType: false\n }, getSiblingIndentListOptions));\n if (prevNodeEntry) {\n const prevListStyleType = prevNodeEntry[0][KEY_LIST_STYLE_TYPE];\n if (prevListStyleType === ListStyleType.LowerAlpha && listStyleType === ListStyleType.LowerRoman) {\n operation.node[KEY_LIST_STYLE_TYPE] = ListStyleType.LowerAlpha;\n } else if (prevListStyleType === ListStyleType.UpperAlpha && listStyleType === ListStyleType.UpperRoman) {\n operation.node[KEY_LIST_STYLE_TYPE] = ListStyleType.UpperAlpha;\n }\n }\n }\n }\n let nextIndentListPathRef = null;\n if (operation.type === \"merge_node\" && operation.properties[KEY_LIST_STYLE_TYPE]) {\n const node = getNode(editor, path);\n if (node) {\n const nextNodeEntryBefore = getNextIndentList(editor, [node, path], getSiblingIndentListOptions);\n if (nextNodeEntryBefore) {\n nextIndentListPathRef = Editor.pathRef(editor, nextNodeEntryBefore[1]);\n }\n }\n }\n apply2(operation);\n if (operation.type === \"merge_node\") {\n const {\n properties\n } = operation;\n if (properties[KEY_LIST_STYLE_TYPE]) {\n const node = getNode(editor, path);\n if (!node)\n return;\n normalizeIndentListStart(editor, [node, path], getSiblingIndentListOptions);\n if (nextIndentListPathRef) {\n const nextPath = nextIndentListPathRef.unref();\n if (nextPath) {\n const nextNode = getNode(editor, nextPath);\n if (nextNode) {\n normalizeIndentListStart(editor, [nextNode, nextPath], getSiblingIndentListOptions);\n }\n }\n }\n }\n }\n if (nodeBefore) {\n if (operation.type === \"set_node\") {\n const prevListStyleType = operation.properties[KEY_LIST_STYLE_TYPE];\n const listStyleType = operation.newProperties[KEY_LIST_STYLE_TYPE];\n if (prevListStyleType && !listStyleType) {\n const node = getNode(editor, path);\n if (!node)\n return;\n const nextNodeEntry = getNextIndentList(editor, [nodeBefore, path], getSiblingIndentListOptions);\n if (!nextNodeEntry)\n return;\n normalizeIndentListStart(editor, nextNodeEntry, getSiblingIndentListOptions);\n }\n if ((prevListStyleType || listStyleType) && prevListStyleType !== listStyleType) {\n const node = getNode(editor, path);\n if (!node)\n return;\n let nextNodeEntry = getNextIndentList(editor, [nodeBefore, path], getSiblingIndentListOptions);\n if (nextNodeEntry) {\n normalizeIndentListStart(editor, nextNodeEntry, getSiblingIndentListOptions);\n }\n nextNodeEntry = getNextIndentList(editor, [node, path], getSiblingIndentListOptions);\n if (nextNodeEntry) {\n normalizeIndentListStart(editor, nextNodeEntry, getSiblingIndentListOptions);\n }\n }\n const prevIndent = operation.properties[KEY_INDENT];\n const indent2 = operation.newProperties[KEY_INDENT];\n if (prevIndent !== indent2) {\n const node = getNode(editor, path);\n if (!node)\n return;\n let prevNodeEntry = getPreviousIndentList(editor, [nodeBefore, path], __spreadValues({\n eqIndent: false,\n breakOnLowerIndent: false,\n breakOnEqIndentNeqListStyleType: false\n }, getSiblingIndentListOptions));\n if (prevNodeEntry) {\n normalizeIndentListStart(editor, prevNodeEntry, getSiblingIndentListOptions);\n }\n prevNodeEntry = getPreviousIndentList(editor, [node, path], __spreadValues({\n eqIndent: false,\n breakOnLowerIndent: false,\n breakOnEqIndentNeqListStyleType: false\n }, getSiblingIndentListOptions));\n if (prevNodeEntry) {\n normalizeIndentListStart(editor, prevNodeEntry, getSiblingIndentListOptions);\n }\n let nextNodeEntry = getNextIndentList(editor, [nodeBefore, path], {\n eqIndent: false,\n breakOnLowerIndent: false,\n breakOnEqIndentNeqListStyleType: false\n });\n if (nextNodeEntry) {\n normalizeIndentListStart(editor, nextNodeEntry, getSiblingIndentListOptions);\n }\n nextNodeEntry = getNextIndentList(editor, [node, path], {\n eqIndent: false,\n breakOnLowerIndent: false,\n breakOnEqIndentNeqListStyleType: false\n });\n if (nextNodeEntry) {\n normalizeIndentListStart(editor, nextNodeEntry, getSiblingIndentListOptions);\n }\n }\n }\n }\n };\n return editor;\n};\nvar KEY_LIST_STYLE_TYPE = \"listStyleType\";\nvar KEY_LIST_START = \"listStart\";\nvar createIndentListPlugin = createPluginFactory({\n key: KEY_LIST_STYLE_TYPE,\n inject: {\n belowComponent: injectIndentListComponent\n },\n withOverrides: withIndentList\n});\n\n// node_modules/@udecode/plate-juice/dist/index.es.js\nvar import_juice = __toESM(require_client());\nvar KEY_JUICE = \"juice\";\nvar createJuicePlugin = createPluginFactory({\n key: KEY_JUICE,\n inject: {\n pluginsByKey: {\n [KEY_DESERIALIZE_HTML]: {\n editor: {\n insertData: {\n transformData: (data) => {\n let newData = data.replace(/\");\n }\n }\n function handleRule(rule) {\n var sel = rule[0];\n var style = rule[1];\n var selector = new utils2.Selector(sel);\n var parsedSelector = selector.parsed();\n if (!parsedSelector) {\n return;\n }\n var pseudoElementType = getPseudoElementType(parsedSelector);\n for (var i3 = 0; i3 < parsedSelector.length; ++i3) {\n var subSel = parsedSelector[i3];\n if (subSel.pseudos) {\n for (var j3 = 0; j3 < subSel.pseudos.length; ++j3) {\n var subSelPseudo = subSel.pseudos[j3];\n if (juiceClient.ignoredPseudos.indexOf(subSelPseudo.name) >= 0) {\n return;\n }\n }\n }\n }\n if (pseudoElementType) {\n var last2 = parsedSelector[parsedSelector.length - 1];\n var pseudos = last2.pseudos;\n last2.pseudos = filterElementPseudos(last2.pseudos);\n sel = parsedSelector.toString();\n last2.pseudos = pseudos;\n }\n var els;\n try {\n els = $2(sel);\n } catch (err) {\n return;\n }\n els.each(function() {\n var el = this;\n if (el.name && juiceClient.nonVisualElements.indexOf(el.name.toUpperCase()) >= 0) {\n return;\n }\n if (pseudoElementType) {\n var pseudoElPropName = \"pseudo\" + pseudoElementType;\n var pseudoEl = el[pseudoElPropName];\n if (!pseudoEl) {\n pseudoEl = el[pseudoElPropName] = $2(\"\").get(0);\n pseudoEl.pseudoElementType = pseudoElementType;\n pseudoEl.pseudoElementParent = el;\n pseudoEl.counterProps = el.counterProps;\n el[pseudoElPropName] = pseudoEl;\n }\n el = pseudoEl;\n }\n if (!el.styleProps) {\n el.styleProps = {};\n if ($2(el).attr(styleAttributeName)) {\n var cssText = \"* { \" + $2(el).attr(styleAttributeName) + \" } \";\n addProps(utils2.parseCSS(cssText)[0][1], new utils2.Selector(\"\";\n }, this.getStyleTags = function() {\n return e6.sealed ? _3(2) : e6._emitSheetCSS();\n }, this.getStyleElement = function() {\n var t7;\n if (e6.sealed)\n return _3(2);\n var n7 = ((t7 = {})[v3] = \"\", t7[\"data-styled-version\"] = \"5.3.5\", t7.dangerouslySetInnerHTML = { __html: e6.instance.toString() }, t7), o4 = k3();\n return o4 && (n7.nonce = o4), [r5.createElement(\"style\", c4({}, n7, { key: \"sc-0-0\" }))];\n }, this.seal = function() {\n e6.sealed = true;\n }, this.instance = new L3({ isServer: true }), this.sealed = false;\n }\n var t6 = e5.prototype;\n return t6.collectStyles = function(e6) {\n return this.sealed ? _3(2) : r5.createElement(ae2, { sheet: this.instance }, e6);\n }, t6.interleaveWithNodeStream = function(e6) {\n return _3(3);\n }, e5;\n }();\n var Be2 = { StyleSheet: L3, masterSheet: re2 };\n typeof navigator != \"undefined\" && navigator.product === \"ReactNative\" && console.warn(\"It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native\"), typeof window != \"undefined\" && (window[\"__styled-components-init__\"] = window[\"__styled-components-init__\"] || 0, window[\"__styled-components-init__\"] === 1 && console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.\"), window[\"__styled-components-init__\"] += 1), exports2.ServerStyleSheet = Me2, exports2.StyleSheetConsumer = te2, exports2.StyleSheetContext = ee2, exports2.StyleSheetManager = ae2, exports2.ThemeConsumer = De2, exports2.ThemeContext = Re2, exports2.ThemeProvider = function(e5) {\n var t6 = n6.useContext(Re2), o4 = n6.useMemo(function() {\n return function(e6, t7) {\n if (!e6)\n return _3(14);\n if (f4(e6)) {\n var n7 = e6(t7);\n return n7 !== null && !Array.isArray(n7) && typeof n7 == \"object\" ? n7 : _3(7);\n }\n return Array.isArray(e6) || typeof e6 != \"object\" ? _3(8) : t7 ? c4({}, t7, {}, e6) : e6;\n }(e5.theme, t6);\n }, [e5.theme, t6]);\n return e5.children ? r5.createElement(Re2.Provider, { value: o4 }, e5.children) : null;\n }, exports2.__PRIVATE__ = Be2, exports2.createGlobalStyle = function(e5) {\n for (var t6 = arguments.length, o4 = new Array(t6 > 1 ? t6 - 1 : 0), s4 = 1; s4 < t6; s4++)\n o4[s4 - 1] = arguments[s4];\n var i4 = ve2.apply(void 0, [e5].concat(o4)), a6 = \"sc-global-\" + Ce2(JSON.stringify(i4)), u5 = new Ve2(i4, a6);\n function l5(e6) {\n var t7 = se2(), o5 = ie2(), s5 = n6.useContext(Re2), c5 = n6.useRef(t7.allocateGSInstance(a6)).current;\n return r5.Children.count(e6.children) && console.warn(\"The global style component \" + a6 + \" was given child JSX. createGlobalStyle does not render children.\"), i4.some(function(e7) {\n return typeof e7 == \"string\" && e7.indexOf(\"@import\") !== -1;\n }) && console.warn(\"Please do not use @import CSS syntax in createGlobalStyle at this time, as the CSSOM APIs we use in production do not handle it well. Instead, we recommend using a library such as react-helmet to inject a typical meta tag to the stylesheet, or simply embedding it manually in your index.html section for a simpler app.\"), t7.server && d4(c5, e6, t7, s5, o5), n6.useLayoutEffect(function() {\n if (!t7.server)\n return d4(c5, e6, t7, s5, o5), function() {\n return u5.removeStyles(c5, t7);\n };\n }, [c5, e6, t7, s5, o5]), null;\n }\n function d4(e6, t7, n7, r6, o5) {\n if (u5.isStatic)\n u5.renderStyles(e6, w3, n7, o5);\n else {\n var s5 = c4({}, t7, { theme: Ee2(t7, r6, l5.defaultProps) });\n u5.renderStyles(e6, s5, n7, o5);\n }\n }\n return we2(a6), r5.memo(l5);\n }, exports2.css = ve2, exports2.default = ke2, exports2.isStyledComponent = y3, exports2.keyframes = function(e5) {\n typeof navigator != \"undefined\" && navigator.product === \"ReactNative\" && console.warn(\"`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.\");\n for (var t6 = arguments.length, n7 = new Array(t6 > 1 ? t6 - 1 : 0), r6 = 1; r6 < t6; r6++)\n n7[r6 - 1] = arguments[r6];\n var o4 = ve2.apply(void 0, [e5].concat(n7)).join(\"\"), s4 = Ce2(o4);\n return new ue2(s4, o4);\n }, exports2.useTheme = function() {\n return n6.useContext(Re2);\n }, exports2.version = \"5.3.5\", exports2.withTheme = function(e5) {\n var t6 = r5.forwardRef(function(t7, o4) {\n var s4 = n6.useContext(Re2), i4 = e5.defaultProps, a6 = Ee2(t7, s4, i4);\n return a6 === void 0 && console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"' + m3(e5) + '\"'), r5.createElement(e5, c4({}, t7, { theme: a6, ref: o4 }));\n });\n return u4(t6, e5), t6.displayName = \"WithTheme(\" + m3(e5) + \")\", t6;\n };\n }\n});\n\n// node_modules/react-fast-compare/index.js\nvar require_react_fast_compare = __commonJS({\n \"node_modules/react-fast-compare/index.js\"(exports2, module2) {\n var hasElementType = typeof Element !== \"undefined\";\n var hasMap = typeof Map === \"function\";\n var hasSet = typeof Set === \"function\";\n var hasArrayBuffer = typeof ArrayBuffer === \"function\" && !!ArrayBuffer.isView;\n function equal2(a5, b3) {\n if (a5 === b3)\n return true;\n if (a5 && b3 && typeof a5 == \"object\" && typeof b3 == \"object\") {\n if (a5.constructor !== b3.constructor)\n return false;\n var length, i3, keys3;\n if (Array.isArray(a5)) {\n length = a5.length;\n if (length != b3.length)\n return false;\n for (i3 = length; i3-- !== 0; )\n if (!equal2(a5[i3], b3[i3]))\n return false;\n return true;\n }\n var it;\n if (hasMap && a5 instanceof Map && b3 instanceof Map) {\n if (a5.size !== b3.size)\n return false;\n it = a5.entries();\n while (!(i3 = it.next()).done)\n if (!b3.has(i3.value[0]))\n return false;\n it = a5.entries();\n while (!(i3 = it.next()).done)\n if (!equal2(i3.value[1], b3.get(i3.value[0])))\n return false;\n return true;\n }\n if (hasSet && a5 instanceof Set && b3 instanceof Set) {\n if (a5.size !== b3.size)\n return false;\n it = a5.entries();\n while (!(i3 = it.next()).done)\n if (!b3.has(i3.value[0]))\n return false;\n return true;\n }\n if (hasArrayBuffer && ArrayBuffer.isView(a5) && ArrayBuffer.isView(b3)) {\n length = a5.length;\n if (length != b3.length)\n return false;\n for (i3 = length; i3-- !== 0; )\n if (a5[i3] !== b3[i3])\n return false;\n return true;\n }\n if (a5.constructor === RegExp)\n return a5.source === b3.source && a5.flags === b3.flags;\n if (a5.valueOf !== Object.prototype.valueOf)\n return a5.valueOf() === b3.valueOf();\n if (a5.toString !== Object.prototype.toString)\n return a5.toString() === b3.toString();\n keys3 = Object.keys(a5);\n length = keys3.length;\n if (length !== Object.keys(b3).length)\n return false;\n for (i3 = length; i3-- !== 0; )\n if (!Object.prototype.hasOwnProperty.call(b3, keys3[i3]))\n return false;\n if (hasElementType && a5 instanceof Element)\n return false;\n for (i3 = length; i3-- !== 0; ) {\n if ((keys3[i3] === \"_owner\" || keys3[i3] === \"__v\" || keys3[i3] === \"__o\") && a5.$$typeof) {\n continue;\n }\n if (!equal2(a5[keys3[i3]], b3[keys3[i3]]))\n return false;\n }\n return true;\n }\n return a5 !== a5 && b3 !== b3;\n }\n module2.exports = function isEqual2(a5, b3) {\n try {\n return equal2(a5, b3);\n } catch (error) {\n if ((error.message || \"\").match(/stack|recursion/i)) {\n console.warn(\"react-fast-compare cannot handle circular refs\");\n return false;\n }\n throw error;\n }\n };\n }\n});\n\n// node_modules/fast-deep-equal/index.js\nvar require_fast_deep_equal = __commonJS({\n \"node_modules/fast-deep-equal/index.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = function equal2(a5, b3) {\n if (a5 === b3)\n return true;\n if (a5 && b3 && typeof a5 == \"object\" && typeof b3 == \"object\") {\n if (a5.constructor !== b3.constructor)\n return false;\n var length, i3, keys3;\n if (Array.isArray(a5)) {\n length = a5.length;\n if (length != b3.length)\n return false;\n for (i3 = length; i3-- !== 0; )\n if (!equal2(a5[i3], b3[i3]))\n return false;\n return true;\n }\n if (a5.constructor === RegExp)\n return a5.source === b3.source && a5.flags === b3.flags;\n if (a5.valueOf !== Object.prototype.valueOf)\n return a5.valueOf() === b3.valueOf();\n if (a5.toString !== Object.prototype.toString)\n return a5.toString() === b3.toString();\n keys3 = Object.keys(a5);\n length = keys3.length;\n if (length !== Object.keys(b3).length)\n return false;\n for (i3 = length; i3-- !== 0; )\n if (!Object.prototype.hasOwnProperty.call(b3, keys3[i3]))\n return false;\n for (i3 = length; i3-- !== 0; ) {\n var key = keys3[i3];\n if (!equal2(a5[key], b3[key]))\n return false;\n }\n return true;\n }\n return a5 !== a5 && b3 !== b3;\n };\n }\n});\n\n// node_modules/lodash.debounce/index.js\nvar require_lodash = __commonJS({\n \"node_modules/lodash.debounce/index.js\"(exports2, module2) {\n var FUNC_ERROR_TEXT4 = \"Expected a function\";\n var NAN2 = 0 / 0;\n var symbolTag4 = \"[object Symbol]\";\n var reTrim = /^\\s+|\\s+$/g;\n var reIsBadHex2 = /^[-+]0x[0-9a-f]+$/i;\n var reIsBinary2 = /^0b[01]+$/i;\n var reIsOctal2 = /^0o[0-7]+$/i;\n var freeParseInt2 = parseInt;\n var freeGlobal5 = typeof global == \"object\" && global && global.Object === Object && global;\n var freeSelf5 = typeof self == \"object\" && self && self.Object === Object && self;\n var root5 = freeGlobal5 || freeSelf5 || Function(\"return this\")();\n var objectProto5 = Object.prototype;\n var objectToString5 = objectProto5.toString;\n var nativeMax3 = Math.max;\n var nativeMin2 = Math.min;\n var now2 = function() {\n return root5.Date.now();\n };\n function debounce8(func, wait, options) {\n var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\n if (typeof func != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT4);\n }\n wait = toNumber2(wait) || 0;\n if (isObject7(options)) {\n leading = !!options.leading;\n maxing = \"maxWait\" in options;\n maxWait = maxing ? nativeMax3(toNumber2(options.maxWait) || 0, wait) : maxWait;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs, thisArg = lastThis;\n lastArgs = lastThis = void 0;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n lastInvokeTime = time;\n timerId = setTimeout(timerExpired, wait);\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, result2 = wait - timeSinceLastCall;\n return maxing ? nativeMin2(result2, maxWait - timeSinceLastInvoke) : result2;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\n return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now2();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = void 0;\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = void 0;\n return result;\n }\n function cancel() {\n if (timerId !== void 0) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = void 0;\n }\n function flush() {\n return timerId === void 0 ? result : trailingEdge(now2());\n }\n function debounced() {\n var time = now2(), isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === void 0) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === void 0) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n function isObject7(value) {\n var type = typeof value;\n return !!value && (type == \"object\" || type == \"function\");\n }\n function isObjectLike5(value) {\n return !!value && typeof value == \"object\";\n }\n function isSymbol3(value) {\n return typeof value == \"symbol\" || isObjectLike5(value) && objectToString5.call(value) == symbolTag4;\n }\n function toNumber2(value) {\n if (typeof value == \"number\") {\n return value;\n }\n if (isSymbol3(value)) {\n return NAN2;\n }\n if (isObject7(value)) {\n var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n value = isObject7(other) ? other + \"\" : other;\n }\n if (typeof value != \"string\") {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, \"\");\n var isBinary = reIsBinary2.test(value);\n return isBinary || reIsOctal2.test(value) ? freeParseInt2(value.slice(2), isBinary ? 2 : 8) : reIsBadHex2.test(value) ? NAN2 : +value;\n }\n module2.exports = debounce8;\n }\n});\n\n// node_modules/lodash.throttle/index.js\nvar require_lodash2 = __commonJS({\n \"node_modules/lodash.throttle/index.js\"(exports2, module2) {\n var FUNC_ERROR_TEXT4 = \"Expected a function\";\n var NAN2 = 0 / 0;\n var symbolTag4 = \"[object Symbol]\";\n var reTrim = /^\\s+|\\s+$/g;\n var reIsBadHex2 = /^[-+]0x[0-9a-f]+$/i;\n var reIsBinary2 = /^0b[01]+$/i;\n var reIsOctal2 = /^0o[0-7]+$/i;\n var freeParseInt2 = parseInt;\n var freeGlobal5 = typeof global == \"object\" && global && global.Object === Object && global;\n var freeSelf5 = typeof self == \"object\" && self && self.Object === Object && self;\n var root5 = freeGlobal5 || freeSelf5 || Function(\"return this\")();\n var objectProto5 = Object.prototype;\n var objectToString5 = objectProto5.toString;\n var nativeMax3 = Math.max;\n var nativeMin2 = Math.min;\n var now2 = function() {\n return root5.Date.now();\n };\n function debounce8(func, wait, options) {\n var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\n if (typeof func != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT4);\n }\n wait = toNumber2(wait) || 0;\n if (isObject7(options)) {\n leading = !!options.leading;\n maxing = \"maxWait\" in options;\n maxWait = maxing ? nativeMax3(toNumber2(options.maxWait) || 0, wait) : maxWait;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs, thisArg = lastThis;\n lastArgs = lastThis = void 0;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n lastInvokeTime = time;\n timerId = setTimeout(timerExpired, wait);\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, result2 = wait - timeSinceLastCall;\n return maxing ? nativeMin2(result2, maxWait - timeSinceLastInvoke) : result2;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\n return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now2();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = void 0;\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = void 0;\n return result;\n }\n function cancel() {\n if (timerId !== void 0) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = void 0;\n }\n function flush() {\n return timerId === void 0 ? result : trailingEdge(now2());\n }\n function debounced() {\n var time = now2(), isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === void 0) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === void 0) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n function throttle3(func, wait, options) {\n var leading = true, trailing = true;\n if (typeof func != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT4);\n }\n if (isObject7(options)) {\n leading = \"leading\" in options ? !!options.leading : leading;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n return debounce8(func, wait, {\n \"leading\": leading,\n \"maxWait\": wait,\n \"trailing\": trailing\n });\n }\n function isObject7(value) {\n var type = typeof value;\n return !!value && (type == \"object\" || type == \"function\");\n }\n function isObjectLike5(value) {\n return !!value && typeof value == \"object\";\n }\n function isSymbol3(value) {\n return typeof value == \"symbol\" || isObjectLike5(value) && objectToString5.call(value) == symbolTag4;\n }\n function toNumber2(value) {\n if (typeof value == \"number\") {\n return value;\n }\n if (isSymbol3(value)) {\n return NAN2;\n }\n if (isObject7(value)) {\n var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n value = isObject7(other) ? other + \"\" : other;\n }\n if (typeof value != \"string\") {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, \"\");\n var isBinary = reIsBinary2.test(value);\n return isBinary || reIsOctal2.test(value) ? freeParseInt2(value.slice(2), isBinary ? 2 : 8) : reIsBadHex2.test(value) ? NAN2 : +value;\n }\n module2.exports = throttle3;\n }\n});\n\n// node_modules/lodash/isArray.js\nvar require_isArray = __commonJS({\n \"node_modules/lodash/isArray.js\"(exports2, module2) {\n var isArray8 = Array.isArray;\n module2.exports = isArray8;\n }\n});\n\n// node_modules/lodash/_isKey.js\nvar require_isKey = __commonJS({\n \"node_modules/lodash/_isKey.js\"(exports2, module2) {\n var isArray8 = require_isArray();\n var isSymbol3 = require_isSymbol();\n var reIsDeepProp2 = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/;\n var reIsPlainProp2 = /^\\w*$/;\n function isKey2(value, object) {\n if (isArray8(value)) {\n return false;\n }\n var type = typeof value;\n if (type == \"number\" || type == \"symbol\" || type == \"boolean\" || value == null || isSymbol3(value)) {\n return true;\n }\n return reIsPlainProp2.test(value) || !reIsDeepProp2.test(value) || object != null && value in Object(object);\n }\n module2.exports = isKey2;\n }\n});\n\n// node_modules/lodash/isFunction.js\nvar require_isFunction = __commonJS({\n \"node_modules/lodash/isFunction.js\"(exports2, module2) {\n var baseGetTag5 = require_baseGetTag();\n var isObject7 = require_isObject();\n var asyncTag4 = \"[object AsyncFunction]\";\n var funcTag4 = \"[object Function]\";\n var genTag4 = \"[object GeneratorFunction]\";\n var proxyTag4 = \"[object Proxy]\";\n function isFunction4(value) {\n if (!isObject7(value)) {\n return false;\n }\n var tag = baseGetTag5(value);\n return tag == funcTag4 || tag == genTag4 || tag == asyncTag4 || tag == proxyTag4;\n }\n module2.exports = isFunction4;\n }\n});\n\n// node_modules/lodash/_coreJsData.js\nvar require_coreJsData = __commonJS({\n \"node_modules/lodash/_coreJsData.js\"(exports2, module2) {\n var root5 = require_root();\n var coreJsData4 = root5[\"__core-js_shared__\"];\n module2.exports = coreJsData4;\n }\n});\n\n// node_modules/lodash/_isMasked.js\nvar require_isMasked = __commonJS({\n \"node_modules/lodash/_isMasked.js\"(exports2, module2) {\n var coreJsData4 = require_coreJsData();\n var maskSrcKey4 = function() {\n var uid = /[^.]+$/.exec(coreJsData4 && coreJsData4.keys && coreJsData4.keys.IE_PROTO || \"\");\n return uid ? \"Symbol(src)_1.\" + uid : \"\";\n }();\n function isMasked4(func) {\n return !!maskSrcKey4 && maskSrcKey4 in func;\n }\n module2.exports = isMasked4;\n }\n});\n\n// node_modules/lodash/_toSource.js\nvar require_toSource = __commonJS({\n \"node_modules/lodash/_toSource.js\"(exports2, module2) {\n var funcProto4 = Function.prototype;\n var funcToString4 = funcProto4.toString;\n function toSource4(func) {\n if (func != null) {\n try {\n return funcToString4.call(func);\n } catch (e4) {\n }\n try {\n return func + \"\";\n } catch (e4) {\n }\n }\n return \"\";\n }\n module2.exports = toSource4;\n }\n});\n\n// node_modules/lodash/_baseIsNative.js\nvar require_baseIsNative = __commonJS({\n \"node_modules/lodash/_baseIsNative.js\"(exports2, module2) {\n var isFunction4 = require_isFunction();\n var isMasked4 = require_isMasked();\n var isObject7 = require_isObject();\n var toSource4 = require_toSource();\n var reRegExpChar4 = /[\\\\^$.*+?()[\\]{}|]/g;\n var reIsHostCtor4 = /^\\[object .+?Constructor\\]$/;\n var funcProto4 = Function.prototype;\n var objectProto5 = Object.prototype;\n var funcToString4 = funcProto4.toString;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n var reIsNative4 = RegExp(\"^\" + funcToString4.call(hasOwnProperty6).replace(reRegExpChar4, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\");\n function baseIsNative4(value) {\n if (!isObject7(value) || isMasked4(value)) {\n return false;\n }\n var pattern = isFunction4(value) ? reIsNative4 : reIsHostCtor4;\n return pattern.test(toSource4(value));\n }\n module2.exports = baseIsNative4;\n }\n});\n\n// node_modules/lodash/_getValue.js\nvar require_getValue = __commonJS({\n \"node_modules/lodash/_getValue.js\"(exports2, module2) {\n function getValue4(object, key) {\n return object == null ? void 0 : object[key];\n }\n module2.exports = getValue4;\n }\n});\n\n// node_modules/lodash/_getNative.js\nvar require_getNative = __commonJS({\n \"node_modules/lodash/_getNative.js\"(exports2, module2) {\n var baseIsNative4 = require_baseIsNative();\n var getValue4 = require_getValue();\n function getNative4(object, key) {\n var value = getValue4(object, key);\n return baseIsNative4(value) ? value : void 0;\n }\n module2.exports = getNative4;\n }\n});\n\n// node_modules/lodash/_nativeCreate.js\nvar require_nativeCreate = __commonJS({\n \"node_modules/lodash/_nativeCreate.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var nativeCreate4 = getNative4(Object, \"create\");\n module2.exports = nativeCreate4;\n }\n});\n\n// node_modules/lodash/_hashClear.js\nvar require_hashClear = __commonJS({\n \"node_modules/lodash/_hashClear.js\"(exports2, module2) {\n var nativeCreate4 = require_nativeCreate();\n function hashClear4() {\n this.__data__ = nativeCreate4 ? nativeCreate4(null) : {};\n this.size = 0;\n }\n module2.exports = hashClear4;\n }\n});\n\n// node_modules/lodash/_hashDelete.js\nvar require_hashDelete = __commonJS({\n \"node_modules/lodash/_hashDelete.js\"(exports2, module2) {\n function hashDelete4(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n module2.exports = hashDelete4;\n }\n});\n\n// node_modules/lodash/_hashGet.js\nvar require_hashGet = __commonJS({\n \"node_modules/lodash/_hashGet.js\"(exports2, module2) {\n var nativeCreate4 = require_nativeCreate();\n var HASH_UNDEFINED4 = \"__lodash_hash_undefined__\";\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function hashGet4(key) {\n var data = this.__data__;\n if (nativeCreate4) {\n var result = data[key];\n return result === HASH_UNDEFINED4 ? void 0 : result;\n }\n return hasOwnProperty6.call(data, key) ? data[key] : void 0;\n }\n module2.exports = hashGet4;\n }\n});\n\n// node_modules/lodash/_hashHas.js\nvar require_hashHas = __commonJS({\n \"node_modules/lodash/_hashHas.js\"(exports2, module2) {\n var nativeCreate4 = require_nativeCreate();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function hashHas4(key) {\n var data = this.__data__;\n return nativeCreate4 ? data[key] !== void 0 : hasOwnProperty6.call(data, key);\n }\n module2.exports = hashHas4;\n }\n});\n\n// node_modules/lodash/_hashSet.js\nvar require_hashSet = __commonJS({\n \"node_modules/lodash/_hashSet.js\"(exports2, module2) {\n var nativeCreate4 = require_nativeCreate();\n var HASH_UNDEFINED4 = \"__lodash_hash_undefined__\";\n function hashSet4(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate4 && value === void 0 ? HASH_UNDEFINED4 : value;\n return this;\n }\n module2.exports = hashSet4;\n }\n});\n\n// node_modules/lodash/_Hash.js\nvar require_Hash = __commonJS({\n \"node_modules/lodash/_Hash.js\"(exports2, module2) {\n var hashClear4 = require_hashClear();\n var hashDelete4 = require_hashDelete();\n var hashGet4 = require_hashGet();\n var hashHas4 = require_hashHas();\n var hashSet4 = require_hashSet();\n function Hash4(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n }\n Hash4.prototype.clear = hashClear4;\n Hash4.prototype[\"delete\"] = hashDelete4;\n Hash4.prototype.get = hashGet4;\n Hash4.prototype.has = hashHas4;\n Hash4.prototype.set = hashSet4;\n module2.exports = Hash4;\n }\n});\n\n// node_modules/lodash/_listCacheClear.js\nvar require_listCacheClear = __commonJS({\n \"node_modules/lodash/_listCacheClear.js\"(exports2, module2) {\n function listCacheClear4() {\n this.__data__ = [];\n this.size = 0;\n }\n module2.exports = listCacheClear4;\n }\n});\n\n// node_modules/lodash/eq.js\nvar require_eq = __commonJS({\n \"node_modules/lodash/eq.js\"(exports2, module2) {\n function eq4(value, other) {\n return value === other || value !== value && other !== other;\n }\n module2.exports = eq4;\n }\n});\n\n// node_modules/lodash/_assocIndexOf.js\nvar require_assocIndexOf = __commonJS({\n \"node_modules/lodash/_assocIndexOf.js\"(exports2, module2) {\n var eq4 = require_eq();\n function assocIndexOf4(array, key) {\n var length = array.length;\n while (length--) {\n if (eq4(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n module2.exports = assocIndexOf4;\n }\n});\n\n// node_modules/lodash/_listCacheDelete.js\nvar require_listCacheDelete = __commonJS({\n \"node_modules/lodash/_listCacheDelete.js\"(exports2, module2) {\n var assocIndexOf4 = require_assocIndexOf();\n var arrayProto4 = Array.prototype;\n var splice4 = arrayProto4.splice;\n function listCacheDelete4(key) {\n var data = this.__data__, index7 = assocIndexOf4(data, key);\n if (index7 < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index7 == lastIndex) {\n data.pop();\n } else {\n splice4.call(data, index7, 1);\n }\n --this.size;\n return true;\n }\n module2.exports = listCacheDelete4;\n }\n});\n\n// node_modules/lodash/_listCacheGet.js\nvar require_listCacheGet = __commonJS({\n \"node_modules/lodash/_listCacheGet.js\"(exports2, module2) {\n var assocIndexOf4 = require_assocIndexOf();\n function listCacheGet4(key) {\n var data = this.__data__, index7 = assocIndexOf4(data, key);\n return index7 < 0 ? void 0 : data[index7][1];\n }\n module2.exports = listCacheGet4;\n }\n});\n\n// node_modules/lodash/_listCacheHas.js\nvar require_listCacheHas = __commonJS({\n \"node_modules/lodash/_listCacheHas.js\"(exports2, module2) {\n var assocIndexOf4 = require_assocIndexOf();\n function listCacheHas4(key) {\n return assocIndexOf4(this.__data__, key) > -1;\n }\n module2.exports = listCacheHas4;\n }\n});\n\n// node_modules/lodash/_listCacheSet.js\nvar require_listCacheSet = __commonJS({\n \"node_modules/lodash/_listCacheSet.js\"(exports2, module2) {\n var assocIndexOf4 = require_assocIndexOf();\n function listCacheSet4(key, value) {\n var data = this.__data__, index7 = assocIndexOf4(data, key);\n if (index7 < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index7][1] = value;\n }\n return this;\n }\n module2.exports = listCacheSet4;\n }\n});\n\n// node_modules/lodash/_ListCache.js\nvar require_ListCache = __commonJS({\n \"node_modules/lodash/_ListCache.js\"(exports2, module2) {\n var listCacheClear4 = require_listCacheClear();\n var listCacheDelete4 = require_listCacheDelete();\n var listCacheGet4 = require_listCacheGet();\n var listCacheHas4 = require_listCacheHas();\n var listCacheSet4 = require_listCacheSet();\n function ListCache4(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n }\n ListCache4.prototype.clear = listCacheClear4;\n ListCache4.prototype[\"delete\"] = listCacheDelete4;\n ListCache4.prototype.get = listCacheGet4;\n ListCache4.prototype.has = listCacheHas4;\n ListCache4.prototype.set = listCacheSet4;\n module2.exports = ListCache4;\n }\n});\n\n// node_modules/lodash/_Map.js\nvar require_Map = __commonJS({\n \"node_modules/lodash/_Map.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var root5 = require_root();\n var Map5 = getNative4(root5, \"Map\");\n module2.exports = Map5;\n }\n});\n\n// node_modules/lodash/_mapCacheClear.js\nvar require_mapCacheClear = __commonJS({\n \"node_modules/lodash/_mapCacheClear.js\"(exports2, module2) {\n var Hash4 = require_Hash();\n var ListCache4 = require_ListCache();\n var Map5 = require_Map();\n function mapCacheClear4() {\n this.size = 0;\n this.__data__ = {\n \"hash\": new Hash4(),\n \"map\": new (Map5 || ListCache4)(),\n \"string\": new Hash4()\n };\n }\n module2.exports = mapCacheClear4;\n }\n});\n\n// node_modules/lodash/_isKeyable.js\nvar require_isKeyable = __commonJS({\n \"node_modules/lodash/_isKeyable.js\"(exports2, module2) {\n function isKeyable4(value) {\n var type = typeof value;\n return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n }\n module2.exports = isKeyable4;\n }\n});\n\n// node_modules/lodash/_getMapData.js\nvar require_getMapData = __commonJS({\n \"node_modules/lodash/_getMapData.js\"(exports2, module2) {\n var isKeyable4 = require_isKeyable();\n function getMapData4(map2, key) {\n var data = map2.__data__;\n return isKeyable4(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n }\n module2.exports = getMapData4;\n }\n});\n\n// node_modules/lodash/_mapCacheDelete.js\nvar require_mapCacheDelete = __commonJS({\n \"node_modules/lodash/_mapCacheDelete.js\"(exports2, module2) {\n var getMapData4 = require_getMapData();\n function mapCacheDelete4(key) {\n var result = getMapData4(this, key)[\"delete\"](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n module2.exports = mapCacheDelete4;\n }\n});\n\n// node_modules/lodash/_mapCacheGet.js\nvar require_mapCacheGet = __commonJS({\n \"node_modules/lodash/_mapCacheGet.js\"(exports2, module2) {\n var getMapData4 = require_getMapData();\n function mapCacheGet4(key) {\n return getMapData4(this, key).get(key);\n }\n module2.exports = mapCacheGet4;\n }\n});\n\n// node_modules/lodash/_mapCacheHas.js\nvar require_mapCacheHas = __commonJS({\n \"node_modules/lodash/_mapCacheHas.js\"(exports2, module2) {\n var getMapData4 = require_getMapData();\n function mapCacheHas4(key) {\n return getMapData4(this, key).has(key);\n }\n module2.exports = mapCacheHas4;\n }\n});\n\n// node_modules/lodash/_mapCacheSet.js\nvar require_mapCacheSet = __commonJS({\n \"node_modules/lodash/_mapCacheSet.js\"(exports2, module2) {\n var getMapData4 = require_getMapData();\n function mapCacheSet4(key, value) {\n var data = getMapData4(this, key), size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n module2.exports = mapCacheSet4;\n }\n});\n\n// node_modules/lodash/_MapCache.js\nvar require_MapCache = __commonJS({\n \"node_modules/lodash/_MapCache.js\"(exports2, module2) {\n var mapCacheClear4 = require_mapCacheClear();\n var mapCacheDelete4 = require_mapCacheDelete();\n var mapCacheGet4 = require_mapCacheGet();\n var mapCacheHas4 = require_mapCacheHas();\n var mapCacheSet4 = require_mapCacheSet();\n function MapCache4(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n }\n MapCache4.prototype.clear = mapCacheClear4;\n MapCache4.prototype[\"delete\"] = mapCacheDelete4;\n MapCache4.prototype.get = mapCacheGet4;\n MapCache4.prototype.has = mapCacheHas4;\n MapCache4.prototype.set = mapCacheSet4;\n module2.exports = MapCache4;\n }\n});\n\n// node_modules/lodash/memoize.js\nvar require_memoize = __commonJS({\n \"node_modules/lodash/memoize.js\"(exports2, module2) {\n var MapCache4 = require_MapCache();\n var FUNC_ERROR_TEXT4 = \"Expected a function\";\n function memoize6(func, resolver) {\n if (typeof func != \"function\" || resolver != null && typeof resolver != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT4);\n }\n var memoized = function() {\n var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache2 = memoized.cache;\n if (cache2.has(key)) {\n return cache2.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache2.set(key, result) || cache2;\n return result;\n };\n memoized.cache = new (memoize6.Cache || MapCache4)();\n return memoized;\n }\n memoize6.Cache = MapCache4;\n module2.exports = memoize6;\n }\n});\n\n// node_modules/lodash/_memoizeCapped.js\nvar require_memoizeCapped = __commonJS({\n \"node_modules/lodash/_memoizeCapped.js\"(exports2, module2) {\n var memoize6 = require_memoize();\n var MAX_MEMOIZE_SIZE3 = 500;\n function memoizeCapped3(func) {\n var result = memoize6(func, function(key) {\n if (cache2.size === MAX_MEMOIZE_SIZE3) {\n cache2.clear();\n }\n return key;\n });\n var cache2 = result.cache;\n return result;\n }\n module2.exports = memoizeCapped3;\n }\n});\n\n// node_modules/lodash/_stringToPath.js\nvar require_stringToPath = __commonJS({\n \"node_modules/lodash/_stringToPath.js\"(exports2, module2) {\n var memoizeCapped3 = require_memoizeCapped();\n var rePropName3 = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n var reEscapeChar3 = /\\\\(\\\\)?/g;\n var stringToPath3 = memoizeCapped3(function(string2) {\n var result = [];\n if (string2.charCodeAt(0) === 46) {\n result.push(\"\");\n }\n string2.replace(rePropName3, function(match2, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar3, \"$1\") : number || match2);\n });\n return result;\n });\n module2.exports = stringToPath3;\n }\n});\n\n// node_modules/lodash/_arrayMap.js\nvar require_arrayMap = __commonJS({\n \"node_modules/lodash/_arrayMap.js\"(exports2, module2) {\n function arrayMap2(array, iteratee) {\n var index7 = -1, length = array == null ? 0 : array.length, result = Array(length);\n while (++index7 < length) {\n result[index7] = iteratee(array[index7], index7, array);\n }\n return result;\n }\n module2.exports = arrayMap2;\n }\n});\n\n// node_modules/lodash/_baseToString.js\nvar require_baseToString = __commonJS({\n \"node_modules/lodash/_baseToString.js\"(exports2, module2) {\n var Symbol5 = require_Symbol();\n var arrayMap2 = require_arrayMap();\n var isArray8 = require_isArray();\n var isSymbol3 = require_isSymbol();\n var INFINITY3 = 1 / 0;\n var symbolProto4 = Symbol5 ? Symbol5.prototype : void 0;\n var symbolToString3 = symbolProto4 ? symbolProto4.toString : void 0;\n function baseToString2(value) {\n if (typeof value == \"string\") {\n return value;\n }\n if (isArray8(value)) {\n return arrayMap2(value, baseToString2) + \"\";\n }\n if (isSymbol3(value)) {\n return symbolToString3 ? symbolToString3.call(value) : \"\";\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY3 ? \"-0\" : result;\n }\n module2.exports = baseToString2;\n }\n});\n\n// node_modules/lodash/toString.js\nvar require_toString = __commonJS({\n \"node_modules/lodash/toString.js\"(exports2, module2) {\n var baseToString2 = require_baseToString();\n function toString2(value) {\n return value == null ? \"\" : baseToString2(value);\n }\n module2.exports = toString2;\n }\n});\n\n// node_modules/lodash/_castPath.js\nvar require_castPath = __commonJS({\n \"node_modules/lodash/_castPath.js\"(exports2, module2) {\n var isArray8 = require_isArray();\n var isKey2 = require_isKey();\n var stringToPath3 = require_stringToPath();\n var toString2 = require_toString();\n function castPath2(value, object) {\n if (isArray8(value)) {\n return value;\n }\n return isKey2(value, object) ? [value] : stringToPath3(toString2(value));\n }\n module2.exports = castPath2;\n }\n});\n\n// node_modules/lodash/_toKey.js\nvar require_toKey = __commonJS({\n \"node_modules/lodash/_toKey.js\"(exports2, module2) {\n var isSymbol3 = require_isSymbol();\n var INFINITY3 = 1 / 0;\n function toKey2(value) {\n if (typeof value == \"string\" || isSymbol3(value)) {\n return value;\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY3 ? \"-0\" : result;\n }\n module2.exports = toKey2;\n }\n});\n\n// node_modules/lodash/_baseGet.js\nvar require_baseGet = __commonJS({\n \"node_modules/lodash/_baseGet.js\"(exports2, module2) {\n var castPath2 = require_castPath();\n var toKey2 = require_toKey();\n function baseGet2(object, path) {\n path = castPath2(path, object);\n var index7 = 0, length = path.length;\n while (object != null && index7 < length) {\n object = object[toKey2(path[index7++])];\n }\n return index7 && index7 == length ? object : void 0;\n }\n module2.exports = baseGet2;\n }\n});\n\n// node_modules/lodash/_defineProperty.js\nvar require_defineProperty = __commonJS({\n \"node_modules/lodash/_defineProperty.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var defineProperty5 = function() {\n try {\n var func = getNative4(Object, \"defineProperty\");\n func({}, \"\", {});\n return func;\n } catch (e4) {\n }\n }();\n module2.exports = defineProperty5;\n }\n});\n\n// node_modules/lodash/_baseAssignValue.js\nvar require_baseAssignValue = __commonJS({\n \"node_modules/lodash/_baseAssignValue.js\"(exports2, module2) {\n var defineProperty5 = require_defineProperty();\n function baseAssignValue3(object, key, value) {\n if (key == \"__proto__\" && defineProperty5) {\n defineProperty5(object, key, {\n \"configurable\": true,\n \"enumerable\": true,\n \"value\": value,\n \"writable\": true\n });\n } else {\n object[key] = value;\n }\n }\n module2.exports = baseAssignValue3;\n }\n});\n\n// node_modules/lodash/_assignValue.js\nvar require_assignValue = __commonJS({\n \"node_modules/lodash/_assignValue.js\"(exports2, module2) {\n var baseAssignValue3 = require_baseAssignValue();\n var eq4 = require_eq();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function assignValue3(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty6.call(object, key) && eq4(objValue, value)) || value === void 0 && !(key in object)) {\n baseAssignValue3(object, key, value);\n }\n }\n module2.exports = assignValue3;\n }\n});\n\n// node_modules/lodash/_isIndex.js\nvar require_isIndex = __commonJS({\n \"node_modules/lodash/_isIndex.js\"(exports2, module2) {\n var MAX_SAFE_INTEGER4 = 9007199254740991;\n var reIsUint3 = /^(?:0|[1-9]\\d*)$/;\n function isIndex3(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER4 : length;\n return !!length && (type == \"number\" || type != \"symbol\" && reIsUint3.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n }\n module2.exports = isIndex3;\n }\n});\n\n// node_modules/lodash/_baseSet.js\nvar require_baseSet = __commonJS({\n \"node_modules/lodash/_baseSet.js\"(exports2, module2) {\n var assignValue3 = require_assignValue();\n var castPath2 = require_castPath();\n var isIndex3 = require_isIndex();\n var isObject7 = require_isObject();\n var toKey2 = require_toKey();\n function baseSet(object, path, value, customizer) {\n if (!isObject7(object)) {\n return object;\n }\n path = castPath2(path, object);\n var index7 = -1, length = path.length, lastIndex = length - 1, nested = object;\n while (nested != null && ++index7 < length) {\n var key = toKey2(path[index7]), newValue = value;\n if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") {\n return object;\n }\n if (index7 != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : void 0;\n if (newValue === void 0) {\n newValue = isObject7(objValue) ? objValue : isIndex3(path[index7 + 1]) ? [] : {};\n }\n }\n assignValue3(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n module2.exports = baseSet;\n }\n});\n\n// node_modules/lodash/_basePickBy.js\nvar require_basePickBy = __commonJS({\n \"node_modules/lodash/_basePickBy.js\"(exports2, module2) {\n var baseGet2 = require_baseGet();\n var baseSet = require_baseSet();\n var castPath2 = require_castPath();\n function basePickBy(object, paths, predicate) {\n var index7 = -1, length = paths.length, result = {};\n while (++index7 < length) {\n var path = paths[index7], value = baseGet2(object, path);\n if (predicate(value, path)) {\n baseSet(result, castPath2(path, object), value);\n }\n }\n return result;\n }\n module2.exports = basePickBy;\n }\n});\n\n// node_modules/lodash/_baseHasIn.js\nvar require_baseHasIn = __commonJS({\n \"node_modules/lodash/_baseHasIn.js\"(exports2, module2) {\n function baseHasIn2(object, key) {\n return object != null && key in Object(object);\n }\n module2.exports = baseHasIn2;\n }\n});\n\n// node_modules/lodash/_baseIsArguments.js\nvar require_baseIsArguments = __commonJS({\n \"node_modules/lodash/_baseIsArguments.js\"(exports2, module2) {\n var baseGetTag5 = require_baseGetTag();\n var isObjectLike5 = require_isObjectLike();\n var argsTag3 = \"[object Arguments]\";\n function baseIsArguments4(value) {\n return isObjectLike5(value) && baseGetTag5(value) == argsTag3;\n }\n module2.exports = baseIsArguments4;\n }\n});\n\n// node_modules/lodash/isArguments.js\nvar require_isArguments = __commonJS({\n \"node_modules/lodash/isArguments.js\"(exports2, module2) {\n var baseIsArguments4 = require_baseIsArguments();\n var isObjectLike5 = require_isObjectLike();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n var propertyIsEnumerable4 = objectProto5.propertyIsEnumerable;\n var isArguments4 = baseIsArguments4(function() {\n return arguments;\n }()) ? baseIsArguments4 : function(value) {\n return isObjectLike5(value) && hasOwnProperty6.call(value, \"callee\") && !propertyIsEnumerable4.call(value, \"callee\");\n };\n module2.exports = isArguments4;\n }\n});\n\n// node_modules/lodash/isLength.js\nvar require_isLength = __commonJS({\n \"node_modules/lodash/isLength.js\"(exports2, module2) {\n var MAX_SAFE_INTEGER4 = 9007199254740991;\n function isLength4(value) {\n return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER4;\n }\n module2.exports = isLength4;\n }\n});\n\n// node_modules/lodash/_hasPath.js\nvar require_hasPath = __commonJS({\n \"node_modules/lodash/_hasPath.js\"(exports2, module2) {\n var castPath2 = require_castPath();\n var isArguments4 = require_isArguments();\n var isArray8 = require_isArray();\n var isIndex3 = require_isIndex();\n var isLength4 = require_isLength();\n var toKey2 = require_toKey();\n function hasPath2(object, path, hasFunc) {\n path = castPath2(path, object);\n var index7 = -1, length = path.length, result = false;\n while (++index7 < length) {\n var key = toKey2(path[index7]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index7 != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength4(length) && isIndex3(key, length) && (isArray8(object) || isArguments4(object));\n }\n module2.exports = hasPath2;\n }\n});\n\n// node_modules/lodash/hasIn.js\nvar require_hasIn = __commonJS({\n \"node_modules/lodash/hasIn.js\"(exports2, module2) {\n var baseHasIn2 = require_baseHasIn();\n var hasPath2 = require_hasPath();\n function hasIn2(object, path) {\n return object != null && hasPath2(object, path, baseHasIn2);\n }\n module2.exports = hasIn2;\n }\n});\n\n// node_modules/lodash/_basePick.js\nvar require_basePick = __commonJS({\n \"node_modules/lodash/_basePick.js\"(exports2, module2) {\n var basePickBy = require_basePickBy();\n var hasIn2 = require_hasIn();\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn2(object, path);\n });\n }\n module2.exports = basePick;\n }\n});\n\n// node_modules/lodash/_arrayPush.js\nvar require_arrayPush = __commonJS({\n \"node_modules/lodash/_arrayPush.js\"(exports2, module2) {\n function arrayPush3(array, values2) {\n var index7 = -1, length = values2.length, offset3 = array.length;\n while (++index7 < length) {\n array[offset3 + index7] = values2[index7];\n }\n return array;\n }\n module2.exports = arrayPush3;\n }\n});\n\n// node_modules/lodash/_isFlattenable.js\nvar require_isFlattenable = __commonJS({\n \"node_modules/lodash/_isFlattenable.js\"(exports2, module2) {\n var Symbol5 = require_Symbol();\n var isArguments4 = require_isArguments();\n var isArray8 = require_isArray();\n var spreadableSymbol2 = Symbol5 ? Symbol5.isConcatSpreadable : void 0;\n function isFlattenable2(value) {\n return isArray8(value) || isArguments4(value) || !!(spreadableSymbol2 && value && value[spreadableSymbol2]);\n }\n module2.exports = isFlattenable2;\n }\n});\n\n// node_modules/lodash/_baseFlatten.js\nvar require_baseFlatten = __commonJS({\n \"node_modules/lodash/_baseFlatten.js\"(exports2, module2) {\n var arrayPush3 = require_arrayPush();\n var isFlattenable2 = require_isFlattenable();\n function baseFlatten2(array, depth, predicate, isStrict, result) {\n var index7 = -1, length = array.length;\n predicate || (predicate = isFlattenable2);\n result || (result = []);\n while (++index7 < length) {\n var value = array[index7];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n baseFlatten2(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush3(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n module2.exports = baseFlatten2;\n }\n});\n\n// node_modules/lodash/flatten.js\nvar require_flatten = __commonJS({\n \"node_modules/lodash/flatten.js\"(exports2, module2) {\n var baseFlatten2 = require_baseFlatten();\n function flatten2(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten2(array, 1) : [];\n }\n module2.exports = flatten2;\n }\n});\n\n// node_modules/lodash/_apply.js\nvar require_apply = __commonJS({\n \"node_modules/lodash/_apply.js\"(exports2, module2) {\n function apply2(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n module2.exports = apply2;\n }\n});\n\n// node_modules/lodash/_overRest.js\nvar require_overRest = __commonJS({\n \"node_modules/lodash/_overRest.js\"(exports2, module2) {\n var apply2 = require_apply();\n var nativeMax3 = Math.max;\n function overRest2(func, start3, transform) {\n start3 = nativeMax3(start3 === void 0 ? func.length - 1 : start3, 0);\n return function() {\n var args = arguments, index7 = -1, length = nativeMax3(args.length - start3, 0), array = Array(length);\n while (++index7 < length) {\n array[index7] = args[start3 + index7];\n }\n index7 = -1;\n var otherArgs = Array(start3 + 1);\n while (++index7 < start3) {\n otherArgs[index7] = args[index7];\n }\n otherArgs[start3] = transform(array);\n return apply2(func, this, otherArgs);\n };\n }\n module2.exports = overRest2;\n }\n});\n\n// node_modules/lodash/constant.js\nvar require_constant = __commonJS({\n \"node_modules/lodash/constant.js\"(exports2, module2) {\n function constant2(value) {\n return function() {\n return value;\n };\n }\n module2.exports = constant2;\n }\n});\n\n// node_modules/lodash/identity.js\nvar require_identity = __commonJS({\n \"node_modules/lodash/identity.js\"(exports2, module2) {\n function identity2(value) {\n return value;\n }\n module2.exports = identity2;\n }\n});\n\n// node_modules/lodash/_baseSetToString.js\nvar require_baseSetToString = __commonJS({\n \"node_modules/lodash/_baseSetToString.js\"(exports2, module2) {\n var constant2 = require_constant();\n var defineProperty5 = require_defineProperty();\n var identity2 = require_identity();\n var baseSetToString2 = !defineProperty5 ? identity2 : function(func, string2) {\n return defineProperty5(func, \"toString\", {\n \"configurable\": true,\n \"enumerable\": false,\n \"value\": constant2(string2),\n \"writable\": true\n });\n };\n module2.exports = baseSetToString2;\n }\n});\n\n// node_modules/lodash/_shortOut.js\nvar require_shortOut = __commonJS({\n \"node_modules/lodash/_shortOut.js\"(exports2, module2) {\n var HOT_COUNT2 = 800;\n var HOT_SPAN2 = 16;\n var nativeNow2 = Date.now;\n function shortOut2(func) {\n var count = 0, lastCalled = 0;\n return function() {\n var stamp = nativeNow2(), remaining = HOT_SPAN2 - (stamp - lastCalled);\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT2) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(void 0, arguments);\n };\n }\n module2.exports = shortOut2;\n }\n});\n\n// node_modules/lodash/_setToString.js\nvar require_setToString = __commonJS({\n \"node_modules/lodash/_setToString.js\"(exports2, module2) {\n var baseSetToString2 = require_baseSetToString();\n var shortOut2 = require_shortOut();\n var setToString2 = shortOut2(baseSetToString2);\n module2.exports = setToString2;\n }\n});\n\n// node_modules/lodash/_flatRest.js\nvar require_flatRest = __commonJS({\n \"node_modules/lodash/_flatRest.js\"(exports2, module2) {\n var flatten2 = require_flatten();\n var overRest2 = require_overRest();\n var setToString2 = require_setToString();\n function flatRest2(func) {\n return setToString2(overRest2(func, void 0, flatten2), func + \"\");\n }\n module2.exports = flatRest2;\n }\n});\n\n// node_modules/lodash/pick.js\nvar require_pick = __commonJS({\n \"node_modules/lodash/pick.js\"(exports2, module2) {\n var basePick = require_basePick();\n var flatRest2 = require_flatRest();\n var pick5 = flatRest2(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n module2.exports = pick5;\n }\n});\n\n// node_modules/html-tags/html-tags.json\nvar require_html_tags = __commonJS({\n \"node_modules/html-tags/html-tags.json\"(exports2, module2) {\n module2.exports = [\n \"a\",\n \"abbr\",\n \"address\",\n \"area\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"base\",\n \"bdi\",\n \"bdo\",\n \"blockquote\",\n \"body\",\n \"br\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"embed\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"head\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"html\",\n \"i\",\n \"iframe\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"label\",\n \"legend\",\n \"li\",\n \"link\",\n \"main\",\n \"map\",\n \"mark\",\n \"math\",\n \"menu\",\n \"menuitem\",\n \"meta\",\n \"meter\",\n \"nav\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"param\",\n \"picture\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rb\",\n \"rp\",\n \"rt\",\n \"rtc\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"slot\",\n \"small\",\n \"source\",\n \"span\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"svg\",\n \"table\",\n \"tbody\",\n \"td\",\n \"template\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"track\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n \"wbr\"\n ];\n }\n});\n\n// node_modules/html-tags/index.js\nvar require_html_tags2 = __commonJS({\n \"node_modules/html-tags/index.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = require_html_tags();\n }\n});\n\n// node_modules/lodash/_stackClear.js\nvar require_stackClear = __commonJS({\n \"node_modules/lodash/_stackClear.js\"(exports2, module2) {\n var ListCache4 = require_ListCache();\n function stackClear4() {\n this.__data__ = new ListCache4();\n this.size = 0;\n }\n module2.exports = stackClear4;\n }\n});\n\n// node_modules/lodash/_stackDelete.js\nvar require_stackDelete = __commonJS({\n \"node_modules/lodash/_stackDelete.js\"(exports2, module2) {\n function stackDelete4(key) {\n var data = this.__data__, result = data[\"delete\"](key);\n this.size = data.size;\n return result;\n }\n module2.exports = stackDelete4;\n }\n});\n\n// node_modules/lodash/_stackGet.js\nvar require_stackGet = __commonJS({\n \"node_modules/lodash/_stackGet.js\"(exports2, module2) {\n function stackGet4(key) {\n return this.__data__.get(key);\n }\n module2.exports = stackGet4;\n }\n});\n\n// node_modules/lodash/_stackHas.js\nvar require_stackHas = __commonJS({\n \"node_modules/lodash/_stackHas.js\"(exports2, module2) {\n function stackHas4(key) {\n return this.__data__.has(key);\n }\n module2.exports = stackHas4;\n }\n});\n\n// node_modules/lodash/_stackSet.js\nvar require_stackSet = __commonJS({\n \"node_modules/lodash/_stackSet.js\"(exports2, module2) {\n var ListCache4 = require_ListCache();\n var Map5 = require_Map();\n var MapCache4 = require_MapCache();\n var LARGE_ARRAY_SIZE4 = 200;\n function stackSet4(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache4) {\n var pairs = data.__data__;\n if (!Map5 || pairs.length < LARGE_ARRAY_SIZE4 - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache4(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n module2.exports = stackSet4;\n }\n});\n\n// node_modules/lodash/_Stack.js\nvar require_Stack = __commonJS({\n \"node_modules/lodash/_Stack.js\"(exports2, module2) {\n var ListCache4 = require_ListCache();\n var stackClear4 = require_stackClear();\n var stackDelete4 = require_stackDelete();\n var stackGet4 = require_stackGet();\n var stackHas4 = require_stackHas();\n var stackSet4 = require_stackSet();\n function Stack4(entries) {\n var data = this.__data__ = new ListCache4(entries);\n this.size = data.size;\n }\n Stack4.prototype.clear = stackClear4;\n Stack4.prototype[\"delete\"] = stackDelete4;\n Stack4.prototype.get = stackGet4;\n Stack4.prototype.has = stackHas4;\n Stack4.prototype.set = stackSet4;\n module2.exports = Stack4;\n }\n});\n\n// node_modules/lodash/_arrayEach.js\nvar require_arrayEach = __commonJS({\n \"node_modules/lodash/_arrayEach.js\"(exports2, module2) {\n function arrayEach3(array, iteratee) {\n var index7 = -1, length = array == null ? 0 : array.length;\n while (++index7 < length) {\n if (iteratee(array[index7], index7, array) === false) {\n break;\n }\n }\n return array;\n }\n module2.exports = arrayEach3;\n }\n});\n\n// node_modules/lodash/_copyObject.js\nvar require_copyObject = __commonJS({\n \"node_modules/lodash/_copyObject.js\"(exports2, module2) {\n var assignValue3 = require_assignValue();\n var baseAssignValue3 = require_baseAssignValue();\n function copyObject3(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index7 = -1, length = props.length;\n while (++index7 < length) {\n var key = props[index7];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;\n if (newValue === void 0) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue3(object, key, newValue);\n } else {\n assignValue3(object, key, newValue);\n }\n }\n return object;\n }\n module2.exports = copyObject3;\n }\n});\n\n// node_modules/lodash/_baseTimes.js\nvar require_baseTimes = __commonJS({\n \"node_modules/lodash/_baseTimes.js\"(exports2, module2) {\n function baseTimes3(n6, iteratee) {\n var index7 = -1, result = Array(n6);\n while (++index7 < n6) {\n result[index7] = iteratee(index7);\n }\n return result;\n }\n module2.exports = baseTimes3;\n }\n});\n\n// node_modules/lodash/stubFalse.js\nvar require_stubFalse = __commonJS({\n \"node_modules/lodash/stubFalse.js\"(exports2, module2) {\n function stubFalse4() {\n return false;\n }\n module2.exports = stubFalse4;\n }\n});\n\n// node_modules/lodash/isBuffer.js\nvar require_isBuffer = __commonJS({\n \"node_modules/lodash/isBuffer.js\"(exports2, module2) {\n var root5 = require_root();\n var stubFalse4 = require_stubFalse();\n var freeExports = typeof exports2 == \"object\" && exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && typeof module2 == \"object\" && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var Buffer2 = moduleExports ? root5.Buffer : void 0;\n var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;\n var isBuffer = nativeIsBuffer || stubFalse4;\n module2.exports = isBuffer;\n }\n});\n\n// node_modules/lodash/_baseIsTypedArray.js\nvar require_baseIsTypedArray = __commonJS({\n \"node_modules/lodash/_baseIsTypedArray.js\"(exports2, module2) {\n var baseGetTag5 = require_baseGetTag();\n var isLength4 = require_isLength();\n var isObjectLike5 = require_isObjectLike();\n var argsTag3 = \"[object Arguments]\";\n var arrayTag3 = \"[object Array]\";\n var boolTag3 = \"[object Boolean]\";\n var dateTag3 = \"[object Date]\";\n var errorTag3 = \"[object Error]\";\n var funcTag4 = \"[object Function]\";\n var mapTag4 = \"[object Map]\";\n var numberTag3 = \"[object Number]\";\n var objectTag3 = \"[object Object]\";\n var regexpTag3 = \"[object RegExp]\";\n var setTag4 = \"[object Set]\";\n var stringTag3 = \"[object String]\";\n var weakMapTag4 = \"[object WeakMap]\";\n var arrayBufferTag3 = \"[object ArrayBuffer]\";\n var dataViewTag4 = \"[object DataView]\";\n var float32Tag4 = \"[object Float32Array]\";\n var float64Tag4 = \"[object Float64Array]\";\n var int8Tag4 = \"[object Int8Array]\";\n var int16Tag4 = \"[object Int16Array]\";\n var int32Tag4 = \"[object Int32Array]\";\n var uint8Tag4 = \"[object Uint8Array]\";\n var uint8ClampedTag4 = \"[object Uint8ClampedArray]\";\n var uint16Tag4 = \"[object Uint16Array]\";\n var uint32Tag4 = \"[object Uint32Array]\";\n var typedArrayTags4 = {};\n typedArrayTags4[float32Tag4] = typedArrayTags4[float64Tag4] = typedArrayTags4[int8Tag4] = typedArrayTags4[int16Tag4] = typedArrayTags4[int32Tag4] = typedArrayTags4[uint8Tag4] = typedArrayTags4[uint8ClampedTag4] = typedArrayTags4[uint16Tag4] = typedArrayTags4[uint32Tag4] = true;\n typedArrayTags4[argsTag3] = typedArrayTags4[arrayTag3] = typedArrayTags4[arrayBufferTag3] = typedArrayTags4[boolTag3] = typedArrayTags4[dataViewTag4] = typedArrayTags4[dateTag3] = typedArrayTags4[errorTag3] = typedArrayTags4[funcTag4] = typedArrayTags4[mapTag4] = typedArrayTags4[numberTag3] = typedArrayTags4[objectTag3] = typedArrayTags4[regexpTag3] = typedArrayTags4[setTag4] = typedArrayTags4[stringTag3] = typedArrayTags4[weakMapTag4] = false;\n function baseIsTypedArray4(value) {\n return isObjectLike5(value) && isLength4(value.length) && !!typedArrayTags4[baseGetTag5(value)];\n }\n module2.exports = baseIsTypedArray4;\n }\n});\n\n// node_modules/lodash/_baseUnary.js\nvar require_baseUnary = __commonJS({\n \"node_modules/lodash/_baseUnary.js\"(exports2, module2) {\n function baseUnary4(func) {\n return function(value) {\n return func(value);\n };\n }\n module2.exports = baseUnary4;\n }\n});\n\n// node_modules/lodash/_nodeUtil.js\nvar require_nodeUtil = __commonJS({\n \"node_modules/lodash/_nodeUtil.js\"(exports2, module2) {\n var freeGlobal5 = require_freeGlobal();\n var freeExports = typeof exports2 == \"object\" && exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && typeof module2 == \"object\" && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var freeProcess = moduleExports && freeGlobal5.process;\n var nodeUtil = function() {\n try {\n var types = freeModule && freeModule.require && freeModule.require(\"util\").types;\n if (types) {\n return types;\n }\n return freeProcess && freeProcess.binding && freeProcess.binding(\"util\");\n } catch (e4) {\n }\n }();\n module2.exports = nodeUtil;\n }\n});\n\n// node_modules/lodash/isTypedArray.js\nvar require_isTypedArray = __commonJS({\n \"node_modules/lodash/isTypedArray.js\"(exports2, module2) {\n var baseIsTypedArray4 = require_baseIsTypedArray();\n var baseUnary4 = require_baseUnary();\n var nodeUtil = require_nodeUtil();\n var nodeIsTypedArray4 = nodeUtil && nodeUtil.isTypedArray;\n var isTypedArray4 = nodeIsTypedArray4 ? baseUnary4(nodeIsTypedArray4) : baseIsTypedArray4;\n module2.exports = isTypedArray4;\n }\n});\n\n// node_modules/lodash/_arrayLikeKeys.js\nvar require_arrayLikeKeys = __commonJS({\n \"node_modules/lodash/_arrayLikeKeys.js\"(exports2, module2) {\n var baseTimes3 = require_baseTimes();\n var isArguments4 = require_isArguments();\n var isArray8 = require_isArray();\n var isBuffer = require_isBuffer();\n var isIndex3 = require_isIndex();\n var isTypedArray4 = require_isTypedArray();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function arrayLikeKeys3(value, inherited) {\n var isArr = isArray8(value), isArg = !isArr && isArguments4(value), isBuff = !isArr && !isArg && isBuffer(value), isType4 = !isArr && !isArg && !isBuff && isTypedArray4(value), skipIndexes = isArr || isArg || isBuff || isType4, result = skipIndexes ? baseTimes3(value.length, String) : [], length = result.length;\n for (var key in value) {\n if ((inherited || hasOwnProperty6.call(value, key)) && !(skipIndexes && (key == \"length\" || isBuff && (key == \"offset\" || key == \"parent\") || isType4 && (key == \"buffer\" || key == \"byteLength\" || key == \"byteOffset\") || isIndex3(key, length)))) {\n result.push(key);\n }\n }\n return result;\n }\n module2.exports = arrayLikeKeys3;\n }\n});\n\n// node_modules/lodash/_isPrototype.js\nvar require_isPrototype = __commonJS({\n \"node_modules/lodash/_isPrototype.js\"(exports2, module2) {\n var objectProto5 = Object.prototype;\n function isPrototype3(value) {\n var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto5;\n return value === proto;\n }\n module2.exports = isPrototype3;\n }\n});\n\n// node_modules/lodash/_overArg.js\nvar require_overArg = __commonJS({\n \"node_modules/lodash/_overArg.js\"(exports2, module2) {\n function overArg4(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n module2.exports = overArg4;\n }\n});\n\n// node_modules/lodash/_nativeKeys.js\nvar require_nativeKeys = __commonJS({\n \"node_modules/lodash/_nativeKeys.js\"(exports2, module2) {\n var overArg4 = require_overArg();\n var nativeKeys4 = overArg4(Object.keys, Object);\n module2.exports = nativeKeys4;\n }\n});\n\n// node_modules/lodash/_baseKeys.js\nvar require_baseKeys = __commonJS({\n \"node_modules/lodash/_baseKeys.js\"(exports2, module2) {\n var isPrototype3 = require_isPrototype();\n var nativeKeys4 = require_nativeKeys();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function baseKeys3(object) {\n if (!isPrototype3(object)) {\n return nativeKeys4(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty6.call(object, key) && key != \"constructor\") {\n result.push(key);\n }\n }\n return result;\n }\n module2.exports = baseKeys3;\n }\n});\n\n// node_modules/lodash/isArrayLike.js\nvar require_isArrayLike = __commonJS({\n \"node_modules/lodash/isArrayLike.js\"(exports2, module2) {\n var isFunction4 = require_isFunction();\n var isLength4 = require_isLength();\n function isArrayLike3(value) {\n return value != null && isLength4(value.length) && !isFunction4(value);\n }\n module2.exports = isArrayLike3;\n }\n});\n\n// node_modules/lodash/keys.js\nvar require_keys = __commonJS({\n \"node_modules/lodash/keys.js\"(exports2, module2) {\n var arrayLikeKeys3 = require_arrayLikeKeys();\n var baseKeys3 = require_baseKeys();\n var isArrayLike3 = require_isArrayLike();\n function keys3(object) {\n return isArrayLike3(object) ? arrayLikeKeys3(object) : baseKeys3(object);\n }\n module2.exports = keys3;\n }\n});\n\n// node_modules/lodash/_baseAssign.js\nvar require_baseAssign = __commonJS({\n \"node_modules/lodash/_baseAssign.js\"(exports2, module2) {\n var copyObject3 = require_copyObject();\n var keys3 = require_keys();\n function baseAssign3(object, source) {\n return object && copyObject3(source, keys3(source), object);\n }\n module2.exports = baseAssign3;\n }\n});\n\n// node_modules/lodash/_nativeKeysIn.js\nvar require_nativeKeysIn = __commonJS({\n \"node_modules/lodash/_nativeKeysIn.js\"(exports2, module2) {\n function nativeKeysIn3(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n module2.exports = nativeKeysIn3;\n }\n});\n\n// node_modules/lodash/_baseKeysIn.js\nvar require_baseKeysIn = __commonJS({\n \"node_modules/lodash/_baseKeysIn.js\"(exports2, module2) {\n var isObject7 = require_isObject();\n var isPrototype3 = require_isPrototype();\n var nativeKeysIn3 = require_nativeKeysIn();\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function baseKeysIn3(object) {\n if (!isObject7(object)) {\n return nativeKeysIn3(object);\n }\n var isProto = isPrototype3(object), result = [];\n for (var key in object) {\n if (!(key == \"constructor\" && (isProto || !hasOwnProperty6.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n module2.exports = baseKeysIn3;\n }\n});\n\n// node_modules/lodash/keysIn.js\nvar require_keysIn = __commonJS({\n \"node_modules/lodash/keysIn.js\"(exports2, module2) {\n var arrayLikeKeys3 = require_arrayLikeKeys();\n var baseKeysIn3 = require_baseKeysIn();\n var isArrayLike3 = require_isArrayLike();\n function keysIn3(object) {\n return isArrayLike3(object) ? arrayLikeKeys3(object, true) : baseKeysIn3(object);\n }\n module2.exports = keysIn3;\n }\n});\n\n// node_modules/lodash/_baseAssignIn.js\nvar require_baseAssignIn = __commonJS({\n \"node_modules/lodash/_baseAssignIn.js\"(exports2, module2) {\n var copyObject3 = require_copyObject();\n var keysIn3 = require_keysIn();\n function baseAssignIn3(object, source) {\n return object && copyObject3(source, keysIn3(source), object);\n }\n module2.exports = baseAssignIn3;\n }\n});\n\n// node_modules/lodash/_cloneBuffer.js\nvar require_cloneBuffer = __commonJS({\n \"node_modules/lodash/_cloneBuffer.js\"(exports2, module2) {\n var root5 = require_root();\n var freeExports = typeof exports2 == \"object\" && exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && typeof module2 == \"object\" && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var Buffer2 = moduleExports ? root5.Buffer : void 0;\n var allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n }\n module2.exports = cloneBuffer;\n }\n});\n\n// node_modules/lodash/_copyArray.js\nvar require_copyArray = __commonJS({\n \"node_modules/lodash/_copyArray.js\"(exports2, module2) {\n function copyArray3(source, array) {\n var index7 = -1, length = source.length;\n array || (array = Array(length));\n while (++index7 < length) {\n array[index7] = source[index7];\n }\n return array;\n }\n module2.exports = copyArray3;\n }\n});\n\n// node_modules/lodash/_arrayFilter.js\nvar require_arrayFilter = __commonJS({\n \"node_modules/lodash/_arrayFilter.js\"(exports2, module2) {\n function arrayFilter3(array, predicate) {\n var index7 = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n while (++index7 < length) {\n var value = array[index7];\n if (predicate(value, index7, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n module2.exports = arrayFilter3;\n }\n});\n\n// node_modules/lodash/stubArray.js\nvar require_stubArray = __commonJS({\n \"node_modules/lodash/stubArray.js\"(exports2, module2) {\n function stubArray3() {\n return [];\n }\n module2.exports = stubArray3;\n }\n});\n\n// node_modules/lodash/_getSymbols.js\nvar require_getSymbols = __commonJS({\n \"node_modules/lodash/_getSymbols.js\"(exports2, module2) {\n var arrayFilter3 = require_arrayFilter();\n var stubArray3 = require_stubArray();\n var objectProto5 = Object.prototype;\n var propertyIsEnumerable4 = objectProto5.propertyIsEnumerable;\n var nativeGetSymbols3 = Object.getOwnPropertySymbols;\n var getSymbols3 = !nativeGetSymbols3 ? stubArray3 : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter3(nativeGetSymbols3(object), function(symbol) {\n return propertyIsEnumerable4.call(object, symbol);\n });\n };\n module2.exports = getSymbols3;\n }\n});\n\n// node_modules/lodash/_copySymbols.js\nvar require_copySymbols = __commonJS({\n \"node_modules/lodash/_copySymbols.js\"(exports2, module2) {\n var copyObject3 = require_copyObject();\n var getSymbols3 = require_getSymbols();\n function copySymbols3(source, object) {\n return copyObject3(source, getSymbols3(source), object);\n }\n module2.exports = copySymbols3;\n }\n});\n\n// node_modules/lodash/_getPrototype.js\nvar require_getPrototype = __commonJS({\n \"node_modules/lodash/_getPrototype.js\"(exports2, module2) {\n var overArg4 = require_overArg();\n var getPrototype3 = overArg4(Object.getPrototypeOf, Object);\n module2.exports = getPrototype3;\n }\n});\n\n// node_modules/lodash/_getSymbolsIn.js\nvar require_getSymbolsIn = __commonJS({\n \"node_modules/lodash/_getSymbolsIn.js\"(exports2, module2) {\n var arrayPush3 = require_arrayPush();\n var getPrototype3 = require_getPrototype();\n var getSymbols3 = require_getSymbols();\n var stubArray3 = require_stubArray();\n var nativeGetSymbols3 = Object.getOwnPropertySymbols;\n var getSymbolsIn3 = !nativeGetSymbols3 ? stubArray3 : function(object) {\n var result = [];\n while (object) {\n arrayPush3(result, getSymbols3(object));\n object = getPrototype3(object);\n }\n return result;\n };\n module2.exports = getSymbolsIn3;\n }\n});\n\n// node_modules/lodash/_copySymbolsIn.js\nvar require_copySymbolsIn = __commonJS({\n \"node_modules/lodash/_copySymbolsIn.js\"(exports2, module2) {\n var copyObject3 = require_copyObject();\n var getSymbolsIn3 = require_getSymbolsIn();\n function copySymbolsIn3(source, object) {\n return copyObject3(source, getSymbolsIn3(source), object);\n }\n module2.exports = copySymbolsIn3;\n }\n});\n\n// node_modules/lodash/_baseGetAllKeys.js\nvar require_baseGetAllKeys = __commonJS({\n \"node_modules/lodash/_baseGetAllKeys.js\"(exports2, module2) {\n var arrayPush3 = require_arrayPush();\n var isArray8 = require_isArray();\n function baseGetAllKeys3(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray8(object) ? result : arrayPush3(result, symbolsFunc(object));\n }\n module2.exports = baseGetAllKeys3;\n }\n});\n\n// node_modules/lodash/_getAllKeys.js\nvar require_getAllKeys = __commonJS({\n \"node_modules/lodash/_getAllKeys.js\"(exports2, module2) {\n var baseGetAllKeys3 = require_baseGetAllKeys();\n var getSymbols3 = require_getSymbols();\n var keys3 = require_keys();\n function getAllKeys3(object) {\n return baseGetAllKeys3(object, keys3, getSymbols3);\n }\n module2.exports = getAllKeys3;\n }\n});\n\n// node_modules/lodash/_getAllKeysIn.js\nvar require_getAllKeysIn = __commonJS({\n \"node_modules/lodash/_getAllKeysIn.js\"(exports2, module2) {\n var baseGetAllKeys3 = require_baseGetAllKeys();\n var getSymbolsIn3 = require_getSymbolsIn();\n var keysIn3 = require_keysIn();\n function getAllKeysIn3(object) {\n return baseGetAllKeys3(object, keysIn3, getSymbolsIn3);\n }\n module2.exports = getAllKeysIn3;\n }\n});\n\n// node_modules/lodash/_DataView.js\nvar require_DataView = __commonJS({\n \"node_modules/lodash/_DataView.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var root5 = require_root();\n var DataView4 = getNative4(root5, \"DataView\");\n module2.exports = DataView4;\n }\n});\n\n// node_modules/lodash/_Promise.js\nvar require_Promise = __commonJS({\n \"node_modules/lodash/_Promise.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var root5 = require_root();\n var Promise2 = getNative4(root5, \"Promise\");\n module2.exports = Promise2;\n }\n});\n\n// node_modules/lodash/_Set.js\nvar require_Set = __commonJS({\n \"node_modules/lodash/_Set.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var root5 = require_root();\n var Set5 = getNative4(root5, \"Set\");\n module2.exports = Set5;\n }\n});\n\n// node_modules/lodash/_WeakMap.js\nvar require_WeakMap = __commonJS({\n \"node_modules/lodash/_WeakMap.js\"(exports2, module2) {\n var getNative4 = require_getNative();\n var root5 = require_root();\n var WeakMap4 = getNative4(root5, \"WeakMap\");\n module2.exports = WeakMap4;\n }\n});\n\n// node_modules/lodash/_getTag.js\nvar require_getTag = __commonJS({\n \"node_modules/lodash/_getTag.js\"(exports2, module2) {\n var DataView4 = require_DataView();\n var Map5 = require_Map();\n var Promise2 = require_Promise();\n var Set5 = require_Set();\n var WeakMap4 = require_WeakMap();\n var baseGetTag5 = require_baseGetTag();\n var toSource4 = require_toSource();\n var mapTag4 = \"[object Map]\";\n var objectTag3 = \"[object Object]\";\n var promiseTag4 = \"[object Promise]\";\n var setTag4 = \"[object Set]\";\n var weakMapTag4 = \"[object WeakMap]\";\n var dataViewTag4 = \"[object DataView]\";\n var dataViewCtorString4 = toSource4(DataView4);\n var mapCtorString4 = toSource4(Map5);\n var promiseCtorString4 = toSource4(Promise2);\n var setCtorString4 = toSource4(Set5);\n var weakMapCtorString4 = toSource4(WeakMap4);\n var getTag4 = baseGetTag5;\n if (DataView4 && getTag4(new DataView4(new ArrayBuffer(1))) != dataViewTag4 || Map5 && getTag4(new Map5()) != mapTag4 || Promise2 && getTag4(Promise2.resolve()) != promiseTag4 || Set5 && getTag4(new Set5()) != setTag4 || WeakMap4 && getTag4(new WeakMap4()) != weakMapTag4) {\n getTag4 = function(value) {\n var result = baseGetTag5(value), Ctor = result == objectTag3 ? value.constructor : void 0, ctorString = Ctor ? toSource4(Ctor) : \"\";\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString4:\n return dataViewTag4;\n case mapCtorString4:\n return mapTag4;\n case promiseCtorString4:\n return promiseTag4;\n case setCtorString4:\n return setTag4;\n case weakMapCtorString4:\n return weakMapTag4;\n }\n }\n return result;\n };\n }\n module2.exports = getTag4;\n }\n});\n\n// node_modules/lodash/_initCloneArray.js\nvar require_initCloneArray = __commonJS({\n \"node_modules/lodash/_initCloneArray.js\"(exports2, module2) {\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function initCloneArray3(array) {\n var length = array.length, result = new array.constructor(length);\n if (length && typeof array[0] == \"string\" && hasOwnProperty6.call(array, \"index\")) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n module2.exports = initCloneArray3;\n }\n});\n\n// node_modules/lodash/_Uint8Array.js\nvar require_Uint8Array = __commonJS({\n \"node_modules/lodash/_Uint8Array.js\"(exports2, module2) {\n var root5 = require_root();\n var Uint8Array5 = root5.Uint8Array;\n module2.exports = Uint8Array5;\n }\n});\n\n// node_modules/lodash/_cloneArrayBuffer.js\nvar require_cloneArrayBuffer = __commonJS({\n \"node_modules/lodash/_cloneArrayBuffer.js\"(exports2, module2) {\n var Uint8Array5 = require_Uint8Array();\n function cloneArrayBuffer3(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array5(result).set(new Uint8Array5(arrayBuffer));\n return result;\n }\n module2.exports = cloneArrayBuffer3;\n }\n});\n\n// node_modules/lodash/_cloneDataView.js\nvar require_cloneDataView = __commonJS({\n \"node_modules/lodash/_cloneDataView.js\"(exports2, module2) {\n var cloneArrayBuffer3 = require_cloneArrayBuffer();\n function cloneDataView3(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer3(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n module2.exports = cloneDataView3;\n }\n});\n\n// node_modules/lodash/_cloneRegExp.js\nvar require_cloneRegExp = __commonJS({\n \"node_modules/lodash/_cloneRegExp.js\"(exports2, module2) {\n var reFlags3 = /\\w*$/;\n function cloneRegExp3(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags3.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n module2.exports = cloneRegExp3;\n }\n});\n\n// node_modules/lodash/_cloneSymbol.js\nvar require_cloneSymbol = __commonJS({\n \"node_modules/lodash/_cloneSymbol.js\"(exports2, module2) {\n var Symbol5 = require_Symbol();\n var symbolProto4 = Symbol5 ? Symbol5.prototype : void 0;\n var symbolValueOf4 = symbolProto4 ? symbolProto4.valueOf : void 0;\n function cloneSymbol3(symbol) {\n return symbolValueOf4 ? Object(symbolValueOf4.call(symbol)) : {};\n }\n module2.exports = cloneSymbol3;\n }\n});\n\n// node_modules/lodash/_cloneTypedArray.js\nvar require_cloneTypedArray = __commonJS({\n \"node_modules/lodash/_cloneTypedArray.js\"(exports2, module2) {\n var cloneArrayBuffer3 = require_cloneArrayBuffer();\n function cloneTypedArray3(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer3(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n module2.exports = cloneTypedArray3;\n }\n});\n\n// node_modules/lodash/_initCloneByTag.js\nvar require_initCloneByTag = __commonJS({\n \"node_modules/lodash/_initCloneByTag.js\"(exports2, module2) {\n var cloneArrayBuffer3 = require_cloneArrayBuffer();\n var cloneDataView3 = require_cloneDataView();\n var cloneRegExp3 = require_cloneRegExp();\n var cloneSymbol3 = require_cloneSymbol();\n var cloneTypedArray3 = require_cloneTypedArray();\n var boolTag3 = \"[object Boolean]\";\n var dateTag3 = \"[object Date]\";\n var mapTag4 = \"[object Map]\";\n var numberTag3 = \"[object Number]\";\n var regexpTag3 = \"[object RegExp]\";\n var setTag4 = \"[object Set]\";\n var stringTag3 = \"[object String]\";\n var symbolTag4 = \"[object Symbol]\";\n var arrayBufferTag3 = \"[object ArrayBuffer]\";\n var dataViewTag4 = \"[object DataView]\";\n var float32Tag4 = \"[object Float32Array]\";\n var float64Tag4 = \"[object Float64Array]\";\n var int8Tag4 = \"[object Int8Array]\";\n var int16Tag4 = \"[object Int16Array]\";\n var int32Tag4 = \"[object Int32Array]\";\n var uint8Tag4 = \"[object Uint8Array]\";\n var uint8ClampedTag4 = \"[object Uint8ClampedArray]\";\n var uint16Tag4 = \"[object Uint16Array]\";\n var uint32Tag4 = \"[object Uint32Array]\";\n function initCloneByTag3(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag3:\n return cloneArrayBuffer3(object);\n case boolTag3:\n case dateTag3:\n return new Ctor(+object);\n case dataViewTag4:\n return cloneDataView3(object, isDeep);\n case float32Tag4:\n case float64Tag4:\n case int8Tag4:\n case int16Tag4:\n case int32Tag4:\n case uint8Tag4:\n case uint8ClampedTag4:\n case uint16Tag4:\n case uint32Tag4:\n return cloneTypedArray3(object, isDeep);\n case mapTag4:\n return new Ctor();\n case numberTag3:\n case stringTag3:\n return new Ctor(object);\n case regexpTag3:\n return cloneRegExp3(object);\n case setTag4:\n return new Ctor();\n case symbolTag4:\n return cloneSymbol3(object);\n }\n }\n module2.exports = initCloneByTag3;\n }\n});\n\n// node_modules/lodash/_baseCreate.js\nvar require_baseCreate = __commonJS({\n \"node_modules/lodash/_baseCreate.js\"(exports2, module2) {\n var isObject7 = require_isObject();\n var objectCreate3 = Object.create;\n var baseCreate3 = function() {\n function object() {\n }\n return function(proto) {\n if (!isObject7(proto)) {\n return {};\n }\n if (objectCreate3) {\n return objectCreate3(proto);\n }\n object.prototype = proto;\n var result = new object();\n object.prototype = void 0;\n return result;\n };\n }();\n module2.exports = baseCreate3;\n }\n});\n\n// node_modules/lodash/_initCloneObject.js\nvar require_initCloneObject = __commonJS({\n \"node_modules/lodash/_initCloneObject.js\"(exports2, module2) {\n var baseCreate3 = require_baseCreate();\n var getPrototype3 = require_getPrototype();\n var isPrototype3 = require_isPrototype();\n function initCloneObject3(object) {\n return typeof object.constructor == \"function\" && !isPrototype3(object) ? baseCreate3(getPrototype3(object)) : {};\n }\n module2.exports = initCloneObject3;\n }\n});\n\n// node_modules/lodash/_baseIsMap.js\nvar require_baseIsMap = __commonJS({\n \"node_modules/lodash/_baseIsMap.js\"(exports2, module2) {\n var getTag4 = require_getTag();\n var isObjectLike5 = require_isObjectLike();\n var mapTag4 = \"[object Map]\";\n function baseIsMap3(value) {\n return isObjectLike5(value) && getTag4(value) == mapTag4;\n }\n module2.exports = baseIsMap3;\n }\n});\n\n// node_modules/lodash/isMap.js\nvar require_isMap = __commonJS({\n \"node_modules/lodash/isMap.js\"(exports2, module2) {\n var baseIsMap3 = require_baseIsMap();\n var baseUnary4 = require_baseUnary();\n var nodeUtil = require_nodeUtil();\n var nodeIsMap3 = nodeUtil && nodeUtil.isMap;\n var isMap3 = nodeIsMap3 ? baseUnary4(nodeIsMap3) : baseIsMap3;\n module2.exports = isMap3;\n }\n});\n\n// node_modules/lodash/_baseIsSet.js\nvar require_baseIsSet = __commonJS({\n \"node_modules/lodash/_baseIsSet.js\"(exports2, module2) {\n var getTag4 = require_getTag();\n var isObjectLike5 = require_isObjectLike();\n var setTag4 = \"[object Set]\";\n function baseIsSet3(value) {\n return isObjectLike5(value) && getTag4(value) == setTag4;\n }\n module2.exports = baseIsSet3;\n }\n});\n\n// node_modules/lodash/isSet.js\nvar require_isSet = __commonJS({\n \"node_modules/lodash/isSet.js\"(exports2, module2) {\n var baseIsSet3 = require_baseIsSet();\n var baseUnary4 = require_baseUnary();\n var nodeUtil = require_nodeUtil();\n var nodeIsSet3 = nodeUtil && nodeUtil.isSet;\n var isSet3 = nodeIsSet3 ? baseUnary4(nodeIsSet3) : baseIsSet3;\n module2.exports = isSet3;\n }\n});\n\n// node_modules/lodash/_baseClone.js\nvar require_baseClone = __commonJS({\n \"node_modules/lodash/_baseClone.js\"(exports2, module2) {\n var Stack4 = require_Stack();\n var arrayEach3 = require_arrayEach();\n var assignValue3 = require_assignValue();\n var baseAssign3 = require_baseAssign();\n var baseAssignIn3 = require_baseAssignIn();\n var cloneBuffer = require_cloneBuffer();\n var copyArray3 = require_copyArray();\n var copySymbols3 = require_copySymbols();\n var copySymbolsIn3 = require_copySymbolsIn();\n var getAllKeys3 = require_getAllKeys();\n var getAllKeysIn3 = require_getAllKeysIn();\n var getTag4 = require_getTag();\n var initCloneArray3 = require_initCloneArray();\n var initCloneByTag3 = require_initCloneByTag();\n var initCloneObject3 = require_initCloneObject();\n var isArray8 = require_isArray();\n var isBuffer = require_isBuffer();\n var isMap3 = require_isMap();\n var isObject7 = require_isObject();\n var isSet3 = require_isSet();\n var keys3 = require_keys();\n var keysIn3 = require_keysIn();\n var CLONE_DEEP_FLAG3 = 1;\n var CLONE_FLAT_FLAG3 = 2;\n var CLONE_SYMBOLS_FLAG3 = 4;\n var argsTag3 = \"[object Arguments]\";\n var arrayTag3 = \"[object Array]\";\n var boolTag3 = \"[object Boolean]\";\n var dateTag3 = \"[object Date]\";\n var errorTag3 = \"[object Error]\";\n var funcTag4 = \"[object Function]\";\n var genTag4 = \"[object GeneratorFunction]\";\n var mapTag4 = \"[object Map]\";\n var numberTag3 = \"[object Number]\";\n var objectTag3 = \"[object Object]\";\n var regexpTag3 = \"[object RegExp]\";\n var setTag4 = \"[object Set]\";\n var stringTag3 = \"[object String]\";\n var symbolTag4 = \"[object Symbol]\";\n var weakMapTag4 = \"[object WeakMap]\";\n var arrayBufferTag3 = \"[object ArrayBuffer]\";\n var dataViewTag4 = \"[object DataView]\";\n var float32Tag4 = \"[object Float32Array]\";\n var float64Tag4 = \"[object Float64Array]\";\n var int8Tag4 = \"[object Int8Array]\";\n var int16Tag4 = \"[object Int16Array]\";\n var int32Tag4 = \"[object Int32Array]\";\n var uint8Tag4 = \"[object Uint8Array]\";\n var uint8ClampedTag4 = \"[object Uint8ClampedArray]\";\n var uint16Tag4 = \"[object Uint16Array]\";\n var uint32Tag4 = \"[object Uint32Array]\";\n var cloneableTags3 = {};\n cloneableTags3[argsTag3] = cloneableTags3[arrayTag3] = cloneableTags3[arrayBufferTag3] = cloneableTags3[dataViewTag4] = cloneableTags3[boolTag3] = cloneableTags3[dateTag3] = cloneableTags3[float32Tag4] = cloneableTags3[float64Tag4] = cloneableTags3[int8Tag4] = cloneableTags3[int16Tag4] = cloneableTags3[int32Tag4] = cloneableTags3[mapTag4] = cloneableTags3[numberTag3] = cloneableTags3[objectTag3] = cloneableTags3[regexpTag3] = cloneableTags3[setTag4] = cloneableTags3[stringTag3] = cloneableTags3[symbolTag4] = cloneableTags3[uint8Tag4] = cloneableTags3[uint8ClampedTag4] = cloneableTags3[uint16Tag4] = cloneableTags3[uint32Tag4] = true;\n cloneableTags3[errorTag3] = cloneableTags3[funcTag4] = cloneableTags3[weakMapTag4] = false;\n function baseClone3(value, bitmask, customizer, key, object, stack) {\n var result, isDeep = bitmask & CLONE_DEEP_FLAG3, isFlat = bitmask & CLONE_FLAT_FLAG3, isFull = bitmask & CLONE_SYMBOLS_FLAG3;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== void 0) {\n return result;\n }\n if (!isObject7(value)) {\n return value;\n }\n var isArr = isArray8(value);\n if (isArr) {\n result = initCloneArray3(value);\n if (!isDeep) {\n return copyArray3(value, result);\n }\n } else {\n var tag = getTag4(value), isFunc = tag == funcTag4 || tag == genTag4;\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag3 || tag == argsTag3 || isFunc && !object) {\n result = isFlat || isFunc ? {} : initCloneObject3(value);\n if (!isDeep) {\n return isFlat ? copySymbolsIn3(value, baseAssignIn3(result, value)) : copySymbols3(value, baseAssign3(result, value));\n }\n } else {\n if (!cloneableTags3[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag3(value, tag, isDeep);\n }\n }\n stack || (stack = new Stack4());\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n if (isSet3(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone3(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap3(value)) {\n value.forEach(function(subValue, key2) {\n result.set(key2, baseClone3(subValue, bitmask, customizer, key2, value, stack));\n });\n }\n var keysFunc = isFull ? isFlat ? getAllKeysIn3 : getAllKeys3 : isFlat ? keysIn3 : keys3;\n var props = isArr ? void 0 : keysFunc(value);\n arrayEach3(props || value, function(subValue, key2) {\n if (props) {\n key2 = subValue;\n subValue = value[key2];\n }\n assignValue3(result, key2, baseClone3(subValue, bitmask, customizer, key2, value, stack));\n });\n return result;\n }\n module2.exports = baseClone3;\n }\n});\n\n// node_modules/lodash/last.js\nvar require_last = __commonJS({\n \"node_modules/lodash/last.js\"(exports2, module2) {\n function last2(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : void 0;\n }\n module2.exports = last2;\n }\n});\n\n// node_modules/lodash/_baseSlice.js\nvar require_baseSlice = __commonJS({\n \"node_modules/lodash/_baseSlice.js\"(exports2, module2) {\n function baseSlice2(array, start3, end3) {\n var index7 = -1, length = array.length;\n if (start3 < 0) {\n start3 = -start3 > length ? 0 : length + start3;\n }\n end3 = end3 > length ? length : end3;\n if (end3 < 0) {\n end3 += length;\n }\n length = start3 > end3 ? 0 : end3 - start3 >>> 0;\n start3 >>>= 0;\n var result = Array(length);\n while (++index7 < length) {\n result[index7] = array[index7 + start3];\n }\n return result;\n }\n module2.exports = baseSlice2;\n }\n});\n\n// node_modules/lodash/_parent.js\nvar require_parent = __commonJS({\n \"node_modules/lodash/_parent.js\"(exports2, module2) {\n var baseGet2 = require_baseGet();\n var baseSlice2 = require_baseSlice();\n function parent2(object, path) {\n return path.length < 2 ? object : baseGet2(object, baseSlice2(path, 0, -1));\n }\n module2.exports = parent2;\n }\n});\n\n// node_modules/lodash/_baseUnset.js\nvar require_baseUnset = __commonJS({\n \"node_modules/lodash/_baseUnset.js\"(exports2, module2) {\n var castPath2 = require_castPath();\n var last2 = require_last();\n var parent2 = require_parent();\n var toKey2 = require_toKey();\n function baseUnset2(object, path) {\n path = castPath2(path, object);\n object = parent2(object, path);\n return object == null || delete object[toKey2(last2(path))];\n }\n module2.exports = baseUnset2;\n }\n});\n\n// node_modules/lodash/isPlainObject.js\nvar require_isPlainObject = __commonJS({\n \"node_modules/lodash/isPlainObject.js\"(exports2, module2) {\n var baseGetTag5 = require_baseGetTag();\n var getPrototype3 = require_getPrototype();\n var isObjectLike5 = require_isObjectLike();\n var objectTag3 = \"[object Object]\";\n var funcProto4 = Function.prototype;\n var objectProto5 = Object.prototype;\n var funcToString4 = funcProto4.toString;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n var objectCtorString2 = funcToString4.call(Object);\n function isPlainObject5(value) {\n if (!isObjectLike5(value) || baseGetTag5(value) != objectTag3) {\n return false;\n }\n var proto = getPrototype3(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty6.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor == \"function\" && Ctor instanceof Ctor && funcToString4.call(Ctor) == objectCtorString2;\n }\n module2.exports = isPlainObject5;\n }\n});\n\n// node_modules/lodash/_customOmitClone.js\nvar require_customOmitClone = __commonJS({\n \"node_modules/lodash/_customOmitClone.js\"(exports2, module2) {\n var isPlainObject5 = require_isPlainObject();\n function customOmitClone2(value) {\n return isPlainObject5(value) ? void 0 : value;\n }\n module2.exports = customOmitClone2;\n }\n});\n\n// node_modules/lodash/omit.js\nvar require_omit = __commonJS({\n \"node_modules/lodash/omit.js\"(exports2, module2) {\n var arrayMap2 = require_arrayMap();\n var baseClone3 = require_baseClone();\n var baseUnset2 = require_baseUnset();\n var castPath2 = require_castPath();\n var copyObject3 = require_copyObject();\n var customOmitClone2 = require_customOmitClone();\n var flatRest2 = require_flatRest();\n var getAllKeysIn3 = require_getAllKeysIn();\n var CLONE_DEEP_FLAG3 = 1;\n var CLONE_FLAT_FLAG3 = 2;\n var CLONE_SYMBOLS_FLAG3 = 4;\n var omit3 = flatRest2(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap2(paths, function(path) {\n path = castPath2(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject3(object, getAllKeysIn3(object), result);\n if (isDeep) {\n result = baseClone3(result, CLONE_DEEP_FLAG3 | CLONE_FLAT_FLAG3 | CLONE_SYMBOLS_FLAG3, customOmitClone2);\n }\n var length = paths.length;\n while (length--) {\n baseUnset2(result, paths[length]);\n }\n return result;\n });\n module2.exports = omit3;\n }\n});\n\n// node_modules/tw-react/dist/plugins/linonetwo/tw-react/index.js\nvar require_tw_react = __commonJS({\n \"node_modules/tw-react/dist/plugins/linonetwo/tw-react/index.js\"(exports2, module2) {\n var __defProp4 = Object.defineProperty;\n var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames2 = Object.getOwnPropertyNames;\n var __hasOwnProp4 = Object.prototype.hasOwnProperty;\n var __export2 = (target, all) => {\n for (var name in all)\n __defProp4(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps2 = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames2(from))\n if (!__hasOwnProp4.call(to, key) && key !== except)\n __defProp4(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toCommonJS = (mod) => __copyProps2(__defProp4({}, \"__esModule\", { value: true }), mod);\n var src_exports = {};\n __export2(src_exports, {\n ParentWidgetContext: () => ParentWidgetContext3,\n useFilter: () => useFilter2,\n useRenderTiddler: () => useRenderTiddler,\n useWidget: () => useWidget2\n });\n module2.exports = __toCommonJS(src_exports);\n var import_react109 = require(\"react\");\n function useFilter2(twFilter, widget4 = $tw.rootWidget, dependencies = []) {\n const [filterResult, setFilterResult] = (0, import_react109.useState)([]);\n const compiledFilter = (0, import_react109.useMemo)(() => $tw.wiki.compileFilter(twFilter), [twFilter]);\n (0, import_react109.useEffect)(() => {\n setFilterResult(compiledFilter(void 0, widget4));\n }, [compiledFilter, widget4, ...dependencies]);\n return filterResult;\n }\n var import_react310 = require(\"react\");\n var import_react210 = require(\"react\");\n var ParentWidgetContext3 = (0, import_react210.createContext)(void 0);\n function useRenderTiddler(tiddlerTitle, containerRef) {\n const parentWidget = (0, import_react310.useContext)(ParentWidgetContext3);\n (0, import_react310.useEffect)(() => {\n if (containerRef.current === null || parentWidget === void 0) {\n return;\n }\n const transcludeWidgetNode = $tw.wiki.makeTranscludeWidget(tiddlerTitle, {\n document,\n parentWidget,\n recursionMarker: \"yes\",\n mode: \"block\",\n importPageMacros: true\n });\n const tiddlerContainer = document.createElement(\"div\");\n containerRef.current.append(tiddlerContainer);\n transcludeWidgetNode.render(tiddlerContainer, null);\n parentWidget.children.push(transcludeWidgetNode);\n }, [tiddlerTitle, containerRef.current]);\n }\n var import_react410 = require(\"react\");\n function useWidget2(parseTreeNode, containerRef) {\n const parentWidget = (0, import_react410.useContext)(ParentWidgetContext3);\n (0, import_react410.useEffect)(() => {\n if (containerRef.current === null) {\n return;\n }\n if (parentWidget === void 0) {\n throw new Error(\"Your plugin have a bug: `parentWidget` is undefined, you should use ``, see tw-react for document.\");\n }\n const newWidgetNode = parentWidget.makeChildWidget(parseTreeNode, {});\n newWidgetNode.render(containerRef.current, null);\n parentWidget.children.push(newWidgetNode);\n }, [parseTreeNode, containerRef]);\n }\n }\n});\n\n// node_modules/lodash/cloneDeep.js\nvar require_cloneDeep = __commonJS({\n \"node_modules/lodash/cloneDeep.js\"(exports2, module2) {\n var baseClone3 = require_baseClone();\n var CLONE_DEEP_FLAG3 = 1;\n var CLONE_SYMBOLS_FLAG3 = 4;\n function cloneDeep4(value) {\n return baseClone3(value, CLONE_DEEP_FLAG3 | CLONE_SYMBOLS_FLAG3);\n }\n module2.exports = cloneDeep4;\n }\n});\n\n// node_modules/lodash/_setCacheAdd.js\nvar require_setCacheAdd = __commonJS({\n \"node_modules/lodash/_setCacheAdd.js\"(exports2, module2) {\n var HASH_UNDEFINED4 = \"__lodash_hash_undefined__\";\n function setCacheAdd3(value) {\n this.__data__.set(value, HASH_UNDEFINED4);\n return this;\n }\n module2.exports = setCacheAdd3;\n }\n});\n\n// node_modules/lodash/_setCacheHas.js\nvar require_setCacheHas = __commonJS({\n \"node_modules/lodash/_setCacheHas.js\"(exports2, module2) {\n function setCacheHas3(value) {\n return this.__data__.has(value);\n }\n module2.exports = setCacheHas3;\n }\n});\n\n// node_modules/lodash/_SetCache.js\nvar require_SetCache = __commonJS({\n \"node_modules/lodash/_SetCache.js\"(exports2, module2) {\n var MapCache4 = require_MapCache();\n var setCacheAdd3 = require_setCacheAdd();\n var setCacheHas3 = require_setCacheHas();\n function SetCache3(values2) {\n var index7 = -1, length = values2 == null ? 0 : values2.length;\n this.__data__ = new MapCache4();\n while (++index7 < length) {\n this.add(values2[index7]);\n }\n }\n SetCache3.prototype.add = SetCache3.prototype.push = setCacheAdd3;\n SetCache3.prototype.has = setCacheHas3;\n module2.exports = SetCache3;\n }\n});\n\n// node_modules/lodash/_arraySome.js\nvar require_arraySome = __commonJS({\n \"node_modules/lodash/_arraySome.js\"(exports2, module2) {\n function arraySome2(array, predicate) {\n var index7 = -1, length = array == null ? 0 : array.length;\n while (++index7 < length) {\n if (predicate(array[index7], index7, array)) {\n return true;\n }\n }\n return false;\n }\n module2.exports = arraySome2;\n }\n});\n\n// node_modules/lodash/_cacheHas.js\nvar require_cacheHas = __commonJS({\n \"node_modules/lodash/_cacheHas.js\"(exports2, module2) {\n function cacheHas2(cache2, key) {\n return cache2.has(key);\n }\n module2.exports = cacheHas2;\n }\n});\n\n// node_modules/lodash/_equalArrays.js\nvar require_equalArrays = __commonJS({\n \"node_modules/lodash/_equalArrays.js\"(exports2, module2) {\n var SetCache3 = require_SetCache();\n var arraySome2 = require_arraySome();\n var cacheHas2 = require_cacheHas();\n var COMPARE_PARTIAL_FLAG2 = 1;\n var COMPARE_UNORDERED_FLAG2 = 2;\n function equalArrays2(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG2, arrLength = array.length, othLength = other.length;\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index7 = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG2 ? new SetCache3() : void 0;\n stack.set(array, other);\n stack.set(other, array);\n while (++index7 < arrLength) {\n var arrValue = array[index7], othValue = other[index7];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index7, other, array, stack) : customizer(arrValue, othValue, index7, array, other, stack);\n }\n if (compared !== void 0) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n if (seen) {\n if (!arraySome2(other, function(othValue2, othIndex) {\n if (!cacheHas2(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack[\"delete\"](array);\n stack[\"delete\"](other);\n return result;\n }\n module2.exports = equalArrays2;\n }\n});\n\n// node_modules/lodash/_mapToArray.js\nvar require_mapToArray = __commonJS({\n \"node_modules/lodash/_mapToArray.js\"(exports2, module2) {\n function mapToArray2(map2) {\n var index7 = -1, result = Array(map2.size);\n map2.forEach(function(value, key) {\n result[++index7] = [key, value];\n });\n return result;\n }\n module2.exports = mapToArray2;\n }\n});\n\n// node_modules/lodash/_setToArray.js\nvar require_setToArray = __commonJS({\n \"node_modules/lodash/_setToArray.js\"(exports2, module2) {\n function setToArray2(set) {\n var index7 = -1, result = Array(set.size);\n set.forEach(function(value) {\n result[++index7] = value;\n });\n return result;\n }\n module2.exports = setToArray2;\n }\n});\n\n// node_modules/lodash/_equalByTag.js\nvar require_equalByTag = __commonJS({\n \"node_modules/lodash/_equalByTag.js\"(exports2, module2) {\n var Symbol5 = require_Symbol();\n var Uint8Array5 = require_Uint8Array();\n var eq4 = require_eq();\n var equalArrays2 = require_equalArrays();\n var mapToArray2 = require_mapToArray();\n var setToArray2 = require_setToArray();\n var COMPARE_PARTIAL_FLAG2 = 1;\n var COMPARE_UNORDERED_FLAG2 = 2;\n var boolTag3 = \"[object Boolean]\";\n var dateTag3 = \"[object Date]\";\n var errorTag3 = \"[object Error]\";\n var mapTag4 = \"[object Map]\";\n var numberTag3 = \"[object Number]\";\n var regexpTag3 = \"[object RegExp]\";\n var setTag4 = \"[object Set]\";\n var stringTag3 = \"[object String]\";\n var symbolTag4 = \"[object Symbol]\";\n var arrayBufferTag3 = \"[object ArrayBuffer]\";\n var dataViewTag4 = \"[object DataView]\";\n var symbolProto4 = Symbol5 ? Symbol5.prototype : void 0;\n var symbolValueOf4 = symbolProto4 ? symbolProto4.valueOf : void 0;\n function equalByTag2(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag4:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag3:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array5(object), new Uint8Array5(other))) {\n return false;\n }\n return true;\n case boolTag3:\n case dateTag3:\n case numberTag3:\n return eq4(+object, +other);\n case errorTag3:\n return object.name == other.name && object.message == other.message;\n case regexpTag3:\n case stringTag3:\n return object == other + \"\";\n case mapTag4:\n var convert = mapToArray2;\n case setTag4:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG2;\n convert || (convert = setToArray2);\n if (object.size != other.size && !isPartial) {\n return false;\n }\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG2;\n stack.set(object, other);\n var result = equalArrays2(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack[\"delete\"](object);\n return result;\n case symbolTag4:\n if (symbolValueOf4) {\n return symbolValueOf4.call(object) == symbolValueOf4.call(other);\n }\n }\n return false;\n }\n module2.exports = equalByTag2;\n }\n});\n\n// node_modules/lodash/_equalObjects.js\nvar require_equalObjects = __commonJS({\n \"node_modules/lodash/_equalObjects.js\"(exports2, module2) {\n var getAllKeys3 = require_getAllKeys();\n var COMPARE_PARTIAL_FLAG2 = 1;\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function equalObjects2(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG2, objProps = getAllKeys3(object), objLength = objProps.length, othProps = getAllKeys3(other), othLength = othProps.length;\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index7 = objLength;\n while (index7--) {\n var key = objProps[index7];\n if (!(isPartial ? key in other : hasOwnProperty6.call(other, key))) {\n return false;\n }\n }\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n while (++index7 < objLength) {\n key = objProps[index7];\n var objValue = object[key], othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == \"constructor\");\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor, othCtor = other.constructor;\n if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack[\"delete\"](object);\n stack[\"delete\"](other);\n return result;\n }\n module2.exports = equalObjects2;\n }\n});\n\n// node_modules/lodash/_baseIsEqualDeep.js\nvar require_baseIsEqualDeep = __commonJS({\n \"node_modules/lodash/_baseIsEqualDeep.js\"(exports2, module2) {\n var Stack4 = require_Stack();\n var equalArrays2 = require_equalArrays();\n var equalByTag2 = require_equalByTag();\n var equalObjects2 = require_equalObjects();\n var getTag4 = require_getTag();\n var isArray8 = require_isArray();\n var isBuffer = require_isBuffer();\n var isTypedArray4 = require_isTypedArray();\n var COMPARE_PARTIAL_FLAG2 = 1;\n var argsTag3 = \"[object Arguments]\";\n var arrayTag3 = \"[object Array]\";\n var objectTag3 = \"[object Object]\";\n var objectProto5 = Object.prototype;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n function baseIsEqualDeep2(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray8(object), othIsArr = isArray8(other), objTag = objIsArr ? arrayTag3 : getTag4(object), othTag = othIsArr ? arrayTag3 : getTag4(other);\n objTag = objTag == argsTag3 ? objectTag3 : objTag;\n othTag = othTag == argsTag3 ? objectTag3 : othTag;\n var objIsObj = objTag == objectTag3, othIsObj = othTag == objectTag3, isSameTag = objTag == othTag;\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack4());\n return objIsArr || isTypedArray4(object) ? equalArrays2(object, other, bitmask, customizer, equalFunc, stack) : equalByTag2(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG2)) {\n var objIsWrapped = objIsObj && hasOwnProperty6.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty6.call(other, \"__wrapped__\");\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack4());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack4());\n return equalObjects2(object, other, bitmask, customizer, equalFunc, stack);\n }\n module2.exports = baseIsEqualDeep2;\n }\n});\n\n// node_modules/lodash/_baseIsEqual.js\nvar require_baseIsEqual = __commonJS({\n \"node_modules/lodash/_baseIsEqual.js\"(exports2, module2) {\n var baseIsEqualDeep2 = require_baseIsEqualDeep();\n var isObjectLike5 = require_isObjectLike();\n function baseIsEqual2(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike5(value) && !isObjectLike5(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep2(value, other, bitmask, customizer, baseIsEqual2, stack);\n }\n module2.exports = baseIsEqual2;\n }\n});\n\n// node_modules/lodash/_baseIsMatch.js\nvar require_baseIsMatch = __commonJS({\n \"node_modules/lodash/_baseIsMatch.js\"(exports2, module2) {\n var Stack4 = require_Stack();\n var baseIsEqual2 = require_baseIsEqual();\n var COMPARE_PARTIAL_FLAG2 = 1;\n var COMPARE_UNORDERED_FLAG2 = 2;\n function baseIsMatch2(object, source, matchData, customizer) {\n var index7 = matchData.length, length = index7, noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index7--) {\n var data = matchData[index7];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index7 < length) {\n data = matchData[index7];\n var key = data[0], objValue = object[key], srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === void 0 && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack4();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === void 0 ? baseIsEqual2(srcValue, objValue, COMPARE_PARTIAL_FLAG2 | COMPARE_UNORDERED_FLAG2, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n }\n module2.exports = baseIsMatch2;\n }\n});\n\n// node_modules/lodash/_isStrictComparable.js\nvar require_isStrictComparable = __commonJS({\n \"node_modules/lodash/_isStrictComparable.js\"(exports2, module2) {\n var isObject7 = require_isObject();\n function isStrictComparable2(value) {\n return value === value && !isObject7(value);\n }\n module2.exports = isStrictComparable2;\n }\n});\n\n// node_modules/lodash/_getMatchData.js\nvar require_getMatchData = __commonJS({\n \"node_modules/lodash/_getMatchData.js\"(exports2, module2) {\n var isStrictComparable2 = require_isStrictComparable();\n var keys3 = require_keys();\n function getMatchData2(object) {\n var result = keys3(object), length = result.length;\n while (length--) {\n var key = result[length], value = object[key];\n result[length] = [key, value, isStrictComparable2(value)];\n }\n return result;\n }\n module2.exports = getMatchData2;\n }\n});\n\n// node_modules/lodash/_matchesStrictComparable.js\nvar require_matchesStrictComparable = __commonJS({\n \"node_modules/lodash/_matchesStrictComparable.js\"(exports2, module2) {\n function matchesStrictComparable2(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));\n };\n }\n module2.exports = matchesStrictComparable2;\n }\n});\n\n// node_modules/lodash/_baseMatches.js\nvar require_baseMatches = __commonJS({\n \"node_modules/lodash/_baseMatches.js\"(exports2, module2) {\n var baseIsMatch2 = require_baseIsMatch();\n var getMatchData2 = require_getMatchData();\n var matchesStrictComparable2 = require_matchesStrictComparable();\n function baseMatches2(source) {\n var matchData = getMatchData2(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable2(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch2(object, source, matchData);\n };\n }\n module2.exports = baseMatches2;\n }\n});\n\n// node_modules/lodash/get.js\nvar require_get = __commonJS({\n \"node_modules/lodash/get.js\"(exports2, module2) {\n var baseGet2 = require_baseGet();\n function get3(object, path, defaultValue) {\n var result = object == null ? void 0 : baseGet2(object, path);\n return result === void 0 ? defaultValue : result;\n }\n module2.exports = get3;\n }\n});\n\n// node_modules/lodash/_baseMatchesProperty.js\nvar require_baseMatchesProperty = __commonJS({\n \"node_modules/lodash/_baseMatchesProperty.js\"(exports2, module2) {\n var baseIsEqual2 = require_baseIsEqual();\n var get3 = require_get();\n var hasIn2 = require_hasIn();\n var isKey2 = require_isKey();\n var isStrictComparable2 = require_isStrictComparable();\n var matchesStrictComparable2 = require_matchesStrictComparable();\n var toKey2 = require_toKey();\n var COMPARE_PARTIAL_FLAG2 = 1;\n var COMPARE_UNORDERED_FLAG2 = 2;\n function baseMatchesProperty2(path, srcValue) {\n if (isKey2(path) && isStrictComparable2(srcValue)) {\n return matchesStrictComparable2(toKey2(path), srcValue);\n }\n return function(object) {\n var objValue = get3(object, path);\n return objValue === void 0 && objValue === srcValue ? hasIn2(object, path) : baseIsEqual2(srcValue, objValue, COMPARE_PARTIAL_FLAG2 | COMPARE_UNORDERED_FLAG2);\n };\n }\n module2.exports = baseMatchesProperty2;\n }\n});\n\n// node_modules/lodash/_baseProperty.js\nvar require_baseProperty = __commonJS({\n \"node_modules/lodash/_baseProperty.js\"(exports2, module2) {\n function baseProperty2(key) {\n return function(object) {\n return object == null ? void 0 : object[key];\n };\n }\n module2.exports = baseProperty2;\n }\n});\n\n// node_modules/lodash/_basePropertyDeep.js\nvar require_basePropertyDeep = __commonJS({\n \"node_modules/lodash/_basePropertyDeep.js\"(exports2, module2) {\n var baseGet2 = require_baseGet();\n function basePropertyDeep2(path) {\n return function(object) {\n return baseGet2(object, path);\n };\n }\n module2.exports = basePropertyDeep2;\n }\n});\n\n// node_modules/lodash/property.js\nvar require_property2 = __commonJS({\n \"node_modules/lodash/property.js\"(exports2, module2) {\n var baseProperty2 = require_baseProperty();\n var basePropertyDeep2 = require_basePropertyDeep();\n var isKey2 = require_isKey();\n var toKey2 = require_toKey();\n function property2(path) {\n return isKey2(path) ? baseProperty2(toKey2(path)) : basePropertyDeep2(path);\n }\n module2.exports = property2;\n }\n});\n\n// node_modules/lodash/_baseIteratee.js\nvar require_baseIteratee = __commonJS({\n \"node_modules/lodash/_baseIteratee.js\"(exports2, module2) {\n var baseMatches2 = require_baseMatches();\n var baseMatchesProperty2 = require_baseMatchesProperty();\n var identity2 = require_identity();\n var isArray8 = require_isArray();\n var property2 = require_property2();\n function baseIteratee2(value) {\n if (typeof value == \"function\") {\n return value;\n }\n if (value == null) {\n return identity2;\n }\n if (typeof value == \"object\") {\n return isArray8(value) ? baseMatchesProperty2(value[0], value[1]) : baseMatches2(value);\n }\n return property2(value);\n }\n module2.exports = baseIteratee2;\n }\n});\n\n// node_modules/lodash/_baseWhile.js\nvar require_baseWhile = __commonJS({\n \"node_modules/lodash/_baseWhile.js\"(exports2, module2) {\n var baseSlice2 = require_baseSlice();\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length, index7 = fromRight ? length : -1;\n while ((fromRight ? index7-- : ++index7 < length) && predicate(array[index7], index7, array)) {\n }\n return isDrop ? baseSlice2(array, fromRight ? 0 : index7, fromRight ? index7 + 1 : length) : baseSlice2(array, fromRight ? index7 + 1 : 0, fromRight ? length : index7);\n }\n module2.exports = baseWhile;\n }\n});\n\n// node_modules/lodash/dropRightWhile.js\nvar require_dropRightWhile = __commonJS({\n \"node_modules/lodash/dropRightWhile.js\"(exports2, module2) {\n var baseIteratee2 = require_baseIteratee();\n var baseWhile = require_baseWhile();\n function dropRightWhile2(array, predicate) {\n return array && array.length ? baseWhile(array, baseIteratee2(predicate, 3), true, true) : [];\n }\n module2.exports = dropRightWhile2;\n }\n});\n\n// node_modules/lodash/_baseRepeat.js\nvar require_baseRepeat = __commonJS({\n \"node_modules/lodash/_baseRepeat.js\"(exports2, module2) {\n var MAX_SAFE_INTEGER4 = 9007199254740991;\n var nativeFloor = Math.floor;\n function baseRepeat(string2, n6) {\n var result = \"\";\n if (!string2 || n6 < 1 || n6 > MAX_SAFE_INTEGER4) {\n return result;\n }\n do {\n if (n6 % 2) {\n result += string2;\n }\n n6 = nativeFloor(n6 / 2);\n if (n6) {\n string2 += string2;\n }\n } while (n6);\n return result;\n }\n module2.exports = baseRepeat;\n }\n});\n\n// node_modules/lodash/_isIterateeCall.js\nvar require_isIterateeCall = __commonJS({\n \"node_modules/lodash/_isIterateeCall.js\"(exports2, module2) {\n var eq4 = require_eq();\n var isArrayLike3 = require_isArrayLike();\n var isIndex3 = require_isIndex();\n var isObject7 = require_isObject();\n function isIterateeCall2(value, index7, object) {\n if (!isObject7(object)) {\n return false;\n }\n var type = typeof index7;\n if (type == \"number\" ? isArrayLike3(object) && isIndex3(index7, object.length) : type == \"string\" && index7 in object) {\n return eq4(object[index7], value);\n }\n return false;\n }\n module2.exports = isIterateeCall2;\n }\n});\n\n// node_modules/lodash/toFinite.js\nvar require_toFinite = __commonJS({\n \"node_modules/lodash/toFinite.js\"(exports2, module2) {\n var toNumber2 = require_toNumber();\n var INFINITY3 = 1 / 0;\n var MAX_INTEGER = 17976931348623157e292;\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber2(value);\n if (value === INFINITY3 || value === -INFINITY3) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n module2.exports = toFinite;\n }\n});\n\n// node_modules/lodash/toInteger.js\nvar require_toInteger = __commonJS({\n \"node_modules/lodash/toInteger.js\"(exports2, module2) {\n var toFinite = require_toFinite();\n function toInteger(value) {\n var result = toFinite(value), remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n }\n module2.exports = toInteger;\n }\n});\n\n// node_modules/lodash/repeat.js\nvar require_repeat = __commonJS({\n \"node_modules/lodash/repeat.js\"(exports2, module2) {\n var baseRepeat = require_baseRepeat();\n var isIterateeCall2 = require_isIterateeCall();\n var toInteger = require_toInteger();\n var toString2 = require_toString();\n function repeat4(string2, n6, guard) {\n if (guard ? isIterateeCall2(string2, n6, guard) : n6 === void 0) {\n n6 = 1;\n } else {\n n6 = toInteger(n6);\n }\n return baseRepeat(toString2(string2), n6);\n }\n module2.exports = repeat4;\n }\n});\n\n// node_modules/unist-util-find/node_modules/unist-util-is/convert.js\nvar require_convert = __commonJS({\n \"node_modules/unist-util-find/node_modules/unist-util-is/convert.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = convert;\n function convert(test) {\n if (typeof test === \"string\") {\n return typeFactory(test);\n }\n if (test === null || test === void 0) {\n return ok;\n }\n if (typeof test === \"object\") {\n return (\"length\" in test ? anyFactory : matchesFactory)(test);\n }\n if (typeof test === \"function\") {\n return test;\n }\n throw new Error(\"Expected function, string, or object as test\");\n }\n function convertAll(tests) {\n var results = [];\n var length = tests.length;\n var index7 = -1;\n while (++index7 < length) {\n results[index7] = convert(tests[index7]);\n }\n return results;\n }\n function matchesFactory(test) {\n return matches;\n function matches(node) {\n var key;\n for (key in test) {\n if (node[key] !== test[key]) {\n return false;\n }\n }\n return true;\n }\n }\n function anyFactory(tests) {\n var checks = convertAll(tests);\n var length = checks.length;\n return matches;\n function matches() {\n var index7 = -1;\n while (++index7 < length) {\n if (checks[index7].apply(this, arguments)) {\n return true;\n }\n }\n return false;\n }\n }\n function typeFactory(test) {\n return type;\n function type(node) {\n return Boolean(node && node.type === test);\n }\n }\n function ok() {\n return true;\n }\n }\n});\n\n// node_modules/unist-util-find/node_modules/unist-util-visit-parents/index.js\nvar require_unist_util_visit_parents = __commonJS({\n \"node_modules/unist-util-find/node_modules/unist-util-visit-parents/index.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = visitParents;\n var convert = require_convert();\n var CONTINUE = true;\n var SKIP = \"skip\";\n var EXIT = false;\n visitParents.CONTINUE = CONTINUE;\n visitParents.SKIP = SKIP;\n visitParents.EXIT = EXIT;\n function visitParents(tree, test, visitor, reverse) {\n var is4;\n if (typeof test === \"function\" && typeof visitor !== \"function\") {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n is4 = convert(test);\n one(tree, null, []);\n function one(node, index7, parents2) {\n var result = [];\n var subresult;\n if (!test || is4(node, index7, parents2[parents2.length - 1] || null)) {\n result = toResult(visitor(node, parents2));\n if (result[0] === EXIT) {\n return result;\n }\n }\n if (node.children && result[0] !== SKIP) {\n subresult = toResult(all(node.children, parents2.concat(node)));\n return subresult[0] === EXIT ? subresult : result;\n }\n return result;\n }\n function all(children, parents2) {\n var min3 = -1;\n var step = reverse ? -1 : 1;\n var index7 = (reverse ? children.length : min3) + step;\n var result;\n while (index7 > min3 && index7 < children.length) {\n result = one(children[index7], index7, parents2);\n if (result[0] === EXIT) {\n return result;\n }\n index7 = typeof result[1] === \"number\" ? result[1] : index7 + step;\n }\n }\n }\n function toResult(value) {\n if (value !== null && typeof value === \"object\" && \"length\" in value) {\n return value;\n }\n if (typeof value === \"number\") {\n return [CONTINUE, value];\n }\n return [value];\n }\n }\n});\n\n// node_modules/unist-util-find/node_modules/unist-util-visit/index.js\nvar require_unist_util_visit = __commonJS({\n \"node_modules/unist-util-find/node_modules/unist-util-visit/index.js\"(exports2, module2) {\n \"use strict\";\n module2.exports = visit;\n var visitParents = require_unist_util_visit_parents();\n var CONTINUE = visitParents.CONTINUE;\n var SKIP = visitParents.SKIP;\n var EXIT = visitParents.EXIT;\n visit.CONTINUE = CONTINUE;\n visit.SKIP = SKIP;\n visit.EXIT = EXIT;\n function visit(tree, test, visitor, reverse) {\n if (typeof test === \"function\" && typeof visitor !== \"function\") {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n visitParents(tree, test, overload, reverse);\n function overload(node, parents2) {\n var parent2 = parents2[parents2.length - 1];\n var index7 = parent2 ? parent2.children.indexOf(node) : null;\n return visitor(node, index7, parent2);\n }\n }\n }\n});\n\n// node_modules/lodash.iteratee/index.js\nvar require_lodash3 = __commonJS({\n \"node_modules/lodash.iteratee/index.js\"(exports2, module2) {\n var LARGE_ARRAY_SIZE4 = 200;\n var FUNC_ERROR_TEXT4 = \"Expected a function\";\n var HASH_UNDEFINED4 = \"__lodash_hash_undefined__\";\n var UNORDERED_COMPARE_FLAG = 1;\n var PARTIAL_COMPARE_FLAG = 2;\n var INFINITY3 = 1 / 0;\n var MAX_SAFE_INTEGER4 = 9007199254740991;\n var argsTag3 = \"[object Arguments]\";\n var arrayTag3 = \"[object Array]\";\n var boolTag3 = \"[object Boolean]\";\n var dateTag3 = \"[object Date]\";\n var errorTag3 = \"[object Error]\";\n var funcTag4 = \"[object Function]\";\n var genTag4 = \"[object GeneratorFunction]\";\n var mapTag4 = \"[object Map]\";\n var numberTag3 = \"[object Number]\";\n var objectTag3 = \"[object Object]\";\n var promiseTag4 = \"[object Promise]\";\n var regexpTag3 = \"[object RegExp]\";\n var setTag4 = \"[object Set]\";\n var stringTag3 = \"[object String]\";\n var symbolTag4 = \"[object Symbol]\";\n var weakMapTag4 = \"[object WeakMap]\";\n var arrayBufferTag3 = \"[object ArrayBuffer]\";\n var dataViewTag4 = \"[object DataView]\";\n var float32Tag4 = \"[object Float32Array]\";\n var float64Tag4 = \"[object Float64Array]\";\n var int8Tag4 = \"[object Int8Array]\";\n var int16Tag4 = \"[object Int16Array]\";\n var int32Tag4 = \"[object Int32Array]\";\n var uint8Tag4 = \"[object Uint8Array]\";\n var uint8ClampedTag4 = \"[object Uint8ClampedArray]\";\n var uint16Tag4 = \"[object Uint16Array]\";\n var uint32Tag4 = \"[object Uint32Array]\";\n var reIsDeepProp2 = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/;\n var reIsPlainProp2 = /^\\w*$/;\n var reLeadingDot = /^\\./;\n var rePropName3 = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n var reRegExpChar4 = /[\\\\^$.*+?()[\\]{}|]/g;\n var reEscapeChar3 = /\\\\(\\\\)?/g;\n var reFlags3 = /\\w*$/;\n var reIsHostCtor4 = /^\\[object .+?Constructor\\]$/;\n var reIsUint3 = /^(?:0|[1-9]\\d*)$/;\n var typedArrayTags4 = {};\n typedArrayTags4[float32Tag4] = typedArrayTags4[float64Tag4] = typedArrayTags4[int8Tag4] = typedArrayTags4[int16Tag4] = typedArrayTags4[int32Tag4] = typedArrayTags4[uint8Tag4] = typedArrayTags4[uint8ClampedTag4] = typedArrayTags4[uint16Tag4] = typedArrayTags4[uint32Tag4] = true;\n typedArrayTags4[argsTag3] = typedArrayTags4[arrayTag3] = typedArrayTags4[arrayBufferTag3] = typedArrayTags4[boolTag3] = typedArrayTags4[dataViewTag4] = typedArrayTags4[dateTag3] = typedArrayTags4[errorTag3] = typedArrayTags4[funcTag4] = typedArrayTags4[mapTag4] = typedArrayTags4[numberTag3] = typedArrayTags4[objectTag3] = typedArrayTags4[regexpTag3] = typedArrayTags4[setTag4] = typedArrayTags4[stringTag3] = typedArrayTags4[weakMapTag4] = false;\n var cloneableTags3 = {};\n cloneableTags3[argsTag3] = cloneableTags3[arrayTag3] = cloneableTags3[arrayBufferTag3] = cloneableTags3[dataViewTag4] = cloneableTags3[boolTag3] = cloneableTags3[dateTag3] = cloneableTags3[float32Tag4] = cloneableTags3[float64Tag4] = cloneableTags3[int8Tag4] = cloneableTags3[int16Tag4] = cloneableTags3[int32Tag4] = cloneableTags3[mapTag4] = cloneableTags3[numberTag3] = cloneableTags3[objectTag3] = cloneableTags3[regexpTag3] = cloneableTags3[setTag4] = cloneableTags3[stringTag3] = cloneableTags3[symbolTag4] = cloneableTags3[uint8Tag4] = cloneableTags3[uint8ClampedTag4] = cloneableTags3[uint16Tag4] = cloneableTags3[uint32Tag4] = true;\n cloneableTags3[errorTag3] = cloneableTags3[funcTag4] = cloneableTags3[weakMapTag4] = false;\n var freeGlobal5 = typeof global == \"object\" && global && global.Object === Object && global;\n var freeSelf5 = typeof self == \"object\" && self && self.Object === Object && self;\n var root5 = freeGlobal5 || freeSelf5 || Function(\"return this\")();\n var freeExports = typeof exports2 == \"object\" && exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && typeof module2 == \"object\" && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var freeProcess = moduleExports && freeGlobal5.process;\n var nodeUtil = function() {\n try {\n return freeProcess && freeProcess.binding(\"util\");\n } catch (e4) {\n }\n }();\n var nodeIsTypedArray4 = nodeUtil && nodeUtil.isTypedArray;\n function addMapEntry(map2, pair) {\n map2.set(pair[0], pair[1]);\n return map2;\n }\n function addSetEntry(set, value) {\n set.add(value);\n return set;\n }\n function arrayEach3(array, iteratee2) {\n var index7 = -1, length = array ? array.length : 0;\n while (++index7 < length) {\n if (iteratee2(array[index7], index7, array) === false) {\n break;\n }\n }\n return array;\n }\n function arrayPush3(array, values2) {\n var index7 = -1, length = values2.length, offset3 = array.length;\n while (++index7 < length) {\n array[offset3 + index7] = values2[index7];\n }\n return array;\n }\n function arrayReduce(array, iteratee2, accumulator, initAccum) {\n var index7 = -1, length = array ? array.length : 0;\n if (initAccum && length) {\n accumulator = array[++index7];\n }\n while (++index7 < length) {\n accumulator = iteratee2(accumulator, array[index7], index7, array);\n }\n return accumulator;\n }\n function arraySome2(array, predicate) {\n var index7 = -1, length = array ? array.length : 0;\n while (++index7 < length) {\n if (predicate(array[index7], index7, array)) {\n return true;\n }\n }\n return false;\n }\n function baseProperty2(key) {\n return function(object) {\n return object == null ? void 0 : object[key];\n };\n }\n function baseTimes3(n6, iteratee2) {\n var index7 = -1, result = Array(n6);\n while (++index7 < n6) {\n result[index7] = iteratee2(index7);\n }\n return result;\n }\n function baseUnary4(func) {\n return function(value) {\n return func(value);\n };\n }\n function getValue4(object, key) {\n return object == null ? void 0 : object[key];\n }\n function isHostObject(value) {\n var result = false;\n if (value != null && typeof value.toString != \"function\") {\n try {\n result = !!(value + \"\");\n } catch (e4) {\n }\n }\n return result;\n }\n function mapToArray2(map2) {\n var index7 = -1, result = Array(map2.size);\n map2.forEach(function(value, key) {\n result[++index7] = [key, value];\n });\n return result;\n }\n function overArg4(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n function setToArray2(set) {\n var index7 = -1, result = Array(set.size);\n set.forEach(function(value) {\n result[++index7] = value;\n });\n return result;\n }\n var arrayProto4 = Array.prototype;\n var funcProto4 = Function.prototype;\n var objectProto5 = Object.prototype;\n var coreJsData4 = root5[\"__core-js_shared__\"];\n var maskSrcKey4 = function() {\n var uid = /[^.]+$/.exec(coreJsData4 && coreJsData4.keys && coreJsData4.keys.IE_PROTO || \"\");\n return uid ? \"Symbol(src)_1.\" + uid : \"\";\n }();\n var funcToString4 = funcProto4.toString;\n var hasOwnProperty6 = objectProto5.hasOwnProperty;\n var objectToString5 = objectProto5.toString;\n var reIsNative4 = RegExp(\"^\" + funcToString4.call(hasOwnProperty6).replace(reRegExpChar4, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\");\n var Buffer2 = moduleExports ? root5.Buffer : void 0;\n var Symbol5 = root5.Symbol;\n var Uint8Array5 = root5.Uint8Array;\n var getPrototype3 = overArg4(Object.getPrototypeOf, Object);\n var objectCreate3 = Object.create;\n var propertyIsEnumerable4 = objectProto5.propertyIsEnumerable;\n var splice4 = arrayProto4.splice;\n var nativeGetSymbols3 = Object.getOwnPropertySymbols;\n var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;\n var nativeKeys4 = overArg4(Object.keys, Object);\n var DataView4 = getNative4(root5, \"DataView\");\n var Map5 = getNative4(root5, \"Map\");\n var Promise2 = getNative4(root5, \"Promise\");\n var Set5 = getNative4(root5, \"Set\");\n var WeakMap4 = getNative4(root5, \"WeakMap\");\n var nativeCreate4 = getNative4(Object, \"create\");\n var dataViewCtorString4 = toSource4(DataView4);\n var mapCtorString4 = toSource4(Map5);\n var promiseCtorString4 = toSource4(Promise2);\n var setCtorString4 = toSource4(Set5);\n var weakMapCtorString4 = toSource4(WeakMap4);\n var symbolProto4 = Symbol5 ? Symbol5.prototype : void 0;\n var symbolValueOf4 = symbolProto4 ? symbolProto4.valueOf : void 0;\n var symbolToString3 = symbolProto4 ? symbolProto4.toString : void 0;\n function Hash4(entries) {\n var index7 = -1, length = entries ? entries.length : 0;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n }\n function hashClear4() {\n this.__data__ = nativeCreate4 ? nativeCreate4(null) : {};\n }\n function hashDelete4(key) {\n return this.has(key) && delete this.__data__[key];\n }\n function hashGet4(key) {\n var data = this.__data__;\n if (nativeCreate4) {\n var result = data[key];\n return result === HASH_UNDEFINED4 ? void 0 : result;\n }\n return hasOwnProperty6.call(data, key) ? data[key] : void 0;\n }\n function hashHas4(key) {\n var data = this.__data__;\n return nativeCreate4 ? data[key] !== void 0 : hasOwnProperty6.call(data, key);\n }\n function hashSet4(key, value) {\n var data = this.__data__;\n data[key] = nativeCreate4 && value === void 0 ? HASH_UNDEFINED4 : value;\n return this;\n }\n Hash4.prototype.clear = hashClear4;\n Hash4.prototype[\"delete\"] = hashDelete4;\n Hash4.prototype.get = hashGet4;\n Hash4.prototype.has = hashHas4;\n Hash4.prototype.set = hashSet4;\n function ListCache4(entries) {\n var index7 = -1, length = entries ? entries.length : 0;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n }\n function listCacheClear4() {\n this.__data__ = [];\n }\n function listCacheDelete4(key) {\n var data = this.__data__, index7 = assocIndexOf4(data, key);\n if (index7 < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index7 == lastIndex) {\n data.pop();\n } else {\n splice4.call(data, index7, 1);\n }\n return true;\n }\n function listCacheGet4(key) {\n var data = this.__data__, index7 = assocIndexOf4(data, key);\n return index7 < 0 ? void 0 : data[index7][1];\n }\n function listCacheHas4(key) {\n return assocIndexOf4(this.__data__, key) > -1;\n }\n function listCacheSet4(key, value) {\n var data = this.__data__, index7 = assocIndexOf4(data, key);\n if (index7 < 0) {\n data.push([key, value]);\n } else {\n data[index7][1] = value;\n }\n return this;\n }\n ListCache4.prototype.clear = listCacheClear4;\n ListCache4.prototype[\"delete\"] = listCacheDelete4;\n ListCache4.prototype.get = listCacheGet4;\n ListCache4.prototype.has = listCacheHas4;\n ListCache4.prototype.set = listCacheSet4;\n function MapCache4(entries) {\n var index7 = -1, length = entries ? entries.length : 0;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n }\n function mapCacheClear4() {\n this.__data__ = {\n \"hash\": new Hash4(),\n \"map\": new (Map5 || ListCache4)(),\n \"string\": new Hash4()\n };\n }\n function mapCacheDelete4(key) {\n return getMapData4(this, key)[\"delete\"](key);\n }\n function mapCacheGet4(key) {\n return getMapData4(this, key).get(key);\n }\n function mapCacheHas4(key) {\n return getMapData4(this, key).has(key);\n }\n function mapCacheSet4(key, value) {\n getMapData4(this, key).set(key, value);\n return this;\n }\n MapCache4.prototype.clear = mapCacheClear4;\n MapCache4.prototype[\"delete\"] = mapCacheDelete4;\n MapCache4.prototype.get = mapCacheGet4;\n MapCache4.prototype.has = mapCacheHas4;\n MapCache4.prototype.set = mapCacheSet4;\n function SetCache3(values2) {\n var index7 = -1, length = values2 ? values2.length : 0;\n this.__data__ = new MapCache4();\n while (++index7 < length) {\n this.add(values2[index7]);\n }\n }\n function setCacheAdd3(value) {\n this.__data__.set(value, HASH_UNDEFINED4);\n return this;\n }\n function setCacheHas3(value) {\n return this.__data__.has(value);\n }\n SetCache3.prototype.add = SetCache3.prototype.push = setCacheAdd3;\n SetCache3.prototype.has = setCacheHas3;\n function Stack4(entries) {\n this.__data__ = new ListCache4(entries);\n }\n function stackClear4() {\n this.__data__ = new ListCache4();\n }\n function stackDelete4(key) {\n return this.__data__[\"delete\"](key);\n }\n function stackGet4(key) {\n return this.__data__.get(key);\n }\n function stackHas4(key) {\n return this.__data__.has(key);\n }\n function stackSet4(key, value) {\n var cache2 = this.__data__;\n if (cache2 instanceof ListCache4) {\n var pairs = cache2.__data__;\n if (!Map5 || pairs.length < LARGE_ARRAY_SIZE4 - 1) {\n pairs.push([key, value]);\n return this;\n }\n cache2 = this.__data__ = new MapCache4(pairs);\n }\n cache2.set(key, value);\n return this;\n }\n Stack4.prototype.clear = stackClear4;\n Stack4.prototype[\"delete\"] = stackDelete4;\n Stack4.prototype.get = stackGet4;\n Stack4.prototype.has = stackHas4;\n Stack4.prototype.set = stackSet4;\n function arrayLikeKeys3(value, inherited) {\n var result = isArray8(value) || isArguments4(value) ? baseTimes3(value.length, String) : [];\n var length = result.length, skipIndexes = !!length;\n for (var key in value) {\n if ((inherited || hasOwnProperty6.call(value, key)) && !(skipIndexes && (key == \"length\" || isIndex3(key, length)))) {\n result.push(key);\n }\n }\n return result;\n }\n function assignValue3(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty6.call(object, key) && eq4(objValue, value)) || value === void 0 && !(key in object)) {\n object[key] = value;\n }\n }\n function assocIndexOf4(array, key) {\n var length = array.length;\n while (length--) {\n if (eq4(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n function baseAssign3(object, source) {\n return object && copyObject3(source, keys3(source), object);\n }\n function baseClone3(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== void 0) {\n return result;\n }\n if (!isObject7(value)) {\n return value;\n }\n var isArr = isArray8(value);\n if (isArr) {\n result = initCloneArray3(value);\n if (!isDeep) {\n return copyArray3(value, result);\n }\n } else {\n var tag = getTag4(value), isFunc = tag == funcTag4 || tag == genTag4;\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag3 || tag == argsTag3 || isFunc && !object) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject3(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols3(value, baseAssign3(result, value));\n }\n } else {\n if (!cloneableTags3[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag3(value, tag, baseClone3, isDeep);\n }\n }\n stack || (stack = new Stack4());\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n if (!isArr) {\n var props = isFull ? getAllKeys3(value) : keys3(value);\n }\n arrayEach3(props || value, function(subValue, key2) {\n if (props) {\n key2 = subValue;\n subValue = value[key2];\n }\n assignValue3(result, key2, baseClone3(subValue, isDeep, isFull, customizer, key2, value, stack));\n });\n return result;\n }\n function baseCreate3(proto) {\n return isObject7(proto) ? objectCreate3(proto) : {};\n }\n function baseGet2(object, path) {\n path = isKey2(path, object) ? [path] : castPath2(path);\n var index7 = 0, length = path.length;\n while (object != null && index7 < length) {\n object = object[toKey2(path[index7++])];\n }\n return index7 && index7 == length ? object : void 0;\n }\n function baseGetAllKeys3(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray8(object) ? result : arrayPush3(result, symbolsFunc(object));\n }\n function baseGetTag5(value) {\n return objectToString5.call(value);\n }\n function baseHasIn2(object, key) {\n return object != null && key in Object(object);\n }\n function baseIsEqual2(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObject7(value) && !isObjectLike5(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep2(value, other, baseIsEqual2, customizer, bitmask, stack);\n }\n function baseIsEqualDeep2(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray8(object), othIsArr = isArray8(other), objTag = arrayTag3, othTag = arrayTag3;\n if (!objIsArr) {\n objTag = getTag4(object);\n objTag = objTag == argsTag3 ? objectTag3 : objTag;\n }\n if (!othIsArr) {\n othTag = getTag4(other);\n othTag = othTag == argsTag3 ? objectTag3 : othTag;\n }\n var objIsObj = objTag == objectTag3 && !isHostObject(object), othIsObj = othTag == objectTag3 && !isHostObject(other), isSameTag = objTag == othTag;\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack4());\n return objIsArr || isTypedArray4(object) ? equalArrays2(object, other, equalFunc, customizer, bitmask, stack) : equalByTag2(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty6.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty6.call(other, \"__wrapped__\");\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack4());\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack4());\n return equalObjects2(object, other, equalFunc, customizer, bitmask, stack);\n }\n function baseIsMatch2(object, source, matchData, customizer) {\n var index7 = matchData.length, length = index7, noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index7--) {\n var data = matchData[index7];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index7 < length) {\n data = matchData[index7];\n var key = data[0], objValue = object[key], srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === void 0 && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack4();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === void 0 ? baseIsEqual2(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n }\n function baseIsNative4(value) {\n if (!isObject7(value) || isMasked4(value)) {\n return false;\n }\n var pattern = isFunction4(value) || isHostObject(value) ? reIsNative4 : reIsHostCtor4;\n return pattern.test(toSource4(value));\n }\n function baseIsTypedArray4(value) {\n return isObjectLike5(value) && isLength4(value.length) && !!typedArrayTags4[objectToString5.call(value)];\n }\n function baseIteratee2(value) {\n if (typeof value == \"function\") {\n return value;\n }\n if (value == null) {\n return identity2;\n }\n if (typeof value == \"object\") {\n return isArray8(value) ? baseMatchesProperty2(value[0], value[1]) : baseMatches2(value);\n }\n return property2(value);\n }\n function baseKeys3(object) {\n if (!isPrototype3(object)) {\n return nativeKeys4(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty6.call(object, key) && key != \"constructor\") {\n result.push(key);\n }\n }\n return result;\n }\n function baseMatches2(source) {\n var matchData = getMatchData2(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable2(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch2(object, source, matchData);\n };\n }\n function baseMatchesProperty2(path, srcValue) {\n if (isKey2(path) && isStrictComparable2(srcValue)) {\n return matchesStrictComparable2(toKey2(path), srcValue);\n }\n return function(object) {\n var objValue = get3(object, path);\n return objValue === void 0 && objValue === srcValue ? hasIn2(object, path) : baseIsEqual2(srcValue, objValue, void 0, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n }\n function basePropertyDeep2(path) {\n return function(object) {\n return baseGet2(object, path);\n };\n }\n function baseToString2(value) {\n if (typeof value == \"string\") {\n return value;\n }\n if (isSymbol3(value)) {\n return symbolToString3 ? symbolToString3.call(value) : \"\";\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY3 ? \"-0\" : result;\n }\n function castPath2(value) {\n return isArray8(value) ? value : stringToPath3(value);\n }\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n }\n function cloneArrayBuffer3(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array5(result).set(new Uint8Array5(arrayBuffer));\n return result;\n }\n function cloneDataView3(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer3(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n function cloneMap(map2, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray2(map2), true) : mapToArray2(map2);\n return arrayReduce(array, addMapEntry, new map2.constructor());\n }\n function cloneRegExp3(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags3.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n function cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray2(set), true) : setToArray2(set);\n return arrayReduce(array, addSetEntry, new set.constructor());\n }\n function cloneSymbol3(symbol) {\n return symbolValueOf4 ? Object(symbolValueOf4.call(symbol)) : {};\n }\n function cloneTypedArray3(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer3(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n function copyArray3(source, array) {\n var index7 = -1, length = source.length;\n array || (array = Array(length));\n while (++index7 < length) {\n array[index7] = source[index7];\n }\n return array;\n }\n function copyObject3(source, props, object, customizer) {\n object || (object = {});\n var index7 = -1, length = props.length;\n while (++index7 < length) {\n var key = props[index7];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;\n assignValue3(object, key, newValue === void 0 ? source[key] : newValue);\n }\n return object;\n }\n function copySymbols3(source, object) {\n return copyObject3(source, getSymbols3(source), object);\n }\n function equalArrays2(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG, arrLength = array.length, othLength = other.length;\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index7 = -1, result = true, seen = bitmask & UNORDERED_COMPARE_FLAG ? new SetCache3() : void 0;\n stack.set(array, other);\n stack.set(other, array);\n while (++index7 < arrLength) {\n var arrValue = array[index7], othValue = other[index7];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index7, other, array, stack) : customizer(arrValue, othValue, index7, array, other, stack);\n }\n if (compared !== void 0) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n if (seen) {\n if (!arraySome2(other, function(othValue2, othIndex) {\n if (!seen.has(othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n result = false;\n break;\n }\n }\n stack[\"delete\"](array);\n stack[\"delete\"](other);\n return result;\n }\n function equalByTag2(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag4:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag3:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array5(object), new Uint8Array5(other))) {\n return false;\n }\n return true;\n case boolTag3:\n case dateTag3:\n case numberTag3:\n return eq4(+object, +other);\n case errorTag3:\n return object.name == other.name && object.message == other.message;\n case regexpTag3:\n case stringTag3:\n return object == other + \"\";\n case mapTag4:\n var convert = mapToArray2;\n case setTag4:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray2);\n if (object.size != other.size && !isPartial) {\n return false;\n }\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n stack.set(object, other);\n var result = equalArrays2(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack[\"delete\"](object);\n return result;\n case symbolTag4:\n if (symbolValueOf4) {\n return symbolValueOf4.call(object) == symbolValueOf4.call(other);\n }\n }\n return false;\n }\n function equalObjects2(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG, objProps = keys3(object), objLength = objProps.length, othProps = keys3(other), othLength = othProps.length;\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index7 = objLength;\n while (index7--) {\n var key = objProps[index7];\n if (!(isPartial ? key in other : hasOwnProperty6.call(other, key))) {\n return false;\n }\n }\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n while (++index7 < objLength) {\n key = objProps[index7];\n var objValue = object[key], othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == \"constructor\");\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor, othCtor = other.constructor;\n if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack[\"delete\"](object);\n stack[\"delete\"](other);\n return result;\n }\n function getAllKeys3(object) {\n return baseGetAllKeys3(object, keys3, getSymbols3);\n }\n function getMapData4(map2, key) {\n var data = map2.__data__;\n return isKeyable4(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n }\n function getMatchData2(object) {\n var result = keys3(object), length = result.length;\n while (length--) {\n var key = result[length], value = object[key];\n result[length] = [key, value, isStrictComparable2(value)];\n }\n return result;\n }\n function getNative4(object, key) {\n var value = getValue4(object, key);\n return baseIsNative4(value) ? value : void 0;\n }\n var getSymbols3 = nativeGetSymbols3 ? overArg4(nativeGetSymbols3, Object) : stubArray3;\n var getTag4 = baseGetTag5;\n if (DataView4 && getTag4(new DataView4(new ArrayBuffer(1))) != dataViewTag4 || Map5 && getTag4(new Map5()) != mapTag4 || Promise2 && getTag4(Promise2.resolve()) != promiseTag4 || Set5 && getTag4(new Set5()) != setTag4 || WeakMap4 && getTag4(new WeakMap4()) != weakMapTag4) {\n getTag4 = function(value) {\n var result = objectToString5.call(value), Ctor = result == objectTag3 ? value.constructor : void 0, ctorString = Ctor ? toSource4(Ctor) : void 0;\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString4:\n return dataViewTag4;\n case mapCtorString4:\n return mapTag4;\n case promiseCtorString4:\n return promiseTag4;\n case setCtorString4:\n return setTag4;\n case weakMapCtorString4:\n return weakMapTag4;\n }\n }\n return result;\n };\n }\n function hasPath2(object, path, hasFunc) {\n path = isKey2(path, object) ? [path] : castPath2(path);\n var result, index7 = -1, length = path.length;\n while (++index7 < length) {\n var key = toKey2(path[index7]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength4(length) && isIndex3(key, length) && (isArray8(object) || isArguments4(object));\n }\n function initCloneArray3(array) {\n var length = array.length, result = array.constructor(length);\n if (length && typeof array[0] == \"string\" && hasOwnProperty6.call(array, \"index\")) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n function initCloneObject3(object) {\n return typeof object.constructor == \"function\" && !isPrototype3(object) ? baseCreate3(getPrototype3(object)) : {};\n }\n function initCloneByTag3(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag3:\n return cloneArrayBuffer3(object);\n case boolTag3:\n case dateTag3:\n return new Ctor(+object);\n case dataViewTag4:\n return cloneDataView3(object, isDeep);\n case float32Tag4:\n case float64Tag4:\n case int8Tag4:\n case int16Tag4:\n case int32Tag4:\n case uint8Tag4:\n case uint8ClampedTag4:\n case uint16Tag4:\n case uint32Tag4:\n return cloneTypedArray3(object, isDeep);\n case mapTag4:\n return cloneMap(object, isDeep, cloneFunc);\n case numberTag3:\n case stringTag3:\n return new Ctor(object);\n case regexpTag3:\n return cloneRegExp3(object);\n case setTag4:\n return cloneSet(object, isDeep, cloneFunc);\n case symbolTag4:\n return cloneSymbol3(object);\n }\n }\n function isIndex3(value, length) {\n length = length == null ? MAX_SAFE_INTEGER4 : length;\n return !!length && (typeof value == \"number\" || reIsUint3.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n }\n function isKey2(value, object) {\n if (isArray8(value)) {\n return false;\n }\n var type = typeof value;\n if (type == \"number\" || type == \"symbol\" || type == \"boolean\" || value == null || isSymbol3(value)) {\n return true;\n }\n return reIsPlainProp2.test(value) || !reIsDeepProp2.test(value) || object != null && value in Object(object);\n }\n function isKeyable4(value) {\n var type = typeof value;\n return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n }\n function isMasked4(func) {\n return !!maskSrcKey4 && maskSrcKey4 in func;\n }\n function isPrototype3(value) {\n var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto5;\n return value === proto;\n }\n function isStrictComparable2(value) {\n return value === value && !isObject7(value);\n }\n function matchesStrictComparable2(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));\n };\n }\n var stringToPath3 = memoize6(function(string2) {\n string2 = toString2(string2);\n var result = [];\n if (reLeadingDot.test(string2)) {\n result.push(\"\");\n }\n string2.replace(rePropName3, function(match2, number, quote, string3) {\n result.push(quote ? string3.replace(reEscapeChar3, \"$1\") : number || match2);\n });\n return result;\n });\n function toKey2(value) {\n if (typeof value == \"string\" || isSymbol3(value)) {\n return value;\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY3 ? \"-0\" : result;\n }\n function toSource4(func) {\n if (func != null) {\n try {\n return funcToString4.call(func);\n } catch (e4) {\n }\n try {\n return func + \"\";\n } catch (e4) {\n }\n }\n return \"\";\n }\n function memoize6(func, resolver) {\n if (typeof func != \"function\" || resolver && typeof resolver != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT4);\n }\n var memoized = function() {\n var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache2 = memoized.cache;\n if (cache2.has(key)) {\n return cache2.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache2.set(key, result);\n return result;\n };\n memoized.cache = new (memoize6.Cache || MapCache4)();\n return memoized;\n }\n memoize6.Cache = MapCache4;\n function eq4(value, other) {\n return value === other || value !== value && other !== other;\n }\n function isArguments4(value) {\n return isArrayLikeObject2(value) && hasOwnProperty6.call(value, \"callee\") && (!propertyIsEnumerable4.call(value, \"callee\") || objectToString5.call(value) == argsTag3);\n }\n var isArray8 = Array.isArray;\n function isArrayLike3(value) {\n return value != null && isLength4(value.length) && !isFunction4(value);\n }\n function isArrayLikeObject2(value) {\n return isObjectLike5(value) && isArrayLike3(value);\n }\n var isBuffer = nativeIsBuffer || stubFalse4;\n function isFunction4(value) {\n var tag = isObject7(value) ? objectToString5.call(value) : \"\";\n return tag == funcTag4 || tag == genTag4;\n }\n function isLength4(value) {\n return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER4;\n }\n function isObject7(value) {\n var type = typeof value;\n return !!value && (type == \"object\" || type == \"function\");\n }\n function isObjectLike5(value) {\n return !!value && typeof value == \"object\";\n }\n function isSymbol3(value) {\n return typeof value == \"symbol\" || isObjectLike5(value) && objectToString5.call(value) == symbolTag4;\n }\n var isTypedArray4 = nodeIsTypedArray4 ? baseUnary4(nodeIsTypedArray4) : baseIsTypedArray4;\n function toString2(value) {\n return value == null ? \"\" : baseToString2(value);\n }\n function get3(object, path, defaultValue) {\n var result = object == null ? void 0 : baseGet2(object, path);\n return result === void 0 ? defaultValue : result;\n }\n function hasIn2(object, path) {\n return object != null && hasPath2(object, path, baseHasIn2);\n }\n function keys3(object) {\n return isArrayLike3(object) ? arrayLikeKeys3(object) : baseKeys3(object);\n }\n function identity2(value) {\n return value;\n }\n function iteratee(func) {\n return baseIteratee2(typeof func == \"function\" ? func : baseClone3(func, true));\n }\n function property2(path) {\n return isKey2(path) ? baseProperty2(toKey2(path)) : basePropertyDeep2(path);\n }\n function stubArray3() {\n return [];\n }\n function stubFalse4() {\n return false;\n }\n module2.exports = iteratee;\n }\n});\n\n// node_modules/unist-util-find/index.js\nvar require_unist_util_find = __commonJS({\n \"node_modules/unist-util-find/index.js\"(exports2, module2) {\n \"use strict\";\n var visit = require_unist_util_visit();\n var iteratee = require_lodash3();\n function find2(tree, condition) {\n if (!tree)\n throw new Error(\"unist-find requires a tree to search\");\n if (!condition)\n throw new Error(\"unist-find requires a condition\");\n var predicate = iteratee(condition);\n var result;\n visit(tree, function(node) {\n if (predicate(node)) {\n result = node;\n return false;\n }\n });\n return result;\n }\n module2.exports = find2;\n }\n});\n\n// node_modules/typescript-styled-is/dist/styledIs.js\nvar require_styledIs = __commonJS({\n \"node_modules/typescript-styled-is/dist/styledIs.js\"(exports2) {\n \"use strict\";\n var __makeTemplateObject2 = exports2 && exports2.__makeTemplateObject || function(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", { value: raw });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n };\n var __spreadArrays2 = exports2 && exports2.__spreadArrays || function() {\n for (var s3 = 0, i3 = 0, il = arguments.length; i3 < il; i3++)\n s3 += arguments[i3].length;\n for (var r5 = Array(s3), k3 = 0, i3 = 0; i3 < il; i3++)\n for (var a5 = arguments[i3], j3 = 0, jl = a5.length; j3 < jl; j3++, k3++)\n r5[k3] = a5[j3];\n return r5;\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n var styled_components_1 = require_styled_components_browser_cjs();\n var styledIs = function(method) {\n return function(condition) {\n return function() {\n var names = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n names[_i] = arguments[_i];\n }\n var isValid = function(props) {\n return names[method](function(name) {\n return typeof name === \"string\" ? name in props ? Boolean(props[name]) === condition : !condition : name.valid(props);\n });\n };\n var getCss = function() {\n var styles2 = [];\n for (var _i2 = 0; _i2 < arguments.length; _i2++) {\n styles2[_i2] = arguments[_i2];\n }\n return function(props) {\n var style = styles2[0], rest = styles2.slice(1);\n return isValid(props) ? styled_components_1.css.apply(void 0, __spreadArrays2([style], rest)) : styled_components_1.css(templateObject_1 || (templateObject_1 = __makeTemplateObject2([\"\"], [\"\"])));\n };\n };\n getCss.valid = isValid;\n return getCss;\n };\n };\n };\n exports2.default = styledIs;\n var templateObject_1;\n }\n});\n\n// node_modules/typescript-styled-is/dist/index.js\nvar require_dist2 = __commonJS({\n \"node_modules/typescript-styled-is/dist/index.js\"(exports2) {\n \"use strict\";\n var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : { \"default\": mod };\n };\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n exports2.someNot = exports2.some = exports2.isNot = exports2.is = void 0;\n var styledIs_1 = __importDefault2(require_styledIs());\n var styledEvery = styledIs_1.default(\"every\");\n var is4 = styledEvery(true);\n exports2.is = is4;\n var isNot = styledEvery(false);\n exports2.isNot = isNot;\n var styledSome = styledIs_1.default(\"some\");\n var some = styledSome(true);\n exports2.some = some;\n var someNot = styledSome(false);\n exports2.someNot = someNot;\n exports2.default = is4;\n }\n});\n\n// src/editor/editor.tsx\nvar import_react108 = __toESM(require(\"react\"));\n\n// node_modules/@udecode/plate-core/dist/index.es.js\nvar import_react6 = __toESM(require(\"react\"));\n\n// node_modules/is-plain-object/dist/is-plain-object.mjs\nfunction isObject(o3) {\n return Object.prototype.toString.call(o3) === \"[object Object]\";\n}\nfunction isPlainObject(o3) {\n var ctor, prot;\n if (isObject(o3) === false)\n return false;\n ctor = o3.constructor;\n if (ctor === void 0)\n return true;\n prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n if (prot.hasOwnProperty(\"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\n\n// node_modules/immer/dist/immer.esm.js\nfunction n(n6) {\n for (var r5 = arguments.length, t5 = Array(r5 > 1 ? r5 - 1 : 0), e4 = 1; e4 < r5; e4++)\n t5[e4 - 1] = arguments[e4];\n if (true) {\n var i3 = Y[n6], o3 = i3 ? typeof i3 == \"function\" ? i3.apply(null, t5) : i3 : \"unknown error nr: \" + n6;\n throw Error(\"[Immer] \" + o3);\n }\n throw Error(\"[Immer] minified error nr: \" + n6 + (t5.length ? \" \" + t5.map(function(n7) {\n return \"'\" + n7 + \"'\";\n }).join(\",\") : \"\") + \". Find the full error at: https://bit.ly/3cXEKWf\");\n}\nfunction r(n6) {\n return !!n6 && !!n6[Q];\n}\nfunction t(n6) {\n return !!n6 && (function(n7) {\n if (!n7 || typeof n7 != \"object\")\n return false;\n var r5 = Object.getPrototypeOf(n7);\n if (r5 === null)\n return true;\n var t5 = Object.hasOwnProperty.call(r5, \"constructor\") && r5.constructor;\n return t5 === Object || typeof t5 == \"function\" && Function.toString.call(t5) === Z;\n }(n6) || Array.isArray(n6) || !!n6[L] || !!n6.constructor[L] || s(n6) || v(n6));\n}\nfunction i(n6, r5, t5) {\n t5 === void 0 && (t5 = false), o(n6) === 0 ? (t5 ? Object.keys : nn)(n6).forEach(function(e4) {\n t5 && typeof e4 == \"symbol\" || r5(e4, n6[e4], n6);\n }) : n6.forEach(function(t6, e4) {\n return r5(e4, t6, n6);\n });\n}\nfunction o(n6) {\n var r5 = n6[Q];\n return r5 ? r5.i > 3 ? r5.i - 4 : r5.i : Array.isArray(n6) ? 1 : s(n6) ? 2 : v(n6) ? 3 : 0;\n}\nfunction u(n6, r5) {\n return o(n6) === 2 ? n6.has(r5) : Object.prototype.hasOwnProperty.call(n6, r5);\n}\nfunction a(n6, r5) {\n return o(n6) === 2 ? n6.get(r5) : n6[r5];\n}\nfunction f(n6, r5, t5) {\n var e4 = o(n6);\n e4 === 2 ? n6.set(r5, t5) : e4 === 3 ? (n6.delete(r5), n6.add(t5)) : n6[r5] = t5;\n}\nfunction c(n6, r5) {\n return n6 === r5 ? n6 !== 0 || 1 / n6 == 1 / r5 : n6 != n6 && r5 != r5;\n}\nfunction s(n6) {\n return X && n6 instanceof Map;\n}\nfunction v(n6) {\n return q && n6 instanceof Set;\n}\nfunction p(n6) {\n return n6.o || n6.t;\n}\nfunction l(n6) {\n if (Array.isArray(n6))\n return Array.prototype.slice.call(n6);\n var r5 = rn(n6);\n delete r5[Q];\n for (var t5 = nn(r5), e4 = 0; e4 < t5.length; e4++) {\n var i3 = t5[e4], o3 = r5[i3];\n o3.writable === false && (o3.writable = true, o3.configurable = true), (o3.get || o3.set) && (r5[i3] = { configurable: true, writable: true, enumerable: o3.enumerable, value: n6[i3] });\n }\n return Object.create(Object.getPrototypeOf(n6), r5);\n}\nfunction d(n6, e4) {\n return e4 === void 0 && (e4 = false), y(n6) || r(n6) || !t(n6) ? n6 : (o(n6) > 1 && (n6.set = n6.add = n6.clear = n6.delete = h), Object.freeze(n6), e4 && i(n6, function(n7, r5) {\n return d(r5, true);\n }, true), n6);\n}\nfunction h() {\n n(2);\n}\nfunction y(n6) {\n return n6 == null || typeof n6 != \"object\" || Object.isFrozen(n6);\n}\nfunction b(r5) {\n var t5 = tn[r5];\n return t5 || n(18, r5), t5;\n}\nfunction m(n6, r5) {\n tn[n6] || (tn[n6] = r5);\n}\nfunction _() {\n return U || n(0), U;\n}\nfunction j(n6, r5) {\n r5 && (b(\"Patches\"), n6.u = [], n6.s = [], n6.v = r5);\n}\nfunction O(n6) {\n g(n6), n6.p.forEach(S), n6.p = null;\n}\nfunction g(n6) {\n n6 === U && (U = n6.l);\n}\nfunction w(n6) {\n return U = { p: [], l: U, h: n6, m: true, _: 0 };\n}\nfunction S(n6) {\n var r5 = n6[Q];\n r5.i === 0 || r5.i === 1 ? r5.j() : r5.O = true;\n}\nfunction P(r5, e4) {\n e4._ = e4.p.length;\n var i3 = e4.p[0], o3 = r5 !== void 0 && r5 !== i3;\n return e4.h.g || b(\"ES5\").S(e4, r5, o3), o3 ? (i3[Q].P && (O(e4), n(4)), t(r5) && (r5 = M(e4, r5), e4.l || x(e4, r5)), e4.u && b(\"Patches\").M(i3[Q].t, r5, e4.u, e4.s)) : r5 = M(e4, i3, []), O(e4), e4.u && e4.v(e4.u, e4.s), r5 !== H ? r5 : void 0;\n}\nfunction M(n6, r5, t5) {\n if (y(r5))\n return r5;\n var e4 = r5[Q];\n if (!e4)\n return i(r5, function(i3, o4) {\n return A(n6, e4, r5, i3, o4, t5);\n }, true), r5;\n if (e4.A !== n6)\n return r5;\n if (!e4.P)\n return x(n6, e4.t, true), e4.t;\n if (!e4.I) {\n e4.I = true, e4.A._--;\n var o3 = e4.i === 4 || e4.i === 5 ? e4.o = l(e4.k) : e4.o;\n i(e4.i === 3 ? new Set(o3) : o3, function(r6, i3) {\n return A(n6, e4, o3, r6, i3, t5);\n }), x(n6, o3, false), t5 && n6.u && b(\"Patches\").R(e4, t5, n6.u, n6.s);\n }\n return e4.o;\n}\nfunction A(e4, i3, o3, a5, c4, s3) {\n if (c4 === o3 && n(5), r(c4)) {\n var v3 = M(e4, c4, s3 && i3 && i3.i !== 3 && !u(i3.D, a5) ? s3.concat(a5) : void 0);\n if (f(o3, a5, v3), !r(v3))\n return;\n e4.m = false;\n }\n if (t(c4) && !y(c4)) {\n if (!e4.h.F && e4._ < 1)\n return;\n M(e4, c4), i3 && i3.A.l || x(e4, c4);\n }\n}\nfunction x(n6, r5, t5) {\n t5 === void 0 && (t5 = false), n6.h.F && n6.m && d(r5, t5);\n}\nfunction z(n6, r5) {\n var t5 = n6[Q];\n return (t5 ? p(t5) : n6)[r5];\n}\nfunction I(n6, r5) {\n if (r5 in n6)\n for (var t5 = Object.getPrototypeOf(n6); t5; ) {\n var e4 = Object.getOwnPropertyDescriptor(t5, r5);\n if (e4)\n return e4;\n t5 = Object.getPrototypeOf(t5);\n }\n}\nfunction k(n6) {\n n6.P || (n6.P = true, n6.l && k(n6.l));\n}\nfunction E(n6) {\n n6.o || (n6.o = l(n6.t));\n}\nfunction R(n6, r5, t5) {\n var e4 = s(r5) ? b(\"MapSet\").N(r5, t5) : v(r5) ? b(\"MapSet\").T(r5, t5) : n6.g ? function(n7, r6) {\n var t6 = Array.isArray(n7), e5 = { i: t6 ? 1 : 0, A: r6 ? r6.A : _(), P: false, I: false, D: {}, l: r6, t: n7, k: null, o: null, j: null, C: false }, i3 = e5, o3 = en;\n t6 && (i3 = [e5], o3 = on);\n var u4 = Proxy.revocable(i3, o3), a5 = u4.revoke, f4 = u4.proxy;\n return e5.k = f4, e5.j = a5, f4;\n }(r5, t5) : b(\"ES5\").J(r5, t5);\n return (t5 ? t5.A : _()).p.push(e4), e4;\n}\nfunction D(e4) {\n return r(e4) || n(22, e4), function n6(r5) {\n if (!t(r5))\n return r5;\n var e5, u4 = r5[Q], c4 = o(r5);\n if (u4) {\n if (!u4.P && (u4.i < 4 || !b(\"ES5\").K(u4)))\n return u4.t;\n u4.I = true, e5 = F(r5, c4), u4.I = false;\n } else\n e5 = F(r5, c4);\n return i(e5, function(r6, t5) {\n u4 && a(u4.t, r6) === t5 || f(e5, r6, n6(t5));\n }), c4 === 3 ? new Set(e5) : e5;\n }(e4);\n}\nfunction F(n6, r5) {\n switch (r5) {\n case 2:\n return new Map(n6);\n case 3:\n return Array.from(n6);\n }\n return l(n6);\n}\nfunction C() {\n function r5(n6, r6) {\n function t5() {\n this.constructor = n6;\n }\n a5(n6, r6), n6.prototype = (t5.prototype = r6.prototype, new t5());\n }\n function e4(n6) {\n n6.o || (n6.D = /* @__PURE__ */ new Map(), n6.o = new Map(n6.t));\n }\n function o3(n6) {\n n6.o || (n6.o = /* @__PURE__ */ new Set(), n6.t.forEach(function(r6) {\n if (t(r6)) {\n var e5 = R(n6.A.h, r6, n6);\n n6.p.set(r6, e5), n6.o.add(e5);\n } else\n n6.o.add(r6);\n }));\n }\n function u4(r6) {\n r6.O && n(3, JSON.stringify(p(r6)));\n }\n var a5 = function(n6, r6) {\n return (a5 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n7, r7) {\n n7.__proto__ = r7;\n } || function(n7, r7) {\n for (var t5 in r7)\n r7.hasOwnProperty(t5) && (n7[t5] = r7[t5]);\n })(n6, r6);\n }, f4 = function() {\n function n6(n7, r6) {\n return this[Q] = { i: 2, l: r6, A: r6 ? r6.A : _(), P: false, I: false, o: void 0, D: void 0, t: n7, k: this, C: false, O: false }, this;\n }\n r5(n6, Map);\n var o4 = n6.prototype;\n return Object.defineProperty(o4, \"size\", { get: function() {\n return p(this[Q]).size;\n } }), o4.has = function(n7) {\n return p(this[Q]).has(n7);\n }, o4.set = function(n7, r6) {\n var t5 = this[Q];\n return u4(t5), p(t5).has(n7) && p(t5).get(n7) === r6 || (e4(t5), k(t5), t5.D.set(n7, true), t5.o.set(n7, r6), t5.D.set(n7, true)), this;\n }, o4.delete = function(n7) {\n if (!this.has(n7))\n return false;\n var r6 = this[Q];\n return u4(r6), e4(r6), k(r6), r6.t.has(n7) ? r6.D.set(n7, false) : r6.D.delete(n7), r6.o.delete(n7), true;\n }, o4.clear = function() {\n var n7 = this[Q];\n u4(n7), p(n7).size && (e4(n7), k(n7), n7.D = /* @__PURE__ */ new Map(), i(n7.t, function(r6) {\n n7.D.set(r6, false);\n }), n7.o.clear());\n }, o4.forEach = function(n7, r6) {\n var t5 = this;\n p(this[Q]).forEach(function(e5, i3) {\n n7.call(r6, t5.get(i3), i3, t5);\n });\n }, o4.get = function(n7) {\n var r6 = this[Q];\n u4(r6);\n var i3 = p(r6).get(n7);\n if (r6.I || !t(i3))\n return i3;\n if (i3 !== r6.t.get(n7))\n return i3;\n var o5 = R(r6.A.h, i3, r6);\n return e4(r6), r6.o.set(n7, o5), o5;\n }, o4.keys = function() {\n return p(this[Q]).keys();\n }, o4.values = function() {\n var n7, r6 = this, t5 = this.keys();\n return (n7 = {})[V] = function() {\n return r6.values();\n }, n7.next = function() {\n var n8 = t5.next();\n return n8.done ? n8 : { done: false, value: r6.get(n8.value) };\n }, n7;\n }, o4.entries = function() {\n var n7, r6 = this, t5 = this.keys();\n return (n7 = {})[V] = function() {\n return r6.entries();\n }, n7.next = function() {\n var n8 = t5.next();\n if (n8.done)\n return n8;\n var e5 = r6.get(n8.value);\n return { done: false, value: [n8.value, e5] };\n }, n7;\n }, o4[V] = function() {\n return this.entries();\n }, n6;\n }(), c4 = function() {\n function n6(n7, r6) {\n return this[Q] = { i: 3, l: r6, A: r6 ? r6.A : _(), P: false, I: false, o: void 0, t: n7, k: this, p: /* @__PURE__ */ new Map(), O: false, C: false }, this;\n }\n r5(n6, Set);\n var t5 = n6.prototype;\n return Object.defineProperty(t5, \"size\", { get: function() {\n return p(this[Q]).size;\n } }), t5.has = function(n7) {\n var r6 = this[Q];\n return u4(r6), r6.o ? !!r6.o.has(n7) || !(!r6.p.has(n7) || !r6.o.has(r6.p.get(n7))) : r6.t.has(n7);\n }, t5.add = function(n7) {\n var r6 = this[Q];\n return u4(r6), this.has(n7) || (o3(r6), k(r6), r6.o.add(n7)), this;\n }, t5.delete = function(n7) {\n if (!this.has(n7))\n return false;\n var r6 = this[Q];\n return u4(r6), o3(r6), k(r6), r6.o.delete(n7) || !!r6.p.has(n7) && r6.o.delete(r6.p.get(n7));\n }, t5.clear = function() {\n var n7 = this[Q];\n u4(n7), p(n7).size && (o3(n7), k(n7), n7.o.clear());\n }, t5.values = function() {\n var n7 = this[Q];\n return u4(n7), o3(n7), n7.o.values();\n }, t5.entries = function() {\n var n7 = this[Q];\n return u4(n7), o3(n7), n7.o.entries();\n }, t5.keys = function() {\n return this.values();\n }, t5[V] = function() {\n return this.values();\n }, t5.forEach = function(n7, r6) {\n for (var t6 = this.values(), e5 = t6.next(); !e5.done; )\n n7.call(r6, e5.value, e5.value, this), e5 = t6.next();\n }, n6;\n }();\n m(\"MapSet\", { N: function(n6, r6) {\n return new f4(n6, r6);\n }, T: function(n6, r6) {\n return new c4(n6, r6);\n } });\n}\nvar G;\nvar U;\nvar W = typeof Symbol != \"undefined\" && typeof Symbol(\"x\") == \"symbol\";\nvar X = typeof Map != \"undefined\";\nvar q = typeof Set != \"undefined\";\nvar B = typeof Proxy != \"undefined\" && Proxy.revocable !== void 0 && typeof Reflect != \"undefined\";\nvar H = W ? Symbol.for(\"immer-nothing\") : ((G = {})[\"immer-nothing\"] = true, G);\nvar L = W ? Symbol.for(\"immer-draftable\") : \"__$immer_draftable\";\nvar Q = W ? Symbol.for(\"immer-state\") : \"__$immer_state\";\nvar V = typeof Symbol != \"undefined\" && Symbol.iterator || \"@@iterator\";\nvar Y = { 0: \"Illegal state\", 1: \"Immer drafts cannot have computed properties\", 2: \"This object has been frozen and should not be mutated\", 3: function(n6) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + n6;\n}, 4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\", 5: \"Immer forbids circular references\", 6: \"The first or second argument to `produce` must be a function\", 7: \"The third argument to `produce` must be a function or undefined\", 8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\", 9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\", 10: \"The given draft is already finalized\", 11: \"Object.defineProperty() cannot be used on an Immer draft\", 12: \"Object.setPrototypeOf() cannot be used on an Immer draft\", 13: \"Immer only supports deleting array indices\", 14: \"Immer only supports setting array indices and the 'length' property\", 15: function(n6) {\n return \"Cannot apply patch, path doesn't resolve: \" + n6;\n}, 16: 'Sets cannot have \"replace\" patches.', 17: function(n6) {\n return \"Unsupported patch operation: \" + n6;\n}, 18: function(n6) {\n return \"The plugin for '\" + n6 + \"' has not been loaded into Immer. To enable the plugin, import and call `enable\" + n6 + \"()` when initializing your application.\";\n}, 20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\", 21: function(n6) {\n return \"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\" + n6 + \"'\";\n}, 22: function(n6) {\n return \"'current' expects a draft, got: \" + n6;\n}, 23: function(n6) {\n return \"'original' expects a draft, got: \" + n6;\n}, 24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\" };\nvar Z = \"\" + Object.prototype.constructor;\nvar nn = typeof Reflect != \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : Object.getOwnPropertySymbols !== void 0 ? function(n6) {\n return Object.getOwnPropertyNames(n6).concat(Object.getOwnPropertySymbols(n6));\n} : Object.getOwnPropertyNames;\nvar rn = Object.getOwnPropertyDescriptors || function(n6) {\n var r5 = {};\n return nn(n6).forEach(function(t5) {\n r5[t5] = Object.getOwnPropertyDescriptor(n6, t5);\n }), r5;\n};\nvar tn = {};\nvar en = { get: function(n6, r5) {\n if (r5 === Q)\n return n6;\n var e4 = p(n6);\n if (!u(e4, r5))\n return function(n7, r6, t5) {\n var e5, i4 = I(r6, t5);\n return i4 ? \"value\" in i4 ? i4.value : (e5 = i4.get) === null || e5 === void 0 ? void 0 : e5.call(n7.k) : void 0;\n }(n6, e4, r5);\n var i3 = e4[r5];\n return n6.I || !t(i3) ? i3 : i3 === z(n6.t, r5) ? (E(n6), n6.o[r5] = R(n6.A.h, i3, n6)) : i3;\n}, has: function(n6, r5) {\n return r5 in p(n6);\n}, ownKeys: function(n6) {\n return Reflect.ownKeys(p(n6));\n}, set: function(n6, r5, t5) {\n var e4 = I(p(n6), r5);\n if (e4 == null ? void 0 : e4.set)\n return e4.set.call(n6.k, t5), true;\n if (!n6.P) {\n var i3 = z(p(n6), r5), o3 = i3 == null ? void 0 : i3[Q];\n if (o3 && o3.t === t5)\n return n6.o[r5] = t5, n6.D[r5] = false, true;\n if (c(t5, i3) && (t5 !== void 0 || u(n6.t, r5)))\n return true;\n E(n6), k(n6);\n }\n return n6.o[r5] === t5 && typeof t5 != \"number\" && (t5 !== void 0 || r5 in n6.o) || (n6.o[r5] = t5, n6.D[r5] = true, true);\n}, deleteProperty: function(n6, r5) {\n return z(n6.t, r5) !== void 0 || r5 in n6.t ? (n6.D[r5] = false, E(n6), k(n6)) : delete n6.D[r5], n6.o && delete n6.o[r5], true;\n}, getOwnPropertyDescriptor: function(n6, r5) {\n var t5 = p(n6), e4 = Reflect.getOwnPropertyDescriptor(t5, r5);\n return e4 ? { writable: true, configurable: n6.i !== 1 || r5 !== \"length\", enumerable: e4.enumerable, value: t5[r5] } : e4;\n}, defineProperty: function() {\n n(11);\n}, getPrototypeOf: function(n6) {\n return Object.getPrototypeOf(n6.t);\n}, setPrototypeOf: function() {\n n(12);\n} };\nvar on = {};\ni(en, function(n6, r5) {\n on[n6] = function() {\n return arguments[0] = arguments[0][0], r5.apply(this, arguments);\n };\n}), on.deleteProperty = function(r5, t5) {\n return isNaN(parseInt(t5)) && n(13), on.set.call(this, r5, t5, void 0);\n}, on.set = function(r5, t5, e4) {\n return t5 !== \"length\" && isNaN(parseInt(t5)) && n(14), en.set.call(this, r5[0], t5, e4, r5[0]);\n};\nvar un = function() {\n function e4(r5) {\n var e5 = this;\n this.g = B, this.F = true, this.produce = function(r6, i4, o3) {\n if (typeof r6 == \"function\" && typeof i4 != \"function\") {\n var u4 = i4;\n i4 = r6;\n var a5 = e5;\n return function(n6) {\n var r7 = this;\n n6 === void 0 && (n6 = u4);\n for (var t5 = arguments.length, e6 = Array(t5 > 1 ? t5 - 1 : 0), o4 = 1; o4 < t5; o4++)\n e6[o4 - 1] = arguments[o4];\n return a5.produce(n6, function(n7) {\n var t6;\n return (t6 = i4).call.apply(t6, [r7, n7].concat(e6));\n });\n };\n }\n var f4;\n if (typeof i4 != \"function\" && n(6), o3 !== void 0 && typeof o3 != \"function\" && n(7), t(r6)) {\n var c4 = w(e5), s3 = R(e5, r6, void 0), v3 = true;\n try {\n f4 = i4(s3), v3 = false;\n } finally {\n v3 ? O(c4) : g(c4);\n }\n return typeof Promise != \"undefined\" && f4 instanceof Promise ? f4.then(function(n6) {\n return j(c4, o3), P(n6, c4);\n }, function(n6) {\n throw O(c4), n6;\n }) : (j(c4, o3), P(f4, c4));\n }\n if (!r6 || typeof r6 != \"object\") {\n if ((f4 = i4(r6)) === void 0 && (f4 = r6), f4 === H && (f4 = void 0), e5.F && d(f4, true), o3) {\n var p4 = [], l4 = [];\n b(\"Patches\").M(r6, f4, p4, l4), o3(p4, l4);\n }\n return f4;\n }\n n(21, r6);\n }, this.produceWithPatches = function(n6, r6) {\n if (typeof n6 == \"function\")\n return function(r7) {\n for (var t6 = arguments.length, i5 = Array(t6 > 1 ? t6 - 1 : 0), o4 = 1; o4 < t6; o4++)\n i5[o4 - 1] = arguments[o4];\n return e5.produceWithPatches(r7, function(r8) {\n return n6.apply(void 0, [r8].concat(i5));\n });\n };\n var t5, i4, o3 = e5.produce(n6, r6, function(n7, r7) {\n t5 = n7, i4 = r7;\n });\n return typeof Promise != \"undefined\" && o3 instanceof Promise ? o3.then(function(n7) {\n return [n7, t5, i4];\n }) : [o3, t5, i4];\n }, typeof (r5 == null ? void 0 : r5.useProxies) == \"boolean\" && this.setUseProxies(r5.useProxies), typeof (r5 == null ? void 0 : r5.autoFreeze) == \"boolean\" && this.setAutoFreeze(r5.autoFreeze);\n }\n var i3 = e4.prototype;\n return i3.createDraft = function(e5) {\n t(e5) || n(8), r(e5) && (e5 = D(e5));\n var i4 = w(this), o3 = R(this, e5, void 0);\n return o3[Q].C = true, g(i4), o3;\n }, i3.finishDraft = function(r5, t5) {\n var e5 = r5 && r5[Q];\n e5 && e5.C || n(9), e5.I && n(10);\n var i4 = e5.A;\n return j(i4, t5), P(void 0, i4);\n }, i3.setAutoFreeze = function(n6) {\n this.F = n6;\n }, i3.setUseProxies = function(r5) {\n r5 && !B && n(20), this.g = r5;\n }, i3.applyPatches = function(n6, t5) {\n var e5;\n for (e5 = t5.length - 1; e5 >= 0; e5--) {\n var i4 = t5[e5];\n if (i4.path.length === 0 && i4.op === \"replace\") {\n n6 = i4.value;\n break;\n }\n }\n e5 > -1 && (t5 = t5.slice(e5 + 1));\n var o3 = b(\"Patches\").$;\n return r(n6) ? o3(n6, t5) : this.produce(n6, function(n7) {\n return o3(n7, t5);\n });\n }, e4;\n}();\nvar an = new un();\nvar fn = an.produce;\nvar cn = an.produceWithPatches.bind(an);\nvar sn = an.setAutoFreeze.bind(an);\nvar vn = an.setUseProxies.bind(an);\nvar pn = an.applyPatches.bind(an);\nvar ln = an.createDraft.bind(an);\nvar dn = an.finishDraft.bind(an);\nvar immer_esm_default = fn;\n\n// node_modules/slate/dist/index.es.js\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar DIRTY_PATHS = /* @__PURE__ */ new WeakMap();\nvar DIRTY_PATH_KEYS = /* @__PURE__ */ new WeakMap();\nvar FLUSHING = /* @__PURE__ */ new WeakMap();\nvar NORMALIZING = /* @__PURE__ */ new WeakMap();\nvar PATH_REFS = /* @__PURE__ */ new WeakMap();\nvar POINT_REFS = /* @__PURE__ */ new WeakMap();\nvar RANGE_REFS = /* @__PURE__ */ new WeakMap();\nfunction ownKeys$9(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$9(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$9(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$9(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar createEditor = () => {\n var editor = {\n children: [],\n operations: [],\n selection: null,\n marks: null,\n isInline: () => false,\n isVoid: () => false,\n onChange: () => {\n },\n apply: (op) => {\n for (var ref of Editor.pathRefs(editor)) {\n PathRef.transform(ref, op);\n }\n for (var _ref of Editor.pointRefs(editor)) {\n PointRef.transform(_ref, op);\n }\n for (var _ref2 of Editor.rangeRefs(editor)) {\n RangeRef.transform(_ref2, op);\n }\n var oldDirtyPaths = DIRTY_PATHS.get(editor) || [];\n var oldDirtyPathKeys = DIRTY_PATH_KEYS.get(editor) || /* @__PURE__ */ new Set();\n var dirtyPaths;\n var dirtyPathKeys;\n var add2 = (path2) => {\n if (path2) {\n var key = path2.join(\",\");\n if (!dirtyPathKeys.has(key)) {\n dirtyPathKeys.add(key);\n dirtyPaths.push(path2);\n }\n }\n };\n if (Path.operationCanTransformPath(op)) {\n dirtyPaths = [];\n dirtyPathKeys = /* @__PURE__ */ new Set();\n for (var path of oldDirtyPaths) {\n var newPath = Path.transform(path, op);\n add2(newPath);\n }\n } else {\n dirtyPaths = oldDirtyPaths;\n dirtyPathKeys = oldDirtyPathKeys;\n }\n var newDirtyPaths = getDirtyPaths(op);\n for (var _path of newDirtyPaths) {\n add2(_path);\n }\n DIRTY_PATHS.set(editor, dirtyPaths);\n DIRTY_PATH_KEYS.set(editor, dirtyPathKeys);\n Transforms.transform(editor, op);\n editor.operations.push(op);\n Editor.normalize(editor);\n if (op.type === \"set_selection\") {\n editor.marks = null;\n }\n if (!FLUSHING.get(editor)) {\n FLUSHING.set(editor, true);\n Promise.resolve().then(() => {\n FLUSHING.set(editor, false);\n editor.onChange();\n editor.operations = [];\n });\n }\n },\n addMark: (key, value) => {\n var {\n selection\n } = editor;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.setNodes(editor, {\n [key]: value\n }, {\n match: Text.isText,\n split: true\n });\n } else {\n var marks3 = _objectSpread$9(_objectSpread$9({}, Editor.marks(editor) || {}), {}, {\n [key]: value\n });\n editor.marks = marks3;\n if (!FLUSHING.get(editor)) {\n editor.onChange();\n }\n }\n }\n },\n deleteBackward: (unit) => {\n var {\n selection\n } = editor;\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit,\n reverse: true\n });\n }\n },\n deleteForward: (unit) => {\n var {\n selection\n } = editor;\n if (selection && Range.isCollapsed(selection)) {\n Transforms.delete(editor, {\n unit\n });\n }\n },\n deleteFragment: (direction) => {\n var {\n selection\n } = editor;\n if (selection && Range.isExpanded(selection)) {\n Transforms.delete(editor, {\n reverse: direction === \"backward\"\n });\n }\n },\n getFragment: () => {\n var {\n selection\n } = editor;\n if (selection) {\n return Node2.fragment(editor, selection);\n }\n return [];\n },\n insertBreak: () => {\n Transforms.splitNodes(editor, {\n always: true\n });\n },\n insertSoftBreak: () => {\n Transforms.splitNodes(editor, {\n always: true\n });\n },\n insertFragment: (fragment) => {\n Transforms.insertFragment(editor, fragment);\n },\n insertNode: (node) => {\n Transforms.insertNodes(editor, node);\n },\n insertText: (text4) => {\n var {\n selection,\n marks: marks3\n } = editor;\n if (selection) {\n if (marks3) {\n var node = _objectSpread$9({\n text: text4\n }, marks3);\n Transforms.insertNodes(editor, node);\n } else {\n Transforms.insertText(editor, text4);\n }\n editor.marks = null;\n }\n },\n normalizeNode: (entry) => {\n var [node, path] = entry;\n if (Text.isText(node)) {\n return;\n }\n if (Element2.isElement(node) && node.children.length === 0) {\n var child = {\n text: \"\"\n };\n Transforms.insertNodes(editor, child, {\n at: path.concat(0),\n voids: true\n });\n return;\n }\n var shouldHaveInlines = Editor.isEditor(node) ? false : Element2.isElement(node) && (editor.isInline(node) || node.children.length === 0 || Text.isText(node.children[0]) || editor.isInline(node.children[0]));\n var n6 = 0;\n for (var i3 = 0; i3 < node.children.length; i3++, n6++) {\n var currentNode = Node2.get(editor, path);\n if (Text.isText(currentNode))\n continue;\n var _child = node.children[i3];\n var prev = currentNode.children[n6 - 1];\n var isLast = i3 === node.children.length - 1;\n var isInlineOrText = Text.isText(_child) || Element2.isElement(_child) && editor.isInline(_child);\n if (isInlineOrText !== shouldHaveInlines) {\n Transforms.removeNodes(editor, {\n at: path.concat(n6),\n voids: true\n });\n n6--;\n } else if (Element2.isElement(_child)) {\n if (editor.isInline(_child)) {\n if (prev == null || !Text.isText(prev)) {\n var newChild = {\n text: \"\"\n };\n Transforms.insertNodes(editor, newChild, {\n at: path.concat(n6),\n voids: true\n });\n n6++;\n } else if (isLast) {\n var _newChild = {\n text: \"\"\n };\n Transforms.insertNodes(editor, _newChild, {\n at: path.concat(n6 + 1),\n voids: true\n });\n n6++;\n }\n }\n } else {\n if (prev != null && Text.isText(prev)) {\n if (Text.equals(_child, prev, {\n loose: true\n })) {\n Transforms.mergeNodes(editor, {\n at: path.concat(n6),\n voids: true\n });\n n6--;\n } else if (prev.text === \"\") {\n Transforms.removeNodes(editor, {\n at: path.concat(n6 - 1),\n voids: true\n });\n n6--;\n } else if (_child.text === \"\") {\n Transforms.removeNodes(editor, {\n at: path.concat(n6),\n voids: true\n });\n n6--;\n }\n }\n }\n }\n },\n removeMark: (key) => {\n var {\n selection\n } = editor;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.unsetNodes(editor, key, {\n match: Text.isText,\n split: true\n });\n } else {\n var marks3 = _objectSpread$9({}, Editor.marks(editor) || {});\n delete marks3[key];\n editor.marks = marks3;\n if (!FLUSHING.get(editor)) {\n editor.onChange();\n }\n }\n }\n }\n };\n return editor;\n};\nvar getDirtyPaths = (op) => {\n switch (op.type) {\n case \"insert_text\":\n case \"remove_text\":\n case \"set_node\": {\n var {\n path\n } = op;\n return Path.levels(path);\n }\n case \"insert_node\": {\n var {\n node,\n path: _path2\n } = op;\n var levels = Path.levels(_path2);\n var descendants = Text.isText(node) ? [] : Array.from(Node2.nodes(node), (_ref3) => {\n var [, p5] = _ref3;\n return _path2.concat(p5);\n });\n return [...levels, ...descendants];\n }\n case \"merge_node\": {\n var {\n path: _path3\n } = op;\n var ancestors = Path.ancestors(_path3);\n var previousPath = Path.previous(_path3);\n return [...ancestors, previousPath];\n }\n case \"move_node\": {\n var {\n path: _path4,\n newPath\n } = op;\n if (Path.equals(_path4, newPath)) {\n return [];\n }\n var oldAncestors = [];\n var newAncestors = [];\n for (var ancestor of Path.ancestors(_path4)) {\n var p4 = Path.transform(ancestor, op);\n oldAncestors.push(p4);\n }\n for (var _ancestor of Path.ancestors(newPath)) {\n var _p = Path.transform(_ancestor, op);\n newAncestors.push(_p);\n }\n var newParent = newAncestors[newAncestors.length - 1];\n var newIndex = newPath[newPath.length - 1];\n var resultPath = newParent.concat(newIndex);\n return [...oldAncestors, ...newAncestors, resultPath];\n }\n case \"remove_node\": {\n var {\n path: _path5\n } = op;\n var _ancestors = Path.ancestors(_path5);\n return [..._ancestors];\n }\n case \"split_node\": {\n var {\n path: _path6\n } = op;\n var _levels = Path.levels(_path6);\n var nextPath = Path.next(_path6);\n return [..._levels, nextPath];\n }\n default: {\n return [];\n }\n }\n};\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null)\n return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i3;\n for (i3 = 0; i3 < sourceKeys.length; i3++) {\n key = sourceKeys[i3];\n if (excluded.indexOf(key) >= 0)\n continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null)\n return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i3;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i3 = 0; i3 < sourceSymbolKeys.length; i3++) {\n key = sourceSymbolKeys[i3];\n if (excluded.indexOf(key) >= 0)\n continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key))\n continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nvar getCharacterDistance = function getCharacterDistance2(str) {\n var isRTL = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n var isLTR = !isRTL;\n var codepoints = isRTL ? codepointsIteratorRTL(str) : str;\n var left3 = CodepointType.None;\n var right3 = CodepointType.None;\n var distance = 0;\n var gb11 = null;\n var gb12Or13 = null;\n for (var char of codepoints) {\n var code = char.codePointAt(0);\n if (!code)\n break;\n var type = getCodepointType(char, code);\n [left3, right3] = isLTR ? [right3, type] : [type, left3];\n if (intersects(left3, CodepointType.ZWJ) && intersects(right3, CodepointType.ExtPict)) {\n if (isLTR) {\n gb11 = endsWithEmojiZWJ(str.substring(0, distance));\n } else {\n gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance));\n }\n if (!gb11)\n break;\n }\n if (intersects(left3, CodepointType.RI) && intersects(right3, CodepointType.RI)) {\n if (gb12Or13 !== null) {\n gb12Or13 = !gb12Or13;\n } else {\n if (isLTR) {\n gb12Or13 = true;\n } else {\n gb12Or13 = endsWithOddNumberOfRIs(str.substring(0, str.length - distance));\n }\n }\n if (!gb12Or13)\n break;\n }\n if (left3 !== CodepointType.None && right3 !== CodepointType.None && isBoundaryPair(left3, right3)) {\n break;\n }\n distance += char.length;\n }\n return distance || 1;\n};\nvar SPACE = /\\s/;\nvar PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\nvar CHAMELEON = /['\\u2018\\u2019]/;\nvar getWordDistance = function getWordDistance2(text4) {\n var isRTL = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n var dist = 0;\n var started = false;\n while (text4.length > 0) {\n var charDist = getCharacterDistance(text4, isRTL);\n var [char, remaining] = splitByCharacterDistance(text4, charDist, isRTL);\n if (isWordCharacter(char, remaining, isRTL)) {\n started = true;\n dist += charDist;\n } else if (!started) {\n dist += charDist;\n } else {\n break;\n }\n text4 = remaining;\n }\n return dist;\n};\nvar splitByCharacterDistance = (str, dist, isRTL) => {\n if (isRTL) {\n var at = str.length - dist;\n return [str.slice(at, str.length), str.slice(0, at)];\n }\n return [str.slice(0, dist), str.slice(dist)];\n};\nvar isWordCharacter = function isWordCharacter2(char, remaining) {\n var isRTL = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n if (SPACE.test(char)) {\n return false;\n }\n if (CHAMELEON.test(char)) {\n var charDist = getCharacterDistance(remaining, isRTL);\n var [nextChar, nextRemaining] = splitByCharacterDistance(remaining, charDist, isRTL);\n if (isWordCharacter2(nextChar, nextRemaining, isRTL)) {\n return true;\n }\n }\n if (PUNCTUATION.test(char)) {\n return false;\n }\n return true;\n};\nvar codepointsIteratorRTL = function* codepointsIteratorRTL2(str) {\n var end3 = str.length - 1;\n for (var i3 = 0; i3 < str.length; i3++) {\n var char1 = str.charAt(end3 - i3);\n if (isLowSurrogate(char1.charCodeAt(0))) {\n var char2 = str.charAt(end3 - i3 - 1);\n if (isHighSurrogate(char2.charCodeAt(0))) {\n yield char2 + char1;\n i3++;\n continue;\n }\n }\n yield char1;\n }\n};\nvar isHighSurrogate = (charCode) => {\n return charCode >= 55296 && charCode <= 56319;\n};\nvar isLowSurrogate = (charCode) => {\n return charCode >= 56320 && charCode <= 57343;\n};\nvar CodepointType;\n(function(CodepointType2) {\n CodepointType2[CodepointType2[\"None\"] = 0] = \"None\";\n CodepointType2[CodepointType2[\"Extend\"] = 1] = \"Extend\";\n CodepointType2[CodepointType2[\"ZWJ\"] = 2] = \"ZWJ\";\n CodepointType2[CodepointType2[\"RI\"] = 4] = \"RI\";\n CodepointType2[CodepointType2[\"Prepend\"] = 8] = \"Prepend\";\n CodepointType2[CodepointType2[\"SpacingMark\"] = 16] = \"SpacingMark\";\n CodepointType2[CodepointType2[\"L\"] = 32] = \"L\";\n CodepointType2[CodepointType2[\"V\"] = 64] = \"V\";\n CodepointType2[CodepointType2[\"T\"] = 128] = \"T\";\n CodepointType2[CodepointType2[\"LV\"] = 256] = \"LV\";\n CodepointType2[CodepointType2[\"LVT\"] = 512] = \"LVT\";\n CodepointType2[CodepointType2[\"ExtPict\"] = 1024] = \"ExtPict\";\n CodepointType2[CodepointType2[\"Any\"] = 2048] = \"Any\";\n})(CodepointType || (CodepointType = {}));\nvar reExtend = /^(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1AC0\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDF46-\\uDF50]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD30-\\uDD36\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])$/;\nvar rePrepend = /^(?:[\\u0600-\\u0605\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u0D4E]|\\uD804[\\uDCBD\\uDCCD\\uDDC2\\uDDC3]|\\uD806[\\uDD3F\\uDD41\\uDE3A\\uDE84-\\uDE89]|\\uD807\\uDD46)$/;\nvar reSpacingMark = /^(?:[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BF\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0\\u0CC1\\u0CC3\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0D02\\u0D03\\u0D3F\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D82\\u0D83\\u0DD0\\u0DD1\\u0DD8-\\u0DDE\\u0DF2\\u0DF3\\u0E33\\u0EB3\\u0F3E\\u0F3F\\u0F7F\\u1031\\u103B\\u103C\\u1056\\u1057\\u1084\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1A19\\u1A1A\\u1A55\\u1A57\\u1A6D-\\u1A72\\u1B04\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF7\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAAEB\\uAAEE\\uAAEF\\uAAF5\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]|\\uD804[\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8\\uDD2C\\uDD45\\uDD46\\uDD82\\uDDB3-\\uDDB5\\uDDBF\\uDDC0\\uDDCE\\uDE2C-\\uDE2E\\uDE32\\uDE33\\uDE35\\uDEE0-\\uDEE2\\uDF02\\uDF03\\uDF3F\\uDF41-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF62\\uDF63]|\\uD805[\\uDC35-\\uDC37\\uDC40\\uDC41\\uDC45\\uDCB1\\uDCB2\\uDCB9\\uDCBB\\uDCBC\\uDCBE\\uDCC1\\uDDB0\\uDDB1\\uDDB8-\\uDDBB\\uDDBE\\uDE30-\\uDE32\\uDE3B\\uDE3C\\uDE3E\\uDEAC\\uDEAE\\uDEAF\\uDEB6\\uDF26]|\\uD806[\\uDC2C-\\uDC2E\\uDC38\\uDD31-\\uDD35\\uDD37\\uDD38\\uDD3D\\uDD40\\uDD42\\uDDD1-\\uDDD3\\uDDDC-\\uDDDF\\uDDE4\\uDE39\\uDE57\\uDE58\\uDE97]|\\uD807[\\uDC2F\\uDC3E\\uDCA9\\uDCB1\\uDCB4\\uDD8A-\\uDD8E\\uDD93\\uDD94\\uDD96\\uDEF5\\uDEF6]|\\uD81B[\\uDF51-\\uDF87\\uDFF0\\uDFF1]|\\uD834[\\uDD66\\uDD6D])$/;\nvar reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/;\nvar reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/;\nvar reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/;\nvar reLV = /^[\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734\\uD750\\uD76C\\uD788]$/;\nvar reLVT = /^[\\uAC01-\\uAC1B\\uAC1D-\\uAC37\\uAC39-\\uAC53\\uAC55-\\uAC6F\\uAC71-\\uAC8B\\uAC8D-\\uACA7\\uACA9-\\uACC3\\uACC5-\\uACDF\\uACE1-\\uACFB\\uACFD-\\uAD17\\uAD19-\\uAD33\\uAD35-\\uAD4F\\uAD51-\\uAD6B\\uAD6D-\\uAD87\\uAD89-\\uADA3\\uADA5-\\uADBF\\uADC1-\\uADDB\\uADDD-\\uADF7\\uADF9-\\uAE13\\uAE15-\\uAE2F\\uAE31-\\uAE4B\\uAE4D-\\uAE67\\uAE69-\\uAE83\\uAE85-\\uAE9F\\uAEA1-\\uAEBB\\uAEBD-\\uAED7\\uAED9-\\uAEF3\\uAEF5-\\uAF0F\\uAF11-\\uAF2B\\uAF2D-\\uAF47\\uAF49-\\uAF63\\uAF65-\\uAF7F\\uAF81-\\uAF9B\\uAF9D-\\uAFB7\\uAFB9-\\uAFD3\\uAFD5-\\uAFEF\\uAFF1-\\uB00B\\uB00D-\\uB027\\uB029-\\uB043\\uB045-\\uB05F\\uB061-\\uB07B\\uB07D-\\uB097\\uB099-\\uB0B3\\uB0B5-\\uB0CF\\uB0D1-\\uB0EB\\uB0ED-\\uB107\\uB109-\\uB123\\uB125-\\uB13F\\uB141-\\uB15B\\uB15D-\\uB177\\uB179-\\uB193\\uB195-\\uB1AF\\uB1B1-\\uB1CB\\uB1CD-\\uB1E7\\uB1E9-\\uB203\\uB205-\\uB21F\\uB221-\\uB23B\\uB23D-\\uB257\\uB259-\\uB273\\uB275-\\uB28F\\uB291-\\uB2AB\\uB2AD-\\uB2C7\\uB2C9-\\uB2E3\\uB2E5-\\uB2FF\\uB301-\\uB31B\\uB31D-\\uB337\\uB339-\\uB353\\uB355-\\uB36F\\uB371-\\uB38B\\uB38D-\\uB3A7\\uB3A9-\\uB3C3\\uB3C5-\\uB3DF\\uB3E1-\\uB3FB\\uB3FD-\\uB417\\uB419-\\uB433\\uB435-\\uB44F\\uB451-\\uB46B\\uB46D-\\uB487\\uB489-\\uB4A3\\uB4A5-\\uB4BF\\uB4C1-\\uB4DB\\uB4DD-\\uB4F7\\uB4F9-\\uB513\\uB515-\\uB52F\\uB531-\\uB54B\\uB54D-\\uB567\\uB569-\\uB583\\uB585-\\uB59F\\uB5A1-\\uB5BB\\uB5BD-\\uB5D7\\uB5D9-\\uB5F3\\uB5F5-\\uB60F\\uB611-\\uB62B\\uB62D-\\uB647\\uB649-\\uB663\\uB665-\\uB67F\\uB681-\\uB69B\\uB69D-\\uB6B7\\uB6B9-\\uB6D3\\uB6D5-\\uB6EF\\uB6F1-\\uB70B\\uB70D-\\uB727\\uB729-\\uB743\\uB745-\\uB75F\\uB761-\\uB77B\\uB77D-\\uB797\\uB799-\\uB7B3\\uB7B5-\\uB7CF\\uB7D1-\\uB7EB\\uB7ED-\\uB807\\uB809-\\uB823\\uB825-\\uB83F\\uB841-\\uB85B\\uB85D-\\uB877\\uB879-\\uB893\\uB895-\\uB8AF\\uB8B1-\\uB8CB\\uB8CD-\\uB8E7\\uB8E9-\\uB903\\uB905-\\uB91F\\uB921-\\uB93B\\uB93D-\\uB957\\uB959-\\uB973\\uB975-\\uB98F\\uB991-\\uB9AB\\uB9AD-\\uB9C7\\uB9C9-\\uB9E3\\uB9E5-\\uB9FF\\uBA01-\\uBA1B\\uBA1D-\\uBA37\\uBA39-\\uBA53\\uBA55-\\uBA6F\\uBA71-\\uBA8B\\uBA8D-\\uBAA7\\uBAA9-\\uBAC3\\uBAC5-\\uBADF\\uBAE1-\\uBAFB\\uBAFD-\\uBB17\\uBB19-\\uBB33\\uBB35-\\uBB4F\\uBB51-\\uBB6B\\uBB6D-\\uBB87\\uBB89-\\uBBA3\\uBBA5-\\uBBBF\\uBBC1-\\uBBDB\\uBBDD-\\uBBF7\\uBBF9-\\uBC13\\uBC15-\\uBC2F\\uBC31-\\uBC4B\\uBC4D-\\uBC67\\uBC69-\\uBC83\\uBC85-\\uBC9F\\uBCA1-\\uBCBB\\uBCBD-\\uBCD7\\uBCD9-\\uBCF3\\uBCF5-\\uBD0F\\uBD11-\\uBD2B\\uBD2D-\\uBD47\\uBD49-\\uBD63\\uBD65-\\uBD7F\\uBD81-\\uBD9B\\uBD9D-\\uBDB7\\uBDB9-\\uBDD3\\uBDD5-\\uBDEF\\uBDF1-\\uBE0B\\uBE0D-\\uBE27\\uBE29-\\uBE43\\uBE45-\\uBE5F\\uBE61-\\uBE7B\\uBE7D-\\uBE97\\uBE99-\\uBEB3\\uBEB5-\\uBECF\\uBED1-\\uBEEB\\uBEED-\\uBF07\\uBF09-\\uBF23\\uBF25-\\uBF3F\\uBF41-\\uBF5B\\uBF5D-\\uBF77\\uBF79-\\uBF93\\uBF95-\\uBFAF\\uBFB1-\\uBFCB\\uBFCD-\\uBFE7\\uBFE9-\\uC003\\uC005-\\uC01F\\uC021-\\uC03B\\uC03D-\\uC057\\uC059-\\uC073\\uC075-\\uC08F\\uC091-\\uC0AB\\uC0AD-\\uC0C7\\uC0C9-\\uC0E3\\uC0E5-\\uC0FF\\uC101-\\uC11B\\uC11D-\\uC137\\uC139-\\uC153\\uC155-\\uC16F\\uC171-\\uC18B\\uC18D-\\uC1A7\\uC1A9-\\uC1C3\\uC1C5-\\uC1DF\\uC1E1-\\uC1FB\\uC1FD-\\uC217\\uC219-\\uC233\\uC235-\\uC24F\\uC251-\\uC26B\\uC26D-\\uC287\\uC289-\\uC2A3\\uC2A5-\\uC2BF\\uC2C1-\\uC2DB\\uC2DD-\\uC2F7\\uC2F9-\\uC313\\uC315-\\uC32F\\uC331-\\uC34B\\uC34D-\\uC367\\uC369-\\uC383\\uC385-\\uC39F\\uC3A1-\\uC3BB\\uC3BD-\\uC3D7\\uC3D9-\\uC3F3\\uC3F5-\\uC40F\\uC411-\\uC42B\\uC42D-\\uC447\\uC449-\\uC463\\uC465-\\uC47F\\uC481-\\uC49B\\uC49D-\\uC4B7\\uC4B9-\\uC4D3\\uC4D5-\\uC4EF\\uC4F1-\\uC50B\\uC50D-\\uC527\\uC529-\\uC543\\uC545-\\uC55F\\uC561-\\uC57B\\uC57D-\\uC597\\uC599-\\uC5B3\\uC5B5-\\uC5CF\\uC5D1-\\uC5EB\\uC5ED-\\uC607\\uC609-\\uC623\\uC625-\\uC63F\\uC641-\\uC65B\\uC65D-\\uC677\\uC679-\\uC693\\uC695-\\uC6AF\\uC6B1-\\uC6CB\\uC6CD-\\uC6E7\\uC6E9-\\uC703\\uC705-\\uC71F\\uC721-\\uC73B\\uC73D-\\uC757\\uC759-\\uC773\\uC775-\\uC78F\\uC791-\\uC7AB\\uC7AD-\\uC7C7\\uC7C9-\\uC7E3\\uC7E5-\\uC7FF\\uC801-\\uC81B\\uC81D-\\uC837\\uC839-\\uC853\\uC855-\\uC86F\\uC871-\\uC88B\\uC88D-\\uC8A7\\uC8A9-\\uC8C3\\uC8C5-\\uC8DF\\uC8E1-\\uC8FB\\uC8FD-\\uC917\\uC919-\\uC933\\uC935-\\uC94F\\uC951-\\uC96B\\uC96D-\\uC987\\uC989-\\uC9A3\\uC9A5-\\uC9BF\\uC9C1-\\uC9DB\\uC9DD-\\uC9F7\\uC9F9-\\uCA13\\uCA15-\\uCA2F\\uCA31-\\uCA4B\\uCA4D-\\uCA67\\uCA69-\\uCA83\\uCA85-\\uCA9F\\uCAA1-\\uCABB\\uCABD-\\uCAD7\\uCAD9-\\uCAF3\\uCAF5-\\uCB0F\\uCB11-\\uCB2B\\uCB2D-\\uCB47\\uCB49-\\uCB63\\uCB65-\\uCB7F\\uCB81-\\uCB9B\\uCB9D-\\uCBB7\\uCBB9-\\uCBD3\\uCBD5-\\uCBEF\\uCBF1-\\uCC0B\\uCC0D-\\uCC27\\uCC29-\\uCC43\\uCC45-\\uCC5F\\uCC61-\\uCC7B\\uCC7D-\\uCC97\\uCC99-\\uCCB3\\uCCB5-\\uCCCF\\uCCD1-\\uCCEB\\uCCED-\\uCD07\\uCD09-\\uCD23\\uCD25-\\uCD3F\\uCD41-\\uCD5B\\uCD5D-\\uCD77\\uCD79-\\uCD93\\uCD95-\\uCDAF\\uCDB1-\\uCDCB\\uCDCD-\\uCDE7\\uCDE9-\\uCE03\\uCE05-\\uCE1F\\uCE21-\\uCE3B\\uCE3D-\\uCE57\\uCE59-\\uCE73\\uCE75-\\uCE8F\\uCE91-\\uCEAB\\uCEAD-\\uCEC7\\uCEC9-\\uCEE3\\uCEE5-\\uCEFF\\uCF01-\\uCF1B\\uCF1D-\\uCF37\\uCF39-\\uCF53\\uCF55-\\uCF6F\\uCF71-\\uCF8B\\uCF8D-\\uCFA7\\uCFA9-\\uCFC3\\uCFC5-\\uCFDF\\uCFE1-\\uCFFB\\uCFFD-\\uD017\\uD019-\\uD033\\uD035-\\uD04F\\uD051-\\uD06B\\uD06D-\\uD087\\uD089-\\uD0A3\\uD0A5-\\uD0BF\\uD0C1-\\uD0DB\\uD0DD-\\uD0F7\\uD0F9-\\uD113\\uD115-\\uD12F\\uD131-\\uD14B\\uD14D-\\uD167\\uD169-\\uD183\\uD185-\\uD19F\\uD1A1-\\uD1BB\\uD1BD-\\uD1D7\\uD1D9-\\uD1F3\\uD1F5-\\uD20F\\uD211-\\uD22B\\uD22D-\\uD247\\uD249-\\uD263\\uD265-\\uD27F\\uD281-\\uD29B\\uD29D-\\uD2B7\\uD2B9-\\uD2D3\\uD2D5-\\uD2EF\\uD2F1-\\uD30B\\uD30D-\\uD327\\uD329-\\uD343\\uD345-\\uD35F\\uD361-\\uD37B\\uD37D-\\uD397\\uD399-\\uD3B3\\uD3B5-\\uD3CF\\uD3D1-\\uD3EB\\uD3ED-\\uD407\\uD409-\\uD423\\uD425-\\uD43F\\uD441-\\uD45B\\uD45D-\\uD477\\uD479-\\uD493\\uD495-\\uD4AF\\uD4B1-\\uD4CB\\uD4CD-\\uD4E7\\uD4E9-\\uD503\\uD505-\\uD51F\\uD521-\\uD53B\\uD53D-\\uD557\\uD559-\\uD573\\uD575-\\uD58F\\uD591-\\uD5AB\\uD5AD-\\uD5C7\\uD5C9-\\uD5E3\\uD5E5-\\uD5FF\\uD601-\\uD61B\\uD61D-\\uD637\\uD639-\\uD653\\uD655-\\uD66F\\uD671-\\uD68B\\uD68D-\\uD6A7\\uD6A9-\\uD6C3\\uD6C5-\\uD6DF\\uD6E1-\\uD6FB\\uD6FD-\\uD717\\uD719-\\uD733\\uD735-\\uD74F\\uD751-\\uD76B\\uD76D-\\uD787\\uD789-\\uD7A3]$/;\nvar reExtPict = /^(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])$/;\nvar getCodepointType = (char, code) => {\n var type = CodepointType.Any;\n if (char.search(reExtend) !== -1) {\n type |= CodepointType.Extend;\n }\n if (code === 8205) {\n type |= CodepointType.ZWJ;\n }\n if (code >= 127462 && code <= 127487) {\n type |= CodepointType.RI;\n }\n if (char.search(rePrepend) !== -1) {\n type |= CodepointType.Prepend;\n }\n if (char.search(reSpacingMark) !== -1) {\n type |= CodepointType.SpacingMark;\n }\n if (char.search(reL) !== -1) {\n type |= CodepointType.L;\n }\n if (char.search(reV) !== -1) {\n type |= CodepointType.V;\n }\n if (char.search(reT) !== -1) {\n type |= CodepointType.T;\n }\n if (char.search(reLV) !== -1) {\n type |= CodepointType.LV;\n }\n if (char.search(reLVT) !== -1) {\n type |= CodepointType.LVT;\n }\n if (char.search(reExtPict) !== -1) {\n type |= CodepointType.ExtPict;\n }\n return type;\n};\nfunction intersects(x3, y3) {\n return (x3 & y3) !== 0;\n}\nvar NonBoundaryPairs = [\n [CodepointType.L, CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT],\n [CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T],\n [CodepointType.LVT | CodepointType.T, CodepointType.T],\n [CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ],\n [CodepointType.Any, CodepointType.SpacingMark],\n [CodepointType.Prepend, CodepointType.Any],\n [CodepointType.ZWJ, CodepointType.ExtPict],\n [CodepointType.RI, CodepointType.RI]\n];\nfunction isBoundaryPair(left3, right3) {\n return NonBoundaryPairs.findIndex((r5) => intersects(left3, r5[0]) && intersects(right3, r5[1])) === -1;\n}\nvar endingEmojiZWJ = /(?:[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u2388\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2605\\u2607-\\u2612\\u2614-\\u2685\\u2690-\\u2705\\u2708-\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763-\\u2767\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC00-\\uDCFF\\uDD0D-\\uDD0F\\uDD2F\\uDD6C-\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDAD-\\uDDE5\\uDE01-\\uDE0F\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE3C-\\uDE3F\\uDE49-\\uDFFA]|\\uD83D[\\uDC00-\\uDD3D\\uDD46-\\uDE4F\\uDE80-\\uDEFF\\uDF74-\\uDF7F\\uDFD5-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDEFF]|\\uD83F[\\uDC00-\\uDFFD])(?:[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09BE\\u09C1-\\u09C4\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3E\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE\\u0BC0\\u0BCD\\u0BD7\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCC\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D3E\\u0D41-\\u0D44\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DCF\\u0DD2-\\u0DD4\\u0DD6\\u0DDF\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1AC0\\u1B00-\\u1B03\\u1B34-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200C\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFF9E\\uFF9F]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDF46-\\uDF50]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF3E\\uDF40\\uDF57\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB0\\uDCB3-\\uDCB8\\uDCBA\\uDCBD\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDAF\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD30\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65\\uDD67-\\uDD69\\uDD6E-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD30-\\uDD36\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uD83C[\\uDFFB-\\uDFFF]|\\uDB40[\\uDC20-\\uDC7F\\uDD00-\\uDDEF])*\\u200D$/;\nvar endsWithEmojiZWJ = (str) => {\n return str.search(endingEmojiZWJ) !== -1;\n};\nvar endingRIs = /(?:\\uD83C[\\uDDE6-\\uDDFF])+$/g;\nvar endsWithOddNumberOfRIs = (str) => {\n var match2 = str.match(endingRIs);\n if (match2 === null) {\n return false;\n } else {\n var numRIs = match2[0].length / 2;\n return numRIs % 2 === 1;\n }\n};\nvar isElement = (value) => {\n return isPlainObject(value) && Node2.isNodeList(value.children) && !Editor.isEditor(value);\n};\nvar Element2 = {\n isAncestor(value) {\n return isPlainObject(value) && Node2.isNodeList(value.children);\n },\n isElement,\n isElementList(value) {\n return Array.isArray(value) && value.every((val) => Element2.isElement(val));\n },\n isElementProps(props) {\n return props.children !== void 0;\n },\n isElementType: function isElementType(value, elementVal) {\n var elementKey = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"type\";\n return isElement(value) && value[elementKey] === elementVal;\n },\n matches(element4, props) {\n for (var key in props) {\n if (key === \"children\") {\n continue;\n }\n if (element4[key] !== props[key]) {\n return false;\n }\n }\n return true;\n }\n};\nvar _excluded$4 = [\"text\"];\nvar _excluded2$3 = [\"text\"];\nfunction ownKeys$8(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$8(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$8(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$8(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar IS_EDITOR_CACHE = /* @__PURE__ */ new WeakMap();\nvar Editor = {\n above(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n voids = false,\n mode = \"lowest\",\n at = editor.selection,\n match: match2\n } = options;\n if (!at) {\n return;\n }\n var path = Editor.path(editor, at);\n var reverse = mode === \"lowest\";\n for (var [n6, p4] of Editor.levels(editor, {\n at: path,\n voids,\n match: match2,\n reverse\n })) {\n if (!Text.isText(n6) && !Path.equals(path, p4)) {\n return [n6, p4];\n }\n }\n },\n addMark(editor, key, value) {\n editor.addMark(key, value);\n },\n after(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var anchor = Editor.point(editor, at, {\n edge: \"end\"\n });\n var focus = Editor.end(editor, []);\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d3 = 0;\n var target;\n for (var p4 of Editor.positions(editor, _objectSpread$8(_objectSpread$8({}, options), {}, {\n at: range\n }))) {\n if (d3 > distance) {\n break;\n }\n if (d3 !== 0) {\n target = p4;\n }\n d3++;\n }\n return target;\n },\n before(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var anchor = Editor.start(editor, []);\n var focus = Editor.point(editor, at, {\n edge: \"start\"\n });\n var range = {\n anchor,\n focus\n };\n var {\n distance = 1\n } = options;\n var d3 = 0;\n var target;\n for (var p4 of Editor.positions(editor, _objectSpread$8(_objectSpread$8({}, options), {}, {\n at: range,\n reverse: true\n }))) {\n if (d3 > distance) {\n break;\n }\n if (d3 !== 0) {\n target = p4;\n }\n d3++;\n }\n return target;\n },\n deleteBackward(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n unit = \"character\"\n } = options;\n editor.deleteBackward(unit);\n },\n deleteForward(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n unit = \"character\"\n } = options;\n editor.deleteForward(unit);\n },\n deleteFragment(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n direction = \"forward\"\n } = options;\n editor.deleteFragment(direction);\n },\n edges(editor, at) {\n return [Editor.start(editor, at), Editor.end(editor, at)];\n },\n end(editor, at) {\n return Editor.point(editor, at, {\n edge: \"end\"\n });\n },\n first(editor, at) {\n var path = Editor.path(editor, at, {\n edge: \"start\"\n });\n return Editor.node(editor, path);\n },\n fragment(editor, at) {\n var range = Editor.range(editor, at);\n var fragment = Node2.fragment(editor, range);\n return fragment;\n },\n hasBlocks(editor, element4) {\n return element4.children.some((n6) => Editor.isBlock(editor, n6));\n },\n hasInlines(editor, element4) {\n return element4.children.some((n6) => Text.isText(n6) || Editor.isInline(editor, n6));\n },\n hasTexts(editor, element4) {\n return element4.children.every((n6) => Text.isText(n6));\n },\n insertBreak(editor) {\n editor.insertBreak();\n },\n insertSoftBreak(editor) {\n editor.insertSoftBreak();\n },\n insertFragment(editor, fragment) {\n editor.insertFragment(fragment);\n },\n insertNode(editor, node) {\n editor.insertNode(node);\n },\n insertText(editor, text4) {\n editor.insertText(text4);\n },\n isBlock(editor, value) {\n return Element2.isElement(value) && !editor.isInline(value);\n },\n isEditor(value) {\n if (!isPlainObject(value))\n return false;\n var cachedIsEditor = IS_EDITOR_CACHE.get(value);\n if (cachedIsEditor !== void 0) {\n return cachedIsEditor;\n }\n var isEditor = typeof value.addMark === \"function\" && typeof value.apply === \"function\" && typeof value.deleteBackward === \"function\" && typeof value.deleteForward === \"function\" && typeof value.deleteFragment === \"function\" && typeof value.insertBreak === \"function\" && typeof value.insertSoftBreak === \"function\" && typeof value.insertFragment === \"function\" && typeof value.insertNode === \"function\" && typeof value.insertText === \"function\" && typeof value.isInline === \"function\" && typeof value.isVoid === \"function\" && typeof value.normalizeNode === \"function\" && typeof value.onChange === \"function\" && typeof value.removeMark === \"function\" && (value.marks === null || isPlainObject(value.marks)) && (value.selection === null || Range.isRange(value.selection)) && Node2.isNodeList(value.children) && Operation.isOperationList(value.operations);\n IS_EDITOR_CACHE.set(value, isEditor);\n return isEditor;\n },\n isEnd(editor, point, at) {\n var end3 = Editor.end(editor, at);\n return Point.equals(point, end3);\n },\n isEdge(editor, point, at) {\n return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at);\n },\n isEmpty(editor, element4) {\n var {\n children\n } = element4;\n var [first] = children;\n return children.length === 0 || children.length === 1 && Text.isText(first) && first.text === \"\" && !editor.isVoid(element4);\n },\n isInline(editor, value) {\n return Element2.isElement(value) && editor.isInline(value);\n },\n isNormalizing(editor) {\n var isNormalizing = NORMALIZING.get(editor);\n return isNormalizing === void 0 ? true : isNormalizing;\n },\n isStart(editor, point, at) {\n if (point.offset !== 0) {\n return false;\n }\n var start3 = Editor.start(editor, at);\n return Point.equals(point, start3);\n },\n isVoid(editor, value) {\n return Element2.isElement(value) && editor.isVoid(value);\n },\n last(editor, at) {\n var path = Editor.path(editor, at, {\n edge: \"end\"\n });\n return Editor.node(editor, path);\n },\n leaf(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node2.leaf(editor, path);\n return [node, path];\n },\n *levels(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n at = editor.selection,\n reverse = false,\n voids = false\n } = options;\n var {\n match: match2\n } = options;\n if (match2 == null) {\n match2 = () => true;\n }\n if (!at) {\n return;\n }\n var levels = [];\n var path = Editor.path(editor, at);\n for (var [n6, p4] of Node2.levels(editor, path)) {\n if (!match2(n6, p4)) {\n continue;\n }\n levels.push([n6, p4]);\n if (!voids && Editor.isVoid(editor, n6)) {\n break;\n }\n }\n if (reverse) {\n levels.reverse();\n }\n yield* levels;\n },\n marks(editor) {\n var {\n marks: marks3,\n selection\n } = editor;\n if (!selection) {\n return null;\n }\n if (marks3) {\n return marks3;\n }\n if (Range.isExpanded(selection)) {\n var [match2] = Editor.nodes(editor, {\n match: Text.isText\n });\n if (match2) {\n var [_node] = match2;\n var _rest = _objectWithoutProperties(_node, _excluded$4);\n return _rest;\n } else {\n return {};\n }\n }\n var {\n anchor\n } = selection;\n var {\n path\n } = anchor;\n var [node] = Editor.leaf(editor, path);\n if (anchor.offset === 0) {\n var prev = Editor.previous(editor, {\n at: path,\n match: Text.isText\n });\n var block = Editor.above(editor, {\n match: (n6) => Editor.isBlock(editor, n6)\n });\n if (prev && block) {\n var [prevNode, prevPath] = prev;\n var [, blockPath] = block;\n if (Path.isAncestor(blockPath, prevPath)) {\n node = prevNode;\n }\n }\n }\n var rest = _objectWithoutProperties(node, _excluded2$3);\n return rest;\n },\n next(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n mode = \"lowest\",\n voids = false\n } = options;\n var {\n match: match2,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n var pointAfterLocation = Editor.after(editor, at, {\n voids\n });\n if (!pointAfterLocation)\n return;\n var [, to] = Editor.last(editor, []);\n var span = [pointAfterLocation.path, to];\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the next node from the root node!\");\n }\n if (match2 == null) {\n if (Path.isPath(at)) {\n var [parent2] = Editor.parent(editor, at);\n match2 = (n6) => parent2.children.includes(n6);\n } else {\n match2 = () => true;\n }\n }\n var [next] = Editor.nodes(editor, {\n at: span,\n match: match2,\n mode,\n voids\n });\n return next;\n },\n node(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var node = Node2.get(editor, path);\n return [node, path];\n },\n *nodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n at = editor.selection,\n mode = \"all\",\n universal = false,\n reverse = false,\n voids = false\n } = options;\n var {\n match: match2\n } = options;\n if (!match2) {\n match2 = () => true;\n }\n if (!at) {\n return;\n }\n var from;\n var to;\n if (Span.isSpan(at)) {\n from = at[0];\n to = at[1];\n } else {\n var first = Editor.path(editor, at, {\n edge: \"start\"\n });\n var last2 = Editor.path(editor, at, {\n edge: \"end\"\n });\n from = reverse ? last2 : first;\n to = reverse ? first : last2;\n }\n var nodeEntries = Node2.nodes(editor, {\n reverse,\n from,\n to,\n pass: (_ref) => {\n var [n6] = _ref;\n return voids ? false : Editor.isVoid(editor, n6);\n }\n });\n var matches = [];\n var hit;\n for (var [node, path] of nodeEntries) {\n var isLower = hit && Path.compare(path, hit[1]) === 0;\n if (mode === \"highest\" && isLower) {\n continue;\n }\n if (!match2(node, path)) {\n if (universal && !isLower && Text.isText(node)) {\n return;\n } else {\n continue;\n }\n }\n if (mode === \"lowest\" && isLower) {\n hit = [node, path];\n continue;\n }\n var emit3 = mode === \"lowest\" ? hit : [node, path];\n if (emit3) {\n if (universal) {\n matches.push(emit3);\n } else {\n yield emit3;\n }\n }\n hit = [node, path];\n }\n if (mode === \"lowest\" && hit) {\n if (universal) {\n matches.push(hit);\n } else {\n yield hit;\n }\n }\n if (universal) {\n yield* matches;\n }\n },\n normalize(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n force = false\n } = options;\n var getDirtyPaths2 = (editor2) => {\n return DIRTY_PATHS.get(editor2) || [];\n };\n var getDirtyPathKeys = (editor2) => {\n return DIRTY_PATH_KEYS.get(editor2) || /* @__PURE__ */ new Set();\n };\n var popDirtyPath = (editor2) => {\n var path = getDirtyPaths2(editor2).pop();\n var key = path.join(\",\");\n getDirtyPathKeys(editor2).delete(key);\n return path;\n };\n if (!Editor.isNormalizing(editor)) {\n return;\n }\n if (force) {\n var allPaths = Array.from(Node2.nodes(editor), (_ref2) => {\n var [, p4] = _ref2;\n return p4;\n });\n var allPathKeys = new Set(allPaths.map((p4) => p4.join(\",\")));\n DIRTY_PATHS.set(editor, allPaths);\n DIRTY_PATH_KEYS.set(editor, allPathKeys);\n }\n if (getDirtyPaths2(editor).length === 0) {\n return;\n }\n Editor.withoutNormalizing(editor, () => {\n for (var dirtyPath of getDirtyPaths2(editor)) {\n if (Node2.has(editor, dirtyPath)) {\n var entry = Editor.node(editor, dirtyPath);\n var [node, _3] = entry;\n if (Element2.isElement(node) && node.children.length === 0) {\n editor.normalizeNode(entry);\n }\n }\n }\n var max3 = getDirtyPaths2(editor).length * 42;\n var m3 = 0;\n while (getDirtyPaths2(editor).length !== 0) {\n if (m3 > max3) {\n throw new Error(\"\\n Could not completely normalize the editor after \".concat(max3, \" iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.\\n \"));\n }\n var _dirtyPath = popDirtyPath(editor);\n if (Node2.has(editor, _dirtyPath)) {\n var _entry = Editor.node(editor, _dirtyPath);\n editor.normalizeNode(_entry);\n }\n m3++;\n }\n });\n },\n parent(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var path = Editor.path(editor, at, options);\n var parentPath = Path.parent(path);\n var entry = Editor.node(editor, parentPath);\n return entry;\n },\n path(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n depth,\n edge\n } = options;\n if (Path.isPath(at)) {\n if (edge === \"start\") {\n var [, firstPath] = Node2.first(editor, at);\n at = firstPath;\n } else if (edge === \"end\") {\n var [, lastPath] = Node2.last(editor, at);\n at = lastPath;\n }\n }\n if (Range.isRange(at)) {\n if (edge === \"start\") {\n at = Range.start(at);\n } else if (edge === \"end\") {\n at = Range.end(at);\n } else {\n at = Path.common(at.anchor.path, at.focus.path);\n }\n }\n if (Point.isPoint(at)) {\n at = at.path;\n }\n if (depth != null) {\n at = at.slice(0, depth);\n }\n return at;\n },\n hasPath(editor, path) {\n return Node2.has(editor, path);\n },\n pathRef(editor, path) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n affinity = \"forward\"\n } = options;\n var ref = {\n current: path,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var pathRefs = Editor.pathRefs(editor);\n pathRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.pathRefs(editor);\n refs.add(ref);\n return ref;\n },\n pathRefs(editor) {\n var refs = PATH_REFS.get(editor);\n if (!refs) {\n refs = /* @__PURE__ */ new Set();\n PATH_REFS.set(editor, refs);\n }\n return refs;\n },\n point(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n edge = \"start\"\n } = options;\n if (Path.isPath(at)) {\n var path;\n if (edge === \"end\") {\n var [, lastPath] = Node2.last(editor, at);\n path = lastPath;\n } else {\n var [, firstPath] = Node2.first(editor, at);\n path = firstPath;\n }\n var node = Node2.get(editor, path);\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the \".concat(edge, \" point in the node at path [\").concat(at, \"] because it has no \").concat(edge, \" text node.\"));\n }\n return {\n path,\n offset: edge === \"end\" ? node.text.length : 0\n };\n }\n if (Range.isRange(at)) {\n var [start3, end3] = Range.edges(at);\n return edge === \"start\" ? start3 : end3;\n }\n return at;\n },\n pointRef(editor, point) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n affinity = \"forward\"\n } = options;\n var ref = {\n current: point,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var pointRefs = Editor.pointRefs(editor);\n pointRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.pointRefs(editor);\n refs.add(ref);\n return ref;\n },\n pointRefs(editor) {\n var refs = POINT_REFS.get(editor);\n if (!refs) {\n refs = /* @__PURE__ */ new Set();\n POINT_REFS.set(editor, refs);\n }\n return refs;\n },\n *positions(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n at = editor.selection,\n unit = \"offset\",\n reverse = false,\n voids = false\n } = options;\n if (!at) {\n return;\n }\n var range = Editor.range(editor, at);\n var [start3, end3] = Range.edges(range);\n var first = reverse ? end3 : start3;\n var isNewBlock = false;\n var blockText = \"\";\n var distance = 0;\n var leafTextRemaining = 0;\n var leafTextOffset = 0;\n for (var [node, path] of Editor.nodes(editor, {\n at,\n reverse,\n voids\n })) {\n if (Element2.isElement(node)) {\n if (!voids && editor.isVoid(node)) {\n yield Editor.start(editor, path);\n isNewBlock = false;\n continue;\n }\n if (editor.isInline(node))\n continue;\n if (Editor.hasInlines(editor, node)) {\n var e4 = Path.isAncestor(path, end3.path) ? end3 : Editor.end(editor, path);\n var s3 = Path.isAncestor(path, start3.path) ? start3 : Editor.start(editor, path);\n blockText = Editor.string(editor, {\n anchor: s3,\n focus: e4\n }, {\n voids\n });\n isNewBlock = true;\n }\n }\n if (Text.isText(node)) {\n var isFirst = Path.equals(path, first.path);\n if (isFirst) {\n leafTextRemaining = reverse ? first.offset : node.text.length - first.offset;\n leafTextOffset = first.offset;\n } else {\n leafTextRemaining = node.text.length;\n leafTextOffset = reverse ? leafTextRemaining : 0;\n }\n if (isFirst || isNewBlock || unit === \"offset\") {\n yield {\n path,\n offset: leafTextOffset\n };\n isNewBlock = false;\n }\n while (true) {\n if (distance === 0) {\n if (blockText === \"\")\n break;\n distance = calcDistance(blockText, unit, reverse);\n blockText = splitByCharacterDistance(blockText, distance, reverse)[1];\n }\n leafTextOffset = reverse ? leafTextOffset - distance : leafTextOffset + distance;\n leafTextRemaining = leafTextRemaining - distance;\n if (leafTextRemaining < 0) {\n distance = -leafTextRemaining;\n break;\n }\n distance = 0;\n yield {\n path,\n offset: leafTextOffset\n };\n }\n }\n }\n function calcDistance(text4, unit2, reverse2) {\n if (unit2 === \"character\") {\n return getCharacterDistance(text4, reverse2);\n } else if (unit2 === \"word\") {\n return getWordDistance(text4, reverse2);\n } else if (unit2 === \"line\" || unit2 === \"block\") {\n return text4.length;\n }\n return 1;\n }\n },\n previous(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n mode = \"lowest\",\n voids = false\n } = options;\n var {\n match: match2,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n var pointBeforeLocation = Editor.before(editor, at, {\n voids\n });\n if (!pointBeforeLocation) {\n return;\n }\n var [, to] = Editor.first(editor, []);\n var span = [pointBeforeLocation.path, to];\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(\"Cannot get the previous node from the root node!\");\n }\n if (match2 == null) {\n if (Path.isPath(at)) {\n var [parent2] = Editor.parent(editor, at);\n match2 = (n6) => parent2.children.includes(n6);\n } else {\n match2 = () => true;\n }\n }\n var [previous] = Editor.nodes(editor, {\n reverse: true,\n at: span,\n match: match2,\n mode,\n voids\n });\n return previous;\n },\n range(editor, at, to) {\n if (Range.isRange(at) && !to) {\n return at;\n }\n var start3 = Editor.start(editor, at);\n var end3 = Editor.end(editor, to || at);\n return {\n anchor: start3,\n focus: end3\n };\n },\n rangeRef(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n affinity = \"forward\"\n } = options;\n var ref = {\n current: range,\n affinity,\n unref() {\n var {\n current\n } = ref;\n var rangeRefs = Editor.rangeRefs(editor);\n rangeRefs.delete(ref);\n ref.current = null;\n return current;\n }\n };\n var refs = Editor.rangeRefs(editor);\n refs.add(ref);\n return ref;\n },\n rangeRefs(editor) {\n var refs = RANGE_REFS.get(editor);\n if (!refs) {\n refs = /* @__PURE__ */ new Set();\n RANGE_REFS.set(editor, refs);\n }\n return refs;\n },\n removeMark(editor, key) {\n editor.removeMark(key);\n },\n setNormalizing(editor, isNormalizing) {\n NORMALIZING.set(editor, isNormalizing);\n },\n start(editor, at) {\n return Editor.point(editor, at, {\n edge: \"start\"\n });\n },\n string(editor, at) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var range = Editor.range(editor, at);\n var [start3, end3] = Range.edges(range);\n var text4 = \"\";\n for (var [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText,\n voids\n })) {\n var t5 = node.text;\n if (Path.equals(path, end3.path)) {\n t5 = t5.slice(0, end3.offset);\n }\n if (Path.equals(path, start3.path)) {\n t5 = t5.slice(start3.offset);\n }\n text4 += t5;\n }\n return text4;\n },\n unhangRange(editor, range) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n voids = false\n } = options;\n var [start3, end3] = Range.edges(range);\n if (start3.offset !== 0 || end3.offset !== 0 || Range.isCollapsed(range)) {\n return range;\n }\n var endBlock = Editor.above(editor, {\n at: end3,\n match: (n6) => Editor.isBlock(editor, n6)\n });\n var blockPath = endBlock ? endBlock[1] : [];\n var first = Editor.start(editor, start3);\n var before = {\n anchor: first,\n focus: end3\n };\n var skip = true;\n for (var [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n voids\n })) {\n if (skip) {\n skip = false;\n continue;\n }\n if (node.text !== \"\" || Path.isBefore(path, blockPath)) {\n end3 = {\n path,\n offset: node.text.length\n };\n break;\n }\n }\n return {\n anchor: start3,\n focus: end3\n };\n },\n void(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n return Editor.above(editor, _objectSpread$8(_objectSpread$8({}, options), {}, {\n match: (n6) => Editor.isVoid(editor, n6)\n }));\n },\n withoutNormalizing(editor, fn6) {\n var value = Editor.isNormalizing(editor);\n Editor.setNormalizing(editor, false);\n try {\n fn6();\n } finally {\n Editor.setNormalizing(editor, value);\n }\n Editor.normalize(editor);\n }\n};\nvar Span = {\n isSpan(value) {\n return Array.isArray(value) && value.length === 2 && value.every(Path.isPath);\n }\n};\nvar _excluded$3 = [\"children\"];\nvar _excluded2$2 = [\"text\"];\nvar IS_NODE_LIST_CACHE = /* @__PURE__ */ new WeakMap();\nvar Node2 = {\n ancestor(root5, path) {\n var node = Node2.get(root5, path);\n if (Text.isText(node)) {\n throw new Error(\"Cannot get the ancestor node at path [\".concat(path, \"] because it refers to a text node instead: \").concat(node));\n }\n return node;\n },\n *ancestors(root5, path) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n for (var p4 of Path.ancestors(path, options)) {\n var n6 = Node2.ancestor(root5, p4);\n var entry = [n6, p4];\n yield entry;\n }\n },\n child(root5, index7) {\n if (Text.isText(root5)) {\n throw new Error(\"Cannot get the child of a text node: \".concat(JSON.stringify(root5)));\n }\n var c4 = root5.children[index7];\n if (c4 == null) {\n throw new Error(\"Cannot get child at index `\".concat(index7, \"` in node: \").concat(JSON.stringify(root5)));\n }\n return c4;\n },\n *children(root5, path) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n reverse = false\n } = options;\n var ancestor = Node2.ancestor(root5, path);\n var {\n children\n } = ancestor;\n var index7 = reverse ? children.length - 1 : 0;\n while (reverse ? index7 >= 0 : index7 < children.length) {\n var child = Node2.child(ancestor, index7);\n var childPath = path.concat(index7);\n yield [child, childPath];\n index7 = reverse ? index7 - 1 : index7 + 1;\n }\n },\n common(root5, path, another) {\n var p4 = Path.common(path, another);\n var n6 = Node2.get(root5, p4);\n return [n6, p4];\n },\n descendant(root5, path) {\n var node = Node2.get(root5, path);\n if (Editor.isEditor(node)) {\n throw new Error(\"Cannot get the descendant node at path [\".concat(path, \"] because it refers to the root editor node instead: \").concat(node));\n }\n return node;\n },\n *descendants(root5) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n for (var [node, path] of Node2.nodes(root5, options)) {\n if (path.length !== 0) {\n yield [node, path];\n }\n }\n },\n *elements(root5) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n for (var [node, path] of Node2.nodes(root5, options)) {\n if (Element2.isElement(node)) {\n yield [node, path];\n }\n }\n },\n extractProps(node) {\n if (Element2.isAncestor(node)) {\n var properties = _objectWithoutProperties(node, _excluded$3);\n return properties;\n } else {\n var properties = _objectWithoutProperties(node, _excluded2$2);\n return properties;\n }\n },\n first(root5, path) {\n var p4 = path.slice();\n var n6 = Node2.get(root5, p4);\n while (n6) {\n if (Text.isText(n6) || n6.children.length === 0) {\n break;\n } else {\n n6 = n6.children[0];\n p4.push(0);\n }\n }\n return [n6, p4];\n },\n fragment(root5, range) {\n if (Text.isText(root5)) {\n throw new Error(\"Cannot get a fragment starting from a root text node: \".concat(JSON.stringify(root5)));\n }\n var newRoot = fn({\n children: root5.children\n }, (r5) => {\n var [start3, end3] = Range.edges(range);\n var nodeEntries = Node2.nodes(r5, {\n reverse: true,\n pass: (_ref) => {\n var [, path2] = _ref;\n return !Range.includes(range, path2);\n }\n });\n for (var [, path] of nodeEntries) {\n if (!Range.includes(range, path)) {\n var parent2 = Node2.parent(r5, path);\n var index7 = path[path.length - 1];\n parent2.children.splice(index7, 1);\n }\n if (Path.equals(path, end3.path)) {\n var leaf = Node2.leaf(r5, path);\n leaf.text = leaf.text.slice(0, end3.offset);\n }\n if (Path.equals(path, start3.path)) {\n var _leaf = Node2.leaf(r5, path);\n _leaf.text = _leaf.text.slice(start3.offset);\n }\n }\n if (Editor.isEditor(r5)) {\n r5.selection = null;\n }\n });\n return newRoot.children;\n },\n get(root5, path) {\n var node = root5;\n for (var i3 = 0; i3 < path.length; i3++) {\n var p4 = path[i3];\n if (Text.isText(node) || !node.children[p4]) {\n throw new Error(\"Cannot find a descendant at path [\".concat(path, \"] in node: \").concat(JSON.stringify(root5)));\n }\n node = node.children[p4];\n }\n return node;\n },\n has(root5, path) {\n var node = root5;\n for (var i3 = 0; i3 < path.length; i3++) {\n var p4 = path[i3];\n if (Text.isText(node) || !node.children[p4]) {\n return false;\n }\n node = node.children[p4];\n }\n return true;\n },\n isNode(value) {\n return Text.isText(value) || Element2.isElement(value) || Editor.isEditor(value);\n },\n isNodeList(value) {\n if (!Array.isArray(value)) {\n return false;\n }\n var cachedResult = IS_NODE_LIST_CACHE.get(value);\n if (cachedResult !== void 0) {\n return cachedResult;\n }\n var isNodeList3 = value.every((val) => Node2.isNode(val));\n IS_NODE_LIST_CACHE.set(value, isNodeList3);\n return isNodeList3;\n },\n last(root5, path) {\n var p4 = path.slice();\n var n6 = Node2.get(root5, p4);\n while (n6) {\n if (Text.isText(n6) || n6.children.length === 0) {\n break;\n } else {\n var i3 = n6.children.length - 1;\n n6 = n6.children[i3];\n p4.push(i3);\n }\n }\n return [n6, p4];\n },\n leaf(root5, path) {\n var node = Node2.get(root5, path);\n if (!Text.isText(node)) {\n throw new Error(\"Cannot get the leaf node at path [\".concat(path, \"] because it refers to a non-leaf node: \").concat(node));\n }\n return node;\n },\n *levels(root5, path) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n for (var p4 of Path.levels(path, options)) {\n var n6 = Node2.get(root5, p4);\n yield [n6, p4];\n }\n },\n matches(node, props) {\n return Element2.isElement(node) && Element2.isElementProps(props) && Element2.matches(node, props) || Text.isText(node) && Text.isTextProps(props) && Text.matches(node, props);\n },\n *nodes(root5) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n pass,\n reverse = false\n } = options;\n var {\n from = [],\n to\n } = options;\n var visited = /* @__PURE__ */ new Set();\n var p4 = [];\n var n6 = root5;\n while (true) {\n if (to && (reverse ? Path.isBefore(p4, to) : Path.isAfter(p4, to))) {\n break;\n }\n if (!visited.has(n6)) {\n yield [n6, p4];\n }\n if (!visited.has(n6) && !Text.isText(n6) && n6.children.length !== 0 && (pass == null || pass([n6, p4]) === false)) {\n visited.add(n6);\n var nextIndex = reverse ? n6.children.length - 1 : 0;\n if (Path.isAncestor(p4, from)) {\n nextIndex = from[p4.length];\n }\n p4 = p4.concat(nextIndex);\n n6 = Node2.get(root5, p4);\n continue;\n }\n if (p4.length === 0) {\n break;\n }\n if (!reverse) {\n var newPath = Path.next(p4);\n if (Node2.has(root5, newPath)) {\n p4 = newPath;\n n6 = Node2.get(root5, p4);\n continue;\n }\n }\n if (reverse && p4[p4.length - 1] !== 0) {\n var _newPath = Path.previous(p4);\n p4 = _newPath;\n n6 = Node2.get(root5, p4);\n continue;\n }\n p4 = Path.parent(p4);\n n6 = Node2.get(root5, p4);\n visited.add(n6);\n }\n },\n parent(root5, path) {\n var parentPath = Path.parent(path);\n var p4 = Node2.get(root5, parentPath);\n if (Text.isText(p4)) {\n throw new Error(\"Cannot get the parent of path [\".concat(path, \"] because it does not exist in the root.\"));\n }\n return p4;\n },\n string(node) {\n if (Text.isText(node)) {\n return node.text;\n } else {\n return node.children.map(Node2.string).join(\"\");\n }\n },\n *texts(root5) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n for (var [node, path] of Node2.nodes(root5, options)) {\n if (Text.isText(node)) {\n yield [node, path];\n }\n }\n }\n};\nfunction ownKeys$7(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$7(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$7(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$7(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Operation = {\n isNodeOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith(\"_node\");\n },\n isOperation(value) {\n if (!isPlainObject(value)) {\n return false;\n }\n switch (value.type) {\n case \"insert_node\":\n return Path.isPath(value.path) && Node2.isNode(value.node);\n case \"insert_text\":\n return typeof value.offset === \"number\" && typeof value.text === \"string\" && Path.isPath(value.path);\n case \"merge_node\":\n return typeof value.position === \"number\" && Path.isPath(value.path) && isPlainObject(value.properties);\n case \"move_node\":\n return Path.isPath(value.path) && Path.isPath(value.newPath);\n case \"remove_node\":\n return Path.isPath(value.path) && Node2.isNode(value.node);\n case \"remove_text\":\n return typeof value.offset === \"number\" && typeof value.text === \"string\" && Path.isPath(value.path);\n case \"set_node\":\n return Path.isPath(value.path) && isPlainObject(value.properties) && isPlainObject(value.newProperties);\n case \"set_selection\":\n return value.properties === null && Range.isRange(value.newProperties) || value.newProperties === null && Range.isRange(value.properties) || isPlainObject(value.properties) && isPlainObject(value.newProperties);\n case \"split_node\":\n return Path.isPath(value.path) && typeof value.position === \"number\" && isPlainObject(value.properties);\n default:\n return false;\n }\n },\n isOperationList(value) {\n return Array.isArray(value) && value.every((val) => Operation.isOperation(val));\n },\n isSelectionOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith(\"_selection\");\n },\n isTextOperation(value) {\n return Operation.isOperation(value) && value.type.endsWith(\"_text\");\n },\n inverse(op) {\n switch (op.type) {\n case \"insert_node\": {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: \"remove_node\"\n });\n }\n case \"insert_text\": {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: \"remove_text\"\n });\n }\n case \"merge_node\": {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: \"split_node\",\n path: Path.previous(op.path)\n });\n }\n case \"move_node\": {\n var {\n newPath,\n path\n } = op;\n if (Path.equals(newPath, path)) {\n return op;\n }\n if (Path.isSibling(path, newPath)) {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n path: newPath,\n newPath: path\n });\n }\n var inversePath = Path.transform(path, op);\n var inverseNewPath = Path.transform(Path.next(path), op);\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n path: inversePath,\n newPath: inverseNewPath\n });\n }\n case \"remove_node\": {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: \"insert_node\"\n });\n }\n case \"remove_text\": {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: \"insert_text\"\n });\n }\n case \"set_node\": {\n var {\n properties,\n newProperties\n } = op;\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n properties: newProperties,\n newProperties: properties\n });\n }\n case \"set_selection\": {\n var {\n properties: _properties,\n newProperties: _newProperties\n } = op;\n if (_properties == null) {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n properties: _newProperties,\n newProperties: null\n });\n } else if (_newProperties == null) {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n properties: null,\n newProperties: _properties\n });\n } else {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n properties: _newProperties,\n newProperties: _properties\n });\n }\n }\n case \"split_node\": {\n return _objectSpread$7(_objectSpread$7({}, op), {}, {\n type: \"merge_node\",\n path: Path.next(op.path)\n });\n }\n }\n }\n};\nvar Path = {\n ancestors(path) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var paths = Path.levels(path, options);\n if (reverse) {\n paths = paths.slice(1);\n } else {\n paths = paths.slice(0, -1);\n }\n return paths;\n },\n common(path, another) {\n var common = [];\n for (var i3 = 0; i3 < path.length && i3 < another.length; i3++) {\n var av = path[i3];\n var bv = another[i3];\n if (av !== bv) {\n break;\n }\n common.push(av);\n }\n return common;\n },\n compare(path, another) {\n var min3 = Math.min(path.length, another.length);\n for (var i3 = 0; i3 < min3; i3++) {\n if (path[i3] < another[i3])\n return -1;\n if (path[i3] > another[i3])\n return 1;\n }\n return 0;\n },\n endsAfter(path, another) {\n var i3 = path.length - 1;\n var as = path.slice(0, i3);\n var bs = another.slice(0, i3);\n var av = path[i3];\n var bv = another[i3];\n return Path.equals(as, bs) && av > bv;\n },\n endsAt(path, another) {\n var i3 = path.length;\n var as = path.slice(0, i3);\n var bs = another.slice(0, i3);\n return Path.equals(as, bs);\n },\n endsBefore(path, another) {\n var i3 = path.length - 1;\n var as = path.slice(0, i3);\n var bs = another.slice(0, i3);\n var av = path[i3];\n var bv = another[i3];\n return Path.equals(as, bs) && av < bv;\n },\n equals(path, another) {\n return path.length === another.length && path.every((n6, i3) => n6 === another[i3]);\n },\n hasPrevious(path) {\n return path[path.length - 1] > 0;\n },\n isAfter(path, another) {\n return Path.compare(path, another) === 1;\n },\n isAncestor(path, another) {\n return path.length < another.length && Path.compare(path, another) === 0;\n },\n isBefore(path, another) {\n return Path.compare(path, another) === -1;\n },\n isChild(path, another) {\n return path.length === another.length + 1 && Path.compare(path, another) === 0;\n },\n isCommon(path, another) {\n return path.length <= another.length && Path.compare(path, another) === 0;\n },\n isDescendant(path, another) {\n return path.length > another.length && Path.compare(path, another) === 0;\n },\n isParent(path, another) {\n return path.length + 1 === another.length && Path.compare(path, another) === 0;\n },\n isPath(value) {\n return Array.isArray(value) && (value.length === 0 || typeof value[0] === \"number\");\n },\n isSibling(path, another) {\n if (path.length !== another.length) {\n return false;\n }\n var as = path.slice(0, -1);\n var bs = another.slice(0, -1);\n var al = path[path.length - 1];\n var bl = another[another.length - 1];\n return al !== bl && Path.equals(as, bs);\n },\n levels(path) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var list = [];\n for (var i3 = 0; i3 <= path.length; i3++) {\n list.push(path.slice(0, i3));\n }\n if (reverse) {\n list.reverse();\n }\n return list;\n },\n next(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the next path of a root path [\".concat(path, \"], because it has no next index.\"));\n }\n var last2 = path[path.length - 1];\n return path.slice(0, -1).concat(last2 + 1);\n },\n operationCanTransformPath(operation) {\n switch (operation.type) {\n case \"insert_node\":\n case \"remove_node\":\n case \"merge_node\":\n case \"split_node\":\n case \"move_node\":\n return true;\n default:\n return false;\n }\n },\n parent(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the parent path of the root path [\".concat(path, \"].\"));\n }\n return path.slice(0, -1);\n },\n previous(path) {\n if (path.length === 0) {\n throw new Error(\"Cannot get the previous path of a root path [\".concat(path, \"], because it has no previous index.\"));\n }\n var last2 = path[path.length - 1];\n if (last2 <= 0) {\n throw new Error(\"Cannot get the previous path of a first child path [\".concat(path, \"] because it would result in a negative index.\"));\n }\n return path.slice(0, -1).concat(last2 - 1);\n },\n relative(path, ancestor) {\n if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n throw new Error(\"Cannot get the relative path of [\".concat(path, \"] inside ancestor [\").concat(ancestor, \"], because it is not above or equal to the path.\"));\n }\n return path.slice(ancestor.length);\n },\n transform(path, operation) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return fn(path, (p4) => {\n var {\n affinity = \"forward\"\n } = options;\n if (!path || (path === null || path === void 0 ? void 0 : path.length) === 0) {\n return;\n }\n if (p4 === null) {\n return null;\n }\n switch (operation.type) {\n case \"insert_node\": {\n var {\n path: op\n } = operation;\n if (Path.equals(op, p4) || Path.endsBefore(op, p4) || Path.isAncestor(op, p4)) {\n p4[op.length - 1] += 1;\n }\n break;\n }\n case \"remove_node\": {\n var {\n path: _op\n } = operation;\n if (Path.equals(_op, p4) || Path.isAncestor(_op, p4)) {\n return null;\n } else if (Path.endsBefore(_op, p4)) {\n p4[_op.length - 1] -= 1;\n }\n break;\n }\n case \"merge_node\": {\n var {\n path: _op2,\n position\n } = operation;\n if (Path.equals(_op2, p4) || Path.endsBefore(_op2, p4)) {\n p4[_op2.length - 1] -= 1;\n } else if (Path.isAncestor(_op2, p4)) {\n p4[_op2.length - 1] -= 1;\n p4[_op2.length] += position;\n }\n break;\n }\n case \"split_node\": {\n var {\n path: _op3,\n position: _position\n } = operation;\n if (Path.equals(_op3, p4)) {\n if (affinity === \"forward\") {\n p4[p4.length - 1] += 1;\n } else if (affinity === \"backward\")\n ;\n else {\n return null;\n }\n } else if (Path.endsBefore(_op3, p4)) {\n p4[_op3.length - 1] += 1;\n } else if (Path.isAncestor(_op3, p4) && path[_op3.length] >= _position) {\n p4[_op3.length - 1] += 1;\n p4[_op3.length] -= _position;\n }\n break;\n }\n case \"move_node\": {\n var {\n path: _op4,\n newPath: onp\n } = operation;\n if (Path.equals(_op4, onp)) {\n return;\n }\n if (Path.isAncestor(_op4, p4) || Path.equals(_op4, p4)) {\n var copy = onp.slice();\n if (Path.endsBefore(_op4, onp) && _op4.length < onp.length) {\n copy[_op4.length - 1] -= 1;\n }\n return copy.concat(p4.slice(_op4.length));\n } else if (Path.isSibling(_op4, onp) && (Path.isAncestor(onp, p4) || Path.equals(onp, p4))) {\n if (Path.endsBefore(_op4, p4)) {\n p4[_op4.length - 1] -= 1;\n } else {\n p4[_op4.length - 1] += 1;\n }\n } else if (Path.endsBefore(onp, p4) || Path.equals(onp, p4) || Path.isAncestor(onp, p4)) {\n if (Path.endsBefore(_op4, p4)) {\n p4[_op4.length - 1] -= 1;\n }\n p4[onp.length - 1] += 1;\n } else if (Path.endsBefore(_op4, p4)) {\n if (Path.equals(onp, p4)) {\n p4[onp.length - 1] += 1;\n }\n p4[_op4.length - 1] -= 1;\n }\n break;\n }\n }\n });\n }\n};\nvar PathRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var path = Path.transform(current, op, {\n affinity\n });\n ref.current = path;\n if (path == null) {\n ref.unref();\n }\n }\n};\nfunction ownKeys$6(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$6(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$6(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$6(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Point = {\n compare(point, another) {\n var result = Path.compare(point.path, another.path);\n if (result === 0) {\n if (point.offset < another.offset)\n return -1;\n if (point.offset > another.offset)\n return 1;\n return 0;\n }\n return result;\n },\n isAfter(point, another) {\n return Point.compare(point, another) === 1;\n },\n isBefore(point, another) {\n return Point.compare(point, another) === -1;\n },\n equals(point, another) {\n return point.offset === another.offset && Path.equals(point.path, another.path);\n },\n isPoint(value) {\n return isPlainObject(value) && typeof value.offset === \"number\" && Path.isPath(value.path);\n },\n transform(point, op) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return fn(point, (p4) => {\n if (p4 === null) {\n return null;\n }\n var {\n affinity = \"forward\"\n } = options;\n var {\n path,\n offset: offset3\n } = p4;\n switch (op.type) {\n case \"insert_node\":\n case \"move_node\": {\n p4.path = Path.transform(path, op, options);\n break;\n }\n case \"insert_text\": {\n if (Path.equals(op.path, path) && (op.offset < offset3 || op.offset === offset3 && affinity === \"forward\")) {\n p4.offset += op.text.length;\n }\n break;\n }\n case \"merge_node\": {\n if (Path.equals(op.path, path)) {\n p4.offset += op.position;\n }\n p4.path = Path.transform(path, op, options);\n break;\n }\n case \"remove_text\": {\n if (Path.equals(op.path, path) && op.offset <= offset3) {\n p4.offset -= Math.min(offset3 - op.offset, op.text.length);\n }\n break;\n }\n case \"remove_node\": {\n if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n return null;\n }\n p4.path = Path.transform(path, op, options);\n break;\n }\n case \"split_node\": {\n if (Path.equals(op.path, path)) {\n if (op.position === offset3 && affinity == null) {\n return null;\n } else if (op.position < offset3 || op.position === offset3 && affinity === \"forward\") {\n p4.offset -= op.position;\n p4.path = Path.transform(path, op, _objectSpread$6(_objectSpread$6({}, options), {}, {\n affinity: \"forward\"\n }));\n }\n } else {\n p4.path = Path.transform(path, op, options);\n }\n break;\n }\n }\n });\n }\n};\nvar PointRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var point = Point.transform(current, op, {\n affinity\n });\n ref.current = point;\n if (point == null) {\n ref.unref();\n }\n }\n};\nvar _excluded$2 = [\"anchor\", \"focus\"];\nfunction ownKeys$5(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$5(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$5(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$5(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Range = {\n edges(range) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n reverse = false\n } = options;\n var {\n anchor,\n focus\n } = range;\n return Range.isBackward(range) === reverse ? [anchor, focus] : [focus, anchor];\n },\n end(range) {\n var [, end3] = Range.edges(range);\n return end3;\n },\n equals(range, another) {\n return Point.equals(range.anchor, another.anchor) && Point.equals(range.focus, another.focus);\n },\n includes(range, target) {\n if (Range.isRange(target)) {\n if (Range.includes(range, target.anchor) || Range.includes(range, target.focus)) {\n return true;\n }\n var [rs, re2] = Range.edges(range);\n var [ts, te2] = Range.edges(target);\n return Point.isBefore(rs, ts) && Point.isAfter(re2, te2);\n }\n var [start3, end3] = Range.edges(range);\n var isAfterStart = false;\n var isBeforeEnd = false;\n if (Point.isPoint(target)) {\n isAfterStart = Point.compare(target, start3) >= 0;\n isBeforeEnd = Point.compare(target, end3) <= 0;\n } else {\n isAfterStart = Path.compare(target, start3.path) >= 0;\n isBeforeEnd = Path.compare(target, end3.path) <= 0;\n }\n return isAfterStart && isBeforeEnd;\n },\n intersection(range, another) {\n var rest = _objectWithoutProperties(range, _excluded$2);\n var [s1, e1] = Range.edges(range);\n var [s22, e22] = Range.edges(another);\n var start3 = Point.isBefore(s1, s22) ? s22 : s1;\n var end3 = Point.isBefore(e1, e22) ? e1 : e22;\n if (Point.isBefore(end3, start3)) {\n return null;\n } else {\n return _objectSpread$5({\n anchor: start3,\n focus: end3\n }, rest);\n }\n },\n isBackward(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.isAfter(anchor, focus);\n },\n isCollapsed(range) {\n var {\n anchor,\n focus\n } = range;\n return Point.equals(anchor, focus);\n },\n isExpanded(range) {\n return !Range.isCollapsed(range);\n },\n isForward(range) {\n return !Range.isBackward(range);\n },\n isRange(value) {\n return isPlainObject(value) && Point.isPoint(value.anchor) && Point.isPoint(value.focus);\n },\n *points(range) {\n yield [range.anchor, \"anchor\"];\n yield [range.focus, \"focus\"];\n },\n start(range) {\n var [start3] = Range.edges(range);\n return start3;\n },\n transform(range, op) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return fn(range, (r5) => {\n if (r5 === null) {\n return null;\n }\n var {\n affinity = \"inward\"\n } = options;\n var affinityAnchor;\n var affinityFocus;\n if (affinity === \"inward\") {\n var isCollapsed2 = Range.isCollapsed(r5);\n if (Range.isForward(r5)) {\n affinityAnchor = \"forward\";\n affinityFocus = isCollapsed2 ? affinityAnchor : \"backward\";\n } else {\n affinityAnchor = \"backward\";\n affinityFocus = isCollapsed2 ? affinityAnchor : \"forward\";\n }\n } else if (affinity === \"outward\") {\n if (Range.isForward(r5)) {\n affinityAnchor = \"backward\";\n affinityFocus = \"forward\";\n } else {\n affinityAnchor = \"forward\";\n affinityFocus = \"backward\";\n }\n } else {\n affinityAnchor = affinity;\n affinityFocus = affinity;\n }\n var anchor = Point.transform(r5.anchor, op, {\n affinity: affinityAnchor\n });\n var focus = Point.transform(r5.focus, op, {\n affinity: affinityFocus\n });\n if (!anchor || !focus) {\n return null;\n }\n r5.anchor = anchor;\n r5.focus = focus;\n });\n }\n};\nvar RangeRef = {\n transform(ref, op) {\n var {\n current,\n affinity\n } = ref;\n if (current == null) {\n return;\n }\n var path = Range.transform(current, op, {\n affinity\n });\n ref.current = path;\n if (path == null) {\n ref.unref();\n }\n }\n};\nvar isDeepEqual = (node, another) => {\n for (var key in node) {\n var a5 = node[key];\n var b3 = another[key];\n if (isPlainObject(a5) && isPlainObject(b3)) {\n if (!isDeepEqual(a5, b3))\n return false;\n } else if (Array.isArray(a5) && Array.isArray(b3)) {\n if (a5.length !== b3.length)\n return false;\n for (var i3 = 0; i3 < a5.length; i3++) {\n if (a5[i3] !== b3[i3])\n return false;\n }\n } else if (a5 !== b3) {\n return false;\n }\n }\n for (var _key in another) {\n if (node[_key] === void 0 && another[_key] !== void 0) {\n return false;\n }\n }\n return true;\n};\nvar _excluded$1 = [\"text\"];\nvar _excluded2$1 = [\"anchor\", \"focus\"];\nfunction ownKeys$4(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$4(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$4(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$4(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Text = {\n equals(text4, another) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n loose = false\n } = options;\n function omitText(obj) {\n var rest = _objectWithoutProperties(obj, _excluded$1);\n return rest;\n }\n return isDeepEqual(loose ? omitText(text4) : text4, loose ? omitText(another) : another);\n },\n isText(value) {\n return isPlainObject(value) && typeof value.text === \"string\";\n },\n isTextList(value) {\n return Array.isArray(value) && value.every((val) => Text.isText(val));\n },\n isTextProps(props) {\n return props.text !== void 0;\n },\n matches(text4, props) {\n for (var key in props) {\n if (key === \"text\") {\n continue;\n }\n if (!text4.hasOwnProperty(key) || text4[key] !== props[key]) {\n return false;\n }\n }\n return true;\n },\n decorations(node, decorations) {\n var leaves = [_objectSpread$4({}, node)];\n for (var dec of decorations) {\n var rest = _objectWithoutProperties(dec, _excluded2$1);\n var [start3, end3] = Range.edges(dec);\n var next = [];\n var o3 = 0;\n for (var leaf of leaves) {\n var {\n length\n } = leaf.text;\n var offset3 = o3;\n o3 += length;\n if (start3.offset <= offset3 && end3.offset >= o3) {\n Object.assign(leaf, rest);\n next.push(leaf);\n continue;\n }\n if (start3.offset !== end3.offset && (start3.offset === o3 || end3.offset === offset3) || start3.offset > o3 || end3.offset < offset3 || end3.offset === offset3 && offset3 !== 0) {\n next.push(leaf);\n continue;\n }\n var middle = leaf;\n var before = void 0;\n var after = void 0;\n if (end3.offset < o3) {\n var off3 = end3.offset - offset3;\n after = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n text: middle.text.slice(off3)\n });\n middle = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n text: middle.text.slice(0, off3)\n });\n }\n if (start3.offset > offset3) {\n var _off = start3.offset - offset3;\n before = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n text: middle.text.slice(0, _off)\n });\n middle = _objectSpread$4(_objectSpread$4({}, middle), {}, {\n text: middle.text.slice(_off)\n });\n }\n Object.assign(middle, rest);\n if (before) {\n next.push(before);\n }\n next.push(middle);\n if (after) {\n next.push(after);\n }\n }\n leaves = next;\n }\n return leaves;\n }\n};\nfunction ownKeys$3(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$3(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$3(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$3(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar applyToDraft = (editor, selection, op) => {\n switch (op.type) {\n case \"insert_node\": {\n var {\n path,\n node\n } = op;\n var parent2 = Node2.parent(editor, path);\n var index7 = path[path.length - 1];\n if (index7 > parent2.children.length) {\n throw new Error('Cannot apply an \"insert_node\" operation at path ['.concat(path, \"] because the destination is past the end of the node.\"));\n }\n parent2.children.splice(index7, 0, node);\n if (selection) {\n for (var [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op);\n }\n }\n break;\n }\n case \"insert_text\": {\n var {\n path: _path,\n offset: offset3,\n text: text4\n } = op;\n if (text4.length === 0)\n break;\n var _node = Node2.leaf(editor, _path);\n var before = _node.text.slice(0, offset3);\n var after = _node.text.slice(offset3);\n _node.text = before + text4 + after;\n if (selection) {\n for (var [_point, _key] of Range.points(selection)) {\n selection[_key] = Point.transform(_point, op);\n }\n }\n break;\n }\n case \"merge_node\": {\n var {\n path: _path2\n } = op;\n var _node2 = Node2.get(editor, _path2);\n var prevPath = Path.previous(_path2);\n var prev = Node2.get(editor, prevPath);\n var _parent2 = Node2.parent(editor, _path2);\n var _index = _path2[_path2.length - 1];\n if (Text.isText(_node2) && Text.isText(prev)) {\n prev.text += _node2.text;\n } else if (!Text.isText(_node2) && !Text.isText(prev)) {\n prev.children.push(..._node2.children);\n } else {\n throw new Error('Cannot apply a \"merge_node\" operation at path ['.concat(_path2, \"] to nodes of different interfaces: \").concat(_node2, \" \").concat(prev));\n }\n _parent2.children.splice(_index, 1);\n if (selection) {\n for (var [_point2, _key2] of Range.points(selection)) {\n selection[_key2] = Point.transform(_point2, op);\n }\n }\n break;\n }\n case \"move_node\": {\n var {\n path: _path3,\n newPath\n } = op;\n if (Path.isAncestor(_path3, newPath)) {\n throw new Error(\"Cannot move a path [\".concat(_path3, \"] to new path [\").concat(newPath, \"] because the destination is inside itself.\"));\n }\n var _node3 = Node2.get(editor, _path3);\n var _parent22 = Node2.parent(editor, _path3);\n var _index2 = _path3[_path3.length - 1];\n _parent22.children.splice(_index2, 1);\n var truePath = Path.transform(_path3, op);\n var newParent = Node2.get(editor, Path.parent(truePath));\n var newIndex = truePath[truePath.length - 1];\n newParent.children.splice(newIndex, 0, _node3);\n if (selection) {\n for (var [_point3, _key3] of Range.points(selection)) {\n selection[_key3] = Point.transform(_point3, op);\n }\n }\n break;\n }\n case \"remove_node\": {\n var {\n path: _path4\n } = op;\n var _index3 = _path4[_path4.length - 1];\n var _parent3 = Node2.parent(editor, _path4);\n _parent3.children.splice(_index3, 1);\n if (selection) {\n for (var [_point4, _key4] of Range.points(selection)) {\n var result = Point.transform(_point4, op);\n if (selection != null && result != null) {\n selection[_key4] = result;\n } else {\n var _prev = void 0;\n var next = void 0;\n for (var [n6, p4] of Node2.texts(editor)) {\n if (Path.compare(p4, _path4) === -1) {\n _prev = [n6, p4];\n } else {\n next = [n6, p4];\n break;\n }\n }\n var preferNext = false;\n if (_prev && next) {\n if (Path.equals(next[1], _path4)) {\n preferNext = !Path.hasPrevious(next[1]);\n } else {\n preferNext = Path.common(_prev[1], _path4).length < Path.common(next[1], _path4).length;\n }\n }\n if (_prev && !preferNext) {\n _point4.path = _prev[1];\n _point4.offset = _prev[0].text.length;\n } else if (next) {\n _point4.path = next[1];\n _point4.offset = 0;\n } else {\n selection = null;\n }\n }\n }\n }\n break;\n }\n case \"remove_text\": {\n var {\n path: _path5,\n offset: _offset,\n text: _text\n } = op;\n if (_text.length === 0)\n break;\n var _node4 = Node2.leaf(editor, _path5);\n var _before = _node4.text.slice(0, _offset);\n var _after = _node4.text.slice(_offset + _text.length);\n _node4.text = _before + _after;\n if (selection) {\n for (var [_point5, _key5] of Range.points(selection)) {\n selection[_key5] = Point.transform(_point5, op);\n }\n }\n break;\n }\n case \"set_node\": {\n var {\n path: _path6,\n properties,\n newProperties\n } = op;\n if (_path6.length === 0) {\n throw new Error(\"Cannot set properties on the root node!\");\n }\n var _node5 = Node2.get(editor, _path6);\n for (var _key6 in newProperties) {\n if (_key6 === \"children\" || _key6 === \"text\") {\n throw new Error('Cannot set the \"'.concat(_key6, '\" property of nodes!'));\n }\n var value = newProperties[_key6];\n if (value == null) {\n delete _node5[_key6];\n } else {\n _node5[_key6] = value;\n }\n }\n for (var _key7 in properties) {\n if (!newProperties.hasOwnProperty(_key7)) {\n delete _node5[_key7];\n }\n }\n break;\n }\n case \"set_selection\": {\n var {\n newProperties: _newProperties\n } = op;\n if (_newProperties == null) {\n selection = _newProperties;\n } else {\n if (selection == null) {\n if (!Range.isRange(_newProperties)) {\n throw new Error('Cannot apply an incomplete \"set_selection\" operation properties '.concat(JSON.stringify(_newProperties), \" when there is no current selection.\"));\n }\n selection = _objectSpread$3({}, _newProperties);\n }\n for (var _key8 in _newProperties) {\n var _value = _newProperties[_key8];\n if (_value == null) {\n if (_key8 === \"anchor\" || _key8 === \"focus\") {\n throw new Error('Cannot remove the \"'.concat(_key8, '\" selection property'));\n }\n delete selection[_key8];\n } else {\n selection[_key8] = _value;\n }\n }\n }\n break;\n }\n case \"split_node\": {\n var {\n path: _path7,\n position,\n properties: _properties\n } = op;\n if (_path7.length === 0) {\n throw new Error('Cannot apply a \"split_node\" operation at path ['.concat(_path7, \"] because the root node cannot be split.\"));\n }\n var _node6 = Node2.get(editor, _path7);\n var _parent4 = Node2.parent(editor, _path7);\n var _index4 = _path7[_path7.length - 1];\n var newNode;\n if (Text.isText(_node6)) {\n var _before2 = _node6.text.slice(0, position);\n var _after2 = _node6.text.slice(position);\n _node6.text = _before2;\n newNode = _objectSpread$3(_objectSpread$3({}, _properties), {}, {\n text: _after2\n });\n } else {\n var _before3 = _node6.children.slice(0, position);\n var _after3 = _node6.children.slice(position);\n _node6.children = _before3;\n newNode = _objectSpread$3(_objectSpread$3({}, _properties), {}, {\n children: _after3\n });\n }\n _parent4.children.splice(_index4 + 1, 0, newNode);\n if (selection) {\n for (var [_point6, _key9] of Range.points(selection)) {\n selection[_key9] = Point.transform(_point6, op);\n }\n }\n break;\n }\n }\n return selection;\n};\nvar GeneralTransforms = {\n transform(editor, op) {\n editor.children = ln(editor.children);\n var selection = editor.selection && ln(editor.selection);\n try {\n selection = applyToDraft(editor, selection, op);\n } finally {\n editor.children = dn(editor.children);\n if (selection) {\n editor.selection = r(selection) ? dn(selection) : selection;\n } else {\n editor.selection = null;\n }\n }\n }\n};\nvar _excluded = [\"text\"];\nvar _excluded2 = [\"children\"];\nfunction ownKeys$2(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$2(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$2(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$2(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar NodeTransforms = {\n insertNodes(editor, nodes) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = \"lowest\"\n } = options;\n var {\n at,\n match: match2,\n select: select2\n } = options;\n if (Node2.isNode(nodes)) {\n nodes = [nodes];\n }\n if (nodes.length === 0) {\n return;\n }\n var [node] = nodes;\n if (!at) {\n if (editor.selection) {\n at = editor.selection;\n } else if (editor.children.length > 0) {\n at = Editor.end(editor, []);\n } else {\n at = [0];\n }\n select2 = true;\n }\n if (select2 == null) {\n select2 = false;\n }\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at);\n }\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end3] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end3);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n }\n if (Point.isPoint(at)) {\n if (match2 == null) {\n if (Text.isText(node)) {\n match2 = (n6) => Text.isText(n6);\n } else if (editor.isInline(node)) {\n match2 = (n6) => Text.isText(n6) || Editor.isInline(editor, n6);\n } else {\n match2 = (n6) => Editor.isBlock(editor, n6);\n }\n }\n var [entry] = Editor.nodes(editor, {\n at: at.path,\n match: match2,\n mode,\n voids\n });\n if (entry) {\n var [, _matchPath] = entry;\n var pathRef = Editor.pathRef(editor, _matchPath);\n var isAtEnd = Editor.isEnd(editor, at, _matchPath);\n Transforms.splitNodes(editor, {\n at,\n match: match2,\n mode,\n voids\n });\n var path = pathRef.unref();\n at = isAtEnd ? Path.next(path) : path;\n } else {\n return;\n }\n }\n var parentPath = Path.parent(at);\n var index7 = at[at.length - 1];\n if (!voids && Editor.void(editor, {\n at: parentPath\n })) {\n return;\n }\n for (var _node of nodes) {\n var _path = parentPath.concat(index7);\n index7++;\n editor.apply({\n type: \"insert_node\",\n path: _path,\n node: _node\n });\n at = Path.next(at);\n }\n at = Path.previous(at);\n if (select2) {\n var point = Editor.end(editor, at);\n if (point) {\n Transforms.select(editor, point);\n }\n }\n });\n },\n liftNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n at = editor.selection,\n mode = \"lowest\",\n voids = false\n } = options;\n var {\n match: match2\n } = options;\n if (match2 == null) {\n match2 = Path.isPath(at) ? matchPath(editor, at) : (n6) => Editor.isBlock(editor, n6);\n }\n if (!at) {\n return;\n }\n var matches = Editor.nodes(editor, {\n at,\n match: match2,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, (_ref) => {\n var [, p4] = _ref;\n return Editor.pathRef(editor, p4);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n if (path.length < 2) {\n throw new Error(\"Cannot lift node at a path [\".concat(path, \"] because it has a depth of less than `2`.\"));\n }\n var parentNodeEntry = Editor.node(editor, Path.parent(path));\n var [parent2, parentPath] = parentNodeEntry;\n var index7 = path[path.length - 1];\n var {\n length\n } = parent2.children;\n if (length === 1) {\n var toPath = Path.next(parentPath);\n Transforms.moveNodes(editor, {\n at: path,\n to: toPath,\n voids\n });\n Transforms.removeNodes(editor, {\n at: parentPath,\n voids\n });\n } else if (index7 === 0) {\n Transforms.moveNodes(editor, {\n at: path,\n to: parentPath,\n voids\n });\n } else if (index7 === length - 1) {\n var _toPath = Path.next(parentPath);\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath,\n voids\n });\n } else {\n var splitPath = Path.next(path);\n var _toPath2 = Path.next(parentPath);\n Transforms.splitNodes(editor, {\n at: splitPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: path,\n to: _toPath2,\n voids\n });\n }\n }\n });\n },\n mergeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match: match2,\n at = editor.selection\n } = options;\n var {\n hanging = false,\n voids = false,\n mode = \"lowest\"\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n if (Path.isPath(at)) {\n var [parent2] = Editor.parent(editor, at);\n match2 = (n6) => parent2.children.includes(n6);\n } else {\n match2 = (n6) => Editor.isBlock(editor, n6);\n }\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end3] = Range.edges(at);\n var pointRef = Editor.pointRef(editor, end3);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n }\n var [current] = Editor.nodes(editor, {\n at,\n match: match2,\n voids,\n mode\n });\n var prev = Editor.previous(editor, {\n at,\n match: match2,\n voids,\n mode\n });\n if (!current || !prev) {\n return;\n }\n var [node, path] = current;\n var [prevNode, prevPath] = prev;\n if (path.length === 0 || prevPath.length === 0) {\n return;\n }\n var newPath = Path.next(prevPath);\n var commonPath = Path.common(path, prevPath);\n var isPreviousSibling = Path.isSibling(path, prevPath);\n var levels = Array.from(Editor.levels(editor, {\n at: path\n }), (_ref2) => {\n var [n6] = _ref2;\n return n6;\n }).slice(commonPath.length).slice(0, -1);\n var emptyAncestor = Editor.above(editor, {\n at: path,\n mode: \"highest\",\n match: (n6) => levels.includes(n6) && hasSingleChildNest(editor, n6)\n });\n var emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1]);\n var properties;\n var position;\n if (Text.isText(node) && Text.isText(prevNode)) {\n var rest = _objectWithoutProperties(node, _excluded);\n position = prevNode.text.length;\n properties = rest;\n } else if (Element2.isElement(node) && Element2.isElement(prevNode)) {\n var rest = _objectWithoutProperties(node, _excluded2);\n position = prevNode.children.length;\n properties = rest;\n } else {\n throw new Error(\"Cannot merge the node at path [\".concat(path, \"] with the previous sibling because it is not the same kind: \").concat(JSON.stringify(node), \" \").concat(JSON.stringify(prevNode)));\n }\n if (!isPreviousSibling) {\n Transforms.moveNodes(editor, {\n at: path,\n to: newPath,\n voids\n });\n }\n if (emptyRef) {\n Transforms.removeNodes(editor, {\n at: emptyRef.current,\n voids\n });\n }\n if (Element2.isElement(prevNode) && Editor.isEmpty(editor, prevNode) || Text.isText(prevNode) && prevNode.text === \"\" && prevPath[prevPath.length - 1] !== 0) {\n Transforms.removeNodes(editor, {\n at: prevPath,\n voids\n });\n } else {\n editor.apply({\n type: \"merge_node\",\n path: newPath,\n position,\n properties\n });\n }\n if (emptyRef) {\n emptyRef.unref();\n }\n });\n },\n moveNodes(editor, options) {\n Editor.withoutNormalizing(editor, () => {\n var {\n to,\n at = editor.selection,\n mode = \"lowest\",\n voids = false\n } = options;\n var {\n match: match2\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n match2 = Path.isPath(at) ? matchPath(editor, at) : (n6) => Editor.isBlock(editor, n6);\n }\n var toRef = Editor.pathRef(editor, to);\n var targets = Editor.nodes(editor, {\n at,\n match: match2,\n mode,\n voids\n });\n var pathRefs = Array.from(targets, (_ref3) => {\n var [, p4] = _ref3;\n return Editor.pathRef(editor, p4);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n var newPath = toRef.current;\n if (path.length !== 0) {\n editor.apply({\n type: \"move_node\",\n path,\n newPath\n });\n }\n if (toRef.current && Path.isSibling(newPath, path) && Path.isAfter(newPath, path)) {\n toRef.current = Path.next(toRef.current);\n }\n }\n toRef.unref();\n });\n },\n removeNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false,\n mode = \"lowest\"\n } = options;\n var {\n at = editor.selection,\n match: match2\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n match2 = Path.isPath(at) ? matchPath(editor, at) : (n6) => Editor.isBlock(editor, n6);\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n var depths = Editor.nodes(editor, {\n at,\n match: match2,\n mode,\n voids\n });\n var pathRefs = Array.from(depths, (_ref4) => {\n var [, p4] = _ref4;\n return Editor.pathRef(editor, p4);\n });\n for (var pathRef of pathRefs) {\n var path = pathRef.unref();\n if (path) {\n var [node] = Editor.node(editor, path);\n editor.apply({\n type: \"remove_node\",\n path,\n node\n });\n }\n }\n });\n },\n setNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n match: match2,\n at = editor.selection,\n compare,\n merge: merge2\n } = options;\n var {\n hanging = false,\n mode = \"lowest\",\n split = false,\n voids = false\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n match2 = Path.isPath(at) ? matchPath(editor, at) : (n6) => Editor.isBlock(editor, n6);\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n if (split && Range.isRange(at)) {\n if (Range.isCollapsed(at) && Editor.leaf(editor, at.anchor)[0].text.length > 0) {\n return;\n }\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: \"inward\"\n });\n var [start3, end3] = Range.edges(at);\n var splitMode = mode === \"lowest\" ? \"lowest\" : \"highest\";\n var endAtEndOfNode = Editor.isEnd(editor, end3, end3.path);\n Transforms.splitNodes(editor, {\n at: end3,\n match: match2,\n mode: splitMode,\n voids,\n always: !endAtEndOfNode\n });\n var startAtStartOfNode = Editor.isStart(editor, start3, start3.path);\n Transforms.splitNodes(editor, {\n at: start3,\n match: match2,\n mode: splitMode,\n voids,\n always: !startAtStartOfNode\n });\n at = rangeRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n if (!compare) {\n compare = (prop, nodeProp) => prop !== nodeProp;\n }\n for (var [node, path] of Editor.nodes(editor, {\n at,\n match: match2,\n mode,\n voids\n })) {\n var properties = {};\n var newProperties = {};\n if (path.length === 0) {\n continue;\n }\n var hasChanges = false;\n for (var k3 in props) {\n if (k3 === \"children\" || k3 === \"text\") {\n continue;\n }\n if (compare(props[k3], node[k3])) {\n hasChanges = true;\n if (node.hasOwnProperty(k3))\n properties[k3] = node[k3];\n if (merge2) {\n if (props[k3] != null)\n newProperties[k3] = merge2(node[k3], props[k3]);\n } else {\n if (props[k3] != null)\n newProperties[k3] = props[k3];\n }\n }\n }\n if (hasChanges) {\n editor.apply({\n type: \"set_node\",\n path,\n properties,\n newProperties\n });\n }\n }\n });\n },\n splitNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = \"lowest\",\n voids = false\n } = options;\n var {\n match: match2,\n at = editor.selection,\n height = 0,\n always = false\n } = options;\n if (match2 == null) {\n match2 = (n6) => Editor.isBlock(editor, n6);\n }\n if (Range.isRange(at)) {\n at = deleteRange(editor, at);\n }\n if (Path.isPath(at)) {\n var path = at;\n var point = Editor.point(editor, path);\n var [parent2] = Editor.parent(editor, path);\n match2 = (n6) => n6 === parent2;\n height = point.path.length - path.length + 1;\n at = point;\n always = true;\n }\n if (!at) {\n return;\n }\n var beforeRef = Editor.pointRef(editor, at, {\n affinity: \"backward\"\n });\n var afterRef;\n try {\n var [highest] = Editor.nodes(editor, {\n at,\n match: match2,\n mode,\n voids\n });\n if (!highest) {\n return;\n }\n var voidMatch = Editor.void(editor, {\n at,\n mode: \"highest\"\n });\n var nudge = 0;\n if (!voids && voidMatch) {\n var [voidNode, voidPath] = voidMatch;\n if (Element2.isElement(voidNode) && editor.isInline(voidNode)) {\n var after = Editor.after(editor, voidPath);\n if (!after) {\n var text4 = {\n text: \"\"\n };\n var afterPath = Path.next(voidPath);\n Transforms.insertNodes(editor, text4, {\n at: afterPath,\n voids\n });\n after = Editor.point(editor, afterPath);\n }\n at = after;\n always = true;\n }\n var siblingHeight = at.path.length - voidPath.length;\n height = siblingHeight + 1;\n always = true;\n }\n afterRef = Editor.pointRef(editor, at);\n var depth = at.path.length - height;\n var [, highestPath] = highest;\n var lowestPath = at.path.slice(0, depth);\n var position = height === 0 ? at.offset : at.path[depth] + nudge;\n for (var [node, _path2] of Editor.levels(editor, {\n at: lowestPath,\n reverse: true,\n voids\n })) {\n var split = false;\n if (_path2.length < highestPath.length || _path2.length === 0 || !voids && Editor.isVoid(editor, node)) {\n break;\n }\n var _point = beforeRef.current;\n var isEnd = Editor.isEnd(editor, _point, _path2);\n if (always || !beforeRef || !Editor.isEdge(editor, _point, _path2)) {\n split = true;\n var properties = Node2.extractProps(node);\n editor.apply({\n type: \"split_node\",\n path: _path2,\n position,\n properties\n });\n }\n position = _path2[_path2.length - 1] + (split || isEnd ? 1 : 0);\n }\n if (options.at == null) {\n var _point2 = afterRef.current || Editor.end(editor, []);\n Transforms.select(editor, _point2);\n }\n } finally {\n var _afterRef;\n beforeRef.unref();\n (_afterRef = afterRef) === null || _afterRef === void 0 ? void 0 : _afterRef.unref();\n }\n });\n },\n unsetNodes(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n if (!Array.isArray(props)) {\n props = [props];\n }\n var obj = {};\n for (var key of props) {\n obj[key] = null;\n }\n Transforms.setNodes(editor, obj, options);\n },\n unwrapNodes(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = \"lowest\",\n split = false,\n voids = false\n } = options;\n var {\n at = editor.selection,\n match: match2\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n match2 = Path.isPath(at) ? matchPath(editor, at) : (n6) => Editor.isBlock(editor, n6);\n }\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n var rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null;\n var matches = Editor.nodes(editor, {\n at,\n match: match2,\n mode,\n voids\n });\n var pathRefs = Array.from(matches, (_ref5) => {\n var [, p4] = _ref5;\n return Editor.pathRef(editor, p4);\n }).reverse();\n var _loop = function _loop2(pathRef2) {\n var path = pathRef2.unref();\n var [node] = Editor.node(editor, path);\n var range = Editor.range(editor, path);\n if (split && rangeRef) {\n range = Range.intersection(rangeRef.current, range);\n }\n Transforms.liftNodes(editor, {\n at: range,\n match: (n6) => Element2.isAncestor(node) && node.children.includes(n6),\n voids\n });\n };\n for (var pathRef of pathRefs) {\n _loop(pathRef);\n }\n if (rangeRef) {\n rangeRef.unref();\n }\n });\n },\n wrapNodes(editor, element4) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n mode = \"lowest\",\n split = false,\n voids = false\n } = options;\n var {\n match: match2,\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n if (Path.isPath(at)) {\n match2 = matchPath(editor, at);\n } else if (editor.isInline(element4)) {\n match2 = (n6) => Editor.isInline(editor, n6) || Text.isText(n6);\n } else {\n match2 = (n6) => Editor.isBlock(editor, n6);\n }\n }\n if (split && Range.isRange(at)) {\n var [start3, end3] = Range.edges(at);\n var rangeRef = Editor.rangeRef(editor, at, {\n affinity: \"inward\"\n });\n Transforms.splitNodes(editor, {\n at: end3,\n match: match2,\n voids\n });\n Transforms.splitNodes(editor, {\n at: start3,\n match: match2,\n voids\n });\n at = rangeRef.unref();\n if (options.at == null) {\n Transforms.select(editor, at);\n }\n }\n var roots = Array.from(Editor.nodes(editor, {\n at,\n match: editor.isInline(element4) ? (n6) => Editor.isBlock(editor, n6) : (n6) => Editor.isEditor(n6),\n mode: \"lowest\",\n voids\n }));\n for (var [, rootPath] of roots) {\n var a5 = Range.isRange(at) ? Range.intersection(at, Editor.range(editor, rootPath)) : at;\n if (!a5) {\n continue;\n }\n var matches = Array.from(Editor.nodes(editor, {\n at: a5,\n match: match2,\n mode,\n voids\n }));\n if (matches.length > 0) {\n var _ret = function() {\n var [first] = matches;\n var last2 = matches[matches.length - 1];\n var [, firstPath] = first;\n var [, lastPath] = last2;\n if (firstPath.length === 0 && lastPath.length === 0) {\n return \"continue\";\n }\n var commonPath = Path.equals(firstPath, lastPath) ? Path.parent(firstPath) : Path.common(firstPath, lastPath);\n var range = Editor.range(editor, firstPath, lastPath);\n var commonNodeEntry = Editor.node(editor, commonPath);\n var [commonNode] = commonNodeEntry;\n var depth = commonPath.length + 1;\n var wrapperPath = Path.next(lastPath.slice(0, depth));\n var wrapper = _objectSpread$2(_objectSpread$2({}, element4), {}, {\n children: []\n });\n Transforms.insertNodes(editor, wrapper, {\n at: wrapperPath,\n voids\n });\n Transforms.moveNodes(editor, {\n at: range,\n match: (n6) => Element2.isAncestor(commonNode) && commonNode.children.includes(n6),\n to: wrapperPath.concat(0),\n voids\n });\n }();\n if (_ret === \"continue\")\n continue;\n }\n }\n });\n }\n};\nvar hasSingleChildNest = (editor, node) => {\n if (Element2.isElement(node)) {\n var element4 = node;\n if (Editor.isVoid(editor, node)) {\n return true;\n } else if (element4.children.length === 1) {\n return hasSingleChildNest(editor, element4.children[0]);\n } else {\n return false;\n }\n } else if (Editor.isEditor(node)) {\n return false;\n } else {\n return true;\n }\n};\nvar deleteRange = (editor, range) => {\n if (Range.isCollapsed(range)) {\n return range.anchor;\n } else {\n var [, end3] = Range.edges(range);\n var pointRef = Editor.pointRef(editor, end3);\n Transforms.delete(editor, {\n at: range\n });\n return pointRef.unref();\n }\n};\nvar matchPath = (editor, path) => {\n var [node] = Editor.node(editor, path);\n return (n6) => n6 === node;\n};\nfunction ownKeys$1(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$1(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$1(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$1(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar SelectionTransforms = {\n collapse(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n edge = \"anchor\"\n } = options;\n var {\n selection\n } = editor;\n if (!selection) {\n return;\n } else if (edge === \"anchor\") {\n Transforms.select(editor, selection.anchor);\n } else if (edge === \"focus\") {\n Transforms.select(editor, selection.focus);\n } else if (edge === \"start\") {\n var [start3] = Range.edges(selection);\n Transforms.select(editor, start3);\n } else if (edge === \"end\") {\n var [, end3] = Range.edges(selection);\n Transforms.select(editor, end3);\n }\n },\n deselect(editor) {\n var {\n selection\n } = editor;\n if (selection) {\n editor.apply({\n type: \"set_selection\",\n properties: selection,\n newProperties: null\n });\n }\n },\n move(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var {\n selection\n } = editor;\n var {\n distance = 1,\n unit = \"character\",\n reverse = false\n } = options;\n var {\n edge = null\n } = options;\n if (!selection) {\n return;\n }\n if (edge === \"start\") {\n edge = Range.isBackward(selection) ? \"focus\" : \"anchor\";\n }\n if (edge === \"end\") {\n edge = Range.isBackward(selection) ? \"anchor\" : \"focus\";\n }\n var {\n anchor,\n focus\n } = selection;\n var opts = {\n distance,\n unit\n };\n var props = {};\n if (edge == null || edge === \"anchor\") {\n var point = reverse ? Editor.before(editor, anchor, opts) : Editor.after(editor, anchor, opts);\n if (point) {\n props.anchor = point;\n }\n }\n if (edge == null || edge === \"focus\") {\n var _point = reverse ? Editor.before(editor, focus, opts) : Editor.after(editor, focus, opts);\n if (_point) {\n props.focus = _point;\n }\n }\n Transforms.setSelection(editor, props);\n },\n select(editor, target) {\n var {\n selection\n } = editor;\n target = Editor.range(editor, target);\n if (selection) {\n Transforms.setSelection(editor, target);\n return;\n }\n if (!Range.isRange(target)) {\n throw new Error(\"When setting the selection and the current selection is `null` you must provide at least an `anchor` and `focus`, but you passed: \".concat(JSON.stringify(target)));\n }\n editor.apply({\n type: \"set_selection\",\n properties: selection,\n newProperties: target\n });\n },\n setPoint(editor, props) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n selection\n } = editor;\n var {\n edge = \"both\"\n } = options;\n if (!selection) {\n return;\n }\n if (edge === \"start\") {\n edge = Range.isBackward(selection) ? \"focus\" : \"anchor\";\n }\n if (edge === \"end\") {\n edge = Range.isBackward(selection) ? \"anchor\" : \"focus\";\n }\n var {\n anchor,\n focus\n } = selection;\n var point = edge === \"anchor\" ? anchor : focus;\n Transforms.setSelection(editor, {\n [edge === \"anchor\" ? \"anchor\" : \"focus\"]: _objectSpread$1(_objectSpread$1({}, point), props)\n });\n },\n setSelection(editor, props) {\n var {\n selection\n } = editor;\n var oldProps = {};\n var newProps = {};\n if (!selection) {\n return;\n }\n for (var k3 in props) {\n if (k3 === \"anchor\" && props.anchor != null && !Point.equals(props.anchor, selection.anchor) || k3 === \"focus\" && props.focus != null && !Point.equals(props.focus, selection.focus) || k3 !== \"anchor\" && k3 !== \"focus\" && props[k3] !== selection[k3]) {\n oldProps[k3] = selection[k3];\n newProps[k3] = props[k3];\n }\n }\n if (Object.keys(oldProps).length > 0) {\n editor.apply({\n type: \"set_selection\",\n properties: oldProps,\n newProperties: newProps\n });\n }\n }\n};\nvar TextTransforms = {\n delete(editor) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n reverse = false,\n unit = \"character\",\n distance = 1,\n voids = false\n } = options;\n var {\n at = editor.selection,\n hanging = false\n } = options;\n if (!at) {\n return;\n }\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n at = at.anchor;\n }\n if (Point.isPoint(at)) {\n var furthestVoid = Editor.void(editor, {\n at,\n mode: \"highest\"\n });\n if (!voids && furthestVoid) {\n var [, voidPath] = furthestVoid;\n at = voidPath;\n } else {\n var opts = {\n unit,\n distance\n };\n var target = reverse ? Editor.before(editor, at, opts) || Editor.start(editor, []) : Editor.after(editor, at, opts) || Editor.end(editor, []);\n at = {\n anchor: at,\n focus: target\n };\n hanging = true;\n }\n }\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, {\n at,\n voids\n });\n return;\n }\n if (Range.isCollapsed(at)) {\n return;\n }\n if (!hanging) {\n var [, _end] = Range.edges(at);\n var endOfDoc = Editor.end(editor, []);\n if (!Point.equals(_end, endOfDoc)) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n }\n var [start3, end3] = Range.edges(at);\n var startBlock = Editor.above(editor, {\n match: (n6) => Editor.isBlock(editor, n6),\n at: start3,\n voids\n });\n var endBlock = Editor.above(editor, {\n match: (n6) => Editor.isBlock(editor, n6),\n at: end3,\n voids\n });\n var isAcrossBlocks = startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n var isSingleText = Path.equals(start3.path, end3.path);\n var startVoid = voids ? null : Editor.void(editor, {\n at: start3,\n mode: \"highest\"\n });\n var endVoid = voids ? null : Editor.void(editor, {\n at: end3,\n mode: \"highest\"\n });\n if (startVoid) {\n var before = Editor.before(editor, start3);\n if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n start3 = before;\n }\n }\n if (endVoid) {\n var after = Editor.after(editor, end3);\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end3 = after;\n }\n }\n var matches = [];\n var lastPath;\n for (var entry of Editor.nodes(editor, {\n at,\n voids\n })) {\n var [node, path] = entry;\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue;\n }\n if (!voids && Editor.isVoid(editor, node) || !Path.isCommon(path, start3.path) && !Path.isCommon(path, end3.path)) {\n matches.push(entry);\n lastPath = path;\n }\n }\n var pathRefs = Array.from(matches, (_ref) => {\n var [, p4] = _ref;\n return Editor.pathRef(editor, p4);\n });\n var startRef = Editor.pointRef(editor, start3);\n var endRef = Editor.pointRef(editor, end3);\n if (!isSingleText && !startVoid) {\n var _point = startRef.current;\n var [_node] = Editor.leaf(editor, _point);\n var {\n path: _path\n } = _point;\n var {\n offset: offset3\n } = start3;\n var text4 = _node.text.slice(offset3);\n if (text4.length > 0)\n editor.apply({\n type: \"remove_text\",\n path: _path,\n offset: offset3,\n text: text4\n });\n }\n for (var pathRef of pathRefs) {\n var _path2 = pathRef.unref();\n Transforms.removeNodes(editor, {\n at: _path2,\n voids\n });\n }\n if (!endVoid) {\n var _point2 = endRef.current;\n var [_node2] = Editor.leaf(editor, _point2);\n var {\n path: _path3\n } = _point2;\n var _offset = isSingleText ? start3.offset : 0;\n var _text = _node2.text.slice(_offset, end3.offset);\n if (_text.length > 0)\n editor.apply({\n type: \"remove_text\",\n path: _path3,\n offset: _offset,\n text: _text\n });\n }\n if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n Transforms.mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids\n });\n }\n var startUnref = startRef.unref();\n var endUnref = endRef.unref();\n var point = reverse ? startUnref || endUnref : endUnref || startUnref;\n if (options.at == null && point) {\n Transforms.select(editor, point);\n }\n });\n },\n insertFragment(editor, fragment) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n hanging = false,\n voids = false\n } = options;\n var {\n at = editor.selection\n } = options;\n if (!fragment.length) {\n return;\n }\n if (!at) {\n return;\n } else if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at);\n }\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var [, end3] = Range.edges(at);\n if (!voids && Editor.void(editor, {\n at: end3\n })) {\n return;\n }\n var pointRef = Editor.pointRef(editor, end3);\n Transforms.delete(editor, {\n at\n });\n at = pointRef.unref();\n }\n } else if (Path.isPath(at)) {\n at = Editor.start(editor, at);\n }\n if (!voids && Editor.void(editor, {\n at\n })) {\n return;\n }\n var inlineElementMatch = Editor.above(editor, {\n at,\n match: (n6) => Editor.isInline(editor, n6),\n mode: \"highest\",\n voids\n });\n if (inlineElementMatch) {\n var [, _inlinePath] = inlineElementMatch;\n if (Editor.isEnd(editor, at, _inlinePath)) {\n var after = Editor.after(editor, _inlinePath);\n at = after;\n } else if (Editor.isStart(editor, at, _inlinePath)) {\n var before = Editor.before(editor, _inlinePath);\n at = before;\n }\n }\n var blockMatch = Editor.above(editor, {\n match: (n6) => Editor.isBlock(editor, n6),\n at,\n voids\n });\n var [, blockPath] = blockMatch;\n var isBlockStart = Editor.isStart(editor, at, blockPath);\n var isBlockEnd = Editor.isEnd(editor, at, blockPath);\n var isBlockEmpty = isBlockStart && isBlockEnd;\n var mergeStart = !isBlockStart || isBlockStart && isBlockEnd;\n var mergeEnd = !isBlockEnd;\n var [, firstPath] = Node2.first({\n children: fragment\n }, []);\n var [, lastPath] = Node2.last({\n children: fragment\n }, []);\n var matches = [];\n var matcher = (_ref2) => {\n var [n6, p4] = _ref2;\n var isRoot = p4.length === 0;\n if (isRoot) {\n return false;\n }\n if (isBlockEmpty) {\n return true;\n }\n if (mergeStart && Path.isAncestor(p4, firstPath) && Element2.isElement(n6) && !editor.isVoid(n6) && !editor.isInline(n6)) {\n return false;\n }\n if (mergeEnd && Path.isAncestor(p4, lastPath) && Element2.isElement(n6) && !editor.isVoid(n6) && !editor.isInline(n6)) {\n return false;\n }\n return true;\n };\n for (var entry of Node2.nodes({\n children: fragment\n }, {\n pass: matcher\n })) {\n if (matcher(entry)) {\n matches.push(entry);\n }\n }\n var starts = [];\n var middles = [];\n var ends = [];\n var starting = true;\n var hasBlocks = false;\n for (var [node] of matches) {\n if (Element2.isElement(node) && !editor.isInline(node)) {\n starting = false;\n hasBlocks = true;\n middles.push(node);\n } else if (starting) {\n starts.push(node);\n } else {\n ends.push(node);\n }\n }\n var [inlineMatch] = Editor.nodes(editor, {\n at,\n match: (n6) => Text.isText(n6) || Editor.isInline(editor, n6),\n mode: \"highest\",\n voids\n });\n var [, inlinePath] = inlineMatch;\n var isInlineStart = Editor.isStart(editor, at, inlinePath);\n var isInlineEnd = Editor.isEnd(editor, at, inlinePath);\n var middleRef = Editor.pathRef(editor, isBlockEnd ? Path.next(blockPath) : blockPath);\n var endRef = Editor.pathRef(editor, isInlineEnd ? Path.next(inlinePath) : inlinePath);\n var blockPathRef = Editor.pathRef(editor, blockPath);\n Transforms.splitNodes(editor, {\n at,\n match: (n6) => hasBlocks ? Editor.isBlock(editor, n6) : Text.isText(n6) || Editor.isInline(editor, n6),\n mode: hasBlocks ? \"lowest\" : \"highest\",\n voids\n });\n var startRef = Editor.pathRef(editor, !isInlineStart || isInlineStart && isInlineEnd ? Path.next(inlinePath) : inlinePath);\n Transforms.insertNodes(editor, starts, {\n at: startRef.current,\n match: (n6) => Text.isText(n6) || Editor.isInline(editor, n6),\n mode: \"highest\",\n voids\n });\n if (isBlockEmpty && middles.length) {\n Transforms.delete(editor, {\n at: blockPathRef.unref(),\n voids\n });\n }\n Transforms.insertNodes(editor, middles, {\n at: middleRef.current,\n match: (n6) => Editor.isBlock(editor, n6),\n mode: \"lowest\",\n voids\n });\n Transforms.insertNodes(editor, ends, {\n at: endRef.current,\n match: (n6) => Text.isText(n6) || Editor.isInline(editor, n6),\n mode: \"highest\",\n voids\n });\n if (!options.at) {\n var path;\n if (ends.length > 0) {\n path = Path.previous(endRef.current);\n } else if (middles.length > 0) {\n path = Path.previous(middleRef.current);\n } else {\n path = Path.previous(startRef.current);\n }\n var _end2 = Editor.end(editor, path);\n Transforms.select(editor, _end2);\n }\n startRef.unref();\n middleRef.unref();\n endRef.unref();\n });\n },\n insertText(editor, text4) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n Editor.withoutNormalizing(editor, () => {\n var {\n voids = false\n } = options;\n var {\n at = editor.selection\n } = options;\n if (!at) {\n return;\n }\n if (Path.isPath(at)) {\n at = Editor.range(editor, at);\n }\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n var end3 = Range.end(at);\n if (!voids && Editor.void(editor, {\n at: end3\n })) {\n return;\n }\n var pointRef = Editor.pointRef(editor, end3);\n Transforms.delete(editor, {\n at,\n voids\n });\n at = pointRef.unref();\n Transforms.setSelection(editor, {\n anchor: at,\n focus: at\n });\n }\n }\n if (!voids && Editor.void(editor, {\n at\n })) {\n return;\n }\n var {\n path,\n offset: offset3\n } = at;\n if (text4.length > 0)\n editor.apply({\n type: \"insert_text\",\n path,\n offset: offset3,\n text: text4\n });\n });\n }\n};\nfunction ownKeys(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys(Object(source), true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Transforms = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, GeneralTransforms), NodeTransforms), SelectionTransforms), TextTransforms);\n\n// node_modules/slate-react/dist/index.es.js\nvar import_react = __toESM(require(\"react\"));\nvar import_direction = __toESM(require_direction());\nvar import_debounce = __toESM(require_debounce());\nvar import_throttle = __toESM(require_throttle());\n\n// node_modules/compute-scroll-into-view/dist/index.module.js\nfunction t2(t5) {\n return typeof t5 == \"object\" && t5 != null && t5.nodeType === 1;\n}\nfunction e(t5, e4) {\n return (!e4 || t5 !== \"hidden\") && t5 !== \"visible\" && t5 !== \"clip\";\n}\nfunction n2(t5, n6) {\n if (t5.clientHeight < t5.scrollHeight || t5.clientWidth < t5.scrollWidth) {\n var r5 = getComputedStyle(t5, null);\n return e(r5.overflowY, n6) || e(r5.overflowX, n6) || function(t6) {\n var e4 = function(t7) {\n if (!t7.ownerDocument || !t7.ownerDocument.defaultView)\n return null;\n try {\n return t7.ownerDocument.defaultView.frameElement;\n } catch (t8) {\n return null;\n }\n }(t6);\n return !!e4 && (e4.clientHeight < t6.scrollHeight || e4.clientWidth < t6.scrollWidth);\n }(t5);\n }\n return false;\n}\nfunction r2(t5, e4, n6, r5, i3, o3, l4, d3) {\n return o3 < t5 && l4 > e4 || o3 > t5 && l4 < e4 ? 0 : o3 <= t5 && d3 <= n6 || l4 >= e4 && d3 >= n6 ? o3 - t5 - r5 : l4 > e4 && d3 < n6 || o3 < t5 && d3 > n6 ? l4 - e4 + i3 : 0;\n}\nfunction index_module_default(e4, i3) {\n var o3 = window, l4 = i3.scrollMode, d3 = i3.block, u4 = i3.inline, h3 = i3.boundary, a5 = i3.skipOverflowHiddenElements, c4 = typeof h3 == \"function\" ? h3 : function(t5) {\n return t5 !== h3;\n };\n if (!t2(e4))\n throw new TypeError(\"Invalid target\");\n for (var f4 = document.scrollingElement || document.documentElement, s3 = [], p4 = e4; t2(p4) && c4(p4); ) {\n if ((p4 = p4.parentElement) === f4) {\n s3.push(p4);\n break;\n }\n p4 != null && p4 === document.body && n2(p4) && !n2(document.documentElement) || p4 != null && n2(p4, a5) && s3.push(p4);\n }\n for (var m3 = o3.visualViewport ? o3.visualViewport.width : innerWidth, g4 = o3.visualViewport ? o3.visualViewport.height : innerHeight, w3 = window.scrollX || pageXOffset, v3 = window.scrollY || pageYOffset, W3 = e4.getBoundingClientRect(), b3 = W3.height, H3 = W3.width, y3 = W3.top, E3 = W3.right, M3 = W3.bottom, V3 = W3.left, x3 = d3 === \"start\" || d3 === \"nearest\" ? y3 : d3 === \"end\" ? M3 : y3 + b3 / 2, I3 = u4 === \"center\" ? V3 + H3 / 2 : u4 === \"end\" ? E3 : V3, C3 = [], T2 = 0; T2 < s3.length; T2++) {\n var k3 = s3[T2], B3 = k3.getBoundingClientRect(), D3 = B3.height, O2 = B3.width, R3 = B3.top, X3 = B3.right, Y3 = B3.bottom, L3 = B3.left;\n if (l4 === \"if-needed\" && y3 >= 0 && V3 >= 0 && M3 <= g4 && E3 <= m3 && y3 >= R3 && M3 <= Y3 && V3 >= L3 && E3 <= X3)\n return C3;\n var S3 = getComputedStyle(k3), j3 = parseInt(S3.borderLeftWidth, 10), q3 = parseInt(S3.borderTopWidth, 10), z3 = parseInt(S3.borderRightWidth, 10), A3 = parseInt(S3.borderBottomWidth, 10), F3 = 0, G3 = 0, J2 = \"offsetWidth\" in k3 ? k3.offsetWidth - k3.clientWidth - j3 - z3 : 0, K2 = \"offsetHeight\" in k3 ? k3.offsetHeight - k3.clientHeight - q3 - A3 : 0;\n if (f4 === k3)\n F3 = d3 === \"start\" ? x3 : d3 === \"end\" ? x3 - g4 : d3 === \"nearest\" ? r2(v3, v3 + g4, g4, q3, A3, v3 + x3, v3 + x3 + b3, b3) : x3 - g4 / 2, G3 = u4 === \"start\" ? I3 : u4 === \"center\" ? I3 - m3 / 2 : u4 === \"end\" ? I3 - m3 : r2(w3, w3 + m3, m3, j3, z3, w3 + I3, w3 + I3 + H3, H3), F3 = Math.max(0, F3 + v3), G3 = Math.max(0, G3 + w3);\n else {\n F3 = d3 === \"start\" ? x3 - R3 - q3 : d3 === \"end\" ? x3 - Y3 + A3 + K2 : d3 === \"nearest\" ? r2(R3, Y3, D3, q3, A3 + K2, x3, x3 + b3, b3) : x3 - (R3 + D3 / 2) + K2 / 2, G3 = u4 === \"start\" ? I3 - L3 - j3 : u4 === \"center\" ? I3 - (L3 + O2 / 2) + J2 / 2 : u4 === \"end\" ? I3 - X3 + z3 + J2 : r2(L3, X3, O2, j3, z3 + J2, I3, I3 + H3, H3);\n var N2 = k3.scrollLeft, P3 = k3.scrollTop;\n x3 += P3 - (F3 = Math.max(0, Math.min(P3 + F3, k3.scrollHeight - D3 + K2))), I3 += N2 - (G3 = Math.max(0, Math.min(N2 + G3, k3.scrollWidth - O2 + J2)));\n }\n C3.push({ el: k3, top: F3, left: G3 });\n }\n return C3;\n}\n\n// node_modules/scroll-into-view-if-needed/es/index.js\nfunction isOptionsObject(options) {\n return options === Object(options) && Object.keys(options).length !== 0;\n}\nfunction defaultBehavior(actions, behavior) {\n if (behavior === void 0) {\n behavior = \"auto\";\n }\n var canSmoothScroll = \"scrollBehavior\" in document.body.style;\n actions.forEach(function(_ref) {\n var el = _ref.el, top3 = _ref.top, left3 = _ref.left;\n if (el.scroll && canSmoothScroll) {\n el.scroll({\n top: top3,\n left: left3,\n behavior\n });\n } else {\n el.scrollTop = top3;\n el.scrollLeft = left3;\n }\n });\n}\nfunction getOptions(options) {\n if (options === false) {\n return {\n block: \"end\",\n inline: \"nearest\"\n };\n }\n if (isOptionsObject(options)) {\n return options;\n }\n return {\n block: \"start\",\n inline: \"nearest\"\n };\n}\nfunction scrollIntoView(target, options) {\n var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);\n if (isOptionsObject(options) && typeof options.behavior === \"function\") {\n return options.behavior(isTargetAttached ? index_module_default(target, options) : []);\n }\n if (!isTargetAttached) {\n return;\n }\n var computeOptions = getOptions(options);\n return defaultBehavior(index_module_default(target, computeOptions), computeOptions.behavior);\n}\nvar es_default = scrollIntoView;\n\n// node_modules/slate-react/dist/index.es.js\nvar import_is_hotkey = __toESM(require_lib());\nvar import_react_dom = __toESM(require(\"react-dom\"));\nfunction _defineProperty2(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutPropertiesLoose2(source, excluded) {\n if (source == null)\n return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i3;\n for (i3 = 0; i3 < sourceKeys.length; i3++) {\n key = sourceKeys[i3];\n if (excluded.indexOf(key) >= 0)\n continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties2(source, excluded) {\n if (source == null)\n return {};\n var target = _objectWithoutPropertiesLoose2(source, excluded);\n var key, i3;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i3 = 0; i3 < sourceSymbolKeys.length; i3++) {\n key = sourceSymbolKeys[i3];\n if (excluded.indexOf(key) >= 0)\n continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key))\n continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nvar IS_REACT_VERSION_17_OR_ABOVE = parseInt(import_react.default.version.split(\".\")[0], 10) >= 17;\nvar IS_IOS = typeof navigator !== \"undefined\" && typeof window !== \"undefined\" && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar IS_APPLE = typeof navigator !== \"undefined\" && /Mac OS X/.test(navigator.userAgent);\nvar IS_ANDROID = typeof navigator !== \"undefined\" && /Android/.test(navigator.userAgent);\nvar IS_FIREFOX = typeof navigator !== \"undefined\" && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);\nvar IS_SAFARI = typeof navigator !== \"undefined\" && /Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent);\nvar IS_EDGE_LEGACY = typeof navigator !== \"undefined\" && /Edge?\\/(?:[0-6][0-9]|[0-7][0-8])(?:\\.)/i.test(navigator.userAgent);\nvar IS_CHROME = typeof navigator !== \"undefined\" && /Chrome/i.test(navigator.userAgent);\nvar IS_CHROME_LEGACY = typeof navigator !== \"undefined\" && /Chrome?\\/(?:[0-7][0-5]|[0-6][0-9])(?:\\.)/i.test(navigator.userAgent);\nvar IS_FIREFOX_LEGACY = typeof navigator !== \"undefined\" && /^(?!.*Seamonkey)(?=.*Firefox\\/(?:[0-7][0-9]|[0-8][0-6])(?:\\.)).*/i.test(navigator.userAgent);\nvar IS_QQBROWSER = typeof navigator !== \"undefined\" && /.*QQBrowser/.test(navigator.userAgent);\nvar IS_UC_MOBILE = typeof navigator !== \"undefined\" && /.*UCBrowser/.test(navigator.userAgent);\nvar IS_WECHATBROWSER = typeof navigator !== \"undefined\" && /.*Wechat/.test(navigator.userAgent);\nvar CAN_USE_DOM = !!(typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\");\nvar HAS_BEFORE_INPUT_SUPPORT = !IS_CHROME_LEGACY && !IS_EDGE_LEGACY && typeof globalThis !== \"undefined\" && globalThis.InputEvent && typeof globalThis.InputEvent.prototype.getTargetRanges === \"function\";\nvar useIsomorphicLayoutEffect = CAN_USE_DOM ? import_react.useLayoutEffect : import_react.useEffect;\nvar String2 = (props) => {\n var {\n isLast,\n leaf,\n parent: parent2,\n text: text4\n } = props;\n var editor = useSlateStatic();\n var path = ReactEditor.findPath(editor, text4);\n var parentPath = Path.parent(path);\n if (editor.isVoid(parent2)) {\n return /* @__PURE__ */ import_react.default.createElement(ZeroWidthString, {\n length: Node2.string(parent2).length\n });\n }\n if (leaf.text === \"\" && parent2.children[parent2.children.length - 1] === text4 && !editor.isInline(parent2) && Editor.string(editor, parentPath) === \"\") {\n return /* @__PURE__ */ import_react.default.createElement(ZeroWidthString, {\n isLineBreak: true\n });\n }\n if (leaf.text === \"\") {\n return /* @__PURE__ */ import_react.default.createElement(ZeroWidthString, null);\n }\n if (isLast && leaf.text.slice(-1) === \"\\n\") {\n return /* @__PURE__ */ import_react.default.createElement(TextString, {\n isTrailing: true,\n text: leaf.text\n });\n }\n return /* @__PURE__ */ import_react.default.createElement(TextString, {\n text: leaf.text\n });\n};\nvar TextString = (props) => {\n var {\n text: text4,\n isTrailing = false\n } = props;\n var ref = (0, import_react.useRef)(null);\n var getTextContent = () => {\n return \"\".concat(text4 !== null && text4 !== void 0 ? text4 : \"\").concat(isTrailing ? \"\\n\" : \"\");\n };\n useIsomorphicLayoutEffect(() => {\n var textWithTrailing = getTextContent();\n if (ref.current && ref.current.textContent !== textWithTrailing) {\n ref.current.textContent = textWithTrailing;\n }\n });\n if (!ref.current) {\n return /* @__PURE__ */ import_react.default.createElement(\"span\", {\n \"data-slate-string\": true,\n ref\n }, getTextContent());\n }\n return /* @__PURE__ */ import_react.default.createElement(\"span\", {\n \"data-slate-string\": true,\n ref\n });\n};\nvar ZeroWidthString = (props) => {\n var {\n length = 0,\n isLineBreak: isLineBreak2 = false\n } = props;\n return /* @__PURE__ */ import_react.default.createElement(\"span\", {\n \"data-slate-zero-width\": isLineBreak2 ? \"n\" : \"z\",\n \"data-slate-length\": length\n }, \"\\uFEFF\", isLineBreak2 ? /* @__PURE__ */ import_react.default.createElement(\"br\", null) : null);\n};\nvar NODE_TO_INDEX = /* @__PURE__ */ new WeakMap();\nvar NODE_TO_PARENT = /* @__PURE__ */ new WeakMap();\nvar EDITOR_TO_WINDOW = /* @__PURE__ */ new WeakMap();\nvar EDITOR_TO_ELEMENT = /* @__PURE__ */ new WeakMap();\nvar ELEMENT_TO_NODE = /* @__PURE__ */ new WeakMap();\nvar NODE_TO_ELEMENT = /* @__PURE__ */ new WeakMap();\nvar NODE_TO_KEY = /* @__PURE__ */ new WeakMap();\nvar EDITOR_TO_KEY_TO_ELEMENT = /* @__PURE__ */ new WeakMap();\nvar IS_READ_ONLY = /* @__PURE__ */ new WeakMap();\nvar IS_FOCUSED = /* @__PURE__ */ new WeakMap();\nvar IS_COMPOSING = /* @__PURE__ */ new WeakMap();\nvar IS_ON_COMPOSITION_END = /* @__PURE__ */ new WeakMap();\nvar EDITOR_TO_USER_SELECTION = /* @__PURE__ */ new WeakMap();\nvar EDITOR_ON_COMPOSITION_TEXT = /* @__PURE__ */ new WeakMap();\nvar EDITOR_TO_ON_CHANGE = /* @__PURE__ */ new WeakMap();\nvar NODE_TO_RESTORE_DOM = /* @__PURE__ */ new WeakMap();\nvar PLACEHOLDER_SYMBOL = Symbol(\"placeholder\");\nvar Leaf = (props) => {\n var {\n leaf,\n isLast,\n text: text4,\n parent: parent2,\n renderPlaceholder,\n renderLeaf = (props2) => /* @__PURE__ */ import_react.default.createElement(DefaultLeaf, Object.assign({}, props2))\n } = props;\n var placeholderRef = (0, import_react.useRef)(null);\n (0, import_react.useEffect)(() => {\n var placeholderEl = placeholderRef === null || placeholderRef === void 0 ? void 0 : placeholderRef.current;\n var editorEl = document.querySelector('[data-slate-editor=\"true\"]');\n if (!placeholderEl || !editorEl) {\n return;\n }\n editorEl.style.minHeight = \"\".concat(placeholderEl.clientHeight, \"px\");\n return () => {\n editorEl.style.minHeight = \"auto\";\n };\n }, [placeholderRef, leaf]);\n var children = /* @__PURE__ */ import_react.default.createElement(String2, {\n isLast,\n leaf,\n parent: parent2,\n text: text4\n });\n if (leaf[PLACEHOLDER_SYMBOL]) {\n var placeholderProps = {\n children: leaf.placeholder,\n attributes: {\n \"data-slate-placeholder\": true,\n style: {\n position: \"absolute\",\n pointerEvents: \"none\",\n width: \"100%\",\n maxWidth: \"100%\",\n display: \"block\",\n opacity: \"0.333\",\n userSelect: \"none\",\n textDecoration: \"none\"\n },\n contentEditable: false,\n ref: placeholderRef\n }\n };\n children = /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, renderPlaceholder(placeholderProps), children);\n }\n var attributes = {\n \"data-slate-leaf\": true\n };\n return renderLeaf({\n attributes,\n children,\n leaf,\n text: text4\n });\n};\nvar MemoizedLeaf = /* @__PURE__ */ import_react.default.memo(Leaf, (prev, next) => {\n return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.renderPlaceholder === prev.renderPlaceholder && next.text === prev.text && Text.equals(next.leaf, prev.leaf) && next.leaf[PLACEHOLDER_SYMBOL] === prev.leaf[PLACEHOLDER_SYMBOL];\n});\nvar DefaultLeaf = (props) => {\n var {\n attributes,\n children\n } = props;\n return /* @__PURE__ */ import_react.default.createElement(\"span\", Object.assign({}, attributes), children);\n};\nvar _excluded$32 = [\"anchor\", \"focus\"];\nvar _excluded22 = [\"anchor\", \"focus\"];\nvar shallowCompare = (obj1, obj2) => Object.keys(obj1).length === Object.keys(obj2).length && Object.keys(obj1).every((key) => obj2.hasOwnProperty(key) && obj1[key] === obj2[key]);\nvar isDecoratorRangeListEqual = (list, another) => {\n if (list.length !== another.length) {\n return false;\n }\n for (var i3 = 0; i3 < list.length; i3++) {\n var range = list[i3];\n var other = another[i3];\n var rangeOwnProps = _objectWithoutProperties2(range, _excluded$32);\n var otherOwnProps = _objectWithoutProperties2(other, _excluded22);\n if (!Range.equals(range, other) || range[PLACEHOLDER_SYMBOL] !== other[PLACEHOLDER_SYMBOL] || !shallowCompare(rangeOwnProps, otherOwnProps)) {\n return false;\n }\n }\n return true;\n};\nfunction useContentKey(node) {\n var contentKeyRef = (0, import_react.useRef)(0);\n var updateAnimationFrameRef = (0, import_react.useRef)(null);\n var [, setForceRerenderCounter] = (0, import_react.useState)(0);\n (0, import_react.useEffect)(() => {\n NODE_TO_RESTORE_DOM.set(node, () => {\n if (updateAnimationFrameRef.current) {\n return;\n }\n updateAnimationFrameRef.current = requestAnimationFrame(() => {\n setForceRerenderCounter((state) => state + 1);\n updateAnimationFrameRef.current = null;\n });\n contentKeyRef.current++;\n });\n return () => {\n NODE_TO_RESTORE_DOM.delete(node);\n };\n }, [node]);\n if (updateAnimationFrameRef.current) {\n cancelAnimationFrame(updateAnimationFrameRef.current);\n updateAnimationFrameRef.current = null;\n }\n return contentKeyRef.current;\n}\nvar Text2 = (props) => {\n var {\n decorations,\n isLast,\n parent: parent2,\n renderPlaceholder,\n renderLeaf,\n text: text4\n } = props;\n var editor = useSlateStatic();\n var ref = (0, import_react.useRef)(null);\n var leaves = Text.decorations(text4, decorations);\n var key = ReactEditor.findKey(editor, text4);\n var children = [];\n for (var i3 = 0; i3 < leaves.length; i3++) {\n var leaf = leaves[i3];\n children.push(/* @__PURE__ */ import_react.default.createElement(MemoizedLeaf, {\n isLast: isLast && i3 === leaves.length - 1,\n key: \"\".concat(key.id, \"-\").concat(i3),\n renderPlaceholder,\n leaf,\n text: text4,\n parent: parent2,\n renderLeaf\n }));\n }\n useIsomorphicLayoutEffect(() => {\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n if (ref.current) {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.set(key, ref.current);\n NODE_TO_ELEMENT.set(text4, ref.current);\n ELEMENT_TO_NODE.set(ref.current, text4);\n } else {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.delete(key);\n NODE_TO_ELEMENT.delete(text4);\n }\n });\n var contentKey = IS_ANDROID ? useContentKey(text4) : void 0;\n return /* @__PURE__ */ import_react.default.createElement(\"span\", {\n \"data-slate-node\": \"text\",\n ref,\n key: contentKey\n }, children);\n};\nvar MemoizedText = /* @__PURE__ */ import_react.default.memo(Text2, (prev, next) => {\n return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.text === prev.text && isDecoratorRangeListEqual(next.decorations, prev.decorations);\n});\nvar Element3 = (props) => {\n var {\n decorations,\n element: element4,\n renderElement = (p4) => /* @__PURE__ */ import_react.default.createElement(DefaultElement, Object.assign({}, p4)),\n renderPlaceholder,\n renderLeaf,\n selection\n } = props;\n var ref = (0, import_react.useRef)(null);\n var editor = useSlateStatic();\n var readOnly = useReadOnly();\n var isInline2 = editor.isInline(element4);\n var key = ReactEditor.findKey(editor, element4);\n var children = useChildren({\n decorations,\n node: element4,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection\n });\n var attributes = {\n \"data-slate-node\": \"element\",\n ref\n };\n if (isInline2) {\n attributes[\"data-slate-inline\"] = true;\n }\n if (!isInline2 && Editor.hasInlines(editor, element4)) {\n var text4 = Node2.string(element4);\n var dir = (0, import_direction.default)(text4);\n if (dir === \"rtl\") {\n attributes.dir = dir;\n }\n }\n if (Editor.isVoid(editor, element4)) {\n attributes[\"data-slate-void\"] = true;\n if (!readOnly && isInline2) {\n attributes.contentEditable = false;\n }\n var Tag = isInline2 ? \"span\" : \"div\";\n var [[_text]] = Node2.texts(element4);\n children = /* @__PURE__ */ import_react.default.createElement(Tag, {\n \"data-slate-spacer\": true,\n style: {\n height: \"0\",\n color: \"transparent\",\n outline: \"none\",\n position: \"absolute\"\n }\n }, /* @__PURE__ */ import_react.default.createElement(MemoizedText, {\n renderPlaceholder,\n decorations: [],\n isLast: false,\n parent: element4,\n text: _text\n }));\n NODE_TO_INDEX.set(_text, 0);\n NODE_TO_PARENT.set(_text, element4);\n }\n useIsomorphicLayoutEffect(() => {\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n if (ref.current) {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.set(key, ref.current);\n NODE_TO_ELEMENT.set(element4, ref.current);\n ELEMENT_TO_NODE.set(ref.current, element4);\n } else {\n KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.delete(key);\n NODE_TO_ELEMENT.delete(element4);\n }\n });\n var content = renderElement({\n attributes,\n children,\n element: element4\n });\n if (IS_ANDROID) {\n var contentKey = useContentKey(element4);\n return /* @__PURE__ */ import_react.default.createElement(import_react.Fragment, {\n key: contentKey\n }, content);\n }\n return content;\n};\nvar MemoizedElement = /* @__PURE__ */ import_react.default.memo(Element3, (prev, next) => {\n return prev.element === next.element && prev.renderElement === next.renderElement && prev.renderLeaf === next.renderLeaf && isDecoratorRangeListEqual(prev.decorations, next.decorations) && (prev.selection === next.selection || !!prev.selection && !!next.selection && Range.equals(prev.selection, next.selection));\n});\nvar DefaultElement = (props) => {\n var {\n attributes,\n children,\n element: element4\n } = props;\n var editor = useSlateStatic();\n var Tag = editor.isInline(element4) ? \"span\" : \"div\";\n return /* @__PURE__ */ import_react.default.createElement(Tag, Object.assign({}, attributes, {\n style: {\n position: \"relative\"\n }\n }), children);\n};\nvar EditorContext = /* @__PURE__ */ (0, import_react.createContext)(null);\nvar useSlateStatic = () => {\n var editor = (0, import_react.useContext)(EditorContext);\n if (!editor) {\n throw new Error(\"The `useSlateStatic` hook must be used inside the component's context.\");\n }\n return editor;\n};\nvar SelectedContext = /* @__PURE__ */ (0, import_react.createContext)(false);\nvar useSelected = () => {\n return (0, import_react.useContext)(SelectedContext);\n};\nvar useChildren = (props) => {\n var {\n decorations,\n node,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection\n } = props;\n var editor = useSlateStatic();\n var path = ReactEditor.findPath(editor, node);\n var children = [];\n var isLeafBlock = Element2.isElement(node) && !editor.isInline(node) && Editor.hasInlines(editor, node);\n var _loop = function _loop2(i4) {\n var p4 = path.concat(i4);\n var n6 = node.children[i4];\n var key = ReactEditor.findKey(editor, n6);\n var range = Editor.range(editor, p4);\n var sel = selection && Range.intersection(range, selection);\n var ds = decorations.reduce((acc, dec) => {\n var intersection2 = Range.intersection(dec, range);\n if (intersection2)\n acc.push(intersection2);\n return acc;\n }, []);\n if (Element2.isElement(n6)) {\n children.push(/* @__PURE__ */ import_react.default.createElement(SelectedContext.Provider, {\n key: \"provider-\".concat(key.id),\n value: !!sel\n }, /* @__PURE__ */ import_react.default.createElement(MemoizedElement, {\n decorations: ds,\n element: n6,\n key: key.id,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection: sel\n })));\n } else {\n children.push(/* @__PURE__ */ import_react.default.createElement(MemoizedText, {\n decorations: ds,\n key: key.id,\n isLast: isLeafBlock && i4 === node.children.length - 1,\n parent: node,\n renderPlaceholder,\n renderLeaf,\n text: n6\n }));\n }\n NODE_TO_INDEX.set(n6, i4);\n NODE_TO_PARENT.set(n6, node);\n };\n for (var i3 = 0; i3 < node.children.length; i3++) {\n _loop(i3);\n }\n return children;\n};\nvar HOTKEYS = {\n bold: \"mod+b\",\n compose: [\"down\", \"left\", \"right\", \"up\", \"backspace\", \"enter\"],\n moveBackward: \"left\",\n moveForward: \"right\",\n moveWordBackward: \"ctrl+left\",\n moveWordForward: \"ctrl+right\",\n deleteBackward: \"shift?+backspace\",\n deleteForward: \"shift?+delete\",\n extendBackward: \"shift+left\",\n extendForward: \"shift+right\",\n italic: \"mod+i\",\n insertSoftBreak: \"shift+enter\",\n splitBlock: \"enter\",\n undo: \"mod+z\"\n};\nvar APPLE_HOTKEYS = {\n moveLineBackward: \"opt+up\",\n moveLineForward: \"opt+down\",\n moveWordBackward: \"opt+left\",\n moveWordForward: \"opt+right\",\n deleteBackward: [\"ctrl+backspace\", \"ctrl+h\"],\n deleteForward: [\"ctrl+delete\", \"ctrl+d\"],\n deleteLineBackward: \"cmd+shift?+backspace\",\n deleteLineForward: [\"cmd+shift?+delete\", \"ctrl+k\"],\n deleteWordBackward: \"opt+shift?+backspace\",\n deleteWordForward: \"opt+shift?+delete\",\n extendLineBackward: \"opt+shift+up\",\n extendLineForward: \"opt+shift+down\",\n redo: \"cmd+shift+z\",\n transposeCharacter: \"ctrl+t\"\n};\nvar WINDOWS_HOTKEYS = {\n deleteWordBackward: \"ctrl+shift?+backspace\",\n deleteWordForward: \"ctrl+shift?+delete\",\n redo: [\"ctrl+y\", \"ctrl+shift+z\"]\n};\nvar create = (key) => {\n var generic = HOTKEYS[key];\n var apple = APPLE_HOTKEYS[key];\n var windows = WINDOWS_HOTKEYS[key];\n var isGeneric = generic && (0, import_is_hotkey.isKeyHotkey)(generic);\n var isApple = apple && (0, import_is_hotkey.isKeyHotkey)(apple);\n var isWindows = windows && (0, import_is_hotkey.isKeyHotkey)(windows);\n return (event) => {\n if (isGeneric && isGeneric(event))\n return true;\n if (IS_APPLE && isApple && isApple(event))\n return true;\n if (!IS_APPLE && isWindows && isWindows(event))\n return true;\n return false;\n };\n};\nvar Hotkeys = {\n isBold: create(\"bold\"),\n isCompose: create(\"compose\"),\n isMoveBackward: create(\"moveBackward\"),\n isMoveForward: create(\"moveForward\"),\n isDeleteBackward: create(\"deleteBackward\"),\n isDeleteForward: create(\"deleteForward\"),\n isDeleteLineBackward: create(\"deleteLineBackward\"),\n isDeleteLineForward: create(\"deleteLineForward\"),\n isDeleteWordBackward: create(\"deleteWordBackward\"),\n isDeleteWordForward: create(\"deleteWordForward\"),\n isExtendBackward: create(\"extendBackward\"),\n isExtendForward: create(\"extendForward\"),\n isExtendLineBackward: create(\"extendLineBackward\"),\n isExtendLineForward: create(\"extendLineForward\"),\n isItalic: create(\"italic\"),\n isMoveLineBackward: create(\"moveLineBackward\"),\n isMoveLineForward: create(\"moveLineForward\"),\n isMoveWordBackward: create(\"moveWordBackward\"),\n isMoveWordForward: create(\"moveWordForward\"),\n isRedo: create(\"redo\"),\n isSoftBreak: create(\"insertSoftBreak\"),\n isSplitBlock: create(\"splitBlock\"),\n isTransposeCharacter: create(\"transposeCharacter\"),\n isUndo: create(\"undo\")\n};\nvar ReadOnlyContext = /* @__PURE__ */ (0, import_react.createContext)(false);\nvar useReadOnly = () => {\n return (0, import_react.useContext)(ReadOnlyContext);\n};\nvar SlateContext = /* @__PURE__ */ (0, import_react.createContext)(null);\nvar useSlate = () => {\n var context = (0, import_react.useContext)(SlateContext);\n if (!context) {\n throw new Error(\"The `useSlate` hook must be used inside the component's context.\");\n }\n var [editor] = context;\n return editor;\n};\nvar DecorateContext = /* @__PURE__ */ (0, import_react.createContext)(() => []);\nvar getDefaultView = (value) => {\n return value && value.ownerDocument && value.ownerDocument.defaultView || null;\n};\nvar isDOMComment = (value) => {\n return isDOMNode(value) && value.nodeType === 8;\n};\nvar isDOMElement = (value) => {\n return isDOMNode(value) && value.nodeType === 1;\n};\nvar isDOMNode = (value) => {\n var window2 = getDefaultView(value);\n return !!window2 && value instanceof window2.Node;\n};\nvar isDOMSelection = (value) => {\n var window2 = value && value.anchorNode && getDefaultView(value.anchorNode);\n return !!window2 && value instanceof window2.Selection;\n};\nvar isDOMText = (value) => {\n return isDOMNode(value) && value.nodeType === 3;\n};\nvar isPlainTextOnlyPaste = (event) => {\n return event.clipboardData && event.clipboardData.getData(\"text/plain\") !== \"\" && event.clipboardData.types.length === 1;\n};\nvar normalizeDOMPoint = (domPoint) => {\n var [node, offset3] = domPoint;\n if (isDOMElement(node) && node.childNodes.length) {\n var isLast = offset3 === node.childNodes.length;\n var index7 = isLast ? offset3 - 1 : offset3;\n [node, index7] = getEditableChildAndIndex(node, index7, isLast ? \"backward\" : \"forward\");\n isLast = index7 < offset3;\n while (isDOMElement(node) && node.childNodes.length) {\n var i3 = isLast ? node.childNodes.length - 1 : 0;\n node = getEditableChild(node, i3, isLast ? \"backward\" : \"forward\");\n }\n offset3 = isLast && node.textContent != null ? node.textContent.length : 0;\n }\n return [node, offset3];\n};\nvar hasShadowRoot = () => {\n return !!(window.document.activeElement && window.document.activeElement.shadowRoot);\n};\nvar getEditableChildAndIndex = (parent2, index7, direction) => {\n var {\n childNodes\n } = parent2;\n var child = childNodes[index7];\n var i3 = index7;\n var triedForward = false;\n var triedBackward = false;\n while (isDOMComment(child) || isDOMElement(child) && child.childNodes.length === 0 || isDOMElement(child) && child.getAttribute(\"contenteditable\") === \"false\") {\n if (triedForward && triedBackward) {\n break;\n }\n if (i3 >= childNodes.length) {\n triedForward = true;\n i3 = index7 - 1;\n direction = \"backward\";\n continue;\n }\n if (i3 < 0) {\n triedBackward = true;\n i3 = index7 + 1;\n direction = \"forward\";\n continue;\n }\n child = childNodes[i3];\n index7 = i3;\n i3 += direction === \"forward\" ? 1 : -1;\n }\n return [child, index7];\n};\nvar getEditableChild = (parent2, index7, direction) => {\n var [child] = getEditableChildAndIndex(parent2, index7, direction);\n return child;\n};\nvar getPlainText = (domNode) => {\n var text4 = \"\";\n if (isDOMText(domNode) && domNode.nodeValue) {\n return domNode.nodeValue;\n }\n if (isDOMElement(domNode)) {\n for (var childNode of Array.from(domNode.childNodes)) {\n text4 += getPlainText(childNode);\n }\n var display = getComputedStyle(domNode).getPropertyValue(\"display\");\n if (display === \"block\" || display === \"list\" || domNode.tagName === \"BR\") {\n text4 += \"\\n\";\n }\n }\n return text4;\n};\nvar catchSlateFragment = /data-slate-fragment=\"(.+?)\"/m;\nvar getSlateFragmentAttribute = (dataTransfer) => {\n var htmlData = dataTransfer.getData(\"text/html\");\n var [, fragment] = htmlData.match(catchSlateFragment) || [];\n return fragment;\n};\nvar getClipboardData = (dataTransfer) => {\n if (!dataTransfer.getData(\"application/x-slate-fragment\")) {\n var fragment = getSlateFragmentAttribute(dataTransfer);\n if (fragment) {\n var clipboardData = new DataTransfer();\n dataTransfer.types.forEach((type) => {\n clipboardData.setData(type, dataTransfer.getData(type));\n });\n clipboardData.setData(\"application/x-slate-fragment\", fragment);\n return clipboardData;\n }\n }\n return dataTransfer;\n};\nvar TRIPLE_CLICK = 3;\nvar _excluded$22 = [\"autoFocus\", \"decorate\", \"onDOMBeforeInput\", \"placeholder\", \"readOnly\", \"renderElement\", \"renderLeaf\", \"renderPlaceholder\", \"scrollSelectionIntoView\", \"style\", \"as\"];\nfunction ownKeys$12(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$12(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$12(Object(source), true).forEach(function(key) {\n _defineProperty2(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$12(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Children = (props) => /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, useChildren(props));\nvar Editable$1 = (props) => {\n var {\n autoFocus,\n decorate = defaultDecorate,\n onDOMBeforeInput: propsOnDOMBeforeInput,\n placeholder,\n readOnly = false,\n renderElement,\n renderLeaf,\n renderPlaceholder = (props2) => /* @__PURE__ */ import_react.default.createElement(DefaultPlaceholder, Object.assign({}, props2)),\n scrollSelectionIntoView = defaultScrollSelectionIntoView,\n style = {},\n as: Component2 = \"div\"\n } = props, attributes = _objectWithoutProperties2(props, _excluded$22);\n var editor = useSlate();\n var [isComposing, setIsComposing] = (0, import_react.useState)(false);\n var ref = (0, import_react.useRef)(null);\n var deferredOperations = (0, import_react.useRef)([]);\n IS_READ_ONLY.set(editor, readOnly);\n var state = (0, import_react.useMemo)(() => ({\n hasInsertPrefixInCompositon: false,\n isDraggingInternally: false,\n isUpdatingSelection: false,\n latestElement: null\n }), []);\n useIsomorphicLayoutEffect(() => {\n var window2;\n if (ref.current && (window2 = getDefaultView(ref.current))) {\n EDITOR_TO_WINDOW.set(editor, window2);\n EDITOR_TO_ELEMENT.set(editor, ref.current);\n NODE_TO_ELEMENT.set(editor, ref.current);\n ELEMENT_TO_NODE.set(ref.current, editor);\n } else {\n NODE_TO_ELEMENT.delete(editor);\n }\n var {\n selection\n } = editor;\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n var domSelection = root5.getSelection();\n if (ReactEditor.isComposing(editor) || !domSelection || !ReactEditor.isFocused(editor)) {\n return;\n }\n var hasDomSelection = domSelection.type !== \"None\";\n if (!selection && !hasDomSelection) {\n return;\n }\n var editorElement = EDITOR_TO_ELEMENT.get(editor);\n var hasDomSelectionInEditor = false;\n if (editorElement.contains(domSelection.anchorNode) && editorElement.contains(domSelection.focusNode)) {\n hasDomSelectionInEditor = true;\n }\n if (hasDomSelection && hasDomSelectionInEditor && selection) {\n var slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: true,\n suppressThrow: true\n });\n if (slateRange && Range.equals(slateRange, selection)) {\n return;\n }\n }\n if (selection && !ReactEditor.hasRange(editor, selection)) {\n editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false\n });\n return;\n }\n state.isUpdatingSelection = true;\n var newDomRange = selection && ReactEditor.toDOMRange(editor, selection);\n if (newDomRange) {\n if (Range.isBackward(selection)) {\n domSelection.setBaseAndExtent(newDomRange.endContainer, newDomRange.endOffset, newDomRange.startContainer, newDomRange.startOffset);\n } else {\n domSelection.setBaseAndExtent(newDomRange.startContainer, newDomRange.startOffset, newDomRange.endContainer, newDomRange.endOffset);\n }\n scrollSelectionIntoView(editor, newDomRange);\n } else {\n domSelection.removeAllRanges();\n }\n setTimeout(() => {\n if (newDomRange && IS_FIREFOX) {\n var el = ReactEditor.toDOMNode(editor, editor);\n el.focus();\n }\n state.isUpdatingSelection = false;\n });\n });\n (0, import_react.useEffect)(() => {\n if (ref.current && autoFocus) {\n ref.current.focus();\n }\n }, [autoFocus]);\n var onDOMSelectionChange = (0, import_react.useCallback)((0, import_throttle.default)(() => {\n if (!ReactEditor.isComposing(editor) && !state.isUpdatingSelection && !state.isDraggingInternally) {\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n var {\n activeElement\n } = root5;\n var el = ReactEditor.toDOMNode(editor, editor);\n var domSelection = root5.getSelection();\n if (activeElement === el) {\n state.latestElement = activeElement;\n IS_FOCUSED.set(editor, true);\n } else {\n IS_FOCUSED.delete(editor);\n }\n if (!domSelection) {\n return Transforms.deselect(editor);\n }\n var {\n anchorNode,\n focusNode\n } = domSelection;\n var anchorNodeSelectable = hasEditableTarget(editor, anchorNode) || isTargetInsideNonReadonlyVoid(editor, anchorNode);\n var focusNodeSelectable = hasEditableTarget(editor, focusNode) || isTargetInsideNonReadonlyVoid(editor, focusNode);\n if (anchorNodeSelectable && focusNodeSelectable) {\n var range = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false\n });\n Transforms.select(editor, range);\n }\n }\n }, 100), [readOnly]);\n var scheduleOnDOMSelectionChange = (0, import_react.useMemo)(() => (0, import_debounce.default)(onDOMSelectionChange, 0), [onDOMSelectionChange]);\n var onDOMBeforeInput = (0, import_react.useCallback)((event) => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {\n var _EDITOR_TO_USER_SELEC;\n scheduleOnDOMSelectionChange.flush();\n onDOMSelectionChange.flush();\n var {\n selection\n } = editor;\n var {\n inputType: type\n } = event;\n var data = event.dataTransfer || event.data || void 0;\n if (type === \"insertCompositionText\" || type === \"deleteCompositionText\") {\n return;\n }\n var native = false;\n if (type === \"insertText\" && selection && Range.isCollapsed(selection) && event.data && event.data.length === 1 && /[a-z ]/i.test(event.data) && selection.anchor.offset !== 0) {\n var _node$parentElement;\n native = true;\n if (editor.marks) {\n native = false;\n }\n var {\n anchor\n } = selection;\n var [node, offset3] = ReactEditor.toDOMPoint(editor, anchor);\n var anchorNode = (_node$parentElement = node.parentElement) === null || _node$parentElement === void 0 ? void 0 : _node$parentElement.closest(\"a\");\n if (anchorNode && ReactEditor.hasDOMNode(editor, anchorNode)) {\n var _lastText$textContent;\n var {\n document: document2\n } = ReactEditor.getWindow(editor);\n var lastText = document2.createTreeWalker(anchorNode, NodeFilter.SHOW_TEXT).lastChild();\n if (lastText === node && ((_lastText$textContent = lastText.textContent) === null || _lastText$textContent === void 0 ? void 0 : _lastText$textContent.length) === offset3) {\n native = false;\n }\n }\n }\n if (!type.startsWith(\"delete\") || type.startsWith(\"deleteBy\")) {\n var [targetRange] = event.getTargetRanges();\n if (targetRange) {\n var range = ReactEditor.toSlateRange(editor, targetRange, {\n exactMatch: false,\n suppressThrow: false\n });\n if (!selection || !Range.equals(selection, range)) {\n native = false;\n var selectionRef = editor.selection && Editor.rangeRef(editor, editor.selection);\n Transforms.select(editor, range);\n if (selectionRef) {\n EDITOR_TO_USER_SELECTION.set(editor, selectionRef);\n }\n }\n }\n }\n if (!native) {\n event.preventDefault();\n }\n if (selection && Range.isExpanded(selection) && type.startsWith(\"delete\")) {\n var direction = type.endsWith(\"Backward\") ? \"backward\" : \"forward\";\n Editor.deleteFragment(editor, {\n direction\n });\n return;\n }\n switch (type) {\n case \"deleteByComposition\":\n case \"deleteByCut\":\n case \"deleteByDrag\": {\n Editor.deleteFragment(editor);\n break;\n }\n case \"deleteContent\":\n case \"deleteContentForward\": {\n Editor.deleteForward(editor);\n break;\n }\n case \"deleteContentBackward\": {\n Editor.deleteBackward(editor);\n break;\n }\n case \"deleteEntireSoftLine\": {\n Editor.deleteBackward(editor, {\n unit: \"line\"\n });\n Editor.deleteForward(editor, {\n unit: \"line\"\n });\n break;\n }\n case \"deleteHardLineBackward\": {\n Editor.deleteBackward(editor, {\n unit: \"block\"\n });\n break;\n }\n case \"deleteSoftLineBackward\": {\n Editor.deleteBackward(editor, {\n unit: \"line\"\n });\n break;\n }\n case \"deleteHardLineForward\": {\n Editor.deleteForward(editor, {\n unit: \"block\"\n });\n break;\n }\n case \"deleteSoftLineForward\": {\n Editor.deleteForward(editor, {\n unit: \"line\"\n });\n break;\n }\n case \"deleteWordBackward\": {\n Editor.deleteBackward(editor, {\n unit: \"word\"\n });\n break;\n }\n case \"deleteWordForward\": {\n Editor.deleteForward(editor, {\n unit: \"word\"\n });\n break;\n }\n case \"insertLineBreak\":\n Editor.insertSoftBreak(editor);\n break;\n case \"insertParagraph\": {\n Editor.insertBreak(editor);\n break;\n }\n case \"insertFromComposition\":\n case \"insertFromDrop\":\n case \"insertFromPaste\":\n case \"insertFromYank\":\n case \"insertReplacementText\":\n case \"insertText\": {\n var {\n selection: _selection\n } = editor;\n if (_selection) {\n if (Range.isExpanded(_selection)) {\n Editor.deleteFragment(editor);\n }\n }\n if (type === \"insertFromComposition\") {\n if (ReactEditor.isComposing(editor)) {\n setIsComposing(false);\n IS_COMPOSING.set(editor, false);\n }\n }\n if ((data === null || data === void 0 ? void 0 : data.constructor.name) === \"DataTransfer\") {\n ReactEditor.insertData(editor, data);\n } else if (typeof data === \"string\") {\n if (native) {\n deferredOperations.current.push(() => Editor.insertText(editor, data));\n } else {\n Editor.insertText(editor, data);\n }\n }\n break;\n }\n }\n var toRestore = (_EDITOR_TO_USER_SELEC = EDITOR_TO_USER_SELECTION.get(editor)) === null || _EDITOR_TO_USER_SELEC === void 0 ? void 0 : _EDITOR_TO_USER_SELEC.unref();\n EDITOR_TO_USER_SELECTION.delete(editor);\n if (toRestore && (!editor.selection || !Range.equals(editor.selection, toRestore))) {\n Transforms.select(editor, toRestore);\n }\n }\n }, [readOnly, propsOnDOMBeforeInput]);\n useIsomorphicLayoutEffect(() => {\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n ref.current.addEventListener(\"beforeinput\", onDOMBeforeInput);\n }\n return () => {\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n ref.current.removeEventListener(\"beforeinput\", onDOMBeforeInput);\n }\n };\n }, [onDOMBeforeInput]);\n useIsomorphicLayoutEffect(() => {\n var window2 = ReactEditor.getWindow(editor);\n window2.document.addEventListener(\"selectionchange\", scheduleOnDOMSelectionChange);\n return () => {\n window2.document.removeEventListener(\"selectionchange\", scheduleOnDOMSelectionChange);\n };\n }, [scheduleOnDOMSelectionChange]);\n var decorations = [...Node2.nodes(editor)].flatMap((_ref) => {\n var [n6, p4] = _ref;\n return decorate([n6, p4]);\n });\n if (placeholder && editor.children.length === 1 && Array.from(Node2.texts(editor)).length === 1 && Node2.string(editor) === \"\" && !isComposing) {\n var start3 = Editor.start(editor, []);\n decorations.push({\n [PLACEHOLDER_SYMBOL]: true,\n placeholder,\n anchor: start3,\n focus: start3\n });\n }\n return /* @__PURE__ */ import_react.default.createElement(ReadOnlyContext.Provider, {\n value: readOnly\n }, /* @__PURE__ */ import_react.default.createElement(DecorateContext.Provider, {\n value: decorate\n }, /* @__PURE__ */ import_react.default.createElement(Component2, Object.assign({\n role: readOnly ? void 0 : \"textbox\"\n }, attributes, {\n spellCheck: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.spellCheck : false,\n autoCorrect: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCorrect : \"false\",\n autoCapitalize: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCapitalize : \"false\",\n \"data-slate-editor\": true,\n \"data-slate-node\": \"value\",\n contentEditable: !readOnly,\n zindex: -1,\n suppressContentEditableWarning: true,\n ref,\n style: _objectSpread$12({\n position: \"relative\",\n outline: \"none\",\n whiteSpace: \"pre-wrap\",\n wordWrap: \"break-word\"\n }, style),\n onBeforeInput: (0, import_react.useCallback)((event) => {\n if (!HAS_BEFORE_INPUT_SUPPORT && !readOnly && !isEventHandled(event, attributes.onBeforeInput) && hasEditableTarget(editor, event.target)) {\n event.preventDefault();\n if (!ReactEditor.isComposing(editor)) {\n var text4 = event.data;\n Editor.insertText(editor, text4);\n }\n }\n }, [readOnly]),\n onInput: (0, import_react.useCallback)((event) => {\n for (var op of deferredOperations.current) {\n op();\n }\n deferredOperations.current = [];\n }, []),\n onBlur: (0, import_react.useCallback)((event) => {\n if (readOnly || state.isUpdatingSelection || !hasEditableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {\n return;\n }\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n if (state.latestElement === root5.activeElement) {\n return;\n }\n var {\n relatedTarget\n } = event;\n var el = ReactEditor.toDOMNode(editor, editor);\n if (relatedTarget === el) {\n return;\n }\n if (isDOMElement(relatedTarget) && relatedTarget.hasAttribute(\"data-slate-spacer\")) {\n return;\n }\n if (relatedTarget != null && isDOMNode(relatedTarget) && ReactEditor.hasDOMNode(editor, relatedTarget)) {\n var node = ReactEditor.toSlateNode(editor, relatedTarget);\n if (Element2.isElement(node) && !editor.isVoid(node)) {\n return;\n }\n }\n if (IS_SAFARI) {\n var domSelection = root5.getSelection();\n domSelection === null || domSelection === void 0 ? void 0 : domSelection.removeAllRanges();\n }\n IS_FOCUSED.delete(editor);\n }, [readOnly, attributes.onBlur]),\n onClick: (0, import_react.useCallback)((event) => {\n if (hasTarget(editor, event.target) && !isEventHandled(event, attributes.onClick) && isDOMNode(event.target)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n if (!Editor.hasPath(editor, path) || Node2.get(editor, path) !== node) {\n return;\n }\n if (event.detail === TRIPLE_CLICK && path.length >= 1) {\n var blockPath = path;\n if (!Editor.isBlock(editor, node)) {\n var _block$;\n var block = Editor.above(editor, {\n match: (n6) => Editor.isBlock(editor, n6),\n at: path\n });\n blockPath = (_block$ = block === null || block === void 0 ? void 0 : block[1]) !== null && _block$ !== void 0 ? _block$ : path.slice(0, 1);\n }\n var range = Editor.range(editor, blockPath);\n Transforms.select(editor, range);\n return;\n }\n if (readOnly) {\n return;\n }\n var _start = Editor.start(editor, path);\n var end3 = Editor.end(editor, path);\n var startVoid = Editor.void(editor, {\n at: _start\n });\n var endVoid = Editor.void(editor, {\n at: end3\n });\n if (startVoid && endVoid && Path.equals(startVoid[1], endVoid[1])) {\n var _range = Editor.range(editor, _start);\n Transforms.select(editor, _range);\n }\n }\n }, [readOnly, attributes.onClick]),\n onCompositionEnd: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionEnd)) {\n if (ReactEditor.isComposing(editor)) {\n setIsComposing(false);\n IS_COMPOSING.set(editor, false);\n }\n if (!IS_SAFARI && !IS_FIREFOX_LEGACY && !IS_IOS && !IS_QQBROWSER && !IS_WECHATBROWSER && !IS_UC_MOBILE && event.data) {\n Editor.insertText(editor, event.data);\n }\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n var leafPath = editor.selection.anchor.path;\n var currentTextNode = Node2.leaf(editor, leafPath);\n if (state.hasInsertPrefixInCompositon) {\n state.hasInsertPrefixInCompositon = false;\n Editor.withoutNormalizing(editor, () => {\n var text4 = currentTextNode.text.replace(/^\\uFEFF/, \"\");\n Transforms.delete(editor, {\n distance: currentTextNode.text.length,\n reverse: true\n });\n Editor.insertText(editor, text4);\n });\n }\n }\n }\n }, [attributes.onCompositionEnd]),\n onCompositionUpdate: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate)) {\n if (!ReactEditor.isComposing(editor)) {\n setIsComposing(true);\n IS_COMPOSING.set(editor, true);\n }\n }\n }, [attributes.onCompositionUpdate]),\n onCompositionStart: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionStart)) {\n var {\n selection,\n marks: marks3\n } = editor;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n return;\n }\n var inline = Editor.above(editor, {\n match: (n6) => Editor.isInline(editor, n6),\n mode: \"highest\"\n });\n if (inline) {\n var [, inlinePath] = inline;\n if (Editor.isEnd(editor, selection.anchor, inlinePath)) {\n var point = Editor.after(editor, inlinePath);\n Transforms.setSelection(editor, {\n anchor: point,\n focus: point\n });\n }\n }\n if (marks3) {\n state.hasInsertPrefixInCompositon = true;\n Transforms.insertNodes(editor, _objectSpread$12({\n text: \"\\uFEFF\"\n }, marks3), {\n select: true\n });\n }\n }\n }\n }, [attributes.onCompositionStart]),\n onCopy: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, \"copy\");\n }\n }, [attributes.onCopy]),\n onCut: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, \"cut\");\n var {\n selection\n } = editor;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n } else {\n var node = Node2.parent(editor, selection.anchor.path);\n if (Editor.isVoid(editor, node)) {\n Transforms.delete(editor);\n }\n }\n }\n }\n }, [readOnly, attributes.onCut]),\n onDragOver: (0, import_react.useCallback)((event) => {\n if (hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragOver)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n if (Editor.isVoid(editor, node)) {\n event.preventDefault();\n }\n }\n }, [attributes.onDragOver]),\n onDragStart: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragStart)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n var voidMatch = Editor.isVoid(editor, node) || Editor.void(editor, {\n at: path,\n voids: true\n });\n if (voidMatch) {\n var range = Editor.range(editor, path);\n Transforms.select(editor, range);\n }\n state.isDraggingInternally = true;\n ReactEditor.setFragmentData(editor, event.dataTransfer, \"drag\");\n }\n }, [readOnly, attributes.onDragStart]),\n onDrop: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDrop)) {\n event.preventDefault();\n var draggedRange = editor.selection;\n var range = ReactEditor.findEventRange(editor, event);\n var data = event.dataTransfer;\n Transforms.select(editor, range);\n if (state.isDraggingInternally) {\n if (draggedRange && !Range.equals(draggedRange, range) && !Editor.void(editor, {\n at: range,\n voids: true\n })) {\n Transforms.delete(editor, {\n at: draggedRange\n });\n }\n }\n ReactEditor.insertData(editor, data);\n if (!ReactEditor.isFocused(editor)) {\n ReactEditor.focus(editor);\n }\n }\n state.isDraggingInternally = false;\n }, [readOnly, attributes.onDrop]),\n onDragEnd: (0, import_react.useCallback)((event) => {\n if (!readOnly && state.isDraggingInternally && attributes.onDragEnd && hasTarget(editor, event.target)) {\n attributes.onDragEnd(event);\n }\n state.isDraggingInternally = false;\n }, [readOnly, attributes.onDragEnd]),\n onFocus: (0, import_react.useCallback)((event) => {\n if (!readOnly && !state.isUpdatingSelection && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onFocus)) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n state.latestElement = root5.activeElement;\n if (IS_FIREFOX && event.target !== el) {\n el.focus();\n return;\n }\n IS_FOCUSED.set(editor, true);\n }\n }, [readOnly, attributes.onFocus]),\n onKeyDown: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasEditableTarget(editor, event.target)) {\n var {\n nativeEvent\n } = event;\n if (ReactEditor.isComposing(editor) && nativeEvent.isComposing === false) {\n IS_COMPOSING.set(editor, false);\n setIsComposing(false);\n }\n if (isEventHandled(event, attributes.onKeyDown) || ReactEditor.isComposing(editor)) {\n return;\n }\n var {\n selection\n } = editor;\n var element4 = editor.children[selection !== null ? selection.focus.path[0] : 0];\n var isRTL = (0, import_direction.default)(Node2.string(element4)) === \"rtl\";\n if (Hotkeys.isRedo(nativeEvent)) {\n event.preventDefault();\n var maybeHistoryEditor = editor;\n if (typeof maybeHistoryEditor.redo === \"function\") {\n maybeHistoryEditor.redo();\n }\n return;\n }\n if (Hotkeys.isUndo(nativeEvent)) {\n event.preventDefault();\n var _maybeHistoryEditor = editor;\n if (typeof _maybeHistoryEditor.undo === \"function\") {\n _maybeHistoryEditor.undo();\n }\n return;\n }\n if (Hotkeys.isMoveLineBackward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: \"line\",\n reverse: true\n });\n return;\n }\n if (Hotkeys.isMoveLineForward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: \"line\"\n });\n return;\n }\n if (Hotkeys.isExtendLineBackward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: \"line\",\n edge: \"focus\",\n reverse: true\n });\n return;\n }\n if (Hotkeys.isExtendLineForward(nativeEvent)) {\n event.preventDefault();\n Transforms.move(editor, {\n unit: \"line\",\n edge: \"focus\"\n });\n return;\n }\n if (Hotkeys.isMoveBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, {\n reverse: !isRTL\n });\n } else {\n Transforms.collapse(editor, {\n edge: \"start\"\n });\n }\n return;\n }\n if (Hotkeys.isMoveForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, {\n reverse: isRTL\n });\n } else {\n Transforms.collapse(editor, {\n edge: \"end\"\n });\n }\n return;\n }\n if (Hotkeys.isMoveWordBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, {\n edge: \"focus\"\n });\n }\n Transforms.move(editor, {\n unit: \"word\",\n reverse: !isRTL\n });\n return;\n }\n if (Hotkeys.isMoveWordForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, {\n edge: \"focus\"\n });\n }\n Transforms.move(editor, {\n unit: \"word\",\n reverse: isRTL\n });\n return;\n }\n if (!HAS_BEFORE_INPUT_SUPPORT) {\n if (Hotkeys.isBold(nativeEvent) || Hotkeys.isItalic(nativeEvent) || Hotkeys.isTransposeCharacter(nativeEvent)) {\n event.preventDefault();\n return;\n }\n if (Hotkeys.isSoftBreak(nativeEvent)) {\n event.preventDefault();\n Editor.insertSoftBreak(editor);\n return;\n }\n if (Hotkeys.isSplitBlock(nativeEvent)) {\n event.preventDefault();\n Editor.insertBreak(editor);\n return;\n }\n if (Hotkeys.isDeleteBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: \"backward\"\n });\n } else {\n Editor.deleteBackward(editor);\n }\n return;\n }\n if (Hotkeys.isDeleteForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: \"forward\"\n });\n } else {\n Editor.deleteForward(editor);\n }\n return;\n }\n if (Hotkeys.isDeleteLineBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: \"backward\"\n });\n } else {\n Editor.deleteBackward(editor, {\n unit: \"line\"\n });\n }\n return;\n }\n if (Hotkeys.isDeleteLineForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: \"forward\"\n });\n } else {\n Editor.deleteForward(editor, {\n unit: \"line\"\n });\n }\n return;\n }\n if (Hotkeys.isDeleteWordBackward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: \"backward\"\n });\n } else {\n Editor.deleteBackward(editor, {\n unit: \"word\"\n });\n }\n return;\n }\n if (Hotkeys.isDeleteWordForward(nativeEvent)) {\n event.preventDefault();\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, {\n direction: \"forward\"\n });\n } else {\n Editor.deleteForward(editor, {\n unit: \"word\"\n });\n }\n return;\n }\n } else {\n if (IS_CHROME || IS_SAFARI) {\n if (selection && (Hotkeys.isDeleteBackward(nativeEvent) || Hotkeys.isDeleteForward(nativeEvent)) && Range.isCollapsed(selection)) {\n var currentNode = Node2.parent(editor, selection.anchor.path);\n if (Element2.isElement(currentNode) && Editor.isVoid(editor, currentNode) && Editor.isInline(editor, currentNode)) {\n event.preventDefault();\n Editor.deleteBackward(editor, {\n unit: \"block\"\n });\n return;\n }\n }\n }\n }\n }\n }, [readOnly, attributes.onKeyDown]),\n onPaste: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onPaste)) {\n if (!HAS_BEFORE_INPUT_SUPPORT || isPlainTextOnlyPaste(event.nativeEvent)) {\n event.preventDefault();\n ReactEditor.insertData(editor, event.clipboardData);\n }\n }\n }, [readOnly, attributes.onPaste])\n }), /* @__PURE__ */ import_react.default.createElement(Children, {\n decorations,\n node: editor,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection: editor.selection\n }))));\n};\nvar DefaultPlaceholder = (_ref2) => {\n var {\n attributes,\n children\n } = _ref2;\n return /* @__PURE__ */ import_react.default.createElement(\"span\", Object.assign({}, attributes), children);\n};\nvar defaultDecorate = () => [];\nvar defaultScrollSelectionIntoView = (editor, domRange) => {\n if (!editor.selection || editor.selection && Range.isCollapsed(editor.selection)) {\n var leafEl = domRange.startContainer.parentElement;\n leafEl.getBoundingClientRect = domRange.getBoundingClientRect.bind(domRange);\n es_default(leafEl, {\n scrollMode: \"if-needed\"\n });\n delete leafEl.getBoundingClientRect;\n }\n};\nvar hasTarget = (editor, target) => {\n return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target);\n};\nvar hasEditableTarget = (editor, target) => {\n return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target, {\n editable: true\n });\n};\nvar isTargetInsideNonReadonlyVoid = (editor, target) => {\n if (IS_READ_ONLY.get(editor))\n return false;\n var slateNode2 = hasTarget(editor, target) && ReactEditor.toSlateNode(editor, target);\n return Editor.isVoid(editor, slateNode2);\n};\nvar isEventHandled = (event, handler) => {\n if (!handler) {\n return false;\n }\n var shouldTreatEventAsHandled = handler(event);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return event.isDefaultPrevented() || event.isPropagationStopped();\n};\nvar isDOMEventHandled = (event, handler) => {\n if (!handler) {\n return false;\n }\n var shouldTreatEventAsHandled = handler(event);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return event.defaultPrevented;\n};\nfunction getDiffStart(prev, next) {\n var length = Math.min(prev.length, next.length);\n for (var i3 = 0; i3 < length; i3++) {\n if (prev.charAt(i3) !== next.charAt(i3))\n return i3;\n }\n if (prev.length !== next.length)\n return length;\n return null;\n}\nfunction getDiffEnd(prev, next, max3) {\n var prevLength = prev.length;\n var nextLength = next.length;\n var length = Math.min(prevLength, nextLength, max3);\n for (var i3 = 0; i3 < length; i3++) {\n var prevChar = prev.charAt(prevLength - i3 - 1);\n var nextChar = next.charAt(nextLength - i3 - 1);\n if (prevChar !== nextChar)\n return i3;\n }\n if (prev.length !== next.length)\n return length;\n return null;\n}\nfunction getDiffOffsets(prev, next) {\n if (prev === next)\n return null;\n var start3 = getDiffStart(prev, next);\n if (start3 === null)\n return null;\n var maxEnd = Math.min(prev.length - start3, next.length - start3);\n var end3 = getDiffEnd(prev, next, maxEnd);\n if (end3 === null)\n return null;\n return {\n start: start3,\n end: end3\n };\n}\nfunction sliceText(text4, offsets) {\n return text4.slice(offsets.start, text4.length - offsets.end);\n}\nfunction diffText(prev, next) {\n if (prev === void 0 || next === void 0)\n return null;\n var offsets = getDiffOffsets(prev, next);\n if (offsets == null)\n return null;\n var insertText2 = sliceText(next, offsets);\n var removeText = sliceText(prev, offsets);\n return {\n start: offsets.start,\n end: prev.length - offsets.end,\n insertText: insertText2,\n removeText\n };\n}\nfunction combineInsertedText(insertedText) {\n return insertedText.reduce((acc, _ref) => {\n var {\n text: text4\n } = _ref;\n return \"\".concat(acc).concat(text4.insertText);\n }, \"\");\n}\nfunction getTextInsertion(editor, domNode) {\n var node = ReactEditor.toSlateNode(editor, domNode);\n if (!Text.isText(node)) {\n return void 0;\n }\n var prevText = node.text;\n var nextText = domNode.textContent;\n if (nextText.endsWith(\"\\n\")) {\n nextText = nextText.slice(0, nextText.length - 1);\n }\n if (nextText !== prevText) {\n var textDiff = diffText(prevText, nextText);\n if (textDiff !== null) {\n var textPath = ReactEditor.findPath(editor, node);\n return {\n text: textDiff,\n path: textPath\n };\n }\n }\n return void 0;\n}\nfunction normalizeTextInsertionRange(editor, range, _ref2) {\n var {\n path,\n text: text4\n } = _ref2;\n var insertionRange = {\n anchor: {\n path,\n offset: text4.start\n },\n focus: {\n path,\n offset: text4.end\n }\n };\n if (!range || !Range.isCollapsed(range)) {\n return insertionRange;\n }\n var {\n insertText: insertText2,\n removeText\n } = text4;\n var isSingleCharacterInsertion = insertText2.length === 1 || removeText.length === 1;\n if (isSingleCharacterInsertion && Path.equals(range.anchor.path, path)) {\n var [_text] = Array.from(Editor.nodes(editor, {\n at: range,\n match: Text.isText\n }));\n if (_text) {\n var [node] = _text;\n var {\n anchor\n } = range;\n var characterBeforeAnchor = node.text[anchor.offset - 1];\n var characterAfterAnchor = node.text[anchor.offset];\n if (insertText2.length === 1 && insertText2 === characterAfterAnchor) {\n return range;\n }\n if (removeText.length === 1 && removeText === characterBeforeAnchor) {\n return {\n anchor: {\n path,\n offset: anchor.offset - 1\n },\n focus: {\n path,\n offset: anchor.offset\n }\n };\n }\n }\n }\n return insertionRange;\n}\nvar n3 = 0;\nvar Key = class {\n constructor() {\n this.id = \"\".concat(n3++);\n }\n};\nvar ReactEditor = {\n isComposing(editor) {\n return !!IS_COMPOSING.get(editor);\n },\n getWindow(editor) {\n var window2 = EDITOR_TO_WINDOW.get(editor);\n if (!window2) {\n throw new Error(\"Unable to find a host window element for this editor\");\n }\n return window2;\n },\n findKey(editor, node) {\n var key = NODE_TO_KEY.get(node);\n if (!key) {\n key = new Key();\n NODE_TO_KEY.set(node, key);\n }\n return key;\n },\n findPath(editor, node) {\n var path = [];\n var child = node;\n while (true) {\n var parent2 = NODE_TO_PARENT.get(child);\n if (parent2 == null) {\n if (Editor.isEditor(child)) {\n return path;\n } else {\n break;\n }\n }\n var i3 = NODE_TO_INDEX.get(child);\n if (i3 == null) {\n break;\n }\n path.unshift(i3);\n child = parent2;\n }\n throw new Error(\"Unable to find the path for Slate node: \".concat(JSON.stringify(node)));\n },\n findDocumentOrShadowRoot(editor) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root5 = el.getRootNode();\n if ((root5 instanceof Document || root5 instanceof ShadowRoot) && root5.getSelection != null) {\n return root5;\n }\n return el.ownerDocument;\n },\n isFocused(editor) {\n return !!IS_FOCUSED.get(editor);\n },\n isReadOnly(editor) {\n return !!IS_READ_ONLY.get(editor);\n },\n blur(editor) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n IS_FOCUSED.set(editor, false);\n if (root5.activeElement === el) {\n el.blur();\n }\n },\n focus(editor) {\n var el = ReactEditor.toDOMNode(editor, editor);\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n IS_FOCUSED.set(editor, true);\n if (root5.activeElement !== el) {\n el.focus({\n preventScroll: true\n });\n }\n },\n deselect(editor) {\n ReactEditor.toDOMNode(editor, editor);\n var {\n selection\n } = editor;\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n var domSelection = root5.getSelection();\n if (domSelection && domSelection.rangeCount > 0) {\n domSelection.removeAllRanges();\n }\n if (selection) {\n Transforms.deselect(editor);\n }\n },\n hasDOMNode(editor, target) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var {\n editable = false\n } = options;\n var editorEl = ReactEditor.toDOMNode(editor, editor);\n var targetEl;\n try {\n targetEl = isDOMElement(target) ? target : target.parentElement;\n } catch (err) {\n if (!err.message.includes('Permission denied to access property \"nodeType\"')) {\n throw err;\n }\n }\n if (!targetEl) {\n return false;\n }\n return targetEl.closest(\"[data-slate-editor]\") === editorEl && (!editable || targetEl.isContentEditable ? true : typeof targetEl.isContentEditable === \"boolean\" && targetEl.closest('[contenteditable=\"false\"]') === editorEl || !!targetEl.getAttribute(\"data-slate-zero-width\"));\n },\n insertData(editor, data) {\n editor.insertData(data);\n },\n insertFragmentData(editor, data) {\n return editor.insertFragmentData(data);\n },\n insertTextData(editor, data) {\n return editor.insertTextData(data);\n },\n setFragmentData(editor, data, originEvent) {\n editor.setFragmentData(data, originEvent);\n },\n toDOMNode(editor, node) {\n var KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor);\n var domNode = Editor.isEditor(node) ? EDITOR_TO_ELEMENT.get(editor) : KEY_TO_ELEMENT === null || KEY_TO_ELEMENT === void 0 ? void 0 : KEY_TO_ELEMENT.get(ReactEditor.findKey(editor, node));\n if (!domNode) {\n throw new Error(\"Cannot resolve a DOM node from Slate node: \".concat(JSON.stringify(node)));\n }\n return domNode;\n },\n toDOMPoint(editor, point) {\n var [node] = Editor.node(editor, point.path);\n var el = ReactEditor.toDOMNode(editor, node);\n var domPoint;\n if (Editor.void(editor, {\n at: point\n })) {\n point = {\n path: point.path,\n offset: 0\n };\n }\n var selector = \"[data-slate-string], [data-slate-zero-width]\";\n var texts = Array.from(el.querySelectorAll(selector));\n var start3 = 0;\n for (var text4 of texts) {\n var domNode = text4.childNodes[0];\n if (domNode == null || domNode.textContent == null) {\n continue;\n }\n var {\n length\n } = domNode.textContent;\n var attr = text4.getAttribute(\"data-slate-length\");\n var trueLength = attr == null ? length : parseInt(attr, 10);\n var end3 = start3 + trueLength;\n if (point.offset <= end3) {\n var offset3 = Math.min(length, Math.max(0, point.offset - start3));\n domPoint = [domNode, offset3];\n break;\n }\n start3 = end3;\n }\n if (!domPoint) {\n throw new Error(\"Cannot resolve a DOM point from Slate point: \".concat(JSON.stringify(point)));\n }\n return domPoint;\n },\n toDOMRange(editor, range) {\n var {\n anchor,\n focus\n } = range;\n var isBackward = Range.isBackward(range);\n var domAnchor = ReactEditor.toDOMPoint(editor, anchor);\n var domFocus = Range.isCollapsed(range) ? domAnchor : ReactEditor.toDOMPoint(editor, focus);\n var window2 = ReactEditor.getWindow(editor);\n var domRange = window2.document.createRange();\n var [startNode, startOffset] = isBackward ? domFocus : domAnchor;\n var [endNode, endOffset] = isBackward ? domAnchor : domFocus;\n var startEl = isDOMElement(startNode) ? startNode : startNode.parentElement;\n var isStartAtZeroWidth = !!startEl.getAttribute(\"data-slate-zero-width\");\n var endEl = isDOMElement(endNode) ? endNode : endNode.parentElement;\n var isEndAtZeroWidth = !!endEl.getAttribute(\"data-slate-zero-width\");\n domRange.setStart(startNode, isStartAtZeroWidth ? 1 : startOffset);\n domRange.setEnd(endNode, isEndAtZeroWidth ? 1 : endOffset);\n return domRange;\n },\n toSlateNode(editor, domNode) {\n var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;\n if (domEl && !domEl.hasAttribute(\"data-slate-node\")) {\n domEl = domEl.closest(\"[data-slate-node]\");\n }\n var node = domEl ? ELEMENT_TO_NODE.get(domEl) : null;\n if (!node) {\n throw new Error(\"Cannot resolve a Slate node from DOM node: \".concat(domEl));\n }\n return node;\n },\n findEventRange(editor, event) {\n if (\"nativeEvent\" in event) {\n event = event.nativeEvent;\n }\n var {\n clientX: x3,\n clientY: y3,\n target\n } = event;\n if (x3 == null || y3 == null) {\n throw new Error(\"Cannot resolve a Slate range from a DOM event: \".concat(event));\n }\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n if (Editor.isVoid(editor, node)) {\n var rect = target.getBoundingClientRect();\n var isPrev = editor.isInline(node) ? x3 - rect.left < rect.left + rect.width - x3 : y3 - rect.top < rect.top + rect.height - y3;\n var edge = Editor.point(editor, path, {\n edge: isPrev ? \"start\" : \"end\"\n });\n var point = isPrev ? Editor.before(editor, edge) : Editor.after(editor, edge);\n if (point) {\n var _range = Editor.range(editor, point);\n return _range;\n }\n }\n var domRange;\n var {\n document: document2\n } = ReactEditor.getWindow(editor);\n if (document2.caretRangeFromPoint) {\n domRange = document2.caretRangeFromPoint(x3, y3);\n } else {\n var position = document2.caretPositionFromPoint(x3, y3);\n if (position) {\n domRange = document2.createRange();\n domRange.setStart(position.offsetNode, position.offset);\n domRange.setEnd(position.offsetNode, position.offset);\n }\n }\n if (!domRange) {\n throw new Error(\"Cannot resolve a Slate range from a DOM event: \".concat(event));\n }\n var range = ReactEditor.toSlateRange(editor, domRange, {\n exactMatch: false,\n suppressThrow: false\n });\n return range;\n },\n toSlatePoint(editor, domPoint, options) {\n var {\n exactMatch,\n suppressThrow\n } = options;\n var [nearestNode, nearestOffset] = exactMatch ? domPoint : normalizeDOMPoint(domPoint);\n var parentNode = nearestNode.parentNode;\n var textNode = null;\n var offset3 = 0;\n if (parentNode) {\n var _domNode$textContent;\n var editorEl = ReactEditor.toDOMNode(editor, editor);\n var potentialVoidNode = parentNode.closest('[data-slate-void=\"true\"]');\n var voidNode = potentialVoidNode && editorEl.contains(potentialVoidNode) ? potentialVoidNode : null;\n var leafNode = parentNode.closest(\"[data-slate-leaf]\");\n var domNode = null;\n if (leafNode) {\n textNode = leafNode.closest('[data-slate-node=\"text\"]');\n if (textNode) {\n var window2 = ReactEditor.getWindow(editor);\n var range = window2.document.createRange();\n range.setStart(textNode, 0);\n range.setEnd(nearestNode, nearestOffset);\n var contents = range.cloneContents();\n var removals = [...Array.prototype.slice.call(contents.querySelectorAll(\"[data-slate-zero-width]\")), ...Array.prototype.slice.call(contents.querySelectorAll(\"[contenteditable=false]\"))];\n removals.forEach((el) => {\n el.parentNode.removeChild(el);\n });\n offset3 = contents.textContent.length;\n domNode = textNode;\n }\n } else if (voidNode) {\n leafNode = voidNode.querySelector(\"[data-slate-leaf]\");\n if (!leafNode) {\n offset3 = 1;\n } else {\n textNode = leafNode.closest('[data-slate-node=\"text\"]');\n domNode = leafNode;\n offset3 = domNode.textContent.length;\n domNode.querySelectorAll(\"[data-slate-zero-width]\").forEach((el) => {\n offset3 -= el.textContent.length;\n });\n }\n }\n if (domNode && offset3 === domNode.textContent.length && (parentNode.hasAttribute(\"data-slate-zero-width\") || IS_FIREFOX && (_domNode$textContent = domNode.textContent) !== null && _domNode$textContent !== void 0 && _domNode$textContent.endsWith(\"\\n\\n\"))) {\n offset3--;\n }\n }\n if (!textNode) {\n if (suppressThrow) {\n return null;\n }\n throw new Error(\"Cannot resolve a Slate point from DOM point: \".concat(domPoint));\n }\n var slateNode2 = ReactEditor.toSlateNode(editor, textNode);\n var path = ReactEditor.findPath(editor, slateNode2);\n return {\n path,\n offset: offset3\n };\n },\n toSlateRange(editor, domRange, options) {\n var {\n exactMatch,\n suppressThrow\n } = options;\n var el = isDOMSelection(domRange) ? domRange.anchorNode : domRange.startContainer;\n var anchorNode;\n var anchorOffset;\n var focusNode;\n var focusOffset;\n var isCollapsed2;\n if (el) {\n if (isDOMSelection(domRange)) {\n anchorNode = domRange.anchorNode;\n anchorOffset = domRange.anchorOffset;\n focusNode = domRange.focusNode;\n focusOffset = domRange.focusOffset;\n if (IS_CHROME && hasShadowRoot()) {\n isCollapsed2 = domRange.anchorNode === domRange.focusNode && domRange.anchorOffset === domRange.focusOffset;\n } else {\n isCollapsed2 = domRange.isCollapsed;\n }\n } else {\n anchorNode = domRange.startContainer;\n anchorOffset = domRange.startOffset;\n focusNode = domRange.endContainer;\n focusOffset = domRange.endOffset;\n isCollapsed2 = domRange.collapsed;\n }\n }\n if (anchorNode == null || focusNode == null || anchorOffset == null || focusOffset == null) {\n throw new Error(\"Cannot resolve a Slate range from DOM range: \".concat(domRange));\n }\n var anchor = ReactEditor.toSlatePoint(editor, [anchorNode, anchorOffset], {\n exactMatch,\n suppressThrow\n });\n if (!anchor) {\n return null;\n }\n var focus = isCollapsed2 ? anchor : ReactEditor.toSlatePoint(editor, [focusNode, focusOffset], {\n exactMatch,\n suppressThrow\n });\n if (!focus) {\n return null;\n }\n var range = {\n anchor,\n focus\n };\n if (Range.isExpanded(range) && Range.isForward(range) && isDOMElement(focusNode) && Editor.void(editor, {\n at: range.focus,\n mode: \"highest\"\n })) {\n range = Editor.unhangRange(editor, range, {\n voids: true\n });\n }\n return range;\n },\n hasRange(editor, range) {\n var {\n anchor,\n focus\n } = range;\n return Editor.hasPath(editor, anchor.path) && Editor.hasPath(editor, focus.path);\n }\n};\nfunction gatherMutationData(editor, mutations) {\n var addedNodes = [];\n var removedNodes = [];\n var insertedText = [];\n var characterDataMutations = [];\n mutations.forEach((mutation) => {\n switch (mutation.type) {\n case \"childList\": {\n if (mutation.addedNodes.length) {\n mutation.addedNodes.forEach((addedNode) => {\n addedNodes.push(addedNode);\n });\n }\n mutation.removedNodes.forEach((removedNode) => {\n removedNodes.push(removedNode);\n });\n break;\n }\n case \"characterData\": {\n characterDataMutations.push(mutation);\n var {\n parentNode\n } = mutation.target;\n if (!parentNode) {\n return;\n }\n var textInsertion = getTextInsertion(editor, parentNode);\n if (!textInsertion) {\n return;\n }\n if (insertedText.some((_ref) => {\n var {\n path\n } = _ref;\n return Path.equals(path, textInsertion.path);\n })) {\n return;\n }\n insertedText.push(textInsertion);\n }\n }\n });\n return {\n addedNodes,\n removedNodes,\n insertedText,\n characterDataMutations\n };\n}\nvar isLineBreak = (editor, _ref2) => {\n var {\n addedNodes\n } = _ref2;\n var {\n selection\n } = editor;\n var parentNode = selection ? Node2.parent(editor, selection.anchor.path) : null;\n var parentDOMNode = parentNode ? ReactEditor.toDOMNode(editor, parentNode) : null;\n if (!parentDOMNode) {\n return false;\n }\n return addedNodes.some((addedNode) => addedNode instanceof HTMLElement && addedNode.tagName === (parentDOMNode === null || parentDOMNode === void 0 ? void 0 : parentDOMNode.tagName));\n};\nvar isDeletion = (_3, _ref3) => {\n var {\n removedNodes\n } = _ref3;\n return removedNodes.length > 0;\n};\nvar isReplaceExpandedSelection = (_ref4, _ref5) => {\n var {\n selection\n } = _ref4;\n var {\n removedNodes\n } = _ref5;\n return selection ? Range.isExpanded(selection) && removedNodes.length > 0 : false;\n};\nvar isTextInsertion = (_3, _ref6) => {\n var {\n insertedText\n } = _ref6;\n return insertedText.length > 0;\n};\nvar isRemoveLeafNodes = (_3, _ref7) => {\n var {\n addedNodes,\n characterDataMutations,\n removedNodes\n } = _ref7;\n return removedNodes.length > 0 && addedNodes.length === 0 && characterDataMutations.length > 0;\n};\nvar AndroidInputManager = class {\n constructor(editor, restoreDOM) {\n this.editor = editor;\n this.restoreDOM = restoreDOM;\n this.flush = (mutations) => {\n try {\n this.reconcileMutations(mutations);\n } catch (err) {\n console.error(err);\n this.restoreDOM();\n }\n };\n this.reconcileMutations = (mutations) => {\n var mutationData = gatherMutationData(this.editor, mutations);\n var {\n insertedText,\n removedNodes\n } = mutationData;\n if (isReplaceExpandedSelection(this.editor, mutationData)) {\n var text4 = combineInsertedText(insertedText);\n this.replaceExpandedSelection(text4);\n } else if (isLineBreak(this.editor, mutationData)) {\n this.insertBreak();\n } else if (isRemoveLeafNodes(this.editor, mutationData)) {\n this.removeLeafNodes(removedNodes);\n } else if (isDeletion(this.editor, mutationData)) {\n this.deleteBackward();\n } else if (isTextInsertion(this.editor, mutationData)) {\n this.insertText(insertedText);\n }\n };\n this.insertText = (insertedText) => {\n var {\n selection\n } = this.editor;\n if (ReactEditor.isComposing(this.editor) || IS_ON_COMPOSITION_END.get(this.editor)) {\n EDITOR_ON_COMPOSITION_TEXT.set(this.editor, insertedText);\n IS_ON_COMPOSITION_END.set(this.editor, false);\n return;\n }\n insertedText.forEach((insertion) => {\n var text4 = insertion.text.insertText;\n var at = normalizeTextInsertionRange(this.editor, selection, insertion);\n Transforms.setSelection(this.editor, at);\n Editor.insertText(this.editor, text4);\n });\n };\n this.insertBreak = () => {\n var {\n selection\n } = this.editor;\n Editor.insertBreak(this.editor);\n this.restoreDOM();\n if (selection) {\n setTimeout(() => {\n if (this.editor.selection && Range.equals(selection, this.editor.selection)) {\n Transforms.move(this.editor);\n }\n }, 100);\n }\n };\n this.replaceExpandedSelection = (text4) => {\n Editor.deleteFragment(this.editor);\n if (text4.length) {\n Editor.insertText(this.editor, text4);\n }\n this.restoreDOM();\n };\n this.deleteBackward = () => {\n Editor.deleteBackward(this.editor);\n ReactEditor.focus(this.editor);\n this.restoreDOM();\n };\n this.removeLeafNodes = (nodes) => {\n for (var node of nodes) {\n var slateNode2 = ReactEditor.toSlateNode(this.editor, node);\n if (slateNode2) {\n var path = ReactEditor.findPath(this.editor, slateNode2);\n Transforms.delete(this.editor, {\n at: path\n });\n this.restoreDOM();\n }\n }\n };\n this.editor = editor;\n this.restoreDOM = restoreDOM;\n }\n};\nfunction useMutationObserver(node, callback, options) {\n var [mutationObserver] = (0, import_react.useState)(() => new MutationObserver(callback));\n useIsomorphicLayoutEffect(() => {\n mutationObserver.disconnect();\n });\n (0, import_react.useEffect)(() => {\n if (!node.current) {\n throw new Error(\"Failed to attach MutationObserver, `node` is undefined\");\n }\n mutationObserver.observe(node.current, options);\n return mutationObserver.disconnect.bind(mutationObserver);\n });\n}\nvar MUTATION_OBSERVER_CONFIG$1 = {\n childList: true,\n characterData: true,\n subtree: true\n};\nfunction findClosestKnowSlateNode(domNode) {\n var _domEl;\n var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;\n if (domEl && !domEl.hasAttribute(\"data-slate-node\")) {\n domEl = domEl.closest(\"[data-slate-node]\");\n }\n var slateNode2 = domEl && ELEMENT_TO_NODE.get(domEl);\n if (slateNode2) {\n return slateNode2;\n }\n return (_domEl = domEl) !== null && _domEl !== void 0 && _domEl.parentElement ? findClosestKnowSlateNode(domEl.parentElement) : null;\n}\nfunction useRestoreDom(node, receivedUserInput) {\n var editor = useSlateStatic();\n var mutatedNodes = (0, import_react.useRef)(/* @__PURE__ */ new Set());\n var handleDOMMutation = (0, import_react.useCallback)((mutations) => {\n if (!receivedUserInput.current) {\n return;\n }\n mutations.forEach((_ref) => {\n var {\n target\n } = _ref;\n var slateNode2 = findClosestKnowSlateNode(target);\n if (!slateNode2) {\n return;\n }\n return mutatedNodes.current.add(slateNode2);\n });\n }, []);\n useMutationObserver(node, handleDOMMutation, MUTATION_OBSERVER_CONFIG$1);\n mutatedNodes.current.clear();\n var restore = (0, import_react.useCallback)(() => {\n var mutated = Array.from(mutatedNodes.current.values());\n var nodesToRestore = mutated.filter((n6) => !mutated.some((m3) => Path.isParent(ReactEditor.findPath(editor, m3), ReactEditor.findPath(editor, n6))));\n nodesToRestore.forEach((n6) => {\n var _NODE_TO_RESTORE_DOM$;\n (_NODE_TO_RESTORE_DOM$ = NODE_TO_RESTORE_DOM.get(n6)) === null || _NODE_TO_RESTORE_DOM$ === void 0 ? void 0 : _NODE_TO_RESTORE_DOM$();\n });\n mutatedNodes.current.clear();\n }, []);\n return restore;\n}\nfunction useTrackUserInput() {\n var editor = useSlateStatic();\n var receivedUserInput = (0, import_react.useRef)(false);\n var animationFrameRef = (0, import_react.useRef)(null);\n var onUserInput = (0, import_react.useCallback)(() => {\n if (receivedUserInput.current === false) {\n var window2 = ReactEditor.getWindow(editor);\n receivedUserInput.current = true;\n if (animationFrameRef.current) {\n window2.cancelAnimationFrame(animationFrameRef.current);\n }\n animationFrameRef.current = window2.requestAnimationFrame(() => {\n receivedUserInput.current = false;\n animationFrameRef.current = null;\n });\n }\n }, []);\n (0, import_react.useEffect)(() => {\n if (receivedUserInput.current) {\n receivedUserInput.current = false;\n }\n });\n return {\n receivedUserInput,\n onUserInput\n };\n}\nvar MUTATION_OBSERVER_CONFIG = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n subtree: true\n};\nfunction useAndroidInputManager(node) {\n var editor = useSlateStatic();\n var {\n receivedUserInput,\n onUserInput\n } = useTrackUserInput();\n var restoreDom = useRestoreDom(node, receivedUserInput);\n var inputManager = (0, import_react.useMemo)(() => new AndroidInputManager(editor, restoreDom), [restoreDom, editor]);\n var timeoutId = (0, import_react.useRef)(null);\n var isReconciling = (0, import_react.useRef)(false);\n var flush = (0, import_react.useCallback)((mutations) => {\n if (!receivedUserInput.current) {\n return;\n }\n isReconciling.current = true;\n inputManager.flush(mutations);\n if (timeoutId.current) {\n clearTimeout(timeoutId.current);\n }\n timeoutId.current = setTimeout(() => {\n isReconciling.current = false;\n timeoutId.current = null;\n }, 250);\n }, []);\n useMutationObserver(node, flush, MUTATION_OBSERVER_CONFIG);\n return {\n isReconciling,\n onUserInput\n };\n}\nvar _excluded$12 = [\"autoFocus\", \"decorate\", \"onDOMBeforeInput\", \"placeholder\", \"readOnly\", \"renderElement\", \"renderLeaf\", \"renderPlaceholder\", \"style\", \"as\"];\nfunction ownKeys2(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread2(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys2(Object(source), true).forEach(function(key) {\n _defineProperty2(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys2(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar RESOLVE_DELAY = 20;\nvar AndroidEditable = (props) => {\n var {\n autoFocus,\n decorate = defaultDecorate,\n onDOMBeforeInput: propsOnDOMBeforeInput,\n placeholder,\n readOnly = false,\n renderElement,\n renderLeaf,\n renderPlaceholder = (props2) => /* @__PURE__ */ import_react.default.createElement(DefaultPlaceholder, Object.assign({}, props2)),\n style = {},\n as: Component2 = \"div\"\n } = props, attributes = _objectWithoutProperties2(props, _excluded$12);\n var editor = useSlate();\n var [isComposing, setIsComposing] = (0, import_react.useState)(false);\n var ref = (0, import_react.useRef)(null);\n var inputManager = useAndroidInputManager(ref);\n IS_READ_ONLY.set(editor, readOnly);\n var state = (0, import_react.useMemo)(() => ({\n isComposing: false,\n isUpdatingSelection: false,\n latestElement: null\n }), []);\n var contentKey = useContentKey(editor);\n useIsomorphicLayoutEffect(() => {\n var window2;\n if (ref.current && (window2 = getDefaultView(ref.current))) {\n EDITOR_TO_WINDOW.set(editor, window2);\n EDITOR_TO_ELEMENT.set(editor, ref.current);\n NODE_TO_ELEMENT.set(editor, ref.current);\n ELEMENT_TO_NODE.set(ref.current, editor);\n } else {\n NODE_TO_ELEMENT.delete(editor);\n }\n try {\n var {\n selection\n } = editor;\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n var domSelection = root5.getSelection();\n if (state.isComposing || !domSelection || !ReactEditor.isFocused(editor)) {\n return;\n }\n var hasDomSelection = domSelection.type !== \"None\";\n if (!selection && !hasDomSelection) {\n return;\n }\n var editorElement = EDITOR_TO_ELEMENT.get(editor);\n var hasDomSelectionInEditor = false;\n if (editorElement.contains(domSelection.anchorNode) && editorElement.contains(domSelection.focusNode)) {\n hasDomSelectionInEditor = true;\n }\n if (hasDomSelection && hasDomSelectionInEditor && selection) {\n var slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: true,\n suppressThrow: true\n });\n if (slateRange && Range.equals(slateRange, selection)) {\n return;\n }\n }\n if (selection && !ReactEditor.hasRange(editor, selection)) {\n editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false\n });\n return;\n }\n var el = ReactEditor.toDOMNode(editor, editor);\n state.isUpdatingSelection = true;\n var newDomRange = selection && ReactEditor.toDOMRange(editor, selection);\n if (newDomRange) {\n if (Range.isBackward(selection)) {\n domSelection.setBaseAndExtent(newDomRange.endContainer, newDomRange.endOffset, newDomRange.startContainer, newDomRange.startOffset);\n } else {\n domSelection.setBaseAndExtent(newDomRange.startContainer, newDomRange.startOffset, newDomRange.endContainer, newDomRange.endOffset);\n }\n var leafEl = newDomRange.startContainer.parentElement;\n leafEl.getBoundingClientRect = newDomRange.getBoundingClientRect.bind(newDomRange);\n es_default(leafEl, {\n scrollMode: \"if-needed\",\n boundary: el\n });\n delete leafEl.getBoundingClientRect;\n } else {\n domSelection.removeAllRanges();\n }\n setTimeout(() => {\n state.isUpdatingSelection = false;\n });\n } catch (_unused) {\n state.isUpdatingSelection = false;\n }\n });\n (0, import_react.useEffect)(() => {\n if (ref.current && autoFocus) {\n ref.current.focus();\n }\n }, [autoFocus]);\n var onDOMSelectionChange = (0, import_react.useCallback)((0, import_throttle.default)(() => {\n try {\n if (!state.isComposing && !state.isUpdatingSelection && !inputManager.isReconciling.current) {\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n var {\n activeElement\n } = root5;\n var el = ReactEditor.toDOMNode(editor, editor);\n var domSelection = root5.getSelection();\n if (activeElement === el) {\n state.latestElement = activeElement;\n IS_FOCUSED.set(editor, true);\n } else {\n IS_FOCUSED.delete(editor);\n }\n if (!domSelection) {\n return Transforms.deselect(editor);\n }\n var {\n anchorNode,\n focusNode\n } = domSelection;\n var anchorNodeSelectable = hasEditableTarget(editor, anchorNode) || isTargetInsideNonReadonlyVoid(editor, anchorNode);\n var focusNodeSelectable = hasEditableTarget(editor, focusNode) || isTargetInsideNonReadonlyVoid(editor, focusNode);\n if (anchorNodeSelectable && focusNodeSelectable) {\n var range = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: false\n });\n Transforms.select(editor, range);\n } else {\n Transforms.deselect(editor);\n }\n }\n } catch (_unused2) {\n }\n }, 100), [readOnly]);\n var scheduleOnDOMSelectionChange = (0, import_react.useMemo)(() => (0, import_debounce.default)(onDOMSelectionChange, 0), [onDOMSelectionChange]);\n var onDOMBeforeInput = (0, import_react.useCallback)((event) => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {\n scheduleOnDOMSelectionChange.flush();\n inputManager.onUserInput();\n }\n }, [readOnly, propsOnDOMBeforeInput]);\n useIsomorphicLayoutEffect(() => {\n var node = ref.current;\n node === null || node === void 0 ? void 0 : node.addEventListener(\"beforeinput\", onDOMBeforeInput);\n return () => node === null || node === void 0 ? void 0 : node.removeEventListener(\"beforeinput\", onDOMBeforeInput);\n }, [contentKey, propsOnDOMBeforeInput]);\n useIsomorphicLayoutEffect(() => {\n var window2 = ReactEditor.getWindow(editor);\n window2.document.addEventListener(\"selectionchange\", scheduleOnDOMSelectionChange);\n return () => {\n window2.document.removeEventListener(\"selectionchange\", scheduleOnDOMSelectionChange);\n };\n }, [scheduleOnDOMSelectionChange]);\n var decorations = decorate([editor, []]);\n if (placeholder && editor.children.length === 1 && Array.from(Node2.texts(editor)).length === 1 && Node2.string(editor) === \"\" && !isComposing) {\n var start3 = Editor.start(editor, []);\n decorations.push({\n [PLACEHOLDER_SYMBOL]: true,\n placeholder,\n anchor: start3,\n focus: start3\n });\n }\n return /* @__PURE__ */ import_react.default.createElement(ReadOnlyContext.Provider, {\n value: readOnly\n }, /* @__PURE__ */ import_react.default.createElement(DecorateContext.Provider, {\n value: decorate\n }, /* @__PURE__ */ import_react.default.createElement(Component2, Object.assign({\n key: contentKey,\n role: readOnly ? void 0 : \"textbox\"\n }, attributes, {\n spellCheck: attributes.spellCheck,\n autoCorrect: attributes.autoCorrect,\n autoCapitalize: attributes.autoCapitalize,\n \"data-slate-editor\": true,\n \"data-slate-node\": \"value\",\n contentEditable: readOnly ? void 0 : true,\n suppressContentEditableWarning: true,\n ref,\n style: _objectSpread2({\n position: \"relative\",\n outline: \"none\",\n whiteSpace: \"pre-wrap\",\n wordWrap: \"break-word\"\n }, style),\n onCopy: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, \"copy\");\n }\n }, [attributes.onCopy]),\n onCut: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut)) {\n event.preventDefault();\n ReactEditor.setFragmentData(editor, event.clipboardData, \"cut\");\n var {\n selection\n } = editor;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor);\n } else {\n var node = Node2.parent(editor, selection.anchor.path);\n if (Editor.isVoid(editor, node)) {\n Transforms.delete(editor);\n }\n }\n }\n }\n }, [readOnly, attributes.onCut]),\n onFocus: (0, import_react.useCallback)((event) => {\n if (!readOnly && !state.isUpdatingSelection && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onFocus)) {\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n state.latestElement = root5.activeElement;\n IS_FOCUSED.set(editor, true);\n }\n }, [readOnly, attributes.onFocus]),\n onBlur: (0, import_react.useCallback)((event) => {\n if (readOnly || state.isUpdatingSelection || !hasEditableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {\n return;\n }\n var root5 = ReactEditor.findDocumentOrShadowRoot(editor);\n if (state.latestElement === root5.activeElement) {\n return;\n }\n var {\n relatedTarget\n } = event;\n var el = ReactEditor.toDOMNode(editor, editor);\n if (relatedTarget === el) {\n return;\n }\n if (isDOMElement(relatedTarget) && relatedTarget.hasAttribute(\"data-slate-spacer\")) {\n return;\n }\n if (relatedTarget != null && isDOMNode(relatedTarget) && ReactEditor.hasDOMNode(editor, relatedTarget)) {\n var node = ReactEditor.toSlateNode(editor, relatedTarget);\n if (Element2.isElement(node) && !editor.isVoid(node)) {\n return;\n }\n }\n IS_FOCUSED.delete(editor);\n }, [readOnly, attributes.onBlur]),\n onClick: (0, import_react.useCallback)((event) => {\n if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onClick) && isDOMNode(event.target)) {\n var node = ReactEditor.toSlateNode(editor, event.target);\n var path = ReactEditor.findPath(editor, node);\n if (Editor.hasPath(editor, path)) {\n var lookupNode = Node2.get(editor, path);\n if (lookupNode === node) {\n var _start = Editor.start(editor, path);\n var end3 = Editor.end(editor, path);\n var startVoid = Editor.void(editor, {\n at: _start\n });\n var endVoid = Editor.void(editor, {\n at: end3\n });\n if (startVoid && endVoid && Path.equals(startVoid[1], endVoid[1])) {\n var range = Editor.range(editor, _start);\n Transforms.select(editor, range);\n }\n }\n }\n }\n }, [readOnly, attributes.onClick]),\n onCompositionEnd: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionEnd)) {\n scheduleOnDOMSelectionChange.flush();\n setTimeout(() => {\n state.isComposing && setIsComposing(false);\n state.isComposing = false;\n IS_COMPOSING.set(editor, false);\n IS_ON_COMPOSITION_END.set(editor, true);\n var insertedText = EDITOR_ON_COMPOSITION_TEXT.get(editor) || [];\n if (!insertedText.length) {\n return;\n }\n EDITOR_ON_COMPOSITION_TEXT.set(editor, []);\n var {\n selection\n } = editor;\n insertedText.forEach((insertion) => {\n var text4 = insertion.text.insertText;\n var at = normalizeTextInsertionRange(editor, selection, insertion);\n Transforms.setSelection(editor, at);\n Editor.insertText(editor, text4);\n });\n }, RESOLVE_DELAY);\n }\n }, [attributes.onCompositionEnd]),\n onCompositionUpdate: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate)) {\n !state.isComposing && setIsComposing(true);\n state.isComposing = true;\n IS_COMPOSING.set(editor, true);\n }\n }, [attributes.onCompositionUpdate]),\n onCompositionStart: (0, import_react.useCallback)((event) => {\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionStart)) {\n !state.isComposing && setIsComposing(true);\n state.isComposing = true;\n IS_COMPOSING.set(editor, true);\n }\n }, [attributes.onCompositionStart]),\n onPaste: (0, import_react.useCallback)((event) => {\n event.clipboardData = getClipboardData(event.clipboardData);\n if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onPaste) && !readOnly) {\n event.preventDefault();\n ReactEditor.insertData(editor, event.clipboardData);\n }\n }, [readOnly, attributes.onPaste])\n }), useChildren({\n decorations,\n node: editor,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection: editor.selection\n }))));\n};\nvar FocusedContext = /* @__PURE__ */ (0, import_react.createContext)(false);\nvar useFocused = () => {\n return (0, import_react.useContext)(FocusedContext);\n};\nvar SlateSelectorContext = /* @__PURE__ */ (0, import_react.createContext)({});\nfunction getSelectorContext(editor) {\n var eventListeners2 = (0, import_react.useRef)([]).current;\n var slateRef = (0, import_react.useRef)({\n editor\n }).current;\n var onChange = (0, import_react.useCallback)((editor2) => {\n slateRef.editor = editor2;\n eventListeners2.forEach((listener) => listener(editor2));\n }, []);\n var selectorContext = (0, import_react.useMemo)(() => {\n return {\n getSlate: () => slateRef.editor,\n addEventListener: (callback) => {\n eventListeners2.push(callback);\n return () => {\n eventListeners2.splice(eventListeners2.indexOf(callback), 1);\n };\n }\n };\n }, [eventListeners2, slateRef]);\n return {\n selectorContext,\n onChange\n };\n}\nvar _excluded3 = [\"editor\", \"children\", \"onChange\", \"value\"];\nvar Slate = (props) => {\n var {\n editor,\n children,\n onChange,\n value\n } = props, rest = _objectWithoutProperties2(props, _excluded3);\n var unmountRef = (0, import_react.useRef)(false);\n var [context, setContext] = import_react.default.useState(() => {\n if (!Node2.isNodeList(value)) {\n throw new Error(\"[Slate] value is invalid! Expected a list of elements\" + \"but got: \".concat(JSON.stringify(value)));\n }\n if (!Editor.isEditor(editor)) {\n throw new Error(\"[Slate] editor is invalid! you passed:\" + \"\".concat(JSON.stringify(editor)));\n }\n editor.children = value;\n Object.assign(editor, rest);\n return [editor];\n });\n var {\n selectorContext,\n onChange: handleSelectorChange\n } = getSelectorContext(editor);\n var onContextChange = (0, import_react.useCallback)(() => {\n if (onChange) {\n onChange(editor.children);\n }\n setContext([editor]);\n handleSelectorChange(editor);\n }, [onChange]);\n EDITOR_TO_ON_CHANGE.set(editor, onContextChange);\n (0, import_react.useEffect)(() => {\n return () => {\n EDITOR_TO_ON_CHANGE.set(editor, () => {\n });\n unmountRef.current = true;\n };\n }, []);\n var [isFocused, setIsFocused] = (0, import_react.useState)(ReactEditor.isFocused(editor));\n (0, import_react.useEffect)(() => {\n setIsFocused(ReactEditor.isFocused(editor));\n });\n useIsomorphicLayoutEffect(() => {\n var fn6 = () => setIsFocused(ReactEditor.isFocused(editor));\n if (IS_REACT_VERSION_17_OR_ABOVE) {\n document.addEventListener(\"focusin\", fn6);\n document.addEventListener(\"focusout\", fn6);\n return () => {\n document.removeEventListener(\"focusin\", fn6);\n document.removeEventListener(\"focusout\", fn6);\n };\n } else {\n document.addEventListener(\"focus\", fn6, true);\n document.addEventListener(\"blur\", fn6, true);\n return () => {\n document.removeEventListener(\"focus\", fn6, true);\n document.removeEventListener(\"blur\", fn6, true);\n };\n }\n }, []);\n return /* @__PURE__ */ import_react.default.createElement(SlateSelectorContext.Provider, {\n value: selectorContext\n }, /* @__PURE__ */ import_react.default.createElement(SlateContext.Provider, {\n value: context\n }, /* @__PURE__ */ import_react.default.createElement(EditorContext.Provider, {\n value: editor\n }, /* @__PURE__ */ import_react.default.createElement(FocusedContext.Provider, {\n value: isFocused\n }, children))));\n};\nvar doRectsIntersect = (rect, compareRect) => {\n var middle = (compareRect.top + compareRect.bottom) / 2;\n return rect.top <= middle && rect.bottom >= middle;\n};\nvar areRangesSameLine = (editor, range1, range2) => {\n var rect1 = ReactEditor.toDOMRange(editor, range1).getBoundingClientRect();\n var rect2 = ReactEditor.toDOMRange(editor, range2).getBoundingClientRect();\n return doRectsIntersect(rect1, rect2) && doRectsIntersect(rect2, rect1);\n};\nvar findCurrentLineRange = (editor, parentRange) => {\n var parentRangeBoundary = Editor.range(editor, Range.end(parentRange));\n var positions = Array.from(Editor.positions(editor, {\n at: parentRange\n }));\n var left3 = 0;\n var right3 = positions.length;\n var middle = Math.floor(right3 / 2);\n if (areRangesSameLine(editor, Editor.range(editor, positions[left3]), parentRangeBoundary)) {\n return Editor.range(editor, positions[left3], parentRangeBoundary);\n }\n if (positions.length < 2) {\n return Editor.range(editor, positions[positions.length - 1], parentRangeBoundary);\n }\n while (middle !== positions.length && middle !== left3) {\n if (areRangesSameLine(editor, Editor.range(editor, positions[middle]), parentRangeBoundary)) {\n right3 = middle;\n } else {\n left3 = middle;\n }\n middle = Math.floor((left3 + right3) / 2);\n }\n return Editor.range(editor, positions[right3], parentRangeBoundary);\n};\nvar withReact = (editor) => {\n var e4 = editor;\n var {\n apply: apply2,\n onChange,\n deleteBackward\n } = e4;\n EDITOR_TO_KEY_TO_ELEMENT.set(e4, /* @__PURE__ */ new WeakMap());\n e4.deleteBackward = (unit) => {\n if (unit !== \"line\") {\n return deleteBackward(unit);\n }\n if (editor.selection && Range.isCollapsed(editor.selection)) {\n var parentBlockEntry = Editor.above(editor, {\n match: (n6) => Editor.isBlock(editor, n6),\n at: editor.selection\n });\n if (parentBlockEntry) {\n var [, parentBlockPath] = parentBlockEntry;\n var parentElementRange = Editor.range(editor, parentBlockPath, editor.selection.anchor);\n var currentLineRange = findCurrentLineRange(e4, parentElementRange);\n if (!Range.isCollapsed(currentLineRange)) {\n Transforms.delete(editor, {\n at: currentLineRange\n });\n }\n }\n }\n };\n e4.apply = (op) => {\n var matches = [];\n switch (op.type) {\n case \"insert_text\":\n case \"remove_text\":\n case \"set_node\":\n case \"split_node\": {\n matches.push(...getMatches(e4, op.path));\n break;\n }\n case \"set_selection\": {\n var _EDITOR_TO_USER_SELEC;\n (_EDITOR_TO_USER_SELEC = EDITOR_TO_USER_SELECTION.get(editor)) === null || _EDITOR_TO_USER_SELEC === void 0 ? void 0 : _EDITOR_TO_USER_SELEC.unref();\n EDITOR_TO_USER_SELECTION.delete(editor);\n break;\n }\n case \"insert_node\":\n case \"remove_node\": {\n matches.push(...getMatches(e4, Path.parent(op.path)));\n break;\n }\n case \"merge_node\": {\n var prevPath = Path.previous(op.path);\n matches.push(...getMatches(e4, prevPath));\n break;\n }\n case \"move_node\": {\n var commonPath = Path.common(Path.parent(op.path), Path.parent(op.newPath));\n matches.push(...getMatches(e4, commonPath));\n break;\n }\n }\n apply2(op);\n for (var [path, key] of matches) {\n var [node] = Editor.node(e4, path);\n NODE_TO_KEY.set(node, key);\n }\n };\n e4.setFragmentData = (data) => {\n var {\n selection\n } = e4;\n if (!selection) {\n return;\n }\n var [start3, end3] = Range.edges(selection);\n var startVoid = Editor.void(e4, {\n at: start3.path\n });\n var endVoid = Editor.void(e4, {\n at: end3.path\n });\n if (Range.isCollapsed(selection) && !startVoid) {\n return;\n }\n var domRange = ReactEditor.toDOMRange(e4, selection);\n var contents = domRange.cloneContents();\n var attach = contents.childNodes[0];\n contents.childNodes.forEach((node) => {\n if (node.textContent && node.textContent.trim() !== \"\") {\n attach = node;\n }\n });\n if (endVoid) {\n var [voidNode] = endVoid;\n var r5 = domRange.cloneRange();\n var domNode = ReactEditor.toDOMNode(e4, voidNode);\n r5.setEndAfter(domNode);\n contents = r5.cloneContents();\n }\n if (startVoid) {\n attach = contents.querySelector(\"[data-slate-spacer]\");\n }\n Array.from(contents.querySelectorAll(\"[data-slate-zero-width]\")).forEach((zw) => {\n var isNewline = zw.getAttribute(\"data-slate-zero-width\") === \"n\";\n zw.textContent = isNewline ? \"\\n\" : \"\";\n });\n if (isDOMText(attach)) {\n var span = attach.ownerDocument.createElement(\"span\");\n span.style.whiteSpace = \"pre\";\n span.appendChild(attach);\n contents.appendChild(span);\n attach = span;\n }\n var fragment = e4.getFragment();\n var string2 = JSON.stringify(fragment);\n var encoded = window.btoa(encodeURIComponent(string2));\n attach.setAttribute(\"data-slate-fragment\", encoded);\n data.setData(\"application/x-slate-fragment\", encoded);\n var div4 = contents.ownerDocument.createElement(\"div\");\n div4.appendChild(contents);\n div4.setAttribute(\"hidden\", \"true\");\n contents.ownerDocument.body.appendChild(div4);\n data.setData(\"text/html\", div4.innerHTML);\n data.setData(\"text/plain\", getPlainText(div4));\n contents.ownerDocument.body.removeChild(div4);\n return data;\n };\n e4.insertData = (data) => {\n if (!e4.insertFragmentData(data)) {\n e4.insertTextData(data);\n }\n };\n e4.insertFragmentData = (data) => {\n var fragment = data.getData(\"application/x-slate-fragment\") || getSlateFragmentAttribute(data);\n if (fragment) {\n var decoded = decodeURIComponent(window.atob(fragment));\n var parsed = JSON.parse(decoded);\n e4.insertFragment(parsed);\n return true;\n }\n return false;\n };\n e4.insertTextData = (data) => {\n var text4 = data.getData(\"text/plain\");\n if (text4) {\n var lines = text4.split(/\\r\\n|\\r|\\n/);\n var split = false;\n for (var line of lines) {\n if (split) {\n Transforms.splitNodes(e4, {\n always: true\n });\n }\n e4.insertText(line);\n split = true;\n }\n return true;\n }\n return false;\n };\n e4.onChange = () => {\n import_react_dom.default.unstable_batchedUpdates(() => {\n var onContextChange = EDITOR_TO_ON_CHANGE.get(e4);\n if (onContextChange) {\n onContextChange();\n }\n onChange();\n });\n };\n return e4;\n};\nvar getMatches = (e4, path) => {\n var matches = [];\n for (var [n6, p4] of Editor.levels(e4, {\n at: path\n })) {\n var key = ReactEditor.findKey(e4, n6);\n matches.push([p4, key]);\n }\n return matches;\n};\nvar Editable = IS_ANDROID ? AndroidEditable : Editable$1;\n\n// node_modules/use-deep-compare/dist-web/index.js\nvar import_react2 = __toESM(require(\"react\"));\n\n// node_modules/use-deep-compare/node_modules/dequal/dist/dequal.mjs\nfunction dequal(foo, bar) {\n var ctor, len;\n if (foo === bar)\n return true;\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date)\n return foo.getTime() === bar.getTime();\n if (ctor === RegExp)\n return foo.toString() === bar.toString();\n if (ctor === Array && (len = foo.length) === bar.length) {\n while (len-- && dequal(foo[len], bar[len]))\n ;\n return len === -1;\n }\n if (ctor === Object) {\n if (Object.keys(foo).length !== Object.keys(bar).length)\n return false;\n for (len in foo)\n if (!(len in bar) || !dequal(foo[len], bar[len]))\n return false;\n return true;\n }\n }\n return foo !== foo && bar !== bar;\n}\n\n// node_modules/use-deep-compare/dist-web/index.js\nfunction checkDeps(deps, name) {\n const reactHookName = `React.${name.replace(/DeepCompare/, \"\")}`;\n if (!deps || deps.length === 0) {\n throw new Error(`${name} should not be used with no dependencies. Use ${reactHookName} instead.`);\n }\n}\nfunction useDeepCompareMemoize(value) {\n const ref = import_react2.default.useRef([]);\n if (!dequal(value, ref.current)) {\n ref.current = value;\n }\n return ref.current;\n}\nfunction useDeepCompareEffect(effect7, dependencies) {\n if (true) {\n checkDeps(dependencies, \"useDeepCompareEffect\");\n }\n import_react2.default.useEffect(effect7, useDeepCompareMemoize(dependencies));\n}\nfunction useDeepCompareMemo(factory, dependencies) {\n if (true) {\n checkDeps(dependencies, \"useDeepCompareMemo\");\n }\n return import_react2.default.useMemo(factory, useDeepCompareMemoize(dependencies));\n}\n\n// node_modules/react-tracked/dist/index.modern.mjs\nvar import_react3 = require(\"react\");\n\n// node_modules/proxy-compare/dist/index.modern.mjs\nvar e2 = Symbol();\nvar t3 = Symbol();\nvar r3 = Symbol();\nvar n4 = Object.getPrototypeOf;\nvar o2 = /* @__PURE__ */ new WeakMap();\nvar s2 = (e4) => e4 && (o2.has(e4) ? o2.get(e4) : n4(e4) === Object.prototype || n4(e4) === Array.prototype);\nvar c2 = (e4) => typeof e4 == \"object\" && e4 !== null;\nvar i2 = (n6, o3) => {\n let s3 = false;\n const c4 = (t5, r5, o4) => {\n if (!s3) {\n let s4 = t5.a.get(n6);\n s4 || (s4 = /* @__PURE__ */ new Set(), t5.a.set(n6, s4)), o4 && s4.has(e2) || s4.add(r5);\n }\n }, i3 = { f: o3, get(e4, t5) {\n return t5 === r3 ? n6 : (c4(this, t5), a2(e4[t5], this.a, this.c));\n }, has(e4, r5) {\n return r5 === t3 ? (s3 = true, this.a.delete(n6), true) : (c4(this, r5), r5 in e4);\n }, getOwnPropertyDescriptor(e4, t5) {\n return c4(this, t5, true), Object.getOwnPropertyDescriptor(e4, t5);\n }, ownKeys(t5) {\n return c4(this, e2), Reflect.ownKeys(t5);\n } };\n return o3 && (i3.set = i3.deleteProperty = () => false), i3;\n};\nvar a2 = (e4, t5, o3) => {\n if (!s2(e4))\n return e4;\n const c4 = e4[r3] || e4, a5 = ((e5) => Object.isFrozen(e5) || Object.values(Object.getOwnPropertyDescriptors(e5)).some((e6) => !e6.writable))(c4);\n let l4 = o3 && o3.get(c4);\n return l4 && l4.f === a5 || (l4 = i2(c4, a5), l4.p = new Proxy(a5 ? ((e5) => {\n if (Array.isArray(e5))\n return Array.from(e5);\n const t6 = Object.getOwnPropertyDescriptors(e5);\n return Object.values(t6).forEach((e6) => {\n e6.configurable = true;\n }), Object.create(n4(e5), t6);\n })(c4) : c4, l4), o3 && o3.set(c4, l4)), l4.a = t5, l4.c = o3, l4.p;\n};\nvar l2 = (e4, t5) => {\n const r5 = Reflect.ownKeys(e4), n6 = Reflect.ownKeys(t5);\n return r5.length !== n6.length || r5.some((e5, t6) => e5 !== n6[t6]);\n};\nvar u2 = (t5, r5, n6, o3) => {\n if (Object.is(t5, r5))\n return false;\n if (!c2(t5) || !c2(r5))\n return true;\n const s3 = n6.get(t5);\n if (!s3)\n return true;\n if (o3) {\n const e4 = o3.get(t5);\n if (e4 && e4.n === r5)\n return e4.g;\n o3.set(t5, { n: r5, g: false });\n }\n let i3 = null;\n for (const c4 of s3) {\n const s4 = c4 === e2 ? l2(t5, r5) : u2(t5[c4], r5[c4], n6, o3);\n if (s4 !== true && s4 !== false || (i3 = s4), i3)\n break;\n }\n return i3 === null && (i3 = true), o3 && o3.set(t5, { n: r5, g: i3 }), i3;\n};\nvar g2 = (e4, t5) => {\n const r5 = [], n6 = /* @__PURE__ */ new WeakSet(), o3 = (e5, s3) => {\n if (n6.has(e5))\n return;\n c2(e5) && n6.add(e5);\n const i3 = t5.get(e5);\n i3 ? i3.forEach((t6) => {\n o3(e5[t6], s3 ? [...s3, t6] : [t6]);\n }) : s3 && r5.push(s3);\n };\n return o3(e4), r5;\n};\n\n// node_modules/react-tracked/dist/index.modern.mjs\nvar useAffectedDebugValue = (state, affected) => {\n const pathList = (0, import_react3.useRef)();\n (0, import_react3.useEffect)(() => {\n pathList.current = g2(state, affected);\n });\n (0, import_react3.useDebugValue)(state);\n};\nvar createTrackedSelector = (useSelector) => {\n const useTrackedSelector = () => {\n const [, forceUpdate] = (0, import_react3.useReducer)((c4) => c4 + 1, 0);\n const affected = /* @__PURE__ */ new WeakMap();\n const lastAffected = (0, import_react3.useRef)();\n const prevState = (0, import_react3.useRef)();\n const lastState = (0, import_react3.useRef)();\n (0, import_react3.useEffect)(() => {\n lastAffected.current = affected;\n if (prevState.current !== lastState.current && u2(prevState.current, lastState.current, affected, /* @__PURE__ */ new WeakMap())) {\n prevState.current = lastState.current;\n forceUpdate();\n }\n });\n const selector = (0, import_react3.useCallback)((nextState) => {\n lastState.current = nextState;\n if (prevState.current && prevState.current !== nextState && lastAffected.current && !u2(prevState.current, nextState, lastAffected.current, /* @__PURE__ */ new WeakMap())) {\n return prevState.current;\n }\n prevState.current = nextState;\n return nextState;\n }, []);\n const state = useSelector(selector);\n if (typeof process === \"object\" && true) {\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = (0, import_react3.useMemo)(() => /* @__PURE__ */ new WeakMap(), []);\n return a2(state, affected, proxyCache);\n };\n return useTrackedSelector;\n};\n\n// node_modules/zustand/esm/index.mjs\nvar import_react4 = require(\"react\");\nfunction createStore(createState) {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState2 = () => state;\n const subscribeWithSelector = (listener, selector = getState2, equalityFn = Object.is) => {\n console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n let currentSlice = selector(state);\n function listenerToAdd() {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n listener(currentSlice = nextSlice, previousSlice);\n }\n }\n listeners.add(listenerToAdd);\n return () => listeners.delete(listenerToAdd);\n };\n const subscribe = (listener, selector, equalityFn) => {\n if (selector || equalityFn) {\n return subscribeWithSelector(listener, selector, equalityFn);\n }\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState: getState2, subscribe, destroy };\n state = createState(setState, getState2, api);\n return api;\n}\nvar isSSR = typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nvar useIsomorphicLayoutEffect2 = isSSR ? import_react4.useEffect : import_react4.useLayoutEffect;\nfunction create2(createState) {\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useStore = (selector = api.getState, equalityFn = Object.is) => {\n const [, forceUpdate] = (0, import_react4.useReducer)((c4) => c4 + 1, 0);\n const state = api.getState();\n const stateRef = (0, import_react4.useRef)(state);\n const selectorRef = (0, import_react4.useRef)(selector);\n const equalityFnRef = (0, import_react4.useRef)(equalityFn);\n const erroredRef = (0, import_react4.useRef)(false);\n const currentSliceRef = (0, import_react4.useRef)();\n if (currentSliceRef.current === void 0) {\n currentSliceRef.current = selector(state);\n }\n let newStateSlice;\n let hasNewStateSlice = false;\n if (stateRef.current !== state || selectorRef.current !== selector || equalityFnRef.current !== equalityFn || erroredRef.current) {\n newStateSlice = selector(state);\n hasNewStateSlice = !equalityFn(currentSliceRef.current, newStateSlice);\n }\n useIsomorphicLayoutEffect2(() => {\n if (hasNewStateSlice) {\n currentSliceRef.current = newStateSlice;\n }\n stateRef.current = state;\n selectorRef.current = selector;\n equalityFnRef.current = equalityFn;\n erroredRef.current = false;\n });\n const stateBeforeSubscriptionRef = (0, import_react4.useRef)(state);\n useIsomorphicLayoutEffect2(() => {\n const listener = () => {\n try {\n const nextState = api.getState();\n const nextStateSlice = selectorRef.current(nextState);\n if (!equalityFnRef.current(currentSliceRef.current, nextStateSlice)) {\n stateRef.current = nextState;\n currentSliceRef.current = nextStateSlice;\n forceUpdate();\n }\n } catch (error) {\n erroredRef.current = true;\n forceUpdate();\n }\n };\n const unsubscribe = api.subscribe(listener);\n if (api.getState() !== stateBeforeSubscriptionRef.current) {\n listener();\n }\n return unsubscribe;\n }, []);\n const sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;\n (0, import_react4.useDebugValue)(sliceToReturn);\n return sliceToReturn;\n };\n Object.assign(useStore, api);\n useStore[Symbol.iterator] = function() {\n console.warn(\"[useStore, api] = create() is deprecated and will be removed in v4\");\n const items = [useStore, api];\n return {\n next() {\n const done = items.length <= 0;\n return { value: items.shift(), done };\n }\n };\n };\n return useStore;\n}\n\n// node_modules/zustand/esm/middleware.mjs\nvar import_meta = {};\nfunction devtools(fn6, options) {\n return (set, get3, api) => {\n var _a;\n let didWarnAboutNameDeprecation = false;\n if (typeof options === \"string\" && !didWarnAboutNameDeprecation) {\n console.warn(\"[zustand devtools middleware]: passing `name` as directly will be not allowed in next majorpass the `name` in an object `{ name: ... }` instead\");\n didWarnAboutNameDeprecation = true;\n }\n const devtoolsOptions = options === void 0 ? { name: void 0, anonymousActionType: void 0 } : typeof options === \"string\" ? { name: options } : options;\n if (typeof ((_a = devtoolsOptions == null ? void 0 : devtoolsOptions.serialize) == null ? void 0 : _a.options) !== \"undefined\") {\n console.warn(\"[zustand devtools middleware]: `serialize.options` is deprecated, just use `serialize`\");\n }\n let extensionConnector;\n try {\n extensionConnector = window.__REDUX_DEVTOOLS_EXTENSION__ || window.top.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!extensionConnector) {\n if ((import_meta.env && import_meta.env.MODE) !== \"production\" && typeof window !== \"undefined\") {\n console.warn(\"[zustand devtools middleware] Please install/enable Redux devtools extension\");\n }\n return fn6(set, get3, api);\n }\n let extension = Object.create(extensionConnector.connect(devtoolsOptions));\n let didWarnAboutDevtools = false;\n Object.defineProperty(api, \"devtools\", {\n get: () => {\n if (!didWarnAboutDevtools) {\n console.warn(\"[zustand devtools middleware] `devtools` property on the store is deprecated it will be removed in the next major.\\nYou shouldn't interact with the extension directly. But in case you still want to you can patch `window.__REDUX_DEVTOOLS_EXTENSION__` directly\");\n didWarnAboutDevtools = true;\n }\n return extension;\n },\n set: (value) => {\n if (!didWarnAboutDevtools) {\n console.warn(\"[zustand devtools middleware] `api.devtools` is deprecated, it will be removed in the next major.\\nYou shouldn't interact with the extension directly. But in case you still want to you can patch `window.__REDUX_DEVTOOLS_EXTENSION__` directly\");\n didWarnAboutDevtools = true;\n }\n extension = value;\n }\n });\n let didWarnAboutPrefix = false;\n Object.defineProperty(extension, \"prefix\", {\n get: () => {\n if (!didWarnAboutPrefix) {\n console.warn(\"[zustand devtools middleware] along with `api.devtools`, `api.devtools.prefix` is deprecated.\\nWe no longer prefix the actions/names\" + devtoolsOptions.name === void 0 ? \", pass the `name` option to create a separate instance of devtools for each store.\" : \", because the `name` option already creates a separate instance of devtools for each store.\");\n didWarnAboutPrefix = true;\n }\n return \"\";\n },\n set: () => {\n if (!didWarnAboutPrefix) {\n console.warn(\"[zustand devtools middleware] along with `api.devtools`, `api.devtools.prefix` is deprecated.\\nWe no longer prefix the actions/names\" + devtoolsOptions.name === void 0 ? \", pass the `name` option to create a separate instance of devtools for each store.\" : \", because the `name` option already creates a separate instance of devtools for each store.\");\n didWarnAboutPrefix = true;\n }\n }\n });\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n set(state, replace);\n if (!isRecording)\n return;\n extension.send(nameOrAction === void 0 ? { type: devtoolsOptions.anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction, get3());\n };\n const setStateFromDevtools = (...a5) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a5);\n isRecording = originalIsRecording;\n };\n const initialState3 = fn6(api.setState, get3, api);\n extension.init(initialState3);\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a5) => {\n if (a5[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn('[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.');\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a5);\n };\n }\n extension.subscribe((message) => {\n var _a2;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\"[zustand devtools middleware] Unsupported action format\");\n return;\n }\n return parseJsonThen(message.payload, (action) => {\n if (action.type === \"__setState\") {\n setStateFromDevtools(action.state);\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n });\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState3);\n return extension.init(api.getState());\n case \"COMMIT\":\n return extension.init(api.getState());\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n extension.init(api.getState());\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a2 = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a2.state;\n if (!lastComputedState)\n return;\n setStateFromDevtools(lastComputedState);\n extension.send(null, nextLiftedState);\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState3;\n };\n}\nvar parseJsonThen = (stringified, f4) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e4) {\n console.error(\"[zustand devtools middleware] Could not parse the received json\", e4);\n }\n if (parsed !== void 0)\n f4(parsed);\n};\nvar __defProp2 = Object.defineProperty;\nvar __getOwnPropSymbols2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues2 = (a5, b3) => {\n for (var prop in b3 || (b3 = {}))\n if (__hasOwnProp2.call(b3, prop))\n __defNormalProp2(a5, prop, b3[prop]);\n if (__getOwnPropSymbols2)\n for (var prop of __getOwnPropSymbols2(b3)) {\n if (__propIsEnum2.call(b3, prop))\n __defNormalProp2(a5, prop, b3[prop]);\n }\n return a5;\n};\nvar toThenable = (fn6) => (input) => {\n try {\n const result = fn6(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e4) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e4);\n }\n };\n }\n};\nvar persist = (config3, baseOptions) => (set, get3, api) => {\n let options = __spreadValues2({\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => __spreadValues2(__spreadValues2({}, currentState), persistedState)\n }, baseOptions);\n if (options.blacklist || options.whitelist) {\n console.warn(`The ${options.blacklist ? \"blacklist\" : \"whitelist\"} option is deprecated and will be removed in the next version. Please use the 'partialize' option instead.`);\n }\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e4) {\n }\n if (!storage) {\n return config3((...args) => {\n console.warn(`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`);\n set(...args);\n }, get3, api);\n } else if (!storage.removeItem) {\n console.warn(`[zustand persist middleware] The given storage for item '${options.name}' does not contain a 'removeItem' method, which will be required in v4.`);\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize(__spreadValues2({}, get3()));\n if (options.whitelist) {\n Object.keys(state).forEach((key) => {\n var _a;\n !((_a = options.whitelist) == null ? void 0 : _a.includes(key)) && delete state[key];\n });\n }\n if (options.blacklist) {\n options.blacklist.forEach((key) => delete state[key]);\n }\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then((serializedValue) => storage.setItem(options.name, serializedValue)).catch((e4) => {\n errorInSync = e4;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config3((...args) => {\n set(...args);\n void setItem();\n }, get3, api);\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get3()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get3())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(deserializedStorageValue.state, deserializedStorageValue.version);\n }\n console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`);\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(migratedState, (_a2 = get3()) != null ? _a2 : configResult);\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e4) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e4);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = __spreadValues2(__spreadValues2({}, options), newOptions);\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n var _a;\n (_a = storage == null ? void 0 : storage.removeItem) == null ? void 0 : _a.call(storage, options.name);\n },\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\n\n// node_modules/zustand/esm/vanilla.mjs\nfunction createStore2(createState) {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState2 = () => state;\n const subscribeWithSelector = (listener, selector = getState2, equalityFn = Object.is) => {\n console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n let currentSlice = selector(state);\n function listenerToAdd() {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n listener(currentSlice = nextSlice, previousSlice);\n }\n }\n listeners.add(listenerToAdd);\n return () => listeners.delete(listenerToAdd);\n };\n const subscribe = (listener, selector, equalityFn) => {\n if (selector || equalityFn) {\n return subscribeWithSelector(listener, selector, equalityFn);\n }\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState: getState2, subscribe, destroy };\n state = createState(setState, getState2, api);\n return api;\n}\n\n// node_modules/@udecode/zustood/dist/index.es.js\nvar generateStateActions = (store, storeName) => {\n const actions = {};\n Object.keys(store.getState()).forEach((key) => {\n actions[key] = (value) => {\n const prevValue = store.getState()[key];\n if (prevValue === value)\n return;\n const actionKey = key.replace(/^\\S/, (s3) => s3.toUpperCase());\n store.setState((draft) => {\n draft[key] = value;\n }, `@@${storeName}/set${actionKey}`);\n };\n });\n return actions;\n};\nvar extendActions = (builder, api) => {\n const actions = builder(api.set, api.get, api);\n return __spreadProps(__spreadValues({}, api), {\n set: __spreadValues(__spreadValues({}, api.set), actions)\n });\n};\nvar extendSelectors = (builder, api) => {\n const use = __spreadValues({}, api.use);\n const useTracked = __spreadValues({}, api.useTracked);\n const get3 = __spreadValues({}, api.get);\n Object.keys(builder(api.store.getState(), api.get, api)).forEach((key) => {\n use[key] = (...args) => api.useStore((state) => {\n const selectors = builder(state, api.get, api);\n const selector = selectors[key];\n return selector(...args);\n });\n useTracked[key] = (...args) => {\n const trackedState = api.useTrackedStore();\n const selectors = builder(trackedState, api.get, api);\n const selector = selectors[key];\n return selector(...args);\n };\n get3[key] = (...args) => {\n const selectors = builder(api.store.getState(), api.get, api);\n const selector = selectors[key];\n return selector(...args);\n };\n });\n return __spreadProps(__spreadValues({}, api), {\n get: get3,\n use,\n useTracked\n });\n};\nvar storeFactory = (api) => {\n return __spreadProps(__spreadValues({}, api), {\n extendSelectors: (builder) => storeFactory(extendSelectors(builder, api)),\n extendActions: (builder) => storeFactory(extendActions(builder, api))\n });\n};\nvar generateStateGetSelectors = (store) => {\n const selectors = {};\n Object.keys(store.getState()).forEach((key) => {\n selectors[key] = () => store.getState()[key];\n });\n return selectors;\n};\nvar generateStateHookSelectors = (store) => {\n const selectors = {};\n Object.keys(store.getState()).forEach((key) => {\n selectors[key] = (equalityFn) => {\n return store((state) => state[key], equalityFn);\n };\n });\n return selectors;\n};\nvar generateStateTrackedHooksSelectors = (store, trackedStore) => {\n const selectors = {};\n Object.keys(store.getState()).forEach((key) => {\n selectors[key] = () => {\n return trackedStore()[key];\n };\n });\n return selectors;\n};\nvar immerMiddleware = (config3) => (set, get3, api) => {\n const setState = (fn6, actionName) => set(immer_esm_default(fn6), true, actionName);\n api.setState = setState;\n return config3(setState, get3, api);\n};\nfunction pipe(x3, ...fns) {\n return fns.reduce((y3, fn6) => fn6(y3), x3);\n}\nvar createStore3 = (name) => (initialState3, options = {}) => {\n var _immer$enabledAutoFre;\n const {\n middlewares: _middlewares = [],\n devtools: devtools$1,\n persist: persist$1,\n immer\n } = options;\n sn((_immer$enabledAutoFre = immer === null || immer === void 0 ? void 0 : immer.enabledAutoFreeze) !== null && _immer$enabledAutoFre !== void 0 ? _immer$enabledAutoFre : false);\n if (immer !== null && immer !== void 0 && immer.enableMapSet) {\n C();\n }\n const middlewares = [immerMiddleware, ..._middlewares];\n if (persist$1 !== null && persist$1 !== void 0 && persist$1.enabled) {\n middlewares.push((config3) => persist(config3, __spreadProps(__spreadValues({}, persist$1), {\n name\n })));\n }\n if (devtools$1 !== null && devtools$1 !== void 0 && devtools$1.enabled) {\n middlewares.push((config3) => devtools(config3, __spreadProps(__spreadValues({}, devtools$1), {\n name\n })));\n }\n middlewares.push(createStore2);\n const createStore6 = (createState) => pipe(createState, ...middlewares);\n const store = createStore6(() => initialState3);\n const useStore = create2(store);\n const stateActions = generateStateActions(useStore, name);\n const mergeState = (state, actionName) => {\n store.setState((draft) => {\n Object.assign(draft, state);\n }, actionName || `@@${name}/mergeState`);\n };\n const setState = (fn6, actionName) => {\n store.setState(fn6, actionName || `@@${name}/setState`);\n };\n const hookSelectors = generateStateHookSelectors(useStore);\n const getterSelectors = generateStateGetSelectors(useStore);\n const useTrackedStore = createTrackedSelector(useStore);\n const trackedHooksSelectors = generateStateTrackedHooksSelectors(useStore, useTrackedStore);\n const api = {\n get: __spreadValues({\n state: store.getState\n }, getterSelectors),\n name,\n set: __spreadValues({\n state: setState,\n mergeState\n }, stateActions),\n store,\n use: hookSelectors,\n useTracked: trackedHooksSelectors,\n useStore,\n useTrackedStore,\n extendSelectors: () => api,\n extendActions: () => api\n };\n return storeFactory(api);\n};\nvar commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nfunction createCommonjsModule(fn6, module2) {\n return module2 = { exports: {} }, fn6(module2, module2.exports), module2.exports;\n}\nvar freeGlobal = typeof commonjsGlobal == \"object\" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\nvar _freeGlobal = freeGlobal;\nvar freeSelf = typeof self == \"object\" && self && self.Object === Object && self;\nvar root = _freeGlobal || freeSelf || Function(\"return this\")();\nvar _root = root;\nvar Symbol2 = _root.Symbol;\nvar _Symbol = Symbol2;\nvar objectProto$b = Object.prototype;\nvar hasOwnProperty$8 = objectProto$b.hasOwnProperty;\nvar nativeObjectToString$1 = objectProto$b.toString;\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : void 0;\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty$8.call(value, symToStringTag$1), tag = value[symToStringTag$1];\n try {\n value[symToStringTag$1] = void 0;\n var unmasked = true;\n } catch (e4) {\n }\n var result = nativeObjectToString$1.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag$1] = tag;\n } else {\n delete value[symToStringTag$1];\n }\n }\n return result;\n}\nvar _getRawTag = getRawTag;\nvar objectProto$a = Object.prototype;\nvar nativeObjectToString = objectProto$a.toString;\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\nvar _objectToString = objectToString;\nvar nullTag = \"[object Null]\";\nvar undefinedTag = \"[object Undefined]\";\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : void 0;\nfunction baseGetTag(value) {\n if (value == null) {\n return value === void 0 ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value) ? _getRawTag(value) : _objectToString(value);\n}\nvar _baseGetTag = baseGetTag;\nfunction isObject2(value) {\n var type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\nvar isObject_1 = isObject2;\nvar asyncTag = \"[object AsyncFunction]\";\nvar funcTag$1 = \"[object Function]\";\nvar genTag = \"[object GeneratorFunction]\";\nvar proxyTag = \"[object Proxy]\";\nfunction isFunction(value) {\n if (!isObject_1(value)) {\n return false;\n }\n var tag = _baseGetTag(value);\n return tag == funcTag$1 || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\nvar isFunction_1 = isFunction;\nvar coreJsData = _root[\"__core-js_shared__\"];\nvar _coreJsData = coreJsData;\nvar maskSrcKey = function() {\n var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || \"\");\n return uid ? \"Symbol(src)_1.\" + uid : \"\";\n}();\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\nvar _isMasked = isMasked;\nvar funcProto$1 = Function.prototype;\nvar funcToString$1 = funcProto$1.toString;\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString$1.call(func);\n } catch (e4) {\n }\n try {\n return func + \"\";\n } catch (e4) {\n }\n }\n return \"\";\n}\nvar _toSource = toSource;\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\nvar funcProto = Function.prototype;\nvar objectProto$9 = Object.prototype;\nvar funcToString = funcProto.toString;\nvar hasOwnProperty$7 = objectProto$9.hasOwnProperty;\nvar reIsNative = RegExp(\"^\" + funcToString.call(hasOwnProperty$7).replace(reRegExpChar, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\");\nfunction baseIsNative(value) {\n if (!isObject_1(value) || _isMasked(value)) {\n return false;\n }\n var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;\n return pattern.test(_toSource(value));\n}\nvar _baseIsNative = baseIsNative;\nfunction getValue(object, key) {\n return object == null ? void 0 : object[key];\n}\nvar _getValue = getValue;\nfunction getNative(object, key) {\n var value = _getValue(object, key);\n return _baseIsNative(value) ? value : void 0;\n}\nvar _getNative = getNative;\nvar defineProperty = function() {\n try {\n var func = _getNative(Object, \"defineProperty\");\n func({}, \"\", {});\n return func;\n } catch (e4) {\n }\n}();\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index7 = -1, iterable = Object(object), props = keysFunc(object), length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index7];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\nvar _createBaseFor = createBaseFor;\nvar baseFor = _createBaseFor();\nfunction isObjectLike(value) {\n return value != null && typeof value == \"object\";\n}\nvar isObjectLike_1 = isObjectLike;\nvar argsTag$2 = \"[object Arguments]\";\nfunction baseIsArguments(value) {\n return isObjectLike_1(value) && _baseGetTag(value) == argsTag$2;\n}\nvar _baseIsArguments = baseIsArguments;\nvar objectProto$8 = Object.prototype;\nvar hasOwnProperty$6 = objectProto$8.hasOwnProperty;\nvar propertyIsEnumerable$1 = objectProto$8.propertyIsEnumerable;\nvar isArguments = _baseIsArguments(function() {\n return arguments;\n}()) ? _baseIsArguments : function(value) {\n return isObjectLike_1(value) && hasOwnProperty$6.call(value, \"callee\") && !propertyIsEnumerable$1.call(value, \"callee\");\n};\nvar isArray = Array.isArray;\nfunction stubFalse() {\n return false;\n}\nvar stubFalse_1 = stubFalse;\nvar isBuffer_1 = createCommonjsModule(function(module2, exports2) {\n var freeExports = exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && true && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var Buffer2 = moduleExports ? _root.Buffer : void 0;\n var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;\n var isBuffer = nativeIsBuffer || stubFalse_1;\n module2.exports = isBuffer;\n});\nvar MAX_SAFE_INTEGER = 9007199254740991;\nfunction isLength(value) {\n return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\nvar isLength_1 = isLength;\nvar argsTag$1 = \"[object Arguments]\";\nvar arrayTag$1 = \"[object Array]\";\nvar boolTag$1 = \"[object Boolean]\";\nvar dateTag$1 = \"[object Date]\";\nvar errorTag$1 = \"[object Error]\";\nvar funcTag = \"[object Function]\";\nvar mapTag$2 = \"[object Map]\";\nvar numberTag$1 = \"[object Number]\";\nvar objectTag$2 = \"[object Object]\";\nvar regexpTag$1 = \"[object RegExp]\";\nvar setTag$2 = \"[object Set]\";\nvar stringTag$1 = \"[object String]\";\nvar weakMapTag$1 = \"[object WeakMap]\";\nvar arrayBufferTag$1 = \"[object ArrayBuffer]\";\nvar dataViewTag$2 = \"[object DataView]\";\nvar float32Tag = \"[object Float32Array]\";\nvar float64Tag = \"[object Float64Array]\";\nvar int8Tag = \"[object Int8Array]\";\nvar int16Tag = \"[object Int16Array]\";\nvar int32Tag = \"[object Int32Array]\";\nvar uint8Tag = \"[object Uint8Array]\";\nvar uint8ClampedTag = \"[object Uint8ClampedArray]\";\nvar uint16Tag = \"[object Uint16Array]\";\nvar uint32Tag = \"[object Uint32Array]\";\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag$1] = typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$1] = typedArrayTags[dataViewTag$2] = typedArrayTags[dateTag$1] = typedArrayTags[errorTag$1] = typedArrayTags[funcTag] = typedArrayTags[mapTag$2] = typedArrayTags[numberTag$1] = typedArrayTags[objectTag$2] = typedArrayTags[regexpTag$1] = typedArrayTags[setTag$2] = typedArrayTags[stringTag$1] = typedArrayTags[weakMapTag$1] = false;\nfunction baseIsTypedArray(value) {\n return isObjectLike_1(value) && isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];\n}\nvar _baseIsTypedArray = baseIsTypedArray;\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\nvar _baseUnary = baseUnary;\nvar _nodeUtil = createCommonjsModule(function(module2, exports2) {\n var freeExports = exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && true && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var freeProcess = moduleExports && _freeGlobal.process;\n var nodeUtil = function() {\n try {\n var types = freeModule && freeModule.require && freeModule.require(\"util\").types;\n if (types) {\n return types;\n }\n return freeProcess && freeProcess.binding && freeProcess.binding(\"util\");\n } catch (e4) {\n }\n }();\n module2.exports = nodeUtil;\n});\nvar nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;\nvar isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;\nvar objectProto$7 = Object.prototype;\nvar hasOwnProperty$5 = objectProto$7.hasOwnProperty;\nvar objectProto$6 = Object.prototype;\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\nvar _overArg = overArg;\nvar nativeKeys = _overArg(Object.keys, Object);\nvar objectProto$5 = Object.prototype;\nvar hasOwnProperty$4 = objectProto$5.hasOwnProperty;\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\nvar _listCacheClear = listCacheClear;\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\nvar eq_1 = eq;\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_1(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\nvar _assocIndexOf = assocIndexOf;\nvar arrayProto = Array.prototype;\nvar splice = arrayProto.splice;\nfunction listCacheDelete(key) {\n var data = this.__data__, index7 = _assocIndexOf(data, key);\n if (index7 < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index7 == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index7, 1);\n }\n --this.size;\n return true;\n}\nvar _listCacheDelete = listCacheDelete;\nfunction listCacheGet(key) {\n var data = this.__data__, index7 = _assocIndexOf(data, key);\n return index7 < 0 ? void 0 : data[index7][1];\n}\nvar _listCacheGet = listCacheGet;\nfunction listCacheHas(key) {\n return _assocIndexOf(this.__data__, key) > -1;\n}\nvar _listCacheHas = listCacheHas;\nfunction listCacheSet(key, value) {\n var data = this.__data__, index7 = _assocIndexOf(data, key);\n if (index7 < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index7][1] = value;\n }\n return this;\n}\nvar _listCacheSet = listCacheSet;\nfunction ListCache(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n}\nListCache.prototype.clear = _listCacheClear;\nListCache.prototype[\"delete\"] = _listCacheDelete;\nListCache.prototype.get = _listCacheGet;\nListCache.prototype.has = _listCacheHas;\nListCache.prototype.set = _listCacheSet;\nvar _ListCache = ListCache;\nfunction stackClear() {\n this.__data__ = new _ListCache();\n this.size = 0;\n}\nvar _stackClear = stackClear;\nfunction stackDelete(key) {\n var data = this.__data__, result = data[\"delete\"](key);\n this.size = data.size;\n return result;\n}\nvar _stackDelete = stackDelete;\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\nvar _stackGet = stackGet;\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\nvar _stackHas = stackHas;\nvar Map2 = _getNative(_root, \"Map\");\nvar _Map = Map2;\nvar nativeCreate = _getNative(Object, \"create\");\nvar _nativeCreate = nativeCreate;\nfunction hashClear() {\n this.__data__ = _nativeCreate ? _nativeCreate(null) : {};\n this.size = 0;\n}\nvar _hashClear = hashClear;\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\nvar _hashDelete = hashDelete;\nvar HASH_UNDEFINED$2 = \"__lodash_hash_undefined__\";\nvar objectProto$4 = Object.prototype;\nvar hasOwnProperty$3 = objectProto$4.hasOwnProperty;\nfunction hashGet(key) {\n var data = this.__data__;\n if (_nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED$2 ? void 0 : result;\n }\n return hasOwnProperty$3.call(data, key) ? data[key] : void 0;\n}\nvar _hashGet = hashGet;\nvar objectProto$3 = Object.prototype;\nvar hasOwnProperty$2 = objectProto$3.hasOwnProperty;\nfunction hashHas(key) {\n var data = this.__data__;\n return _nativeCreate ? data[key] !== void 0 : hasOwnProperty$2.call(data, key);\n}\nvar _hashHas = hashHas;\nvar HASH_UNDEFINED$1 = \"__lodash_hash_undefined__\";\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = _nativeCreate && value === void 0 ? HASH_UNDEFINED$1 : value;\n return this;\n}\nvar _hashSet = hashSet;\nfunction Hash(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n}\nHash.prototype.clear = _hashClear;\nHash.prototype[\"delete\"] = _hashDelete;\nHash.prototype.get = _hashGet;\nHash.prototype.has = _hashHas;\nHash.prototype.set = _hashSet;\nvar _Hash = Hash;\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n \"hash\": new _Hash(),\n \"map\": new (_Map || _ListCache)(),\n \"string\": new _Hash()\n };\n}\nvar _mapCacheClear = mapCacheClear;\nfunction isKeyable(value) {\n var type = typeof value;\n return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n}\nvar _isKeyable = isKeyable;\nfunction getMapData(map2, key) {\n var data = map2.__data__;\n return _isKeyable(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n}\nvar _getMapData = getMapData;\nfunction mapCacheDelete(key) {\n var result = _getMapData(this, key)[\"delete\"](key);\n this.size -= result ? 1 : 0;\n return result;\n}\nvar _mapCacheDelete = mapCacheDelete;\nfunction mapCacheGet(key) {\n return _getMapData(this, key).get(key);\n}\nvar _mapCacheGet = mapCacheGet;\nfunction mapCacheHas(key) {\n return _getMapData(this, key).has(key);\n}\nvar _mapCacheHas = mapCacheHas;\nfunction mapCacheSet(key, value) {\n var data = _getMapData(this, key), size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\nvar _mapCacheSet = mapCacheSet;\nfunction MapCache(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n}\nMapCache.prototype.clear = _mapCacheClear;\nMapCache.prototype[\"delete\"] = _mapCacheDelete;\nMapCache.prototype.get = _mapCacheGet;\nMapCache.prototype.has = _mapCacheHas;\nMapCache.prototype.set = _mapCacheSet;\nvar _MapCache = MapCache;\nvar LARGE_ARRAY_SIZE = 200;\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof _ListCache) {\n var pairs = data.__data__;\n if (!_Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new _MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\nvar _stackSet = stackSet;\nfunction Stack(entries) {\n var data = this.__data__ = new _ListCache(entries);\n this.size = data.size;\n}\nStack.prototype.clear = _stackClear;\nStack.prototype[\"delete\"] = _stackDelete;\nStack.prototype.get = _stackGet;\nStack.prototype.has = _stackHas;\nStack.prototype.set = _stackSet;\nvar HASH_UNDEFINED = \"__lodash_hash_undefined__\";\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\nvar _setCacheAdd = setCacheAdd;\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\nvar _setCacheHas = setCacheHas;\nfunction SetCache(values2) {\n var index7 = -1, length = values2 == null ? 0 : values2.length;\n this.__data__ = new _MapCache();\n while (++index7 < length) {\n this.add(values2[index7]);\n }\n}\nSetCache.prototype.add = SetCache.prototype.push = _setCacheAdd;\nSetCache.prototype.has = _setCacheHas;\nvar Uint8Array2 = _root.Uint8Array;\nvar symbolProto$1 = _Symbol ? _Symbol.prototype : void 0;\nvar symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : void 0;\nvar objectProto$2 = Object.prototype;\nvar propertyIsEnumerable = objectProto$2.propertyIsEnumerable;\nvar objectProto$1 = Object.prototype;\nvar hasOwnProperty$1 = objectProto$1.hasOwnProperty;\nvar DataView = _getNative(_root, \"DataView\");\nvar _DataView = DataView;\nvar Promise$1 = _getNative(_root, \"Promise\");\nvar _Promise = Promise$1;\nvar Set2 = _getNative(_root, \"Set\");\nvar _Set = Set2;\nvar WeakMap2 = _getNative(_root, \"WeakMap\");\nvar _WeakMap = WeakMap2;\nvar mapTag = \"[object Map]\";\nvar objectTag$1 = \"[object Object]\";\nvar promiseTag = \"[object Promise]\";\nvar setTag = \"[object Set]\";\nvar weakMapTag = \"[object WeakMap]\";\nvar dataViewTag = \"[object DataView]\";\nvar dataViewCtorString = _toSource(_DataView);\nvar mapCtorString = _toSource(_Map);\nvar promiseCtorString = _toSource(_Promise);\nvar setCtorString = _toSource(_Set);\nvar weakMapCtorString = _toSource(_WeakMap);\nvar getTag = _baseGetTag;\nif (_DataView && getTag(new _DataView(new ArrayBuffer(1))) != dataViewTag || _Map && getTag(new _Map()) != mapTag || _Promise && getTag(_Promise.resolve()) != promiseTag || _Set && getTag(new _Set()) != setTag || _WeakMap && getTag(new _WeakMap()) != weakMapTag) {\n getTag = function(value) {\n var result = _baseGetTag(value), Ctor = result == objectTag$1 ? value.constructor : void 0, ctorString = Ctor ? _toSource(Ctor) : \"\";\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n return result;\n };\n}\nvar objectProto = Object.prototype;\nvar hasOwnProperty = objectProto.hasOwnProperty;\nvar FUNC_ERROR_TEXT = \"Expected a function\";\nfunction memoize(func, resolver) {\n if (typeof func != \"function\" || resolver != null && typeof resolver != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache2 = memoized.cache;\n if (cache2.has(key)) {\n return cache2.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache2.set(key, result) || cache2;\n return result;\n };\n memoized.cache = new (memoize.Cache || _MapCache)();\n return memoized;\n}\nmemoize.Cache = _MapCache;\nvar memoize_1 = memoize;\nvar MAX_MEMOIZE_SIZE = 500;\nfunction memoizeCapped(func) {\n var result = memoize_1(func, function(key) {\n if (cache2.size === MAX_MEMOIZE_SIZE) {\n cache2.clear();\n }\n return key;\n });\n var cache2 = result.cache;\n return result;\n}\nvar _memoizeCapped = memoizeCapped;\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g;\nvar stringToPath = _memoizeCapped(function(string2) {\n var result = [];\n if (string2.charCodeAt(0) === 46) {\n result.push(\"\");\n }\n string2.replace(rePropName, function(match2, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, \"$1\") : number || match2);\n });\n return result;\n});\nvar INFINITY$1 = 1 / 0;\nvar symbolProto = _Symbol ? _Symbol.prototype : void 0;\nvar symbolToString = symbolProto ? symbolProto.toString : void 0;\nvar INFINITY = 1 / 0;\n\n// node_modules/slate-history/dist/index.es.js\nvar History = {\n isHistory(value) {\n return isPlainObject(value) && Array.isArray(value.redos) && Array.isArray(value.undos) && (value.redos.length === 0 || Operation.isOperationList(value.redos[0])) && (value.undos.length === 0 || Operation.isOperationList(value.undos[0]));\n }\n};\nvar SAVING = /* @__PURE__ */ new WeakMap();\nvar MERGING = /* @__PURE__ */ new WeakMap();\nvar HistoryEditor = {\n isHistoryEditor(value) {\n return History.isHistory(value.history) && Editor.isEditor(value);\n },\n isMerging(editor) {\n return MERGING.get(editor);\n },\n isSaving(editor) {\n return SAVING.get(editor);\n },\n redo(editor) {\n editor.redo();\n },\n undo(editor) {\n editor.undo();\n },\n withoutMerging(editor, fn6) {\n var prev = HistoryEditor.isMerging(editor);\n MERGING.set(editor, false);\n fn6();\n MERGING.set(editor, prev);\n },\n withoutSaving(editor, fn6) {\n var prev = HistoryEditor.isSaving(editor);\n SAVING.set(editor, false);\n fn6();\n SAVING.set(editor, prev);\n }\n};\nvar withHistory = (editor) => {\n var e4 = editor;\n var {\n apply: apply2\n } = e4;\n e4.history = {\n undos: [],\n redos: []\n };\n e4.redo = () => {\n var {\n history\n } = e4;\n var {\n redos\n } = history;\n if (redos.length > 0) {\n var batch = redos[redos.length - 1];\n HistoryEditor.withoutSaving(e4, () => {\n Editor.withoutNormalizing(e4, () => {\n for (var op of batch) {\n e4.apply(op);\n }\n });\n });\n history.redos.pop();\n history.undos.push(batch);\n }\n };\n e4.undo = () => {\n var {\n history\n } = e4;\n var {\n undos\n } = history;\n if (undos.length > 0) {\n var batch = undos[undos.length - 1];\n HistoryEditor.withoutSaving(e4, () => {\n Editor.withoutNormalizing(e4, () => {\n var inverseOps = batch.map(Operation.inverse).reverse();\n for (var op of inverseOps) {\n e4.apply(op);\n }\n });\n });\n history.redos.push(batch);\n history.undos.pop();\n }\n };\n e4.apply = (op) => {\n var {\n operations,\n history\n } = e4;\n var {\n undos\n } = history;\n var lastBatch = undos[undos.length - 1];\n var lastOp = lastBatch && lastBatch[lastBatch.length - 1];\n var overwrite = shouldOverwrite(op, lastOp);\n var save = HistoryEditor.isSaving(e4);\n var merge2 = HistoryEditor.isMerging(e4);\n if (save == null) {\n save = shouldSave(op);\n }\n if (save) {\n if (merge2 == null) {\n if (lastBatch == null) {\n merge2 = false;\n } else if (operations.length !== 0) {\n merge2 = true;\n } else {\n merge2 = shouldMerge(op, lastOp) || overwrite;\n }\n }\n if (lastBatch && merge2) {\n if (overwrite) {\n lastBatch.pop();\n }\n lastBatch.push(op);\n } else {\n var batch = [op];\n undos.push(batch);\n }\n while (undos.length > 100) {\n undos.shift();\n }\n if (shouldClear(op)) {\n history.redos = [];\n }\n }\n apply2(op);\n };\n return e4;\n};\nvar shouldMerge = (op, prev) => {\n if (op.type === \"set_selection\") {\n return true;\n }\n if (prev && op.type === \"insert_text\" && prev.type === \"insert_text\" && op.offset === prev.offset + prev.text.length && Path.equals(op.path, prev.path)) {\n return true;\n }\n if (prev && op.type === \"remove_text\" && prev.type === \"remove_text\" && op.offset + op.text.length === prev.offset && Path.equals(op.path, prev.path)) {\n return true;\n }\n return false;\n};\nvar shouldSave = (op, prev) => {\n if (op.type === \"set_selection\" && (op.properties == null || op.newProperties == null)) {\n return false;\n }\n return true;\n};\nvar shouldOverwrite = (op, prev) => {\n if (prev && op.type === \"set_selection\" && prev.type === \"set_selection\") {\n return true;\n }\n return false;\n};\nvar shouldClear = (op) => {\n if (op.type === \"set_selection\") {\n return false;\n }\n return true;\n};\n\n// node_modules/jotai/esm/index.mjs\nvar import_react5 = require(\"react\");\nvar import_meta2 = {};\nvar SUSPENSE_PROMISE = Symbol();\nvar isSuspensePromise = (promise) => !!promise[SUSPENSE_PROMISE];\nvar isSuspensePromiseAlreadyCancelled = (suspensePromise) => !suspensePromise[SUSPENSE_PROMISE].c;\nvar cancelSuspensePromise = (suspensePromise) => {\n var _a, _b;\n (_b = (_a = suspensePromise[SUSPENSE_PROMISE]).c) == null ? void 0 : _b.call(_a);\n};\nvar isEqualSuspensePromise = (oldSuspensePromise, newSuspensePromise) => {\n const oldOriginalPromise = oldSuspensePromise[SUSPENSE_PROMISE].o;\n const newOriginalPromise = newSuspensePromise[SUSPENSE_PROMISE].o;\n return oldOriginalPromise === newOriginalPromise || oldSuspensePromise === newOriginalPromise || isSuspensePromise(oldOriginalPromise) && isEqualSuspensePromise(oldOriginalPromise, newSuspensePromise);\n};\nvar createSuspensePromise = (promise) => {\n const objectToAttach = {\n o: promise,\n c: null\n };\n const suspensePromise = new Promise((resolve) => {\n objectToAttach.c = () => {\n objectToAttach.c = null;\n resolve();\n };\n promise.then(objectToAttach.c, objectToAttach.c);\n });\n suspensePromise[SUSPENSE_PROMISE] = objectToAttach;\n return suspensePromise;\n};\nvar __defProp$1 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a5, b3) => {\n for (var prop in b3 || (b3 = {}))\n if (__hasOwnProp$1.call(b3, prop))\n __defNormalProp$1(a5, prop, b3[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b3)) {\n if (__propIsEnum$1.call(b3, prop))\n __defNormalProp$1(a5, prop, b3[prop]);\n }\n return a5;\n};\nvar __spreadProps$1 = (a5, b3) => __defProps$1(a5, __getOwnPropDescs$1(b3));\nvar hasInitialValue = (atom2) => \"init\" in atom2;\nvar READ_ATOM = \"r\";\nvar WRITE_ATOM = \"w\";\nvar COMMIT_ATOM = \"c\";\nvar SUBSCRIBE_ATOM = \"s\";\nvar RESTORE_ATOMS = \"h\";\nvar DEV_SUBSCRIBE_STATE = \"n\";\nvar DEV_GET_MOUNTED_ATOMS = \"l\";\nvar DEV_GET_ATOM_STATE = \"a\";\nvar DEV_GET_MOUNTED = \"m\";\nvar createStore4 = (initialValues) => {\n const committedAtomStateMap = /* @__PURE__ */ new WeakMap();\n const mountedMap = /* @__PURE__ */ new WeakMap();\n const pendingMap = /* @__PURE__ */ new Map();\n let stateListeners;\n let mountedAtoms;\n if ((import_meta2.env && import_meta2.env.MODE) !== \"production\") {\n stateListeners = /* @__PURE__ */ new Set();\n mountedAtoms = /* @__PURE__ */ new Set();\n }\n if (initialValues) {\n for (const [atom2, value] of initialValues) {\n const atomState = { v: value, r: 0, d: /* @__PURE__ */ new Map() };\n if ((import_meta2.env && import_meta2.env.MODE) !== \"production\") {\n Object.freeze(atomState);\n if (!hasInitialValue(atom2)) {\n console.warn(\"Found initial value for derived atom which can cause unexpected behavior\", atom2);\n }\n }\n committedAtomStateMap.set(atom2, atomState);\n }\n }\n const suspensePromiseCacheMap = /* @__PURE__ */ new WeakMap();\n const addSuspensePromiseToCache = (version3, atom2, suspensePromise) => {\n let cache2 = suspensePromiseCacheMap.get(atom2);\n if (!cache2) {\n cache2 = /* @__PURE__ */ new Map();\n suspensePromiseCacheMap.set(atom2, cache2);\n }\n suspensePromise.then(() => {\n if (cache2.get(version3) === suspensePromise) {\n cache2.delete(version3);\n if (!cache2.size) {\n suspensePromiseCacheMap.delete(atom2);\n }\n }\n });\n cache2.set(version3, suspensePromise);\n };\n const cancelAllSuspensePromiseInCache = (atom2) => {\n const versionSet = /* @__PURE__ */ new Set();\n const cache2 = suspensePromiseCacheMap.get(atom2);\n if (cache2) {\n suspensePromiseCacheMap.delete(atom2);\n cache2.forEach((suspensePromise, version3) => {\n cancelSuspensePromise(suspensePromise);\n versionSet.add(version3);\n });\n }\n return versionSet;\n };\n const versionedAtomStateMapMap = /* @__PURE__ */ new WeakMap();\n const getVersionedAtomStateMap = (version3) => {\n let versionedAtomStateMap = versionedAtomStateMapMap.get(version3);\n if (!versionedAtomStateMap) {\n versionedAtomStateMap = /* @__PURE__ */ new Map();\n versionedAtomStateMapMap.set(version3, versionedAtomStateMap);\n }\n return versionedAtomStateMap;\n };\n const getAtomState = (version3, atom2) => {\n if (version3) {\n const versionedAtomStateMap = getVersionedAtomStateMap(version3);\n let atomState = versionedAtomStateMap.get(atom2);\n if (!atomState) {\n atomState = getAtomState(version3.p, atom2);\n if (atomState) {\n if (\"p\" in atomState) {\n atomState.p.then(() => versionedAtomStateMap.delete(atom2));\n }\n versionedAtomStateMap.set(atom2, atomState);\n }\n }\n return atomState;\n }\n return committedAtomStateMap.get(atom2);\n };\n const setAtomState = (version3, atom2, atomState) => {\n if ((import_meta2.env && import_meta2.env.MODE) !== \"production\") {\n Object.freeze(atomState);\n }\n if (version3) {\n const versionedAtomStateMap = getVersionedAtomStateMap(version3);\n versionedAtomStateMap.set(atom2, atomState);\n } else {\n const prevAtomState = committedAtomStateMap.get(atom2);\n committedAtomStateMap.set(atom2, atomState);\n if (!pendingMap.has(atom2)) {\n pendingMap.set(atom2, prevAtomState);\n }\n }\n };\n const createReadDependencies = (version3, prevReadDependencies = /* @__PURE__ */ new Map(), dependencies) => {\n if (!dependencies) {\n return prevReadDependencies;\n }\n const readDependencies = /* @__PURE__ */ new Map();\n let changed = false;\n dependencies.forEach((atom2) => {\n var _a;\n const revision = ((_a = getAtomState(version3, atom2)) == null ? void 0 : _a.r) || 0;\n readDependencies.set(atom2, revision);\n if (prevReadDependencies.get(atom2) !== revision) {\n changed = true;\n }\n });\n if (prevReadDependencies.size === readDependencies.size && !changed) {\n return prevReadDependencies;\n }\n return readDependencies;\n };\n const setAtomValue = (version3, atom2, value, dependencies, suspensePromise) => {\n const atomState = getAtomState(version3, atom2);\n if (atomState) {\n if (suspensePromise && (!(\"p\" in atomState) || !isEqualSuspensePromise(atomState.p, suspensePromise))) {\n return atomState;\n }\n if (\"p\" in atomState) {\n cancelSuspensePromise(atomState.p);\n }\n }\n const nextAtomState = {\n v: value,\n r: (atomState == null ? void 0 : atomState.r) || 0,\n d: createReadDependencies(version3, atomState == null ? void 0 : atomState.d, dependencies)\n };\n if (!atomState || !(\"v\" in atomState) || !Object.is(atomState.v, value)) {\n ++nextAtomState.r;\n if (nextAtomState.d.has(atom2)) {\n nextAtomState.d = new Map(nextAtomState.d).set(atom2, nextAtomState.r);\n }\n } else if (nextAtomState.d !== atomState.d && (nextAtomState.d.size !== atomState.d.size || !Array.from(nextAtomState.d.keys()).every((a5) => atomState.d.has(a5)))) {\n Promise.resolve().then(() => {\n flushPending(version3);\n });\n }\n setAtomState(version3, atom2, nextAtomState);\n return nextAtomState;\n };\n const setAtomReadError = (version3, atom2, error, dependencies, suspensePromise) => {\n const atomState = getAtomState(version3, atom2);\n if (atomState) {\n if (suspensePromise && (!(\"p\" in atomState) || !isEqualSuspensePromise(atomState.p, suspensePromise))) {\n return atomState;\n }\n if (\"p\" in atomState) {\n cancelSuspensePromise(atomState.p);\n }\n }\n const nextAtomState = {\n e: error,\n r: (atomState == null ? void 0 : atomState.r) || 0,\n d: createReadDependencies(version3, atomState == null ? void 0 : atomState.d, dependencies)\n };\n setAtomState(version3, atom2, nextAtomState);\n return nextAtomState;\n };\n const setAtomSuspensePromise = (version3, atom2, suspensePromise, dependencies) => {\n const atomState = getAtomState(version3, atom2);\n if (atomState && \"p\" in atomState) {\n if (isEqualSuspensePromise(atomState.p, suspensePromise)) {\n return atomState;\n }\n cancelSuspensePromise(atomState.p);\n }\n addSuspensePromiseToCache(version3, atom2, suspensePromise);\n const nextAtomState = {\n p: suspensePromise,\n r: (atomState == null ? void 0 : atomState.r) || 0,\n d: createReadDependencies(version3, atomState == null ? void 0 : atomState.d, dependencies)\n };\n setAtomState(version3, atom2, nextAtomState);\n return nextAtomState;\n };\n const setAtomPromiseOrValue = (version3, atom2, promiseOrValue, dependencies) => {\n if (promiseOrValue instanceof Promise) {\n const suspensePromise = createSuspensePromise(promiseOrValue.then((value) => {\n setAtomValue(version3, atom2, value, dependencies, suspensePromise);\n }).catch((e4) => {\n if (e4 instanceof Promise) {\n if (isSuspensePromise(e4)) {\n return e4.then(() => {\n readAtomState(version3, atom2, true);\n });\n }\n return e4;\n }\n setAtomReadError(version3, atom2, e4, dependencies, suspensePromise);\n }));\n return setAtomSuspensePromise(version3, atom2, suspensePromise, dependencies);\n }\n return setAtomValue(version3, atom2, promiseOrValue, dependencies);\n };\n const setAtomInvalidated = (version3, atom2) => {\n const atomState = getAtomState(version3, atom2);\n if (atomState) {\n const nextAtomState = __spreadProps$1(__spreadValues$1({}, atomState), {\n i: atomState.r\n });\n setAtomState(version3, atom2, nextAtomState);\n } else if ((import_meta2.env && import_meta2.env.MODE) !== \"production\") {\n console.warn(\"[Bug] could not invalidate non existing atom\", atom2);\n }\n };\n const readAtomState = (version3, atom2, force) => {\n if (!force) {\n const atomState = getAtomState(version3, atom2);\n if (atomState) {\n if (atomState.r !== atomState.i && \"p\" in atomState && !isSuspensePromiseAlreadyCancelled(atomState.p)) {\n return atomState;\n }\n atomState.d.forEach((_3, a5) => {\n if (a5 !== atom2) {\n if (!mountedMap.has(a5)) {\n readAtomState(version3, a5);\n } else {\n const aState = getAtomState(version3, a5);\n if (aState && aState.r === aState.i) {\n readAtomState(version3, a5);\n }\n }\n }\n });\n if (Array.from(atomState.d).every(([a5, r5]) => {\n const aState = getAtomState(version3, a5);\n return aState && \"v\" in aState && aState.r === r5;\n })) {\n return atomState;\n }\n }\n }\n const dependencies = /* @__PURE__ */ new Set();\n try {\n const promiseOrValue = atom2.read((a5) => {\n dependencies.add(a5);\n const aState = a5 === atom2 ? getAtomState(version3, a5) : readAtomState(version3, a5);\n if (aState) {\n if (\"e\" in aState) {\n throw aState.e;\n }\n if (\"p\" in aState) {\n throw aState.p;\n }\n return aState.v;\n }\n if (hasInitialValue(a5)) {\n return a5.init;\n }\n throw new Error(\"no atom init\");\n });\n return setAtomPromiseOrValue(version3, atom2, promiseOrValue, dependencies);\n } catch (errorOrPromise) {\n if (errorOrPromise instanceof Promise) {\n const suspensePromise = createSuspensePromise(errorOrPromise);\n return setAtomSuspensePromise(version3, atom2, suspensePromise, dependencies);\n }\n return setAtomReadError(version3, atom2, errorOrPromise, dependencies);\n }\n };\n const readAtom = (readingAtom, version3) => {\n const atomState = readAtomState(version3, readingAtom);\n return atomState;\n };\n const addAtom = (addingAtom) => {\n let mounted = mountedMap.get(addingAtom);\n if (!mounted) {\n mounted = mountAtom(addingAtom);\n }\n return mounted;\n };\n const canUnmountAtom = (atom2, mounted) => !mounted.l.size && (!mounted.t.size || mounted.t.size === 1 && mounted.t.has(atom2));\n const delAtom = (deletingAtom) => {\n const mounted = mountedMap.get(deletingAtom);\n if (mounted && canUnmountAtom(deletingAtom, mounted)) {\n unmountAtom(deletingAtom);\n }\n };\n const invalidateDependents = (version3, atom2) => {\n const mounted = mountedMap.get(atom2);\n mounted == null ? void 0 : mounted.t.forEach((dependent) => {\n if (dependent !== atom2) {\n setAtomInvalidated(version3, dependent);\n invalidateDependents(version3, dependent);\n }\n });\n };\n const writeAtomState = (version3, atom2, update) => {\n let isSync = true;\n const writeGetter = (a5, options) => {\n const aState = readAtomState(version3, a5);\n if (\"e\" in aState) {\n throw aState.e;\n }\n if (\"p\" in aState) {\n if (options == null ? void 0 : options.unstable_promise) {\n return aState.p.then(() => writeGetter(a5, options));\n }\n if ((import_meta2.env && import_meta2.env.MODE) !== \"production\") {\n console.info(\"Reading pending atom state in write operation. We throw a promise for now.\", a5);\n }\n throw aState.p;\n }\n if (\"v\" in aState) {\n return aState.v;\n }\n if ((import_meta2.env && import_meta2.env.MODE) !== \"production\") {\n console.warn(\"[Bug] no value found while reading atom in write operation. This is probably a bug.\", a5);\n }\n throw new Error(\"no value found\");\n };\n const setter = (a5, v3) => {\n let promiseOrVoid2;\n if (a5 === atom2) {\n if (!hasInitialValue(a5)) {\n throw new Error(\"atom not writable\");\n }\n const versionSet = cancelAllSuspensePromiseInCache(a5);\n versionSet.forEach((cancelledVersion) => {\n if (cancelledVersion !== version3) {\n setAtomPromiseOrValue(cancelledVersion, a5, v3);\n }\n });\n setAtomPromiseOrValue(version3, a5, v3);\n invalidateDependents(version3, a5);\n } else {\n promiseOrVoid2 = writeAtomState(version3, a5, v3);\n }\n if (!isSync) {\n flushPending(version3);\n }\n return promiseOrVoid2;\n };\n const promiseOrVoid = atom2.write(writeGetter, setter, update);\n isSync = false;\n version3 = void 0;\n return promiseOrVoid;\n };\n const writeAtom = (writingAtom, update, version3) => {\n const promiseOrVoid = writeAtomState(version3, writingAtom, update);\n flushPending(version3);\n return promiseOrVoid;\n };\n const isActuallyWritableAtom = (atom2) => !!atom2.write;\n const mountAtom = (atom2, initialDependent) => {\n const mounted = {\n t: new Set(initialDependent && [initialDependent]),\n l: /* @__PURE__ */ new Set()\n };\n mountedMap.set(atom2, mounted);\n if ((import_meta2.env && import_meta2.env.MODE) !== \"production\") {\n mountedAtoms.add(atom2);\n }\n const atomState = readAtomState(void 0, atom2);\n atomState.d.forEach((_3, a5) => {\n const aMounted = mountedMap.get(a5);\n if (aMounted) {\n aMounted.t.add(atom2);\n } else {\n if (a5 !== atom2) {\n mountAtom(a5, atom2);\n }\n }\n });\n if (isActuallyWritableAtom(atom2) && atom2.onMount) {\n const setAtom = (update) => writeAtom(atom2, update);\n const onUnmount = atom2.onMount(setAtom);\n if (onUnmount) {\n mounted.u = onUnmount;\n }\n }\n return mounted;\n };\n const unmountAtom = (atom2) => {\n var _a;\n const onUnmount = (_a = mountedMap.get(atom2)) == null ? void 0 : _a.u;\n if (onUnmount) {\n onUnmount();\n }\n mountedMap.delete(atom2);\n if ((import_meta2.env && import_meta2.env.MODE) !== \"production\") {\n mountedAtoms.delete(atom2);\n }\n const atomState = getAtomState(void 0, atom2);\n if (atomState) {\n atomState.d.forEach((_3, a5) => {\n if (a5 !== atom2) {\n const mounted = mountedMap.get(a5);\n if (mounted) {\n mounted.t.delete(atom2);\n if (canUnmountAtom(a5, mounted)) {\n unmountAtom(a5);\n }\n }\n }\n });\n } else if ((import_meta2.env && import_meta2.env.MODE) !== \"production\") {\n console.warn(\"[Bug] could not find atom state to unmount\", atom2);\n }\n };\n const mountDependencies = (atom2, atomState, prevReadDependencies) => {\n const dependencies = new Set(atomState.d.keys());\n prevReadDependencies == null ? void 0 : prevReadDependencies.forEach((_3, a5) => {\n if (dependencies.has(a5)) {\n dependencies.delete(a5);\n return;\n }\n const mounted = mountedMap.get(a5);\n if (mounted) {\n mounted.t.delete(atom2);\n if (canUnmountAtom(a5, mounted)) {\n unmountAtom(a5);\n }\n }\n });\n dependencies.forEach((a5) => {\n const mounted = mountedMap.get(a5);\n if (mounted) {\n mounted.t.add(atom2);\n } else if (mountedMap.has(atom2)) {\n mountAtom(a5, atom2);\n }\n });\n };\n const flushPending = (version3) => {\n if (version3) {\n const versionedAtomStateMap = getVersionedAtomStateMap(version3);\n versionedAtomStateMap.forEach((atomState, atom2) => {\n if (atomState !== committedAtomStateMap.get(atom2)) {\n const mounted = mountedMap.get(atom2);\n mounted == null ? void 0 : mounted.l.forEach((listener) => listener(version3));\n }\n });\n return;\n }\n while (pendingMap.size) {\n const pending = Array.from(pendingMap);\n pendingMap.clear();\n pending.forEach(([atom2, prevAtomState]) => {\n const atomState = getAtomState(void 0, atom2);\n if (atomState && atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n mountDependencies(atom2, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n }\n const mounted = mountedMap.get(atom2);\n mounted == null ? void 0 : mounted.l.forEach((listener) => listener());\n });\n }\n if ((import_meta2.env && import_meta2.env.MODE) !== \"production\") {\n stateListeners.forEach((l4) => l4());\n }\n };\n const commitVersionedAtomStateMap = (version3) => {\n const versionedAtomStateMap = getVersionedAtomStateMap(version3);\n versionedAtomStateMap.forEach((atomState, atom2) => {\n const prevAtomState = committedAtomStateMap.get(atom2);\n if (atomState.r > ((prevAtomState == null ? void 0 : prevAtomState.r) || 0) || \"v\" in atomState && atomState.r === (prevAtomState == null ? void 0 : prevAtomState.r) && atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n committedAtomStateMap.set(atom2, atomState);\n if (atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n mountDependencies(atom2, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n }\n }\n });\n };\n const commitAtom = (_atom, version3) => {\n if (version3) {\n commitVersionedAtomStateMap(version3);\n }\n flushPending(void 0);\n };\n const subscribeAtom = (atom2, callback) => {\n const mounted = addAtom(atom2);\n const listeners = mounted.l;\n listeners.add(callback);\n return () => {\n listeners.delete(callback);\n delAtom(atom2);\n };\n };\n const restoreAtoms = (values2, version3) => {\n for (const [atom2, value] of values2) {\n if (hasInitialValue(atom2)) {\n setAtomPromiseOrValue(version3, atom2, value);\n invalidateDependents(version3, atom2);\n }\n }\n flushPending(version3);\n };\n if ((import_meta2.env && import_meta2.env.MODE) !== \"production\") {\n return {\n [READ_ATOM]: readAtom,\n [WRITE_ATOM]: writeAtom,\n [COMMIT_ATOM]: commitAtom,\n [SUBSCRIBE_ATOM]: subscribeAtom,\n [RESTORE_ATOMS]: restoreAtoms,\n [DEV_SUBSCRIBE_STATE]: (l4) => {\n stateListeners.add(l4);\n return () => {\n stateListeners.delete(l4);\n };\n },\n [DEV_GET_MOUNTED_ATOMS]: () => mountedAtoms.values(),\n [DEV_GET_ATOM_STATE]: (a5) => committedAtomStateMap.get(a5),\n [DEV_GET_MOUNTED]: (a5) => mountedMap.get(a5)\n };\n }\n return {\n [READ_ATOM]: readAtom,\n [WRITE_ATOM]: writeAtom,\n [COMMIT_ATOM]: commitAtom,\n [SUBSCRIBE_ATOM]: subscribeAtom,\n [RESTORE_ATOMS]: restoreAtoms\n };\n};\nvar createScopeContainer = (initialValues, unstable_createStore) => {\n const store = unstable_createStore ? unstable_createStore(initialValues).SECRET_INTERNAL_store : createStore4(initialValues);\n return { s: store };\n};\nvar ScopeContextMap = /* @__PURE__ */ new Map();\nvar getScopeContext = (scope2) => {\n if (!ScopeContextMap.has(scope2)) {\n ScopeContextMap.set(scope2, (0, import_react5.createContext)(createScopeContainer()));\n }\n return ScopeContextMap.get(scope2);\n};\nvar __defProp3 = Object.defineProperty;\nvar __defProps2 = Object.defineProperties;\nvar __getOwnPropDescs2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp3 = (obj, key, value) => key in obj ? __defProp3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues3 = (a5, b3) => {\n for (var prop in b3 || (b3 = {}))\n if (__hasOwnProp3.call(b3, prop))\n __defNormalProp3(a5, prop, b3[prop]);\n if (__getOwnPropSymbols3)\n for (var prop of __getOwnPropSymbols3(b3)) {\n if (__propIsEnum3.call(b3, prop))\n __defNormalProp3(a5, prop, b3[prop]);\n }\n return a5;\n};\nvar __spreadProps2 = (a5, b3) => __defProps2(a5, __getOwnPropDescs2(b3));\nvar atomToPrintable = (atom2) => atom2.debugLabel || atom2.toString();\nvar stateToPrintable = ([store, atoms]) => Object.fromEntries(atoms.flatMap((atom2) => {\n var _a, _b;\n const mounted = (_a = store[DEV_GET_MOUNTED]) == null ? void 0 : _a.call(store, atom2);\n if (!mounted) {\n return [];\n }\n const dependents = mounted.t;\n const atomState = ((_b = store[DEV_GET_ATOM_STATE]) == null ? void 0 : _b.call(store, atom2)) || {};\n return [\n [\n atomToPrintable(atom2),\n __spreadProps2(__spreadValues3(__spreadValues3(__spreadValues3({}, \"e\" in atomState && { error: atomState.e }), \"p\" in atomState && { promise: atomState.p }), \"v\" in atomState && { value: atomState.v }), {\n dependents: Array.from(dependents).map(atomToPrintable)\n })\n ]\n ];\n}));\nvar useDebugState = (scopeContainer) => {\n const { s: store } = scopeContainer;\n const [atoms, setAtoms] = (0, import_react5.useState)([]);\n (0, import_react5.useEffect)(() => {\n var _a;\n const callback = () => {\n var _a2;\n setAtoms(Array.from(((_a2 = store[DEV_GET_MOUNTED_ATOMS]) == null ? void 0 : _a2.call(store)) || []));\n };\n const unsubscribe = (_a = store[DEV_SUBSCRIBE_STATE]) == null ? void 0 : _a.call(store, callback);\n callback();\n return unsubscribe;\n }, [store]);\n (0, import_react5.useDebugValue)([store, atoms], stateToPrintable);\n};\nvar Provider = ({\n children,\n initialValues,\n scope: scope2,\n unstable_createStore,\n unstable_enableVersionedWrite\n}) => {\n const [version3, setVersion] = (0, import_react5.useState)();\n (0, import_react5.useEffect)(() => {\n if (version3) {\n scopeContainerRef.current.s[COMMIT_ATOM](null, version3);\n delete version3.p;\n }\n }, [version3]);\n const scopeContainerRef = (0, import_react5.useRef)();\n if (!scopeContainerRef.current) {\n scopeContainerRef.current = createScopeContainer(initialValues, unstable_createStore);\n if (unstable_enableVersionedWrite) {\n scopeContainerRef.current.w = (write3) => {\n setVersion((parentVersion) => {\n const nextVersion = parentVersion ? { p: parentVersion } : {};\n write3(nextVersion);\n return nextVersion;\n });\n };\n }\n }\n if ((import_meta2.env && import_meta2.env.MODE) !== \"production\" && !unstable_enableVersionedWrite) {\n useDebugState(scopeContainerRef.current);\n }\n const ScopeContainerContext = getScopeContext(scope2);\n return (0, import_react5.createElement)(ScopeContainerContext.Provider, {\n value: scopeContainerRef.current\n }, children);\n};\nvar keyCount = 0;\nfunction atom(read3, write3) {\n const key = `atom${++keyCount}`;\n const config3 = {\n toString: () => key\n };\n if (typeof read3 === \"function\") {\n config3.read = read3;\n } else {\n config3.init = read3;\n config3.read = (get3) => get3(config3);\n config3.write = (get3, set, update) => set(config3, typeof update === \"function\" ? update(get3(config3)) : update);\n }\n if (write3) {\n config3.write = write3;\n }\n return config3;\n}\nfunction useAtomValue(atom2, scope2) {\n const ScopeContext = getScopeContext(scope2);\n const { s: store } = (0, import_react5.useContext)(ScopeContext);\n const getAtomValue = (0, import_react5.useCallback)((version22) => {\n const atomState = store[READ_ATOM](atom2, version22);\n if (\"e\" in atomState) {\n throw atomState.e;\n }\n if (\"p\" in atomState) {\n throw atomState.p;\n }\n if (\"v\" in atomState) {\n return atomState.v;\n }\n throw new Error(\"no atom value\");\n }, [store, atom2]);\n const [[version3, value, atomFromUseReducer], rerenderIfChanged] = (0, import_react5.useReducer)((0, import_react5.useCallback)((prev, nextVersion) => {\n const nextValue = getAtomValue(nextVersion);\n if (Object.is(prev[1], nextValue) && prev[2] === atom2) {\n return prev;\n }\n return [nextVersion, nextValue, atom2];\n }, [getAtomValue, atom2]), void 0, () => {\n const initialVersion = void 0;\n const initialValue = getAtomValue(initialVersion);\n return [initialVersion, initialValue, atom2];\n });\n if (atomFromUseReducer !== atom2) {\n rerenderIfChanged(void 0);\n }\n (0, import_react5.useEffect)(() => {\n const unsubscribe = store[SUBSCRIBE_ATOM](atom2, rerenderIfChanged);\n rerenderIfChanged(void 0);\n return unsubscribe;\n }, [store, atom2]);\n (0, import_react5.useEffect)(() => {\n store[COMMIT_ATOM](atom2, version3);\n });\n (0, import_react5.useDebugValue)(value);\n return value;\n}\nfunction useSetAtom(atom2, scope2) {\n const ScopeContext = getScopeContext(scope2);\n const { s: store, w: versionedWrite } = (0, import_react5.useContext)(ScopeContext);\n const setAtom = (0, import_react5.useCallback)((update) => {\n if ((import_meta2.env && import_meta2.env.MODE) !== \"production\" && !(\"write\" in atom2)) {\n throw new Error(\"not writable atom\");\n }\n const write3 = (version3) => store[WRITE_ATOM](atom2, update, version3);\n return versionedWrite ? versionedWrite(write3) : write3();\n }, [store, versionedWrite, atom2]);\n return setAtom;\n}\nfunction useAtom(atom2, scope2) {\n if (\"scope\" in atom2) {\n console.warn(\"atom.scope is deprecated. Please do useAtom(atom, scope) instead.\");\n scope2 = atom2.scope;\n }\n return [\n useAtomValue(atom2, scope2),\n useSetAtom(atom2, scope2)\n ];\n}\n\n// node_modules/clsx/dist/clsx.m.js\nfunction toVal(mix) {\n var k3, y3, str = \"\";\n if (typeof mix === \"string\" || typeof mix === \"number\") {\n str += mix;\n } else if (typeof mix === \"object\") {\n if (Array.isArray(mix)) {\n for (k3 = 0; k3 < mix.length; k3++) {\n if (mix[k3]) {\n if (y3 = toVal(mix[k3])) {\n str && (str += \" \");\n str += y3;\n }\n }\n }\n } else {\n for (k3 in mix) {\n if (mix[k3]) {\n str && (str += \" \");\n str += k3;\n }\n }\n }\n }\n return str;\n}\nfunction clsx_m_default() {\n var i3 = 0, tmp, x3, str = \"\";\n while (i3 < arguments.length) {\n if (tmp = arguments[i3++]) {\n if (x3 = toVal(tmp)) {\n str && (str += \" \");\n str += x3;\n }\n }\n }\n return str;\n}\n\n// node_modules/@udecode/plate-core/dist/index.es.js\nvar import_server;\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nvar createNodeHOC = (HOC) => (Component2, props) => (childrenProps) => /* @__PURE__ */ import_react6.default.createElement(HOC, _extends({}, childrenProps, props), /* @__PURE__ */ import_react6.default.createElement(Component2, childrenProps));\nvar isArray2 = Array.isArray;\nvar isArray_1 = isArray2;\nfunction castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray_1(value) ? value : [value];\n}\nvar castArray_1 = castArray;\nvar createHOC = (withHOC2) => {\n return (components2, options) => {\n const _components = __spreadValues({}, components2);\n const optionsByKey = {};\n const optionsList = castArray_1(options);\n optionsList.forEach((_a) => {\n var _b = _a, {\n key,\n keys: keys3\n } = _b, opt = __objRest(_b, [\n \"key\",\n \"keys\"\n ]);\n const _keys = key ? [key] : keys3 !== null && keys3 !== void 0 ? keys3 : Object.keys(_components);\n _keys.forEach((_key) => {\n optionsByKey[_key] = __spreadValues(__spreadValues({}, optionsByKey[_key]), opt);\n });\n });\n Object.keys(optionsByKey).forEach((key) => {\n if (!_components[key])\n return;\n _components[key] = withHOC2(_components[key], optionsByKey[key]);\n });\n return _components;\n };\n};\nvar createNodesHOC = (HOC) => {\n return createHOC(createNodeHOC(HOC));\n};\nvar createNodesWithHOC = (withHOC2) => {\n return createHOC(withHOC2);\n};\nvar withHOC = (HOC, Component2, hocProps) => (props) => /* @__PURE__ */ import_react6.default.createElement(HOC, hocProps, /* @__PURE__ */ import_react6.default.createElement(Component2, props));\nvar withProps = (Component2, props) => (_props) => /* @__PURE__ */ import_react6.default.createElement(Component2, _extends({}, _props, props));\nvar withProviders = (...providers) => (WrappedComponent) => (props) => providers.reduceRight((acc, prov) => {\n let Provider2 = prov;\n if (Array.isArray(prov)) {\n [Provider2] = prov;\n return /* @__PURE__ */ import_react6.default.createElement(Provider2, prov[1], acc);\n }\n return /* @__PURE__ */ import_react6.default.createElement(Provider2, null, acc);\n}, /* @__PURE__ */ import_react6.default.createElement(WrappedComponent, props));\nvar getNodeEntry = (editor, at, options) => Editor.node(editor, at, options);\nvar getPath = (editor, at, options) => Editor.path(editor, at, options);\nvar isVoid = (editor, value) => {\n return Editor.isVoid(editor, value);\n};\nvar getNodeDescendants = (root5, options) => Node2.descendants(root5, options);\nvar isBlock = (editor, value) => Editor.isBlock(editor, value);\nvar match = (obj, path, predicate) => {\n if (!predicate)\n return true;\n if (typeof predicate === \"object\") {\n return Object.entries(predicate).every(([key, value]) => {\n const values2 = castArray_1(value);\n return values2.includes(obj[key]);\n });\n }\n return predicate(obj, path);\n};\nvar getQueryOptions = (editor, options = {}) => {\n const {\n match: _match,\n block\n } = options;\n return __spreadProps(__spreadValues({}, options), {\n match: _match || block ? (n6, path) => match(n6, path, _match) && (!block || isBlock(editor, n6)) : void 0\n });\n};\nvar findDescendant = (editor, options) => {\n try {\n const {\n match: _match,\n at = editor.selection,\n reverse = false,\n voids = false\n } = options;\n if (!at)\n return;\n let from;\n let to;\n if (Span.isSpan(at)) {\n [from, to] = at;\n } else if (Range.isRange(at)) {\n const first = getPath(editor, at, {\n edge: \"start\"\n });\n const last2 = getPath(editor, at, {\n edge: \"end\"\n });\n from = reverse ? last2 : first;\n to = reverse ? first : last2;\n }\n let root5 = [editor, []];\n if (Path.isPath(at)) {\n root5 = getNodeEntry(editor, at);\n }\n const nodeEntries = getNodeDescendants(root5[0], {\n reverse,\n from,\n to,\n pass: ([n6]) => voids ? false : isVoid(editor, n6)\n });\n for (const [node, path] of nodeEntries) {\n if (match(node, path, _match)) {\n return [node, at.concat(path)];\n }\n }\n } catch (error) {\n return void 0;\n }\n};\nvar unhangRange = (editor, range, options = {}) => {\n const {\n voids,\n unhang = true\n } = options;\n if (Range.isRange(range) && unhang) {\n return Editor.unhangRange(editor, range, {\n voids\n });\n }\n};\nvar getNodeEntries = (editor, options) => {\n unhangRange(editor, options === null || options === void 0 ? void 0 : options.at, options);\n return Editor.nodes(editor, getQueryOptions(editor, options));\n};\nvar findNode = (editor, options = {}) => {\n try {\n const nodeEntries = getNodeEntries(editor, __spreadValues({\n at: editor.selection || []\n }, getQueryOptions(editor, options)));\n for (const [node, path] of nodeEntries) {\n return [node, path];\n }\n } catch (error) {\n return void 0;\n }\n};\nvar getAboveNode = (editor, options) => Editor.above(editor, getQueryOptions(editor, options));\nvar getBlockAbove = (editor, options = {}) => getAboveNode(editor, __spreadProps(__spreadValues({}, options), {\n block: true\n}));\nvar isAncestor = (value) => Element2.isAncestor(value);\nvar getChildren = (nodeEntry) => {\n const [node, path] = nodeEntry;\n if (isAncestor(node)) {\n const {\n children\n } = node;\n return children.map((child, index7) => {\n const childPath = path.concat([index7]);\n return [child, childPath];\n });\n }\n return [];\n};\nvar isText = (value) => Text.isText(value);\nvar getLastChild$1 = (nodeEntry) => {\n const [node, path] = nodeEntry;\n if (isText(node))\n return null;\n if (!node.children.length)\n return null;\n const children = node.children;\n return [children[children.length - 1], path.concat([children.length - 1])];\n};\nvar getLastChildPath = (nodeEntry) => {\n const lastChild = getLastChild$1(nodeEntry);\n if (!lastChild)\n return nodeEntry[1].concat([-1]);\n return lastChild[1];\n};\nvar isLastChild = (parentEntry, childPath) => {\n const lastChildPath = getLastChildPath(parentEntry);\n return Path.equals(lastChildPath, childPath);\n};\nvar getLastNode = (editor, at) => Editor.last(editor, at);\nvar getLastChild = (node, level) => {\n if (!(level + 1) || !isAncestor(node))\n return node;\n const {\n children\n } = node;\n const lastNode = children[children.length - 1];\n return getLastChild(lastNode, level - 1);\n};\nvar getLastNodeByLevel = (editor, level) => {\n const {\n children\n } = editor;\n const lastNode = children[children.length - 1];\n if (!lastNode)\n return;\n const [, lastPath] = getLastNode(editor, []);\n return [getLastChild(lastNode, level - 1), lastPath.slice(0, level + 1)];\n};\nvar getMarks = (editor) => Editor.marks(editor);\nvar getMark = (editor, type) => {\n if (!editor)\n return;\n const marks3 = getMarks(editor);\n return marks3 === null || marks3 === void 0 ? void 0 : marks3[type];\n};\nvar getNextSiblingNodes = (ancestorEntry, path) => {\n const [ancestor, ancestorPath] = ancestorEntry;\n const leafIndex = path[ancestorPath.length];\n const siblings = [];\n if (leafIndex + 1 < ancestor.children.length) {\n for (let i3 = leafIndex + 1; i3 < ancestor.children.length; i3++) {\n siblings.push(ancestor.children[i3]);\n }\n }\n return siblings;\n};\nfunction arrayMap(array, iteratee) {\n var index7 = -1, length = array == null ? 0 : array.length, result = Array(length);\n while (++index7 < length) {\n result[index7] = iteratee(array[index7], index7, array);\n }\n return result;\n}\nvar _arrayMap = arrayMap;\nfunction listCacheClear2() {\n this.__data__ = [];\n this.size = 0;\n}\nvar _listCacheClear2 = listCacheClear2;\nfunction eq2(value, other) {\n return value === other || value !== value && other !== other;\n}\nvar eq_12 = eq2;\nfunction assocIndexOf2(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_12(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\nvar _assocIndexOf2 = assocIndexOf2;\nvar arrayProto2 = Array.prototype;\nvar splice2 = arrayProto2.splice;\nfunction listCacheDelete2(key) {\n var data = this.__data__, index7 = _assocIndexOf2(data, key);\n if (index7 < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index7 == lastIndex) {\n data.pop();\n } else {\n splice2.call(data, index7, 1);\n }\n --this.size;\n return true;\n}\nvar _listCacheDelete2 = listCacheDelete2;\nfunction listCacheGet2(key) {\n var data = this.__data__, index7 = _assocIndexOf2(data, key);\n return index7 < 0 ? void 0 : data[index7][1];\n}\nvar _listCacheGet2 = listCacheGet2;\nfunction listCacheHas2(key) {\n return _assocIndexOf2(this.__data__, key) > -1;\n}\nvar _listCacheHas2 = listCacheHas2;\nfunction listCacheSet2(key, value) {\n var data = this.__data__, index7 = _assocIndexOf2(data, key);\n if (index7 < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index7][1] = value;\n }\n return this;\n}\nvar _listCacheSet2 = listCacheSet2;\nfunction ListCache2(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n}\nListCache2.prototype.clear = _listCacheClear2;\nListCache2.prototype[\"delete\"] = _listCacheDelete2;\nListCache2.prototype.get = _listCacheGet2;\nListCache2.prototype.has = _listCacheHas2;\nListCache2.prototype.set = _listCacheSet2;\nvar _ListCache2 = ListCache2;\nfunction stackClear2() {\n this.__data__ = new _ListCache2();\n this.size = 0;\n}\nvar _stackClear2 = stackClear2;\nfunction stackDelete2(key) {\n var data = this.__data__, result = data[\"delete\"](key);\n this.size = data.size;\n return result;\n}\nvar _stackDelete2 = stackDelete2;\nfunction stackGet2(key) {\n return this.__data__.get(key);\n}\nvar _stackGet2 = stackGet2;\nfunction stackHas2(key) {\n return this.__data__.has(key);\n}\nvar _stackHas2 = stackHas2;\nvar commonjsGlobal2 = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nfunction unwrapExports(x3) {\n return x3 && x3.__esModule && Object.prototype.hasOwnProperty.call(x3, \"default\") ? x3[\"default\"] : x3;\n}\nfunction createCommonjsModule2(fn6, module2) {\n return module2 = { exports: {} }, fn6(module2, module2.exports), module2.exports;\n}\nvar freeGlobal2 = typeof commonjsGlobal2 == \"object\" && commonjsGlobal2 && commonjsGlobal2.Object === Object && commonjsGlobal2;\nvar _freeGlobal2 = freeGlobal2;\nvar freeSelf2 = typeof self == \"object\" && self && self.Object === Object && self;\nvar root2 = _freeGlobal2 || freeSelf2 || Function(\"return this\")();\nvar _root2 = root2;\nvar Symbol$1 = _root2.Symbol;\nvar _Symbol2 = Symbol$1;\nvar objectProto$g = Object.prototype;\nvar hasOwnProperty$d = objectProto$g.hasOwnProperty;\nvar nativeObjectToString$12 = objectProto$g.toString;\nvar symToStringTag$12 = _Symbol2 ? _Symbol2.toStringTag : void 0;\nfunction getRawTag2(value) {\n var isOwn = hasOwnProperty$d.call(value, symToStringTag$12), tag = value[symToStringTag$12];\n try {\n value[symToStringTag$12] = void 0;\n var unmasked = true;\n } catch (e4) {\n }\n var result = nativeObjectToString$12.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag$12] = tag;\n } else {\n delete value[symToStringTag$12];\n }\n }\n return result;\n}\nvar _getRawTag2 = getRawTag2;\nvar objectProto$f = Object.prototype;\nvar nativeObjectToString2 = objectProto$f.toString;\nfunction objectToString2(value) {\n return nativeObjectToString2.call(value);\n}\nvar _objectToString2 = objectToString2;\nvar nullTag2 = \"[object Null]\";\nvar undefinedTag2 = \"[object Undefined]\";\nvar symToStringTag2 = _Symbol2 ? _Symbol2.toStringTag : void 0;\nfunction baseGetTag2(value) {\n if (value == null) {\n return value === void 0 ? undefinedTag2 : nullTag2;\n }\n return symToStringTag2 && symToStringTag2 in Object(value) ? _getRawTag2(value) : _objectToString2(value);\n}\nvar _baseGetTag2 = baseGetTag2;\nfunction isObject$1(value) {\n var type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\nvar isObject_12 = isObject$1;\nvar asyncTag2 = \"[object AsyncFunction]\";\nvar funcTag$2 = \"[object Function]\";\nvar genTag$1 = \"[object GeneratorFunction]\";\nvar proxyTag2 = \"[object Proxy]\";\nfunction isFunction2(value) {\n if (!isObject_12(value)) {\n return false;\n }\n var tag = _baseGetTag2(value);\n return tag == funcTag$2 || tag == genTag$1 || tag == asyncTag2 || tag == proxyTag2;\n}\nvar isFunction_12 = isFunction2;\nvar coreJsData2 = _root2[\"__core-js_shared__\"];\nvar _coreJsData2 = coreJsData2;\nvar maskSrcKey2 = function() {\n var uid = /[^.]+$/.exec(_coreJsData2 && _coreJsData2.keys && _coreJsData2.keys.IE_PROTO || \"\");\n return uid ? \"Symbol(src)_1.\" + uid : \"\";\n}();\nfunction isMasked2(func) {\n return !!maskSrcKey2 && maskSrcKey2 in func;\n}\nvar _isMasked2 = isMasked2;\nvar funcProto$2 = Function.prototype;\nvar funcToString$2 = funcProto$2.toString;\nfunction toSource2(func) {\n if (func != null) {\n try {\n return funcToString$2.call(func);\n } catch (e4) {\n }\n try {\n return func + \"\";\n } catch (e4) {\n }\n }\n return \"\";\n}\nvar _toSource2 = toSource2;\nvar reRegExpChar2 = /[\\\\^$.*+?()[\\]{}|]/g;\nvar reIsHostCtor2 = /^\\[object .+?Constructor\\]$/;\nvar funcProto$12 = Function.prototype;\nvar objectProto$e = Object.prototype;\nvar funcToString$12 = funcProto$12.toString;\nvar hasOwnProperty$c = objectProto$e.hasOwnProperty;\nvar reIsNative2 = RegExp(\"^\" + funcToString$12.call(hasOwnProperty$c).replace(reRegExpChar2, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\");\nfunction baseIsNative2(value) {\n if (!isObject_12(value) || _isMasked2(value)) {\n return false;\n }\n var pattern = isFunction_12(value) ? reIsNative2 : reIsHostCtor2;\n return pattern.test(_toSource2(value));\n}\nvar _baseIsNative2 = baseIsNative2;\nfunction getValue2(object, key) {\n return object == null ? void 0 : object[key];\n}\nvar _getValue2 = getValue2;\nfunction getNative2(object, key) {\n var value = _getValue2(object, key);\n return _baseIsNative2(value) ? value : void 0;\n}\nvar _getNative2 = getNative2;\nvar Map3 = _getNative2(_root2, \"Map\");\nvar _Map2 = Map3;\nvar nativeCreate2 = _getNative2(Object, \"create\");\nvar _nativeCreate2 = nativeCreate2;\nfunction hashClear2() {\n this.__data__ = _nativeCreate2 ? _nativeCreate2(null) : {};\n this.size = 0;\n}\nvar _hashClear2 = hashClear2;\nfunction hashDelete2(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\nvar _hashDelete2 = hashDelete2;\nvar HASH_UNDEFINED$22 = \"__lodash_hash_undefined__\";\nvar objectProto$d = Object.prototype;\nvar hasOwnProperty$b = objectProto$d.hasOwnProperty;\nfunction hashGet2(key) {\n var data = this.__data__;\n if (_nativeCreate2) {\n var result = data[key];\n return result === HASH_UNDEFINED$22 ? void 0 : result;\n }\n return hasOwnProperty$b.call(data, key) ? data[key] : void 0;\n}\nvar _hashGet2 = hashGet2;\nvar objectProto$c = Object.prototype;\nvar hasOwnProperty$a = objectProto$c.hasOwnProperty;\nfunction hashHas2(key) {\n var data = this.__data__;\n return _nativeCreate2 ? data[key] !== void 0 : hasOwnProperty$a.call(data, key);\n}\nvar _hashHas2 = hashHas2;\nvar HASH_UNDEFINED$12 = \"__lodash_hash_undefined__\";\nfunction hashSet2(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = _nativeCreate2 && value === void 0 ? HASH_UNDEFINED$12 : value;\n return this;\n}\nvar _hashSet2 = hashSet2;\nfunction Hash2(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n}\nHash2.prototype.clear = _hashClear2;\nHash2.prototype[\"delete\"] = _hashDelete2;\nHash2.prototype.get = _hashGet2;\nHash2.prototype.has = _hashHas2;\nHash2.prototype.set = _hashSet2;\nvar _Hash2 = Hash2;\nfunction mapCacheClear2() {\n this.size = 0;\n this.__data__ = {\n \"hash\": new _Hash2(),\n \"map\": new (_Map2 || _ListCache2)(),\n \"string\": new _Hash2()\n };\n}\nvar _mapCacheClear2 = mapCacheClear2;\nfunction isKeyable2(value) {\n var type = typeof value;\n return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n}\nvar _isKeyable2 = isKeyable2;\nfunction getMapData2(map2, key) {\n var data = map2.__data__;\n return _isKeyable2(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n}\nvar _getMapData2 = getMapData2;\nfunction mapCacheDelete2(key) {\n var result = _getMapData2(this, key)[\"delete\"](key);\n this.size -= result ? 1 : 0;\n return result;\n}\nvar _mapCacheDelete2 = mapCacheDelete2;\nfunction mapCacheGet2(key) {\n return _getMapData2(this, key).get(key);\n}\nvar _mapCacheGet2 = mapCacheGet2;\nfunction mapCacheHas2(key) {\n return _getMapData2(this, key).has(key);\n}\nvar _mapCacheHas2 = mapCacheHas2;\nfunction mapCacheSet2(key, value) {\n var data = _getMapData2(this, key), size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\nvar _mapCacheSet2 = mapCacheSet2;\nfunction MapCache2(entries) {\n var index7 = -1, length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index7 < length) {\n var entry = entries[index7];\n this.set(entry[0], entry[1]);\n }\n}\nMapCache2.prototype.clear = _mapCacheClear2;\nMapCache2.prototype[\"delete\"] = _mapCacheDelete2;\nMapCache2.prototype.get = _mapCacheGet2;\nMapCache2.prototype.has = _mapCacheHas2;\nMapCache2.prototype.set = _mapCacheSet2;\nvar _MapCache2 = MapCache2;\nvar LARGE_ARRAY_SIZE2 = 200;\nfunction stackSet2(key, value) {\n var data = this.__data__;\n if (data instanceof _ListCache2) {\n var pairs = data.__data__;\n if (!_Map2 || pairs.length < LARGE_ARRAY_SIZE2 - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new _MapCache2(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\nvar _stackSet2 = stackSet2;\nfunction Stack2(entries) {\n var data = this.__data__ = new _ListCache2(entries);\n this.size = data.size;\n}\nStack2.prototype.clear = _stackClear2;\nStack2.prototype[\"delete\"] = _stackDelete2;\nStack2.prototype.get = _stackGet2;\nStack2.prototype.has = _stackHas2;\nStack2.prototype.set = _stackSet2;\nvar _Stack = Stack2;\nvar HASH_UNDEFINED2 = \"__lodash_hash_undefined__\";\nfunction setCacheAdd2(value) {\n this.__data__.set(value, HASH_UNDEFINED2);\n return this;\n}\nvar _setCacheAdd2 = setCacheAdd2;\nfunction setCacheHas2(value) {\n return this.__data__.has(value);\n}\nvar _setCacheHas2 = setCacheHas2;\nfunction SetCache2(values2) {\n var index7 = -1, length = values2 == null ? 0 : values2.length;\n this.__data__ = new _MapCache2();\n while (++index7 < length) {\n this.add(values2[index7]);\n }\n}\nSetCache2.prototype.add = SetCache2.prototype.push = _setCacheAdd2;\nSetCache2.prototype.has = _setCacheHas2;\nvar _SetCache = SetCache2;\nfunction arraySome(array, predicate) {\n var index7 = -1, length = array == null ? 0 : array.length;\n while (++index7 < length) {\n if (predicate(array[index7], index7, array)) {\n return true;\n }\n }\n return false;\n}\nvar _arraySome = arraySome;\nfunction cacheHas(cache2, key) {\n return cache2.has(key);\n}\nvar _cacheHas = cacheHas;\nvar COMPARE_PARTIAL_FLAG$5 = 1;\nvar COMPARE_UNORDERED_FLAG$3 = 2;\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$5, arrLength = array.length, othLength = other.length;\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index7 = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG$3 ? new _SetCache() : void 0;\n stack.set(array, other);\n stack.set(other, array);\n while (++index7 < arrLength) {\n var arrValue = array[index7], othValue = other[index7];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index7, other, array, stack) : customizer(arrValue, othValue, index7, array, other, stack);\n }\n if (compared !== void 0) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n if (seen) {\n if (!_arraySome(other, function(othValue2, othIndex) {\n if (!_cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack[\"delete\"](array);\n stack[\"delete\"](other);\n return result;\n}\nvar _equalArrays = equalArrays;\nvar Uint8Array3 = _root2.Uint8Array;\nvar _Uint8Array = Uint8Array3;\nfunction mapToArray(map2) {\n var index7 = -1, result = Array(map2.size);\n map2.forEach(function(value, key) {\n result[++index7] = [key, value];\n });\n return result;\n}\nvar _mapToArray = mapToArray;\nfunction setToArray(set) {\n var index7 = -1, result = Array(set.size);\n set.forEach(function(value) {\n result[++index7] = value;\n });\n return result;\n}\nvar _setToArray = setToArray;\nvar COMPARE_PARTIAL_FLAG$4 = 1;\nvar COMPARE_UNORDERED_FLAG$2 = 2;\nvar boolTag$3 = \"[object Boolean]\";\nvar dateTag$3 = \"[object Date]\";\nvar errorTag$2 = \"[object Error]\";\nvar mapTag$5 = \"[object Map]\";\nvar numberTag$3 = \"[object Number]\";\nvar regexpTag$3 = \"[object RegExp]\";\nvar setTag$5 = \"[object Set]\";\nvar stringTag$3 = \"[object String]\";\nvar symbolTag$3 = \"[object Symbol]\";\nvar arrayBufferTag$3 = \"[object ArrayBuffer]\";\nvar dataViewTag$4 = \"[object DataView]\";\nvar symbolProto$2 = _Symbol2 ? _Symbol2.prototype : void 0;\nvar symbolValueOf$1 = symbolProto$2 ? symbolProto$2.valueOf : void 0;\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag$4:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag$3:\n if (object.byteLength != other.byteLength || !equalFunc(new _Uint8Array(object), new _Uint8Array(other))) {\n return false;\n }\n return true;\n case boolTag$3:\n case dateTag$3:\n case numberTag$3:\n return eq_12(+object, +other);\n case errorTag$2:\n return object.name == other.name && object.message == other.message;\n case regexpTag$3:\n case stringTag$3:\n return object == other + \"\";\n case mapTag$5:\n var convert = _mapToArray;\n case setTag$5:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4;\n convert || (convert = _setToArray);\n if (object.size != other.size && !isPartial) {\n return false;\n }\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG$2;\n stack.set(object, other);\n var result = _equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack[\"delete\"](object);\n return result;\n case symbolTag$3:\n if (symbolValueOf$1) {\n return symbolValueOf$1.call(object) == symbolValueOf$1.call(other);\n }\n }\n return false;\n}\nvar _equalByTag = equalByTag;\nfunction arrayPush(array, values2) {\n var index7 = -1, length = values2.length, offset3 = array.length;\n while (++index7 < length) {\n array[offset3 + index7] = values2[index7];\n }\n return array;\n}\nvar _arrayPush = arrayPush;\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray_1(object) ? result : _arrayPush(result, symbolsFunc(object));\n}\nvar _baseGetAllKeys = baseGetAllKeys;\nfunction arrayFilter(array, predicate) {\n var index7 = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n while (++index7 < length) {\n var value = array[index7];\n if (predicate(value, index7, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\nvar _arrayFilter = arrayFilter;\nfunction stubArray() {\n return [];\n}\nvar stubArray_1 = stubArray;\nvar objectProto$b2 = Object.prototype;\nvar propertyIsEnumerable$12 = objectProto$b2.propertyIsEnumerable;\nvar nativeGetSymbols$1 = Object.getOwnPropertySymbols;\nvar getSymbols = !nativeGetSymbols$1 ? stubArray_1 : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return _arrayFilter(nativeGetSymbols$1(object), function(symbol) {\n return propertyIsEnumerable$12.call(object, symbol);\n });\n};\nvar _getSymbols = getSymbols;\nfunction baseTimes(n6, iteratee) {\n var index7 = -1, result = Array(n6);\n while (++index7 < n6) {\n result[index7] = iteratee(index7);\n }\n return result;\n}\nvar _baseTimes = baseTimes;\nfunction isObjectLike2(value) {\n return value != null && typeof value == \"object\";\n}\nvar isObjectLike_12 = isObjectLike2;\nvar argsTag$3 = \"[object Arguments]\";\nfunction baseIsArguments2(value) {\n return isObjectLike_12(value) && _baseGetTag2(value) == argsTag$3;\n}\nvar _baseIsArguments2 = baseIsArguments2;\nvar objectProto$a2 = Object.prototype;\nvar hasOwnProperty$9 = objectProto$a2.hasOwnProperty;\nvar propertyIsEnumerable2 = objectProto$a2.propertyIsEnumerable;\nvar isArguments2 = _baseIsArguments2(function() {\n return arguments;\n}()) ? _baseIsArguments2 : function(value) {\n return isObjectLike_12(value) && hasOwnProperty$9.call(value, \"callee\") && !propertyIsEnumerable2.call(value, \"callee\");\n};\nvar isArguments_1 = isArguments2;\nfunction stubFalse2() {\n return false;\n}\nvar stubFalse_12 = stubFalse2;\nvar isBuffer_12 = createCommonjsModule2(function(module2, exports2) {\n var freeExports = exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && true && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var Buffer2 = moduleExports ? _root2.Buffer : void 0;\n var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;\n var isBuffer = nativeIsBuffer || stubFalse_12;\n module2.exports = isBuffer;\n});\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n return !!length && (type == \"number\" || type != \"symbol\" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n}\nvar _isIndex = isIndex;\nvar MAX_SAFE_INTEGER2 = 9007199254740991;\nfunction isLength2(value) {\n return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER2;\n}\nvar isLength_12 = isLength2;\nvar argsTag$22 = \"[object Arguments]\";\nvar arrayTag$2 = \"[object Array]\";\nvar boolTag$2 = \"[object Boolean]\";\nvar dateTag$2 = \"[object Date]\";\nvar errorTag$12 = \"[object Error]\";\nvar funcTag$12 = \"[object Function]\";\nvar mapTag$4 = \"[object Map]\";\nvar numberTag$2 = \"[object Number]\";\nvar objectTag$4 = \"[object Object]\";\nvar regexpTag$2 = \"[object RegExp]\";\nvar setTag$4 = \"[object Set]\";\nvar stringTag$2 = \"[object String]\";\nvar weakMapTag$2 = \"[object WeakMap]\";\nvar arrayBufferTag$2 = \"[object ArrayBuffer]\";\nvar dataViewTag$3 = \"[object DataView]\";\nvar float32Tag$2 = \"[object Float32Array]\";\nvar float64Tag$2 = \"[object Float64Array]\";\nvar int8Tag$2 = \"[object Int8Array]\";\nvar int16Tag$2 = \"[object Int16Array]\";\nvar int32Tag$2 = \"[object Int32Array]\";\nvar uint8Tag$2 = \"[object Uint8Array]\";\nvar uint8ClampedTag$2 = \"[object Uint8ClampedArray]\";\nvar uint16Tag$2 = \"[object Uint16Array]\";\nvar uint32Tag$2 = \"[object Uint32Array]\";\nvar typedArrayTags2 = {};\ntypedArrayTags2[float32Tag$2] = typedArrayTags2[float64Tag$2] = typedArrayTags2[int8Tag$2] = typedArrayTags2[int16Tag$2] = typedArrayTags2[int32Tag$2] = typedArrayTags2[uint8Tag$2] = typedArrayTags2[uint8ClampedTag$2] = typedArrayTags2[uint16Tag$2] = typedArrayTags2[uint32Tag$2] = true;\ntypedArrayTags2[argsTag$22] = typedArrayTags2[arrayTag$2] = typedArrayTags2[arrayBufferTag$2] = typedArrayTags2[boolTag$2] = typedArrayTags2[dataViewTag$3] = typedArrayTags2[dateTag$2] = typedArrayTags2[errorTag$12] = typedArrayTags2[funcTag$12] = typedArrayTags2[mapTag$4] = typedArrayTags2[numberTag$2] = typedArrayTags2[objectTag$4] = typedArrayTags2[regexpTag$2] = typedArrayTags2[setTag$4] = typedArrayTags2[stringTag$2] = typedArrayTags2[weakMapTag$2] = false;\nfunction baseIsTypedArray2(value) {\n return isObjectLike_12(value) && isLength_12(value.length) && !!typedArrayTags2[_baseGetTag2(value)];\n}\nvar _baseIsTypedArray2 = baseIsTypedArray2;\nfunction baseUnary2(func) {\n return function(value) {\n return func(value);\n };\n}\nvar _baseUnary2 = baseUnary2;\nvar _nodeUtil2 = createCommonjsModule2(function(module2, exports2) {\n var freeExports = exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && true && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var freeProcess = moduleExports && _freeGlobal2.process;\n var nodeUtil = function() {\n try {\n var types = freeModule && freeModule.require && freeModule.require(\"util\").types;\n if (types) {\n return types;\n }\n return freeProcess && freeProcess.binding && freeProcess.binding(\"util\");\n } catch (e4) {\n }\n }();\n module2.exports = nodeUtil;\n});\nvar nodeIsTypedArray2 = _nodeUtil2 && _nodeUtil2.isTypedArray;\nvar isTypedArray2 = nodeIsTypedArray2 ? _baseUnary2(nodeIsTypedArray2) : _baseIsTypedArray2;\nvar isTypedArray_1 = isTypedArray2;\nvar objectProto$92 = Object.prototype;\nvar hasOwnProperty$82 = objectProto$92.hasOwnProperty;\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray_1(value), isArg = !isArr && isArguments_1(value), isBuff = !isArr && !isArg && isBuffer_12(value), isType4 = !isArr && !isArg && !isBuff && isTypedArray_1(value), skipIndexes = isArr || isArg || isBuff || isType4, result = skipIndexes ? _baseTimes(value.length, String) : [], length = result.length;\n for (var key in value) {\n if ((inherited || hasOwnProperty$82.call(value, key)) && !(skipIndexes && (key == \"length\" || isBuff && (key == \"offset\" || key == \"parent\") || isType4 && (key == \"buffer\" || key == \"byteLength\" || key == \"byteOffset\") || _isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\nvar _arrayLikeKeys = arrayLikeKeys;\nvar objectProto$82 = Object.prototype;\nfunction isPrototype(value) {\n var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto$82;\n return value === proto;\n}\nvar _isPrototype = isPrototype;\nfunction overArg2(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\nvar _overArg2 = overArg2;\nvar nativeKeys2 = _overArg2(Object.keys, Object);\nvar _nativeKeys = nativeKeys2;\nvar objectProto$72 = Object.prototype;\nvar hasOwnProperty$72 = objectProto$72.hasOwnProperty;\nfunction baseKeys(object) {\n if (!_isPrototype(object)) {\n return _nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty$72.call(object, key) && key != \"constructor\") {\n result.push(key);\n }\n }\n return result;\n}\nvar _baseKeys = baseKeys;\nfunction isArrayLike(value) {\n return value != null && isLength_12(value.length) && !isFunction_12(value);\n}\nvar isArrayLike_1 = isArrayLike;\nfunction keys(object) {\n return isArrayLike_1(object) ? _arrayLikeKeys(object) : _baseKeys(object);\n}\nvar keys_1 = keys;\nfunction getAllKeys(object) {\n return _baseGetAllKeys(object, keys_1, _getSymbols);\n}\nvar _getAllKeys = getAllKeys;\nvar COMPARE_PARTIAL_FLAG$3 = 1;\nvar objectProto$62 = Object.prototype;\nvar hasOwnProperty$62 = objectProto$62.hasOwnProperty;\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, objProps = _getAllKeys(object), objLength = objProps.length, othProps = _getAllKeys(other), othLength = othProps.length;\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index7 = objLength;\n while (index7--) {\n var key = objProps[index7];\n if (!(isPartial ? key in other : hasOwnProperty$62.call(other, key))) {\n return false;\n }\n }\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n while (++index7 < objLength) {\n key = objProps[index7];\n var objValue = object[key], othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == \"constructor\");\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor, othCtor = other.constructor;\n if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack[\"delete\"](object);\n stack[\"delete\"](other);\n return result;\n}\nvar _equalObjects = equalObjects;\nvar DataView2 = _getNative2(_root2, \"DataView\");\nvar _DataView2 = DataView2;\nvar Promise$12 = _getNative2(_root2, \"Promise\");\nvar _Promise2 = Promise$12;\nvar Set3 = _getNative2(_root2, \"Set\");\nvar _Set2 = Set3;\nvar WeakMap$1 = _getNative2(_root2, \"WeakMap\");\nvar _WeakMap2 = WeakMap$1;\nvar mapTag$3 = \"[object Map]\";\nvar objectTag$3 = \"[object Object]\";\nvar promiseTag2 = \"[object Promise]\";\nvar setTag$3 = \"[object Set]\";\nvar weakMapTag$12 = \"[object WeakMap]\";\nvar dataViewTag$22 = \"[object DataView]\";\nvar dataViewCtorString2 = _toSource2(_DataView2);\nvar mapCtorString2 = _toSource2(_Map2);\nvar promiseCtorString2 = _toSource2(_Promise2);\nvar setCtorString2 = _toSource2(_Set2);\nvar weakMapCtorString2 = _toSource2(_WeakMap2);\nvar getTag2 = _baseGetTag2;\nif (_DataView2 && getTag2(new _DataView2(new ArrayBuffer(1))) != dataViewTag$22 || _Map2 && getTag2(new _Map2()) != mapTag$3 || _Promise2 && getTag2(_Promise2.resolve()) != promiseTag2 || _Set2 && getTag2(new _Set2()) != setTag$3 || _WeakMap2 && getTag2(new _WeakMap2()) != weakMapTag$12) {\n getTag2 = function(value) {\n var result = _baseGetTag2(value), Ctor = result == objectTag$3 ? value.constructor : void 0, ctorString = Ctor ? _toSource2(Ctor) : \"\";\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString2:\n return dataViewTag$22;\n case mapCtorString2:\n return mapTag$3;\n case promiseCtorString2:\n return promiseTag2;\n case setCtorString2:\n return setTag$3;\n case weakMapCtorString2:\n return weakMapTag$12;\n }\n }\n return result;\n };\n}\nvar _getTag = getTag2;\nvar COMPARE_PARTIAL_FLAG$2 = 1;\nvar argsTag$12 = \"[object Arguments]\";\nvar arrayTag$12 = \"[object Array]\";\nvar objectTag$22 = \"[object Object]\";\nvar objectProto$52 = Object.prototype;\nvar hasOwnProperty$52 = objectProto$52.hasOwnProperty;\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray_1(object), othIsArr = isArray_1(other), objTag = objIsArr ? arrayTag$12 : _getTag(object), othTag = othIsArr ? arrayTag$12 : _getTag(other);\n objTag = objTag == argsTag$12 ? objectTag$22 : objTag;\n othTag = othTag == argsTag$12 ? objectTag$22 : othTag;\n var objIsObj = objTag == objectTag$22, othIsObj = othTag == objectTag$22, isSameTag = objTag == othTag;\n if (isSameTag && isBuffer_12(object)) {\n if (!isBuffer_12(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new _Stack());\n return objIsArr || isTypedArray_1(object) ? _equalArrays(object, other, bitmask, customizer, equalFunc, stack) : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {\n var objIsWrapped = objIsObj && hasOwnProperty$52.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty$52.call(other, \"__wrapped__\");\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new _Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new _Stack());\n return _equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\nvar _baseIsEqualDeep = baseIsEqualDeep;\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike_12(value) && !isObjectLike_12(other)) {\n return value !== value && other !== other;\n }\n return _baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\nvar _baseIsEqual = baseIsEqual;\nvar COMPARE_PARTIAL_FLAG$1 = 1;\nvar COMPARE_UNORDERED_FLAG$1 = 2;\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index7 = matchData.length, length = index7, noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index7--) {\n var data = matchData[index7];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index7 < length) {\n data = matchData[index7];\n var key = data[0], objValue = object[key], srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === void 0 && !(key in object)) {\n return false;\n }\n } else {\n var stack = new _Stack();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === void 0 ? _baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n}\nvar _baseIsMatch = baseIsMatch;\nfunction isStrictComparable(value) {\n return value === value && !isObject_12(value);\n}\nvar _isStrictComparable = isStrictComparable;\nfunction getMatchData(object) {\n var result = keys_1(object), length = result.length;\n while (length--) {\n var key = result[length], value = object[key];\n result[length] = [key, value, _isStrictComparable(value)];\n }\n return result;\n}\nvar _getMatchData = getMatchData;\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));\n };\n}\nvar _matchesStrictComparable = matchesStrictComparable;\nfunction baseMatches(source) {\n var matchData = _getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return _matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || _baseIsMatch(object, source, matchData);\n };\n}\nvar _baseMatches = baseMatches;\nvar symbolTag$2 = \"[object Symbol]\";\nfunction isSymbol(value) {\n return typeof value == \"symbol\" || isObjectLike_12(value) && _baseGetTag2(value) == symbolTag$2;\n}\nvar isSymbol_1 = isSymbol;\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/;\nvar reIsPlainProp = /^\\w*$/;\nfunction isKey(value, object) {\n if (isArray_1(value)) {\n return false;\n }\n var type = typeof value;\n if (type == \"number\" || type == \"symbol\" || type == \"boolean\" || value == null || isSymbol_1(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\nvar _isKey = isKey;\nvar FUNC_ERROR_TEXT2 = \"Expected a function\";\nfunction memoize2(func, resolver) {\n if (typeof func != \"function\" || resolver != null && typeof resolver != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT2);\n }\n var memoized = function() {\n var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache2 = memoized.cache;\n if (cache2.has(key)) {\n return cache2.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache2.set(key, result) || cache2;\n return result;\n };\n memoized.cache = new (memoize2.Cache || _MapCache2)();\n return memoized;\n}\nmemoize2.Cache = _MapCache2;\nvar memoize_12 = memoize2;\nvar MAX_MEMOIZE_SIZE2 = 500;\nfunction memoizeCapped2(func) {\n var result = memoize_12(func, function(key) {\n if (cache2.size === MAX_MEMOIZE_SIZE2) {\n cache2.clear();\n }\n return key;\n });\n var cache2 = result.cache;\n return result;\n}\nvar _memoizeCapped2 = memoizeCapped2;\nvar rePropName2 = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\nvar reEscapeChar2 = /\\\\(\\\\)?/g;\nvar stringToPath2 = _memoizeCapped2(function(string2) {\n var result = [];\n if (string2.charCodeAt(0) === 46) {\n result.push(\"\");\n }\n string2.replace(rePropName2, function(match2, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar2, \"$1\") : number || match2);\n });\n return result;\n});\nvar _stringToPath = stringToPath2;\nvar INFINITY$12 = 1 / 0;\nvar symbolProto$12 = _Symbol2 ? _Symbol2.prototype : void 0;\nvar symbolToString2 = symbolProto$12 ? symbolProto$12.toString : void 0;\nfunction baseToString(value) {\n if (typeof value == \"string\") {\n return value;\n }\n if (isArray_1(value)) {\n return _arrayMap(value, baseToString) + \"\";\n }\n if (isSymbol_1(value)) {\n return symbolToString2 ? symbolToString2.call(value) : \"\";\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY$12 ? \"-0\" : result;\n}\nvar _baseToString = baseToString;\nfunction toString(value) {\n return value == null ? \"\" : _baseToString(value);\n}\nvar toString_1 = toString;\nfunction castPath(value, object) {\n if (isArray_1(value)) {\n return value;\n }\n return _isKey(value, object) ? [value] : _stringToPath(toString_1(value));\n}\nvar _castPath = castPath;\nvar INFINITY2 = 1 / 0;\nfunction toKey(value) {\n if (typeof value == \"string\" || isSymbol_1(value)) {\n return value;\n }\n var result = value + \"\";\n return result == \"0\" && 1 / value == -INFINITY2 ? \"-0\" : result;\n}\nvar _toKey = toKey;\nfunction baseGet(object, path) {\n path = _castPath(path, object);\n var index7 = 0, length = path.length;\n while (object != null && index7 < length) {\n object = object[_toKey(path[index7++])];\n }\n return index7 && index7 == length ? object : void 0;\n}\nvar _baseGet = baseGet;\nfunction get(object, path, defaultValue) {\n var result = object == null ? void 0 : _baseGet(object, path);\n return result === void 0 ? defaultValue : result;\n}\nvar get_1 = get;\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\nvar _baseHasIn = baseHasIn;\nfunction hasPath(object, path, hasFunc) {\n path = _castPath(path, object);\n var index7 = -1, length = path.length, result = false;\n while (++index7 < length) {\n var key = _toKey(path[index7]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index7 != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength_12(length) && _isIndex(key, length) && (isArray_1(object) || isArguments_1(object));\n}\nvar _hasPath = hasPath;\nfunction hasIn(object, path) {\n return object != null && _hasPath(object, path, _baseHasIn);\n}\nvar hasIn_1 = hasIn;\nvar COMPARE_PARTIAL_FLAG = 1;\nvar COMPARE_UNORDERED_FLAG = 2;\nfunction baseMatchesProperty(path, srcValue) {\n if (_isKey(path) && _isStrictComparable(srcValue)) {\n return _matchesStrictComparable(_toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get_1(object, path);\n return objValue === void 0 && objValue === srcValue ? hasIn_1(object, path) : _baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\nvar _baseMatchesProperty = baseMatchesProperty;\nfunction identity(value) {\n return value;\n}\nvar identity_1 = identity;\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? void 0 : object[key];\n };\n}\nvar _baseProperty = baseProperty;\nfunction basePropertyDeep(path) {\n return function(object) {\n return _baseGet(object, path);\n };\n}\nvar _basePropertyDeep = basePropertyDeep;\nfunction property(path) {\n return _isKey(path) ? _baseProperty(_toKey(path)) : _basePropertyDeep(path);\n}\nvar property_1 = property;\nfunction baseIteratee(value) {\n if (typeof value == \"function\") {\n return value;\n }\n if (value == null) {\n return identity_1;\n }\n if (typeof value == \"object\") {\n return isArray_1(value) ? _baseMatchesProperty(value[0], value[1]) : _baseMatches(value);\n }\n return property_1(value);\n}\nvar _baseIteratee = baseIteratee;\nfunction createBaseFor2(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index7 = -1, iterable = Object(object), props = keysFunc(object), length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index7];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\nvar _createBaseFor2 = createBaseFor2;\nvar baseFor2 = _createBaseFor2();\nvar _baseFor = baseFor2;\nfunction baseForOwn(object, iteratee) {\n return object && _baseFor(object, iteratee, keys_1);\n}\nvar _baseForOwn = baseForOwn;\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike_1(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length, index7 = fromRight ? length : -1, iterable = Object(collection);\n while (fromRight ? index7-- : ++index7 < length) {\n if (iteratee(iterable[index7], index7, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\nvar _createBaseEach = createBaseEach;\nvar baseEach = _createBaseEach(_baseForOwn);\nvar _baseEach = baseEach;\nfunction baseMap(collection, iteratee) {\n var index7 = -1, result = isArrayLike_1(collection) ? Array(collection.length) : [];\n _baseEach(collection, function(value, key, collection2) {\n result[++index7] = iteratee(value, key, collection2);\n });\n return result;\n}\nvar _baseMap = baseMap;\nfunction map(collection, iteratee) {\n var func = isArray_1(collection) ? _arrayMap : _baseMap;\n return func(collection, _baseIteratee(iteratee));\n}\nvar map_1 = map;\nvar getEditorString = (editor, at, options) => at ? Editor.string(editor, at, options) : \"\";\nvar getPoint = (editor, at, options) => Editor.point(editor, at, options);\nvar getPointBefore = (editor, at, options) => Editor.before(editor, at, options);\nvar isRangeAcrossBlocks = (editor, _a = {}) => {\n var _b = _a, {\n at\n } = _b, options = __objRest(_b, [\n \"at\"\n ]);\n if (!at)\n at = editor.selection;\n if (!at)\n return false;\n const [start3, end3] = Range.edges(at);\n const startBlock = getBlockAbove(editor, __spreadValues({\n at: start3\n }, options));\n const endBlock = getBlockAbove(editor, __spreadValues({\n at: end3\n }, options));\n return startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n};\nvar getPointBeforeLocation = (editor, at, options) => {\n if (!options || !options.match && !options.matchString) {\n return getPointBefore(editor, at, options);\n }\n const unitOffset = !options.unit || options.unit === \"offset\";\n const matchStrings = options.matchString ? castArray_1(options.matchString) : [\"\"];\n let point;\n matchStrings.some((matchString) => {\n let beforeAt = at;\n let previousBeforePoint = getPoint(editor, at, {\n edge: \"end\"\n });\n const stackLength = matchString.length + 1;\n const stack = Array(stackLength);\n let count = 0;\n while (true) {\n var _options$match;\n const beforePoint = getPointBefore(editor, beforeAt, options);\n if (!beforePoint)\n return;\n if (isRangeAcrossBlocks(editor, {\n at: {\n anchor: beforePoint,\n focus: previousBeforePoint\n }\n })) {\n return;\n }\n const beforeString = getEditorString(editor, {\n anchor: beforePoint,\n focus: previousBeforePoint\n });\n let beforeStringToMatch = beforeString;\n if (unitOffset && stackLength) {\n stack.unshift({\n point: beforePoint,\n text: beforeString\n });\n stack.pop();\n beforeStringToMatch = map_1(stack.slice(0, -1), \"text\").join(\"\");\n }\n if (matchString === beforeStringToMatch || (_options$match = options.match) !== null && _options$match !== void 0 && _options$match.call(options, {\n beforeString: beforeStringToMatch,\n beforePoint,\n at\n })) {\n if (options.afterMatch) {\n if (stackLength && unitOffset) {\n var _stack;\n point = (_stack = stack[stack.length - 1]) === null || _stack === void 0 ? void 0 : _stack.point;\n return !!point;\n }\n point = previousBeforePoint;\n return true;\n }\n point = beforePoint;\n return true;\n }\n previousBeforePoint = beforePoint;\n beforeAt = beforePoint;\n count += 1;\n if (!options.skipInvalid) {\n if (!matchString || count > matchString.length)\n return;\n }\n }\n });\n return point;\n};\nvar getPointFromLocation = (editor, {\n at = editor.selection,\n focus\n} = {}) => {\n let point;\n if (Range.isRange(at))\n point = !focus ? at.anchor : at.focus;\n if (Point.isPoint(at))\n point = at;\n if (Path.isPath(at))\n point = {\n path: at,\n offset: 0\n };\n return point;\n};\nvar getPointAfter = (editor, at, options) => Editor.after(editor, at, options);\nvar getVoidNode = (editor, options) => Editor.void(editor, options);\nvar getPreviousNode = (editor, options) => Editor.previous(editor, options);\nvar queryNode = (entry, {\n filter: filter2,\n allow,\n exclude\n} = {}) => {\n if (!entry)\n return false;\n if (filter2 && !filter2(entry)) {\n return false;\n }\n if (allow) {\n const allows = castArray_1(allow);\n if (allows.length && !allows.includes(entry[0].type)) {\n return false;\n }\n }\n if (exclude) {\n const excludes = castArray_1(exclude);\n if (excludes.length && excludes.includes(entry[0].type)) {\n return false;\n }\n }\n return true;\n};\nvar getPreviousPath = (path) => {\n if (path.length === 0)\n return;\n const last2 = path[path.length - 1];\n if (last2 <= 0)\n return;\n return path.slice(0, -1).concat(last2 - 1);\n};\nvar getRangeBefore = (editor, at, options) => {\n const anchor = getPointBeforeLocation(editor, at, options);\n if (!anchor)\n return;\n const focus = getPoint(editor, at, {\n edge: \"end\"\n });\n return {\n anchor,\n focus\n };\n};\nvar getStartPoint = (editor, at) => Editor.start(editor, at);\nvar getRangeFromBlockStart = (editor, options = {}) => {\n var _getBlockAbove;\n const path = (_getBlockAbove = getBlockAbove(editor, options)) === null || _getBlockAbove === void 0 ? void 0 : _getBlockAbove[1];\n if (!path)\n return;\n const start3 = getStartPoint(editor, path);\n const focus = getPointFromLocation(editor, options);\n if (!focus)\n return;\n return {\n anchor: start3,\n focus\n };\n};\nvar getSelectionText = (editor) => getEditorString(editor, editor.selection);\nvar hasSingleChild = (node) => {\n if (isText(node)) {\n return true;\n }\n return node.children.length === 1 && hasSingleChild(node.children[0]);\n};\nvar isInline = (editor, value) => Editor.isInline(editor, value);\nvar getNodeString = (node) => Node2.string(node);\nvar isAncestorEmpty = (editor, node) => !getNodeString(node) && !node.children.some((n6) => isInline(editor, n6));\nvar isBlockAboveEmpty = (editor) => {\n var _getBlockAbove;\n const block = (_getBlockAbove = getBlockAbove(editor)) === null || _getBlockAbove === void 0 ? void 0 : _getBlockAbove[0];\n if (!block)\n return false;\n return isAncestorEmpty(editor, block);\n};\nvar getParentNode = (editor, at, options) => {\n try {\n return Editor.parent(editor, at, options);\n } catch (err) {\n }\n};\nvar isEndPoint = (editor, point, at) => !!point && Editor.isEnd(editor, point, at);\nvar isBlockTextEmptyAfterSelection = (editor) => {\n if (!editor.selection)\n return false;\n const blockAbove = getBlockAbove(editor);\n if (!blockAbove)\n return false;\n const cursor = editor.selection.focus;\n const selectionParentEntry = getParentNode(editor, editor.selection);\n if (!selectionParentEntry)\n return false;\n const [, selectionParentPath] = selectionParentEntry;\n if (!isEndPoint(editor, cursor, selectionParentPath))\n return false;\n const siblingNodes = getNextSiblingNodes(blockAbove, cursor.path);\n if (siblingNodes.length) {\n for (const siblingNode of siblingNodes) {\n if (isText(siblingNode) && siblingNode.text) {\n return false;\n }\n }\n } else {\n return isEndPoint(editor, cursor, blockAbove[1]);\n }\n return true;\n};\nvar isFirstChild = (path) => path[path.length - 1] === 0;\nfunction isUndefined(obj) {\n return typeof obj === \"undefined\";\n}\nfunction isNull(obj) {\n return obj === null;\n}\nfunction isUndefinedOrNull(obj) {\n return isUndefined(obj) || isNull(obj);\n}\nfunction isDefined(arg) {\n return !isUndefinedOrNull(arg);\n}\nvar isMarkActive = (editor, type) => {\n return isDefined(getMark(editor, type));\n};\nvar getRange = (editor, at, to) => Editor.range(editor, at, to);\nvar isSelectionAtBlockEnd = (editor) => {\n var _getBlockAbove, _editor$selection;\n const path = (_getBlockAbove = getBlockAbove(editor)) === null || _getBlockAbove === void 0 ? void 0 : _getBlockAbove[1];\n return !!path && isEndPoint(editor, (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.focus, path);\n};\nvar isStartPoint = (editor, point, at) => !!point && Editor.isStart(editor, point, at);\nvar isSelectionAtBlockStart = (editor, options) => {\n var _getBlockAbove, _editor$selection;\n const path = (_getBlockAbove = getBlockAbove(editor, options)) === null || _getBlockAbove === void 0 ? void 0 : _getBlockAbove[1];\n return !!path && isStartPoint(editor, (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.focus, path);\n};\nvar isExpanded = (range) => !!range && Range.isExpanded(range);\nvar isSelectionExpanded = (editor) => isExpanded(editor.selection);\nvar getNode = (root5, path) => {\n try {\n return Node2.get(root5, path);\n } catch (err) {\n return null;\n }\n};\nvar getPluginsByKey = (editor) => {\n var _ref;\n return (_ref = editor === null || editor === void 0 ? void 0 : editor.pluginsByKey) !== null && _ref !== void 0 ? _ref : {};\n};\nvar getPlugin = (editor, key) => {\n var _getPluginsByKey$key;\n return (_getPluginsByKey$key = getPluginsByKey(editor)[key]) !== null && _getPluginsByKey$key !== void 0 ? _getPluginsByKey$key : {\n key\n };\n};\nvar getPluginType = (editor, key) => {\n var _ref, _getPlugin$type;\n return (_ref = (_getPlugin$type = getPlugin(editor, key).type) !== null && _getPlugin$type !== void 0 ? _getPlugin$type : key) !== null && _ref !== void 0 ? _ref : \"\";\n};\nvar isType = (editor, node, key) => {\n const keys3 = castArray_1(key);\n const types = [];\n keys3.forEach((_key) => types.push(getPluginType(editor, _key)));\n return types.includes(node === null || node === void 0 ? void 0 : node.type);\n};\nvar escapeRegExp = (text4) => {\n return text4.replace(/[-[\\]{}()*+?.,\\\\^$|#\\\\s]/g, \"\\\\$&\");\n};\nvar someNode = (editor, options) => {\n return !!findNode(editor, options);\n};\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\nvar _apply = apply;\nvar nativeMax = Math.max;\nfunction overRest(func, start3, transform) {\n start3 = nativeMax(start3 === void 0 ? func.length - 1 : start3, 0);\n return function() {\n var args = arguments, index7 = -1, length = nativeMax(args.length - start3, 0), array = Array(length);\n while (++index7 < length) {\n array[index7] = args[start3 + index7];\n }\n index7 = -1;\n var otherArgs = Array(start3 + 1);\n while (++index7 < start3) {\n otherArgs[index7] = args[index7];\n }\n otherArgs[start3] = transform(array);\n return _apply(func, this, otherArgs);\n };\n}\nvar _overRest = overRest;\nfunction constant(value) {\n return function() {\n return value;\n };\n}\nvar constant_1 = constant;\nvar defineProperty2 = function() {\n try {\n var func = _getNative2(Object, \"defineProperty\");\n func({}, \"\", {});\n return func;\n } catch (e4) {\n }\n}();\nvar _defineProperty$1 = defineProperty2;\nvar baseSetToString = !_defineProperty$1 ? identity_1 : function(func, string2) {\n return _defineProperty$1(func, \"toString\", {\n \"configurable\": true,\n \"enumerable\": false,\n \"value\": constant_1(string2),\n \"writable\": true\n });\n};\nvar _baseSetToString = baseSetToString;\nvar HOT_COUNT = 800;\nvar HOT_SPAN = 16;\nvar nativeNow = Date.now;\nfunction shortOut(func) {\n var count = 0, lastCalled = 0;\n return function() {\n var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(void 0, arguments);\n };\n}\nvar _shortOut = shortOut;\nvar setToString = _shortOut(_baseSetToString);\nvar _setToString = setToString;\nfunction baseRest(func, start3) {\n return _setToString(_overRest(func, start3, identity_1), func + \"\");\n}\nvar _baseRest = baseRest;\nfunction isIterateeCall(value, index7, object) {\n if (!isObject_12(object)) {\n return false;\n }\n var type = typeof index7;\n if (type == \"number\" ? isArrayLike_1(object) && _isIndex(index7, object.length) : type == \"string\" && index7 in object) {\n return eq_12(object[index7], value);\n }\n return false;\n}\nvar _isIterateeCall = isIterateeCall;\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\nvar _nativeKeysIn = nativeKeysIn;\nvar objectProto$42 = Object.prototype;\nvar hasOwnProperty$42 = objectProto$42.hasOwnProperty;\nfunction baseKeysIn(object) {\n if (!isObject_12(object)) {\n return _nativeKeysIn(object);\n }\n var isProto = _isPrototype(object), result = [];\n for (var key in object) {\n if (!(key == \"constructor\" && (isProto || !hasOwnProperty$42.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\nvar _baseKeysIn = baseKeysIn;\nfunction keysIn(object) {\n return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object);\n}\nvar keysIn_1 = keysIn;\nvar objectProto$32 = Object.prototype;\nvar hasOwnProperty$32 = objectProto$32.hasOwnProperty;\nvar defaults = _baseRest(function(object, sources) {\n object = Object(object);\n var index7 = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : void 0;\n if (guard && _isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n while (++index7 < length) {\n var source = sources[index7];\n var props = keysIn_1(source);\n var propsIndex = -1;\n var propsLength = props.length;\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n if (value === void 0 || eq_12(value, objectProto$32[key]) && !hasOwnProperty$32.call(object, key)) {\n object[key] = source[key];\n }\n }\n }\n return object;\n});\nvar defaults_1 = defaults;\nvar applyDeepToNodes = ({\n node,\n source,\n apply: apply2,\n query\n}) => {\n const entry = [node, []];\n if (queryNode(entry, query)) {\n if (source instanceof Function) {\n apply2(node, source());\n } else {\n apply2(node, source);\n }\n }\n if (!isAncestor(node))\n return;\n node.children.forEach((child) => {\n applyDeepToNodes({\n node: child,\n source,\n apply: apply2,\n query\n });\n });\n};\nvar defaultsDeepToNodes = (options) => {\n applyDeepToNodes(__spreadProps(__spreadValues({}, options), {\n apply: defaults_1\n }));\n};\nvar insertNodes = (editor, nodes, options) => Transforms.insertNodes(editor, nodes, options);\nvar insertElements = (editor, nodes, options) => insertNodes(editor, nodes, options);\nvar insertEmptyElement = (editor, type, options) => {\n insertElements(editor, {\n type,\n children: [{\n text: \"\"\n }]\n }, getQueryOptions(editor, options));\n};\nvar moveNodes = (editor, options) => Transforms.moveNodes(editor, options);\nvar moveChildren = (editor, {\n at,\n to,\n match: match2,\n fromStartIndex = 0\n}) => {\n let moved = 0;\n const parentPath = Path.isPath(at) ? at : at[1];\n const parentNode = Path.isPath(at) ? getNode(editor, parentPath) : at[0];\n if (!isBlock(editor, parentNode))\n return moved;\n for (let i3 = parentNode.children.length - 1; i3 >= fromStartIndex; i3--) {\n const childPath = [...parentPath, i3];\n const childNode = getNode(editor, childPath);\n if (!match2 || childNode && match2([childNode, childPath])) {\n moveNodes(editor, {\n at: childPath,\n to\n });\n moved++;\n }\n }\n return moved;\n};\nvar unsetNodes = (editor, props, options) => {\n return Transforms.unsetNodes(editor, props, options);\n};\nvar removeMark = (editor, _a) => {\n var _b = _a, {\n key,\n at,\n shouldChange = true\n } = _b, rest = __objRest(_b, [\n \"key\",\n \"at\",\n \"shouldChange\"\n ]);\n const selection = at !== null && at !== void 0 ? at : editor.selection;\n key = castArray_1(key);\n if (selection) {\n if (Range.isRange(selection) && Range.isExpanded(selection)) {\n unsetNodes(editor, key, __spreadValues({\n at: selection,\n match: isText,\n split: true\n }, rest));\n } else if (editor.selection) {\n const marks3 = __spreadValues({}, getMarks(editor) || {});\n key.forEach((k3) => {\n delete marks3[k3];\n });\n editor.marks = marks3;\n shouldChange && editor.onChange();\n }\n }\n};\nvar getEndPoint = (editor, at) => Editor.end(editor, at);\nvar focusEditor = (editor) => ReactEditor.focus(editor);\nvar select = (editor, target) => {\n Transforms.select(editor, target);\n};\nvar setNodes = (editor, props, options) => Transforms.setNodes(editor, props, options);\nvar setElements = (editor, props, options) => setNodes(editor, props, options);\nvar withoutNormalizing = (editor, fn6) => {\n let normalized = false;\n Editor.withoutNormalizing(editor, () => {\n normalized = !!fn6();\n });\n return normalized;\n};\nvar setMarks = (editor, marks3, clear = []) => {\n if (!editor.selection)\n return;\n withoutNormalizing(editor, () => {\n const clears = castArray_1(clear);\n removeMark(editor, {\n key: clears\n });\n removeMark(editor, {\n key: Object.keys(marks3)\n });\n Object.keys(marks3).forEach((key) => {\n editor.addMark(key, marks3[key]);\n });\n });\n};\nvar toggleMark = (editor, {\n key,\n clear\n}) => {\n if (!editor.selection)\n return;\n withoutNormalizing(editor, () => {\n const isActive = isMarkActive(editor, key);\n if (isActive) {\n removeMark(editor, {\n key\n });\n return;\n }\n if (clear) {\n const clears = castArray_1(clear);\n removeMark(editor, {\n key: clears\n });\n }\n editor.addMark(key, true);\n });\n};\nvar ELEMENT_DEFAULT = \"p\";\nvar toggleNodeType = (editor, options, editorNodesOptions) => {\n const {\n activeType,\n inactiveType = getPluginType(editor, ELEMENT_DEFAULT)\n } = options;\n if (!activeType || !editor.selection)\n return;\n const isActive = someNode(editor, __spreadProps(__spreadValues({}, editorNodesOptions), {\n match: {\n type: activeType\n }\n }));\n if (isActive && activeType === inactiveType)\n return;\n setElements(editor, {\n type: isActive ? inactiveType : activeType\n });\n};\nvar unwrapNodes = (editor, options) => {\n Transforms.unwrapNodes(editor, getQueryOptions(editor, options));\n};\nvar wrapNodes = (editor, element4, options) => {\n unhangRange(editor, options === null || options === void 0 ? void 0 : options.at, options);\n Transforms.wrapNodes(editor, element4, options);\n};\nvar findHtmlParentElement = (el, nodeName) => {\n if (!el || el.nodeName === nodeName) {\n return el;\n }\n return findHtmlParentElement(el.parentElement, nodeName);\n};\nvar getHandler = (cb, ...args) => () => {\n cb === null || cb === void 0 ? void 0 : cb(...args);\n};\nvar getPreventDefaultHandler = (cb, ...args) => (event) => {\n event.preventDefault();\n cb === null || cb === void 0 ? void 0 : cb(...args);\n};\nvar protocolAndDomainRE = /^(?:\\w+:)?\\/\\/(\\S+)$/;\nvar localhostDomainRE = /^localhost[:?\\d]*(?:[^:?\\d]\\S*)?$/;\nvar nonLocalhostDomainRE = /^[^\\s.]+\\.\\S{2,}$/;\nvar isUrl = (string2) => {\n if (typeof string2 !== \"string\") {\n return false;\n }\n const match2 = string2.match(protocolAndDomainRE);\n if (!match2) {\n return false;\n }\n const everythingAfterProtocol = match2[1];\n if (!everythingAfterProtocol) {\n return false;\n }\n try {\n new URL(string2);\n } catch (err) {\n return false;\n }\n return localhostDomainRE.test(everythingAfterProtocol) || nonLocalhostDomainRE.test(everythingAfterProtocol);\n};\nvar isElement2 = (value) => Element2.isElement(value);\nvar isInlineNode = (editor) => (node) => isText(node) || isElement2(node) && editor.isInline(node);\nvar makeBlockLazy = (type) => () => ({\n type,\n children: []\n});\nvar hasDifferentChildNodes = (descendants, isInline2) => {\n return descendants.some((descendant, index7, arr) => {\n const prevDescendant = arr[index7 - 1];\n if (index7 !== 0) {\n return isInline2(descendant) !== isInline2(prevDescendant);\n }\n return false;\n });\n};\nvar normalizeDifferentNodeTypes = (descendants, isInline2, makeDefaultBlock) => {\n const hasDifferentNodes = hasDifferentChildNodes(descendants, isInline2);\n const {\n fragment\n } = descendants.reduce((memo3, node) => {\n if (hasDifferentNodes && isInline2(node)) {\n let block = memo3.precedingBlock;\n if (!block) {\n block = makeDefaultBlock();\n memo3.precedingBlock = block;\n memo3.fragment.push(block);\n }\n block.children.push(node);\n } else {\n memo3.fragment.push(node);\n memo3.precedingBlock = null;\n }\n return memo3;\n }, {\n fragment: [],\n precedingBlock: null\n });\n return fragment;\n};\nvar normalizeEmptyChildren = (descendants) => {\n if (!descendants.length) {\n return [{\n text: \"\"\n }];\n }\n return descendants;\n};\nvar normalize = (descendants, isInline2, makeDefaultBlock) => {\n descendants = normalizeEmptyChildren(descendants);\n descendants = normalizeDifferentNodeTypes(descendants, isInline2, makeDefaultBlock);\n descendants = descendants.map((node) => {\n if (isElement2(node)) {\n return __spreadProps(__spreadValues({}, node), {\n children: normalize(node.children, isInline2, makeDefaultBlock)\n });\n }\n return node;\n });\n return descendants;\n};\nvar normalizeDescendantsToDocumentFragment = (editor, {\n descendants\n}) => {\n const isInline2 = isInlineNode(editor);\n const defaultType = getPluginType(editor, ELEMENT_DEFAULT);\n const makeDefaultBlock = makeBlockLazy(defaultType);\n return normalize(descendants, isInline2, makeDefaultBlock);\n};\nvar lib = createCommonjsModule2(function(module2, exports2) {\n Object.defineProperty(exports2, \"__esModule\", {\n value: true\n });\n var IS_MAC = () => typeof window != \"undefined\" && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n var MODIFIERS = {\n alt: \"altKey\",\n control: \"ctrlKey\",\n meta: \"metaKey\",\n shift: \"shiftKey\"\n };\n var ALIASES = () => ({\n add: \"+\",\n break: \"pause\",\n cmd: \"meta\",\n command: \"meta\",\n ctl: \"control\",\n ctrl: \"control\",\n del: \"delete\",\n down: \"arrowdown\",\n esc: \"escape\",\n ins: \"insert\",\n left: \"arrowleft\",\n mod: IS_MAC() ? \"meta\" : \"control\",\n opt: \"alt\",\n option: \"alt\",\n return: \"enter\",\n right: \"arrowright\",\n space: \" \",\n spacebar: \" \",\n up: \"arrowup\",\n win: \"meta\",\n windows: \"meta\"\n });\n var CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n \" \": 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n \";\": 186,\n \"=\": 187,\n \",\": 188,\n \"-\": 189,\n \".\": 190,\n \"/\": 191,\n \"`\": 192,\n \"[\": 219,\n \"\\\\\": 220,\n \"]\": 221,\n \"'\": 222\n };\n for (var f4 = 1; f4 < 20; f4++) {\n CODES[\"f\" + f4] = 111 + f4;\n }\n function isHotkey6(hotkey, options, event) {\n if (options && !(\"byKey\" in options)) {\n event = options;\n options = null;\n }\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n var array = hotkey.map(function(string2) {\n return parseHotkey(string2, options);\n });\n var check = function check2(e4) {\n return array.some(function(object) {\n return compareHotkey(object, e4);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n }\n function isCodeHotkey(hotkey, event) {\n return isHotkey6(hotkey, event);\n }\n function isKeyHotkey2(hotkey, event) {\n return isHotkey6(hotkey, { byKey: true }, event);\n }\n function parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n hotkey = hotkey.replace(\"++\", \"+add\");\n var values2 = hotkey.split(\"+\");\n var length = values2.length;\n for (var k3 in MODIFIERS) {\n ret[MODIFIERS[k3]] = false;\n }\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = void 0;\n try {\n for (var _iterator = values2[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n var optional = value.endsWith(\"?\") && value.length > 1;\n if (optional) {\n value = value.slice(0, -1);\n }\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return ret;\n }\n function compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n if (expected == null) {\n continue;\n }\n if (key === \"key\" && event.key != null) {\n actual = event.key.toLowerCase();\n } else if (key === \"which\") {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n if (actual == null && expected === false) {\n continue;\n }\n if (actual !== expected) {\n return false;\n }\n }\n return true;\n }\n function toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n }\n function toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES()[name] || name;\n return name;\n }\n exports2.default = isHotkey6;\n exports2.isHotkey = isHotkey6;\n exports2.isCodeHotkey = isCodeHotkey;\n exports2.isKeyHotkey = isKeyHotkey2;\n exports2.parseHotkey = parseHotkey;\n exports2.compareHotkey = compareHotkey;\n exports2.toKeyCode = toKeyCode;\n exports2.toKeyName = toKeyName;\n});\nvar isHotkey = unwrapExports(lib);\nlib.isHotkey;\nlib.isCodeHotkey;\nlib.isKeyHotkey;\nlib.parseHotkey;\nlib.compareHotkey;\nlib.toKeyCode;\nlib.toKeyName;\nvar onKeyDownToggleElement = (editor, {\n type,\n options: {\n hotkey\n }\n}) => (e4) => {\n const defaultType = getPluginType(editor, ELEMENT_DEFAULT);\n if (!hotkey)\n return;\n const hotkeys = castArray_1(hotkey);\n for (const _hotkey of hotkeys) {\n if (isHotkey(_hotkey, e4)) {\n e4.preventDefault();\n toggleNodeType(editor, {\n activeType: type,\n inactiveType: defaultType\n });\n return;\n }\n }\n};\nvar onKeyDownToggleMark = (editor, {\n type,\n options: {\n hotkey,\n clear\n }\n}) => (e4) => {\n if (!hotkey)\n return;\n if (isHotkey(hotkey, e4)) {\n e4.preventDefault();\n toggleMark(editor, {\n key: type,\n clear\n });\n }\n};\nvar DefaultLeaf2 = (_a) => {\n var _b = _a, {\n attributes,\n children,\n text: text4,\n leaf,\n editor,\n nodeProps\n } = _b, props = __objRest(_b, [\n \"attributes\",\n \"children\",\n \"text\",\n \"leaf\",\n \"editor\",\n \"nodeProps\"\n ]);\n return /* @__PURE__ */ import_react6.default.createElement(\"span\", _extends({}, attributes, props), children);\n};\nfunction arrayEach(array, iteratee) {\n var index7 = -1, length = array == null ? 0 : array.length;\n while (++index7 < length) {\n if (iteratee(array[index7], index7, array) === false) {\n break;\n }\n }\n return array;\n}\nvar _arrayEach = arrayEach;\nfunction baseAssignValue(object, key, value) {\n if (key == \"__proto__\" && _defineProperty$1) {\n _defineProperty$1(object, key, {\n \"configurable\": true,\n \"enumerable\": true,\n \"value\": value,\n \"writable\": true\n });\n } else {\n object[key] = value;\n }\n}\nvar _baseAssignValue = baseAssignValue;\nvar objectProto$22 = Object.prototype;\nvar hasOwnProperty$22 = objectProto$22.hasOwnProperty;\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty$22.call(object, key) && eq_12(objValue, value)) || value === void 0 && !(key in object)) {\n _baseAssignValue(object, key, value);\n }\n}\nvar _assignValue = assignValue;\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index7 = -1, length = props.length;\n while (++index7 < length) {\n var key = props[index7];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;\n if (newValue === void 0) {\n newValue = source[key];\n }\n if (isNew) {\n _baseAssignValue(object, key, newValue);\n } else {\n _assignValue(object, key, newValue);\n }\n }\n return object;\n}\nvar _copyObject = copyObject;\nfunction baseAssign(object, source) {\n return object && _copyObject(source, keys_1(source), object);\n}\nvar _baseAssign = baseAssign;\nfunction baseAssignIn(object, source) {\n return object && _copyObject(source, keysIn_1(source), object);\n}\nvar _baseAssignIn = baseAssignIn;\nvar _cloneBuffer = createCommonjsModule2(function(module2, exports2) {\n var freeExports = exports2 && !exports2.nodeType && exports2;\n var freeModule = freeExports && true && module2 && !module2.nodeType && module2;\n var moduleExports = freeModule && freeModule.exports === freeExports;\n var Buffer2 = moduleExports ? _root2.Buffer : void 0, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n }\n module2.exports = cloneBuffer;\n});\nfunction copyArray(source, array) {\n var index7 = -1, length = source.length;\n array || (array = Array(length));\n while (++index7 < length) {\n array[index7] = source[index7];\n }\n return array;\n}\nvar _copyArray = copyArray;\nfunction copySymbols(source, object) {\n return _copyObject(source, _getSymbols(source), object);\n}\nvar _copySymbols = copySymbols;\nvar getPrototype = _overArg2(Object.getPrototypeOf, Object);\nvar _getPrototype = getPrototype;\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\nvar getSymbolsIn = !nativeGetSymbols ? stubArray_1 : function(object) {\n var result = [];\n while (object) {\n _arrayPush(result, _getSymbols(object));\n object = _getPrototype(object);\n }\n return result;\n};\nvar _getSymbolsIn = getSymbolsIn;\nfunction copySymbolsIn(source, object) {\n return _copyObject(source, _getSymbolsIn(source), object);\n}\nvar _copySymbolsIn = copySymbolsIn;\nfunction getAllKeysIn(object) {\n return _baseGetAllKeys(object, keysIn_1, _getSymbolsIn);\n}\nvar _getAllKeysIn = getAllKeysIn;\nvar objectProto$12 = Object.prototype;\nvar hasOwnProperty$12 = objectProto$12.hasOwnProperty;\nfunction initCloneArray(array) {\n var length = array.length, result = new array.constructor(length);\n if (length && typeof array[0] == \"string\" && hasOwnProperty$12.call(array, \"index\")) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\nvar _initCloneArray = initCloneArray;\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new _Uint8Array(result).set(new _Uint8Array(arrayBuffer));\n return result;\n}\nvar _cloneArrayBuffer = cloneArrayBuffer;\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? _cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\nvar _cloneDataView = cloneDataView;\nvar reFlags = /\\w*$/;\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\nvar _cloneRegExp = cloneRegExp;\nvar symbolProto2 = _Symbol2 ? _Symbol2.prototype : void 0;\nvar symbolValueOf2 = symbolProto2 ? symbolProto2.valueOf : void 0;\nfunction cloneSymbol(symbol) {\n return symbolValueOf2 ? Object(symbolValueOf2.call(symbol)) : {};\n}\nvar _cloneSymbol = cloneSymbol;\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? _cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\nvar _cloneTypedArray = cloneTypedArray;\nvar boolTag$12 = \"[object Boolean]\";\nvar dateTag$12 = \"[object Date]\";\nvar mapTag$22 = \"[object Map]\";\nvar numberTag$12 = \"[object Number]\";\nvar regexpTag$12 = \"[object RegExp]\";\nvar setTag$22 = \"[object Set]\";\nvar stringTag$12 = \"[object String]\";\nvar symbolTag$1 = \"[object Symbol]\";\nvar arrayBufferTag$12 = \"[object ArrayBuffer]\";\nvar dataViewTag$1 = \"[object DataView]\";\nvar float32Tag$1 = \"[object Float32Array]\";\nvar float64Tag$1 = \"[object Float64Array]\";\nvar int8Tag$1 = \"[object Int8Array]\";\nvar int16Tag$1 = \"[object Int16Array]\";\nvar int32Tag$1 = \"[object Int32Array]\";\nvar uint8Tag$1 = \"[object Uint8Array]\";\nvar uint8ClampedTag$1 = \"[object Uint8ClampedArray]\";\nvar uint16Tag$1 = \"[object Uint16Array]\";\nvar uint32Tag$1 = \"[object Uint32Array]\";\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag$12:\n return _cloneArrayBuffer(object);\n case boolTag$12:\n case dateTag$12:\n return new Ctor(+object);\n case dataViewTag$1:\n return _cloneDataView(object, isDeep);\n case float32Tag$1:\n case float64Tag$1:\n case int8Tag$1:\n case int16Tag$1:\n case int32Tag$1:\n case uint8Tag$1:\n case uint8ClampedTag$1:\n case uint16Tag$1:\n case uint32Tag$1:\n return _cloneTypedArray(object, isDeep);\n case mapTag$22:\n return new Ctor();\n case numberTag$12:\n case stringTag$12:\n return new Ctor(object);\n case regexpTag$12:\n return _cloneRegExp(object);\n case setTag$22:\n return new Ctor();\n case symbolTag$1:\n return _cloneSymbol(object);\n }\n}\nvar _initCloneByTag = initCloneByTag;\nvar objectCreate = Object.create;\nvar baseCreate = function() {\n function object() {\n }\n return function(proto) {\n if (!isObject_12(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object();\n object.prototype = void 0;\n return result;\n };\n}();\nvar _baseCreate = baseCreate;\nfunction initCloneObject(object) {\n return typeof object.constructor == \"function\" && !_isPrototype(object) ? _baseCreate(_getPrototype(object)) : {};\n}\nvar _initCloneObject = initCloneObject;\nvar mapTag$1 = \"[object Map]\";\nfunction baseIsMap(value) {\n return isObjectLike_12(value) && _getTag(value) == mapTag$1;\n}\nvar _baseIsMap = baseIsMap;\nvar nodeIsMap = _nodeUtil2 && _nodeUtil2.isMap;\nvar isMap = nodeIsMap ? _baseUnary2(nodeIsMap) : _baseIsMap;\nvar isMap_1 = isMap;\nvar setTag$1 = \"[object Set]\";\nfunction baseIsSet(value) {\n return isObjectLike_12(value) && _getTag(value) == setTag$1;\n}\nvar _baseIsSet = baseIsSet;\nvar nodeIsSet = _nodeUtil2 && _nodeUtil2.isSet;\nvar isSet = nodeIsSet ? _baseUnary2(nodeIsSet) : _baseIsSet;\nvar isSet_1 = isSet;\nvar CLONE_DEEP_FLAG$2 = 1;\nvar CLONE_FLAT_FLAG$1 = 2;\nvar CLONE_SYMBOLS_FLAG$2 = 4;\nvar argsTag = \"[object Arguments]\";\nvar arrayTag = \"[object Array]\";\nvar boolTag = \"[object Boolean]\";\nvar dateTag = \"[object Date]\";\nvar errorTag = \"[object Error]\";\nvar funcTag2 = \"[object Function]\";\nvar genTag2 = \"[object GeneratorFunction]\";\nvar mapTag2 = \"[object Map]\";\nvar numberTag = \"[object Number]\";\nvar objectTag$12 = \"[object Object]\";\nvar regexpTag = \"[object RegExp]\";\nvar setTag2 = \"[object Set]\";\nvar stringTag = \"[object String]\";\nvar symbolTag = \"[object Symbol]\";\nvar weakMapTag2 = \"[object WeakMap]\";\nvar arrayBufferTag = \"[object ArrayBuffer]\";\nvar dataViewTag2 = \"[object DataView]\";\nvar float32Tag2 = \"[object Float32Array]\";\nvar float64Tag2 = \"[object Float64Array]\";\nvar int8Tag2 = \"[object Int8Array]\";\nvar int16Tag2 = \"[object Int16Array]\";\nvar int32Tag2 = \"[object Int32Array]\";\nvar uint8Tag2 = \"[object Uint8Array]\";\nvar uint8ClampedTag2 = \"[object Uint8ClampedArray]\";\nvar uint16Tag2 = \"[object Uint16Array]\";\nvar uint32Tag2 = \"[object Uint32Array]\";\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag2] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag2] = cloneableTags[float64Tag2] = cloneableTags[int8Tag2] = cloneableTags[int16Tag2] = cloneableTags[int32Tag2] = cloneableTags[mapTag2] = cloneableTags[numberTag] = cloneableTags[objectTag$12] = cloneableTags[regexpTag] = cloneableTags[setTag2] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag2] = cloneableTags[uint8ClampedTag2] = cloneableTags[uint16Tag2] = cloneableTags[uint32Tag2] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag2] = cloneableTags[weakMapTag2] = false;\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result, isDeep = bitmask & CLONE_DEEP_FLAG$2, isFlat = bitmask & CLONE_FLAT_FLAG$1, isFull = bitmask & CLONE_SYMBOLS_FLAG$2;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== void 0) {\n return result;\n }\n if (!isObject_12(value)) {\n return value;\n }\n var isArr = isArray_1(value);\n if (isArr) {\n result = _initCloneArray(value);\n if (!isDeep) {\n return _copyArray(value, result);\n }\n } else {\n var tag = _getTag(value), isFunc = tag == funcTag2 || tag == genTag2;\n if (isBuffer_12(value)) {\n return _cloneBuffer(value, isDeep);\n }\n if (tag == objectTag$12 || tag == argsTag || isFunc && !object) {\n result = isFlat || isFunc ? {} : _initCloneObject(value);\n if (!isDeep) {\n return isFlat ? _copySymbolsIn(value, _baseAssignIn(result, value)) : _copySymbols(value, _baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = _initCloneByTag(value, tag, isDeep);\n }\n }\n stack || (stack = new _Stack());\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n if (isSet_1(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap_1(value)) {\n value.forEach(function(subValue, key2) {\n result.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));\n });\n }\n var keysFunc = isFull ? isFlat ? _getAllKeysIn : _getAllKeys : isFlat ? keysIn_1 : keys_1;\n var props = isArr ? void 0 : keysFunc(value);\n _arrayEach(props || value, function(subValue, key2) {\n if (props) {\n key2 = subValue;\n subValue = value[key2];\n }\n _assignValue(result, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));\n });\n return result;\n}\nvar _baseClone = baseClone;\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : void 0;\n}\nvar last_1 = last;\nfunction baseSlice(array, start3, end3) {\n var index7 = -1, length = array.length;\n if (start3 < 0) {\n start3 = -start3 > length ? 0 : length + start3;\n }\n end3 = end3 > length ? length : end3;\n if (end3 < 0) {\n end3 += length;\n }\n length = start3 > end3 ? 0 : end3 - start3 >>> 0;\n start3 >>>= 0;\n var result = Array(length);\n while (++index7 < length) {\n result[index7] = array[index7 + start3];\n }\n return result;\n}\nvar _baseSlice = baseSlice;\nfunction parent(object, path) {\n return path.length < 2 ? object : _baseGet(object, _baseSlice(path, 0, -1));\n}\nvar _parent = parent;\nfunction baseUnset(object, path) {\n path = _castPath(path, object);\n object = _parent(object, path);\n return object == null || delete object[_toKey(last_1(path))];\n}\nvar _baseUnset = baseUnset;\nvar objectTag = \"[object Object]\";\nvar funcProto2 = Function.prototype;\nvar objectProto2 = Object.prototype;\nvar funcToString2 = funcProto2.toString;\nvar hasOwnProperty2 = objectProto2.hasOwnProperty;\nvar objectCtorString = funcToString2.call(Object);\nfunction isPlainObject$1(value) {\n if (!isObjectLike_12(value) || _baseGetTag2(value) != objectTag) {\n return false;\n }\n var proto = _getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty2.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor == \"function\" && Ctor instanceof Ctor && funcToString2.call(Ctor) == objectCtorString;\n}\nvar isPlainObject_1 = isPlainObject$1;\nfunction customOmitClone(value) {\n return isPlainObject_1(value) ? void 0 : value;\n}\nvar _customOmitClone = customOmitClone;\nvar spreadableSymbol = _Symbol2 ? _Symbol2.isConcatSpreadable : void 0;\nfunction isFlattenable(value) {\n return isArray_1(value) || isArguments_1(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\nvar _isFlattenable = isFlattenable;\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index7 = -1, length = array.length;\n predicate || (predicate = _isFlattenable);\n result || (result = []);\n while (++index7 < length) {\n var value = array[index7];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n _arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\nvar _baseFlatten = baseFlatten;\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? _baseFlatten(array, 1) : [];\n}\nvar flatten_1 = flatten;\nfunction flatRest(func) {\n return _setToString(_overRest(func, void 0, flatten_1), func + \"\");\n}\nvar _flatRest = flatRest;\nvar CLONE_DEEP_FLAG$1 = 1;\nvar CLONE_FLAT_FLAG = 2;\nvar CLONE_SYMBOLS_FLAG$1 = 4;\nvar omit = _flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = _arrayMap(paths, function(path) {\n path = _castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n _copyObject(object, _getAllKeysIn(object), result);\n if (isDeep) {\n result = _baseClone(result, CLONE_DEEP_FLAG$1 | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG$1, _customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n _baseUnset(result, paths[length]);\n }\n return result;\n});\nvar omit_1 = omit;\nvar eventEditorStore = createStore3(\"event-editor\")({\n blur: null,\n focus: null,\n last: null\n});\nvar eventEditorActions = eventEditorStore.set;\nvar eventEditorSelectors = eventEditorStore.get;\nvar useEventEditorSelectors = eventEditorStore.use;\nfunction assignMergeValue(object, key, value) {\n if (value !== void 0 && !eq_12(object[key], value) || value === void 0 && !(key in object)) {\n _baseAssignValue(object, key, value);\n }\n}\nvar _assignMergeValue = assignMergeValue;\nfunction isArrayLikeObject(value) {\n return isObjectLike_12(value) && isArrayLike_1(value);\n}\nvar isArrayLikeObject_1 = isArrayLikeObject;\nfunction safeGet(object, key) {\n if (key === \"constructor\" && typeof object[key] === \"function\") {\n return;\n }\n if (key == \"__proto__\") {\n return;\n }\n return object[key];\n}\nvar _safeGet = safeGet;\nfunction toPlainObject(value) {\n return _copyObject(value, keysIn_1(value));\n}\nvar toPlainObject_1 = toPlainObject;\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = _safeGet(object, key), srcValue = _safeGet(source, key), stacked = stack.get(srcValue);\n if (stacked) {\n _assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer ? customizer(objValue, srcValue, key + \"\", object, source, stack) : void 0;\n var isCommon = newValue === void 0;\n if (isCommon) {\n var isArr = isArray_1(srcValue), isBuff = !isArr && isBuffer_12(srcValue), isTyped = !isArr && !isBuff && isTypedArray_1(srcValue);\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray_1(objValue)) {\n newValue = objValue;\n } else if (isArrayLikeObject_1(objValue)) {\n newValue = _copyArray(objValue);\n } else if (isBuff) {\n isCommon = false;\n newValue = _cloneBuffer(srcValue, true);\n } else if (isTyped) {\n isCommon = false;\n newValue = _cloneTypedArray(srcValue, true);\n } else {\n newValue = [];\n }\n } else if (isPlainObject_1(srcValue) || isArguments_1(srcValue)) {\n newValue = objValue;\n if (isArguments_1(objValue)) {\n newValue = toPlainObject_1(objValue);\n } else if (!isObject_12(objValue) || isFunction_12(objValue)) {\n newValue = _initCloneObject(srcValue);\n }\n } else {\n isCommon = false;\n }\n }\n if (isCommon) {\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack[\"delete\"](srcValue);\n }\n _assignMergeValue(object, key, newValue);\n}\nvar _baseMergeDeep = baseMergeDeep;\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n _baseFor(source, function(srcValue, key) {\n stack || (stack = new _Stack());\n if (isObject_12(srcValue)) {\n _baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n } else {\n var newValue = customizer ? customizer(_safeGet(object, key), srcValue, key + \"\", object, source, stack) : void 0;\n if (newValue === void 0) {\n newValue = srcValue;\n }\n _assignMergeValue(object, key, newValue);\n }\n }, keysIn_1);\n}\nvar _baseMerge = baseMerge;\nfunction customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject_12(objValue) && isObject_12(srcValue)) {\n stack.set(srcValue, objValue);\n _baseMerge(objValue, srcValue, void 0, customDefaultsMerge, stack);\n stack[\"delete\"](srcValue);\n }\n return objValue;\n}\nvar _customDefaultsMerge = customDefaultsMerge;\nfunction createAssigner(assigner) {\n return _baseRest(function(object, sources) {\n var index7 = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;\n customizer = assigner.length > 3 && typeof customizer == \"function\" ? (length--, customizer) : void 0;\n if (guard && _isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? void 0 : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index7 < length) {\n var source = sources[index7];\n if (source) {\n assigner(object, source, index7, customizer);\n }\n }\n return object;\n });\n}\nvar _createAssigner = createAssigner;\nvar mergeWith = _createAssigner(function(object, source, srcIndex, customizer) {\n _baseMerge(object, source, srcIndex, customizer);\n});\nvar mergeWith_1 = mergeWith;\nvar defaultsDeep = _baseRest(function(args) {\n args.push(void 0, _customDefaultsMerge);\n return _apply(mergeWith_1, void 0, args);\n});\nvar defaultsDeep_1 = defaultsDeep;\nvar overridePluginsByKey = (plugin2, overrideByKey2 = {}, nested) => {\n var _overrideByKey$plugin;\n if (overrideByKey2[plugin2.key]) {\n const _a = overrideByKey2[plugin2.key], {\n plugins: pluginOverridesPlugins,\n then: pluginOverridesThen\n } = _a, pluginOverrides = __objRest(_a, [\n \"plugins\",\n \"then\"\n ]);\n plugin2 = defaultsDeep_1(pluginOverrides, plugin2);\n if (!nested) {\n pluginOverridesPlugins === null || pluginOverridesPlugins === void 0 ? void 0 : pluginOverridesPlugins.forEach((pOverrides) => {\n if (!plugin2.plugins)\n plugin2.plugins = [];\n const found = plugin2.plugins.find((p4) => p4.key === pOverrides.key);\n if (!found)\n plugin2.plugins.push(pOverrides);\n });\n }\n }\n if (plugin2.plugins) {\n plugin2.plugins = plugin2.plugins.map((p4) => overridePluginsByKey(p4, overrideByKey2, true));\n }\n const {\n then\n } = plugin2;\n if (then) {\n plugin2.then = (editor, p4) => {\n const pluginThen = __spreadValues({\n key: plugin2.key\n }, then(editor, p4));\n return defaultsDeep_1(overridePluginsByKey(pluginThen, overrideByKey2), pluginThen);\n };\n } else if ((_overrideByKey$plugin = overrideByKey2[plugin2.key]) !== null && _overrideByKey$plugin !== void 0 && _overrideByKey$plugin.then) {\n plugin2.then = overrideByKey2[plugin2.key].then;\n }\n return plugin2;\n};\nvar createPluginFactory = (defaultPlugin) => (override, overrideByKey2 = {}) => {\n overrideByKey2[defaultPlugin.key] = override;\n return overridePluginsByKey(__spreadValues({}, defaultPlugin), overrideByKey2);\n};\nvar KEY_DESERIALIZE_AST = \"deserializeAst\";\nvar createDeserializeAstPlugin = createPluginFactory({\n key: KEY_DESERIALIZE_AST,\n editor: {\n insertData: {\n format: \"application/x-slate-fragment\",\n getFragment: ({\n data\n }) => {\n const decoded = decodeURIComponent(window.atob(data));\n return JSON.parse(decoded);\n }\n }\n }\n});\nvar KEY_EVENT_EDITOR = \"event-editor\";\nvar createEventEditorPlugin = createPluginFactory({\n key: KEY_EVENT_EDITOR,\n handlers: {\n onFocus: (editor) => () => {\n eventEditorActions.focus(editor.id);\n },\n onBlur: (editor) => () => {\n const focus = eventEditorSelectors.focus();\n if (focus === editor.id) {\n eventEditorActions.focus(null);\n }\n eventEditorActions.blur(editor.id);\n }\n }\n});\nvar withTHistory = (editor) => withHistory(editor);\nvar createHistoryPlugin = createPluginFactory({\n key: \"history\",\n withOverrides: withTHistory\n});\nvar KEY_INLINE_VOID = \"inline-void\";\nvar withInlineVoid = (editor) => {\n const {\n isInline: isInline2\n } = editor;\n const {\n isVoid: isVoid2\n } = editor;\n const inlineTypes = [];\n const voidTypes = [];\n editor.plugins.forEach((plugin2) => {\n if (plugin2.isInline) {\n inlineTypes.push(plugin2.type);\n }\n if (plugin2.isVoid) {\n voidTypes.push(plugin2.type);\n }\n });\n editor.isInline = (element4) => {\n return inlineTypes.includes(element4.type) ? true : isInline2(element4);\n };\n editor.isVoid = (element4) => voidTypes.includes(element4.type) ? true : isVoid2(element4);\n return editor;\n};\nvar createInlineVoidPlugin = createPluginFactory({\n key: KEY_INLINE_VOID,\n withOverrides: withInlineVoid\n});\nvar getInjectedPlugins = (editor, plugin2) => {\n const injectedPlugins = [];\n [...editor.plugins].reverse().forEach((p4) => {\n var _p$inject$pluginsByKe;\n const injectedPlugin = (_p$inject$pluginsByKe = p4.inject.pluginsByKey) === null || _p$inject$pluginsByKe === void 0 ? void 0 : _p$inject$pluginsByKe[plugin2.key];\n if (injectedPlugin)\n injectedPlugins.push(injectedPlugin);\n });\n return [plugin2, ...injectedPlugins];\n};\nvar pipeInsertDataQuery = (plugins, {\n data,\n dataTransfer\n}) => plugins.every((p4) => {\n var _p$editor, _p$editor$insertData;\n const query = (_p$editor = p4.editor) === null || _p$editor === void 0 ? void 0 : (_p$editor$insertData = _p$editor.insertData) === null || _p$editor$insertData === void 0 ? void 0 : _p$editor$insertData.query;\n return !query || query({\n data,\n dataTransfer\n });\n});\nvar pipeInsertFragment = (editor, injectedPlugins, _a) => {\n var _b = _a, {\n fragment\n } = _b, options = __objRest(_b, [\n \"fragment\"\n ]);\n withoutNormalizing(editor, () => {\n injectedPlugins.some((p4) => {\n var _p$editor, _p$editor$insertData, _p$editor$insertData$;\n return ((_p$editor = p4.editor) === null || _p$editor === void 0 ? void 0 : (_p$editor$insertData = _p$editor.insertData) === null || _p$editor$insertData === void 0 ? void 0 : (_p$editor$insertData$ = _p$editor$insertData.preInsert) === null || _p$editor$insertData$ === void 0 ? void 0 : _p$editor$insertData$.call(_p$editor$insertData, fragment, options)) === true;\n });\n editor.insertFragment(fragment);\n });\n};\nvar pipeTransformData = (plugins, {\n data,\n dataTransfer\n}) => {\n plugins.forEach((p4) => {\n var _p$editor, _p$editor$insertData;\n const transformData = (_p$editor = p4.editor) === null || _p$editor === void 0 ? void 0 : (_p$editor$insertData = _p$editor.insertData) === null || _p$editor$insertData === void 0 ? void 0 : _p$editor$insertData.transformData;\n if (!transformData)\n return;\n data = transformData(data, {\n dataTransfer\n });\n });\n return data;\n};\nvar pipeTransformFragment = (plugins, _a) => {\n var _b = _a, {\n fragment\n } = _b, options = __objRest(_b, [\n \"fragment\"\n ]);\n plugins.forEach((p4) => {\n var _p$editor, _p$editor$insertData;\n const transformFragment = (_p$editor = p4.editor) === null || _p$editor === void 0 ? void 0 : (_p$editor$insertData = _p$editor.insertData) === null || _p$editor$insertData === void 0 ? void 0 : _p$editor$insertData.transformFragment;\n if (!transformFragment)\n return;\n fragment = transformFragment(fragment, options);\n });\n return fragment;\n};\nvar withInsertData = (editor) => {\n const {\n insertData\n } = editor;\n editor.insertData = (dataTransfer) => {\n const inserted = [...editor.plugins].reverse().some((plugin2) => {\n var _fragment;\n const insertDataOptions = plugin2.editor.insertData;\n if (!insertDataOptions)\n return false;\n const injectedPlugins = getInjectedPlugins(editor, plugin2);\n const {\n format: format4,\n getFragment\n } = insertDataOptions;\n if (!format4)\n return false;\n let data = dataTransfer.getData(format4);\n if (!data)\n return;\n if (!pipeInsertDataQuery(injectedPlugins, {\n data,\n dataTransfer\n })) {\n return false;\n }\n data = pipeTransformData(injectedPlugins, {\n data,\n dataTransfer\n });\n let fragment = getFragment === null || getFragment === void 0 ? void 0 : getFragment({\n data,\n dataTransfer\n });\n if (!((_fragment = fragment) !== null && _fragment !== void 0 && _fragment.length))\n return false;\n fragment = pipeTransformFragment(injectedPlugins, {\n fragment,\n data,\n dataTransfer\n });\n if (!fragment.length)\n return false;\n pipeInsertFragment(editor, injectedPlugins, {\n fragment,\n data,\n dataTransfer\n });\n return true;\n });\n if (inserted)\n return;\n insertData(dataTransfer);\n };\n return editor;\n};\nvar KEY_INSERT_DATA = \"insertData\";\nvar createInsertDataPlugin = createPluginFactory({\n key: KEY_INSERT_DATA,\n withOverrides: withInsertData\n});\nvar withTReact = (editor) => withReact(editor);\nvar createReactPlugin = createPluginFactory({\n key: \"react\",\n withOverrides: withTReact\n});\nvar htmlStringToDOMNode = (rawHtml, stripWhitespace = true) => {\n const node = document.createElement(\"body\");\n node.innerHTML = rawHtml;\n if (stripWhitespace) {\n node.innerHTML = node.innerHTML.replace(/(\\r\\n|\\n|\\r|\\t)/gm, \"\");\n }\n return node;\n};\nfunction isObject3(o3) {\n return Object.prototype.toString.call(o3) === \"[object Object]\";\n}\nfunction isPlainObject2(o3) {\n var ctor, prot;\n if (isObject3(o3) === false)\n return false;\n ctor = o3.constructor;\n if (ctor === void 0)\n return true;\n prot = ctor.prototype;\n if (isObject3(prot) === false)\n return false;\n if (prot.hasOwnProperty(\"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nfunction _defineProperty3(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar ANCHOR = /* @__PURE__ */ new WeakMap();\nvar FOCUS = /* @__PURE__ */ new WeakMap();\nvar Token = class {\n};\nvar AnchorToken = class extends Token {\n constructor() {\n var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n super();\n var {\n offset: offset3,\n path\n } = props;\n this.offset = offset3;\n this.path = path;\n }\n};\nvar FocusToken = class extends Token {\n constructor() {\n var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n super();\n var {\n offset: offset3,\n path\n } = props;\n this.offset = offset3;\n this.path = path;\n }\n};\nvar addAnchorToken = (text4, token) => {\n var offset3 = text4.text.length;\n ANCHOR.set(text4, [offset3, token]);\n};\nvar getAnchorOffset = (text4) => {\n return ANCHOR.get(text4);\n};\nvar addFocusToken = (text4, token) => {\n var offset3 = text4.text.length;\n FOCUS.set(text4, [offset3, token]);\n};\nvar getFocusOffset = (text4) => {\n return FOCUS.get(text4);\n};\nfunction ownKeys$13(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread$13(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys$13(Object(source), true).forEach(function(key) {\n _defineProperty3(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$13(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar STRINGS = /* @__PURE__ */ new WeakSet();\nvar resolveDescendants = (children) => {\n var nodes = [];\n var addChild = (child2) => {\n if (child2 == null) {\n return;\n }\n var prev = nodes[nodes.length - 1];\n if (typeof child2 === \"string\") {\n var text4 = {\n text: child2\n };\n STRINGS.add(text4);\n child2 = text4;\n }\n if (Text.isText(child2)) {\n var c4 = child2;\n if (Text.isText(prev) && STRINGS.has(prev) && STRINGS.has(c4) && Text.equals(prev, c4, {\n loose: true\n })) {\n prev.text += c4.text;\n } else {\n nodes.push(c4);\n }\n } else if (Element2.isElement(child2)) {\n nodes.push(child2);\n } else if (child2 instanceof Token) {\n var n6 = nodes[nodes.length - 1];\n if (!Text.isText(n6)) {\n addChild(\"\");\n n6 = nodes[nodes.length - 1];\n }\n if (child2 instanceof AnchorToken) {\n addAnchorToken(n6, child2);\n } else if (child2 instanceof FocusToken) {\n addFocusToken(n6, child2);\n }\n } else {\n throw new Error(\"Unexpected hyperscript child object: \".concat(child2));\n }\n };\n for (var child of children.flat(Infinity)) {\n addChild(child);\n }\n return nodes;\n};\nfunction createAnchor(tagName, attributes, children) {\n return new AnchorToken(attributes);\n}\nfunction createCursor(tagName, attributes, children) {\n return [new AnchorToken(attributes), new FocusToken(attributes)];\n}\nfunction createElement3(tagName, attributes, children) {\n return _objectSpread$13(_objectSpread$13({}, attributes), {}, {\n children: resolveDescendants(children)\n });\n}\nfunction createFocus(tagName, attributes, children) {\n return new FocusToken(attributes);\n}\nfunction createFragment(tagName, attributes, children) {\n return resolveDescendants(children);\n}\nfunction createSelection(tagName, attributes, children) {\n var anchor = children.find((c4) => c4 instanceof AnchorToken);\n var focus = children.find((c4) => c4 instanceof FocusToken);\n if (!anchor || anchor.offset == null || anchor.path == null) {\n throw new Error(\"The hyperscript tag must have an tag as a child with `path` and `offset` attributes defined.\");\n }\n if (!focus || focus.offset == null || focus.path == null) {\n throw new Error(\"The hyperscript tag must have a tag as a child with `path` and `offset` attributes defined.\");\n }\n return _objectSpread$13({\n anchor: {\n offset: anchor.offset,\n path: anchor.path\n },\n focus: {\n offset: focus.offset,\n path: focus.path\n }\n }, attributes);\n}\nfunction createText(tagName, attributes, children) {\n var nodes = resolveDescendants(children);\n if (nodes.length > 1) {\n throw new Error(\"The hyperscript tag must only contain a single node's worth of children.\");\n }\n var [node] = nodes;\n if (node == null) {\n node = {\n text: \"\"\n };\n }\n if (!Text.isText(node)) {\n throw new Error(\"\\n The hyperscript tag can only contain text content as children.\");\n }\n STRINGS.delete(node);\n Object.assign(node, attributes);\n return node;\n}\nvar createEditor2 = (makeEditor) => (tagName, attributes, children) => {\n var otherChildren = [];\n var selectionChild;\n for (var child of children) {\n if (Range.isRange(child)) {\n selectionChild = child;\n } else {\n otherChildren.push(child);\n }\n }\n var descendants = resolveDescendants(otherChildren);\n var selection = {};\n var editor = makeEditor();\n Object.assign(editor, attributes);\n editor.children = descendants;\n for (var [node, path] of Node2.texts(editor)) {\n var anchor = getAnchorOffset(node);\n var focus = getFocusOffset(node);\n if (anchor != null) {\n var [offset3] = anchor;\n selection.anchor = {\n path,\n offset: offset3\n };\n }\n if (focus != null) {\n var [_offset] = focus;\n selection.focus = {\n path,\n offset: _offset\n };\n }\n }\n if (selection.anchor && !selection.focus) {\n throw new Error(\"Slate hyperscript ranges must have both `` and `` defined if one is defined, but you only defined ``. For collapsed selections, use `` instead.\");\n }\n if (!selection.anchor && selection.focus) {\n throw new Error(\"Slate hyperscript ranges must have both `` and `` defined if one is defined, but you only defined ``. For collapsed selections, use `` instead.\");\n }\n if (selectionChild != null) {\n editor.selection = selectionChild;\n } else if (Range.isRange(selection)) {\n editor.selection = selection;\n }\n return editor;\n};\nfunction ownKeys3(object, enumerableOnly) {\n var keys3 = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys3.push.apply(keys3, symbols);\n }\n return keys3;\n}\nfunction _objectSpread3(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3] != null ? arguments[i3] : {};\n if (i3 % 2) {\n ownKeys3(Object(source), true).forEach(function(key) {\n _defineProperty3(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys3(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar DEFAULT_CREATORS = {\n anchor: createAnchor,\n cursor: createCursor,\n editor: createEditor2(createEditor),\n element: createElement3,\n focus: createFocus,\n fragment: createFragment,\n selection: createSelection,\n text: createText\n};\nvar createHyperscript = function createHyperscript2() {\n var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n var {\n elements = {}\n } = options;\n var elementCreators = normalizeElements(elements);\n var creators = _objectSpread3(_objectSpread3(_objectSpread3({}, DEFAULT_CREATORS), elementCreators), options.creators);\n var jsx3 = createFactory(creators);\n return jsx3;\n};\nvar createFactory = (creators) => {\n var jsx3 = function jsx4(tagName, attributes) {\n for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n children[_key - 2] = arguments[_key];\n }\n var creator = creators[tagName];\n if (!creator) {\n throw new Error(\"No hyperscript creator found for tag: <\".concat(tagName, \">\"));\n }\n if (attributes == null) {\n attributes = {};\n }\n if (!isPlainObject2(attributes)) {\n children = [attributes].concat(children);\n attributes = {};\n }\n children = children.filter((child) => Boolean(child)).flat();\n var ret = creator(tagName, attributes, children);\n return ret;\n };\n return jsx3;\n};\nvar normalizeElements = (elements) => {\n var creators = {};\n var _loop = function _loop2(tagName2) {\n var props = elements[tagName2];\n if (typeof props !== \"object\") {\n throw new Error(\"Properties specified for a hyperscript shorthand should be an object, but for the custom element <\".concat(tagName2, \"> tag you passed: \").concat(props));\n }\n creators[tagName2] = (tagName3, attributes, children) => {\n return createElement3(\"element\", _objectSpread3(_objectSpread3({}, props), attributes), children);\n };\n };\n for (var tagName in elements) {\n _loop(tagName);\n }\n return creators;\n};\nvar jsx = createHyperscript();\nvar deserializeHtmlNodeChildren = (editor, node) => Array.from(node.childNodes).map(deserializeHtmlNode(editor)).flat();\nvar htmlBodyToFragment = (editor, element4) => {\n if (element4.nodeName === \"BODY\") {\n return jsx(\"fragment\", {}, deserializeHtmlNodeChildren(editor, element4));\n }\n};\nvar htmlBrToNewLine = (node) => {\n if (node.nodeName === \"BR\") {\n return \"\\n\";\n }\n};\nvar pluginDeserializeHtml = (editor, plugin2, {\n element: el,\n deserializeLeaf\n}) => {\n var _getNode;\n const {\n deserializeHtml: deserializeHtml2,\n isElement: isElementRoot,\n isLeaf: isLeafRoot,\n type\n } = plugin2;\n if (!deserializeHtml2)\n return;\n const {\n attributeNames,\n query,\n isLeaf: isLeafRule,\n isElement: isElementRule,\n rules\n } = deserializeHtml2;\n let {\n getNode: getNode2\n } = deserializeHtml2;\n const isElement7 = isElementRule || isElementRoot;\n const isLeaf = isLeafRule || isLeafRoot;\n if (!deserializeLeaf && !isElement7) {\n return;\n }\n if (deserializeLeaf && !isLeaf) {\n return;\n }\n if (rules) {\n const isValid = rules.some(({\n validNodeName = \"*\",\n validStyle,\n validClassName,\n validAttribute\n }) => {\n if (validNodeName) {\n const validNodeNames = castArray_1(validNodeName);\n if (validNodeNames.length && !validNodeNames.includes(el.nodeName) && validNodeName !== \"*\")\n return false;\n }\n if (validClassName && !el.className.includes(validClassName))\n return false;\n if (validStyle) {\n for (const [key, value] of Object.entries(validStyle)) {\n var _plugin$inject$props;\n const values2 = castArray_1(value);\n if (!values2.includes(el.style[key]) && value !== \"*\")\n return;\n if (value === \"*\" && !el.style[key])\n return;\n const defaultNodeValue = (_plugin$inject$props = plugin2.inject.props) === null || _plugin$inject$props === void 0 ? void 0 : _plugin$inject$props.defaultNodeValue;\n if (defaultNodeValue && defaultNodeValue === el.style[key]) {\n return false;\n }\n }\n }\n if (validAttribute) {\n if (typeof validAttribute === \"string\") {\n if (!el.getAttributeNames().includes(validAttribute))\n return false;\n } else {\n for (const [attributeName, attributeValue] of Object.entries(validAttribute)) {\n const attributeValues = castArray_1(attributeValue);\n const elAttribute = el.getAttribute(attributeName);\n if (!elAttribute || !attributeValues.includes(elAttribute))\n return false;\n }\n }\n }\n return true;\n });\n if (!isValid)\n return;\n }\n if (query && !query(el)) {\n return;\n }\n if (!getNode2) {\n if (isElement7) {\n getNode2 = () => ({\n type\n });\n } else if (isLeaf) {\n getNode2 = () => ({\n [type]: true\n });\n } else {\n return;\n }\n }\n let node = (_getNode = getNode2(el, {})) !== null && _getNode !== void 0 ? _getNode : {};\n if (!Object.keys(node).length)\n return;\n const injectedPlugins = getInjectedPlugins(editor, plugin2);\n injectedPlugins.forEach((injectedPlugin) => {\n var _injectedPlugin$deser, _injectedPlugin$deser2;\n const res = (_injectedPlugin$deser = injectedPlugin.deserializeHtml) === null || _injectedPlugin$deser === void 0 ? void 0 : (_injectedPlugin$deser2 = _injectedPlugin$deser.getNode) === null || _injectedPlugin$deser2 === void 0 ? void 0 : _injectedPlugin$deser2.call(_injectedPlugin$deser, el, node);\n if (res) {\n node = __spreadValues(__spreadValues({}, node), res);\n }\n });\n if (attributeNames) {\n const elementAttributes = {};\n const elementAttributeNames = el.getAttributeNames();\n for (const elementAttributeName of elementAttributeNames) {\n if (attributeNames.includes(elementAttributeName)) {\n elementAttributes[elementAttributeName] = el.getAttribute(elementAttributeName);\n }\n }\n if (Object.keys(elementAttributes).length) {\n node.attributes = elementAttributes;\n }\n }\n return __spreadProps(__spreadValues({}, deserializeHtml2), {\n node\n });\n};\nvar pipeDeserializeHtmlElement = (editor, element4) => {\n let result;\n [...editor.plugins].reverse().some((plugin2) => {\n result = pluginDeserializeHtml(editor, plugin2, {\n element: element4\n });\n return !!result;\n });\n return result;\n};\nvar htmlElementToElement = (editor, element4) => {\n const deserialized = pipeDeserializeHtmlElement(editor, element4);\n if (deserialized) {\n var _node$children;\n const {\n node,\n withoutChildren\n } = deserialized;\n let descendants = (_node$children = node.children) !== null && _node$children !== void 0 ? _node$children : deserializeHtmlNodeChildren(editor, element4);\n if (!descendants.length || withoutChildren) {\n descendants = [{\n text: \"\"\n }];\n }\n return jsx(\"element\", node, descendants);\n }\n};\nvar merge = _createAssigner(function(object, source, srcIndex) {\n _baseMerge(object, source, srcIndex);\n});\nvar merge_1 = merge;\nvar mergeDeepToNodes = (options) => {\n applyDeepToNodes(__spreadProps(__spreadValues({}, options), {\n apply: merge_1\n }));\n};\nvar pipeDeserializeHtmlLeaf = (editor, element4) => {\n let node = {};\n [...editor.plugins].reverse().forEach((plugin2) => {\n const deserialized = pluginDeserializeHtml(editor, plugin2, {\n element: element4,\n deserializeLeaf: true\n });\n if (!deserialized)\n return;\n node = __spreadValues(__spreadValues({}, node), deserialized.node);\n });\n return node;\n};\nvar htmlElementToLeaf = (editor, element4) => {\n const node = pipeDeserializeHtmlLeaf(editor, element4);\n return deserializeHtmlNodeChildren(editor, element4).reduce((arr, child) => {\n if (!child)\n return arr;\n if (isElement2(child)) {\n if (Object.keys(node).length) {\n mergeDeepToNodes({\n node: child,\n source: node,\n query: {\n filter: ([n6]) => isText(n6)\n }\n });\n }\n arr.push(child);\n } else {\n const attributes = __spreadValues({}, node);\n if (isText(child) && child.text) {\n Object.keys(attributes).forEach((key) => {\n if (attributes[key] && child[key]) {\n attributes[key] = child[key];\n }\n });\n }\n arr.push(jsx(\"text\", attributes, child));\n }\n return arr;\n }, []);\n};\nvar isHtmlText = (node) => node.nodeType === Node.TEXT_NODE;\nvar htmlTextNodeToString = (node) => {\n if (isHtmlText(node)) {\n return node.nodeValue === \"\\n\" ? null : node.textContent;\n }\n};\nvar isHtmlElement = (node) => node.nodeType === Node.ELEMENT_NODE;\nvar deserializeHtmlNode = (editor) => (node) => {\n const textNode = htmlTextNodeToString(node);\n if (textNode)\n return textNode;\n if (!isHtmlElement(node))\n return null;\n const breakLine = htmlBrToNewLine(node);\n if (breakLine)\n return breakLine;\n const fragment = htmlBodyToFragment(editor, node);\n if (fragment)\n return fragment;\n const element4 = htmlElementToElement(editor, node);\n if (element4)\n return element4;\n return htmlElementToLeaf(editor, node);\n};\nvar deserializeHtmlElement = (editor, element4) => {\n return deserializeHtmlNode(editor)(element4);\n};\nvar deserializeHtml = (editor, {\n element: element4,\n stripWhitespace = true\n}) => {\n if (typeof element4 === \"string\") {\n element4 = htmlStringToDOMNode(element4, stripWhitespace);\n }\n const fragment = deserializeHtmlElement(editor, element4);\n return normalizeDescendantsToDocumentFragment(editor, {\n descendants: fragment\n });\n};\nvar parseHtmlDocument = (html) => {\n return new DOMParser().parseFromString(html, \"text/html\");\n};\nvar KEY_DESERIALIZE_HTML = \"deserializeHtml\";\nvar createDeserializeHtmlPlugin = createPluginFactory({\n key: KEY_DESERIALIZE_HTML,\n then: (editor) => ({\n editor: {\n insertData: {\n format: \"text/html\",\n getFragment: ({\n data\n }) => {\n const document2 = parseHtmlDocument(data);\n return deserializeHtml(editor, {\n element: document2.body\n });\n }\n }\n }\n })\n});\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index7 = -1, length = array == null ? 0 : array.length;\n while (++index7 < length) {\n var value = array[index7];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\nvar _arrayAggregator = arrayAggregator;\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n _baseEach(collection, function(value, key, collection2) {\n setter(accumulator, value, iteratee(value), collection2);\n });\n return accumulator;\n}\nvar _baseAggregator = baseAggregator;\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray_1(collection) ? _arrayAggregator : _baseAggregator, accumulator = initializer ? initializer() : {};\n return func(collection, setter, _baseIteratee(iteratee), accumulator);\n };\n}\nvar _createAggregator = createAggregator;\nvar keyBy = _createAggregator(function(result, value, key) {\n _baseAssignValue(result, key, value);\n});\nvar keyBy_1 = keyBy;\nfunction baseValues(object, props) {\n return _arrayMap(props, function(key) {\n return object[key];\n });\n}\nvar _baseValues = baseValues;\nfunction values(object) {\n return object == null ? [] : _baseValues(object, keys_1(object));\n}\nvar values_1 = values;\nvar mergeDeepPlugins = (editor, _plugin) => {\n const plugin2 = __spreadValues({}, _plugin);\n const {\n then\n } = plugin2;\n if (then) {\n delete plugin2.then;\n const {\n plugins: pluginPlugins\n } = plugin2;\n const pluginThen = mergeDeepPlugins(editor, defaultsDeep_1(then(editor, plugin2), plugin2));\n if (pluginPlugins && pluginThen.plugins) {\n const merged = merge_1(keyBy_1(pluginPlugins, \"key\"), keyBy_1(pluginThen.plugins, \"key\"));\n pluginThen.plugins = values_1(merged);\n }\n return pluginThen;\n }\n return plugin2;\n};\nvar setDefaultPlugin = (plugin2) => {\n if (plugin2.type === void 0)\n plugin2.type = plugin2.key;\n if (!plugin2.options)\n plugin2.options = {};\n if (!plugin2.inject)\n plugin2.inject = {};\n if (!plugin2.editor)\n plugin2.editor = {};\n return plugin2;\n};\nvar flattenDeepPlugins = (editor, plugins) => {\n if (!plugins)\n return;\n plugins.forEach((plugin2) => {\n let p4 = setDefaultPlugin(plugin2);\n p4 = mergeDeepPlugins(editor, p4);\n if (!editor.pluginsByKey[p4.key]) {\n editor.plugins.push(p4);\n editor.pluginsByKey[p4.key] = p4;\n } else {\n const index7 = editor.plugins.indexOf(editor.pluginsByKey[p4.key]);\n const mergedPlugin = defaultsDeep_1(p4, editor.pluginsByKey[p4.key]);\n if (index7 >= 0) {\n editor.plugins[index7] = mergedPlugin;\n }\n editor.pluginsByKey[p4.key] = mergedPlugin;\n }\n flattenDeepPlugins(editor, p4.plugins);\n });\n};\nvar setPlatePlugins = (editor, {\n disableCorePlugins,\n plugins: _plugins = []\n}) => {\n let plugins = [];\n if (disableCorePlugins !== true) {\n const dcp = disableCorePlugins;\n if (typeof dcp !== \"object\" || !dcp.react) {\n var _ref, _editor$pluginsByKey;\n plugins.push((_ref = (_editor$pluginsByKey = editor.pluginsByKey) === null || _editor$pluginsByKey === void 0 ? void 0 : _editor$pluginsByKey.react) !== null && _ref !== void 0 ? _ref : createReactPlugin());\n }\n if (typeof dcp !== \"object\" || !dcp.history) {\n var _ref2, _editor$pluginsByKey2;\n plugins.push((_ref2 = (_editor$pluginsByKey2 = editor.pluginsByKey) === null || _editor$pluginsByKey2 === void 0 ? void 0 : _editor$pluginsByKey2.history) !== null && _ref2 !== void 0 ? _ref2 : createHistoryPlugin());\n }\n if (typeof dcp !== \"object\" || !dcp.eventEditor) {\n var _ref3, _editor$pluginsByKey3;\n plugins.push((_ref3 = (_editor$pluginsByKey3 = editor.pluginsByKey) === null || _editor$pluginsByKey3 === void 0 ? void 0 : _editor$pluginsByKey3[KEY_EVENT_EDITOR]) !== null && _ref3 !== void 0 ? _ref3 : createEventEditorPlugin());\n }\n if (typeof dcp !== \"object\" || !dcp.inlineVoid) {\n var _ref4, _editor$pluginsByKey4;\n plugins.push((_ref4 = (_editor$pluginsByKey4 = editor.pluginsByKey) === null || _editor$pluginsByKey4 === void 0 ? void 0 : _editor$pluginsByKey4[KEY_INLINE_VOID]) !== null && _ref4 !== void 0 ? _ref4 : createInlineVoidPlugin());\n }\n if (typeof dcp !== \"object\" || !dcp.insertData) {\n var _ref5, _editor$pluginsByKey5;\n plugins.push((_ref5 = (_editor$pluginsByKey5 = editor.pluginsByKey) === null || _editor$pluginsByKey5 === void 0 ? void 0 : _editor$pluginsByKey5[KEY_INSERT_DATA]) !== null && _ref5 !== void 0 ? _ref5 : createInsertDataPlugin());\n }\n if (typeof dcp !== \"object\" || !dcp.deserializeHtml) {\n var _ref6, _editor$pluginsByKey6;\n plugins.push((_ref6 = (_editor$pluginsByKey6 = editor.pluginsByKey) === null || _editor$pluginsByKey6 === void 0 ? void 0 : _editor$pluginsByKey6[KEY_DESERIALIZE_HTML]) !== null && _ref6 !== void 0 ? _ref6 : createDeserializeHtmlPlugin());\n }\n if (typeof dcp !== \"object\" || !dcp.deserializeAst) {\n var _ref7, _editor$pluginsByKey7;\n plugins.push((_ref7 = (_editor$pluginsByKey7 = editor.pluginsByKey) === null || _editor$pluginsByKey7 === void 0 ? void 0 : _editor$pluginsByKey7[KEY_DESERIALIZE_AST]) !== null && _ref7 !== void 0 ? _ref7 : createDeserializeAstPlugin());\n }\n }\n plugins = [...plugins, ..._plugins];\n editor.plugins = [];\n editor.pluginsByKey = {};\n flattenDeepPlugins(editor, plugins);\n editor.plugins.forEach((plugin2) => {\n if (plugin2.overrideByKey) {\n const newPlugins = editor.plugins.map((p4) => {\n return overridePluginsByKey(p4, plugin2.overrideByKey);\n });\n editor.plugins = [];\n editor.pluginsByKey = {};\n flattenDeepPlugins(editor, newPlugins);\n }\n });\n getPlateActions(editor.id).incrementKey(\"keyPlugins\");\n};\nvar withPlate = (e4, {\n id = \"main\",\n plugins = [],\n disableCorePlugins\n} = {}) => {\n let editor = e4;\n editor.id = id;\n if (!editor.key) {\n editor.key = Math.random();\n }\n setPlatePlugins(editor, {\n plugins,\n disableCorePlugins\n });\n editor.plugins.forEach((plugin2) => {\n if (plugin2.withOverrides) {\n editor = plugin2.withOverrides(editor, plugin2);\n }\n });\n return editor;\n};\nvar createTEditor = () => createEditor();\nvar createPlateStore = (state = {}) => createStore3(`plate-${state.id}`)(__spreadValues({\n id: \"main\",\n value: [{\n type: ELEMENT_DEFAULT,\n children: [{\n text: \"\"\n }]\n }],\n editor: null,\n keyEditor: 1,\n keyPlugins: 1,\n keySelection: 1,\n decorate: null,\n enabled: true,\n editableProps: null,\n onChange: null,\n plugins: [],\n renderElement: null,\n renderLeaf: null\n}, state)).extendActions((_set, _get) => ({\n resetEditor: () => {\n var _get$editor;\n _set.editor(withPlate(createTEditor(), {\n id: state.id,\n plugins: (_get$editor = _get.editor()) === null || _get$editor === void 0 ? void 0 : _get$editor.plugins\n }));\n },\n incrementKey: (key) => {\n var _get$key;\n const prev = (_get$key = _get[key]()) !== null && _get$key !== void 0 ? _get$key : 1;\n _set[key](prev + 1);\n }\n}));\nvar getEventEditorId = (id) => {\n var _eventEditorSelectors;\n if (id)\n return id;\n const focus = eventEditorSelectors.focus();\n if (focus)\n return focus;\n const blur = eventEditorSelectors.blur();\n if (blur)\n return blur;\n return (_eventEditorSelectors = eventEditorSelectors.last()) !== null && _eventEditorSelectors !== void 0 ? _eventEditorSelectors : \"main\";\n};\nvar plateIdAtom = atom(null);\nvar usePlateId = () => {\n const [plateId] = useAtom(plateIdAtom);\n return plateId;\n};\nvar loadingStore = createPlateStore({\n id: \"loading\"\n});\nvar getPlateStore = (id) => {\n id = getEventEditorId(id);\n const store = platesStore.get.get(id);\n return store || loadingStore;\n};\nvar usePlateStore = (id) => {\n var _ref, _id;\n const plateId = usePlateId();\n id = (_ref = (_id = id) !== null && _id !== void 0 ? _id : plateId) !== null && _ref !== void 0 ? _ref : \"main\";\n const store = platesStore.use.get(id);\n if (store) {\n return store;\n }\n console.warn(\"The plate hooks must be used inside the component's context.\");\n return store || loadingStore;\n};\nvar setPlateState = (draft, state) => {\n if (!isUndefined(state.onChange))\n draft.onChange = state.onChange;\n if (!isUndefined(state.plugins))\n draft.plugins = state.plugins;\n if (!isUndefined(state.editableProps))\n draft.editableProps = state.editableProps;\n if (!isUndefined(state.renderElement))\n draft.renderElement = state.renderElement;\n if (!isUndefined(state.renderLeaf))\n draft.renderLeaf = state.renderLeaf;\n if (!isUndefined(state.decorate))\n draft.decorate = state.decorate;\n if (!isUndefined(state.enabled))\n draft.enabled = state.enabled;\n if (!isUndefined(state.editor)) {\n draft.editor = state.editor;\n if (state.editor) {\n draft.value = state.editor.children;\n }\n }\n if (!isUndefined(state.initialValue))\n draft.value = state.initialValue;\n if (!isUndefined(state.value))\n draft.value = state.value;\n return draft;\n};\nvar createPlatesStore = (initialState3 = {}) => createStore3(\"plate\")(initialState3).extendActions((set) => ({\n set: (id, state) => {\n set.state((draft) => {\n if (!id)\n return;\n let store = draft[id];\n if (!store) {\n store = createPlateStore(__spreadValues({\n id\n }, setPlateState({}, state !== null && state !== void 0 ? state : {})));\n draft[id] = store;\n eventEditorActions.last(id);\n }\n });\n },\n unset: (id) => {\n set.state((draft) => {\n delete draft[id];\n });\n }\n})).extendSelectors((state) => ({\n get(id) {\n return state[id];\n },\n has(id) {\n const ids = castArray_1(id);\n return ids.every((_id) => !!state[_id]);\n }\n}));\nvar platesStore = createPlatesStore({});\nvar platesActions = platesStore.set;\nvar platesSelectors = platesStore.get;\nvar usePlatesSelectors = platesStore.use;\nvar getPlateActions = (id) => getPlateStore(id).set;\nvar usePlateSelectors = (id) => usePlateStore(id).use;\nvar usePlateEditorRef = (id) => usePlateSelectors(id).editor();\nvar DOM_HANDLERS = [\n \"onCopy\",\n \"onCopyCapture\",\n \"onCut\",\n \"onCutCapture\",\n \"onPaste\",\n \"onPasteCapture\",\n \"onCompositionEnd\",\n \"onCompositionEndCapture\",\n \"onCompositionStart\",\n \"onCompositionStartCapture\",\n \"onCompositionUpdate\",\n \"onCompositionUpdateCapture\",\n \"onFocus\",\n \"onFocusCapture\",\n \"onBlur\",\n \"onBlurCapture\",\n \"onDOMBeforeInput\",\n \"onBeforeInput\",\n \"onBeforeInputCapture\",\n \"onInput\",\n \"onInputCapture\",\n \"onReset\",\n \"onResetCapture\",\n \"onSubmit\",\n \"onSubmitCapture\",\n \"onInvalid\",\n \"onInvalidCapture\",\n \"onLoad\",\n \"onLoadCapture\",\n \"onKeyDown\",\n \"onKeyDownCapture\",\n \"onKeyPress\",\n \"onKeyPressCapture\",\n \"onKeyUp\",\n \"onKeyUpCapture\",\n \"onAbort\",\n \"onAbortCapture\",\n \"onCanPlay\",\n \"onCanPlayCapture\",\n \"onCanPlayThrough\",\n \"onCanPlayThroughCapture\",\n \"onDurationChange\",\n \"onDurationChangeCapture\",\n \"onEmptied\",\n \"onEmptiedCapture\",\n \"onEncrypted\",\n \"onEncryptedCapture\",\n \"onEnded\",\n \"onEndedCapture\",\n \"onLoadedData\",\n \"onLoadedDataCapture\",\n \"onLoadedMetadata\",\n \"onLoadedMetadataCapture\",\n \"onLoadStart\",\n \"onLoadStartCapture\",\n \"onPause\",\n \"onPauseCapture\",\n \"onPlay\",\n \"onPlayCapture\",\n \"onPlaying\",\n \"onPlayingCapture\",\n \"onProgress\",\n \"onProgressCapture\",\n \"onRateChange\",\n \"onRateChangeCapture\",\n \"onSeeked\",\n \"onSeekedCapture\",\n \"onSeeking\",\n \"onSeekingCapture\",\n \"onStalled\",\n \"onStalledCapture\",\n \"onSuspend\",\n \"onSuspendCapture\",\n \"onTimeUpdate\",\n \"onTimeUpdateCapture\",\n \"onVolumeChange\",\n \"onVolumeChangeCapture\",\n \"onWaiting\",\n \"onWaitingCapture\",\n \"onAuxClick\",\n \"onAuxClickCapture\",\n \"onClick\",\n \"onClickCapture\",\n \"onContextMenu\",\n \"onContextMenuCapture\",\n \"onDoubleClick\",\n \"onDoubleClickCapture\",\n \"onDrag\",\n \"onDragCapture\",\n \"onDragEnd\",\n \"onDragEndCapture\",\n \"onDragEnter\",\n \"onDragEnterCapture\",\n \"onDragExit\",\n \"onDragExitCapture\",\n \"onDragLeave\",\n \"onDragLeaveCapture\",\n \"onDragOver\",\n \"onDragOverCapture\",\n \"onDragStart\",\n \"onDragStartCapture\",\n \"onDrop\",\n \"onDropCapture\",\n \"onMouseDown\",\n \"onMouseDownCapture\",\n \"onMouseEnter\",\n \"onMouseLeave\",\n \"onMouseMove\",\n \"onMouseMoveCapture\",\n \"onMouseOut\",\n \"onMouseOutCapture\",\n \"onMouseOver\",\n \"onMouseOverCapture\",\n \"onMouseUp\",\n \"onMouseUpCapture\",\n \"onSelect\",\n \"onSelectCapture\",\n \"onTouchCancel\",\n \"onTouchCancelCapture\",\n \"onTouchEnd\",\n \"onTouchEndCapture\",\n \"onTouchMove\",\n \"onTouchMoveCapture\",\n \"onTouchStart\",\n \"onTouchStartCapture\",\n \"onPointerDown\",\n \"onPointerDownCapture\",\n \"onPointerMove\",\n \"onPointerMoveCapture\",\n \"onPointerUp\",\n \"onPointerUpCapture\",\n \"onPointerCancel\",\n \"onPointerCancelCapture\",\n \"onPointerEnter\",\n \"onPointerEnterCapture\",\n \"onPointerLeave\",\n \"onPointerLeaveCapture\",\n \"onPointerOver\",\n \"onPointerOverCapture\",\n \"onPointerOut\",\n \"onPointerOutCapture\",\n \"onGotPointerCapture\",\n \"onGotPointerCaptureCapture\",\n \"onLostPointerCapture\",\n \"onLostPointerCaptureCapture\",\n \"onScroll\",\n \"onScrollCapture\",\n \"onWheel\",\n \"onWheelCapture\",\n \"onAnimationStart\",\n \"onAnimationStartCapture\",\n \"onAnimationEnd\",\n \"onAnimationEndCapture\",\n \"onAnimationIteration\",\n \"onAnimationIterationCapture\",\n \"onTransitionEnd\",\n \"onTransitionEndCapture\"\n];\nvar pipeDecorate = (editor, decorateProp) => {\n const decorates = editor.plugins.flatMap((plugin2) => {\n var _plugin$decorate, _plugin$decorate2;\n return (_plugin$decorate = (_plugin$decorate2 = plugin2.decorate) === null || _plugin$decorate2 === void 0 ? void 0 : _plugin$decorate2.call(plugin2, editor, plugin2)) !== null && _plugin$decorate !== void 0 ? _plugin$decorate : [];\n });\n if (decorateProp) {\n decorates.push(decorateProp);\n }\n if (!decorates.length)\n return;\n return (entry) => {\n let ranges = [];\n const addRanges = (newRanges) => {\n if (newRanges !== null && newRanges !== void 0 && newRanges.length)\n ranges = [...ranges, ...newRanges];\n };\n decorates.forEach((decorate) => {\n addRanges(decorate(entry));\n });\n return ranges;\n };\n};\nvar isEventHandled2 = (event, handler) => {\n if (!handler) {\n return false;\n }\n const shouldTreatEventAsHandled = handler(event);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return event.isPropagationStopped();\n};\nvar pipeHandler = (editor, {\n editableProps,\n handlerKey\n}) => {\n let pluginsHandlers = [];\n pluginsHandlers = editor.plugins.flatMap((plugin2) => {\n var _plugin$handlers$hand, _plugin$handlers, _plugin$handlers$hand2;\n return (_plugin$handlers$hand = (_plugin$handlers = plugin2.handlers) === null || _plugin$handlers === void 0 ? void 0 : (_plugin$handlers$hand2 = _plugin$handlers[handlerKey]) === null || _plugin$handlers$hand2 === void 0 ? void 0 : _plugin$handlers$hand2.call(_plugin$handlers, editor, plugin2)) !== null && _plugin$handlers$hand !== void 0 ? _plugin$handlers$hand : [];\n });\n const propsHandler = editableProps === null || editableProps === void 0 ? void 0 : editableProps[handlerKey];\n if (!pluginsHandlers.length && !propsHandler)\n return;\n return (event) => {\n const eventIsHandled = pluginsHandlers.some((handler) => isEventHandled2(event, handler));\n if (eventIsHandled)\n return true;\n return isEventHandled2(event, propsHandler);\n };\n};\nvar pluginInjectProps = (editor, {\n key,\n inject: {\n props\n }\n}, nodeProps) => {\n var _transformNodeValue;\n const {\n element: element4,\n text: text4,\n className,\n style\n } = nodeProps;\n const node = element4 !== null && element4 !== void 0 ? element4 : text4;\n if (!node)\n return;\n if (!props)\n return;\n const {\n nodeKey = key,\n styleKey = nodeKey,\n validTypes,\n classNames,\n transformClassName,\n transformNodeValue,\n transformStyle,\n validNodeValues,\n defaultNodeValue\n } = props;\n if (validTypes && isElement2(node) && node.type && !validTypes.includes(node.type)) {\n return;\n }\n const nodeValue = node[nodeKey];\n if (!nodeValue || validNodeValues && !validNodeValues.includes(nodeValue) || nodeValue === defaultNodeValue) {\n return;\n }\n const res = {};\n const transformOptions = __spreadProps(__spreadValues({}, nodeProps), {\n nodeValue\n });\n const value = (_transformNodeValue = transformNodeValue === null || transformNodeValue === void 0 ? void 0 : transformNodeValue(transformOptions)) !== null && _transformNodeValue !== void 0 ? _transformNodeValue : nodeValue;\n if (element4) {\n res.className = clsx_m_default(className, `slate-${nodeKey}-${nodeValue}`);\n }\n if (classNames !== null && classNames !== void 0 && classNames[nodeValue] || transformClassName) {\n var _transformClassName;\n res.className = (_transformClassName = transformClassName === null || transformClassName === void 0 ? void 0 : transformClassName(transformOptions)) !== null && _transformClassName !== void 0 ? _transformClassName : clsx_m_default(className, classNames === null || classNames === void 0 ? void 0 : classNames[value]);\n }\n if (styleKey) {\n var _transformStyle;\n res.style = (_transformStyle = transformStyle === null || transformStyle === void 0 ? void 0 : transformStyle(transformOptions)) !== null && _transformStyle !== void 0 ? _transformStyle : __spreadProps(__spreadValues({}, style), {\n [styleKey]: value\n });\n }\n return res;\n};\nvar pipeInjectProps = (editor, nodeProps) => {\n editor.plugins.forEach((plugin2) => {\n if (plugin2.inject.props) {\n const props = pluginInjectProps(editor, plugin2, nodeProps);\n if (props) {\n nodeProps = __spreadValues(__spreadValues({}, nodeProps), props);\n }\n }\n });\n return __spreadProps(__spreadValues({}, nodeProps), {\n editor\n });\n};\nvar getSlateClass = (type) => `slate-${type}`;\nvar getRenderNodeProps = ({\n attributes,\n nodeProps,\n props,\n type\n}) => {\n let newProps = {};\n if (props) {\n var _ref;\n newProps = (_ref = typeof props === \"function\" ? props(nodeProps) : props) !== null && _ref !== void 0 ? _ref : {};\n }\n if (!newProps.nodeProps && attributes) {\n newProps.nodeProps = attributes;\n }\n nodeProps = __spreadValues(__spreadValues({}, nodeProps), newProps);\n const {\n className\n } = nodeProps;\n return __spreadProps(__spreadValues({}, nodeProps), {\n className: clsx_m_default(getSlateClass(type), className)\n });\n};\nvar pluginRenderElement = (editor, {\n key,\n type,\n component: _component,\n props\n}) => (nodeProps) => {\n const {\n element: element4,\n children: _children\n } = nodeProps;\n if (element4.type === type) {\n const Element5 = _component !== null && _component !== void 0 ? _component : DefaultElement;\n const injectAboveComponents = editor.plugins.flatMap((o3) => {\n var _o$inject$aboveCompon, _o$inject;\n return (_o$inject$aboveCompon = (_o$inject = o3.inject) === null || _o$inject === void 0 ? void 0 : _o$inject.aboveComponent) !== null && _o$inject$aboveCompon !== void 0 ? _o$inject$aboveCompon : [];\n });\n const injectBelowComponents = editor.plugins.flatMap((o3) => {\n var _o$inject$belowCompon, _o$inject2;\n return (_o$inject$belowCompon = (_o$inject2 = o3.inject) === null || _o$inject2 === void 0 ? void 0 : _o$inject2.belowComponent) !== null && _o$inject$belowCompon !== void 0 ? _o$inject$belowCompon : [];\n });\n nodeProps = getRenderNodeProps({\n attributes: element4.attributes,\n nodeProps,\n props,\n type\n });\n let children = _children;\n injectBelowComponents.forEach((withHOC2) => {\n const hoc = withHOC2(__spreadProps(__spreadValues({}, nodeProps), {\n key\n }));\n if (hoc) {\n children = hoc(__spreadProps(__spreadValues({}, nodeProps), {\n children\n }));\n }\n });\n let component = /* @__PURE__ */ import_react6.default.createElement(Element5, nodeProps, children);\n injectAboveComponents.forEach((withHOC2) => {\n const hoc = withHOC2(__spreadProps(__spreadValues({}, nodeProps), {\n key\n }));\n if (hoc) {\n component = hoc(__spreadProps(__spreadValues({}, nodeProps), {\n children: component\n }));\n }\n });\n return component;\n }\n};\nvar pipeRenderElement = (editor, renderElementProp) => {\n const renderElements = [];\n editor.plugins.forEach((plugin2) => {\n if (plugin2.isElement) {\n renderElements.push(pluginRenderElement(editor, plugin2));\n }\n });\n return (nodeProps) => {\n const props = pipeInjectProps(editor, nodeProps);\n let element4;\n renderElements.some((renderElement) => {\n element4 = renderElement(props);\n return !!element4;\n });\n if (element4)\n return element4;\n if (renderElementProp) {\n return renderElementProp(props);\n }\n return /* @__PURE__ */ import_react6.default.createElement(DefaultElement, props);\n };\n};\nvar pluginRenderLeaf = (editor, {\n key,\n type = key,\n component,\n props\n}) => (nodeProps) => {\n const {\n leaf,\n children\n } = nodeProps;\n if (leaf[type]) {\n const Leaf2 = component !== null && component !== void 0 ? component : DefaultLeaf2;\n nodeProps = getRenderNodeProps({\n attributes: leaf.attributes,\n props,\n nodeProps,\n type\n });\n return /* @__PURE__ */ import_react6.default.createElement(Leaf2, nodeProps, children);\n }\n return children;\n};\nvar pipeRenderLeaf = (editor, renderLeafProp) => {\n const renderLeafs = [];\n editor.plugins.forEach((plugin2) => {\n if (plugin2.isLeaf && plugin2.key) {\n renderLeafs.push(pluginRenderLeaf(editor, plugin2));\n }\n });\n return (nodeProps) => {\n const props = pipeInjectProps(editor, nodeProps);\n renderLeafs.forEach((renderLeaf) => {\n const newChildren = renderLeaf(props);\n if (newChildren !== void 0) {\n props.children = newChildren;\n }\n });\n if (renderLeafProp) {\n return renderLeafProp(props);\n }\n return /* @__PURE__ */ import_react6.default.createElement(DefaultLeaf2, props);\n };\n};\nvar useEditableProps = ({\n id = \"main\"\n}) => {\n const editor = usePlateEditorRef(id);\n const keyPlugins = usePlateSelectors(id).keyPlugins();\n const editableProps = usePlateSelectors(id).editableProps();\n const storeDecorate = usePlateSelectors(id).decorate();\n const storeRenderLeaf = usePlateSelectors(id).renderLeaf();\n const storeRenderElement = usePlateSelectors(id).renderElement();\n const isValid = editor && !!keyPlugins;\n const decorate = (0, import_react6.useMemo)(() => {\n if (!isValid)\n return;\n return pipeDecorate(editor, storeDecorate !== null && storeDecorate !== void 0 ? storeDecorate : editableProps === null || editableProps === void 0 ? void 0 : editableProps.decorate);\n }, [editableProps === null || editableProps === void 0 ? void 0 : editableProps.decorate, editor, isValid, storeDecorate]);\n const renderElement = (0, import_react6.useMemo)(() => {\n if (!isValid)\n return;\n return pipeRenderElement(editor, storeRenderElement !== null && storeRenderElement !== void 0 ? storeRenderElement : editableProps === null || editableProps === void 0 ? void 0 : editableProps.renderElement);\n }, [editableProps === null || editableProps === void 0 ? void 0 : editableProps.renderElement, editor, isValid, storeRenderElement]);\n const renderLeaf = (0, import_react6.useMemo)(() => {\n if (!isValid)\n return;\n return pipeRenderLeaf(editor, storeRenderLeaf !== null && storeRenderLeaf !== void 0 ? storeRenderLeaf : editableProps === null || editableProps === void 0 ? void 0 : editableProps.renderLeaf);\n }, [editableProps === null || editableProps === void 0 ? void 0 : editableProps.renderLeaf, editor, isValid, storeRenderLeaf]);\n const props = useDeepCompareMemo(() => {\n if (!isValid)\n return {};\n const _props = {\n decorate,\n renderElement,\n renderLeaf\n };\n DOM_HANDLERS.forEach((handlerKey) => {\n const handler = pipeHandler(editor, {\n editableProps,\n handlerKey\n });\n if (handler) {\n _props[handlerKey] = handler;\n }\n });\n return _props;\n }, [decorate, editableProps, isValid, renderElement, renderLeaf]);\n return useDeepCompareMemo(() => __spreadValues(__spreadValues({}, omit_1(editableProps, [...DOM_HANDLERS, \"renderElement\", \"renderLeaf\"])), props), [editableProps, props]);\n};\nvar normalizeEditor = (editor, options) => Editor.normalize(editor, options);\nvar usePlateStoreEffects = ({\n id,\n value: valueProp,\n enabled: enabledProp = true,\n onChange,\n editableProps,\n plugins,\n decorate,\n renderElement,\n renderLeaf\n}) => {\n const plateActions = getPlateActions(id);\n (0, import_react6.useEffect)(() => {\n if (!isUndefined(valueProp)) {\n valueProp && plateActions.value(valueProp);\n }\n }, [valueProp, plateActions]);\n (0, import_react6.useEffect)(() => {\n if (!isUndefined(enabledProp)) {\n plateActions.enabled(enabledProp);\n }\n }, [enabledProp, plateActions]);\n (0, import_react6.useEffect)(() => {\n if (!isUndefined(onChange)) {\n plateActions.onChange(onChange);\n }\n }, [onChange, plateActions]);\n useDeepCompareEffect(() => {\n if (!isUndefined(editableProps)) {\n plateActions.editableProps(editableProps);\n }\n }, [editableProps, plateActions]);\n (0, import_react6.useEffect)(() => {\n if (!isUndefined(decorate)) {\n plateActions.decorate(decorate);\n }\n }, [decorate, plateActions]);\n (0, import_react6.useEffect)(() => {\n if (!isUndefined(renderElement)) {\n plateActions.renderElement(renderElement);\n }\n }, [renderElement, plateActions]);\n (0, import_react6.useEffect)(() => {\n if (!isUndefined(renderLeaf)) {\n plateActions.renderLeaf(renderLeaf);\n }\n }, [renderLeaf, plateActions]);\n (0, import_react6.useEffect)(() => {\n if (!isUndefined(plugins)) {\n plateActions.plugins(plugins);\n }\n }, [plugins, plateActions]);\n};\nvar usePlateEffects = ({\n id = \"main\",\n editor: editorProp,\n initialValue,\n normalizeInitialValue,\n plugins: pluginsProp,\n disableCorePlugins,\n editableProps,\n onChange,\n value,\n enabled: enabledProp\n}) => {\n const editor = usePlateEditorRef(id);\n const enabled = usePlateSelectors(id).enabled();\n const plugins = usePlateSelectors(id).plugins();\n const prevEditor = (0, import_react6.useRef)(editor);\n const prevPlugins = (0, import_react6.useRef)(plugins);\n const plateActions = getPlateActions(id);\n (0, import_react6.useEffect)(() => {\n initialValue && plateActions.value(initialValue);\n }, [plateActions]);\n usePlateStoreEffects({\n editableProps,\n onChange,\n id,\n value,\n enabled: enabledProp,\n plugins: pluginsProp\n });\n (0, import_react6.useEffect)(() => {\n if (editor && !enabled) {\n plateActions.editor(null);\n }\n }, [enabled, editor, plateActions]);\n (0, import_react6.useEffect)(() => {\n if (!editor && enabled) {\n plateActions.editor(editorProp !== null && editorProp !== void 0 ? editorProp : withPlate(createTEditor(), {\n id,\n plugins: pluginsProp,\n disableCorePlugins\n }));\n }\n }, [editorProp, id, plugins, editor, enabled, disableCorePlugins, plateActions, pluginsProp]);\n (0, import_react6.useEffect)(() => {\n if (editor && prevEditor.current === editor && prevPlugins.current !== plugins) {\n setPlatePlugins(editor, {\n plugins,\n disableCorePlugins\n });\n prevPlugins.current = plugins;\n }\n }, [plugins, editor, disableCorePlugins]);\n (0, import_react6.useEffect)(() => {\n if (editor && normalizeInitialValue) {\n normalizeEditor(editor, {\n force: true\n });\n }\n }, [editor, normalizeInitialValue]);\n (0, import_react6.useEffect)(() => {\n prevEditor.current = editor;\n }, [editor]);\n};\nvar pipeOnChange = (editor) => {\n const onChanges = editor.plugins.flatMap((plugin2) => {\n var _plugin$handlers$onCh, _plugin$handlers, _plugin$handlers$onCh2;\n return (_plugin$handlers$onCh = (_plugin$handlers = plugin2.handlers) === null || _plugin$handlers === void 0 ? void 0 : (_plugin$handlers$onCh2 = _plugin$handlers.onChange) === null || _plugin$handlers$onCh2 === void 0 ? void 0 : _plugin$handlers$onCh2.call(_plugin$handlers, editor, plugin2)) !== null && _plugin$handlers$onCh !== void 0 ? _plugin$handlers$onCh : [];\n });\n return (nodes) => {\n return onChanges.some((handler) => {\n if (!handler) {\n return false;\n }\n const shouldTreatEventAsHandled = handler(nodes);\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled;\n }\n return false;\n });\n };\n};\nvar useSlateProps = ({\n id\n} = {}) => {\n const editor = usePlateEditorRef(id);\n const keyPlugins = usePlateSelectors(id).keyPlugins();\n const value = usePlateSelectors(id).value();\n const onChangeProp = usePlateSelectors(id).onChange();\n const onChange = (0, import_react6.useCallback)((newValue) => {\n if (!editor || !keyPlugins)\n return;\n const eventIsHandled = pipeOnChange(editor)(newValue);\n if (!eventIsHandled) {\n onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(newValue);\n }\n getPlateActions(id).value(newValue);\n }, [onChangeProp, editor, id, keyPlugins]);\n return (0, import_react6.useMemo)(() => {\n if (!editor)\n return {};\n return {\n key: editor.key,\n editor,\n onChange,\n value\n };\n }, [editor, onChange, value]);\n};\nvar usePlate = (options) => {\n const {\n id\n } = options;\n usePlateEffects(options);\n return {\n slateProps: useSlateProps({\n id\n }),\n editableProps: useEditableProps({\n id\n })\n };\n};\nvar useEditorRef = () => useSlateStatic();\nvar EditorRefPluginEffect = ({\n plugin: plugin2\n}) => {\n var _plugin$useHooks;\n const editor = useEditorRef();\n (_plugin$useHooks = plugin2.useHooks) === null || _plugin$useHooks === void 0 ? void 0 : _plugin$useHooks.call(plugin2, editor, plugin2);\n return null;\n};\nvar EditorRefEffect = ({\n id\n}) => {\n const editor = useEditorRef();\n usePlateSelectors(id).keyPlugins();\n return /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, editor.plugins.map((plugin2) => /* @__PURE__ */ import_react6.default.createElement(EditorRefPluginEffect, {\n key: plugin2.key,\n plugin: plugin2\n })));\n};\nvar useEditorState = () => useSlate();\nvar EditorStateEffect = /* @__PURE__ */ (0, import_react6.memo)(({\n id\n}) => {\n const editorState = useEditorState();\n (0, import_react6.useEffect)(() => {\n getPlateActions(id).incrementKey(\"keyEditor\");\n });\n (0, import_react6.useEffect)(() => {\n getPlateActions(id).incrementKey(\"keySelection\");\n }, [editorState.selection, id]);\n return null;\n});\nvar usePlatesStoreEffect = (id, props) => {\n (0, import_react6.useEffect)(() => {\n if (!platesSelectors.has(id)) {\n platesActions.set(id, props);\n }\n }, [id]);\n};\nvar PlateContent = (_a) => {\n var _b = _a, {\n children,\n renderEditable\n } = _b, options = __objRest(_b, [\n \"children\",\n \"renderEditable\"\n ]);\n const {\n slateProps,\n editableProps\n } = usePlate(options);\n if (!slateProps.editor)\n return null;\n const editable = /* @__PURE__ */ import_react6.default.createElement(Editable, editableProps);\n return /* @__PURE__ */ import_react6.default.createElement(Slate, slateProps, children, /* @__PURE__ */ import_react6.default.createElement(EditorStateEffect, {\n id: options.id\n }), /* @__PURE__ */ import_react6.default.createElement(EditorRefEffect, {\n id: options.id\n }), renderEditable ? renderEditable(editable) : editable);\n};\nvar Plate = (props) => {\n const _a = props, {\n id = \"main\"\n } = _a, state = __objRest(_a, [\n \"id\"\n ]);\n const hasId = usePlatesSelectors.has(id);\n (0, import_react6.useEffect)(() => () => {\n platesActions.unset(id);\n }, [id]);\n usePlatesStoreEffect(id, state);\n if (!hasId)\n return null;\n return /* @__PURE__ */ import_react6.default.createElement(Provider, {\n initialValues: [[plateIdAtom, id]]\n }, /* @__PURE__ */ import_react6.default.createElement(PlateContent, props));\n};\nvar useEventEditorId = () => {\n const focus = useEventEditorSelectors.focus();\n const blur = useEventEditorSelectors.blur();\n const last2 = useEventEditorSelectors.last();\n if (focus)\n return focus;\n if (blur)\n return blur;\n return last2;\n};\nvar useEventPlateId = (id) => {\n var _ref, _ref2;\n const plateId = usePlateId();\n const eventEditorId = useEventEditorId();\n return (_ref = (_ref2 = id !== null && id !== void 0 ? id : plateId) !== null && _ref2 !== void 0 ? _ref2 : eventEditorId) !== null && _ref !== void 0 ? _ref : \"main\";\n};\nvar PlateProvider = ({\n id = \"main\",\n children\n}) => {\n const hasId = usePlatesSelectors.has(id);\n usePlatesStoreEffect(id);\n if (!hasId)\n return null;\n return /* @__PURE__ */ import_react6.default.createElement(Provider, {\n key: id,\n initialValues: [[plateIdAtom, id]]\n }, children);\n};\nvar PlateEventProvider = ({\n id,\n children\n}) => {\n id = useEventPlateId(id);\n return /* @__PURE__ */ import_react6.default.createElement(PlateProvider, {\n id\n }, children);\n};\nvar withPlateEventProvider = (Component2, hocProps) => withHOC(PlateEventProvider, Component2, hocProps);\nvar CLONE_DEEP_FLAG = 1;\nvar CLONE_SYMBOLS_FLAG = 4;\nfunction cloneDeep(value) {\n return _baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\nvar cloneDeep_1 = cloneDeep;\nvar createPlugins = (plugins, {\n components: components2,\n overrideByKey: overrideByKey2\n} = {}) => {\n let allOverrideByKey = {};\n if (overrideByKey2) {\n allOverrideByKey = cloneDeep_1(overrideByKey2);\n }\n if (components2) {\n Object.keys(components2).forEach((key) => {\n if (!allOverrideByKey[key])\n allOverrideByKey[key] = {};\n allOverrideByKey[key].component = components2[key];\n });\n }\n if (Object.keys(allOverrideByKey).length) {\n return plugins.map((plugin2) => {\n return overridePluginsByKey(plugin2, allOverrideByKey);\n });\n }\n return plugins;\n};\nvar CARRIAGE_RETURN = \"\\r\";\nvar LINE_FEED = \"\\n\";\nvar NO_BREAK_SPACE = \"\\xA0\";\nvar SPACE2 = \" \";\nvar TAB = \"\t\";\nvar ZERO_WIDTH_SPACE = \"\\u200B\";\nvar traverseHtmlNode = (node, callback) => {\n const keepTraversing = callback(node);\n if (!keepTraversing) {\n return;\n }\n let child = node.firstChild;\n while (child) {\n const currentChild = child;\n const previousChild = child.previousSibling;\n child = child.nextSibling;\n traverseHtmlNode(currentChild, callback);\n if (!currentChild.previousSibling && !currentChild.nextSibling && !currentChild.parentNode && child && previousChild !== child.previousSibling && child.parentNode) {\n if (previousChild) {\n child = previousChild.nextSibling;\n } else {\n child = node.firstChild;\n }\n } else if (!currentChild.previousSibling && !currentChild.nextSibling && !currentChild.parentNode && child && !child.previousSibling && !child.nextSibling && !child.parentNode) {\n if (previousChild) {\n if (previousChild.nextSibling) {\n child = previousChild.nextSibling.nextSibling;\n } else {\n child = null;\n }\n } else if (node.firstChild) {\n child = node.firstChild.nextSibling;\n }\n }\n }\n};\nvar traverseHtmlElements = (rootNode, callback) => {\n traverseHtmlNode(rootNode, (node) => {\n if (!isHtmlElement(node)) {\n return true;\n }\n return callback(node);\n });\n};\nvar cleanHtmlBrElements = (rootNode) => {\n traverseHtmlElements(rootNode, (element4) => {\n if (element4.tagName !== \"BR\") {\n return true;\n }\n const replacementTextNode = document.createTextNode(LINE_FEED);\n if (element4.parentElement) {\n element4.parentElement.replaceChild(replacementTextNode, element4);\n }\n return false;\n });\n};\nvar cleanHtmlCrLf = (html) => {\n return html.replace(/(\\r\\n|\\r)/gm, \"\\n\");\n};\nvar ALLOWED_EMPTY_ELEMENTS = [\"BR\", \"IMG\"];\nvar isEmpty = (element4) => {\n return !ALLOWED_EMPTY_ELEMENTS.includes(element4.nodeName) && !element4.innerHTML.trim();\n};\nvar removeIfEmpty = (element4) => {\n if (isEmpty(element4)) {\n const {\n parentElement\n } = element4;\n element4.remove();\n if (parentElement) {\n removeIfEmpty(parentElement);\n }\n }\n};\nvar cleanHtmlEmptyElements = (rootNode) => {\n traverseHtmlElements(rootNode, (element4) => {\n removeIfEmpty(element4);\n return true;\n });\n};\nvar replaceTagName = (element4, tagName) => {\n const newElement = document.createElement(tagName);\n newElement.innerHTML = element4.innerHTML;\n for (const {\n name\n } of element4.attributes) {\n const value = element4.getAttribute(name);\n if (value) {\n newElement.setAttribute(name, value);\n }\n }\n if (element4.parentNode) {\n element4.parentNode.replaceChild(newElement, element4);\n }\n return newElement;\n};\nvar cleanHtmlFontElements = (rootNode) => {\n traverseHtmlElements(rootNode, (element4) => {\n if (element4.tagName === \"FONT\") {\n if (element4.textContent) {\n replaceTagName(element4, \"span\");\n } else {\n element4.remove();\n }\n }\n return true;\n });\n};\nvar isHtmlFragmentHref = (href) => href.startsWith(\"#\");\nvar unwrapHtmlElement = (element4) => {\n element4.outerHTML = element4.innerHTML;\n};\nvar cleanHtmlLinkElements = (rootNode) => {\n traverseHtmlElements(rootNode, (element4) => {\n if (element4.tagName !== \"A\") {\n return true;\n }\n const href = element4.getAttribute(\"href\");\n if (!href || isHtmlFragmentHref(href)) {\n unwrapHtmlElement(element4);\n }\n if (href && element4.querySelector(\"img\")) {\n for (const span of element4.querySelectorAll(\"span\")) {\n if (!span.innerText) {\n unwrapHtmlElement(span);\n }\n }\n }\n return true;\n });\n};\nvar traverseHtmlTexts = (rootNode, callback) => {\n traverseHtmlNode(rootNode, (node) => {\n if (!isHtmlText(node)) {\n return true;\n }\n return callback(node);\n });\n};\nvar cleanHtmlTextNodes = (rootNode) => {\n traverseHtmlTexts(rootNode, (textNode) => {\n if (/^\\n\\s*$/.test(textNode.data) && (textNode.previousElementSibling || textNode.nextElementSibling)) {\n textNode.remove();\n return true;\n }\n textNode.data = textNode.data.replace(/\\n\\s*/g, \"\\n\");\n if (textNode.data.includes(CARRIAGE_RETURN) || textNode.data.includes(LINE_FEED) || textNode.data.includes(NO_BREAK_SPACE)) {\n const hasSpace = textNode.data.includes(SPACE2);\n const hasNonWhitespace = /\\S/.test(textNode.data);\n const hasLineFeed = textNode.data.includes(LINE_FEED);\n if (!(hasSpace || hasNonWhitespace) && !hasLineFeed) {\n if (textNode.data === NO_BREAK_SPACE) {\n textNode.data = SPACE2;\n return true;\n }\n textNode.remove();\n return true;\n }\n if (textNode.previousSibling && textNode.previousSibling.nodeName === \"BR\" && textNode.parentElement) {\n textNode.parentElement.removeChild(textNode.previousSibling);\n const matches = textNode.data.match(/^[\\r\\n]+/);\n const offset3 = matches ? matches[0].length : 0;\n textNode.data = textNode.data.substring(offset3).replace(new RegExp(LINE_FEED, \"g\"), SPACE2).replace(new RegExp(CARRIAGE_RETURN, \"g\"), SPACE2);\n textNode.data = `\n${textNode.data}`;\n } else {\n textNode.data = textNode.data.replace(new RegExp(LINE_FEED, \"g\"), SPACE2).replace(new RegExp(CARRIAGE_RETURN, \"g\"), SPACE2);\n }\n }\n return true;\n });\n};\nvar isHtmlBlockElement = (element4) => {\n const blockRegex = /^(address|blockquote|body|center|dir|div|dl|fieldset|form|h[1-6]|hr|isindex|menu|noframes|noscript|ol|p|pre|table|ul|dd|dt|frameset|li|tbody|td|tfoot|th|thead|tr|html)$/i;\n return blockRegex.test(element4.nodeName);\n};\nvar copyBlockMarksToSpanChild = (rootNode) => {\n traverseHtmlElements(rootNode, (element4) => {\n const el = element4;\n const styleAttribute = element4.getAttribute(\"style\");\n if (!styleAttribute)\n return true;\n if (isHtmlBlockElement(el)) {\n const {\n style: {\n backgroundColor,\n color,\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n textDecoration\n }\n } = el;\n if (backgroundColor || color || fontFamily || fontSize || fontStyle || fontWeight || textDecoration) {\n const span = document.createElement(\"span\");\n if (![\"initial\", \"inherit\"].includes(color)) {\n span.style.color = color;\n }\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n if (![\"normal\", \"initial\", \"inherit\"].includes(color)) {\n span.style.fontStyle = fontStyle;\n }\n if (![\"normal\", 400].includes(fontWeight)) {\n span.style.fontWeight = fontWeight;\n }\n span.style.textDecoration = textDecoration;\n span.innerHTML = el.innerHTML;\n element4.innerHTML = span.outerHTML;\n }\n }\n return true;\n });\n};\nvar findHtmlElement = (rootNode, predicate) => {\n let res = null;\n traverseHtmlElements(rootNode, (node) => {\n if (predicate(node)) {\n res = node;\n return false;\n }\n return true;\n });\n return res;\n};\nvar someHtmlElement = (rootNode, predicate) => {\n return !!findHtmlElement(rootNode, predicate);\n};\nvar acceptNode = () => NodeFilter.FILTER_ACCEPT;\nvar getHtmlComments = (node) => {\n const comments = [];\n const iterator = document.createNodeIterator(node, NodeFilter.SHOW_COMMENT, {\n acceptNode\n });\n let currentNode = iterator.nextNode();\n while (currentNode) {\n if (currentNode.nodeValue) {\n comments.push(currentNode.nodeValue);\n }\n currentNode = iterator.nextNode();\n }\n return comments;\n};\nvar isHtmlComment = (node) => node.nodeType === Node.COMMENT_NODE;\nvar postCleanHtml = (html) => {\n const cleanHtml = html.trim().replace(new RegExp(ZERO_WIDTH_SPACE, \"g\"), \"\");\n return `${cleanHtml}`;\n};\nvar removeBeforeHtml = (html) => {\n const index7 = html.indexOf(\" {\n const index7 = html.lastIndexOf(\"\");\n if (index7 === -1) {\n return html;\n }\n return html.substring(0, index7 + \"\".length);\n};\nvar removeHtmlSurroundings = (html) => {\n return removeBeforeHtml(removeAfterHtml(html));\n};\nvar cleaners = [removeHtmlSurroundings, cleanHtmlCrLf];\nvar preCleanHtml = (html) => {\n return cleaners.reduce((result, clean3) => clean3(result), html);\n};\nvar traverseHtmlComments = (rootNode, callback) => {\n traverseHtmlNode(rootNode, (node) => {\n if (!isHtmlComment(node)) {\n return true;\n }\n return callback(node);\n });\n};\nvar removeHtmlNodesBetweenComments = (rootNode, start3, end3) => {\n const isClosingComment = (node) => isHtmlComment(node) && node.data === end3;\n traverseHtmlComments(rootNode, (comment) => {\n if (comment.data === start3) {\n let node = comment.nextSibling;\n comment.remove();\n while (node && !isClosingComment(node)) {\n const {\n nextSibling\n } = node;\n node.remove();\n node = nextSibling;\n }\n if (node && isClosingComment(node)) {\n node.remove();\n }\n }\n return true;\n });\n};\nvar createPathRef = (editor, at, options) => Editor.pathRef(editor, at, options);\nvar createPointRef = (editor, point, options) => Editor.pointRef(editor, point, options);\nvar isElementEmpty = (editor, element4) => Editor.isEmpty(editor, element4);\nvar deleteText = (editor, options) => {\n Transforms.delete(editor, options);\n};\nvar removeNodes = (editor, options) => Transforms.removeNodes(editor, options);\nvar mergeNodes = (editor, options = {}) => {\n withoutNormalizing(editor, () => {\n let {\n match: match2,\n at = editor.selection\n } = options;\n const {\n mergeNode,\n removeEmptyAncestor,\n hanging = false,\n voids = false,\n mode = \"lowest\"\n } = options;\n if (!at) {\n return;\n }\n if (match2 == null) {\n if (Path.isPath(at)) {\n const [parent2] = getParentNode(editor, at);\n match2 = (n6) => parent2.children.includes(n6);\n } else {\n match2 = (n6) => isBlock(editor, n6);\n }\n }\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at);\n }\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor;\n } else {\n const [, end3] = Range.edges(at);\n const pointRef = createPointRef(editor, end3);\n deleteText(editor, {\n at\n });\n at = pointRef.unref();\n if (options.at == null) {\n select(editor, at);\n }\n }\n }\n const _nodes = getNodeEntries(editor, {\n at,\n match: match2,\n voids,\n mode\n });\n const [current] = Array.from(_nodes);\n const prev = getPreviousNode(editor, {\n at,\n match: match2,\n voids,\n mode\n });\n if (!current || !prev) {\n return;\n }\n const [node, path] = current;\n const [prevNode, prevPath] = prev;\n if (path.length === 0 || prevPath.length === 0) {\n return;\n }\n const newPath = Path.next(prevPath);\n const commonPath = Path.common(path, prevPath);\n const isPreviousSibling = Path.isSibling(path, prevPath);\n const _levels = Editor.levels(editor, {\n at: path\n });\n const levels = Array.from(_levels, ([n6]) => n6).slice(commonPath.length).slice(0, -1);\n const emptyAncestor = getAboveNode(editor, {\n at: path,\n mode: \"highest\",\n match: (n6) => levels.includes(n6) && isElement2(n6) && hasSingleChild(n6)\n });\n const emptyRef = emptyAncestor && createPathRef(editor, emptyAncestor[1]);\n let properties;\n let position;\n if (isText(node) && isText(prevNode)) {\n const _a = node, {\n text: text4\n } = _a, rest = __objRest(_a, [\n \"text\"\n ]);\n position = prevNode.text.length;\n properties = rest;\n } else if (isElement2(node) && isElement2(prevNode)) {\n const _b = node, {\n children\n } = _b, rest = __objRest(_b, [\n \"children\"\n ]);\n position = prevNode.children.length;\n properties = rest;\n } else {\n throw new Error(`Cannot merge the node at path [${path}] with the previous sibling because it is not the same kind: ${JSON.stringify(node)} ${JSON.stringify(prevNode)}`);\n }\n if (!isPreviousSibling) {\n if (!mergeNode) {\n moveNodes(editor, {\n at: path,\n to: newPath,\n voids\n });\n }\n }\n if (emptyRef) {\n if (!removeEmptyAncestor) {\n removeNodes(editor, {\n at: emptyRef.current,\n voids\n });\n } else {\n const emptyPath = emptyRef.current;\n emptyPath && removeEmptyAncestor(editor, {\n at: emptyPath\n });\n }\n }\n if (mergeNode) {\n mergeNode(editor, {\n at: path,\n to: newPath\n });\n } else if (isElement2(prevNode) && isElementEmpty(editor, prevNode) || isText(prevNode) && prevNode.text === \"\") {\n removeNodes(editor, {\n at: prevPath,\n voids\n });\n } else {\n editor.apply({\n type: \"merge_node\",\n path: newPath,\n position,\n properties\n });\n }\n if (emptyRef) {\n emptyRef.unref();\n }\n });\n};\nvar getLeafNode = (editor, at, options) => Editor.leaf(editor, at, options);\nvar deleteMerge = (editor, options = {}) => {\n withoutNormalizing(editor, () => {\n const {\n reverse = false,\n unit = \"character\",\n distance = 1,\n voids = false\n } = options;\n let {\n at = editor.selection,\n hanging = false\n } = options;\n if (!at) {\n return;\n }\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n at = at.anchor;\n }\n if (Point.isPoint(at)) {\n const furthestVoid = getVoidNode(editor, {\n at,\n mode: \"highest\"\n });\n if (!voids && furthestVoid) {\n const [, voidPath] = furthestVoid;\n at = voidPath;\n } else {\n const opts = {\n unit,\n distance\n };\n const target = reverse ? getPointBefore(editor, at, opts) || getStartPoint(editor, []) : getPointAfter(editor, at, opts) || getEndPoint(editor, []);\n at = {\n anchor: at,\n focus: target\n };\n hanging = true;\n }\n }\n if (Path.isPath(at)) {\n removeNodes(editor, {\n at,\n voids\n });\n return;\n }\n if (Range.isCollapsed(at)) {\n return;\n }\n if (!hanging) {\n at = Editor.unhangRange(editor, at, {\n voids\n });\n }\n let [start3, end3] = Range.edges(at);\n const startBlock = getAboveNode(editor, {\n match: (n6) => isBlock(editor, n6),\n at: start3,\n voids\n });\n const endBlock = getAboveNode(editor, {\n match: (n6) => isBlock(editor, n6),\n at: end3,\n voids\n });\n const isAcrossBlocks = startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n const isSingleText = Path.equals(start3.path, end3.path);\n const startVoid = voids ? null : getVoidNode(editor, {\n at: start3,\n mode: \"highest\"\n });\n const endVoid = voids ? null : getVoidNode(editor, {\n at: end3,\n mode: \"highest\"\n });\n if (startVoid) {\n const before = getPointBefore(editor, start3);\n if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) {\n start3 = before;\n }\n }\n if (endVoid) {\n const after = getPointAfter(editor, end3);\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end3 = after;\n }\n }\n const matches = [];\n let lastPath;\n const _nodes = getNodeEntries(editor, {\n at,\n voids\n });\n for (const entry of _nodes) {\n const [node, path] = entry;\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue;\n }\n if (!voids && isVoid(editor, node) || !Path.isCommon(path, start3.path) && !Path.isCommon(path, end3.path)) {\n matches.push(entry);\n lastPath = path;\n }\n }\n const pathRefs = Array.from(matches, ([, p4]) => createPathRef(editor, p4));\n const startRef = createPointRef(editor, start3);\n const endRef = createPointRef(editor, end3);\n if (!isSingleText && !startVoid) {\n const point2 = startRef.current;\n const [node] = getLeafNode(editor, point2);\n const {\n path\n } = point2;\n const {\n offset: offset3\n } = start3;\n const text4 = node.text.slice(offset3);\n editor.apply({\n type: \"remove_text\",\n path,\n offset: offset3,\n text: text4\n });\n }\n for (const pathRef of pathRefs) {\n const path = pathRef.unref();\n removeNodes(editor, {\n at: path,\n voids\n });\n }\n if (!endVoid) {\n const point2 = endRef.current;\n const [node] = getLeafNode(editor, point2);\n const {\n path\n } = point2;\n const offset3 = isSingleText ? start3.offset : 0;\n const text4 = node.text.slice(offset3, end3.offset);\n editor.apply({\n type: \"remove_text\",\n path,\n offset: offset3,\n text: text4\n });\n }\n if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) {\n mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids\n });\n }\n const point = endRef.unref() || startRef.unref();\n if (options.at == null && point) {\n select(editor, point);\n }\n });\n};\nvar withoutMergingHistory = (editor, fn6) => HistoryEditor.withoutMerging(editor, fn6);\nvar getCommonNode = (root5, path, another) => Node2.common(root5, path, another);\nvar getNodeChildren = (root5, path, options) => Node2.children(root5, path, options);\nvar getNodeTexts = (root5, options) => Node2.texts(root5, options);\nvar getNodes = (root5, options) => Node2.nodes(root5, options);\nvar isCollapsed = (range) => !!range && Range.isCollapsed(range);\nvar findNodePath = (editor, node) => {\n try {\n return ReactEditor.findPath(editor, node);\n } catch (e4) {\n }\n};\nvar toDOMRange = (editor, range) => {\n try {\n return ReactEditor.toDOMRange(editor, range);\n } catch (e4) {\n }\n};\nvar collapseSelection = (editor, options) => {\n Transforms.collapse(editor, options);\n};\nvar insertFragment = (editor, fragment, options) => {\n Transforms.insertFragment(editor, fragment, options);\n};\nvar insertText = (editor, text4, options) => {\n Transforms.insertText(editor, text4, options);\n};\nvar moveSelection = (editor, options) => {\n Transforms.move(editor, options);\n};\nvar setSelection = (editor, props) => {\n Transforms.setSelection(editor, props);\n};\nvar splitNodes = (editor, options) => Transforms.splitNodes(editor, options);\nvar usePlateEditorState = (id) => {\n usePlateSelectors(id).keyEditor();\n return usePlateEditorRef(id);\n};\nvar getKeysByTypes = (editor, type) => {\n const types = castArray_1(type);\n const found = Object.values(editor.pluginsByKey).filter((plugin2) => {\n return types.includes(plugin2.type);\n });\n return found.map((p4) => p4.key);\n};\nvar getPluginInjectProps = (editor, key) => {\n var _getPlugin$inject$pro, _getPlugin$inject;\n return (_getPlugin$inject$pro = (_getPlugin$inject = getPlugin(editor, key).inject) === null || _getPlugin$inject === void 0 ? void 0 : _getPlugin$inject.props) !== null && _getPlugin$inject$pro !== void 0 ? _getPlugin$inject$pro : {};\n};\nvar getPluginOptions = (editor, key) => {\n var _getPlugin$options;\n return (_getPlugin$options = getPlugin(editor, key).options) !== null && _getPlugin$options !== void 0 ? _getPlugin$options : {};\n};\nvar hexToBase64 = (hex) => {\n const hexPairs = hex.match(/\\w{2}/g) || [];\n const binary = hexPairs.map((hexPair) => String.fromCharCode(parseInt(hexPair, 16)));\n return btoa(binary.join(\"\"));\n};\nvar mapInjectPropsToPlugin = (editor, plugin2, injectedPlugin) => {\n var _plugin$inject$props;\n const validTypes = (_plugin$inject$props = plugin2.inject.props) === null || _plugin$inject$props === void 0 ? void 0 : _plugin$inject$props.validTypes;\n if (!validTypes)\n return;\n const keys3 = getKeysByTypes(editor, validTypes);\n const injected = {};\n keys3.forEach((key) => {\n injected[key] = injectedPlugin;\n });\n return {\n inject: {\n pluginsByKey: injected\n }\n };\n};\nvar mockPlugin = (plugin2) => __spreadValues({\n key: \"\",\n type: \"\",\n editor: {},\n inject: {},\n options: {}\n}, plugin2);\n\n// node_modules/@udecode/plate-alignment/dist/index.es.js\nvar KEY_ALIGN = \"align\";\nvar createAlignPlugin = createPluginFactory({\n key: KEY_ALIGN,\n then: (editor) => ({\n inject: {\n props: {\n nodeKey: KEY_ALIGN,\n defaultNodeValue: \"left\",\n styleKey: \"textAlign\",\n validNodeValues: [\"left\", \"center\", \"right\", \"justify\"],\n validTypes: [getPluginType(editor, ELEMENT_DEFAULT)]\n }\n },\n then: (_3, plugin2) => mapInjectPropsToPlugin(editor, plugin2, {\n deserializeHtml: {\n getNode: (el, node) => {\n if (el.style.textAlign) {\n node[plugin2.key] = el.style.textAlign;\n }\n }\n }\n })\n })\n});\nvar setAlign = (editor, {\n key = KEY_ALIGN,\n value,\n setNodesOptions\n}) => {\n const {\n validTypes,\n defaultNodeValue,\n nodeKey\n } = getPluginInjectProps(editor, key);\n const match2 = (n6) => isBlock(editor, n6) && !!validTypes && validTypes.includes(n6.type);\n if (value === defaultNodeValue) {\n unsetNodes(editor, nodeKey, __spreadValues({\n match: match2\n }, setNodesOptions));\n } else {\n setElements(editor, {\n [nodeKey]: value\n }, __spreadValues({\n match: match2\n }, setNodesOptions));\n }\n};\n\n// node_modules/@udecode/plate-autoformat/dist/index.es.js\nvar isArray3 = Array.isArray;\nvar isArray_12 = isArray3;\nfunction castArray2() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray_12(value) ? value : [value];\n}\nvar castArray_12 = castArray2;\nvar getMatchRange = ({\n match: match2,\n trigger\n}) => {\n let start3;\n let end3;\n if (typeof match2 === \"object\") {\n start3 = match2.start;\n end3 = match2.end;\n } else {\n start3 = match2;\n end3 = start3.split(\"\").reverse().join(\"\");\n }\n const triggers = trigger ? castArray_12(trigger) : [end3.slice(-1)];\n end3 = trigger ? end3 : end3.slice(0, -1);\n return {\n start: start3,\n end: end3,\n triggers\n };\n};\nvar autoformatBlock = (editor, {\n text: text4,\n trigger,\n match: _match,\n type = ELEMENT_DEFAULT,\n allowSameTypeAbove = false,\n preFormat,\n format: format4,\n triggerAtBlockStart = true\n}) => {\n const matches = castArray_12(_match);\n for (const match2 of matches) {\n const {\n end: end3,\n triggers\n } = getMatchRange({\n match: {\n start: \"\",\n end: match2\n },\n trigger\n });\n if (!triggers.includes(text4))\n continue;\n let matchRange;\n if (triggerAtBlockStart) {\n matchRange = getRangeFromBlockStart(editor);\n const hasVoidNode = someNode(editor, {\n at: matchRange,\n match: (n6) => isVoid(editor, n6)\n });\n if (hasVoidNode)\n continue;\n const textFromBlockStart = getEditorString(editor, matchRange);\n if (end3 !== textFromBlockStart)\n continue;\n } else {\n matchRange = getRangeBefore(editor, editor.selection, {\n matchString: end3\n });\n if (!matchRange)\n continue;\n }\n if (!allowSameTypeAbove) {\n const isBelowSameBlockType = someNode(editor, {\n match: {\n type\n }\n });\n if (isBelowSameBlockType)\n continue;\n }\n deleteText(editor, {\n at: matchRange\n });\n if (preFormat) {\n preFormat(editor);\n }\n if (!format4) {\n setElements(editor, {\n type\n }, {\n match: (n6) => isBlock(editor, n6)\n });\n } else {\n format4(editor);\n }\n return true;\n }\n return false;\n};\nvar isPreviousCharacterEmpty = (editor, at) => {\n const range = getRangeBefore(editor, at);\n if (range) {\n const text4 = getEditorString(editor, range);\n if (text4) {\n const noWhiteSpaceRegex = new RegExp(`\\\\S+`);\n return !text4.match(noWhiteSpaceRegex);\n }\n }\n return true;\n};\nvar getMatchPoints = (editor, {\n start: start3,\n end: end3\n}) => {\n const selection = editor.selection;\n let beforeEndMatchPoint = selection.anchor;\n if (end3) {\n beforeEndMatchPoint = getPointBeforeLocation(editor, selection, {\n matchString: end3\n });\n if (!beforeEndMatchPoint)\n return;\n }\n let afterStartMatchPoint;\n let beforeStartMatchPoint;\n if (start3) {\n afterStartMatchPoint = getPointBeforeLocation(editor, beforeEndMatchPoint, {\n matchString: start3,\n skipInvalid: true,\n afterMatch: true\n });\n if (!afterStartMatchPoint)\n return;\n beforeStartMatchPoint = getPointBeforeLocation(editor, beforeEndMatchPoint, {\n matchString: start3,\n skipInvalid: true\n });\n if (!isPreviousCharacterEmpty(editor, beforeStartMatchPoint))\n return;\n }\n return {\n afterStartMatchPoint,\n beforeStartMatchPoint,\n beforeEndMatchPoint\n };\n};\nvar autoformatMark = (editor, {\n type,\n text: text4,\n trigger,\n match: _match,\n ignoreTrim\n}) => {\n if (!type)\n return false;\n const selection = editor.selection;\n const matches = castArray_12(_match);\n for (const match2 of matches) {\n const {\n start: start3,\n end: end3,\n triggers\n } = getMatchRange({\n match: match2,\n trigger\n });\n if (!triggers.includes(text4))\n continue;\n const matched = getMatchPoints(editor, {\n start: start3,\n end: end3\n });\n if (!matched)\n continue;\n const {\n afterStartMatchPoint,\n beforeEndMatchPoint,\n beforeStartMatchPoint\n } = matched;\n const matchRange = {\n anchor: afterStartMatchPoint,\n focus: beforeEndMatchPoint\n };\n if (!ignoreTrim) {\n const matchText = getEditorString(editor, matchRange);\n if (matchText.trim() !== matchText)\n continue;\n }\n if (end3) {\n deleteText(editor, {\n at: {\n anchor: beforeEndMatchPoint,\n focus: selection.anchor\n }\n });\n }\n const marks3 = castArray_12(type);\n select(editor, matchRange);\n marks3.forEach((mark) => {\n editor.addMark(mark, true);\n });\n collapseSelection(editor, {\n edge: \"end\"\n });\n removeMark(editor, {\n key: marks3,\n shouldChange: false\n });\n deleteText(editor, {\n at: {\n anchor: beforeStartMatchPoint,\n focus: afterStartMatchPoint\n }\n });\n return true;\n }\n return false;\n};\nvar autoformatText = (editor, {\n text: text4,\n match: _match,\n trigger,\n format: format4\n}) => {\n const selection = editor.selection;\n const matches = castArray_12(_match);\n for (const match2 of matches) {\n const {\n start: start3,\n end: end3,\n triggers\n } = getMatchRange({\n match: Array.isArray(format4) ? match2 : {\n start: \"\",\n end: match2\n },\n trigger\n });\n if (!triggers.includes(text4))\n continue;\n const matched = getMatchPoints(editor, {\n start: start3,\n end: end3\n });\n if (!matched)\n continue;\n const {\n afterStartMatchPoint,\n beforeEndMatchPoint,\n beforeStartMatchPoint\n } = matched;\n if (end3) {\n deleteText(editor, {\n at: {\n anchor: beforeEndMatchPoint,\n focus: selection.anchor\n }\n });\n }\n if (typeof format4 === \"function\") {\n format4(editor, matched);\n } else {\n const formatEnd = Array.isArray(format4) ? format4[1] : format4;\n editor.insertText(formatEnd);\n if (beforeStartMatchPoint) {\n const formatStart = Array.isArray(format4) ? format4[0] : format4;\n deleteText(editor, {\n at: {\n anchor: beforeStartMatchPoint,\n focus: afterStartMatchPoint\n }\n });\n insertText(editor, formatStart, {\n at: beforeStartMatchPoint\n });\n }\n }\n return true;\n }\n return false;\n};\nvar withAutoformat = (editor, {\n options: {\n rules\n }\n}) => {\n const {\n insertText: insertText2\n } = editor;\n editor.insertText = (text4) => {\n if (!isCollapsed(editor.selection))\n return insertText2(text4);\n for (const rule of rules) {\n var _autoformatter$mode;\n const {\n mode = \"text\",\n insertTrigger,\n query\n } = rule;\n if (query && !query(editor, __spreadProps(__spreadValues({}, rule), {\n text: text4\n })))\n continue;\n const autoformatter = {\n block: autoformatBlock,\n mark: autoformatMark,\n text: autoformatText\n };\n if ((_autoformatter$mode = autoformatter[mode]) !== null && _autoformatter$mode !== void 0 && _autoformatter$mode.call(autoformatter, editor, __spreadProps(__spreadValues({}, rule), {\n text: text4\n }))) {\n return insertTrigger && insertText2(text4);\n }\n }\n insertText2(text4);\n };\n return editor;\n};\nvar KEY_AUTOFORMAT = \"autoformat\";\nvar createAutoformatPlugin = createPluginFactory({\n key: KEY_AUTOFORMAT,\n withOverrides: withAutoformat,\n options: {\n rules: []\n }\n});\nvar autoformatComparison = [{\n mode: \"text\",\n match: \"!>\",\n format: \"\\u226F\"\n}, {\n mode: \"text\",\n match: \"!<\",\n format: \"\\u226E\"\n}, {\n mode: \"text\",\n match: \">=\",\n format: \"\\u2265\"\n}, {\n mode: \"text\",\n match: \"<=\",\n format: \"\\u2264\"\n}, {\n mode: \"text\",\n match: \"!>=\",\n format: \"\\u2271\"\n}, {\n mode: \"text\",\n match: \"!<=\",\n format: \"\\u2270\"\n}];\nvar autoformatEquality = [{\n mode: \"text\",\n match: \"!=\",\n format: \"\\u2260\"\n}, {\n mode: \"text\",\n match: \"==\",\n format: \"\\u2261\"\n}, {\n mode: \"text\",\n match: [\"!==\", \"\\u2260=\"],\n format: \"\\u2262\"\n}, {\n mode: \"text\",\n match: \"~=\",\n format: \"\\u2248\"\n}, {\n mode: \"text\",\n match: \"!~=\",\n format: \"\\u2249\"\n}];\nvar autoformatFraction = [{\n mode: \"text\",\n match: \"1/2\",\n format: \"\\xBD\"\n}, {\n mode: \"text\",\n match: \"1/3\",\n format: \"\\u2153\"\n}, {\n mode: \"text\",\n match: \"1/4\",\n format: \"\\xBC\"\n}, {\n mode: \"text\",\n match: \"1/5\",\n format: \"\\u2155\"\n}, {\n mode: \"text\",\n match: \"1/6\",\n format: \"\\u2159\"\n}, {\n mode: \"text\",\n match: \"1/7\",\n format: \"\\u2150\"\n}, {\n mode: \"text\",\n match: \"1/8\",\n format: \"\\u215B\"\n}, {\n mode: \"text\",\n match: \"1/9\",\n format: \"\\u2151\"\n}, {\n mode: \"text\",\n match: \"1/10\",\n format: \"\\u2152\"\n}, {\n mode: \"text\",\n match: \"2/3\",\n format: \"\\u2154\"\n}, {\n mode: \"text\",\n match: \"2/5\",\n format: \"\\u2156\"\n}, {\n mode: \"text\",\n match: \"3/4\",\n format: \"\\xBE\"\n}, {\n mode: \"text\",\n match: \"3/5\",\n format: \"\\u2157\"\n}, {\n mode: \"text\",\n match: \"3/8\",\n format: \"\\u215C\"\n}, {\n mode: \"text\",\n match: \"4/5\",\n format: \"\\u2158\"\n}, {\n mode: \"text\",\n match: \"5/6\",\n format: \"\\u215A\"\n}, {\n mode: \"text\",\n match: \"5/8\",\n format: \"\\u215D\"\n}, {\n mode: \"text\",\n match: \"7/8\",\n format: \"\\u215E\"\n}];\nvar autoformatDivision = [{\n mode: \"text\",\n match: \"//\",\n format: \"\\xF7\"\n}];\nvar autoformatOperation = [{\n mode: \"text\",\n match: \"+-\",\n format: \"\\xB1\"\n}, {\n mode: \"text\",\n match: \"%%\",\n format: \"\\u2030\"\n}, {\n mode: \"text\",\n match: [\"%%%\", \"\\u2030%\"],\n format: \"\\u2031\"\n}, ...autoformatDivision];\nvar autoformatSubscriptNumbers = [{\n mode: \"text\",\n match: \"~0\",\n format: \"\\u2080\"\n}, {\n mode: \"text\",\n match: \"~1\",\n format: \"\\u2081\"\n}, {\n mode: \"text\",\n match: \"~2\",\n format: \"\\u2082\"\n}, {\n mode: \"text\",\n match: \"~3\",\n format: \"\\u2083\"\n}, {\n mode: \"text\",\n match: \"~4\",\n format: \"\\u2084\"\n}, {\n mode: \"text\",\n match: \"~5\",\n format: \"\\u2085\"\n}, {\n mode: \"text\",\n match: \"~6\",\n format: \"\\u2086\"\n}, {\n mode: \"text\",\n match: \"~7\",\n format: \"\\u2087\"\n}, {\n mode: \"text\",\n match: \"~8\",\n format: \"\\u2088\"\n}, {\n mode: \"text\",\n match: \"~9\",\n format: \"\\u2089\"\n}];\nvar autoformatSubscriptSymbols = [{\n mode: \"text\",\n match: \"~+\",\n format: \"\\u208A\"\n}, {\n mode: \"text\",\n match: \"~-\",\n format: \"\\u208B\"\n}];\nvar autoformatSuperscriptNumbers = [{\n mode: \"text\",\n match: \"^0\",\n format: \"\\u2070\"\n}, {\n mode: \"text\",\n match: \"^1\",\n format: \"\\xB9\"\n}, {\n mode: \"text\",\n match: \"^2\",\n format: \"\\xB2\"\n}, {\n mode: \"text\",\n match: \"^3\",\n format: \"\\xB3\"\n}, {\n mode: \"text\",\n match: \"^4\",\n format: \"\\u2074\"\n}, {\n mode: \"text\",\n match: \"^5\",\n format: \"\\u2075\"\n}, {\n mode: \"text\",\n match: \"^6\",\n format: \"\\u2076\"\n}, {\n mode: \"text\",\n match: \"^7\",\n format: \"\\u2077\"\n}, {\n mode: \"text\",\n match: \"^8\",\n format: \"\\u2078\"\n}, {\n mode: \"text\",\n match: \"^9\",\n format: \"\\u2079\"\n}];\nvar autoformatSuperscriptSymbols = [{\n mode: \"text\",\n match: \"^o\",\n format: \"\\xB0\"\n}, {\n mode: \"text\",\n match: \"^+\",\n format: \"\\u207A\"\n}, {\n mode: \"text\",\n match: \"^-\",\n format: \"\\u207B\"\n}];\nvar autoformatMath = [...autoformatComparison, ...autoformatEquality, ...autoformatOperation, ...autoformatFraction, ...autoformatSuperscriptSymbols, ...autoformatSubscriptSymbols, ...autoformatSuperscriptNumbers, ...autoformatSubscriptNumbers];\n\n// node_modules/@udecode/plate-block-quote/dist/index.es.js\nvar ELEMENT_BLOCKQUOTE = \"blockquote\";\nvar createBlockquotePlugin = createPluginFactory({\n key: ELEMENT_BLOCKQUOTE,\n isElement: true,\n deserializeHtml: {\n rules: [{\n validNodeName: \"BLOCKQUOTE\"\n }]\n },\n handlers: {\n onKeyDown: onKeyDownToggleElement\n },\n options: {\n hotkey: \"mod+shift+.\"\n }\n});\n\n// node_modules/@udecode/plate-code-block/dist/index.es.js\nvar import_prismjs = __toESM(require_prism());\nvar ELEMENT_CODE_BLOCK = \"code_block\";\nvar ELEMENT_CODE_LINE = \"code_line\";\nvar ELEMENT_CODE_SYNTAX = \"code_syntax\";\nvar CODE_BLOCK_LANGUAGES_POPULAR = {\n bash: \"Bash\",\n css: \"CSS\",\n git: \"Git\",\n graphql: \"GraphQL\",\n html: \"HTML\",\n javascript: \"JavaScript\",\n json: \"JSON\",\n jsx: \"JSX\",\n markdown: \"Markdown\",\n sql: \"SQL\",\n svg: \"SVG\",\n tsx: \"TSX\",\n typescript: \"TypeScript\",\n wasm: \"WebAssembly\"\n};\nvar CODE_BLOCK_LANGUAGES = {\n antlr4: \"ANTLR4\",\n bash: \"Bash\",\n c: \"C\",\n csharp: \"C#\",\n css: \"CSS\",\n coffeescript: \"CoffeeScript\",\n cmake: \"CMake\",\n dart: \"Dart\",\n django: \"Django\",\n docker: \"Docker\",\n ejs: \"EJS\",\n erlang: \"Erlang\",\n git: \"Git\",\n go: \"Go\",\n graphql: \"GraphQL\",\n groovy: \"Groovy\",\n html: \"HTML\",\n java: \"Java\",\n javascript: \"JavaScript\",\n json: \"JSON\",\n jsx: \"JSX\",\n kotlin: \"Kotlin\",\n latex: \"LaTeX\",\n less: \"Less\",\n lua: \"Lua\",\n makefile: \"Makefile\",\n markdown: \"Markdown\",\n matlab: \"MATLAB\",\n markup: \"Markup\",\n objectivec: \"Objective-C\",\n perl: \"Perl\",\n php: \"PHP\",\n powershell: \"PowerShell\",\n properties: \".properties\",\n protobuf: \"Protocol Buffers\",\n python: \"Python\",\n r: \"R\",\n ruby: \"Ruby\",\n sass: \"Sass (Sass)\",\n scss: \"Sass (Scss)\",\n scheme: \"Scheme\",\n sql: \"SQL\",\n shell: \"Shell\",\n swift: \"Swift\",\n svg: \"SVG\",\n tsx: \"TSX\",\n typescript: \"TypeScript\",\n wasm: \"WebAssembly\",\n yaml: \"YAML\",\n xml: \"XML\"\n};\nPrism.languages.antlr4 = {\n \"comment\": /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n \"string\": {\n pattern: /'(?:\\\\.|[^\\\\'\\r\\n])*'/,\n greedy: true\n },\n \"character-class\": {\n pattern: /\\[(?:\\\\.|[^\\\\\\]\\r\\n])*\\]/,\n greedy: true,\n alias: \"regex\",\n inside: {\n \"range\": {\n pattern: /([^[]|(?:^|[^\\\\])(?:\\\\\\\\)*\\\\\\[)-(?!\\])/,\n lookbehind: true,\n alias: \"punctuation\"\n },\n \"escape\": /\\\\(?:u(?:[a-fA-F\\d]{4}|\\{[a-fA-F\\d]+\\})|[pP]\\{[=\\w-]+\\}|[^\\r\\nupP])/,\n \"punctuation\": /[\\[\\]]/\n }\n },\n \"action\": {\n pattern: /\\{(?:[^{}]|\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\})*\\}/,\n greedy: true,\n inside: {\n \"content\": {\n pattern: /(\\{)[\\s\\S]+(?=\\})/,\n lookbehind: true\n },\n \"punctuation\": /[{}]/\n }\n },\n \"command\": {\n pattern: /(->\\s*(?!\\s))(?:\\s*(?:,\\s*)?\\b[a-z]\\w*(?:\\s*\\([^()\\r\\n]*\\))?)+(?=\\s*;)/i,\n lookbehind: true,\n inside: {\n \"function\": /\\b\\w+(?=\\s*(?:[,(]|$))/,\n \"punctuation\": /[,()]/\n }\n },\n \"annotation\": {\n pattern: /@\\w+(?:::\\w+)*/,\n alias: \"keyword\"\n },\n \"label\": {\n pattern: /#[ \\t]*\\w+/,\n alias: \"punctuation\"\n },\n \"keyword\": /\\b(?:catch|channels|finally|fragment|grammar|import|lexer|locals|mode|options|parser|returns|throws|tokens)\\b/,\n \"definition\": [\n {\n pattern: /\\b[a-z]\\w*(?=\\s*:)/,\n alias: [\"rule\", \"class-name\"]\n },\n {\n pattern: /\\b[A-Z]\\w*(?=\\s*:)/,\n alias: [\"token\", \"constant\"]\n }\n ],\n \"constant\": /\\b[A-Z][A-Z_]*\\b/,\n \"operator\": /\\.\\.|->|[|~]|[*+?]\\??/,\n \"punctuation\": /[;:()=]/\n};\nPrism.languages.g4 = Prism.languages.antlr4;\n(function(Prism2) {\n var envVars = \"\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b\";\n var commandAfterHeredoc = {\n pattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n lookbehind: true,\n alias: \"punctuation\",\n inside: null\n };\n var insideString = {\n \"bash\": commandAfterHeredoc,\n \"environment\": {\n pattern: RegExp(\"\\\\$\" + envVars),\n alias: \"constant\"\n },\n \"variable\": [\n {\n pattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n greedy: true,\n inside: {\n \"variable\": [\n {\n pattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n lookbehind: true\n },\n /^\\$\\(\\(/\n ],\n \"number\": /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n \"operator\": /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n \"punctuation\": /\\(\\(?|\\)\\)?|,|;/\n }\n },\n {\n pattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n greedy: true,\n inside: {\n \"variable\": /^\\$\\(|^`|\\)$|`$/\n }\n },\n {\n pattern: /\\$\\{[^}]+\\}/,\n greedy: true,\n inside: {\n \"operator\": /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n \"punctuation\": /[\\[\\]]/,\n \"environment\": {\n pattern: RegExp(\"(\\\\{)\" + envVars),\n lookbehind: true,\n alias: \"constant\"\n }\n }\n },\n /\\$(?:\\w+|[#?*!@$])/\n ],\n \"entity\": /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/\n };\n Prism2.languages.bash = {\n \"shebang\": {\n pattern: /^#!\\s*\\/.*/,\n alias: \"important\"\n },\n \"comment\": {\n pattern: /(^|[^\"{\\\\$])#.*/,\n lookbehind: true\n },\n \"function-name\": [\n {\n pattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n lookbehind: true,\n alias: \"function\"\n },\n {\n pattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n alias: \"function\"\n }\n ],\n \"for-or-select\": {\n pattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n alias: \"variable\",\n lookbehind: true\n },\n \"assign-left\": {\n pattern: /(^|[\\s;|&]|[<>]\\()\\w+(?=\\+?=)/,\n inside: {\n \"environment\": {\n pattern: RegExp(\"(^|[\\\\s;|&]|[<>]\\\\()\" + envVars),\n lookbehind: true,\n alias: \"constant\"\n }\n },\n alias: \"variable\",\n lookbehind: true\n },\n \"string\": [\n {\n pattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n },\n {\n pattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n lookbehind: true,\n greedy: true,\n inside: {\n \"bash\": commandAfterHeredoc\n }\n },\n {\n pattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n },\n {\n pattern: /(^|[^$\\\\])'[^']*'/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n greedy: true,\n inside: {\n \"entity\": insideString.entity\n }\n }\n ],\n \"environment\": {\n pattern: RegExp(\"\\\\$?\" + envVars),\n alias: \"constant\"\n },\n \"variable\": insideString.variable,\n \"function\": {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n \"keyword\": {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n \"builtin\": {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\\s;|&])/,\n lookbehind: true,\n alias: \"class-name\"\n },\n \"boolean\": {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:true|false)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n \"file-descriptor\": {\n pattern: /\\B&\\d\\b/,\n alias: \"important\"\n },\n \"operator\": {\n pattern: /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n inside: {\n \"file-descriptor\": {\n pattern: /^\\d/,\n alias: \"important\"\n }\n }\n },\n \"punctuation\": /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n \"number\": {\n pattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n lookbehind: true\n }\n };\n commandAfterHeredoc.inside = Prism2.languages.bash;\n var toBeCopied = [\n \"comment\",\n \"function-name\",\n \"for-or-select\",\n \"assign-left\",\n \"string\",\n \"environment\",\n \"function\",\n \"keyword\",\n \"builtin\",\n \"boolean\",\n \"file-descriptor\",\n \"operator\",\n \"punctuation\",\n \"number\"\n ];\n var inside = insideString.variable[1].inside;\n for (var i3 = 0; i3 < toBeCopied.length; i3++) {\n inside[toBeCopied[i3]] = Prism2.languages.bash[toBeCopied[i3]];\n }\n Prism2.languages.shell = Prism2.languages.bash;\n})(Prism);\nPrism.languages.c = Prism.languages.extend(\"clike\", {\n \"comment\": {\n pattern: /\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n \"class-name\": {\n pattern: /(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,\n lookbehind: true\n },\n \"keyword\": /\\b(?:__attribute__|_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\\b/,\n \"function\": /\\b[a-z_]\\w*(?=\\s*\\()/i,\n \"number\": /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n \"operator\": />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/\n});\nPrism.languages.insertBefore(\"c\", \"string\", {\n \"macro\": {\n pattern: /(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n lookbehind: true,\n greedy: true,\n alias: \"property\",\n inside: {\n \"string\": [\n {\n pattern: /^(#\\s*include\\s*)<[^>]+>/,\n lookbehind: true\n },\n Prism.languages.c[\"string\"]\n ],\n \"comment\": Prism.languages.c[\"comment\"],\n \"macro-name\": [\n {\n pattern: /(^#\\s*define\\s+)\\w+\\b(?!\\()/i,\n lookbehind: true\n },\n {\n pattern: /(^#\\s*define\\s+)\\w+\\b(?=\\()/i,\n lookbehind: true,\n alias: \"function\"\n }\n ],\n \"directive\": {\n pattern: /^(#\\s*)[a-z]+/,\n lookbehind: true,\n alias: \"keyword\"\n },\n \"directive-hash\": /^#/,\n \"punctuation\": /##|\\\\(?=[\\r\\n])/,\n \"expression\": {\n pattern: /\\S[\\s\\S]*/,\n inside: Prism.languages.c\n }\n }\n },\n \"constant\": /\\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\\b/\n});\ndelete Prism.languages.c[\"boolean\"];\nPrism.languages.cmake = {\n \"comment\": /#.*/,\n \"string\": {\n pattern: /\"(?:[^\\\\\"]|\\\\.)*\"/,\n greedy: true,\n inside: {\n \"interpolation\": {\n pattern: /\\$\\{(?:[^{}$]|\\$\\{[^{}$]*\\})*\\}/,\n inside: {\n \"punctuation\": /\\$\\{|\\}/,\n \"variable\": /\\w+/\n }\n }\n }\n },\n \"variable\": /\\b(?:CMAKE_\\w+|\\w+_(?:VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?|(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_(?:BINARY_DIR|DESCRIPTION|HOMEPAGE_URL|NAME|SOURCE_DIR|VERSION|VERSION_(?:MAJOR|MINOR|PATCH|TWEAK))|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE|XCODE_VERSION))\\b/,\n \"property\": /\\b(?:cxx_\\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\\w+|\\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|GLOBAL_KEYWORD|GLOBAL_PROJECT_TYPES|GLOBAL_ROOTNAMESPACE|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\\b/,\n \"keyword\": /\\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\\s*\\()\\b/,\n \"boolean\": /\\b(?:ON|OFF|TRUE|FALSE)\\b/,\n \"namespace\": /\\b(?:PROPERTIES|SHARED|PRIVATE|STATIC|PUBLIC|INTERFACE|TARGET_OBJECTS)\\b/,\n \"operator\": /\\b(?:NOT|AND|OR|MATCHES|LESS|GREATER|EQUAL|STRLESS|STRGREATER|STREQUAL|VERSION_LESS|VERSION_EQUAL|VERSION_GREATER|DEFINED)\\b/,\n \"inserted\": {\n pattern: /\\b\\w+::\\w+\\b/,\n alias: \"class-name\"\n },\n \"number\": /\\b\\d+(?:\\.\\d+)*\\b/,\n \"function\": /\\b[a-z_]\\w*(?=\\s*\\()\\b/i,\n \"punctuation\": /[()>}]|\\$[<{]/\n};\n(function(Prism2) {\n var comment = /#(?!\\{).+/;\n var interpolation = {\n pattern: /#\\{[^}]+\\}/,\n alias: \"variable\"\n };\n Prism2.languages.coffeescript = Prism2.languages.extend(\"javascript\", {\n \"comment\": comment,\n \"string\": [\n {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n greedy: true\n },\n {\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n greedy: true,\n inside: {\n \"interpolation\": interpolation\n }\n }\n ],\n \"keyword\": /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n \"class-member\": {\n pattern: /@(?!\\d)\\w+/,\n alias: \"variable\"\n }\n });\n Prism2.languages.insertBefore(\"coffeescript\", \"comment\", {\n \"multiline-comment\": {\n pattern: /###[\\s\\S]+?###/,\n alias: \"comment\"\n },\n \"block-regex\": {\n pattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n alias: \"regex\",\n inside: {\n \"comment\": comment,\n \"interpolation\": interpolation\n }\n }\n });\n Prism2.languages.insertBefore(\"coffeescript\", \"string\", {\n \"inline-javascript\": {\n pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n inside: {\n \"delimiter\": {\n pattern: /^`|`$/,\n alias: \"punctuation\"\n },\n \"script\": {\n pattern: /[\\s\\S]+/,\n alias: \"language-javascript\",\n inside: Prism2.languages.javascript\n }\n }\n },\n \"multiline-string\": [\n {\n pattern: /'''[\\s\\S]*?'''/,\n greedy: true,\n alias: \"string\"\n },\n {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: \"string\",\n inside: {\n interpolation\n }\n }\n ]\n });\n Prism2.languages.insertBefore(\"coffeescript\", \"keyword\", {\n \"property\": /(?!\\d)\\w+(?=\\s*:(?!:))/\n });\n delete Prism2.languages.coffeescript[\"template-string\"];\n Prism2.languages.coffee = Prism2.languages.coffeescript;\n})(Prism);\n(function(Prism2) {\n var keyword = /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/;\n var modName = /\\b(?!)\\w+(?:\\s*\\.\\s*\\w+)*\\b/.source.replace(//g, function() {\n return keyword.source;\n });\n Prism2.languages.cpp = Prism2.languages.extend(\"c\", {\n \"class-name\": [\n {\n pattern: RegExp(/(\\b(?:class|concept|enum|struct|typename)\\s+)(?!)\\w+/.source.replace(//g, function() {\n return keyword.source;\n })),\n lookbehind: true\n },\n /\\b[A-Z]\\w*(?=\\s*::\\s*\\w+\\s*\\()/,\n /\\b[A-Z_]\\w*(?=\\s*::\\s*~\\w+\\s*\\()/i,\n /\\b\\w+(?=\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\\s*::\\s*\\w+\\s*\\()/\n ],\n \"keyword\": keyword,\n \"number\": {\n pattern: /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+(?:\\.[\\da-f']*)?|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+(?:\\.[\\d']*)?|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]{0,4}/i,\n greedy: true\n },\n \"operator\": />>=?|<<=?|->|--|\\+\\+|&&|\\|\\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n \"boolean\": /\\b(?:true|false)\\b/\n });\n Prism2.languages.insertBefore(\"cpp\", \"string\", {\n \"module\": {\n pattern: RegExp(/(\\b(?:module|import)\\s+)/.source + \"(?:\" + /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|<[^<>\\r\\n]*>/.source + \"|\" + /(?:\\s*:\\s*)?|:\\s*/.source.replace(//g, function() {\n return modName;\n }) + \")\"),\n lookbehind: true,\n greedy: true,\n inside: {\n \"string\": /^[<\"][\\s\\S]+/,\n \"operator\": /:/,\n \"punctuation\": /\\./\n }\n },\n \"raw-string\": {\n pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n alias: \"string\",\n greedy: true\n }\n });\n Prism2.languages.insertBefore(\"cpp\", \"keyword\", {\n \"generic-function\": {\n pattern: /\\b(?!operator\\b)[a-z_]\\w*\\s*<(?:[^<>]|<[^<>]*>)*>(?=\\s*\\()/i,\n inside: {\n \"function\": /^\\w+/,\n \"generic\": {\n pattern: /<[\\s\\S]+/,\n alias: \"class-name\",\n inside: Prism2.languages.cpp\n }\n }\n }\n });\n Prism2.languages.insertBefore(\"cpp\", \"operator\", {\n \"double-colon\": {\n pattern: /::/,\n alias: \"punctuation\"\n }\n });\n Prism2.languages.insertBefore(\"cpp\", \"class-name\", {\n \"base-clause\": {\n pattern: /(\\b(?:class|struct)\\s+\\w+\\s*:\\s*)[^;{}\"'\\s]+(?:\\s+[^;{}\"'\\s]+)*(?=\\s*[;{])/,\n lookbehind: true,\n greedy: true,\n inside: Prism2.languages.extend(\"cpp\", {})\n }\n });\n Prism2.languages.insertBefore(\"inside\", \"double-colon\", {\n \"class-name\": /\\b[a-z_]\\w*\\b(?!\\s*::)/i\n }, Prism2.languages.cpp[\"base-clause\"]);\n})(Prism);\n(function(Prism2) {\n function replace(pattern, replacements) {\n return pattern.replace(/<<(\\d+)>>/g, function(m3, index7) {\n return \"(?:\" + replacements[+index7] + \")\";\n });\n }\n function re2(pattern, replacements, flags) {\n return RegExp(replace(pattern, replacements), flags || \"\");\n }\n function nested(pattern, depthLog2) {\n for (var i3 = 0; i3 < depthLog2; i3++) {\n pattern = pattern.replace(/<>/g, function() {\n return \"(?:\" + pattern + \")\";\n });\n }\n return pattern.replace(/<>/g, \"[^\\\\s\\\\S]\");\n }\n var keywordKinds = {\n type: \"bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void\",\n typeDeclaration: \"class enum interface record struct\",\n contextual: \"add alias and ascending async await by descending from(?=\\\\s*(?:\\\\w|$)) get global group into init(?=\\\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\\\s*{)\",\n other: \"abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield\"\n };\n function keywordsToPattern(words) {\n return \"\\\\b(?:\" + words.trim().replace(/ /g, \"|\") + \")\\\\b\";\n }\n var typeDeclarationKeywords = keywordsToPattern(keywordKinds.typeDeclaration);\n var keywords = RegExp(keywordsToPattern(keywordKinds.type + \" \" + keywordKinds.typeDeclaration + \" \" + keywordKinds.contextual + \" \" + keywordKinds.other));\n var nonTypeKeywords = keywordsToPattern(keywordKinds.typeDeclaration + \" \" + keywordKinds.contextual + \" \" + keywordKinds.other);\n var nonContextualKeywords = keywordsToPattern(keywordKinds.type + \" \" + keywordKinds.typeDeclaration + \" \" + keywordKinds.other);\n var generic = nested(/<(?:[^<>;=+\\-*/%&|^]|<>)*>/.source, 2);\n var nestedRound = nested(/\\((?:[^()]|<>)*\\)/.source, 2);\n var name = /@?\\b[A-Za-z_]\\w*\\b/.source;\n var genericName = replace(/<<0>>(?:\\s*<<1>>)?/.source, [name, generic]);\n var identifier = replace(/(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*/.source, [nonTypeKeywords, genericName]);\n var array = /\\[\\s*(?:,\\s*)*\\]/.source;\n var typeExpressionWithoutTuple = replace(/<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?/.source, [identifier, array]);\n var tupleElement = replace(/[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source, [generic, nestedRound, array]);\n var tuple = replace(/\\(<<0>>+(?:,<<0>>+)+\\)/.source, [tupleElement]);\n var typeExpression = replace(/(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?/.source, [tuple, identifier, array]);\n var typeInside = {\n \"keyword\": keywords,\n \"punctuation\": /[<>()?,.:[\\]]/\n };\n var character = /'(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'/.source;\n var regularString = /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/.source;\n var verbatimString = /@\"(?:\"\"|\\\\[\\s\\S]|[^\\\\\"])*\"(?!\")/.source;\n Prism2.languages.csharp = Prism2.languages.extend(\"clike\", {\n \"string\": [\n {\n pattern: re2(/(^|[^$\\\\])<<0>>/.source, [verbatimString]),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: re2(/(^|[^@$\\\\])<<0>>/.source, [regularString]),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: RegExp(character),\n greedy: true,\n alias: \"character\"\n }\n ],\n \"class-name\": [\n {\n pattern: re2(/(\\busing\\s+static\\s+)<<0>>(?=\\s*;)/.source, [identifier]),\n lookbehind: true,\n inside: typeInside\n },\n {\n pattern: re2(/(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)/.source, [name, typeExpression]),\n lookbehind: true,\n inside: typeInside\n },\n {\n pattern: re2(/(\\busing\\s+)<<0>>(?=\\s*=)/.source, [name]),\n lookbehind: true\n },\n {\n pattern: re2(/(\\b<<0>>\\s+)<<1>>/.source, [typeDeclarationKeywords, genericName]),\n lookbehind: true,\n inside: typeInside\n },\n {\n pattern: re2(/(\\bcatch\\s*\\(\\s*)<<0>>/.source, [identifier]),\n lookbehind: true,\n inside: typeInside\n },\n {\n pattern: re2(/(\\bwhere\\s+)<<0>>/.source, [name]),\n lookbehind: true\n },\n {\n pattern: re2(/(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>/.source, [typeExpressionWithoutTuple]),\n lookbehind: true,\n inside: typeInside\n },\n {\n pattern: re2(/\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))/.source, [typeExpression, nonContextualKeywords, name]),\n inside: typeInside\n }\n ],\n \"keyword\": keywords,\n \"number\": /(?:\\b0(?:x[\\da-f_]*[\\da-f]|b[01_]*[01])|(?:\\B\\.\\d+(?:_+\\d+)*|\\b\\d+(?:_+\\d+)*(?:\\.\\d+(?:_+\\d+)*)?)(?:e[-+]?\\d+(?:_+\\d+)*)?)(?:ul|lu|[dflmu])?\\b/i,\n \"operator\": />>=?|<<=?|[-=]>|([-+&|])\\1|~|\\?\\?=?|[-+*/%&|^!=<>]=?/,\n \"punctuation\": /\\?\\.?|::|[{}[\\];(),.:]/\n });\n Prism2.languages.insertBefore(\"csharp\", \"number\", {\n \"range\": {\n pattern: /\\.\\./,\n alias: \"operator\"\n }\n });\n Prism2.languages.insertBefore(\"csharp\", \"punctuation\", {\n \"named-parameter\": {\n pattern: re2(/([(,]\\s*)<<0>>(?=\\s*:)/.source, [name]),\n lookbehind: true,\n alias: \"punctuation\"\n }\n });\n Prism2.languages.insertBefore(\"csharp\", \"class-name\", {\n \"namespace\": {\n pattern: re2(/(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])/.source, [name]),\n lookbehind: true,\n inside: {\n \"punctuation\": /\\./\n }\n },\n \"type-expression\": {\n pattern: re2(/(\\b(?:default|typeof|sizeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))/.source, [nestedRound]),\n lookbehind: true,\n alias: \"class-name\",\n inside: typeInside\n },\n \"return-type\": {\n pattern: re2(/<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))/.source, [typeExpression, identifier]),\n inside: typeInside,\n alias: \"class-name\"\n },\n \"constructor-invocation\": {\n pattern: re2(/(\\bnew\\s+)<<0>>(?=\\s*[[({])/.source, [typeExpression]),\n lookbehind: true,\n inside: typeInside,\n alias: \"class-name\"\n },\n \"generic-method\": {\n pattern: re2(/<<0>>\\s*<<1>>(?=\\s*\\()/.source, [name, generic]),\n inside: {\n \"function\": re2(/^<<0>>/.source, [name]),\n \"generic\": {\n pattern: RegExp(generic),\n alias: \"class-name\",\n inside: typeInside\n }\n }\n },\n \"type-list\": {\n pattern: re2(/\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))/.source, [typeDeclarationKeywords, genericName, name, typeExpression, keywords.source, nestedRound, /\\bnew\\s*\\(\\s*\\)/.source]),\n lookbehind: true,\n inside: {\n \"record-arguments\": {\n pattern: re2(/(^(?!new\\s*\\()<<0>>\\s*)<<1>>/.source, [genericName, nestedRound]),\n lookbehind: true,\n greedy: true,\n inside: Prism2.languages.csharp\n },\n \"keyword\": keywords,\n \"class-name\": {\n pattern: RegExp(typeExpression),\n greedy: true,\n inside: typeInside\n },\n \"punctuation\": /[,()]/\n }\n },\n \"preprocessor\": {\n pattern: /(^[\\t ]*)#.*/m,\n lookbehind: true,\n alias: \"property\",\n inside: {\n \"directive\": {\n pattern: /(#)\\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\\b/,\n lookbehind: true,\n alias: \"keyword\"\n }\n }\n }\n });\n var regularStringOrCharacter = regularString + \"|\" + character;\n var regularStringCharacterOrComment = replace(/\\/(?![*/])|\\/\\/[^\\r\\n]*[\\r\\n]|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>/.source, [regularStringOrCharacter]);\n var roundExpression = nested(replace(/[^\"'/()]|<<0>>|\\(<>*\\)/.source, [regularStringCharacterOrComment]), 2);\n var attrTarget = /\\b(?:assembly|event|field|method|module|param|property|return|type)\\b/.source;\n var attr = replace(/<<0>>(?:\\s*\\(<<1>>*\\))?/.source, [identifier, roundExpression]);\n Prism2.languages.insertBefore(\"csharp\", \"class-name\", {\n \"attribute\": {\n pattern: re2(/((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])/.source, [attrTarget, attr]),\n lookbehind: true,\n greedy: true,\n inside: {\n \"target\": {\n pattern: re2(/^<<0>>(?=\\s*:)/.source, [attrTarget]),\n alias: \"keyword\"\n },\n \"attribute-arguments\": {\n pattern: re2(/\\(<<0>>*\\)/.source, [roundExpression]),\n inside: Prism2.languages.csharp\n },\n \"class-name\": {\n pattern: RegExp(identifier),\n inside: {\n \"punctuation\": /\\./\n }\n },\n \"punctuation\": /[:,]/\n }\n }\n });\n var formatString = /:[^}\\r\\n]+/.source;\n var mInterpolationRound = nested(replace(/[^\"'/()]|<<0>>|\\(<>*\\)/.source, [regularStringCharacterOrComment]), 2);\n var mInterpolation = replace(/\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}/.source, [mInterpolationRound, formatString]);\n var sInterpolationRound = nested(replace(/[^\"'/()]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>|\\(<>*\\)/.source, [regularStringOrCharacter]), 2);\n var sInterpolation = replace(/\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}/.source, [sInterpolationRound, formatString]);\n function createInterpolationInside(interpolation, interpolationRound) {\n return {\n \"interpolation\": {\n pattern: re2(/((?:^|[^{])(?:\\{\\{)*)<<0>>/.source, [interpolation]),\n lookbehind: true,\n inside: {\n \"format-string\": {\n pattern: re2(/(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)/.source, [interpolationRound, formatString]),\n lookbehind: true,\n inside: {\n \"punctuation\": /^:/\n }\n },\n \"punctuation\": /^\\{|\\}$/,\n \"expression\": {\n pattern: /[\\s\\S]+/,\n alias: \"language-csharp\",\n inside: Prism2.languages.csharp\n }\n }\n },\n \"string\": /[\\s\\S]+/\n };\n }\n Prism2.languages.insertBefore(\"csharp\", \"string\", {\n \"interpolation-string\": [\n {\n pattern: re2(/(^|[^\\\\])(?:\\$@|@\\$)\"(?:\"\"|\\\\[\\s\\S]|\\{\\{|<<0>>|[^\\\\{\"])*\"/.source, [mInterpolation]),\n lookbehind: true,\n greedy: true,\n inside: createInterpolationInside(mInterpolation, mInterpolationRound)\n },\n {\n pattern: re2(/(^|[^@\\\\])\\$\"(?:\\\\.|\\{\\{|<<0>>|[^\\\\\"{])*\"/.source, [sInterpolation]),\n lookbehind: true,\n greedy: true,\n inside: createInterpolationInside(sInterpolation, sInterpolationRound)\n }\n ]\n });\n})(Prism);\nPrism.languages.dotnet = Prism.languages.cs = Prism.languages.csharp;\n(function(Prism2) {\n var string2 = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n Prism2.languages.css = {\n \"comment\": /\\/\\*[\\s\\S]*?\\*\\//,\n \"atrule\": {\n pattern: /@[\\w-](?:[^;{\\s]|\\s+(?![\\s{]))*(?:;|(?=\\s*\\{))/,\n inside: {\n \"rule\": /^@[\\w-]+/,\n \"selector-function-argument\": {\n pattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n lookbehind: true,\n alias: \"selector\"\n },\n \"keyword\": {\n pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n lookbehind: true\n }\n }\n },\n \"url\": {\n pattern: RegExp(\"\\\\burl\\\\((?:\" + string2.source + \"|\" + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + \")\\\\)\", \"i\"),\n greedy: true,\n inside: {\n \"function\": /^url/i,\n \"punctuation\": /^\\(|\\)$/,\n \"string\": {\n pattern: RegExp(\"^\" + string2.source + \"$\"),\n alias: \"url\"\n }\n }\n },\n \"selector\": {\n pattern: RegExp(`(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"'\\\\s]|\\\\s+(?![\\\\s{])|` + string2.source + \")*(?=\\\\s*\\\\{)\"),\n lookbehind: true\n },\n \"string\": {\n pattern: string2,\n greedy: true\n },\n \"property\": {\n pattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n lookbehind: true\n },\n \"important\": /!important\\b/i,\n \"function\": {\n pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n lookbehind: true\n },\n \"punctuation\": /[(){};:,]/\n };\n Prism2.languages.css[\"atrule\"].inside.rest = Prism2.languages.css;\n var markup = Prism2.languages.markup;\n if (markup) {\n markup.tag.addInlined(\"style\", \"css\");\n markup.tag.addAttribute(\"style\", \"css\");\n }\n})(Prism);\n(function(Prism2) {\n var keywords = [\n /\\b(?:async|sync|yield)\\*/,\n /\\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extension|external|extends|factory|final|finally|for|get|hide|if|implements|interface|import|in|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\\b/\n ];\n var packagePrefix = /(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/.source;\n var className = {\n pattern: RegExp(packagePrefix + /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source),\n lookbehind: true,\n inside: {\n \"namespace\": {\n pattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n inside: {\n \"punctuation\": /\\./\n }\n }\n }\n };\n Prism2.languages.dart = Prism2.languages.extend(\"clike\", {\n \"string\": [\n {\n pattern: /r?(\"\"\"|''')[\\s\\S]*?\\1/,\n greedy: true\n },\n {\n pattern: /r?([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n }\n ],\n \"class-name\": [\n className,\n {\n pattern: RegExp(packagePrefix + /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])/.source),\n lookbehind: true,\n inside: className.inside\n }\n ],\n \"keyword\": keywords,\n \"operator\": /\\bis!|\\b(?:as|is)\\b|\\+\\+|--|&&|\\|\\||<<=?|>>=?|~(?:\\/=?)?|[+\\-*\\/%&^|=!<>]=?|\\?/\n });\n Prism2.languages.insertBefore(\"dart\", \"function\", {\n \"metadata\": {\n pattern: /@\\w+/,\n alias: \"symbol\"\n }\n });\n Prism2.languages.insertBefore(\"dart\", \"class-name\", {\n \"generics\": {\n pattern: /<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<[\\w\\s,.&?]*>)*>)*>)*>/,\n inside: {\n \"class-name\": className,\n \"keyword\": keywords,\n \"punctuation\": /[<>(),.:]/,\n \"operator\": /[?&|]/\n }\n }\n });\n})(Prism);\n(function(Prism2) {\n Prism2.languages.django = {\n \"comment\": /^\\{#[\\s\\S]*?#\\}$/,\n \"tag\": {\n pattern: /(^\\{%[+-]?\\s*)\\w+/,\n lookbehind: true,\n alias: \"keyword\"\n },\n \"delimiter\": {\n pattern: /^\\{[{%][+-]?|[+-]?[}%]\\}$/,\n alias: \"punctuation\"\n },\n \"string\": {\n pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n \"filter\": {\n pattern: /(\\|)\\w+/,\n lookbehind: true,\n alias: \"function\"\n },\n \"test\": {\n pattern: /(\\bis\\s+(?:not\\s+)?)(?!not\\b)\\w+/,\n lookbehind: true,\n alias: \"function\"\n },\n \"function\": /\\b[a-z_]\\w+(?=\\s*\\()/i,\n \"keyword\": /\\b(?:and|as|by|else|for|if|import|in|is|loop|not|or|recursive|with|without)\\b/,\n \"operator\": /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n \"number\": /\\b\\d+(?:\\.\\d+)?\\b/,\n \"boolean\": /[Tt]rue|[Ff]alse|[Nn]one/,\n \"variable\": /\\b\\w+?\\b/,\n \"punctuation\": /[{}[\\](),.:;]/\n };\n var pattern = /\\{\\{[\\s\\S]*?\\}\\}|\\{%[\\s\\S]*?%\\}|\\{#[\\s\\S]*?#\\}/g;\n var markupTemplating = Prism2.languages[\"markup-templating\"];\n Prism2.hooks.add(\"before-tokenize\", function(env3) {\n markupTemplating.buildPlaceholders(env3, \"django\", pattern);\n });\n Prism2.hooks.add(\"after-tokenize\", function(env3) {\n markupTemplating.tokenizePlaceholders(env3, \"django\");\n });\n Prism2.languages.jinja2 = Prism2.languages.django;\n Prism2.hooks.add(\"before-tokenize\", function(env3) {\n markupTemplating.buildPlaceholders(env3, \"jinja2\", pattern);\n });\n Prism2.hooks.add(\"after-tokenize\", function(env3) {\n markupTemplating.tokenizePlaceholders(env3, \"jinja2\");\n });\n})(Prism);\n(function(Prism2) {\n var spaceAfterBackSlash = /\\\\[\\r\\n](?:\\s|\\\\[\\r\\n]|#.*(?!.))*(?![\\s#]|\\\\[\\r\\n])/.source;\n var space = /(?:[ \\t]+(?![ \\t])(?:)?|)/.source.replace(//g, function() {\n return spaceAfterBackSlash;\n });\n var string2 = /\"(?:[^\"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\"|'(?:[^'\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*'/.source;\n var option = /--[\\w-]+=(?:|(?![\"'])(?:[^\\s\\\\]|\\\\.)+)/.source.replace(//g, function() {\n return string2;\n });\n var stringRule = {\n pattern: RegExp(string2),\n greedy: true\n };\n var commentRule = {\n pattern: /(^[ \\t]*)#.*/m,\n lookbehind: true,\n greedy: true\n };\n function re2(source, flags) {\n source = source.replace(//g, function() {\n return option;\n }).replace(//g, function() {\n return space;\n });\n return RegExp(source, flags);\n }\n Prism2.languages.docker = {\n \"instruction\": {\n pattern: /(^[ \\t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\\s)(?:\\\\.|[^\\r\\n\\\\])*(?:\\\\$(?:\\s|#.*$)*(?![\\s#])(?:\\\\.|[^\\r\\n\\\\])*)*/im,\n lookbehind: true,\n greedy: true,\n inside: {\n \"options\": {\n pattern: re2(/(^(?:ONBUILD)?\\w+)(?:)*/.source, \"i\"),\n lookbehind: true,\n greedy: true,\n inside: {\n \"property\": {\n pattern: /(^|\\s)--[\\w-]+/,\n lookbehind: true\n },\n \"string\": [\n stringRule,\n {\n pattern: /(=)(?![\"'])(?:[^\\s\\\\]|\\\\.)+/,\n lookbehind: true\n }\n ],\n \"operator\": /\\\\$/m,\n \"punctuation\": /=/\n }\n },\n \"keyword\": [\n {\n pattern: re2(/(^(?:ONBUILD)?HEALTHCHECK(?:)*)(?:CMD|NONE)\\b/.source, \"i\"),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: re2(/(^(?:ONBUILD)?FROM(?:)*(?!--)[^ \\t\\\\]+)AS/.source, \"i\"),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: re2(/(^ONBUILD)\\w+/.source, \"i\"),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /^\\w+/,\n greedy: true\n }\n ],\n \"comment\": commentRule,\n \"string\": stringRule,\n \"variable\": /\\$(?:\\w+|\\{[^{}\"'\\\\]*\\})/,\n \"operator\": /\\\\$/m\n }\n },\n \"comment\": commentRule\n };\n Prism2.languages.dockerfile = Prism2.languages.docker;\n})(Prism);\n(function(Prism2) {\n Prism2.languages.ejs = {\n \"delimiter\": {\n pattern: /^<%[-_=]?|[-_]?%>$/,\n alias: \"punctuation\"\n },\n \"comment\": /^#[\\s\\S]*/,\n \"language-javascript\": {\n pattern: /[\\s\\S]+/,\n inside: Prism2.languages.javascript\n }\n };\n Prism2.hooks.add(\"before-tokenize\", function(env3) {\n var ejsPattern = /<%(?!%)[\\s\\S]+?%>/g;\n Prism2.languages[\"markup-templating\"].buildPlaceholders(env3, \"ejs\", ejsPattern);\n });\n Prism2.hooks.add(\"after-tokenize\", function(env3) {\n Prism2.languages[\"markup-templating\"].tokenizePlaceholders(env3, \"ejs\");\n });\n Prism2.languages.eta = Prism2.languages.ejs;\n})(Prism);\nPrism.languages.erlang = {\n \"comment\": /%.+/,\n \"string\": {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n \"quoted-function\": {\n pattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'(?=\\()/,\n alias: \"function\"\n },\n \"quoted-atom\": {\n pattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'/,\n alias: \"atom\"\n },\n \"boolean\": /\\b(?:true|false)\\b/,\n \"keyword\": /\\b(?:fun|when|case|of|end|if|receive|after|try|catch)\\b/,\n \"number\": [\n /\\$\\\\?./,\n /\\b\\d+#[a-z0-9]+/i,\n /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i\n ],\n \"function\": /\\b[a-z][\\w@]*(?=\\()/,\n \"variable\": {\n pattern: /(^|[^@])(?:\\b|\\?)[A-Z_][\\w@]*/,\n lookbehind: true\n },\n \"operator\": [\n /[=\\/<>:]=|=[:\\/]=|\\+\\+?|--?|[=*\\/!]|\\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\\b/,\n {\n pattern: /(^|[^<])<(?!<)/,\n lookbehind: true\n },\n {\n pattern: /(^|[^>])>(?!>)/,\n lookbehind: true\n }\n ],\n \"atom\": /\\b[a-z][\\w@]*/,\n \"punctuation\": /[()[\\]{}:;,.#|]|<<|>>/\n};\nPrism.languages.git = {\n \"comment\": /^#.*/m,\n \"deleted\": /^[-–].*/m,\n \"inserted\": /^\\+.*/m,\n \"string\": /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/m,\n \"command\": {\n pattern: /^.*\\$ git .*$/m,\n inside: {\n \"parameter\": /\\s--?\\w+/m\n }\n },\n \"coord\": /^@@.*@@$/m,\n \"commit-sha1\": /^commit \\w{40}$/m\n};\nPrism.languages.go = Prism.languages.extend(\"clike\", {\n \"string\": {\n pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n greedy: true\n },\n \"keyword\": /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n \"boolean\": /\\b(?:_|iota|nil|true|false)\\b/,\n \"number\": /(?:\\b0x[a-f\\d]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[-+]?\\d+)?)i?/i,\n \"operator\": /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n \"builtin\": /\\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\\b/\n});\ndelete Prism.languages.go[\"class-name\"];\nPrism.languages.graphql = {\n \"comment\": /#.*/,\n \"description\": {\n pattern: /(?:\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")(?=\\s*[a-z_])/i,\n greedy: true,\n alias: \"string\",\n inside: {\n \"language-markdown\": {\n pattern: /(^\"(?:\"\")?)(?!\\1)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: Prism.languages.markdown\n }\n }\n },\n \"string\": {\n pattern: /\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n \"number\": /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n \"boolean\": /\\b(?:true|false)\\b/,\n \"variable\": /\\$[a-z_]\\w*/i,\n \"directive\": {\n pattern: /@[a-z_]\\w*/i,\n alias: \"function\"\n },\n \"attr-name\": {\n pattern: /[a-z_]\\w*(?=\\s*(?:\\((?:[^()\"]|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")*\\))?:)/i,\n greedy: true\n },\n \"atom-input\": {\n pattern: /[A-Z]\\w*Input(?=!?.*$)/m,\n alias: \"class-name\"\n },\n \"scalar\": /\\b(?:Boolean|Float|ID|Int|String)\\b/,\n \"constant\": /\\b[A-Z][A-Z_\\d]*\\b/,\n \"class-name\": {\n pattern: /(\\b(?:enum|implements|interface|on|scalar|type|union)\\s+|&\\s*|:\\s*|\\[)[A-Z_]\\w*/,\n lookbehind: true\n },\n \"fragment\": {\n pattern: /(\\bfragment\\s+|\\.{3}\\s*(?!on\\b))[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: \"function\"\n },\n \"definition-mutation\": {\n pattern: /(\\bmutation\\s+)[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: \"function\"\n },\n \"definition-query\": {\n pattern: /(\\bquery\\s+)[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: \"function\"\n },\n \"keyword\": /\\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\\b/,\n \"operator\": /[!=|&]|\\.{3}/,\n \"property-query\": /\\w+(?=\\s*\\()/,\n \"object\": /\\w+(?=\\s*\\{)/,\n \"punctuation\": /[!(){}\\[\\]:=,]/,\n \"property\": /\\w+/\n};\nPrism.hooks.add(\"after-tokenize\", function afterTokenizeGraphql(env3) {\n if (env3.language !== \"graphql\") {\n return;\n }\n var validTokens = env3.tokens.filter(function(token) {\n return typeof token !== \"string\" && token.type !== \"comment\" && token.type !== \"scalar\";\n });\n var currentIndex = 0;\n function getToken(offset3) {\n return validTokens[currentIndex + offset3];\n }\n function isTokenType(types, offset3) {\n offset3 = offset3 || 0;\n for (var i4 = 0; i4 < types.length; i4++) {\n var token = getToken(i4 + offset3);\n if (!token || token.type !== types[i4]) {\n return false;\n }\n }\n return true;\n }\n function findClosingBracket(open, close) {\n var stackHeight = 1;\n for (var i4 = currentIndex; i4 < validTokens.length; i4++) {\n var token = validTokens[i4];\n var content = token.content;\n if (token.type === \"punctuation\" && typeof content === \"string\") {\n if (open.test(content)) {\n stackHeight++;\n } else if (close.test(content)) {\n stackHeight--;\n if (stackHeight === 0) {\n return i4;\n }\n }\n }\n }\n return -1;\n }\n function addAlias(token, alias) {\n var aliases = token.alias;\n if (!aliases) {\n token.alias = aliases = [];\n } else if (!Array.isArray(aliases)) {\n token.alias = aliases = [aliases];\n }\n aliases.push(alias);\n }\n for (; currentIndex < validTokens.length; ) {\n var startToken = validTokens[currentIndex++];\n if (startToken.type === \"keyword\" && startToken.content === \"mutation\") {\n var inputVariables = [];\n if (isTokenType([\"definition-mutation\", \"punctuation\"]) && getToken(1).content === \"(\") {\n currentIndex += 2;\n var definitionEnd = findClosingBracket(/^\\($/, /^\\)$/);\n if (definitionEnd === -1) {\n continue;\n }\n for (; currentIndex < definitionEnd; currentIndex++) {\n var t5 = getToken(0);\n if (t5.type === \"variable\") {\n addAlias(t5, \"variable-input\");\n inputVariables.push(t5.content);\n }\n }\n currentIndex = definitionEnd + 1;\n }\n if (isTokenType([\"punctuation\", \"property-query\"]) && getToken(0).content === \"{\") {\n currentIndex++;\n addAlias(getToken(0), \"property-mutation\");\n if (inputVariables.length > 0) {\n var mutationEnd = findClosingBracket(/^\\{$/, /^\\}$/);\n if (mutationEnd === -1) {\n continue;\n }\n for (var i3 = currentIndex; i3 < mutationEnd; i3++) {\n var varToken = validTokens[i3];\n if (varToken.type === \"variable\" && inputVariables.indexOf(varToken.content) >= 0) {\n addAlias(varToken, \"variable-input\");\n }\n }\n }\n }\n }\n }\n});\nPrism.languages.groovy = Prism.languages.extend(\"clike\", {\n \"string\": [\n {\n pattern: /(\"\"\"|''')(?:[^\\\\]|\\\\[\\s\\S])*?\\1|\\$\\/(?:[^/$]|\\$(?:[/$]|(?![/$]))|\\/(?!\\$))*\\/\\$/,\n greedy: true\n },\n {\n pattern: /([\"'/])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n }\n ],\n \"keyword\": /\\b(?:as|def|in|abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\\b/,\n \"number\": /\\b(?:0b[01_]+|0x[\\da-f_]+(?:\\.[\\da-f_p\\-]+)?|[\\d_]+(?:\\.[\\d_]+)?(?:e[+-]?\\d+)?)[glidf]?\\b/i,\n \"operator\": {\n pattern: /(^|[^.])(?:~|==?~?|\\?[.:]?|\\*(?:[.=]|\\*=?)?|\\.[@&]|\\.\\.<|\\.\\.(?!\\.)|-[-=>]?|\\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\\|[|=]?|\\/=?|\\^=?|%=?)/,\n lookbehind: true\n },\n \"punctuation\": /\\.+|[{}[\\];(),:$]/\n});\nPrism.languages.insertBefore(\"groovy\", \"string\", {\n \"shebang\": {\n pattern: /#!.+/,\n alias: \"comment\"\n }\n});\nPrism.languages.insertBefore(\"groovy\", \"punctuation\", {\n \"spock-block\": /\\b(?:setup|given|when|then|and|cleanup|expect|where):/\n});\nPrism.languages.insertBefore(\"groovy\", \"function\", {\n \"annotation\": {\n pattern: /(^|[^.])@\\w+/,\n lookbehind: true,\n alias: \"punctuation\"\n }\n});\nPrism.hooks.add(\"wrap\", function(env3) {\n if (env3.language === \"groovy\" && env3.type === \"string\") {\n var delimiter = env3.content[0];\n if (delimiter != \"'\") {\n var pattern = /([^\\\\])(?:\\$(?:\\{.*?\\}|[\\w.]+))/;\n if (delimiter === \"$\") {\n pattern = /([^\\$])(?:\\$(?:\\{.*?\\}|[\\w.]+))/;\n }\n env3.content = env3.content.replace(/</g, \"<\").replace(/&/g, \"&\");\n env3.content = Prism.highlight(env3.content, {\n \"expression\": {\n pattern,\n lookbehind: true,\n inside: Prism.languages.groovy\n }\n });\n env3.classes.push(delimiter === \"/\" ? \"regex\" : \"gstring\");\n }\n }\n});\n(function(Prism2) {\n var keywords = /\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/;\n var classNamePrefix = /(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/.source;\n var className = {\n pattern: RegExp(classNamePrefix + /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source),\n lookbehind: true,\n inside: {\n \"namespace\": {\n pattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n inside: {\n \"punctuation\": /\\./\n }\n },\n \"punctuation\": /\\./\n }\n };\n Prism2.languages.java = Prism2.languages.extend(\"clike\", {\n \"class-name\": [\n className,\n {\n pattern: RegExp(classNamePrefix + /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])/.source),\n lookbehind: true,\n inside: className.inside\n }\n ],\n \"keyword\": keywords,\n \"function\": [\n Prism2.languages.clike.function,\n {\n pattern: /(::\\s*)[a-z_]\\w*/,\n lookbehind: true\n }\n ],\n \"number\": /\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,\n \"operator\": {\n pattern: /(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,\n lookbehind: true\n }\n });\n Prism2.languages.insertBefore(\"java\", \"string\", {\n \"triple-quoted-string\": {\n pattern: /\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,\n greedy: true,\n alias: \"string\"\n }\n });\n Prism2.languages.insertBefore(\"java\", \"class-name\", {\n \"annotation\": {\n pattern: /(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,\n lookbehind: true,\n alias: \"punctuation\"\n },\n \"generics\": {\n pattern: /<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,\n inside: {\n \"class-name\": className,\n \"keyword\": keywords,\n \"punctuation\": /[<>(),.:]/,\n \"operator\": /[?&|]/\n }\n },\n \"namespace\": {\n pattern: RegExp(/(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?/.source.replace(//g, function() {\n return keywords.source;\n })),\n lookbehind: true,\n inside: {\n \"punctuation\": /\\./\n }\n }\n });\n})(Prism);\nPrism.languages.javascript = Prism.languages.extend(\"clike\", {\n \"class-name\": [\n Prism.languages.clike[\"class-name\"],\n {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:prototype|constructor))/,\n lookbehind: true\n }\n ],\n \"keyword\": [\n {\n pattern: /((?:^|\\})\\s*)catch\\b/,\n lookbehind: true\n },\n {\n pattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n lookbehind: true\n }\n ],\n \"function\": /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n \"number\": /\\b(?:(?:0[xX](?:[\\dA-Fa-f](?:_[\\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\\d(?:_\\d)?)+n|NaN|Infinity)\\b|(?:\\b(?:\\d(?:_\\d)?)+\\.?(?:\\d(?:_\\d)?)*|\\B\\.(?:\\d(?:_\\d)?)+)(?:[Ee][+-]?(?:\\d(?:_\\d)?)+)?/,\n \"operator\": /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\nPrism.languages.javascript[\"class-name\"][0].pattern = /(\\b(?:class|interface|extends|implements|instanceof|new)\\s+)[\\w.\\\\]+/;\nPrism.languages.insertBefore(\"javascript\", \"keyword\", {\n \"regex\": {\n pattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/,\n lookbehind: true,\n greedy: true,\n inside: {\n \"regex-source\": {\n pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n lookbehind: true,\n alias: \"language-regex\",\n inside: Prism.languages.regex\n },\n \"regex-delimiter\": /^\\/|\\/$/,\n \"regex-flags\": /^[a-z]+$/\n }\n },\n \"function-variable\": {\n pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n alias: \"function\"\n },\n \"parameter\": [\n {\n pattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n {\n pattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n {\n pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }\n ],\n \"constant\": /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\nPrism.languages.insertBefore(\"javascript\", \"string\", {\n \"hashbang\": {\n pattern: /^#!.*/,\n greedy: true,\n alias: \"comment\"\n },\n \"template-string\": {\n pattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n greedy: true,\n inside: {\n \"template-punctuation\": {\n pattern: /^`|`$/,\n alias: \"string\"\n },\n \"interpolation\": {\n pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n lookbehind: true,\n inside: {\n \"interpolation-punctuation\": {\n pattern: /^\\$\\{|\\}$/,\n alias: \"punctuation\"\n },\n rest: Prism.languages.javascript\n }\n },\n \"string\": /[\\s\\S]+/\n }\n }\n});\nif (Prism.languages.markup) {\n Prism.languages.markup.tag.addInlined(\"script\", \"javascript\");\n Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source, \"javascript\");\n}\nPrism.languages.js = Prism.languages.javascript;\nPrism.languages.json = {\n \"property\": {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n lookbehind: true,\n greedy: true\n },\n \"string\": {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n lookbehind: true,\n greedy: true\n },\n \"comment\": {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n \"number\": /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n \"punctuation\": /[{}[\\],]/,\n \"operator\": /:/,\n \"boolean\": /\\b(?:true|false)\\b/,\n \"null\": {\n pattern: /\\bnull\\b/,\n alias: \"keyword\"\n }\n};\nPrism.languages.webmanifest = Prism.languages.json;\n(function(Prism2) {\n var javascript = Prism2.util.clone(Prism2.languages.javascript);\n var space = /(?:\\s|\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))\\*\\/)/.source;\n var braces = /(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})/.source;\n var spread = /(?:\\{*\\.{3}(?:[^{}]|)*\\})/.source;\n function re2(source, flags) {\n source = source.replace(//g, function() {\n return space;\n }).replace(//g, function() {\n return braces;\n }).replace(//g, function() {\n return spread;\n });\n return RegExp(source, flags);\n }\n spread = re2(spread).source;\n Prism2.languages.jsx = Prism2.languages.extend(\"markup\", javascript);\n Prism2.languages.jsx.tag.pattern = re2(/<\\/?(?:[\\w.:-]+(?:+(?:[\\w.:$-]+(?:=(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s{'\"/>=]+|))?|))**\\/?)?>/.source);\n Prism2.languages.jsx.tag.inside[\"tag\"].pattern = /^<\\/?[^\\s>\\/]*/i;\n Prism2.languages.jsx.tag.inside[\"attr-value\"].pattern = /=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/i;\n Prism2.languages.jsx.tag.inside[\"tag\"].inside[\"class-name\"] = /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/;\n Prism2.languages.jsx.tag.inside[\"comment\"] = javascript[\"comment\"];\n Prism2.languages.insertBefore(\"inside\", \"attr-name\", {\n \"spread\": {\n pattern: re2(//.source),\n inside: Prism2.languages.jsx\n }\n }, Prism2.languages.jsx.tag);\n Prism2.languages.insertBefore(\"inside\", \"special-attr\", {\n \"script\": {\n pattern: re2(/=/.source),\n inside: {\n \"script-punctuation\": {\n pattern: /^=(?=\\{)/,\n alias: \"punctuation\"\n },\n rest: Prism2.languages.jsx\n },\n \"alias\": \"language-javascript\"\n }\n }, Prism2.languages.jsx.tag);\n var stringifyToken = function(token) {\n if (!token) {\n return \"\";\n }\n if (typeof token === \"string\") {\n return token;\n }\n if (typeof token.content === \"string\") {\n return token.content;\n }\n return token.content.map(stringifyToken).join(\"\");\n };\n var walkTokens = function(tokens) {\n var openedTags = [];\n for (var i3 = 0; i3 < tokens.length; i3++) {\n var token = tokens[i3];\n var notTagNorBrace = false;\n if (typeof token !== \"string\") {\n if (token.type === \"tag\" && token.content[0] && token.content[0].type === \"tag\") {\n if (token.content[0].content[0].content === \" 0 && openedTags[openedTags.length - 1].tagName === stringifyToken(token.content[0].content[1])) {\n openedTags.pop();\n }\n } else {\n if (token.content[token.content.length - 1].content === \"/>\")\n ;\n else {\n openedTags.push({\n tagName: stringifyToken(token.content[0].content[1]),\n openedBraces: 0\n });\n }\n }\n } else if (openedTags.length > 0 && token.type === \"punctuation\" && token.content === \"{\") {\n openedTags[openedTags.length - 1].openedBraces++;\n } else if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces > 0 && token.type === \"punctuation\" && token.content === \"}\") {\n openedTags[openedTags.length - 1].openedBraces--;\n } else {\n notTagNorBrace = true;\n }\n }\n if (notTagNorBrace || typeof token === \"string\") {\n if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces === 0) {\n var plainText = stringifyToken(token);\n if (i3 < tokens.length - 1 && (typeof tokens[i3 + 1] === \"string\" || tokens[i3 + 1].type === \"plain-text\")) {\n plainText += stringifyToken(tokens[i3 + 1]);\n tokens.splice(i3 + 1, 1);\n }\n if (i3 > 0 && (typeof tokens[i3 - 1] === \"string\" || tokens[i3 - 1].type === \"plain-text\")) {\n plainText = stringifyToken(tokens[i3 - 1]) + plainText;\n tokens.splice(i3 - 1, 1);\n i3--;\n }\n tokens[i3] = new Prism2.Token(\"plain-text\", plainText, null, plainText);\n }\n }\n if (token.content && typeof token.content !== \"string\") {\n walkTokens(token.content);\n }\n }\n };\n Prism2.hooks.add(\"after-tokenize\", function(env3) {\n if (env3.language !== \"jsx\" && env3.language !== \"tsx\") {\n return;\n }\n walkTokens(env3.tokens);\n });\n})(Prism);\n(function(Prism2) {\n Prism2.languages.kotlin = Prism2.languages.extend(\"clike\", {\n \"keyword\": {\n pattern: /(^|[^.])\\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\\b/,\n lookbehind: true\n },\n \"function\": [\n {\n pattern: /(?:`[^\\r\\n`]+`|\\b\\w+)(?=\\s*\\()/,\n greedy: true\n },\n {\n pattern: /(\\.)(?:`[^\\r\\n`]+`|\\w+)(?=\\s*\\{)/,\n lookbehind: true,\n greedy: true\n }\n ],\n \"number\": /\\b(?:0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?(?:[eE][+-]?\\d+(?:_\\d+)*)?[fFL]?)\\b/,\n \"operator\": /\\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\\/*%<>]=?|[?:]:?|\\.\\.|&&|\\|\\||\\b(?:and|inv|or|shl|shr|ushr|xor)\\b/\n });\n delete Prism2.languages.kotlin[\"class-name\"];\n Prism2.languages.insertBefore(\"kotlin\", \"string\", {\n \"raw-string\": {\n pattern: /(\"\"\"|''')[\\s\\S]*?\\1/,\n alias: \"string\"\n }\n });\n Prism2.languages.insertBefore(\"kotlin\", \"keyword\", {\n \"annotation\": {\n pattern: /\\B@(?:\\w+:)?(?:[A-Z]\\w*|\\[[^\\]]+\\])/,\n alias: \"builtin\"\n }\n });\n Prism2.languages.insertBefore(\"kotlin\", \"function\", {\n \"label\": {\n pattern: /\\b\\w+@|@\\w+\\b/,\n alias: \"symbol\"\n }\n });\n var interpolation = [\n {\n pattern: /\\$\\{[^}]+\\}/,\n inside: {\n \"delimiter\": {\n pattern: /^\\$\\{|\\}$/,\n alias: \"variable\"\n },\n rest: Prism2.languages.kotlin\n }\n },\n {\n pattern: /\\$\\w+/,\n alias: \"variable\"\n }\n ];\n Prism2.languages.kotlin[\"string\"].inside = Prism2.languages.kotlin[\"raw-string\"].inside = {\n interpolation\n };\n Prism2.languages.kt = Prism2.languages.kotlin;\n Prism2.languages.kts = Prism2.languages.kotlin;\n})(Prism);\n(function(Prism2) {\n var funcPattern = /\\\\(?:[^a-z()[\\]]|[a-z*]+)/i;\n var insideEqu = {\n \"equation-command\": {\n pattern: funcPattern,\n alias: \"regex\"\n }\n };\n Prism2.languages.latex = {\n \"comment\": /%.*/m,\n \"cdata\": {\n pattern: /(\\\\begin\\{((?:verbatim|lstlisting)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n lookbehind: true\n },\n \"equation\": [\n {\n pattern: /\\$\\$(?:\\\\[\\s\\S]|[^\\\\$])+\\$\\$|\\$(?:\\\\[\\s\\S]|[^\\\\$])+\\$|\\\\\\([\\s\\S]*?\\\\\\)|\\\\\\[[\\s\\S]*?\\\\\\]/,\n inside: insideEqu,\n alias: \"string\"\n },\n {\n pattern: /(\\\\begin\\{((?:equation|math|eqnarray|align|multline|gather)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n lookbehind: true,\n inside: insideEqu,\n alias: \"string\"\n }\n ],\n \"keyword\": {\n pattern: /(\\\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n lookbehind: true\n },\n \"url\": {\n pattern: /(\\\\url\\{)[^}]+(?=\\})/,\n lookbehind: true\n },\n \"headline\": {\n pattern: /(\\\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\\*?(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n lookbehind: true,\n alias: \"class-name\"\n },\n \"function\": {\n pattern: funcPattern,\n alias: \"selector\"\n },\n \"punctuation\": /[[\\]{}&]/\n };\n Prism2.languages.tex = Prism2.languages.latex;\n Prism2.languages.context = Prism2.languages.latex;\n})(Prism);\nPrism.languages.less = Prism.languages.extend(\"css\", {\n \"comment\": [\n /\\/\\*[\\s\\S]*?\\*\\//,\n {\n pattern: /(^|[^\\\\])\\/\\/.*/,\n lookbehind: true\n }\n ],\n \"atrule\": {\n pattern: /@[\\w-](?:\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n inside: {\n \"punctuation\": /[:()]/\n }\n },\n \"selector\": {\n pattern: /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};@\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n inside: {\n \"variable\": /@+[\\w-]+/\n }\n },\n \"property\": /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/i,\n \"operator\": /[+\\-*\\/]/\n});\nPrism.languages.insertBefore(\"less\", \"property\", {\n \"variable\": [\n {\n pattern: /@[\\w-]+\\s*:/,\n inside: {\n \"punctuation\": /:/\n }\n },\n /@@?[\\w-]+/\n ],\n \"mixin-usage\": {\n pattern: /([{;]\\s*)[.#](?!\\d)[\\w-].*?(?=[(;])/,\n lookbehind: true,\n alias: \"function\"\n }\n});\nPrism.languages.lua = {\n \"comment\": /^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,\n \"string\": {\n pattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[^z]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,\n greedy: true\n },\n \"number\": /\\b0x[a-f\\d]+(?:\\.[a-f\\d]*)?(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|(?:\\.\\d*)?(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,\n \"keyword\": /\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,\n \"function\": /(?!\\d)\\w+(?=\\s*(?:[({]))/,\n \"operator\": [\n /[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,\n {\n pattern: /(^|[^.])\\.\\.(?!\\.)/,\n lookbehind: true\n }\n ],\n \"punctuation\": /[\\[\\](){},;]|\\.+|:+/\n};\nPrism.languages.makefile = {\n \"comment\": {\n pattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])*/,\n lookbehind: true\n },\n \"string\": {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n \"builtin\": /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n \"symbol\": {\n pattern: /^(?:[^:=\\s]|[ \\t]+(?![\\s:]))+(?=\\s*:(?!=))/m,\n inside: {\n \"variable\": /\\$+(?:(?!\\$)[^(){}:#=\\s]+|(?=[({]))/\n }\n },\n \"variable\": /\\$+(?:(?!\\$)[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n \"keyword\": [\n /-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/,\n {\n pattern: /(\\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \\t])/,\n lookbehind: true\n }\n ],\n \"operator\": /(?:::|[?:+!])?=|[|@]/,\n \"punctuation\": /[:;(){}]/\n};\n(function(Prism2) {\n var inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))/.source;\n function createInline(pattern) {\n pattern = pattern.replace(//g, function() {\n return inner;\n });\n return RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + \"(?:\" + pattern + \")\");\n }\n var tableCell = /(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/.source;\n var tableRow = /\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))/.source.replace(/__/g, function() {\n return tableCell;\n });\n var tableLine = /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)/.source;\n Prism2.languages.markdown = Prism2.languages.extend(\"markup\", {});\n Prism2.languages.insertBefore(\"markdown\", \"prolog\", {\n \"front-matter-block\": {\n pattern: /(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,\n lookbehind: true,\n greedy: true,\n inside: {\n \"punctuation\": /^---|---$/,\n \"font-matter\": {\n pattern: /\\S+(?:\\s+\\S+)*/,\n alias: [\"yaml\", \"language-yaml\"],\n inside: Prism2.languages.yaml\n }\n }\n },\n \"blockquote\": {\n pattern: /^>(?:[\\t ]*>)*/m,\n alias: \"punctuation\"\n },\n \"table\": {\n pattern: RegExp(\"^\" + tableRow + tableLine + \"(?:\" + tableRow + \")*\", \"m\"),\n inside: {\n \"table-data-rows\": {\n pattern: RegExp(\"^(\" + tableRow + tableLine + \")(?:\" + tableRow + \")*$\"),\n lookbehind: true,\n inside: {\n \"table-data\": {\n pattern: RegExp(tableCell),\n inside: Prism2.languages.markdown\n },\n \"punctuation\": /\\|/\n }\n },\n \"table-line\": {\n pattern: RegExp(\"^(\" + tableRow + \")\" + tableLine + \"$\"),\n lookbehind: true,\n inside: {\n \"punctuation\": /\\||:?-{3,}:?/\n }\n },\n \"table-header-row\": {\n pattern: RegExp(\"^\" + tableRow + \"$\"),\n inside: {\n \"table-header\": {\n pattern: RegExp(tableCell),\n alias: \"important\",\n inside: Prism2.languages.markdown\n },\n \"punctuation\": /\\|/\n }\n }\n }\n },\n \"code\": [\n {\n pattern: /((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,\n lookbehind: true,\n alias: \"keyword\"\n },\n {\n pattern: /^```[\\s\\S]*?^```$/m,\n greedy: true,\n inside: {\n \"code-block\": {\n pattern: /^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,\n lookbehind: true\n },\n \"code-language\": {\n pattern: /^(```).+/,\n lookbehind: true\n },\n \"punctuation\": /```/\n }\n }\n ],\n \"title\": [\n {\n pattern: /\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,\n alias: \"important\",\n inside: {\n punctuation: /==+$|--+$/\n }\n },\n {\n pattern: /(^\\s*)#.+/m,\n lookbehind: true,\n alias: \"important\",\n inside: {\n punctuation: /^#+|#+$/\n }\n }\n ],\n \"hr\": {\n pattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n lookbehind: true,\n alias: \"punctuation\"\n },\n \"list\": {\n pattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n lookbehind: true,\n alias: \"punctuation\"\n },\n \"url-reference\": {\n pattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n inside: {\n \"variable\": {\n pattern: /^(!?\\[)[^\\]]+/,\n lookbehind: true\n },\n \"string\": /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n \"punctuation\": /^[\\[\\]!:]|[<>]/\n },\n alias: \"url\"\n },\n \"bold\": {\n pattern: createInline(/\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n \"content\": {\n pattern: /(^..)[\\s\\S]+(?=..$)/,\n lookbehind: true,\n inside: {}\n },\n \"punctuation\": /\\*\\*|__/\n }\n },\n \"italic\": {\n pattern: createInline(/\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n \"content\": {\n pattern: /(^.)[\\s\\S]+(?=.$)/,\n lookbehind: true,\n inside: {}\n },\n \"punctuation\": /[*_]/\n }\n },\n \"strike\": {\n pattern: createInline(/(~~?)(?:(?!~))+\\2/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n \"content\": {\n pattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: {}\n },\n \"punctuation\": /~~?/\n }\n },\n \"code-snippet\": {\n pattern: /(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,\n lookbehind: true,\n greedy: true,\n alias: [\"code\", \"keyword\"]\n },\n \"url\": {\n pattern: createInline(/!?\\[(?:(?!\\]))+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)|[ \\t]?\\[(?:(?!\\]))+\\])/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n \"operator\": /^!/,\n \"content\": {\n pattern: /(^\\[)[^\\]]+(?=\\])/,\n lookbehind: true,\n inside: {}\n },\n \"variable\": {\n pattern: /(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,\n lookbehind: true\n },\n \"url\": {\n pattern: /(^\\]\\()[^\\s)]+/,\n lookbehind: true\n },\n \"string\": {\n pattern: /(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,\n lookbehind: true\n }\n }\n }\n });\n [\"url\", \"bold\", \"italic\", \"strike\"].forEach(function(token) {\n [\"url\", \"bold\", \"italic\", \"strike\", \"code-snippet\"].forEach(function(inside) {\n if (token !== inside) {\n Prism2.languages.markdown[token].inside.content.inside[inside] = Prism2.languages.markdown[inside];\n }\n });\n });\n Prism2.hooks.add(\"after-tokenize\", function(env3) {\n if (env3.language !== \"markdown\" && env3.language !== \"md\") {\n return;\n }\n function walkTokens(tokens) {\n if (!tokens || typeof tokens === \"string\") {\n return;\n }\n for (var i3 = 0, l4 = tokens.length; i3 < l4; i3++) {\n var token = tokens[i3];\n if (token.type !== \"code\") {\n walkTokens(token.content);\n continue;\n }\n var codeLang = token.content[1];\n var codeBlock = token.content[3];\n if (codeLang && codeBlock && codeLang.type === \"code-language\" && codeBlock.type === \"code-block\" && typeof codeLang.content === \"string\") {\n var lang = codeLang.content.replace(/\\b#/g, \"sharp\").replace(/\\b\\+\\+/g, \"pp\");\n lang = (/[a-z][\\w-]*/i.exec(lang) || [\"\"])[0].toLowerCase();\n var alias = \"language-\" + lang;\n if (!codeBlock.alias) {\n codeBlock.alias = [alias];\n } else if (typeof codeBlock.alias === \"string\") {\n codeBlock.alias = [codeBlock.alias, alias];\n } else {\n codeBlock.alias.push(alias);\n }\n }\n }\n }\n walkTokens(env3.tokens);\n });\n Prism2.hooks.add(\"wrap\", function(env3) {\n if (env3.type !== \"code-block\") {\n return;\n }\n var codeLang = \"\";\n for (var i3 = 0, l4 = env3.classes.length; i3 < l4; i3++) {\n var cls = env3.classes[i3];\n var match2 = /language-(.+)/.exec(cls);\n if (match2) {\n codeLang = match2[1];\n break;\n }\n }\n var grammar = Prism2.languages[codeLang];\n if (!grammar) {\n if (codeLang && codeLang !== \"none\" && Prism2.plugins.autoloader) {\n var id = \"md-\" + new Date().valueOf() + \"-\" + Math.floor(Math.random() * 1e16);\n env3.attributes[\"id\"] = id;\n Prism2.plugins.autoloader.loadLanguages(codeLang, function() {\n var ele = document.getElementById(id);\n if (ele) {\n ele.innerHTML = Prism2.highlight(ele.textContent, Prism2.languages[codeLang], codeLang);\n }\n });\n }\n } else {\n env3.content = Prism2.highlight(textContent(env3.content), grammar, codeLang);\n }\n });\n var tagPattern = RegExp(Prism2.languages.markup.tag.pattern.source, \"gi\");\n var KNOWN_ENTITY_NAMES = {\n \"amp\": \"&\",\n \"lt\": \"<\",\n \"gt\": \">\",\n \"quot\": '\"'\n };\n var fromCodePoint = String.fromCodePoint || String.fromCharCode;\n function textContent(html) {\n var text4 = html.replace(tagPattern, \"\");\n text4 = text4.replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi, function(m3, code) {\n code = code.toLowerCase();\n if (code[0] === \"#\") {\n var value;\n if (code[1] === \"x\") {\n value = parseInt(code.slice(2), 16);\n } else {\n value = Number(code.slice(1));\n }\n return fromCodePoint(value);\n } else {\n var known = KNOWN_ENTITY_NAMES[code];\n if (known) {\n return known;\n }\n return m3;\n }\n });\n return text4;\n }\n Prism2.languages.md = Prism2.languages.markdown;\n})(Prism);\nPrism.languages.matlab = {\n \"comment\": [\n /%\\{[\\s\\S]*?\\}%/,\n /%.+/\n ],\n \"string\": {\n pattern: /\\B'(?:''|[^'\\r\\n])*'/,\n greedy: true\n },\n \"number\": /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?(?:[ij])?|\\b[ij]\\b/,\n \"keyword\": /\\b(?:break|case|catch|continue|else|elseif|end|for|function|if|inf|NaN|otherwise|parfor|pause|pi|return|switch|try|while)\\b/,\n \"function\": /\\b(?!\\d)\\w+(?=\\s*\\()/,\n \"operator\": /\\.?[*^\\/\\\\']|[+\\-:@]|[<>=~]=?|&&?|\\|\\|?/,\n \"punctuation\": /\\.{3}|[.,;\\[\\](){}!]/\n};\nPrism.languages.objectivec = Prism.languages.extend(\"c\", {\n \"string\": /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|@\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n \"keyword\": /\\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n \"operator\": /-[->]?|\\+\\+?|!=?|<>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n});\ndelete Prism.languages.objectivec[\"class-name\"];\nPrism.languages.objc = Prism.languages.objectivec;\nPrism.languages.perl = {\n \"comment\": [\n {\n pattern: /(^\\s*)=\\w[\\s\\S]*?=cut.*/m,\n lookbehind: true\n },\n {\n pattern: /(^|[^\\\\$])#.*/,\n lookbehind: true\n }\n ],\n \"string\": [\n {\n pattern: /\\b(?:q|qq|qx|qw)\\s*([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n greedy: true\n },\n {\n pattern: /\\b(?:q|qq|qx|qw)\\s+([a-zA-Z0-9])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n greedy: true\n },\n {\n pattern: /\\b(?:q|qq|qx|qw)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/,\n greedy: true\n },\n {\n pattern: /\\b(?:q|qq|qx|qw)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}/,\n greedy: true\n },\n {\n pattern: /\\b(?:q|qq|qx|qw)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]/,\n greedy: true\n },\n {\n pattern: /\\b(?:q|qq|qx|qw)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>/,\n greedy: true\n },\n {\n pattern: /(\"|`)(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n greedy: true\n },\n {\n pattern: /'(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n greedy: true\n }\n ],\n \"regex\": [\n {\n pattern: /\\b(?:m|qr)\\s*([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1[msixpodualngc]*/,\n greedy: true\n },\n {\n pattern: /\\b(?:m|qr)\\s+([a-zA-Z0-9])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1[msixpodualngc]*/,\n greedy: true\n },\n {\n pattern: /\\b(?:m|qr)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngc]*/,\n greedy: true\n },\n {\n pattern: /\\b(?:m|qr)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngc]*/,\n greedy: true\n },\n {\n pattern: /\\b(?:m|qr)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngc]*/,\n greedy: true\n },\n {\n pattern: /\\b(?:m|qr)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngc]*/,\n greedy: true\n },\n {\n pattern: /(^|[^-]\\b)(?:s|tr|y)\\s*([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2[msixpodualngcer]*/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^-]\\b)(?:s|tr|y)\\s+([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2[msixpodualngcer]*/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)\\s*\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)[msixpodualngcer]*/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}\\s*\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}[msixpodualngcer]*/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^-]\\b)(?:s|tr|y)\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]\\s*\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\][msixpodualngcer]*/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^-]\\b)(?:s|tr|y)\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>\\s*<(?:[^<>\\\\]|\\\\[\\s\\S])*>[msixpodualngcer]*/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\/[msixpodualngc]*(?=\\s*(?:$|[\\r\\n,.;})&|\\-+*~<>!?^]|(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\\b))/,\n greedy: true\n }\n ],\n \"variable\": [\n /[&*$@%]\\{\\^[A-Z]+\\}/,\n /[&*$@%]\\^[A-Z_]/,\n /[&*$@%]#?(?=\\{)/,\n /[&*$@%]#?(?:(?:::)*'?(?!\\d)[\\w$]+(?![\\w$]))+(?:::)*/i,\n /[&*$@%]\\d+/,\n /(?!%=)[$@%][!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~]/\n ],\n \"filehandle\": {\n pattern: /<(?![<=])\\S*>|\\b_\\b/,\n alias: \"symbol\"\n },\n \"vstring\": {\n pattern: /v\\d+(?:\\.\\d+)*|\\d+(?:\\.\\d+){2,}/,\n alias: \"string\"\n },\n \"function\": {\n pattern: /sub \\w+/i,\n inside: {\n keyword: /sub/\n }\n },\n \"keyword\": /\\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\\b/,\n \"number\": /\\b(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\\d(?:_?\\d)*)?\\.)?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)\\b/,\n \"operator\": /-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b|\\+[+=]?|-[-=>]?|\\*\\*?=?|\\/\\/?=?|=[=~>]?|~[~=]?|\\|\\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\\.(?:=|\\.\\.?)?|[\\\\?]|\\bx(?:=|\\b)|\\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\\b/,\n \"punctuation\": /[{}[\\];(),:]/\n};\n(function(Prism2) {\n var comment = /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*|#(?!\\[).*/;\n var constant2 = [\n {\n pattern: /\\b(?:false|true)\\b/i,\n alias: \"boolean\"\n },\n {\n pattern: /(::\\s*)\\b[a-z_]\\w*\\b(?!\\s*\\()/i,\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\b(?:case|const)\\s+)\\b[a-z_]\\w*(?=\\s*[;=])/i,\n greedy: true,\n lookbehind: true\n },\n /\\b(?:null)\\b/i,\n /\\b[A-Z_][A-Z0-9_]*\\b(?!\\s*\\()/\n ];\n var number = /\\b0b[01]+(?:_[01]+)*\\b|\\b0o[0-7]+(?:_[0-7]+)*\\b|\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b|(?:\\b\\d+(?:_\\d+)*\\.?(?:\\d+(?:_\\d+)*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i;\n var operator = /|\\?\\?=?|\\.{3}|\\??->|[!=]=?=?|::|\\*\\*=?|--|\\+\\+|&&|\\|\\||<<|>>|[?~]|[/^|%*&<>.+-]=?/;\n var punctuation = /[{}\\[\\](),:;]/;\n Prism2.languages.php = {\n \"delimiter\": {\n pattern: /\\?>$|^<\\?(?:php(?=\\s)|=)?/i,\n alias: \"important\"\n },\n \"comment\": comment,\n \"variable\": /\\$+(?:\\w+\\b|(?=\\{))/i,\n \"package\": {\n pattern: /(namespace\\s+|use\\s+(?:function\\s+)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n \"class-name-definition\": {\n pattern: /(\\b(?:class|enum|interface|trait)\\s+)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n lookbehind: true,\n alias: \"class-name\"\n },\n \"function-definition\": {\n pattern: /(\\bfunction\\s+)[a-z_]\\w*(?=\\s*\\()/i,\n lookbehind: true,\n alias: \"function\"\n },\n \"keyword\": [\n {\n pattern: /(\\(\\s*)\\b(?:bool|boolean|int|integer|float|string|object|array)\\b(?=\\s*\\))/i,\n alias: \"type-casting\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /([(,?]\\s*)\\b(?:bool|int|float|string|object|array(?!\\s*\\()|mixed|self|static|callable|iterable|(?:null|false)(?=\\s*\\|))\\b(?=\\s*\\$)/i,\n alias: \"type-hint\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /([(,?]\\s*[\\w|]\\|\\s*)(?:null|false)\\b(?=\\s*\\$)/i,\n alias: \"type-hint\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b(?:bool|int|float|string|object|void|array(?!\\s*\\()|mixed|self|static|callable|iterable|(?:null|false)(?=\\s*\\|))\\b/i,\n alias: \"return-type\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?[\\w|]\\|\\s*)(?:null|false)\\b/i,\n alias: \"return-type\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /\\b(?:bool|int|float|string|object|void|array(?!\\s*\\()|mixed|iterable|(?:null|false)(?=\\s*\\|))\\b/i,\n alias: \"type-declaration\",\n greedy: true\n },\n {\n pattern: /(\\|\\s*)(?:null|false)\\b/i,\n alias: \"type-declaration\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /\\b(?:parent|self|static)(?=\\s*::)/i,\n alias: \"static-context\",\n greedy: true\n },\n {\n pattern: /(\\byield\\s+)from\\b/i,\n lookbehind: true\n },\n /\\bclass\\b/i,\n {\n pattern: /((?:^|[^\\s>:]|(?:^|[^-])>|(?:^|[^:]):)\\s*)\\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\\b/i,\n lookbehind: true\n }\n ],\n \"argument-name\": {\n pattern: /([(,]\\s+)\\b[a-z_]\\w*(?=\\s*:(?!:))/i,\n lookbehind: true\n },\n \"class-name\": [\n {\n pattern: /(\\b(?:extends|implements|instanceof|new(?!\\s+self|\\s+static))\\s+|\\bcatch\\s*\\()\\b[a-z_]\\w*(?!\\\\)\\b/i,\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\|\\s*)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /\\b[a-z_]\\w*(?!\\\\)\\b(?=\\s*\\|)/i,\n greedy: true\n },\n {\n pattern: /(\\|\\s*)(?:\\\\?\\b[a-z_]\\w*)+\\b/i,\n alias: \"class-name-fully-qualified\",\n greedy: true,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n {\n pattern: /(?:\\\\?\\b[a-z_]\\w*)+\\b(?=\\s*\\|)/i,\n alias: \"class-name-fully-qualified\",\n greedy: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n {\n pattern: /(\\b(?:extends|implements|instanceof|new(?!\\s+self\\b|\\s+static\\b))\\s+|\\bcatch\\s*\\()(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n alias: \"class-name-fully-qualified\",\n greedy: true,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n {\n pattern: /\\b[a-z_]\\w*(?=\\s*\\$)/i,\n alias: \"type-declaration\",\n greedy: true\n },\n {\n pattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n alias: [\"class-name-fully-qualified\", \"type-declaration\"],\n greedy: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n {\n pattern: /\\b[a-z_]\\w*(?=\\s*::)/i,\n alias: \"static-context\",\n greedy: true\n },\n {\n pattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*::)/i,\n alias: [\"class-name-fully-qualified\", \"static-context\"],\n greedy: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n {\n pattern: /([(,?]\\s*)[a-z_]\\w*(?=\\s*\\$)/i,\n alias: \"type-hint\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /([(,?]\\s*)(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n alias: [\"class-name-fully-qualified\", \"type-hint\"],\n greedy: true,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n {\n pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n alias: \"return-type\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n alias: [\"class-name-fully-qualified\", \"return-type\"],\n greedy: true,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n }\n ],\n \"constant\": constant2,\n \"function\": {\n pattern: /(^|[^\\\\\\w])\\\\?[a-z_](?:[\\w\\\\]*\\w)?(?=\\s*\\()/i,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n },\n \"property\": {\n pattern: /(->\\s*)\\w+/,\n lookbehind: true\n },\n \"number\": number,\n \"operator\": operator,\n \"punctuation\": punctuation\n };\n var string_interpolation = {\n pattern: /\\{\\$(?:\\{(?:\\{[^{}]+\\}|[^{}]+)\\}|[^{}])+\\}|(^|[^\\\\{])\\$+(?:\\w+(?:\\[[^\\r\\n\\[\\]]+\\]|->\\w+)?)/,\n lookbehind: true,\n inside: Prism2.languages.php\n };\n var string2 = [\n {\n pattern: /<<<'([^']+)'[\\r\\n](?:.*[\\r\\n])*?\\1;/,\n alias: \"nowdoc-string\",\n greedy: true,\n inside: {\n \"delimiter\": {\n pattern: /^<<<'[^']+'|[a-z_]\\w*;$/i,\n alias: \"symbol\",\n inside: {\n \"punctuation\": /^<<<'?|[';]$/\n }\n }\n }\n },\n {\n pattern: /<<<(?:\"([^\"]+)\"[\\r\\n](?:.*[\\r\\n])*?\\1;|([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?\\2;)/i,\n alias: \"heredoc-string\",\n greedy: true,\n inside: {\n \"delimiter\": {\n pattern: /^<<<(?:\"[^\"]+\"|[a-z_]\\w*)|[a-z_]\\w*;$/i,\n alias: \"symbol\",\n inside: {\n \"punctuation\": /^<<<\"?|[\";]$/\n }\n },\n \"interpolation\": string_interpolation\n }\n },\n {\n pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n alias: \"backtick-quoted-string\",\n greedy: true\n },\n {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n alias: \"single-quoted-string\",\n greedy: true\n },\n {\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n alias: \"double-quoted-string\",\n greedy: true,\n inside: {\n \"interpolation\": string_interpolation\n }\n }\n ];\n Prism2.languages.insertBefore(\"php\", \"variable\", {\n \"string\": string2,\n \"attribute\": {\n pattern: /#\\[(?:[^\"'\\/#]|\\/(?![*/])|\\/\\/.*$|#(?!\\[).*$|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*')+\\](?=\\s*[a-z$#])/im,\n greedy: true,\n inside: {\n \"attribute-content\": {\n pattern: /^(#\\[)[\\s\\S]+(?=\\]$)/,\n lookbehind: true,\n inside: {\n \"comment\": comment,\n \"string\": string2,\n \"attribute-class-name\": [\n {\n pattern: /([^:]|^)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n alias: \"class-name\",\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /([^:]|^)(?:\\\\?\\b[a-z_]\\w*)+/i,\n alias: [\n \"class-name\",\n \"class-name-fully-qualified\"\n ],\n greedy: true,\n lookbehind: true,\n inside: {\n \"punctuation\": /\\\\/\n }\n }\n ],\n \"constant\": constant2,\n \"number\": number,\n \"operator\": operator,\n \"punctuation\": punctuation\n }\n },\n \"delimiter\": {\n pattern: /^#\\[|\\]$/,\n alias: \"punctuation\"\n }\n }\n }\n });\n Prism2.hooks.add(\"before-tokenize\", function(env3) {\n if (!/<\\?/.test(env3.code)) {\n return;\n }\n var phpPattern = /<\\?(?:[^\"'/#]|\\/(?![*/])|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|(?:\\/\\/|#(?!\\[))(?:[^?\\n\\r]|\\?(?!>))*(?=$|\\?>|[\\r\\n])|#\\[|\\/\\*(?:[^*]|\\*(?!\\/))*(?:\\*\\/|$))*?(?:\\?>|$)/gi;\n Prism2.languages[\"markup-templating\"].buildPlaceholders(env3, \"php\", phpPattern);\n });\n Prism2.hooks.add(\"after-tokenize\", function(env3) {\n Prism2.languages[\"markup-templating\"].tokenizePlaceholders(env3, \"php\");\n });\n})(Prism);\n(function(Prism2) {\n var powershell = Prism2.languages.powershell = {\n \"comment\": [\n {\n pattern: /(^|[^`])<#[\\s\\S]*?#>/,\n lookbehind: true\n },\n {\n pattern: /(^|[^`])#.*/,\n lookbehind: true\n }\n ],\n \"string\": [\n {\n pattern: /\"(?:`[\\s\\S]|[^`\"])*\"/,\n greedy: true,\n inside: {\n \"function\": {\n pattern: /(^|[^`])\\$\\((?:\\$\\([^\\r\\n()]*\\)|(?!\\$\\()[^\\r\\n)])*\\)/,\n lookbehind: true,\n inside: {}\n }\n }\n },\n {\n pattern: /'(?:[^']|'')*'/,\n greedy: true\n }\n ],\n \"namespace\": /\\[[a-z](?:\\[(?:\\[[^\\]]*\\]|[^\\[\\]])*\\]|[^\\[\\]])*\\]/i,\n \"boolean\": /\\$(?:true|false)\\b/i,\n \"variable\": /\\$\\w+\\b/,\n \"function\": [\n /\\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\\b/i,\n /\\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\\b/i\n ],\n \"keyword\": /\\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\\b/i,\n \"operator\": {\n pattern: /(\\W?)(?:!|-(?:eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\\b|-[-=]?|\\+[+=]?|[*\\/%]=?)/i,\n lookbehind: true\n },\n \"punctuation\": /[|{}[\\];(),.]/\n };\n var stringInside = powershell.string[0].inside;\n stringInside.boolean = powershell.boolean;\n stringInside.variable = powershell.variable;\n stringInside.function.inside = powershell;\n})(Prism);\nPrism.languages.properties = {\n \"comment\": /^[ \\t]*[#!].*$/m,\n \"attr-value\": {\n pattern: /(^[ \\t]*(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\s:=])+(?: *[=:] *(?! )| ))(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])+/m,\n lookbehind: true\n },\n \"attr-name\": /^[ \\t]*(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\s:=])+(?= *[=:]| )/m,\n \"punctuation\": /[=:]/\n};\n(function(Prism2) {\n var builtinTypes = /\\b(?:double|float|[su]?int(?:32|64)|s?fixed(?:32|64)|bool|string|bytes)\\b/;\n Prism2.languages.protobuf = Prism2.languages.extend(\"clike\", {\n \"class-name\": [\n {\n pattern: /(\\b(?:enum|extend|message|service)\\s+)[A-Za-z_]\\w*(?=\\s*\\{)/,\n lookbehind: true\n },\n {\n pattern: /(\\b(?:rpc\\s+\\w+|returns)\\s*\\(\\s*(?:stream\\s+)?)\\.?[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*(?=\\s*\\))/,\n lookbehind: true\n }\n ],\n \"keyword\": /\\b(?:enum|extend|extensions|import|message|oneof|option|optional|package|public|repeated|required|reserved|returns|rpc(?=\\s+\\w)|service|stream|syntax|to)\\b(?!\\s*=\\s*\\d)/,\n \"function\": /\\b[a-z_]\\w*(?=\\s*\\()/i\n });\n Prism2.languages.insertBefore(\"protobuf\", \"operator\", {\n \"map\": {\n pattern: /\\bmap<\\s*[\\w.]+\\s*,\\s*[\\w.]+\\s*>(?=\\s+[a-z_]\\w*\\s*[=;])/i,\n alias: \"class-name\",\n inside: {\n \"punctuation\": /[<>.,]/,\n \"builtin\": builtinTypes\n }\n },\n \"builtin\": builtinTypes,\n \"positional-class-name\": {\n pattern: /(?:\\b|\\B\\.)[a-z_]\\w*(?:\\.[a-z_]\\w*)*(?=\\s+[a-z_]\\w*\\s*[=;])/i,\n alias: \"class-name\",\n inside: {\n \"punctuation\": /\\./\n }\n },\n \"annotation\": {\n pattern: /(\\[\\s*)[a-z_]\\w*(?=\\s*=)/i,\n lookbehind: true\n }\n });\n})(Prism);\nPrism.languages.python = {\n \"comment\": {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true\n },\n \"string-interpolation\": {\n pattern: /(?:f|rf|fr)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n greedy: true,\n inside: {\n \"interpolation\": {\n pattern: /((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,\n lookbehind: true,\n inside: {\n \"format-spec\": {\n pattern: /(:)[^:(){}]+(?=\\}$)/,\n lookbehind: true\n },\n \"conversion-option\": {\n pattern: /![sra](?=[:}]$)/,\n alias: \"punctuation\"\n },\n rest: null\n }\n },\n \"string\": /[\\s\\S]+/\n }\n },\n \"triple-quoted-string\": {\n pattern: /(?:[rub]|rb|br)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n greedy: true,\n alias: \"string\"\n },\n \"string\": {\n pattern: /(?:[rub]|rb|br)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n greedy: true\n },\n \"function\": {\n pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n lookbehind: true\n },\n \"class-name\": {\n pattern: /(\\bclass\\s+)\\w+/i,\n lookbehind: true\n },\n \"decorator\": {\n pattern: /(^[\\t ]*)@\\w+(?:\\.\\w+)*/im,\n lookbehind: true,\n alias: [\"annotation\", \"punctuation\"],\n inside: {\n \"punctuation\": /\\./\n }\n },\n \"keyword\": /\\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n \"builtin\": /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n \"boolean\": /\\b(?:True|False|None)\\b/,\n \"number\": /\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?\\b/i,\n \"operator\": /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n \"punctuation\": /[{}[\\];(),.:]/\n};\nPrism.languages.python[\"string-interpolation\"].inside[\"interpolation\"].inside.rest = Prism.languages.python;\nPrism.languages.py = Prism.languages.python;\nPrism.languages.r = {\n \"comment\": /#.*/,\n \"string\": {\n pattern: /(['\"])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n \"percent-operator\": {\n pattern: /%[^%\\s]*%/,\n alias: \"operator\"\n },\n \"boolean\": /\\b(?:TRUE|FALSE)\\b/,\n \"ellipsis\": /\\.\\.(?:\\.|\\d+)/,\n \"number\": [\n /\\b(?:NaN|Inf)\\b/,\n /(?:\\b0x[\\dA-Fa-f]+(?:\\.\\d*)?|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[EePp][+-]?\\d+)?[iL]?/\n ],\n \"keyword\": /\\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\\b/,\n \"operator\": /->?>?|<(?:=|=!]=?|::?|&&?|\\|\\|?|[+*\\/^$@~]/,\n \"punctuation\": /[(){}\\[\\],;]/\n};\n(function(Prism2) {\n Prism2.languages.ruby = Prism2.languages.extend(\"clike\", {\n \"comment\": [\n /#.*/,\n {\n pattern: /^=begin\\s[\\s\\S]*?^=end/m,\n greedy: true\n }\n ],\n \"class-name\": {\n pattern: /(\\b(?:class)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n lookbehind: true,\n inside: {\n \"punctuation\": /[.\\\\]/\n }\n },\n \"keyword\": /\\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\\b/\n });\n var interpolation = {\n pattern: /#\\{[^}]+\\}/,\n inside: {\n \"delimiter\": {\n pattern: /^#\\{|\\}$/,\n alias: \"tag\"\n },\n rest: Prism2.languages.ruby\n }\n };\n delete Prism2.languages.ruby.function;\n Prism2.languages.insertBefore(\"ruby\", \"keyword\", {\n \"regex\": [\n {\n pattern: RegExp(/%r/.source + \"(?:\" + [\n /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source,\n /\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/.source,\n /\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}/.source,\n /\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\]/.source,\n /<(?:[^<>\\\\]|\\\\[\\s\\S])*>/.source\n ].join(\"|\") + \")\" + /[egimnosux]{0,6}/.source),\n greedy: true,\n inside: {\n \"interpolation\": interpolation\n }\n },\n {\n pattern: /(^|[^/])\\/(?!\\/)(?:\\[[^\\r\\n\\]]+\\]|\\\\.|[^[/\\\\\\r\\n])+\\/[egimnosux]{0,6}(?=\\s*(?:$|[\\r\\n,.;})#]))/,\n lookbehind: true,\n greedy: true,\n inside: {\n \"interpolation\": interpolation\n }\n }\n ],\n \"variable\": /[@$]+[a-zA-Z_]\\w*(?:[?!]|\\b)/,\n \"symbol\": {\n pattern: /(^|[^:]):[a-zA-Z_]\\w*(?:[?!]|\\b)/,\n lookbehind: true\n },\n \"method-definition\": {\n pattern: /(\\bdef\\s+)[\\w.]+/,\n lookbehind: true,\n inside: {\n \"function\": /\\w+$/,\n rest: Prism2.languages.ruby\n }\n }\n });\n Prism2.languages.insertBefore(\"ruby\", \"number\", {\n \"builtin\": /\\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\\b/,\n \"constant\": /\\b[A-Z]\\w*(?:[?!]|\\b)/\n });\n Prism2.languages.ruby.string = [\n {\n pattern: RegExp(/%[qQiIwWxs]?/.source + \"(?:\" + [\n /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source,\n /\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)/.source,\n /\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[\\s\\S])*\\}/.source,\n /\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\]/.source,\n /<(?:[^<>\\\\]|\\\\[\\s\\S])*>/.source\n ].join(\"|\") + \")\"),\n greedy: true,\n inside: {\n \"interpolation\": interpolation\n }\n },\n {\n pattern: /(\"|')(?:#\\{[^}]+\\}|#(?!\\{)|\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\#\\r\\n])*\\1/,\n greedy: true,\n inside: {\n \"interpolation\": interpolation\n }\n },\n {\n pattern: /<<[-~]?([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n alias: \"heredoc-string\",\n greedy: true,\n inside: {\n \"delimiter\": {\n pattern: /^<<[-~]?[a-z_]\\w*|[a-z_]\\w*$/i,\n alias: \"symbol\",\n inside: {\n \"punctuation\": /^<<[-~]?/\n }\n },\n \"interpolation\": interpolation\n }\n },\n {\n pattern: /<<[-~]?'([a-z_]\\w*)'[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n alias: \"heredoc-string\",\n greedy: true,\n inside: {\n \"delimiter\": {\n pattern: /^<<[-~]?'[a-z_]\\w*'|[a-z_]\\w*$/i,\n alias: \"symbol\",\n inside: {\n \"punctuation\": /^<<[-~]?'|'$/\n }\n }\n }\n }\n ];\n Prism2.languages.rb = Prism2.languages.ruby;\n})(Prism);\n(function(Prism2) {\n Prism2.languages.sass = Prism2.languages.extend(\"css\", {\n \"comment\": {\n pattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t].+)*/m,\n lookbehind: true,\n greedy: true\n }\n });\n Prism2.languages.insertBefore(\"sass\", \"atrule\", {\n \"atrule-line\": {\n pattern: /^(?:[ \\t]*)[@+=].+/m,\n greedy: true,\n inside: {\n \"atrule\": /(?:@[\\w-]+|[+=])/m\n }\n }\n });\n delete Prism2.languages.sass.atrule;\n var variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/;\n var operator = [\n /[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|or|not)\\b/,\n {\n pattern: /(\\s)-(?=\\s)/,\n lookbehind: true\n }\n ];\n Prism2.languages.insertBefore(\"sass\", \"property\", {\n \"variable-line\": {\n pattern: /^[ \\t]*\\$.+/m,\n greedy: true,\n inside: {\n \"punctuation\": /:/,\n \"variable\": variable,\n \"operator\": operator\n }\n },\n \"property-line\": {\n pattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s].*)/m,\n greedy: true,\n inside: {\n \"property\": [\n /[^:\\s]+(?=\\s*:)/,\n {\n pattern: /(:)[^:\\s]+/,\n lookbehind: true\n }\n ],\n \"punctuation\": /:/,\n \"variable\": variable,\n \"operator\": operator,\n \"important\": Prism2.languages.sass.important\n }\n }\n });\n delete Prism2.languages.sass.property;\n delete Prism2.languages.sass.important;\n Prism2.languages.insertBefore(\"sass\", \"punctuation\", {\n \"selector\": {\n pattern: /^([ \\t]*)\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*)*/m,\n lookbehind: true,\n greedy: true\n }\n });\n})(Prism);\nPrism.languages.scala = Prism.languages.extend(\"java\", {\n \"triple-quoted-string\": {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: \"string\"\n },\n \"string\": {\n pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n \"keyword\": /<-|=>|\\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\\b/,\n \"number\": /\\b0x(?:[\\da-f]*\\.)?[\\da-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e\\d+)?[dfl]?/i,\n \"builtin\": /\\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\\b/,\n \"symbol\": /'[^\\d\\s\\\\]\\w*/\n});\ndelete Prism.languages.scala[\"class-name\"];\ndelete Prism.languages.scala[\"function\"];\n(function(Prism2) {\n Prism2.languages.scheme = {\n \"comment\": /;.*|#;\\s*(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\[(?:[^\\[\\]]|\\[[^\\[\\]]*\\])*\\])|#\\|(?:[^#|]|#(?!\\|)|\\|(?!#)|#\\|(?:[^#|]|#(?!\\|)|\\|(?!#))*\\|#)*\\|#/,\n \"string\": {\n pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n greedy: true\n },\n \"symbol\": {\n pattern: /'[^()\\[\\]#'\\s]+/,\n greedy: true\n },\n \"character\": {\n pattern: /#\\\\(?:[ux][a-fA-F\\d]+\\b|[-a-zA-Z]+\\b|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\\S)/,\n greedy: true,\n alias: \"string\"\n },\n \"lambda-parameter\": [\n {\n pattern: /((?:^|[^'`#])[(\\[]lambda\\s+)(?:[^|()\\[\\]'\\s]+|\\|(?:[^\\\\|]|\\\\.)*\\|)/,\n lookbehind: true\n },\n {\n pattern: /((?:^|[^'`#])[(\\[]lambda\\s+[(\\[])[^()\\[\\]']+/,\n lookbehind: true\n }\n ],\n \"keyword\": {\n pattern: /((?:^|[^'`#])[(\\[])(?:begin|case(?:-lambda)?|cond(?:-expand)?|define(?:-library|-macro|-record-type|-syntax|-values)?|defmacro|delay(?:-force)?|do|else|export|except|guard|if|import|include(?:-ci|-library-declarations)?|lambda|let(?:rec)?(?:-syntax|-values|\\*)?|let\\*-values|only|parameterize|prefix|(?:quasi-?)?quote|rename|set!|syntax-(?:case|rules)|unless|unquote(?:-splicing)?|when)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n \"builtin\": {\n pattern: /((?:^|[^'`#])[(\\[])(?:abs|and|append|apply|assoc|ass[qv]|binary-port\\?|boolean=?\\?|bytevector(?:-append|-copy|-copy!|-length|-u8-ref|-u8-set!|\\?)?|caar|cadr|call-with-(?:current-continuation|port|values)|call\\/cc|car|cdar|cddr|cdr|ceiling|char(?:->integer|-ready\\?|\\?|<\\?|<=\\?|=\\?|>\\?|>=\\?)|close-(?:input-port|output-port|port)|complex\\?|cons|current-(?:error|input|output)-port|denominator|dynamic-wind|eof-object\\??|eq\\?|equal\\?|eqv\\?|error|error-object(?:-irritants|-message|\\?)|eval|even\\?|exact(?:-integer-sqrt|-integer\\?|\\?)?|expt|features|file-error\\?|floor(?:-quotient|-remainder|\\/)?|flush-output-port|for-each|gcd|get-output-(?:bytevector|string)|inexact\\??|input-port(?:-open\\?|\\?)|integer(?:->char|\\?)|lcm|length|list(?:->string|->vector|-copy|-ref|-set!|-tail|\\?)?|make-(?:bytevector|list|parameter|string|vector)|map|max|member|memq|memv|min|modulo|negative\\?|newline|not|null\\?|number(?:->string|\\?)|numerator|odd\\?|open-(?:input|output)-(?:bytevector|string)|or|output-port(?:-open\\?|\\?)|pair\\?|peek-char|peek-u8|port\\?|positive\\?|procedure\\?|quotient|raise|raise-continuable|rational\\?|rationalize|read-(?:bytevector|bytevector!|char|error\\?|line|string|u8)|real\\?|remainder|reverse|round|set-c[ad]r!|square|string(?:->list|->number|->symbol|->utf8|->vector|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\\?|<\\?|<=\\?|=\\?|>\\?|>=\\?)?|substring|symbol(?:->string|\\?|=\\?)|syntax-error|textual-port\\?|truncate(?:-quotient|-remainder|\\/)?|u8-ready\\?|utf8->string|values|vector(?:->list|->string|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\\?)?|with-exception-handler|write-(?:bytevector|char|string|u8)|zero\\?)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n \"operator\": {\n pattern: /((?:^|[^'`#])[(\\[])(?:[-+*%/]|[<>]=?|=>?)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n \"number\": {\n pattern: RegExp(SortedBNF({\n \"\": /\\d+(?:\\/\\d+)|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?/.source,\n \"\": /[+-]?|[+-](?:inf|nan)\\.0/.source,\n \"\": /[+-](?:|(?:inf|nan)\\.0)?i/.source,\n \"\": /(?:@|)?|/.source,\n \"\": /(?:#d(?:#[ei])?|#[ei](?:#d)?)?/.source,\n \"\": /[0-9a-f]+(?:\\/[0-9a-f]+)?/.source,\n \"\": /[+-]?|[+-](?:inf|nan)\\.0/.source,\n \"\": /[+-](?:|(?:inf|nan)\\.0)?i/.source,\n \"\": /(?:@|)?|/.source,\n \"\": /#[box](?:#[ei])?|(?:#[ei])?#[box]/.source,\n \"\": /(^|[()\\[\\]\\s])(?:|)(?=[()\\[\\]\\s]|$)/.source\n }), \"i\"),\n lookbehind: true\n },\n \"boolean\": {\n pattern: /(^|[()\\[\\]\\s])#(?:[ft]|false|true)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n \"function\": {\n pattern: /((?:^|[^'`#])[(\\[])(?:[^|()\\[\\]'\\s]+|\\|(?:[^\\\\|]|\\\\.)*\\|)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n \"identifier\": {\n pattern: /(^|[()\\[\\]\\s])\\|(?:[^\\\\|]|\\\\.)*\\|(?=[()\\[\\]\\s]|$)/,\n lookbehind: true,\n greedy: true\n },\n \"punctuation\": /[()\\[\\]']/\n };\n function SortedBNF(grammar) {\n for (var key in grammar) {\n grammar[key] = grammar[key].replace(/<[\\w\\s]+>/g, function(key2) {\n return \"(?:\" + grammar[key2].trim() + \")\";\n });\n }\n return grammar[key];\n }\n})(Prism);\nPrism.languages.scss = Prism.languages.extend(\"css\", {\n \"comment\": {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n \"atrule\": {\n pattern: /@[\\w-](?:\\([^()]+\\)|[^()\\s]|\\s+(?!\\s))*?(?=\\s+[{;])/,\n inside: {\n \"rule\": /@[\\w-]+/\n }\n },\n \"url\": /(?:[-a-z]+-)?url(?=\\()/i,\n \"selector\": {\n pattern: /(?=\\S)[^@;{}()]?(?:[^@;{}()\\s]|\\s+(?!\\s)|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}][^:{}]*[:{][^}]))/m,\n inside: {\n \"parent\": {\n pattern: /&/,\n alias: \"important\"\n },\n \"placeholder\": /%[-\\w]+/,\n \"variable\": /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n },\n \"property\": {\n pattern: /(?:[-\\w]|\\$[-\\w]|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,\n inside: {\n \"variable\": /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n }\n});\nPrism.languages.insertBefore(\"scss\", \"atrule\", {\n \"keyword\": [\n /@(?:if|else(?: if)?|forward|for|each|while|import|use|extend|debug|warn|mixin|include|function|return|content)\\b/i,\n {\n pattern: /( )(?:from|through)(?= )/,\n lookbehind: true\n }\n ]\n});\nPrism.languages.insertBefore(\"scss\", \"important\", {\n \"variable\": /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n});\nPrism.languages.insertBefore(\"scss\", \"function\", {\n \"module-modifier\": {\n pattern: /\\b(?:as|with|show|hide)\\b/i,\n alias: \"keyword\"\n },\n \"placeholder\": {\n pattern: /%[-\\w]+/,\n alias: \"selector\"\n },\n \"statement\": {\n pattern: /\\B!(?:default|optional)\\b/i,\n alias: \"keyword\"\n },\n \"boolean\": /\\b(?:true|false)\\b/,\n \"null\": {\n pattern: /\\bnull\\b/,\n alias: \"keyword\"\n },\n \"operator\": {\n pattern: /(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|or|not)(?=\\s)/,\n lookbehind: true\n }\n});\nPrism.languages.scss[\"atrule\"].inside.rest = Prism.languages.scss;\nPrism.languages.sql = {\n \"comment\": {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n lookbehind: true\n },\n \"variable\": [\n {\n pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n greedy: true\n },\n /@[\\w.$]+/\n ],\n \"string\": {\n pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n greedy: true,\n lookbehind: true\n },\n \"function\": /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i,\n \"keyword\": /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:S|ING)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\\b/i,\n \"boolean\": /\\b(?:TRUE|FALSE|NULL)\\b/i,\n \"number\": /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n \"operator\": /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|DIV|IN|ILIKE|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n \"punctuation\": /[;[\\]()`,.]/\n};\nPrism.languages.swift = {\n \"comment\": {\n pattern: /(^|[^\\\\:])(?:\\/\\/.*|\\/\\*(?:[^/*]|\\/(?!\\*)|\\*(?!\\/)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\*\\/)/,\n lookbehind: true,\n greedy: true\n },\n \"string-literal\": [\n {\n pattern: RegExp(/(^|[^\"#])/.source + \"(?:\" + /\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^(])|[^\\\\\\r\\n\"])*\"/.source + \"|\" + /\"\"\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\\"]|\"(?!\"\"))*\"\"\"/.source + \")\" + /(?![\"#])/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n \"interpolation\": {\n pattern: /(\\\\\\()(?:[^()]|\\([^()]*\\))*(?=\\))/,\n lookbehind: true,\n inside: null\n },\n \"interpolation-punctuation\": {\n pattern: /^\\)|\\\\\\($/,\n alias: \"punctuation\"\n },\n \"punctuation\": /\\\\(?=[\\r\\n])/,\n \"string\": /[\\s\\S]+/\n }\n },\n {\n pattern: RegExp(/(^|[^\"#])(#+)/.source + \"(?:\" + /\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^#])|[^\\\\\\r\\n])*?\"/.source + \"|\" + /\"\"\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?\"\"\"/.source + \")\\\\2\"),\n lookbehind: true,\n greedy: true,\n inside: {\n \"interpolation\": {\n pattern: /(\\\\#+\\()(?:[^()]|\\([^()]*\\))*(?=\\))/,\n lookbehind: true,\n inside: null\n },\n \"interpolation-punctuation\": {\n pattern: /^\\)|\\\\#+\\($/,\n alias: \"punctuation\"\n },\n \"string\": /[\\s\\S]+/\n }\n }\n ],\n \"directive\": {\n pattern: RegExp(/#/.source + \"(?:\" + (/(?:elseif|if)\\b/.source + \"(?:[ \t]*\" + /(?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \\t]*(?:&&|\\|\\|))?/.source + \")+\") + \"|\" + /(?:else|endif)\\b/.source + \")\"),\n alias: \"property\",\n inside: {\n \"directive-name\": /^#\\w+/,\n \"boolean\": /\\b(?:true|false)\\b/,\n \"number\": /\\b\\d+(?:\\.\\d+)*\\b/,\n \"operator\": /!|&&|\\|\\||[<>]=?/,\n \"punctuation\": /[(),]/\n }\n },\n \"literal\": {\n pattern: /#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\\b/,\n alias: \"constant\"\n },\n \"other-directive\": {\n pattern: /#\\w+\\b/,\n alias: \"property\"\n },\n \"attribute\": {\n pattern: /@\\w+/,\n alias: \"atrule\"\n },\n \"function-definition\": {\n pattern: /(\\bfunc\\s+)\\w+/,\n lookbehind: true,\n alias: \"function\"\n },\n \"label\": {\n pattern: /\\b(break|continue)\\s+\\w+|\\b[a-zA-Z_]\\w*(?=\\s*:\\s*(?:for|repeat|while)\\b)/,\n lookbehind: true,\n alias: \"important\"\n },\n \"keyword\": /\\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\\b/,\n \"boolean\": /\\b(?:true|false)\\b/,\n \"nil\": {\n pattern: /\\bnil\\b/,\n alias: \"constant\"\n },\n \"short-argument\": /\\$\\d+\\b/,\n \"omit\": {\n pattern: /\\b_\\b/,\n alias: \"keyword\"\n },\n \"number\": /\\b(?:[\\d_]+(?:\\.[\\de_]+)?|0x[a-f0-9_]+(?:\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i,\n \"class-name\": /\\b[A-Z](?:[A-Z_\\d]*[a-z]\\w*)?\\b/,\n \"function\": /\\b[a-z_]\\w*(?=\\s*\\()/i,\n \"constant\": /\\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/,\n \"operator\": /[-+*/%=!<>&|^~?]+|\\.[.\\-+*/%=!<>&|^~?]+/,\n \"punctuation\": /[{}[\\]();,.:\\\\]/\n};\nPrism.languages.swift[\"string-literal\"].forEach(function(rule) {\n rule.inside[\"interpolation\"].inside = Prism.languages.swift;\n});\n(function(Prism2) {\n var typescript = Prism2.util.clone(Prism2.languages.typescript);\n Prism2.languages.tsx = Prism2.languages.extend(\"jsx\", typescript);\n var tag = Prism2.languages.tsx.tag;\n tag.pattern = RegExp(/(^|[^\\w$]|(?=<\\/))/.source + \"(?:\" + tag.pattern.source + \")\", tag.pattern.flags);\n tag.lookbehind = true;\n})(Prism);\n(function(Prism2) {\n Prism2.languages.typescript = Prism2.languages.extend(\"javascript\", {\n \"class-name\": {\n pattern: /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,\n lookbehind: true,\n greedy: true,\n inside: null\n },\n \"builtin\": /\\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\\b/\n });\n Prism2.languages.typescript.keyword.push(/\\b(?:abstract|as|declare|implements|is|keyof|readonly|require)\\b/, /\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/, /\\btype\\b(?=\\s*(?:[\\{*]|$))/);\n delete Prism2.languages.typescript[\"parameter\"];\n var typeInside = Prism2.languages.extend(\"typescript\", {});\n delete typeInside[\"class-name\"];\n Prism2.languages.typescript[\"class-name\"].inside = typeInside;\n Prism2.languages.insertBefore(\"typescript\", \"function\", {\n \"decorator\": {\n pattern: /@[$\\w\\xA0-\\uFFFF]+/,\n inside: {\n \"at\": {\n pattern: /^@/,\n alias: \"operator\"\n },\n \"function\": /^[\\s\\S]+/\n }\n },\n \"generic-function\": {\n pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,\n greedy: true,\n inside: {\n \"function\": /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,\n \"generic\": {\n pattern: /<[\\s\\S]+/,\n alias: \"class-name\",\n inside: typeInside\n }\n }\n }\n });\n Prism2.languages.ts = Prism2.languages.typescript;\n})(Prism);\nPrism.languages.wasm = {\n \"comment\": [\n /\\(;[\\s\\S]*?;\\)/,\n {\n pattern: /;;.*/,\n greedy: true\n }\n ],\n \"string\": {\n pattern: /\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n greedy: true\n },\n \"keyword\": [\n {\n pattern: /\\b(?:align|offset)=/,\n inside: {\n \"operator\": /=/\n }\n },\n {\n pattern: /\\b(?:(?:f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))?|memory\\.(?:grow|size))\\b/,\n inside: {\n \"punctuation\": /\\./\n }\n },\n /\\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\\b/\n ],\n \"variable\": /\\$[\\w!#$%&'*+\\-./:<=>?@\\\\^`|~]+/i,\n \"number\": /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/,\n \"punctuation\": /[()]/\n};\n(function(Prism2) {\n var anchorOrAlias = /[*&][^\\s[\\]{},]+/;\n var tag = /!(?:<[\\w\\-%#;/?:@&=+$,.!~*'()[\\]]+>|(?:[a-zA-Z\\d-]*!)?[\\w\\-%#;/?:@&=+$.~*'()]+)?/;\n var properties = \"(?:\" + tag.source + \"(?:[ \t]+\" + anchorOrAlias.source + \")?|\" + anchorOrAlias.source + \"(?:[ \t]+\" + tag.source + \")?)\";\n var plainKey = /(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \\t]*(?:(?![#:])|:))*/.source.replace(//g, function() {\n return /[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]/.source;\n });\n var string2 = /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'/.source;\n function createValuePattern(value, flags) {\n flags = (flags || \"\").replace(/m/g, \"\") + \"m\";\n var pattern = /([:\\-,[{]\\s*(?:\\s<>[ \\t]+)?)(?:<>)(?=[ \\t]*(?:$|,|\\]|\\}|(?:[\\r\\n]\\s*)?#))/.source.replace(/<>/g, function() {\n return properties;\n }).replace(/<>/g, function() {\n return value;\n });\n return RegExp(pattern, flags);\n }\n Prism2.languages.yaml = {\n \"scalar\": {\n pattern: RegExp(/([\\-:]\\s*(?:\\s<>[ \\t]+)?[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)\\S[^\\r\\n]*(?:\\2[^\\r\\n]+)*)/.source.replace(/<>/g, function() {\n return properties;\n })),\n lookbehind: true,\n alias: \"string\"\n },\n \"comment\": /#.*/,\n \"key\": {\n pattern: RegExp(/((?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:<>[ \\t]+)?)<>(?=\\s*:\\s)/.source.replace(/<>/g, function() {\n return properties;\n }).replace(/<>/g, function() {\n return \"(?:\" + plainKey + \"|\" + string2 + \")\";\n })),\n lookbehind: true,\n greedy: true,\n alias: \"atrule\"\n },\n \"directive\": {\n pattern: /(^[ \\t]*)%.+/m,\n lookbehind: true,\n alias: \"important\"\n },\n \"datetime\": {\n pattern: createValuePattern(/\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?/.source),\n lookbehind: true,\n alias: \"number\"\n },\n \"boolean\": {\n pattern: createValuePattern(/true|false/.source, \"i\"),\n lookbehind: true,\n alias: \"important\"\n },\n \"null\": {\n pattern: createValuePattern(/null|~/.source, \"i\"),\n lookbehind: true,\n alias: \"important\"\n },\n \"string\": {\n pattern: createValuePattern(string2),\n lookbehind: true,\n greedy: true\n },\n \"number\": {\n pattern: createValuePattern(/[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)/.source, \"i\"),\n lookbehind: true\n },\n \"tag\": tag,\n \"important\": anchorOrAlias,\n \"punctuation\": /---|[:[\\]{}\\-,|>?]|\\.\\.\\./\n };\n Prism2.languages.yml = Prism2.languages.yaml;\n})(Prism);\nvar decorateCodeLine = (editor) => {\n const code_block = getPlugin(editor, ELEMENT_CODE_BLOCK);\n const code_line = getPlugin(editor, ELEMENT_CODE_LINE);\n return ([node, path]) => {\n var _codeBlock$0$lang;\n const ranges = [];\n if (!code_block.options.syntax || node.type !== code_line.type) {\n return ranges;\n }\n const codeBlock = getParentNode(editor, path);\n if (!codeBlock) {\n return ranges;\n }\n let langName = (_codeBlock$0$lang = codeBlock[0].lang) !== null && _codeBlock$0$lang !== void 0 ? _codeBlock$0$lang : \"\";\n if (langName === \"plain\") {\n langName = \"\";\n }\n const lang = import_prismjs.languages[langName];\n if (!lang) {\n return ranges;\n }\n const text4 = getNodeString(node);\n const tokens = (0, import_prismjs.tokenize)(text4, lang);\n let offset3 = 0;\n for (const element4 of tokens) {\n if (element4 instanceof import_prismjs.Token) {\n ranges.push({\n anchor: {\n path,\n offset: offset3\n },\n focus: {\n path,\n offset: offset3 + element4.length\n },\n tokenType: element4.type,\n [ELEMENT_CODE_SYNTAX]: true\n });\n }\n offset3 += element4.length;\n }\n return ranges;\n };\n};\nvar deserializeHtmlCodeBlock = {\n rules: [{\n validNodeName: \"PRE\"\n }, {\n validNodeName: \"P\",\n validStyle: {\n fontFamily: \"Consolas\"\n }\n }],\n getNode: (el) => {\n var _find, _el$textContent, _lines;\n const languageSelectorText = ((_find = [...el.childNodes].find((node) => node.nodeName === \"SELECT\")) === null || _find === void 0 ? void 0 : _find.textContent) || \"\";\n const textContent = ((_el$textContent = el.textContent) === null || _el$textContent === void 0 ? void 0 : _el$textContent.replace(languageSelectorText, \"\")) || \"\";\n let lines = textContent.split(\"\\n\");\n if (!((_lines = lines) !== null && _lines !== void 0 && _lines.length)) {\n lines = [textContent];\n }\n const codeLines = lines.map((line) => ({\n type: ELEMENT_CODE_LINE,\n children: [{\n text: line\n }]\n }));\n return {\n type: ELEMENT_CODE_BLOCK,\n children: codeLines\n };\n }\n};\nvar getCodeLineType = (editor) => getPluginType(editor, ELEMENT_CODE_LINE);\nvar getCodeLineEntry = (editor, {\n at = editor.selection\n} = {}) => {\n if (at && someNode(editor, {\n at,\n match: {\n type: getCodeLineType(editor)\n }\n })) {\n const selectionParent = getParentNode(editor, at);\n if (!selectionParent)\n return;\n const [, parentPath] = selectionParent;\n const codeLine = getAboveNode(editor, {\n at,\n match: {\n type: getCodeLineType(editor)\n }\n }) || getParentNode(editor, parentPath);\n if (!codeLine)\n return;\n const [codeLineNode, codeLinePath] = codeLine;\n if (isElement2(codeLineNode) && codeLineNode.type !== getCodeLineType(editor))\n return;\n const codeBlock = getParentNode(editor, codeLinePath);\n if (!codeBlock)\n return;\n return {\n codeBlock,\n codeLine\n };\n }\n};\nvar indentCodeLine = (editor, {\n codeLine\n}) => {\n const [, codeLinePath] = codeLine;\n const codeLineStart = getStartPoint(editor, codeLinePath);\n if (!isExpanded(editor.selection)) {\n var _editor$selection;\n const cursor = (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.anchor;\n const range = getRange(editor, codeLineStart, cursor);\n const text4 = getEditorString(editor, range);\n if (/\\S/.test(text4)) {\n insertText(editor, \" \", {\n at: editor.selection\n });\n return;\n }\n }\n insertText(editor, \" \", {\n at: codeLineStart\n });\n};\nvar deleteStartSpace = (editor, {\n codeLine\n}) => {\n const [, codeLinePath] = codeLine;\n const codeLineStart = getStartPoint(editor, codeLinePath);\n const codeLineEnd = codeLineStart && getPointAfter(editor, codeLineStart);\n const spaceRange = codeLineEnd && getRange(editor, codeLineStart, codeLineEnd);\n const spaceText = getEditorString(editor, spaceRange);\n if (/\\s/.test(spaceText)) {\n deleteText(editor, {\n at: spaceRange\n });\n return true;\n }\n return false;\n};\nvar outdentCodeLine = (editor, {\n codeBlock,\n codeLine\n}) => {\n const deleted = deleteStartSpace(editor, {\n codeBlock,\n codeLine\n });\n deleted && deleteStartSpace(editor, {\n codeBlock,\n codeLine\n });\n};\nvar onKeyDownCodeBlock = (editor) => (e4) => {\n if (e4.key === \"Tab\") {\n const shiftTab = e4.shiftKey;\n const _codeLines = getNodeEntries(editor, {\n match: {\n type: getCodeLineType(editor)\n }\n });\n const codeLines = Array.from(_codeLines);\n if (codeLines.length) {\n e4.preventDefault();\n const [, firstLinePath] = codeLines[0];\n const codeBlock = getParentNode(editor, firstLinePath);\n if (!codeBlock)\n return;\n withoutNormalizing(editor, () => {\n for (const codeLine of codeLines) {\n if (shiftTab) {\n outdentCodeLine(editor, {\n codeBlock,\n codeLine\n });\n }\n if (!shiftTab) {\n indentCodeLine(editor, {\n codeBlock,\n codeLine\n });\n }\n }\n });\n }\n }\n if (e4.key === \"a\" && (e4.metaKey || e4.ctrlKey)) {\n const res = getCodeLineEntry(editor, {});\n if (!res)\n return;\n const {\n codeBlock\n } = res;\n const [, codeBlockPath] = codeBlock;\n select(editor, codeBlockPath);\n e4.preventDefault();\n e4.stopPropagation();\n }\n};\nvar insertFragmentCodeBlock = (editor) => {\n const {\n insertFragment: _insertFragment\n } = editor;\n const codeBlockType = getPluginType(editor, ELEMENT_CODE_BLOCK);\n const codeLineType = getPluginType(editor, ELEMENT_CODE_LINE);\n function convertNodeToCodeLine(node) {\n return {\n type: codeLineType,\n children: [{\n text: getNodeString(node)\n }]\n };\n }\n function extractCodeLinesFromCodeBlock(node) {\n return node.children;\n }\n return (fragment) => {\n const inCodeLine = findNode(editor, {\n match: {\n type: codeLineType\n }\n });\n if (!inCodeLine) {\n return _insertFragment(fragment);\n }\n return insertFragment(editor, fragment.flatMap((node) => {\n const element4 = node;\n return element4.type === codeBlockType ? extractCodeLinesFromCodeBlock(element4) : convertNodeToCodeLine(element4);\n }));\n };\n};\nvar getIndentDepth = (editor, {\n codeLine\n}) => {\n const [, codeLinePath] = codeLine;\n const text4 = getEditorString(editor, codeLinePath);\n return text4.search(/\\S|$/);\n};\nvar insertCodeBlock = (editor, insertNodesOptions = {}) => {\n if (!editor.selection || isExpanded(editor.selection))\n return;\n const matchCodeElements = (node) => node.type === getPluginType(editor, ELEMENT_CODE_BLOCK) || node.type === getCodeLineType(editor);\n if (someNode(editor, {\n match: matchCodeElements\n })) {\n return;\n }\n if (!isSelectionAtBlockStart(editor)) {\n editor.insertBreak();\n }\n setElements(editor, {\n type: getCodeLineType(editor),\n children: [{\n text: \"\"\n }]\n }, insertNodesOptions);\n wrapNodes(editor, {\n type: getPluginType(editor, ELEMENT_CODE_BLOCK),\n children: []\n }, insertNodesOptions);\n};\nvar insertCodeLine = (editor, indentDepth = 0) => {\n if (editor.selection) {\n const indent2 = \" \".repeat(indentDepth);\n insertElements(editor, {\n type: getCodeLineType(editor),\n children: [{\n text: indent2\n }]\n });\n }\n};\nvar insertEmptyCodeBlock = (editor, {\n defaultType = getPluginType(editor, ELEMENT_DEFAULT),\n insertNodesOptions,\n level = 0\n}) => {\n if (!editor.selection)\n return;\n if (isExpanded(editor.selection) || !isBlockAboveEmpty(editor)) {\n const selectionPath = getPath(editor, editor.selection);\n const insertPath = Path.next(selectionPath.slice(0, level + 1));\n insertElements(editor, {\n type: defaultType,\n children: [{\n text: \"\"\n }]\n }, {\n at: insertPath,\n select: true\n });\n }\n insertCodeBlock(editor, insertNodesOptions);\n};\nvar withCodeBlock = (editor) => {\n const {\n insertBreak\n } = editor;\n const insertBreakCodeBlock = () => {\n if (!editor.selection)\n return;\n const res = getCodeLineEntry(editor, {});\n if (!res)\n return;\n const {\n codeBlock,\n codeLine\n } = res;\n const indentDepth = getIndentDepth(editor, {\n codeBlock,\n codeLine\n });\n insertCodeLine(editor, indentDepth);\n return true;\n };\n editor.insertBreak = () => {\n if (insertBreakCodeBlock())\n return;\n insertBreak();\n };\n editor.insertFragment = insertFragmentCodeBlock(editor);\n return editor;\n};\nvar createCodeBlockPlugin = createPluginFactory({\n key: ELEMENT_CODE_BLOCK,\n isElement: true,\n deserializeHtml: deserializeHtmlCodeBlock,\n handlers: {\n onKeyDown: onKeyDownCodeBlock\n },\n withOverrides: withCodeBlock,\n options: {\n hotkey: [\"mod+opt+8\", \"mod+shift+8\"],\n syntax: true,\n syntaxPopularFirst: false\n },\n then: (editor) => ({\n inject: {\n pluginsByKey: {\n [KEY_DESERIALIZE_HTML]: {\n editor: {\n insertData: {\n query: () => {\n const code_line = getPlugin(editor, ELEMENT_CODE_LINE);\n return !someNode(editor, {\n match: {\n type: code_line.type\n }\n });\n }\n }\n }\n }\n }\n }\n }),\n plugins: [{\n key: ELEMENT_CODE_LINE,\n isElement: true\n }, {\n key: ELEMENT_CODE_SYNTAX,\n isLeaf: true,\n decorate: decorateCodeLine\n }]\n});\n\n// node_modules/@udecode/plate-heading/dist/index.es.js\nvar ELEMENT_H1 = \"h1\";\nvar ELEMENT_H2 = \"h2\";\nvar ELEMENT_H3 = \"h3\";\nvar ELEMENT_H4 = \"h4\";\nvar ELEMENT_H5 = \"h5\";\nvar ELEMENT_H6 = \"h6\";\nvar KEYS_HEADING = [ELEMENT_H1, ELEMENT_H2, ELEMENT_H3, ELEMENT_H4, ELEMENT_H5, ELEMENT_H6];\nvar createHeadingPlugin = createPluginFactory({\n key: \"heading\",\n options: {\n levels: 6\n },\n then: (editor, {\n options: {\n levels\n } = {}\n }) => {\n const plugins = [];\n for (let level = 1; level <= levels; level++) {\n const key = KEYS_HEADING[level - 1];\n const plugin2 = {\n key,\n isElement: true,\n deserializeHtml: {\n rules: [{\n validNodeName: `H${level}`\n }]\n },\n handlers: {\n onKeyDown: onKeyDownToggleElement\n },\n options: {}\n };\n if (level < 4) {\n plugin2.options.hotkey = [`mod+opt+${level}`, `mod+shift+${level}`];\n }\n plugins.push(plugin2);\n }\n return {\n plugins\n };\n }\n});\n\n// node_modules/@udecode/plate-paragraph/dist/index.es.js\nvar ELEMENT_PARAGRAPH = \"p\";\nvar createParagraphPlugin = createPluginFactory({\n key: ELEMENT_PARAGRAPH,\n isElement: true,\n handlers: {\n onKeyDown: onKeyDownToggleElement\n },\n options: {\n hotkey: [\"mod+opt+0\", \"mod+shift+0\"]\n },\n deserializeHtml: {\n rules: [{\n validNodeName: \"P\"\n }],\n query: (el) => el.style.fontFamily !== \"Consolas\"\n }\n});\n\n// node_modules/@udecode/plate-basic-elements/dist/index.es.js\nvar createBasicElementsPlugin = createPluginFactory({\n key: \"basicElements\",\n plugins: [createBlockquotePlugin(), createCodeBlockPlugin(), createHeadingPlugin(), createParagraphPlugin()]\n});\n\n// node_modules/@udecode/plate-basic-marks/dist/index.es.js\nvar MARK_BOLD = \"bold\";\nvar createBoldPlugin = createPluginFactory({\n key: MARK_BOLD,\n isLeaf: true,\n deserializeHtml: {\n rules: [{\n validNodeName: [\"STRONG\", \"B\"]\n }, {\n validStyle: {\n fontWeight: [\"600\", \"700\", \"bold\"]\n }\n }],\n query: (el) => !someHtmlElement(el, (node) => node.style.fontWeight === \"normal\")\n },\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+b\"\n }\n});\nvar MARK_CODE = \"code\";\nvar createCodePlugin = createPluginFactory({\n key: MARK_CODE,\n isLeaf: true,\n deserializeHtml: {\n rules: [{\n validNodeName: [\"CODE\"]\n }, {\n validStyle: {\n wordWrap: \"break-word\"\n }\n }, {\n validStyle: {\n fontFamily: \"Consolas\"\n }\n }],\n query(el) {\n const blockAbove = findHtmlParentElement(el, \"P\");\n if ((blockAbove === null || blockAbove === void 0 ? void 0 : blockAbove.style.fontFamily) === \"Consolas\")\n return false;\n return !findHtmlParentElement(el, \"PRE\");\n }\n },\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+e\"\n }\n});\nvar MARK_ITALIC = \"italic\";\nvar createItalicPlugin = createPluginFactory({\n key: MARK_ITALIC,\n isLeaf: true,\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+i\"\n },\n deserializeHtml: {\n rules: [{\n validNodeName: [\"EM\", \"I\"]\n }, {\n validStyle: {\n fontStyle: \"italic\"\n }\n }],\n query: (el) => !someHtmlElement(el, (node) => node.style.fontStyle === \"normal\")\n }\n});\nvar MARK_STRIKETHROUGH = \"strikethrough\";\nvar createStrikethroughPlugin = createPluginFactory({\n key: MARK_STRIKETHROUGH,\n isLeaf: true,\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+shift+x\"\n },\n deserializeHtml: {\n rules: [{\n validNodeName: [\"S\", \"DEL\", \"STRIKE\"]\n }, {\n validStyle: {\n textDecoration: \"line-through\"\n }\n }],\n query: (el) => !someHtmlElement(el, (node) => node.style.textDecoration === \"none\")\n }\n});\nvar MARK_SUBSCRIPT$1 = \"subscript\";\nvar MARK_SUPERSCRIPT$1 = \"superscript\";\nvar createSubscriptPlugin = createPluginFactory({\n key: MARK_SUBSCRIPT$1,\n isLeaf: true,\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+,\",\n clear: MARK_SUPERSCRIPT$1\n },\n deserializeHtml: {\n rules: [{\n validNodeName: [\"SUB\"]\n }, {\n validStyle: {\n verticalAlign: \"sub\"\n }\n }]\n }\n});\nvar MARK_SUPERSCRIPT = \"superscript\";\nvar MARK_SUBSCRIPT = \"subscript\";\nvar createSuperscriptPlugin = createPluginFactory({\n key: MARK_SUPERSCRIPT,\n isLeaf: true,\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+.\",\n clear: MARK_SUBSCRIPT\n },\n deserializeHtml: {\n rules: [{\n validNodeName: [\"SUP\"]\n }, {\n validStyle: {\n verticalAlign: \"super\"\n }\n }]\n }\n});\nvar MARK_UNDERLINE = \"underline\";\nvar createUnderlinePlugin = createPluginFactory({\n key: MARK_UNDERLINE,\n isLeaf: true,\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n options: {\n hotkey: \"mod+u\"\n },\n deserializeHtml: {\n rules: [{\n validNodeName: [\"U\"]\n }, {\n validStyle: {\n textDecoration: [\"underline\"]\n }\n }],\n query: (el) => !someHtmlElement(el, (node) => node.style.textDecoration === \"none\")\n }\n});\nvar createBasicMarksPlugin = createPluginFactory({\n key: \"basicMarks\",\n plugins: [createBoldPlugin(), createCodePlugin(), createItalicPlugin(), createStrikethroughPlugin(), createSubscriptPlugin(), createSuperscriptPlugin(), createUnderlinePlugin()]\n});\n\n// node_modules/@udecode/plate-break/dist/index.es.js\nfunction unwrapExports2(x3) {\n return x3 && x3.__esModule && Object.prototype.hasOwnProperty.call(x3, \"default\") ? x3[\"default\"] : x3;\n}\nfunction createCommonjsModule3(fn6, module2) {\n return module2 = { exports: {} }, fn6(module2, module2.exports), module2.exports;\n}\nvar lib2 = createCommonjsModule3(function(module2, exports2) {\n Object.defineProperty(exports2, \"__esModule\", {\n value: true\n });\n var IS_MAC = () => typeof window != \"undefined\" && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n var MODIFIERS = {\n alt: \"altKey\",\n control: \"ctrlKey\",\n meta: \"metaKey\",\n shift: \"shiftKey\"\n };\n var ALIASES = () => ({\n add: \"+\",\n break: \"pause\",\n cmd: \"meta\",\n command: \"meta\",\n ctl: \"control\",\n ctrl: \"control\",\n del: \"delete\",\n down: \"arrowdown\",\n esc: \"escape\",\n ins: \"insert\",\n left: \"arrowleft\",\n mod: IS_MAC() ? \"meta\" : \"control\",\n opt: \"alt\",\n option: \"alt\",\n return: \"enter\",\n right: \"arrowright\",\n space: \" \",\n spacebar: \" \",\n up: \"arrowup\",\n win: \"meta\",\n windows: \"meta\"\n });\n var CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n \" \": 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n \";\": 186,\n \"=\": 187,\n \",\": 188,\n \"-\": 189,\n \".\": 190,\n \"/\": 191,\n \"`\": 192,\n \"[\": 219,\n \"\\\\\": 220,\n \"]\": 221,\n \"'\": 222\n };\n for (var f4 = 1; f4 < 20; f4++) {\n CODES[\"f\" + f4] = 111 + f4;\n }\n function isHotkey6(hotkey, options, event) {\n if (options && !(\"byKey\" in options)) {\n event = options;\n options = null;\n }\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n var array = hotkey.map(function(string2) {\n return parseHotkey(string2, options);\n });\n var check = function check2(e4) {\n return array.some(function(object) {\n return compareHotkey(object, e4);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n }\n function isCodeHotkey(hotkey, event) {\n return isHotkey6(hotkey, event);\n }\n function isKeyHotkey2(hotkey, event) {\n return isHotkey6(hotkey, { byKey: true }, event);\n }\n function parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n hotkey = hotkey.replace(\"++\", \"+add\");\n var values2 = hotkey.split(\"+\");\n var length = values2.length;\n for (var k3 in MODIFIERS) {\n ret[MODIFIERS[k3]] = false;\n }\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = void 0;\n try {\n for (var _iterator = values2[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n var optional = value.endsWith(\"?\") && value.length > 1;\n if (optional) {\n value = value.slice(0, -1);\n }\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return ret;\n }\n function compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n if (expected == null) {\n continue;\n }\n if (key === \"key\" && event.key != null) {\n actual = event.key.toLowerCase();\n } else if (key === \"which\") {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n if (actual == null && expected === false) {\n continue;\n }\n if (actual !== expected) {\n return false;\n }\n }\n return true;\n }\n function toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n }\n function toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES()[name] || name;\n return name;\n }\n exports2.default = isHotkey6;\n exports2.isHotkey = isHotkey6;\n exports2.isCodeHotkey = isCodeHotkey;\n exports2.isKeyHotkey = isKeyHotkey2;\n exports2.parseHotkey = parseHotkey;\n exports2.compareHotkey = compareHotkey;\n exports2.toKeyCode = toKeyCode;\n exports2.toKeyName = toKeyName;\n});\nvar isHotkey2 = unwrapExports2(lib2);\nlib2.isHotkey;\nlib2.isCodeHotkey;\nlib2.isKeyHotkey;\nlib2.parseHotkey;\nlib2.compareHotkey;\nlib2.toKeyCode;\nlib2.toKeyName;\nvar exitBreakAtEdges = (editor, {\n start: start3,\n end: end3\n}) => {\n let queryEdge = false;\n let isEdge = false;\n let isStart = false;\n if (start3 || end3) {\n queryEdge = true;\n if (start3 && isSelectionAtBlockStart(editor)) {\n isEdge = true;\n isStart = true;\n }\n if (end3 && isSelectionAtBlockEnd(editor)) {\n isEdge = true;\n }\n if (isEdge && isExpanded(editor.selection)) {\n editor.deleteFragment();\n }\n }\n return {\n queryEdge,\n isEdge,\n isStart\n };\n};\nvar exitBreak = (editor, {\n level = 0,\n defaultType = getPluginType(editor, ELEMENT_DEFAULT),\n query = {},\n before\n}) => {\n if (!editor.selection)\n return;\n const {\n queryEdge,\n isEdge,\n isStart\n } = exitBreakAtEdges(editor, query);\n if (isStart)\n before = true;\n if (queryEdge && !isEdge)\n return;\n const selectionPath = getPath(editor, editor.selection);\n let insertPath;\n if (before) {\n insertPath = selectionPath.slice(0, level + 1);\n } else {\n insertPath = Path.next(selectionPath.slice(0, level + 1));\n }\n insertElements(editor, {\n type: defaultType,\n children: [{\n text: \"\"\n }]\n }, {\n at: insertPath,\n select: !isStart\n });\n return true;\n};\nvar onKeyDownExitBreak = (editor, {\n options: {\n rules = []\n }\n}) => (event) => {\n const entry = getBlockAbove(editor);\n if (!entry)\n return;\n rules.forEach((_a) => {\n var _b = _a, {\n hotkey\n } = _b, rule = __objRest(_b, [\n \"hotkey\"\n ]);\n if (isHotkey2(hotkey, event) && queryNode(entry, rule.query)) {\n if (exitBreak(editor, rule)) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n });\n};\nvar KEY_EXIT_BREAK = \"exitBreak\";\nvar createExitBreakPlugin = createPluginFactory({\n key: KEY_EXIT_BREAK,\n handlers: {\n onKeyDown: onKeyDownExitBreak\n },\n options: {\n rules: [{\n hotkey: \"mod+enter\"\n }, {\n hotkey: \"mod+shift+enter\",\n before: true\n }]\n }\n});\nvar onKeyDownSingleLine = () => (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n }\n};\nvar withSingleLine = (editor) => {\n const {\n normalizeNode\n } = editor;\n editor.insertBreak = () => null;\n editor.normalizeNode = (entry) => {\n if (editor.children.length > 1) {\n removeNodes(editor, {\n at: [],\n mode: \"highest\",\n match: (node, path) => path[0] > 0\n });\n }\n normalizeNode(entry);\n };\n return editor;\n};\nvar KEY_SINGLE_LINE = \"singleLine\";\nvar createSingleLinePlugin = createPluginFactory({\n key: KEY_SINGLE_LINE,\n handlers: {\n onKeyDown: onKeyDownSingleLine\n },\n withOverrides: withSingleLine\n});\nvar onKeyDownSoftBreak = (editor, {\n options: {\n rules = []\n }\n}) => (event) => {\n const entry = getBlockAbove(editor);\n if (!entry)\n return;\n rules.forEach(({\n hotkey,\n query\n }) => {\n if (isHotkey2(hotkey, event) && queryNode(entry, query)) {\n event.preventDefault();\n event.stopPropagation();\n editor.insertText(\"\\n\");\n }\n });\n};\nvar KEY_SOFT_BREAK = \"softBreak\";\nvar createSoftBreakPlugin = createPluginFactory({\n key: KEY_SOFT_BREAK,\n handlers: {\n onKeyDown: onKeyDownSoftBreak\n },\n options: {\n rules: [{\n hotkey: \"shift+enter\"\n }]\n }\n});\n\n// node_modules/@udecode/plate-combobox/dist/index.es.js\nvar import_react8 = require(\"react\");\n\n// node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\nfunction _objectWithoutPropertiesLoose3(source, excluded) {\n if (source == null)\n return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i3;\n for (i3 = 0; i3 < sourceKeys.length; i3++) {\n key = sourceKeys[i3];\n if (excluded.indexOf(key) >= 0)\n continue;\n target[key] = source[key];\n }\n return target;\n}\n\n// node_modules/@babel/runtime/helpers/esm/extends.js\nfunction _extends2() {\n _extends2 = Object.assign || function(target) {\n for (var i3 = 1; i3 < arguments.length; i3++) {\n var source = arguments[i3];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends2.apply(this, arguments);\n}\n\n// node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\nfunction _assertThisInitialized(self2) {\n if (self2 === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self2;\n}\n\n// node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js\nfunction _setPrototypeOf(o3, p4) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o4, p5) {\n o4.__proto__ = p5;\n return o4;\n };\n return _setPrototypeOf(o3, p4);\n}\n\n// node_modules/@babel/runtime/helpers/esm/inheritsLoose.js\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n}\n\n// node_modules/downshift/dist/downshift.esm.js\nvar import_prop_types = __toESM(require_prop_types());\nvar import_react7 = require(\"react\");\nvar import_react_is = __toESM(require_react_is2());\n\n// node_modules/downshift/node_modules/tslib/modules/index.js\nvar import_tslib = __toESM(require_tslib(), 1);\nvar {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __exportStar,\n __createBinding,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn\n} = import_tslib.default;\n\n// node_modules/downshift/dist/downshift.esm.js\nvar idCounter = 0;\nfunction cbToCb(cb) {\n return typeof cb === \"function\" ? cb : noop;\n}\nfunction noop() {\n}\nfunction scrollIntoView2(node, menuNode) {\n if (!node) {\n return;\n }\n var actions = index_module_default(node, {\n boundary: menuNode,\n block: \"nearest\",\n scrollMode: \"if-needed\"\n });\n actions.forEach(function(_ref) {\n var el = _ref.el, top3 = _ref.top, left3 = _ref.left;\n el.scrollTop = top3;\n el.scrollLeft = left3;\n });\n}\nfunction isOrContainsNode(parent2, child, environment) {\n var result = parent2 === child || child instanceof environment.Node && parent2.contains && parent2.contains(child);\n return result;\n}\nfunction debounce2(fn6, time) {\n var timeoutId;\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n function wrapper() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n cancel();\n timeoutId = setTimeout(function() {\n timeoutId = null;\n fn6.apply(void 0, args);\n }, time);\n }\n wrapper.cancel = cancel;\n return wrapper;\n}\nfunction callAllEventHandlers() {\n for (var _len2 = arguments.length, fns = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fns[_key2] = arguments[_key2];\n }\n return function(event) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return fns.some(function(fn6) {\n if (fn6) {\n fn6.apply(void 0, [event].concat(args));\n }\n return event.preventDownshiftDefault || event.hasOwnProperty(\"nativeEvent\") && event.nativeEvent.preventDownshiftDefault;\n });\n };\n}\nfunction handleRefs() {\n for (var _len4 = arguments.length, refs = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n refs[_key4] = arguments[_key4];\n }\n return function(node) {\n refs.forEach(function(ref) {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n });\n };\n}\nfunction generateId() {\n return String(idCounter++);\n}\nfunction getA11yStatusMessage$1(_ref2) {\n var isOpen = _ref2.isOpen, resultCount = _ref2.resultCount, previousResultCount = _ref2.previousResultCount;\n if (!isOpen) {\n return \"\";\n }\n if (!resultCount) {\n return \"No results are available.\";\n }\n if (resultCount !== previousResultCount) {\n return resultCount + \" result\" + (resultCount === 1 ? \" is\" : \"s are\") + \" available, use up and down arrow keys to navigate. Press Enter key to select.\";\n }\n return \"\";\n}\nfunction unwrapArray(arg, defaultValue) {\n arg = Array.isArray(arg) ? arg[0] : arg;\n if (!arg && defaultValue) {\n return defaultValue;\n } else {\n return arg;\n }\n}\nfunction isDOMElement2(element4) {\n return typeof element4.type === \"string\";\n}\nfunction getElementProps(element4) {\n return element4.props;\n}\nfunction requiredProp(fnName, propName) {\n console.error('The property \"' + propName + '\" is required in \"' + fnName + '\"');\n}\nvar stateKeys = [\"highlightedIndex\", \"inputValue\", \"isOpen\", \"selectedItem\", \"type\"];\nfunction pickState(state) {\n if (state === void 0) {\n state = {};\n }\n var result = {};\n stateKeys.forEach(function(k3) {\n if (state.hasOwnProperty(k3)) {\n result[k3] = state[k3];\n }\n });\n return result;\n}\nfunction getState(state, props) {\n return Object.keys(state).reduce(function(prevState, key) {\n prevState[key] = isControlledProp(props, key) ? props[key] : state[key];\n return prevState;\n }, {});\n}\nfunction isControlledProp(props, key) {\n return props[key] !== void 0;\n}\nfunction normalizeArrowKey(event) {\n var key = event.key, keyCode = event.keyCode;\n if (keyCode >= 37 && keyCode <= 40 && key.indexOf(\"Arrow\") !== 0) {\n return \"Arrow\" + key;\n }\n return key;\n}\nfunction isPlainObject3(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction getNextWrappingIndex(moveAmount, baseIndex, itemCount, getItemNodeFromIndex, circular) {\n if (circular === void 0) {\n circular = true;\n }\n if (itemCount === 0) {\n return -1;\n }\n var itemsLastIndex = itemCount - 1;\n if (typeof baseIndex !== \"number\" || baseIndex < 0 || baseIndex >= itemCount) {\n baseIndex = moveAmount > 0 ? -1 : itemsLastIndex + 1;\n }\n var newIndex = baseIndex + moveAmount;\n if (newIndex < 0) {\n newIndex = circular ? itemsLastIndex : 0;\n } else if (newIndex > itemsLastIndex) {\n newIndex = circular ? 0 : itemsLastIndex;\n }\n var nonDisabledNewIndex = getNextNonDisabledIndex(moveAmount, newIndex, itemCount, getItemNodeFromIndex, circular);\n if (nonDisabledNewIndex === -1) {\n return baseIndex >= itemCount ? -1 : baseIndex;\n }\n return nonDisabledNewIndex;\n}\nfunction getNextNonDisabledIndex(moveAmount, baseIndex, itemCount, getItemNodeFromIndex, circular) {\n var currentElementNode = getItemNodeFromIndex(baseIndex);\n if (!currentElementNode || !currentElementNode.hasAttribute(\"disabled\")) {\n return baseIndex;\n }\n if (moveAmount > 0) {\n for (var index7 = baseIndex + 1; index7 < itemCount; index7++) {\n if (!getItemNodeFromIndex(index7).hasAttribute(\"disabled\")) {\n return index7;\n }\n }\n } else {\n for (var _index = baseIndex - 1; _index >= 0; _index--) {\n if (!getItemNodeFromIndex(_index).hasAttribute(\"disabled\")) {\n return _index;\n }\n }\n }\n if (circular) {\n return moveAmount > 0 ? getNextNonDisabledIndex(1, 0, itemCount, getItemNodeFromIndex, false) : getNextNonDisabledIndex(-1, itemCount - 1, itemCount, getItemNodeFromIndex, false);\n }\n return -1;\n}\nfunction targetWithinDownshift(target, downshiftElements, environment, checkActiveElement) {\n if (checkActiveElement === void 0) {\n checkActiveElement = true;\n }\n return downshiftElements.some(function(contextNode) {\n return contextNode && (isOrContainsNode(contextNode, target, environment) || checkActiveElement && isOrContainsNode(contextNode, environment.document.activeElement, environment));\n });\n}\nvar validateControlledUnchanged = noop;\nif (true) {\n validateControlledUnchanged = function validateControlledUnchanged2(state, prevProps, nextProps) {\n var warningDescription = \"This prop should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled Downshift element for the lifetime of the component. More info: https://github.com/downshift-js/downshift#control-props\";\n Object.keys(state).forEach(function(propKey) {\n if (prevProps[propKey] !== void 0 && nextProps[propKey] === void 0) {\n console.error('downshift: A component has changed the controlled prop \"' + propKey + '\" to be uncontrolled. ' + warningDescription);\n } else if (prevProps[propKey] === void 0 && nextProps[propKey] !== void 0) {\n console.error('downshift: A component has changed the uncontrolled prop \"' + propKey + '\" to be controlled. ' + warningDescription);\n }\n });\n };\n}\nvar cleanupStatus = debounce2(function(documentProp) {\n getStatusDiv(documentProp).textContent = \"\";\n}, 500);\nfunction setStatus(status, documentProp) {\n var div4 = getStatusDiv(documentProp);\n if (!status) {\n return;\n }\n div4.textContent = status;\n cleanupStatus(documentProp);\n}\nfunction getStatusDiv(documentProp) {\n if (documentProp === void 0) {\n documentProp = document;\n }\n var statusDiv = documentProp.getElementById(\"a11y-status-message\");\n if (statusDiv) {\n return statusDiv;\n }\n statusDiv = documentProp.createElement(\"div\");\n statusDiv.setAttribute(\"id\", \"a11y-status-message\");\n statusDiv.setAttribute(\"role\", \"status\");\n statusDiv.setAttribute(\"aria-live\", \"polite\");\n statusDiv.setAttribute(\"aria-relevant\", \"additions text\");\n Object.assign(statusDiv.style, {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\"\n });\n documentProp.body.appendChild(statusDiv);\n return statusDiv;\n}\nvar unknown = true ? \"__autocomplete_unknown__\" : 0;\nvar mouseUp = true ? \"__autocomplete_mouseup__\" : 1;\nvar itemMouseEnter = true ? \"__autocomplete_item_mouseenter__\" : 2;\nvar keyDownArrowUp = true ? \"__autocomplete_keydown_arrow_up__\" : 3;\nvar keyDownArrowDown = true ? \"__autocomplete_keydown_arrow_down__\" : 4;\nvar keyDownEscape = true ? \"__autocomplete_keydown_escape__\" : 5;\nvar keyDownEnter = true ? \"__autocomplete_keydown_enter__\" : 6;\nvar keyDownHome = true ? \"__autocomplete_keydown_home__\" : 7;\nvar keyDownEnd = true ? \"__autocomplete_keydown_end__\" : 8;\nvar clickItem = true ? \"__autocomplete_click_item__\" : 9;\nvar blurInput = true ? \"__autocomplete_blur_input__\" : 10;\nvar changeInput = true ? \"__autocomplete_change_input__\" : 11;\nvar keyDownSpaceButton = true ? \"__autocomplete_keydown_space_button__\" : 12;\nvar clickButton = true ? \"__autocomplete_click_button__\" : 13;\nvar blurButton = true ? \"__autocomplete_blur_button__\" : 14;\nvar controlledPropUpdatedSelectedItem = true ? \"__autocomplete_controlled_prop_updated_selected_item__\" : 15;\nvar touchEnd = true ? \"__autocomplete_touchend__\" : 16;\nvar stateChangeTypes$3 = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n unknown,\n mouseUp,\n itemMouseEnter,\n keyDownArrowUp,\n keyDownArrowDown,\n keyDownEscape,\n keyDownEnter,\n keyDownHome,\n keyDownEnd,\n clickItem,\n blurInput,\n changeInput,\n keyDownSpaceButton,\n clickButton,\n blurButton,\n controlledPropUpdatedSelectedItem,\n touchEnd\n});\nvar _excluded$42 = [\"refKey\", \"ref\"];\nvar _excluded2$32 = [\"onClick\", \"onPress\", \"onKeyDown\", \"onKeyUp\", \"onBlur\"];\nvar _excluded3$2 = [\"onKeyDown\", \"onBlur\", \"onChange\", \"onInput\", \"onChangeText\"];\nvar _excluded4$1 = [\"refKey\", \"ref\"];\nvar _excluded5$1 = [\"onMouseMove\", \"onMouseDown\", \"onClick\", \"onPress\", \"index\", \"item\"];\nvar Downshift = /* @__PURE__ */ function() {\n var Downshift2 = /* @__PURE__ */ function(_Component) {\n _inheritsLoose(Downshift3, _Component);\n function Downshift3(_props) {\n var _this;\n _this = _Component.call(this, _props) || this;\n _this.id = _this.props.id || \"downshift-\" + generateId();\n _this.menuId = _this.props.menuId || _this.id + \"-menu\";\n _this.labelId = _this.props.labelId || _this.id + \"-label\";\n _this.inputId = _this.props.inputId || _this.id + \"-input\";\n _this.getItemId = _this.props.getItemId || function(index7) {\n return _this.id + \"-item-\" + index7;\n };\n _this.input = null;\n _this.items = [];\n _this.itemCount = null;\n _this.previousResultCount = 0;\n _this.timeoutIds = [];\n _this.internalSetTimeout = function(fn6, time) {\n var id = setTimeout(function() {\n _this.timeoutIds = _this.timeoutIds.filter(function(i3) {\n return i3 !== id;\n });\n fn6();\n }, time);\n _this.timeoutIds.push(id);\n };\n _this.setItemCount = function(count) {\n _this.itemCount = count;\n };\n _this.unsetItemCount = function() {\n _this.itemCount = null;\n };\n _this.setHighlightedIndex = function(highlightedIndex, otherStateToSet) {\n if (highlightedIndex === void 0) {\n highlightedIndex = _this.props.defaultHighlightedIndex;\n }\n if (otherStateToSet === void 0) {\n otherStateToSet = {};\n }\n otherStateToSet = pickState(otherStateToSet);\n _this.internalSetState(_extends2({\n highlightedIndex\n }, otherStateToSet));\n };\n _this.clearSelection = function(cb) {\n _this.internalSetState({\n selectedItem: null,\n inputValue: \"\",\n highlightedIndex: _this.props.defaultHighlightedIndex,\n isOpen: _this.props.defaultIsOpen\n }, cb);\n };\n _this.selectItem = function(item, otherStateToSet, cb) {\n otherStateToSet = pickState(otherStateToSet);\n _this.internalSetState(_extends2({\n isOpen: _this.props.defaultIsOpen,\n highlightedIndex: _this.props.defaultHighlightedIndex,\n selectedItem: item,\n inputValue: _this.props.itemToString(item)\n }, otherStateToSet), cb);\n };\n _this.selectItemAtIndex = function(itemIndex, otherStateToSet, cb) {\n var item = _this.items[itemIndex];\n if (item == null) {\n return;\n }\n _this.selectItem(item, otherStateToSet, cb);\n };\n _this.selectHighlightedItem = function(otherStateToSet, cb) {\n return _this.selectItemAtIndex(_this.getState().highlightedIndex, otherStateToSet, cb);\n };\n _this.internalSetState = function(stateToSet, cb) {\n var isItemSelected, onChangeArg;\n var onStateChangeArg = {};\n var isStateToSetFunction = typeof stateToSet === \"function\";\n if (!isStateToSetFunction && stateToSet.hasOwnProperty(\"inputValue\")) {\n _this.props.onInputValueChange(stateToSet.inputValue, _extends2({}, _this.getStateAndHelpers(), stateToSet));\n }\n return _this.setState(function(state) {\n state = _this.getState(state);\n var newStateToSet = isStateToSetFunction ? stateToSet(state) : stateToSet;\n newStateToSet = _this.props.stateReducer(state, newStateToSet);\n isItemSelected = newStateToSet.hasOwnProperty(\"selectedItem\");\n var nextState = {};\n var nextFullState = {};\n if (isItemSelected && newStateToSet.selectedItem !== state.selectedItem) {\n onChangeArg = newStateToSet.selectedItem;\n }\n newStateToSet.type = newStateToSet.type || unknown;\n Object.keys(newStateToSet).forEach(function(key) {\n if (state[key] !== newStateToSet[key]) {\n onStateChangeArg[key] = newStateToSet[key];\n }\n if (key === \"type\") {\n return;\n }\n nextFullState[key] = newStateToSet[key];\n if (!isControlledProp(_this.props, key)) {\n nextState[key] = newStateToSet[key];\n }\n });\n if (isStateToSetFunction && newStateToSet.hasOwnProperty(\"inputValue\")) {\n _this.props.onInputValueChange(newStateToSet.inputValue, _extends2({}, _this.getStateAndHelpers(), newStateToSet));\n }\n return nextState;\n }, function() {\n cbToCb(cb)();\n var hasMoreStateThanType = Object.keys(onStateChangeArg).length > 1;\n if (hasMoreStateThanType) {\n _this.props.onStateChange(onStateChangeArg, _this.getStateAndHelpers());\n }\n if (isItemSelected) {\n _this.props.onSelect(stateToSet.selectedItem, _this.getStateAndHelpers());\n }\n if (onChangeArg !== void 0) {\n _this.props.onChange(onChangeArg, _this.getStateAndHelpers());\n }\n _this.props.onUserAction(onStateChangeArg, _this.getStateAndHelpers());\n });\n };\n _this.rootRef = function(node) {\n return _this._rootNode = node;\n };\n _this.getRootProps = function(_temp, _temp2) {\n var _extends22;\n var _ref = _temp === void 0 ? {} : _temp, _ref$refKey = _ref.refKey, refKey = _ref$refKey === void 0 ? \"ref\" : _ref$refKey, ref = _ref.ref, rest = _objectWithoutPropertiesLoose3(_ref, _excluded$42);\n var _ref2 = _temp2 === void 0 ? {} : _temp2, _ref2$suppressRefErro = _ref2.suppressRefError, suppressRefError = _ref2$suppressRefErro === void 0 ? false : _ref2$suppressRefErro;\n _this.getRootProps.called = true;\n _this.getRootProps.refKey = refKey;\n _this.getRootProps.suppressRefError = suppressRefError;\n var _this$getState = _this.getState(), isOpen = _this$getState.isOpen;\n return _extends2((_extends22 = {}, _extends22[refKey] = handleRefs(ref, _this.rootRef), _extends22.role = \"combobox\", _extends22[\"aria-expanded\"] = isOpen, _extends22[\"aria-haspopup\"] = \"listbox\", _extends22[\"aria-owns\"] = isOpen ? _this.menuId : null, _extends22[\"aria-labelledby\"] = _this.labelId, _extends22), rest);\n };\n _this.keyDownHandlers = {\n ArrowDown: function ArrowDown(event) {\n var _this2 = this;\n event.preventDefault();\n if (this.getState().isOpen) {\n var amount = event.shiftKey ? 5 : 1;\n this.moveHighlightedIndex(amount, {\n type: keyDownArrowDown\n });\n } else {\n this.internalSetState({\n isOpen: true,\n type: keyDownArrowDown\n }, function() {\n var itemCount = _this2.getItemCount();\n if (itemCount > 0) {\n var _this2$getState = _this2.getState(), highlightedIndex = _this2$getState.highlightedIndex;\n var nextHighlightedIndex = getNextWrappingIndex(1, highlightedIndex, itemCount, function(index7) {\n return _this2.getItemNodeFromIndex(index7);\n });\n _this2.setHighlightedIndex(nextHighlightedIndex, {\n type: keyDownArrowDown\n });\n }\n });\n }\n },\n ArrowUp: function ArrowUp(event) {\n var _this3 = this;\n event.preventDefault();\n if (this.getState().isOpen) {\n var amount = event.shiftKey ? -5 : -1;\n this.moveHighlightedIndex(amount, {\n type: keyDownArrowUp\n });\n } else {\n this.internalSetState({\n isOpen: true,\n type: keyDownArrowUp\n }, function() {\n var itemCount = _this3.getItemCount();\n if (itemCount > 0) {\n var _this3$getState = _this3.getState(), highlightedIndex = _this3$getState.highlightedIndex;\n var nextHighlightedIndex = getNextWrappingIndex(-1, highlightedIndex, itemCount, function(index7) {\n return _this3.getItemNodeFromIndex(index7);\n });\n _this3.setHighlightedIndex(nextHighlightedIndex, {\n type: keyDownArrowUp\n });\n }\n });\n }\n },\n Enter: function Enter(event) {\n if (event.which === 229) {\n return;\n }\n var _this$getState2 = this.getState(), isOpen = _this$getState2.isOpen, highlightedIndex = _this$getState2.highlightedIndex;\n if (isOpen && highlightedIndex != null) {\n event.preventDefault();\n var item = this.items[highlightedIndex];\n var itemNode = this.getItemNodeFromIndex(highlightedIndex);\n if (item == null || itemNode && itemNode.hasAttribute(\"disabled\")) {\n return;\n }\n this.selectHighlightedItem({\n type: keyDownEnter\n });\n }\n },\n Escape: function Escape(event) {\n event.preventDefault();\n this.reset(_extends2({\n type: keyDownEscape\n }, !this.state.isOpen && {\n selectedItem: null,\n inputValue: \"\"\n }));\n }\n };\n _this.buttonKeyDownHandlers = _extends2({}, _this.keyDownHandlers, {\n \" \": function _3(event) {\n event.preventDefault();\n this.toggleMenu({\n type: keyDownSpaceButton\n });\n }\n });\n _this.inputKeyDownHandlers = _extends2({}, _this.keyDownHandlers, {\n Home: function Home(event) {\n var _this4 = this;\n var _this$getState3 = this.getState(), isOpen = _this$getState3.isOpen;\n if (!isOpen) {\n return;\n }\n event.preventDefault();\n var itemCount = this.getItemCount();\n if (itemCount <= 0 || !isOpen) {\n return;\n }\n var newHighlightedIndex = getNextNonDisabledIndex(1, 0, itemCount, function(index7) {\n return _this4.getItemNodeFromIndex(index7);\n }, false);\n this.setHighlightedIndex(newHighlightedIndex, {\n type: keyDownHome\n });\n },\n End: function End(event) {\n var _this5 = this;\n var _this$getState4 = this.getState(), isOpen = _this$getState4.isOpen;\n if (!isOpen) {\n return;\n }\n event.preventDefault();\n var itemCount = this.getItemCount();\n if (itemCount <= 0 || !isOpen) {\n return;\n }\n var newHighlightedIndex = getNextNonDisabledIndex(-1, itemCount - 1, itemCount, function(index7) {\n return _this5.getItemNodeFromIndex(index7);\n }, false);\n this.setHighlightedIndex(newHighlightedIndex, {\n type: keyDownEnd\n });\n }\n });\n _this.getToggleButtonProps = function(_temp3) {\n var _ref3 = _temp3 === void 0 ? {} : _temp3, onClick = _ref3.onClick;\n _ref3.onPress;\n var onKeyDown = _ref3.onKeyDown, onKeyUp = _ref3.onKeyUp, onBlur = _ref3.onBlur, rest = _objectWithoutPropertiesLoose3(_ref3, _excluded2$32);\n var _this$getState5 = _this.getState(), isOpen = _this$getState5.isOpen;\n var enabledEventHandlers = {\n onClick: callAllEventHandlers(onClick, _this.buttonHandleClick),\n onKeyDown: callAllEventHandlers(onKeyDown, _this.buttonHandleKeyDown),\n onKeyUp: callAllEventHandlers(onKeyUp, _this.buttonHandleKeyUp),\n onBlur: callAllEventHandlers(onBlur, _this.buttonHandleBlur)\n };\n var eventHandlers = rest.disabled ? {} : enabledEventHandlers;\n return _extends2({\n type: \"button\",\n role: \"button\",\n \"aria-label\": isOpen ? \"close menu\" : \"open menu\",\n \"aria-haspopup\": true,\n \"data-toggle\": true\n }, eventHandlers, rest);\n };\n _this.buttonHandleKeyUp = function(event) {\n event.preventDefault();\n };\n _this.buttonHandleKeyDown = function(event) {\n var key = normalizeArrowKey(event);\n if (_this.buttonKeyDownHandlers[key]) {\n _this.buttonKeyDownHandlers[key].call(_assertThisInitialized(_this), event);\n }\n };\n _this.buttonHandleClick = function(event) {\n event.preventDefault();\n if (_this.props.environment.document.activeElement === _this.props.environment.document.body) {\n event.target.focus();\n }\n if (false) {\n _this.toggleMenu({\n type: clickButton\n });\n } else {\n _this.internalSetTimeout(function() {\n return _this.toggleMenu({\n type: clickButton\n });\n });\n }\n };\n _this.buttonHandleBlur = function(event) {\n var blurTarget = event.target;\n _this.internalSetTimeout(function() {\n if (!_this.isMouseDown && (_this.props.environment.document.activeElement == null || _this.props.environment.document.activeElement.id !== _this.inputId) && _this.props.environment.document.activeElement !== blurTarget) {\n _this.reset({\n type: blurButton\n });\n }\n });\n };\n _this.getLabelProps = function(props) {\n return _extends2({\n htmlFor: _this.inputId,\n id: _this.labelId\n }, props);\n };\n _this.getInputProps = function(_temp4) {\n var _ref4 = _temp4 === void 0 ? {} : _temp4, onKeyDown = _ref4.onKeyDown, onBlur = _ref4.onBlur, onChange = _ref4.onChange, onInput = _ref4.onInput;\n _ref4.onChangeText;\n var rest = _objectWithoutPropertiesLoose3(_ref4, _excluded3$2);\n var onChangeKey;\n var eventHandlers = {};\n {\n onChangeKey = \"onChange\";\n }\n var _this$getState6 = _this.getState(), inputValue = _this$getState6.inputValue, isOpen = _this$getState6.isOpen, highlightedIndex = _this$getState6.highlightedIndex;\n if (!rest.disabled) {\n var _eventHandlers;\n eventHandlers = (_eventHandlers = {}, _eventHandlers[onChangeKey] = callAllEventHandlers(onChange, onInput, _this.inputHandleChange), _eventHandlers.onKeyDown = callAllEventHandlers(onKeyDown, _this.inputHandleKeyDown), _eventHandlers.onBlur = callAllEventHandlers(onBlur, _this.inputHandleBlur), _eventHandlers);\n }\n return _extends2({\n \"aria-autocomplete\": \"list\",\n \"aria-activedescendant\": isOpen && typeof highlightedIndex === \"number\" && highlightedIndex >= 0 ? _this.getItemId(highlightedIndex) : null,\n \"aria-controls\": isOpen ? _this.menuId : null,\n \"aria-labelledby\": _this.labelId,\n autoComplete: \"off\",\n value: inputValue,\n id: _this.inputId\n }, eventHandlers, rest);\n };\n _this.inputHandleKeyDown = function(event) {\n var key = normalizeArrowKey(event);\n if (key && _this.inputKeyDownHandlers[key]) {\n _this.inputKeyDownHandlers[key].call(_assertThisInitialized(_this), event);\n }\n };\n _this.inputHandleChange = function(event) {\n _this.internalSetState({\n type: changeInput,\n isOpen: true,\n inputValue: event.target.value,\n highlightedIndex: _this.props.defaultHighlightedIndex\n });\n };\n _this.inputHandleBlur = function() {\n _this.internalSetTimeout(function() {\n var downshiftButtonIsActive = _this.props.environment.document && !!_this.props.environment.document.activeElement && !!_this.props.environment.document.activeElement.dataset && _this.props.environment.document.activeElement.dataset.toggle && _this._rootNode && _this._rootNode.contains(_this.props.environment.document.activeElement);\n if (!_this.isMouseDown && !downshiftButtonIsActive) {\n _this.reset({\n type: blurInput\n });\n }\n });\n };\n _this.menuRef = function(node) {\n _this._menuNode = node;\n };\n _this.getMenuProps = function(_temp5, _temp6) {\n var _extends32;\n var _ref5 = _temp5 === void 0 ? {} : _temp5, _ref5$refKey = _ref5.refKey, refKey = _ref5$refKey === void 0 ? \"ref\" : _ref5$refKey, ref = _ref5.ref, props = _objectWithoutPropertiesLoose3(_ref5, _excluded4$1);\n var _ref6 = _temp6 === void 0 ? {} : _temp6, _ref6$suppressRefErro = _ref6.suppressRefError, suppressRefError = _ref6$suppressRefErro === void 0 ? false : _ref6$suppressRefErro;\n _this.getMenuProps.called = true;\n _this.getMenuProps.refKey = refKey;\n _this.getMenuProps.suppressRefError = suppressRefError;\n return _extends2((_extends32 = {}, _extends32[refKey] = handleRefs(ref, _this.menuRef), _extends32.role = \"listbox\", _extends32[\"aria-labelledby\"] = props && props[\"aria-label\"] ? null : _this.labelId, _extends32.id = _this.menuId, _extends32), props);\n };\n _this.getItemProps = function(_temp7) {\n var _enabledEventHandlers;\n var _ref7 = _temp7 === void 0 ? {} : _temp7, onMouseMove = _ref7.onMouseMove, onMouseDown = _ref7.onMouseDown, onClick = _ref7.onClick;\n _ref7.onPress;\n var index7 = _ref7.index, _ref7$item = _ref7.item, item = _ref7$item === void 0 ? false ? void 0 : requiredProp(\"getItemProps\", \"item\") : _ref7$item, rest = _objectWithoutPropertiesLoose3(_ref7, _excluded5$1);\n if (index7 === void 0) {\n _this.items.push(item);\n index7 = _this.items.indexOf(item);\n } else {\n _this.items[index7] = item;\n }\n var onSelectKey = \"onClick\";\n var customClickHandler = onClick;\n var enabledEventHandlers = (_enabledEventHandlers = {\n onMouseMove: callAllEventHandlers(onMouseMove, function() {\n if (index7 === _this.getState().highlightedIndex) {\n return;\n }\n _this.setHighlightedIndex(index7, {\n type: itemMouseEnter\n });\n _this.avoidScrolling = true;\n _this.internalSetTimeout(function() {\n return _this.avoidScrolling = false;\n }, 250);\n }),\n onMouseDown: callAllEventHandlers(onMouseDown, function(event) {\n event.preventDefault();\n })\n }, _enabledEventHandlers[onSelectKey] = callAllEventHandlers(customClickHandler, function() {\n _this.selectItemAtIndex(index7, {\n type: clickItem\n });\n }), _enabledEventHandlers);\n var eventHandlers = rest.disabled ? {\n onMouseDown: enabledEventHandlers.onMouseDown\n } : enabledEventHandlers;\n return _extends2({\n id: _this.getItemId(index7),\n role: \"option\",\n \"aria-selected\": _this.getState().highlightedIndex === index7\n }, eventHandlers, rest);\n };\n _this.clearItems = function() {\n _this.items = [];\n };\n _this.reset = function(otherStateToSet, cb) {\n if (otherStateToSet === void 0) {\n otherStateToSet = {};\n }\n otherStateToSet = pickState(otherStateToSet);\n _this.internalSetState(function(_ref8) {\n var selectedItem = _ref8.selectedItem;\n return _extends2({\n isOpen: _this.props.defaultIsOpen,\n highlightedIndex: _this.props.defaultHighlightedIndex,\n inputValue: _this.props.itemToString(selectedItem)\n }, otherStateToSet);\n }, cb);\n };\n _this.toggleMenu = function(otherStateToSet, cb) {\n if (otherStateToSet === void 0) {\n otherStateToSet = {};\n }\n otherStateToSet = pickState(otherStateToSet);\n _this.internalSetState(function(_ref9) {\n var isOpen = _ref9.isOpen;\n return _extends2({\n isOpen: !isOpen\n }, isOpen && {\n highlightedIndex: _this.props.defaultHighlightedIndex\n }, otherStateToSet);\n }, function() {\n var _this$getState7 = _this.getState(), isOpen = _this$getState7.isOpen, highlightedIndex = _this$getState7.highlightedIndex;\n if (isOpen) {\n if (_this.getItemCount() > 0 && typeof highlightedIndex === \"number\") {\n _this.setHighlightedIndex(highlightedIndex, otherStateToSet);\n }\n }\n cbToCb(cb)();\n });\n };\n _this.openMenu = function(cb) {\n _this.internalSetState({\n isOpen: true\n }, cb);\n };\n _this.closeMenu = function(cb) {\n _this.internalSetState({\n isOpen: false\n }, cb);\n };\n _this.updateStatus = debounce2(function() {\n var state = _this.getState();\n var item = _this.items[state.highlightedIndex];\n var resultCount = _this.getItemCount();\n var status = _this.props.getA11yStatusMessage(_extends2({\n itemToString: _this.props.itemToString,\n previousResultCount: _this.previousResultCount,\n resultCount,\n highlightedItem: item\n }, state));\n _this.previousResultCount = resultCount;\n setStatus(status, _this.props.environment.document);\n }, 200);\n var _this$props = _this.props, defaultHighlightedIndex = _this$props.defaultHighlightedIndex, _this$props$initialHi = _this$props.initialHighlightedIndex, _highlightedIndex = _this$props$initialHi === void 0 ? defaultHighlightedIndex : _this$props$initialHi, defaultIsOpen = _this$props.defaultIsOpen, _this$props$initialIs = _this$props.initialIsOpen, _isOpen = _this$props$initialIs === void 0 ? defaultIsOpen : _this$props$initialIs, _this$props$initialIn = _this$props.initialInputValue, _inputValue = _this$props$initialIn === void 0 ? \"\" : _this$props$initialIn, _this$props$initialSe = _this$props.initialSelectedItem, _selectedItem = _this$props$initialSe === void 0 ? null : _this$props$initialSe;\n var _state = _this.getState({\n highlightedIndex: _highlightedIndex,\n isOpen: _isOpen,\n inputValue: _inputValue,\n selectedItem: _selectedItem\n });\n if (_state.selectedItem != null && _this.props.initialInputValue === void 0) {\n _state.inputValue = _this.props.itemToString(_state.selectedItem);\n }\n _this.state = _state;\n return _this;\n }\n var _proto = Downshift3.prototype;\n _proto.internalClearTimeouts = function internalClearTimeouts() {\n this.timeoutIds.forEach(function(id) {\n clearTimeout(id);\n });\n this.timeoutIds = [];\n };\n _proto.getState = function getState$1(stateToMerge) {\n if (stateToMerge === void 0) {\n stateToMerge = this.state;\n }\n return getState(stateToMerge, this.props);\n };\n _proto.getItemCount = function getItemCount() {\n var itemCount = this.items.length;\n if (this.itemCount != null) {\n itemCount = this.itemCount;\n } else if (this.props.itemCount !== void 0) {\n itemCount = this.props.itemCount;\n }\n return itemCount;\n };\n _proto.getItemNodeFromIndex = function getItemNodeFromIndex(index7) {\n return this.props.environment.document.getElementById(this.getItemId(index7));\n };\n _proto.scrollHighlightedItemIntoView = function scrollHighlightedItemIntoView() {\n {\n var node = this.getItemNodeFromIndex(this.getState().highlightedIndex);\n this.props.scrollIntoView(node, this._menuNode);\n }\n };\n _proto.moveHighlightedIndex = function moveHighlightedIndex(amount, otherStateToSet) {\n var _this6 = this;\n var itemCount = this.getItemCount();\n var _this$getState8 = this.getState(), highlightedIndex = _this$getState8.highlightedIndex;\n if (itemCount > 0) {\n var nextHighlightedIndex = getNextWrappingIndex(amount, highlightedIndex, itemCount, function(index7) {\n return _this6.getItemNodeFromIndex(index7);\n });\n this.setHighlightedIndex(nextHighlightedIndex, otherStateToSet);\n }\n };\n _proto.getStateAndHelpers = function getStateAndHelpers() {\n var _this$getState9 = this.getState(), highlightedIndex = _this$getState9.highlightedIndex, inputValue = _this$getState9.inputValue, selectedItem = _this$getState9.selectedItem, isOpen = _this$getState9.isOpen;\n var itemToString2 = this.props.itemToString;\n var id = this.id;\n var getRootProps2 = this.getRootProps, getToggleButtonProps = this.getToggleButtonProps, getLabelProps = this.getLabelProps, getMenuProps = this.getMenuProps, getInputProps = this.getInputProps, getItemProps = this.getItemProps, openMenu = this.openMenu, closeMenu = this.closeMenu, toggleMenu = this.toggleMenu, selectItem = this.selectItem, selectItemAtIndex = this.selectItemAtIndex, selectHighlightedItem = this.selectHighlightedItem, setHighlightedIndex = this.setHighlightedIndex, clearSelection = this.clearSelection, clearItems = this.clearItems, reset = this.reset, setItemCount = this.setItemCount, unsetItemCount = this.unsetItemCount, setState = this.internalSetState;\n return {\n getRootProps: getRootProps2,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getInputProps,\n getItemProps,\n reset,\n openMenu,\n closeMenu,\n toggleMenu,\n selectItem,\n selectItemAtIndex,\n selectHighlightedItem,\n setHighlightedIndex,\n clearSelection,\n clearItems,\n setItemCount,\n unsetItemCount,\n setState,\n itemToString: itemToString2,\n id,\n highlightedIndex,\n inputValue,\n isOpen,\n selectedItem\n };\n };\n _proto.componentDidMount = function componentDidMount() {\n var _this7 = this;\n if (this.getMenuProps.called && !this.getMenuProps.suppressRefError) {\n validateGetMenuPropsCalledCorrectly(this._menuNode, this.getMenuProps);\n }\n {\n var onMouseDown = function onMouseDown2() {\n _this7.isMouseDown = true;\n };\n var onMouseUp = function onMouseUp2(event) {\n _this7.isMouseDown = false;\n var contextWithinDownshift = targetWithinDownshift(event.target, [_this7._rootNode, _this7._menuNode], _this7.props.environment);\n if (!contextWithinDownshift && _this7.getState().isOpen) {\n _this7.reset({\n type: mouseUp\n }, function() {\n return _this7.props.onOuterClick(_this7.getStateAndHelpers());\n });\n }\n };\n var onTouchStart = function onTouchStart2() {\n _this7.isTouchMove = false;\n };\n var onTouchMove = function onTouchMove2() {\n _this7.isTouchMove = true;\n };\n var onTouchEnd = function onTouchEnd2(event) {\n var contextWithinDownshift = targetWithinDownshift(event.target, [_this7._rootNode, _this7._menuNode], _this7.props.environment, false);\n if (!_this7.isTouchMove && !contextWithinDownshift && _this7.getState().isOpen) {\n _this7.reset({\n type: touchEnd\n }, function() {\n return _this7.props.onOuterClick(_this7.getStateAndHelpers());\n });\n }\n };\n var environment = this.props.environment;\n environment.addEventListener(\"mousedown\", onMouseDown);\n environment.addEventListener(\"mouseup\", onMouseUp);\n environment.addEventListener(\"touchstart\", onTouchStart);\n environment.addEventListener(\"touchmove\", onTouchMove);\n environment.addEventListener(\"touchend\", onTouchEnd);\n this.cleanup = function() {\n _this7.internalClearTimeouts();\n _this7.updateStatus.cancel();\n environment.removeEventListener(\"mousedown\", onMouseDown);\n environment.removeEventListener(\"mouseup\", onMouseUp);\n environment.removeEventListener(\"touchstart\", onTouchStart);\n environment.removeEventListener(\"touchmove\", onTouchMove);\n environment.removeEventListener(\"touchend\", onTouchEnd);\n };\n }\n };\n _proto.shouldScroll = function shouldScroll(prevState, prevProps) {\n var _ref10 = this.props.highlightedIndex === void 0 ? this.getState() : this.props, currentHighlightedIndex = _ref10.highlightedIndex;\n var _ref11 = prevProps.highlightedIndex === void 0 ? prevState : prevProps, prevHighlightedIndex = _ref11.highlightedIndex;\n var scrollWhenOpen = currentHighlightedIndex && this.getState().isOpen && !prevState.isOpen;\n var scrollWhenNavigating = currentHighlightedIndex !== prevHighlightedIndex;\n return scrollWhenOpen || scrollWhenNavigating;\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (true) {\n validateControlledUnchanged(this.state, prevProps, this.props);\n if (this.getMenuProps.called && !this.getMenuProps.suppressRefError) {\n validateGetMenuPropsCalledCorrectly(this._menuNode, this.getMenuProps);\n }\n }\n if (isControlledProp(this.props, \"selectedItem\") && this.props.selectedItemChanged(prevProps.selectedItem, this.props.selectedItem)) {\n this.internalSetState({\n type: controlledPropUpdatedSelectedItem,\n inputValue: this.props.itemToString(this.props.selectedItem)\n });\n }\n if (!this.avoidScrolling && this.shouldScroll(prevState, prevProps)) {\n this.scrollHighlightedItemIntoView();\n }\n {\n this.updateStatus();\n }\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cleanup();\n };\n _proto.render = function render3() {\n var children = unwrapArray(this.props.children, noop);\n this.clearItems();\n this.getRootProps.called = false;\n this.getRootProps.refKey = void 0;\n this.getRootProps.suppressRefError = void 0;\n this.getMenuProps.called = false;\n this.getMenuProps.refKey = void 0;\n this.getMenuProps.suppressRefError = void 0;\n this.getLabelProps.called = false;\n this.getInputProps.called = false;\n var element4 = unwrapArray(children(this.getStateAndHelpers()));\n if (!element4) {\n return null;\n }\n if (this.getRootProps.called || this.props.suppressRefError) {\n if (!this.getRootProps.suppressRefError && !this.props.suppressRefError) {\n validateGetRootPropsCalledCorrectly(element4, this.getRootProps);\n }\n return element4;\n } else if (isDOMElement2(element4)) {\n return /* @__PURE__ */ (0, import_react7.cloneElement)(element4, this.getRootProps(getElementProps(element4)));\n }\n if (true) {\n throw new Error(\"downshift: If you return a non-DOM element, you must apply the getRootProps function\");\n }\n return void 0;\n };\n return Downshift3;\n }(import_react7.Component);\n Downshift2.defaultProps = {\n defaultHighlightedIndex: null,\n defaultIsOpen: false,\n getA11yStatusMessage: getA11yStatusMessage$1,\n itemToString: function itemToString2(i3) {\n if (i3 == null) {\n return \"\";\n }\n if (isPlainObject3(i3) && !i3.hasOwnProperty(\"toString\")) {\n console.warn(\"downshift: An object was passed to the default implementation of `itemToString`. You should probably provide your own `itemToString` implementation. Please refer to the `itemToString` API documentation.\", \"The object that was passed:\", i3);\n }\n return String(i3);\n },\n onStateChange: noop,\n onInputValueChange: noop,\n onUserAction: noop,\n onChange: noop,\n onSelect: noop,\n onOuterClick: noop,\n selectedItemChanged: function selectedItemChanged(prevItem, item) {\n return prevItem !== item;\n },\n environment: typeof window === \"undefined\" ? {} : window,\n stateReducer: function stateReducer2(state, stateToSet) {\n return stateToSet;\n },\n suppressRefError: false,\n scrollIntoView: scrollIntoView2\n };\n Downshift2.stateChangeTypes = stateChangeTypes$3;\n return Downshift2;\n}();\ntrue ? Downshift.propTypes = {\n children: import_prop_types.default.func,\n defaultHighlightedIndex: import_prop_types.default.number,\n defaultIsOpen: import_prop_types.default.bool,\n initialHighlightedIndex: import_prop_types.default.number,\n initialSelectedItem: import_prop_types.default.any,\n initialInputValue: import_prop_types.default.string,\n initialIsOpen: import_prop_types.default.bool,\n getA11yStatusMessage: import_prop_types.default.func,\n itemToString: import_prop_types.default.func,\n onChange: import_prop_types.default.func,\n onSelect: import_prop_types.default.func,\n onStateChange: import_prop_types.default.func,\n onInputValueChange: import_prop_types.default.func,\n onUserAction: import_prop_types.default.func,\n onOuterClick: import_prop_types.default.func,\n selectedItemChanged: import_prop_types.default.func,\n stateReducer: import_prop_types.default.func,\n itemCount: import_prop_types.default.number,\n id: import_prop_types.default.string,\n environment: import_prop_types.default.shape({\n addEventListener: import_prop_types.default.func,\n removeEventListener: import_prop_types.default.func,\n document: import_prop_types.default.shape({\n getElementById: import_prop_types.default.func,\n activeElement: import_prop_types.default.any,\n body: import_prop_types.default.any\n })\n }),\n suppressRefError: import_prop_types.default.bool,\n scrollIntoView: import_prop_types.default.func,\n selectedItem: import_prop_types.default.any,\n isOpen: import_prop_types.default.bool,\n inputValue: import_prop_types.default.string,\n highlightedIndex: import_prop_types.default.number,\n labelId: import_prop_types.default.string,\n inputId: import_prop_types.default.string,\n menuId: import_prop_types.default.string,\n getItemId: import_prop_types.default.func\n} : void 0;\nfunction validateGetMenuPropsCalledCorrectly(node, _ref12) {\n var refKey = _ref12.refKey;\n if (!node) {\n console.error('downshift: The ref prop \"' + refKey + '\" from getMenuProps was not applied correctly on your menu element.');\n }\n}\nfunction validateGetRootPropsCalledCorrectly(element4, _ref13) {\n var refKey = _ref13.refKey;\n var refKeySpecified = refKey !== \"ref\";\n var isComposite = !isDOMElement2(element4);\n if (isComposite && !refKeySpecified && !(0, import_react_is.isForwardRef)(element4)) {\n console.error(\"downshift: You returned a non-DOM element. You must specify a refKey in getRootProps\");\n } else if (!isComposite && refKeySpecified) {\n console.error('downshift: You returned a DOM element. You should not specify a refKey in getRootProps. You specified \"' + refKey + '\"');\n }\n if (!(0, import_react_is.isForwardRef)(element4) && !getElementProps(element4)[refKey]) {\n console.error('downshift: You must apply the ref prop \"' + refKey + '\" from getRootProps onto your root element.');\n }\n}\nvar _excluded$33 = [\"isInitialMount\", \"highlightedIndex\", \"items\", \"environment\"];\nvar dropdownDefaultStateValues = {\n highlightedIndex: -1,\n isOpen: false,\n selectedItem: null,\n inputValue: \"\"\n};\nfunction callOnChangeProps(action, state, newState) {\n var props = action.props, type = action.type;\n var changes = {};\n Object.keys(state).forEach(function(key) {\n invokeOnChangeHandler(key, action, state, newState);\n if (newState[key] !== state[key]) {\n changes[key] = newState[key];\n }\n });\n if (props.onStateChange && Object.keys(changes).length) {\n props.onStateChange(_extends2({\n type\n }, changes));\n }\n}\nfunction invokeOnChangeHandler(key, action, state, newState) {\n var props = action.props, type = action.type;\n var handler = \"on\" + capitalizeString(key) + \"Change\";\n if (props[handler] && newState[key] !== void 0 && newState[key] !== state[key]) {\n props[handler](_extends2({\n type\n }, newState));\n }\n}\nfunction stateReducer(s3, a5) {\n return a5.changes;\n}\nfunction getA11ySelectionMessage(selectionParameters) {\n var selectedItem = selectionParameters.selectedItem, itemToStringLocal = selectionParameters.itemToString;\n return selectedItem ? itemToStringLocal(selectedItem) + \" has been selected.\" : \"\";\n}\nvar updateA11yStatus = debounce2(function(getA11yMessage, document2) {\n setStatus(getA11yMessage(), document2);\n}, 200);\nvar useIsomorphicLayoutEffect3 = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\" ? import_react7.useLayoutEffect : import_react7.useEffect;\nfunction useElementIds(_ref) {\n var _ref$id = _ref.id, id = _ref$id === void 0 ? \"downshift-\" + generateId() : _ref$id, labelId = _ref.labelId, menuId = _ref.menuId, getItemId = _ref.getItemId, toggleButtonId = _ref.toggleButtonId, inputId = _ref.inputId;\n var elementIdsRef = (0, import_react7.useRef)({\n labelId: labelId || id + \"-label\",\n menuId: menuId || id + \"-menu\",\n getItemId: getItemId || function(index7) {\n return id + \"-item-\" + index7;\n },\n toggleButtonId: toggleButtonId || id + \"-toggle-button\",\n inputId: inputId || id + \"-input\"\n });\n return elementIdsRef.current;\n}\nfunction getItemIndex(index7, item, items) {\n if (index7 !== void 0) {\n return index7;\n }\n if (items.length === 0) {\n return -1;\n }\n return items.indexOf(item);\n}\nfunction itemToString(item) {\n return item ? String(item) : \"\";\n}\nfunction isAcceptedCharacterKey(key) {\n return /^\\S{1}$/.test(key);\n}\nfunction capitalizeString(string2) {\n return \"\" + string2.slice(0, 1).toUpperCase() + string2.slice(1);\n}\nfunction useLatestRef(val) {\n var ref = (0, import_react7.useRef)(val);\n ref.current = val;\n return ref;\n}\nfunction useEnhancedReducer(reducer, initialState3, props) {\n var prevStateRef = (0, import_react7.useRef)();\n var actionRef = (0, import_react7.useRef)();\n var enhancedReducer = (0, import_react7.useCallback)(function(state2, action2) {\n actionRef.current = action2;\n state2 = getState(state2, action2.props);\n var changes = reducer(state2, action2);\n var newState = action2.props.stateReducer(state2, _extends2({}, action2, {\n changes\n }));\n return newState;\n }, [reducer]);\n var _useReducer = (0, import_react7.useReducer)(enhancedReducer, initialState3), state = _useReducer[0], dispatch = _useReducer[1];\n var propsRef = useLatestRef(props);\n var dispatchWithProps = (0, import_react7.useCallback)(function(action2) {\n return dispatch(_extends2({\n props: propsRef.current\n }, action2));\n }, [propsRef]);\n var action = actionRef.current;\n (0, import_react7.useEffect)(function() {\n if (action && prevStateRef.current && prevStateRef.current !== state) {\n callOnChangeProps(action, getState(prevStateRef.current, action.props), state);\n }\n prevStateRef.current = state;\n }, [state, props, action]);\n return [state, dispatchWithProps];\n}\nfunction useControlledReducer$1(reducer, initialState3, props) {\n var _useEnhancedReducer = useEnhancedReducer(reducer, initialState3, props), state = _useEnhancedReducer[0], dispatch = _useEnhancedReducer[1];\n return [getState(state, props), dispatch];\n}\nvar defaultProps$3 = {\n itemToString,\n stateReducer,\n getA11ySelectionMessage,\n scrollIntoView: scrollIntoView2,\n circularNavigation: false,\n environment: typeof window === \"undefined\" ? {} : window\n};\nfunction getDefaultValue$1(props, propKey, defaultStateValues2) {\n if (defaultStateValues2 === void 0) {\n defaultStateValues2 = dropdownDefaultStateValues;\n }\n var defaultPropKey = \"default\" + capitalizeString(propKey);\n if (defaultPropKey in props) {\n return props[defaultPropKey];\n }\n return defaultStateValues2[propKey];\n}\nfunction getInitialValue$1(props, propKey, defaultStateValues2) {\n if (defaultStateValues2 === void 0) {\n defaultStateValues2 = dropdownDefaultStateValues;\n }\n if (propKey in props) {\n return props[propKey];\n }\n var initialPropKey = \"initial\" + capitalizeString(propKey);\n if (initialPropKey in props) {\n return props[initialPropKey];\n }\n return getDefaultValue$1(props, propKey, defaultStateValues2);\n}\nfunction getInitialState$2(props) {\n var selectedItem = getInitialValue$1(props, \"selectedItem\");\n var isOpen = getInitialValue$1(props, \"isOpen\");\n var highlightedIndex = getInitialValue$1(props, \"highlightedIndex\");\n var inputValue = getInitialValue$1(props, \"inputValue\");\n return {\n highlightedIndex: highlightedIndex < 0 && selectedItem && isOpen ? props.items.indexOf(selectedItem) : highlightedIndex,\n isOpen,\n selectedItem,\n inputValue\n };\n}\nfunction getHighlightedIndexOnOpen(props, state, offset3, getItemNodeFromIndex) {\n var items = props.items, initialHighlightedIndex = props.initialHighlightedIndex, defaultHighlightedIndex = props.defaultHighlightedIndex;\n var selectedItem = state.selectedItem, highlightedIndex = state.highlightedIndex;\n if (items.length === 0) {\n return -1;\n }\n if (initialHighlightedIndex !== void 0 && highlightedIndex === initialHighlightedIndex) {\n return initialHighlightedIndex;\n }\n if (defaultHighlightedIndex !== void 0) {\n return defaultHighlightedIndex;\n }\n if (selectedItem) {\n if (offset3 === 0) {\n return items.indexOf(selectedItem);\n }\n return getNextWrappingIndex(offset3, items.indexOf(selectedItem), items.length, getItemNodeFromIndex, false);\n }\n if (offset3 === 0) {\n return -1;\n }\n return offset3 < 0 ? items.length - 1 : 0;\n}\nfunction useMouseAndTouchTracker(isOpen, downshiftElementRefs, environment, handleBlur) {\n var mouseAndTouchTrackersRef = (0, import_react7.useRef)({\n isMouseDown: false,\n isTouchMove: false\n });\n (0, import_react7.useEffect)(function() {\n var onMouseDown = function onMouseDown2() {\n mouseAndTouchTrackersRef.current.isMouseDown = true;\n };\n var onMouseUp = function onMouseUp2(event) {\n mouseAndTouchTrackersRef.current.isMouseDown = false;\n if (isOpen && !targetWithinDownshift(event.target, downshiftElementRefs.map(function(ref) {\n return ref.current;\n }), environment)) {\n handleBlur();\n }\n };\n var onTouchStart = function onTouchStart2() {\n mouseAndTouchTrackersRef.current.isTouchMove = false;\n };\n var onTouchMove = function onTouchMove2() {\n mouseAndTouchTrackersRef.current.isTouchMove = true;\n };\n var onTouchEnd = function onTouchEnd2(event) {\n if (isOpen && !mouseAndTouchTrackersRef.current.isTouchMove && !targetWithinDownshift(event.target, downshiftElementRefs.map(function(ref) {\n return ref.current;\n }), environment, false)) {\n handleBlur();\n }\n };\n environment.addEventListener(\"mousedown\", onMouseDown);\n environment.addEventListener(\"mouseup\", onMouseUp);\n environment.addEventListener(\"touchstart\", onTouchStart);\n environment.addEventListener(\"touchmove\", onTouchMove);\n environment.addEventListener(\"touchend\", onTouchEnd);\n return function cleanup() {\n environment.removeEventListener(\"mousedown\", onMouseDown);\n environment.removeEventListener(\"mouseup\", onMouseUp);\n environment.removeEventListener(\"touchstart\", onTouchStart);\n environment.removeEventListener(\"touchmove\", onTouchMove);\n environment.removeEventListener(\"touchend\", onTouchEnd);\n };\n }, [isOpen, environment]);\n return mouseAndTouchTrackersRef;\n}\nvar useGetterPropsCalledChecker = function useGetterPropsCalledChecker2() {\n return noop;\n};\nif (true) {\n useGetterPropsCalledChecker = function useGetterPropsCalledChecker3() {\n var isInitialMountRef = (0, import_react7.useRef)(true);\n for (var _len = arguments.length, propKeys = new Array(_len), _key = 0; _key < _len; _key++) {\n propKeys[_key] = arguments[_key];\n }\n var getterPropsCalledRef = (0, import_react7.useRef)(propKeys.reduce(function(acc, propKey) {\n acc[propKey] = {};\n return acc;\n }, {}));\n (0, import_react7.useEffect)(function() {\n Object.keys(getterPropsCalledRef.current).forEach(function(propKey) {\n var propCallInfo = getterPropsCalledRef.current[propKey];\n if (isInitialMountRef.current) {\n if (!Object.keys(propCallInfo).length) {\n console.error(\"downshift: You forgot to call the \" + propKey + \" getter function on your component / element.\");\n return;\n }\n }\n var suppressRefError = propCallInfo.suppressRefError, refKey = propCallInfo.refKey, elementRef = propCallInfo.elementRef;\n if ((!elementRef || !elementRef.current) && !suppressRefError) {\n console.error('downshift: The ref prop \"' + refKey + '\" from ' + propKey + \" was not applied correctly on your element.\");\n }\n });\n isInitialMountRef.current = false;\n });\n var setGetterPropCallInfo = (0, import_react7.useCallback)(function(propKey, suppressRefError, refKey, elementRef) {\n getterPropsCalledRef.current[propKey] = {\n suppressRefError,\n refKey,\n elementRef\n };\n }, []);\n return setGetterPropCallInfo;\n };\n}\nfunction useA11yMessageSetter(getA11yMessage, dependencyArray, _ref2) {\n var isInitialMount = _ref2.isInitialMount, highlightedIndex = _ref2.highlightedIndex, items = _ref2.items, environment = _ref2.environment, rest = _objectWithoutPropertiesLoose3(_ref2, _excluded$33);\n (0, import_react7.useEffect)(function() {\n if (isInitialMount || false) {\n return;\n }\n updateA11yStatus(function() {\n return getA11yMessage(_extends2({\n highlightedIndex,\n highlightedItem: items[highlightedIndex],\n resultCount: items.length\n }, rest));\n }, environment.document);\n }, dependencyArray);\n}\nfunction useScrollIntoView(_ref3) {\n var highlightedIndex = _ref3.highlightedIndex, isOpen = _ref3.isOpen, itemRefs = _ref3.itemRefs, getItemNodeFromIndex = _ref3.getItemNodeFromIndex, menuElement = _ref3.menuElement, scrollIntoViewProp = _ref3.scrollIntoView;\n var shouldScrollRef = (0, import_react7.useRef)(true);\n useIsomorphicLayoutEffect3(function() {\n if (highlightedIndex < 0 || !isOpen || !Object.keys(itemRefs.current).length) {\n return;\n }\n if (shouldScrollRef.current === false) {\n shouldScrollRef.current = true;\n } else {\n scrollIntoViewProp(getItemNodeFromIndex(highlightedIndex), menuElement);\n }\n }, [highlightedIndex]);\n return shouldScrollRef;\n}\nvar useControlPropsValidator = noop;\nif (true) {\n useControlPropsValidator = function useControlPropsValidator2(_ref4) {\n var isInitialMount = _ref4.isInitialMount, props = _ref4.props, state = _ref4.state;\n var prevPropsRef = (0, import_react7.useRef)(props);\n (0, import_react7.useEffect)(function() {\n if (isInitialMount) {\n return;\n }\n validateControlledUnchanged(state, prevPropsRef.current, props);\n prevPropsRef.current = props;\n }, [state, props, isInitialMount]);\n };\n}\nfunction downshiftCommonReducer(state, action, stateChangeTypes2) {\n var type = action.type, props = action.props;\n var changes;\n switch (type) {\n case stateChangeTypes2.ItemMouseMove:\n changes = {\n highlightedIndex: action.index\n };\n break;\n case stateChangeTypes2.MenuMouseLeave:\n changes = {\n highlightedIndex: -1\n };\n break;\n case stateChangeTypes2.ToggleButtonClick:\n case stateChangeTypes2.FunctionToggleMenu:\n changes = {\n isOpen: !state.isOpen,\n highlightedIndex: state.isOpen ? -1 : getHighlightedIndexOnOpen(props, state, 0)\n };\n break;\n case stateChangeTypes2.FunctionOpenMenu:\n changes = {\n isOpen: true,\n highlightedIndex: getHighlightedIndexOnOpen(props, state, 0)\n };\n break;\n case stateChangeTypes2.FunctionCloseMenu:\n changes = {\n isOpen: false\n };\n break;\n case stateChangeTypes2.FunctionSetHighlightedIndex:\n changes = {\n highlightedIndex: action.highlightedIndex\n };\n break;\n case stateChangeTypes2.FunctionSetInputValue:\n changes = {\n inputValue: action.inputValue\n };\n break;\n case stateChangeTypes2.FunctionReset:\n changes = {\n highlightedIndex: getDefaultValue$1(props, \"highlightedIndex\"),\n isOpen: getDefaultValue$1(props, \"isOpen\"),\n selectedItem: getDefaultValue$1(props, \"selectedItem\"),\n inputValue: getDefaultValue$1(props, \"inputValue\")\n };\n break;\n default:\n throw new Error(\"Reducer called without proper action type.\");\n }\n return _extends2({}, state, changes);\n}\nfunction getItemIndexByCharacterKey(_a) {\n var keysSoFar = _a.keysSoFar, highlightedIndex = _a.highlightedIndex, items = _a.items, itemToString2 = _a.itemToString, getItemNodeFromIndex = _a.getItemNodeFromIndex;\n var lowerCasedKeysSoFar = keysSoFar.toLowerCase();\n for (var index7 = 0; index7 < items.length; index7++) {\n var offsetIndex = (index7 + highlightedIndex + 1) % items.length;\n var item = items[offsetIndex];\n if (item !== void 0 && itemToString2(item).toLowerCase().startsWith(lowerCasedKeysSoFar)) {\n var element4 = getItemNodeFromIndex(offsetIndex);\n if (!(element4 === null || element4 === void 0 ? void 0 : element4.hasAttribute(\"disabled\"))) {\n return offsetIndex;\n }\n }\n }\n return highlightedIndex;\n}\nvar propTypes$2 = {\n items: import_prop_types.default.array.isRequired,\n itemToString: import_prop_types.default.func,\n getA11yStatusMessage: import_prop_types.default.func,\n getA11ySelectionMessage: import_prop_types.default.func,\n circularNavigation: import_prop_types.default.bool,\n highlightedIndex: import_prop_types.default.number,\n defaultHighlightedIndex: import_prop_types.default.number,\n initialHighlightedIndex: import_prop_types.default.number,\n isOpen: import_prop_types.default.bool,\n defaultIsOpen: import_prop_types.default.bool,\n initialIsOpen: import_prop_types.default.bool,\n selectedItem: import_prop_types.default.any,\n initialSelectedItem: import_prop_types.default.any,\n defaultSelectedItem: import_prop_types.default.any,\n id: import_prop_types.default.string,\n labelId: import_prop_types.default.string,\n menuId: import_prop_types.default.string,\n getItemId: import_prop_types.default.func,\n toggleButtonId: import_prop_types.default.string,\n stateReducer: import_prop_types.default.func,\n onSelectedItemChange: import_prop_types.default.func,\n onHighlightedIndexChange: import_prop_types.default.func,\n onStateChange: import_prop_types.default.func,\n onIsOpenChange: import_prop_types.default.func,\n environment: import_prop_types.default.shape({\n addEventListener: import_prop_types.default.func,\n removeEventListener: import_prop_types.default.func,\n document: import_prop_types.default.shape({\n getElementById: import_prop_types.default.func,\n activeElement: import_prop_types.default.any,\n body: import_prop_types.default.any\n })\n })\n};\nfunction getA11yStatusMessage(_a) {\n var isOpen = _a.isOpen, resultCount = _a.resultCount, previousResultCount = _a.previousResultCount;\n if (!isOpen) {\n return \"\";\n }\n if (!resultCount) {\n return \"No results are available.\";\n }\n if (resultCount !== previousResultCount) {\n return resultCount + \" result\" + (resultCount === 1 ? \" is\" : \"s are\") + \" available, use up and down arrow keys to navigate. Press Enter or Space Bar keys to select.\";\n }\n return \"\";\n}\nvar defaultProps$2 = __assign(__assign({}, defaultProps$3), { getA11yStatusMessage });\nvar validatePropTypes$2 = noop;\nif (true) {\n validatePropTypes$2 = function(options, caller) {\n import_prop_types.default.checkPropTypes(propTypes$2, options, \"prop\", caller.name);\n };\n}\nvar MenuKeyDownArrowDown = true ? \"__menu_keydown_arrow_down__\" : 0;\nvar MenuKeyDownArrowUp = true ? \"__menu_keydown_arrow_up__\" : 1;\nvar MenuKeyDownEscape = true ? \"__menu_keydown_escape__\" : 2;\nvar MenuKeyDownHome = true ? \"__menu_keydown_home__\" : 3;\nvar MenuKeyDownEnd = true ? \"__menu_keydown_end__\" : 4;\nvar MenuKeyDownEnter = true ? \"__menu_keydown_enter__\" : 5;\nvar MenuKeyDownSpaceButton = true ? \"__menu_keydown_space_button__\" : 6;\nvar MenuKeyDownCharacter = true ? \"__menu_keydown_character__\" : 7;\nvar MenuBlur = true ? \"__menu_blur__\" : 8;\nvar MenuMouseLeave$1 = true ? \"__menu_mouse_leave__\" : 9;\nvar ItemMouseMove$1 = true ? \"__item_mouse_move__\" : 10;\nvar ItemClick$1 = true ? \"__item_click__\" : 11;\nvar ToggleButtonClick$1 = true ? \"__togglebutton_click__\" : 12;\nvar ToggleButtonKeyDownArrowDown = true ? \"__togglebutton_keydown_arrow_down__\" : 13;\nvar ToggleButtonKeyDownArrowUp = true ? \"__togglebutton_keydown_arrow_up__\" : 14;\nvar ToggleButtonKeyDownCharacter = true ? \"__togglebutton_keydown_character__\" : 15;\nvar FunctionToggleMenu$1 = true ? \"__function_toggle_menu__\" : 16;\nvar FunctionOpenMenu$1 = true ? \"__function_open_menu__\" : 17;\nvar FunctionCloseMenu$1 = true ? \"__function_close_menu__\" : 18;\nvar FunctionSetHighlightedIndex$1 = true ? \"__function_set_highlighted_index__\" : 19;\nvar FunctionSelectItem$1 = true ? \"__function_select_item__\" : 20;\nvar FunctionSetInputValue$1 = true ? \"__function_set_input_value__\" : 21;\nvar FunctionReset$2 = true ? \"__function_reset__\" : 22;\nvar stateChangeTypes$2 = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n MenuKeyDownArrowDown,\n MenuKeyDownArrowUp,\n MenuKeyDownEscape,\n MenuKeyDownHome,\n MenuKeyDownEnd,\n MenuKeyDownEnter,\n MenuKeyDownSpaceButton,\n MenuKeyDownCharacter,\n MenuBlur,\n MenuMouseLeave: MenuMouseLeave$1,\n ItemMouseMove: ItemMouseMove$1,\n ItemClick: ItemClick$1,\n ToggleButtonClick: ToggleButtonClick$1,\n ToggleButtonKeyDownArrowDown,\n ToggleButtonKeyDownArrowUp,\n ToggleButtonKeyDownCharacter,\n FunctionToggleMenu: FunctionToggleMenu$1,\n FunctionOpenMenu: FunctionOpenMenu$1,\n FunctionCloseMenu: FunctionCloseMenu$1,\n FunctionSetHighlightedIndex: FunctionSetHighlightedIndex$1,\n FunctionSelectItem: FunctionSelectItem$1,\n FunctionSetInputValue: FunctionSetInputValue$1,\n FunctionReset: FunctionReset$2\n});\nfunction downshiftSelectReducer(state, action) {\n var type = action.type, props = action.props, shiftKey = action.shiftKey;\n var changes;\n switch (type) {\n case ItemClick$1:\n changes = {\n isOpen: getDefaultValue$1(props, \"isOpen\"),\n highlightedIndex: getDefaultValue$1(props, \"highlightedIndex\"),\n selectedItem: props.items[action.index]\n };\n break;\n case ToggleButtonKeyDownCharacter:\n {\n var lowercasedKey = action.key;\n var inputValue = \"\" + state.inputValue + lowercasedKey;\n var itemIndex = getItemIndexByCharacterKey({\n keysSoFar: inputValue,\n highlightedIndex: state.selectedItem ? props.items.indexOf(state.selectedItem) : -1,\n items: props.items,\n itemToString: props.itemToString,\n getItemNodeFromIndex: action.getItemNodeFromIndex\n });\n changes = _extends2({\n inputValue\n }, itemIndex >= 0 && {\n selectedItem: props.items[itemIndex]\n });\n }\n break;\n case ToggleButtonKeyDownArrowDown:\n changes = {\n highlightedIndex: getHighlightedIndexOnOpen(props, state, 1, action.getItemNodeFromIndex),\n isOpen: true\n };\n break;\n case ToggleButtonKeyDownArrowUp:\n changes = {\n highlightedIndex: getHighlightedIndexOnOpen(props, state, -1, action.getItemNodeFromIndex),\n isOpen: true\n };\n break;\n case MenuKeyDownEnter:\n case MenuKeyDownSpaceButton:\n changes = _extends2({\n isOpen: getDefaultValue$1(props, \"isOpen\"),\n highlightedIndex: getDefaultValue$1(props, \"highlightedIndex\")\n }, state.highlightedIndex >= 0 && {\n selectedItem: props.items[state.highlightedIndex]\n });\n break;\n case MenuKeyDownHome:\n changes = {\n highlightedIndex: getNextNonDisabledIndex(1, 0, props.items.length, action.getItemNodeFromIndex, false)\n };\n break;\n case MenuKeyDownEnd:\n changes = {\n highlightedIndex: getNextNonDisabledIndex(-1, props.items.length - 1, props.items.length, action.getItemNodeFromIndex, false)\n };\n break;\n case MenuKeyDownEscape:\n changes = {\n isOpen: false,\n highlightedIndex: -1\n };\n break;\n case MenuBlur:\n changes = {\n isOpen: false,\n highlightedIndex: -1\n };\n break;\n case MenuKeyDownCharacter:\n {\n var _lowercasedKey = action.key;\n var _inputValue = \"\" + state.inputValue + _lowercasedKey;\n var highlightedIndex = getItemIndexByCharacterKey({\n keysSoFar: _inputValue,\n highlightedIndex: state.highlightedIndex,\n items: props.items,\n itemToString: props.itemToString,\n getItemNodeFromIndex: action.getItemNodeFromIndex\n });\n changes = _extends2({\n inputValue: _inputValue\n }, highlightedIndex >= 0 && {\n highlightedIndex\n });\n }\n break;\n case MenuKeyDownArrowDown:\n changes = {\n highlightedIndex: getNextWrappingIndex(shiftKey ? 5 : 1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n };\n break;\n case MenuKeyDownArrowUp:\n changes = {\n highlightedIndex: getNextWrappingIndex(shiftKey ? -5 : -1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n };\n break;\n case FunctionSelectItem$1:\n changes = {\n selectedItem: action.selectedItem\n };\n break;\n default:\n return downshiftCommonReducer(state, action, stateChangeTypes$2);\n }\n return _extends2({}, state, changes);\n}\nvar _excluded$23 = [\"onMouseLeave\", \"refKey\", \"onKeyDown\", \"onBlur\", \"ref\"];\nvar _excluded2$22 = [\"onClick\", \"onKeyDown\", \"refKey\", \"ref\"];\nvar _excluded3$1 = [\"item\", \"index\", \"onMouseMove\", \"onClick\", \"refKey\", \"ref\"];\nuseSelect.stateChangeTypes = stateChangeTypes$2;\nfunction useSelect(userProps) {\n if (userProps === void 0) {\n userProps = {};\n }\n validatePropTypes$2(userProps, useSelect);\n var props = _extends2({}, defaultProps$2, userProps);\n var items = props.items, scrollIntoView3 = props.scrollIntoView, environment = props.environment, initialIsOpen = props.initialIsOpen, defaultIsOpen = props.defaultIsOpen, itemToString2 = props.itemToString, getA11ySelectionMessage2 = props.getA11ySelectionMessage, getA11yStatusMessage2 = props.getA11yStatusMessage;\n var initialState3 = getInitialState$2(props);\n var _useControlledReducer = useControlledReducer$1(downshiftSelectReducer, initialState3, props), state = _useControlledReducer[0], dispatch = _useControlledReducer[1];\n var isOpen = state.isOpen, highlightedIndex = state.highlightedIndex, selectedItem = state.selectedItem, inputValue = state.inputValue;\n var toggleButtonRef = (0, import_react7.useRef)(null);\n var menuRef = (0, import_react7.useRef)(null);\n var itemRefs = (0, import_react7.useRef)({});\n var shouldBlurRef = (0, import_react7.useRef)(true);\n var clearTimeoutRef = (0, import_react7.useRef)(null);\n var elementIds = useElementIds(props);\n var previousResultCountRef = (0, import_react7.useRef)();\n var isInitialMountRef = (0, import_react7.useRef)(true);\n var latest = useLatestRef({\n state,\n props\n });\n var getItemNodeFromIndex = (0, import_react7.useCallback)(function(index7) {\n return itemRefs.current[elementIds.getItemId(index7)];\n }, [elementIds]);\n useA11yMessageSetter(getA11yStatusMessage2, [isOpen, highlightedIndex, inputValue, items], _extends2({\n isInitialMount: isInitialMountRef.current,\n previousResultCount: previousResultCountRef.current,\n items,\n environment,\n itemToString: itemToString2\n }, state));\n useA11yMessageSetter(getA11ySelectionMessage2, [selectedItem], _extends2({\n isInitialMount: isInitialMountRef.current,\n previousResultCount: previousResultCountRef.current,\n items,\n environment,\n itemToString: itemToString2\n }, state));\n var shouldScrollRef = useScrollIntoView({\n menuElement: menuRef.current,\n highlightedIndex,\n isOpen,\n itemRefs,\n scrollIntoView: scrollIntoView3,\n getItemNodeFromIndex\n });\n (0, import_react7.useEffect)(function() {\n clearTimeoutRef.current = debounce2(function(outerDispatch) {\n outerDispatch({\n type: FunctionSetInputValue$1,\n inputValue: \"\"\n });\n }, 500);\n return function() {\n clearTimeoutRef.current.cancel();\n };\n }, []);\n (0, import_react7.useEffect)(function() {\n if (!inputValue) {\n return;\n }\n clearTimeoutRef.current(dispatch);\n }, [dispatch, inputValue]);\n useControlPropsValidator({\n isInitialMount: isInitialMountRef.current,\n props,\n state\n });\n (0, import_react7.useEffect)(function() {\n if (isInitialMountRef.current) {\n if ((initialIsOpen || defaultIsOpen || isOpen) && menuRef.current) {\n menuRef.current.focus();\n }\n return;\n }\n if (isOpen) {\n if (menuRef.current) {\n menuRef.current.focus();\n }\n return;\n }\n if (environment.document.activeElement === menuRef.current) {\n if (toggleButtonRef.current) {\n shouldBlurRef.current = false;\n toggleButtonRef.current.focus();\n }\n }\n }, [isOpen]);\n (0, import_react7.useEffect)(function() {\n if (isInitialMountRef.current) {\n return;\n }\n previousResultCountRef.current = items.length;\n });\n var mouseAndTouchTrackersRef = useMouseAndTouchTracker(isOpen, [menuRef, toggleButtonRef], environment, function() {\n dispatch({\n type: MenuBlur\n });\n });\n var setGetterPropCallInfo = useGetterPropsCalledChecker(\"getMenuProps\", \"getToggleButtonProps\");\n (0, import_react7.useEffect)(function() {\n isInitialMountRef.current = false;\n }, []);\n (0, import_react7.useEffect)(function() {\n if (!isOpen) {\n itemRefs.current = {};\n }\n }, [isOpen]);\n var toggleButtonKeyDownHandlers = (0, import_react7.useMemo)(function() {\n return {\n ArrowDown: function ArrowDown(event) {\n event.preventDefault();\n dispatch({\n type: ToggleButtonKeyDownArrowDown,\n getItemNodeFromIndex,\n shiftKey: event.shiftKey\n });\n },\n ArrowUp: function ArrowUp(event) {\n event.preventDefault();\n dispatch({\n type: ToggleButtonKeyDownArrowUp,\n getItemNodeFromIndex,\n shiftKey: event.shiftKey\n });\n }\n };\n }, [dispatch, getItemNodeFromIndex]);\n var menuKeyDownHandlers = (0, import_react7.useMemo)(function() {\n return {\n ArrowDown: function ArrowDown(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownArrowDown,\n getItemNodeFromIndex,\n shiftKey: event.shiftKey\n });\n },\n ArrowUp: function ArrowUp(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownArrowUp,\n getItemNodeFromIndex,\n shiftKey: event.shiftKey\n });\n },\n Home: function Home(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownHome,\n getItemNodeFromIndex\n });\n },\n End: function End(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownEnd,\n getItemNodeFromIndex\n });\n },\n Escape: function Escape() {\n dispatch({\n type: MenuKeyDownEscape\n });\n },\n Enter: function Enter(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownEnter\n });\n },\n \" \": function _3(event) {\n event.preventDefault();\n dispatch({\n type: MenuKeyDownSpaceButton\n });\n }\n };\n }, [dispatch, getItemNodeFromIndex]);\n var toggleMenu = (0, import_react7.useCallback)(function() {\n dispatch({\n type: FunctionToggleMenu$1\n });\n }, [dispatch]);\n var closeMenu = (0, import_react7.useCallback)(function() {\n dispatch({\n type: FunctionCloseMenu$1\n });\n }, [dispatch]);\n var openMenu = (0, import_react7.useCallback)(function() {\n dispatch({\n type: FunctionOpenMenu$1\n });\n }, [dispatch]);\n var setHighlightedIndex = (0, import_react7.useCallback)(function(newHighlightedIndex) {\n dispatch({\n type: FunctionSetHighlightedIndex$1,\n highlightedIndex: newHighlightedIndex\n });\n }, [dispatch]);\n var selectItem = (0, import_react7.useCallback)(function(newSelectedItem) {\n dispatch({\n type: FunctionSelectItem$1,\n selectedItem: newSelectedItem\n });\n }, [dispatch]);\n var reset = (0, import_react7.useCallback)(function() {\n dispatch({\n type: FunctionReset$2\n });\n }, [dispatch]);\n var setInputValue = (0, import_react7.useCallback)(function(newInputValue) {\n dispatch({\n type: FunctionSetInputValue$1,\n inputValue: newInputValue\n });\n }, [dispatch]);\n var getLabelProps = (0, import_react7.useCallback)(function(labelProps) {\n return _extends2({\n id: elementIds.labelId,\n htmlFor: elementIds.toggleButtonId\n }, labelProps);\n }, [elementIds]);\n var getMenuProps = (0, import_react7.useCallback)(function(_temp, _temp2) {\n var _extends22;\n var _ref = _temp === void 0 ? {} : _temp, onMouseLeave = _ref.onMouseLeave, _ref$refKey = _ref.refKey, refKey = _ref$refKey === void 0 ? \"ref\" : _ref$refKey, onKeyDown = _ref.onKeyDown, onBlur = _ref.onBlur, ref = _ref.ref, rest = _objectWithoutPropertiesLoose3(_ref, _excluded$23);\n var _ref2 = _temp2 === void 0 ? {} : _temp2, _ref2$suppressRefErro = _ref2.suppressRefError, suppressRefError = _ref2$suppressRefErro === void 0 ? false : _ref2$suppressRefErro;\n var latestState = latest.current.state;\n var menuHandleKeyDown = function menuHandleKeyDown2(event) {\n var key = normalizeArrowKey(event);\n if (key && menuKeyDownHandlers[key]) {\n menuKeyDownHandlers[key](event);\n } else if (isAcceptedCharacterKey(key)) {\n dispatch({\n type: MenuKeyDownCharacter,\n key,\n getItemNodeFromIndex\n });\n }\n };\n var menuHandleBlur = function menuHandleBlur2() {\n if (shouldBlurRef.current === false) {\n shouldBlurRef.current = true;\n return;\n }\n var shouldBlur = !mouseAndTouchTrackersRef.current.isMouseDown;\n if (shouldBlur) {\n dispatch({\n type: MenuBlur\n });\n }\n };\n var menuHandleMouseLeave = function menuHandleMouseLeave2() {\n dispatch({\n type: MenuMouseLeave$1\n });\n };\n setGetterPropCallInfo(\"getMenuProps\", suppressRefError, refKey, menuRef);\n return _extends2((_extends22 = {}, _extends22[refKey] = handleRefs(ref, function(menuNode) {\n menuRef.current = menuNode;\n }), _extends22.id = elementIds.menuId, _extends22.role = \"listbox\", _extends22[\"aria-labelledby\"] = elementIds.labelId, _extends22.tabIndex = -1, _extends22), latestState.isOpen && latestState.highlightedIndex > -1 && {\n \"aria-activedescendant\": elementIds.getItemId(latestState.highlightedIndex)\n }, {\n onMouseLeave: callAllEventHandlers(onMouseLeave, menuHandleMouseLeave),\n onKeyDown: callAllEventHandlers(onKeyDown, menuHandleKeyDown),\n onBlur: callAllEventHandlers(onBlur, menuHandleBlur)\n }, rest);\n }, [dispatch, latest, menuKeyDownHandlers, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds, getItemNodeFromIndex]);\n var getToggleButtonProps = (0, import_react7.useCallback)(function(_temp3, _temp4) {\n var _extends32;\n var _ref3 = _temp3 === void 0 ? {} : _temp3, onClick = _ref3.onClick, onKeyDown = _ref3.onKeyDown, _ref3$refKey = _ref3.refKey, refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey, ref = _ref3.ref, rest = _objectWithoutPropertiesLoose3(_ref3, _excluded2$22);\n var _ref4 = _temp4 === void 0 ? {} : _temp4, _ref4$suppressRefErro = _ref4.suppressRefError, suppressRefError = _ref4$suppressRefErro === void 0 ? false : _ref4$suppressRefErro;\n var toggleButtonHandleClick = function toggleButtonHandleClick2() {\n dispatch({\n type: ToggleButtonClick$1\n });\n };\n var toggleButtonHandleKeyDown = function toggleButtonHandleKeyDown2(event) {\n var key = normalizeArrowKey(event);\n if (key && toggleButtonKeyDownHandlers[key]) {\n toggleButtonKeyDownHandlers[key](event);\n } else if (isAcceptedCharacterKey(key)) {\n dispatch({\n type: ToggleButtonKeyDownCharacter,\n key,\n getItemNodeFromIndex\n });\n }\n };\n var toggleProps = _extends2((_extends32 = {}, _extends32[refKey] = handleRefs(ref, function(toggleButtonNode) {\n toggleButtonRef.current = toggleButtonNode;\n }), _extends32.id = elementIds.toggleButtonId, _extends32[\"aria-haspopup\"] = \"listbox\", _extends32[\"aria-expanded\"] = latest.current.state.isOpen, _extends32[\"aria-labelledby\"] = elementIds.labelId + \" \" + elementIds.toggleButtonId, _extends32), rest);\n if (!rest.disabled) {\n toggleProps.onClick = callAllEventHandlers(onClick, toggleButtonHandleClick);\n toggleProps.onKeyDown = callAllEventHandlers(onKeyDown, toggleButtonHandleKeyDown);\n }\n setGetterPropCallInfo(\"getToggleButtonProps\", suppressRefError, refKey, toggleButtonRef);\n return toggleProps;\n }, [dispatch, latest, toggleButtonKeyDownHandlers, setGetterPropCallInfo, elementIds, getItemNodeFromIndex]);\n var getItemProps = (0, import_react7.useCallback)(function(_temp5) {\n var _extends42;\n var _ref5 = _temp5 === void 0 ? {} : _temp5, item = _ref5.item, index7 = _ref5.index, onMouseMove = _ref5.onMouseMove, onClick = _ref5.onClick, _ref5$refKey = _ref5.refKey, refKey = _ref5$refKey === void 0 ? \"ref\" : _ref5$refKey, ref = _ref5.ref, rest = _objectWithoutPropertiesLoose3(_ref5, _excluded3$1);\n var _latest$current = latest.current, latestState = _latest$current.state, latestProps = _latest$current.props;\n var itemHandleMouseMove = function itemHandleMouseMove2() {\n if (index7 === latestState.highlightedIndex) {\n return;\n }\n shouldScrollRef.current = false;\n dispatch({\n type: ItemMouseMove$1,\n index: index7\n });\n };\n var itemHandleClick = function itemHandleClick2() {\n dispatch({\n type: ItemClick$1,\n index: index7\n });\n };\n var itemIndex = getItemIndex(index7, item, latestProps.items);\n if (itemIndex < 0) {\n throw new Error(\"Pass either item or item index in getItemProps!\");\n }\n var itemProps = _extends2((_extends42 = {\n role: \"option\",\n \"aria-selected\": \"\" + (itemIndex === latestState.highlightedIndex),\n id: elementIds.getItemId(itemIndex)\n }, _extends42[refKey] = handleRefs(ref, function(itemNode) {\n if (itemNode) {\n itemRefs.current[elementIds.getItemId(itemIndex)] = itemNode;\n }\n }), _extends42), rest);\n if (!rest.disabled) {\n itemProps.onMouseMove = callAllEventHandlers(onMouseMove, itemHandleMouseMove);\n itemProps.onClick = callAllEventHandlers(onClick, itemHandleClick);\n }\n return itemProps;\n }, [dispatch, latest, shouldScrollRef, elementIds]);\n return {\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getItemProps,\n toggleMenu,\n openMenu,\n closeMenu,\n setHighlightedIndex,\n selectItem,\n reset,\n setInputValue,\n highlightedIndex,\n isOpen,\n selectedItem,\n inputValue\n };\n}\nvar InputKeyDownArrowDown = true ? \"__input_keydown_arrow_down__\" : 0;\nvar InputKeyDownArrowUp = true ? \"__input_keydown_arrow_up__\" : 1;\nvar InputKeyDownEscape = true ? \"__input_keydown_escape__\" : 2;\nvar InputKeyDownHome = true ? \"__input_keydown_home__\" : 3;\nvar InputKeyDownEnd = true ? \"__input_keydown_end__\" : 4;\nvar InputKeyDownEnter = true ? \"__input_keydown_enter__\" : 5;\nvar InputChange = true ? \"__input_change__\" : 6;\nvar InputBlur = true ? \"__input_blur__\" : 7;\nvar MenuMouseLeave = true ? \"__menu_mouse_leave__\" : 8;\nvar ItemMouseMove = true ? \"__item_mouse_move__\" : 9;\nvar ItemClick = true ? \"__item_click__\" : 10;\nvar ToggleButtonClick = true ? \"__togglebutton_click__\" : 11;\nvar FunctionToggleMenu = true ? \"__function_toggle_menu__\" : 12;\nvar FunctionOpenMenu = true ? \"__function_open_menu__\" : 13;\nvar FunctionCloseMenu = true ? \"__function_close_menu__\" : 14;\nvar FunctionSetHighlightedIndex = true ? \"__function_set_highlighted_index__\" : 15;\nvar FunctionSelectItem = true ? \"__function_select_item__\" : 16;\nvar FunctionSetInputValue = true ? \"__function_set_input_value__\" : 17;\nvar FunctionReset$1 = true ? \"__function_reset__\" : 18;\nvar ControlledPropUpdatedSelectedItem = true ? \"__controlled_prop_updated_selected_item__\" : 19;\nvar stateChangeTypes$1 = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n InputKeyDownArrowDown,\n InputKeyDownArrowUp,\n InputKeyDownEscape,\n InputKeyDownHome,\n InputKeyDownEnd,\n InputKeyDownEnter,\n InputChange,\n InputBlur,\n MenuMouseLeave,\n ItemMouseMove,\n ItemClick,\n ToggleButtonClick,\n FunctionToggleMenu,\n FunctionOpenMenu,\n FunctionCloseMenu,\n FunctionSetHighlightedIndex,\n FunctionSelectItem,\n FunctionSetInputValue,\n FunctionReset: FunctionReset$1,\n ControlledPropUpdatedSelectedItem\n});\nfunction getInitialState$1(props) {\n var initialState3 = getInitialState$2(props);\n var selectedItem = initialState3.selectedItem;\n var inputValue = initialState3.inputValue;\n if (inputValue === \"\" && selectedItem && props.defaultInputValue === void 0 && props.initialInputValue === void 0 && props.inputValue === void 0) {\n inputValue = props.itemToString(selectedItem);\n }\n return _extends2({}, initialState3, {\n inputValue\n });\n}\nvar propTypes$1 = {\n items: import_prop_types.default.array.isRequired,\n itemToString: import_prop_types.default.func,\n getA11yStatusMessage: import_prop_types.default.func,\n getA11ySelectionMessage: import_prop_types.default.func,\n circularNavigation: import_prop_types.default.bool,\n highlightedIndex: import_prop_types.default.number,\n defaultHighlightedIndex: import_prop_types.default.number,\n initialHighlightedIndex: import_prop_types.default.number,\n isOpen: import_prop_types.default.bool,\n defaultIsOpen: import_prop_types.default.bool,\n initialIsOpen: import_prop_types.default.bool,\n selectedItem: import_prop_types.default.any,\n initialSelectedItem: import_prop_types.default.any,\n defaultSelectedItem: import_prop_types.default.any,\n inputValue: import_prop_types.default.string,\n defaultInputValue: import_prop_types.default.string,\n initialInputValue: import_prop_types.default.string,\n id: import_prop_types.default.string,\n labelId: import_prop_types.default.string,\n menuId: import_prop_types.default.string,\n getItemId: import_prop_types.default.func,\n inputId: import_prop_types.default.string,\n toggleButtonId: import_prop_types.default.string,\n stateReducer: import_prop_types.default.func,\n onSelectedItemChange: import_prop_types.default.func,\n onHighlightedIndexChange: import_prop_types.default.func,\n onStateChange: import_prop_types.default.func,\n onIsOpenChange: import_prop_types.default.func,\n onInputValueChange: import_prop_types.default.func,\n environment: import_prop_types.default.shape({\n addEventListener: import_prop_types.default.func,\n removeEventListener: import_prop_types.default.func,\n document: import_prop_types.default.shape({\n getElementById: import_prop_types.default.func,\n activeElement: import_prop_types.default.any,\n body: import_prop_types.default.any\n })\n })\n};\nfunction useControlledReducer(reducer, initialState3, props) {\n var previousSelectedItemRef = (0, import_react7.useRef)();\n var _useEnhancedReducer = useEnhancedReducer(reducer, initialState3, props), state = _useEnhancedReducer[0], dispatch = _useEnhancedReducer[1];\n (0, import_react7.useEffect)(function() {\n if (isControlledProp(props, \"selectedItem\")) {\n if (previousSelectedItemRef.current !== props.selectedItem) {\n dispatch({\n type: ControlledPropUpdatedSelectedItem,\n inputValue: props.itemToString(props.selectedItem)\n });\n }\n previousSelectedItemRef.current = state.selectedItem === previousSelectedItemRef.current ? props.selectedItem : state.selectedItem;\n }\n });\n return [getState(state, props), dispatch];\n}\nvar validatePropTypes$1 = noop;\nif (true) {\n validatePropTypes$1 = function validatePropTypes2(options, caller) {\n import_prop_types.default.checkPropTypes(propTypes$1, options, \"prop\", caller.name);\n };\n}\nvar defaultProps$1 = _extends2({}, defaultProps$3, {\n getA11yStatusMessage: getA11yStatusMessage$1,\n circularNavigation: true\n});\nfunction downshiftUseComboboxReducer(state, action) {\n var type = action.type, props = action.props, shiftKey = action.shiftKey;\n var changes;\n switch (type) {\n case ItemClick:\n changes = {\n isOpen: getDefaultValue$1(props, \"isOpen\"),\n highlightedIndex: getDefaultValue$1(props, \"highlightedIndex\"),\n selectedItem: props.items[action.index],\n inputValue: props.itemToString(props.items[action.index])\n };\n break;\n case InputKeyDownArrowDown:\n if (state.isOpen) {\n changes = {\n highlightedIndex: getNextWrappingIndex(shiftKey ? 5 : 1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n };\n } else {\n changes = {\n highlightedIndex: getHighlightedIndexOnOpen(props, state, 1, action.getItemNodeFromIndex),\n isOpen: props.items.length >= 0\n };\n }\n break;\n case InputKeyDownArrowUp:\n if (state.isOpen) {\n changes = {\n highlightedIndex: getNextWrappingIndex(shiftKey ? -5 : -1, state.highlightedIndex, props.items.length, action.getItemNodeFromIndex, props.circularNavigation)\n };\n } else {\n changes = {\n highlightedIndex: getHighlightedIndexOnOpen(props, state, -1, action.getItemNodeFromIndex),\n isOpen: props.items.length >= 0\n };\n }\n break;\n case InputKeyDownEnter:\n changes = _extends2({}, state.isOpen && state.highlightedIndex >= 0 && {\n selectedItem: props.items[state.highlightedIndex],\n isOpen: getDefaultValue$1(props, \"isOpen\"),\n highlightedIndex: getDefaultValue$1(props, \"highlightedIndex\"),\n inputValue: props.itemToString(props.items[state.highlightedIndex])\n });\n break;\n case InputKeyDownEscape:\n changes = _extends2({\n isOpen: false,\n highlightedIndex: -1\n }, !state.isOpen && {\n selectedItem: null,\n inputValue: \"\"\n });\n break;\n case InputKeyDownHome:\n changes = {\n highlightedIndex: getNextNonDisabledIndex(1, 0, props.items.length, action.getItemNodeFromIndex, false)\n };\n break;\n case InputKeyDownEnd:\n changes = {\n highlightedIndex: getNextNonDisabledIndex(-1, props.items.length - 1, props.items.length, action.getItemNodeFromIndex, false)\n };\n break;\n case InputBlur:\n changes = _extends2({\n isOpen: false,\n highlightedIndex: -1\n }, state.highlightedIndex >= 0 && action.selectItem && {\n selectedItem: props.items[state.highlightedIndex],\n inputValue: props.itemToString(props.items[state.highlightedIndex])\n });\n break;\n case InputChange:\n changes = {\n isOpen: true,\n highlightedIndex: getDefaultValue$1(props, \"highlightedIndex\"),\n inputValue: action.inputValue\n };\n break;\n case FunctionSelectItem:\n changes = {\n selectedItem: action.selectedItem,\n inputValue: props.itemToString(action.selectedItem)\n };\n break;\n case ControlledPropUpdatedSelectedItem:\n changes = {\n inputValue: action.inputValue\n };\n break;\n default:\n return downshiftCommonReducer(state, action, stateChangeTypes$1);\n }\n return _extends2({}, state, changes);\n}\nvar _excluded$13 = [\"onMouseLeave\", \"refKey\", \"ref\"];\nvar _excluded2$12 = [\"item\", \"index\", \"refKey\", \"ref\", \"onMouseMove\", \"onClick\", \"onPress\"];\nvar _excluded32 = [\"onClick\", \"onPress\", \"refKey\", \"ref\"];\nvar _excluded4 = [\"onKeyDown\", \"onChange\", \"onInput\", \"onBlur\", \"onChangeText\", \"refKey\", \"ref\"];\nvar _excluded5 = [\"refKey\", \"ref\"];\nuseCombobox.stateChangeTypes = stateChangeTypes$1;\nfunction useCombobox(userProps) {\n if (userProps === void 0) {\n userProps = {};\n }\n validatePropTypes$1(userProps, useCombobox);\n var props = _extends2({}, defaultProps$1, userProps);\n var initialIsOpen = props.initialIsOpen, defaultIsOpen = props.defaultIsOpen, items = props.items, scrollIntoView3 = props.scrollIntoView, environment = props.environment, getA11yStatusMessage2 = props.getA11yStatusMessage, getA11ySelectionMessage2 = props.getA11ySelectionMessage, itemToString2 = props.itemToString;\n var initialState3 = getInitialState$1(props);\n var _useControlledReducer = useControlledReducer(downshiftUseComboboxReducer, initialState3, props), state = _useControlledReducer[0], dispatch = _useControlledReducer[1];\n var isOpen = state.isOpen, highlightedIndex = state.highlightedIndex, selectedItem = state.selectedItem, inputValue = state.inputValue;\n var menuRef = (0, import_react7.useRef)(null);\n var itemRefs = (0, import_react7.useRef)({});\n var inputRef = (0, import_react7.useRef)(null);\n var toggleButtonRef = (0, import_react7.useRef)(null);\n var comboboxRef = (0, import_react7.useRef)(null);\n var isInitialMountRef = (0, import_react7.useRef)(true);\n var elementIds = useElementIds(props);\n var previousResultCountRef = (0, import_react7.useRef)();\n var latest = useLatestRef({\n state,\n props\n });\n var getItemNodeFromIndex = (0, import_react7.useCallback)(function(index7) {\n return itemRefs.current[elementIds.getItemId(index7)];\n }, [elementIds]);\n useA11yMessageSetter(getA11yStatusMessage2, [isOpen, highlightedIndex, inputValue, items], _extends2({\n isInitialMount: isInitialMountRef.current,\n previousResultCount: previousResultCountRef.current,\n items,\n environment,\n itemToString: itemToString2\n }, state));\n useA11yMessageSetter(getA11ySelectionMessage2, [selectedItem], _extends2({\n isInitialMount: isInitialMountRef.current,\n previousResultCount: previousResultCountRef.current,\n items,\n environment,\n itemToString: itemToString2\n }, state));\n var shouldScrollRef = useScrollIntoView({\n menuElement: menuRef.current,\n highlightedIndex,\n isOpen,\n itemRefs,\n scrollIntoView: scrollIntoView3,\n getItemNodeFromIndex\n });\n useControlPropsValidator({\n isInitialMount: isInitialMountRef.current,\n props,\n state\n });\n (0, import_react7.useEffect)(function() {\n var focusOnOpen = initialIsOpen || defaultIsOpen || isOpen;\n if (focusOnOpen && inputRef.current) {\n inputRef.current.focus();\n }\n }, []);\n (0, import_react7.useEffect)(function() {\n if (isInitialMountRef.current) {\n return;\n }\n previousResultCountRef.current = items.length;\n });\n var mouseAndTouchTrackersRef = useMouseAndTouchTracker(isOpen, [comboboxRef, menuRef, toggleButtonRef], environment, function() {\n dispatch({\n type: InputBlur,\n selectItem: false\n });\n });\n var setGetterPropCallInfo = useGetterPropsCalledChecker(\"getInputProps\", \"getComboboxProps\", \"getMenuProps\");\n (0, import_react7.useEffect)(function() {\n isInitialMountRef.current = false;\n }, []);\n (0, import_react7.useEffect)(function() {\n if (!isOpen) {\n itemRefs.current = {};\n }\n }, [isOpen]);\n var inputKeyDownHandlers = (0, import_react7.useMemo)(function() {\n return {\n ArrowDown: function ArrowDown(event) {\n event.preventDefault();\n dispatch({\n type: InputKeyDownArrowDown,\n shiftKey: event.shiftKey,\n getItemNodeFromIndex\n });\n },\n ArrowUp: function ArrowUp(event) {\n event.preventDefault();\n dispatch({\n type: InputKeyDownArrowUp,\n shiftKey: event.shiftKey,\n getItemNodeFromIndex\n });\n },\n Home: function Home(event) {\n if (!latest.current.state.isOpen) {\n return;\n }\n event.preventDefault();\n dispatch({\n type: InputKeyDownHome,\n getItemNodeFromIndex\n });\n },\n End: function End(event) {\n if (!latest.current.state.isOpen) {\n return;\n }\n event.preventDefault();\n dispatch({\n type: InputKeyDownEnd,\n getItemNodeFromIndex\n });\n },\n Escape: function Escape() {\n var latestState = latest.current.state;\n if (latestState.isOpen || latestState.inputValue || latestState.selectedItem || latestState.highlightedIndex > -1) {\n dispatch({\n type: InputKeyDownEscape\n });\n }\n },\n Enter: function Enter(event) {\n var latestState = latest.current.state;\n if (!latestState.isOpen || latestState.highlightedIndex < 0 || event.which === 229) {\n return;\n }\n event.preventDefault();\n dispatch({\n type: InputKeyDownEnter,\n getItemNodeFromIndex\n });\n }\n };\n }, [dispatch, latest, getItemNodeFromIndex]);\n var getLabelProps = (0, import_react7.useCallback)(function(labelProps) {\n return _extends2({\n id: elementIds.labelId,\n htmlFor: elementIds.inputId\n }, labelProps);\n }, [elementIds]);\n var getMenuProps = (0, import_react7.useCallback)(function(_temp, _temp2) {\n var _extends22;\n var _ref = _temp === void 0 ? {} : _temp, onMouseLeave = _ref.onMouseLeave, _ref$refKey = _ref.refKey, refKey = _ref$refKey === void 0 ? \"ref\" : _ref$refKey, ref = _ref.ref, rest = _objectWithoutPropertiesLoose3(_ref, _excluded$13);\n var _ref2 = _temp2 === void 0 ? {} : _temp2, _ref2$suppressRefErro = _ref2.suppressRefError, suppressRefError = _ref2$suppressRefErro === void 0 ? false : _ref2$suppressRefErro;\n setGetterPropCallInfo(\"getMenuProps\", suppressRefError, refKey, menuRef);\n return _extends2((_extends22 = {}, _extends22[refKey] = handleRefs(ref, function(menuNode) {\n menuRef.current = menuNode;\n }), _extends22.id = elementIds.menuId, _extends22.role = \"listbox\", _extends22[\"aria-labelledby\"] = elementIds.labelId, _extends22.onMouseLeave = callAllEventHandlers(onMouseLeave, function() {\n dispatch({\n type: MenuMouseLeave\n });\n }), _extends22), rest);\n }, [dispatch, setGetterPropCallInfo, elementIds]);\n var getItemProps = (0, import_react7.useCallback)(function(_temp3) {\n var _extends32, _ref4;\n var _ref3 = _temp3 === void 0 ? {} : _temp3, item = _ref3.item, index7 = _ref3.index, _ref3$refKey = _ref3.refKey, refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey, ref = _ref3.ref, onMouseMove = _ref3.onMouseMove, onClick = _ref3.onClick;\n _ref3.onPress;\n var rest = _objectWithoutPropertiesLoose3(_ref3, _excluded2$12);\n var _latest$current = latest.current, latestProps = _latest$current.props, latestState = _latest$current.state;\n var itemIndex = getItemIndex(index7, item, latestProps.items);\n if (itemIndex < 0) {\n throw new Error(\"Pass either item or item index in getItemProps!\");\n }\n var onSelectKey = \"onClick\";\n var customClickHandler = onClick;\n var itemHandleMouseMove = function itemHandleMouseMove2() {\n if (index7 === latestState.highlightedIndex) {\n return;\n }\n shouldScrollRef.current = false;\n dispatch({\n type: ItemMouseMove,\n index: index7\n });\n };\n var itemHandleClick = function itemHandleClick2() {\n dispatch({\n type: ItemClick,\n index: index7\n });\n if (inputRef.current) {\n inputRef.current.focus();\n }\n };\n return _extends2((_extends32 = {}, _extends32[refKey] = handleRefs(ref, function(itemNode) {\n if (itemNode) {\n itemRefs.current[elementIds.getItemId(itemIndex)] = itemNode;\n }\n }), _extends32.role = \"option\", _extends32[\"aria-selected\"] = \"\" + (itemIndex === latestState.highlightedIndex), _extends32.id = elementIds.getItemId(itemIndex), _extends32), !rest.disabled && (_ref4 = {\n onMouseMove: callAllEventHandlers(onMouseMove, itemHandleMouseMove)\n }, _ref4[onSelectKey] = callAllEventHandlers(customClickHandler, itemHandleClick), _ref4), rest);\n }, [dispatch, latest, shouldScrollRef, elementIds]);\n var getToggleButtonProps = (0, import_react7.useCallback)(function(_temp4) {\n var _extends42;\n var _ref5 = _temp4 === void 0 ? {} : _temp4, onClick = _ref5.onClick;\n _ref5.onPress;\n var _ref5$refKey = _ref5.refKey, refKey = _ref5$refKey === void 0 ? \"ref\" : _ref5$refKey, ref = _ref5.ref, rest = _objectWithoutPropertiesLoose3(_ref5, _excluded32);\n var toggleButtonHandleClick = function toggleButtonHandleClick2() {\n dispatch({\n type: ToggleButtonClick\n });\n if (!latest.current.state.isOpen && inputRef.current) {\n inputRef.current.focus();\n }\n };\n return _extends2((_extends42 = {}, _extends42[refKey] = handleRefs(ref, function(toggleButtonNode) {\n toggleButtonRef.current = toggleButtonNode;\n }), _extends42.id = elementIds.toggleButtonId, _extends42.tabIndex = -1, _extends42), !rest.disabled && _extends2({}, {\n onClick: callAllEventHandlers(onClick, toggleButtonHandleClick)\n }), rest);\n }, [dispatch, latest, elementIds]);\n var getInputProps = (0, import_react7.useCallback)(function(_temp5, _temp6) {\n var _extends52;\n var _ref6 = _temp5 === void 0 ? {} : _temp5, onKeyDown = _ref6.onKeyDown, onChange = _ref6.onChange, onInput = _ref6.onInput, onBlur = _ref6.onBlur;\n _ref6.onChangeText;\n var _ref6$refKey = _ref6.refKey, refKey = _ref6$refKey === void 0 ? \"ref\" : _ref6$refKey, ref = _ref6.ref, rest = _objectWithoutPropertiesLoose3(_ref6, _excluded4);\n var _ref7 = _temp6 === void 0 ? {} : _temp6, _ref7$suppressRefErro = _ref7.suppressRefError, suppressRefError = _ref7$suppressRefErro === void 0 ? false : _ref7$suppressRefErro;\n setGetterPropCallInfo(\"getInputProps\", suppressRefError, refKey, inputRef);\n var latestState = latest.current.state;\n var inputHandleKeyDown = function inputHandleKeyDown2(event) {\n var key = normalizeArrowKey(event);\n if (key && inputKeyDownHandlers[key]) {\n inputKeyDownHandlers[key](event);\n }\n };\n var inputHandleChange = function inputHandleChange2(event) {\n dispatch({\n type: InputChange,\n inputValue: event.target.value\n });\n };\n var inputHandleBlur = function inputHandleBlur2() {\n if (latestState.isOpen && !mouseAndTouchTrackersRef.current.isMouseDown) {\n dispatch({\n type: InputBlur,\n selectItem: true\n });\n }\n };\n var onChangeKey = \"onChange\";\n var eventHandlers = {};\n if (!rest.disabled) {\n var _eventHandlers;\n eventHandlers = (_eventHandlers = {}, _eventHandlers[onChangeKey] = callAllEventHandlers(onChange, onInput, inputHandleChange), _eventHandlers.onKeyDown = callAllEventHandlers(onKeyDown, inputHandleKeyDown), _eventHandlers.onBlur = callAllEventHandlers(onBlur, inputHandleBlur), _eventHandlers);\n }\n return _extends2((_extends52 = {}, _extends52[refKey] = handleRefs(ref, function(inputNode) {\n inputRef.current = inputNode;\n }), _extends52.id = elementIds.inputId, _extends52[\"aria-autocomplete\"] = \"list\", _extends52[\"aria-controls\"] = elementIds.menuId, _extends52), latestState.isOpen && latestState.highlightedIndex > -1 && {\n \"aria-activedescendant\": elementIds.getItemId(latestState.highlightedIndex)\n }, {\n \"aria-labelledby\": elementIds.labelId,\n autoComplete: \"off\",\n value: latestState.inputValue\n }, eventHandlers, rest);\n }, [dispatch, inputKeyDownHandlers, latest, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds]);\n var getComboboxProps = (0, import_react7.useCallback)(function(_temp7, _temp8) {\n var _extends62;\n var _ref8 = _temp7 === void 0 ? {} : _temp7, _ref8$refKey = _ref8.refKey, refKey = _ref8$refKey === void 0 ? \"ref\" : _ref8$refKey, ref = _ref8.ref, rest = _objectWithoutPropertiesLoose3(_ref8, _excluded5);\n var _ref9 = _temp8 === void 0 ? {} : _temp8, _ref9$suppressRefErro = _ref9.suppressRefError, suppressRefError = _ref9$suppressRefErro === void 0 ? false : _ref9$suppressRefErro;\n setGetterPropCallInfo(\"getComboboxProps\", suppressRefError, refKey, comboboxRef);\n return _extends2((_extends62 = {}, _extends62[refKey] = handleRefs(ref, function(comboboxNode) {\n comboboxRef.current = comboboxNode;\n }), _extends62.role = \"combobox\", _extends62[\"aria-haspopup\"] = \"listbox\", _extends62[\"aria-owns\"] = elementIds.menuId, _extends62[\"aria-expanded\"] = latest.current.state.isOpen, _extends62), rest);\n }, [latest, setGetterPropCallInfo, elementIds]);\n var toggleMenu = (0, import_react7.useCallback)(function() {\n dispatch({\n type: FunctionToggleMenu\n });\n }, [dispatch]);\n var closeMenu = (0, import_react7.useCallback)(function() {\n dispatch({\n type: FunctionCloseMenu\n });\n }, [dispatch]);\n var openMenu = (0, import_react7.useCallback)(function() {\n dispatch({\n type: FunctionOpenMenu\n });\n }, [dispatch]);\n var setHighlightedIndex = (0, import_react7.useCallback)(function(newHighlightedIndex) {\n dispatch({\n type: FunctionSetHighlightedIndex,\n highlightedIndex: newHighlightedIndex\n });\n }, [dispatch]);\n var selectItem = (0, import_react7.useCallback)(function(newSelectedItem) {\n dispatch({\n type: FunctionSelectItem,\n selectedItem: newSelectedItem\n });\n }, [dispatch]);\n var setInputValue = (0, import_react7.useCallback)(function(newInputValue) {\n dispatch({\n type: FunctionSetInputValue,\n inputValue: newInputValue\n });\n }, [dispatch]);\n var reset = (0, import_react7.useCallback)(function() {\n dispatch({\n type: FunctionReset$1\n });\n }, [dispatch]);\n return {\n getItemProps,\n getLabelProps,\n getMenuProps,\n getInputProps,\n getComboboxProps,\n getToggleButtonProps,\n toggleMenu,\n openMenu,\n closeMenu,\n setHighlightedIndex,\n setInputValue,\n selectItem,\n reset,\n highlightedIndex,\n isOpen,\n selectedItem,\n inputValue\n };\n}\nvar defaultStateValues = {\n activeIndex: -1,\n selectedItems: []\n};\nfunction getInitialValue(props, propKey) {\n return getInitialValue$1(props, propKey, defaultStateValues);\n}\nfunction getDefaultValue(props, propKey) {\n return getDefaultValue$1(props, propKey, defaultStateValues);\n}\nfunction getInitialState(props) {\n var activeIndex = getInitialValue(props, \"activeIndex\");\n var selectedItems = getInitialValue(props, \"selectedItems\");\n return {\n activeIndex,\n selectedItems\n };\n}\nfunction isKeyDownOperationPermitted(event) {\n if (event.shiftKey || event.metaKey || event.ctrlKey || event.altKey) {\n return false;\n }\n var element4 = event.target;\n if (element4 instanceof HTMLInputElement && element4.value !== \"\" && (element4.selectionStart !== 0 || element4.selectionEnd !== 0)) {\n return false;\n }\n return true;\n}\nfunction getA11yRemovalMessage(selectionParameters) {\n var removedSelectedItem = selectionParameters.removedSelectedItem, itemToStringLocal = selectionParameters.itemToString;\n return itemToStringLocal(removedSelectedItem) + \" has been removed.\";\n}\nvar propTypes = {\n selectedItems: import_prop_types.default.array,\n initialSelectedItems: import_prop_types.default.array,\n defaultSelectedItems: import_prop_types.default.array,\n itemToString: import_prop_types.default.func,\n getA11yRemovalMessage: import_prop_types.default.func,\n stateReducer: import_prop_types.default.func,\n activeIndex: import_prop_types.default.number,\n initialActiveIndex: import_prop_types.default.number,\n defaultActiveIndex: import_prop_types.default.number,\n onActiveIndexChange: import_prop_types.default.func,\n onSelectedItemsChange: import_prop_types.default.func,\n keyNavigationNext: import_prop_types.default.string,\n keyNavigationPrevious: import_prop_types.default.string,\n environment: import_prop_types.default.shape({\n addEventListener: import_prop_types.default.func,\n removeEventListener: import_prop_types.default.func,\n document: import_prop_types.default.shape({\n getElementById: import_prop_types.default.func,\n activeElement: import_prop_types.default.any,\n body: import_prop_types.default.any\n })\n })\n};\nvar defaultProps = {\n itemToString: defaultProps$3.itemToString,\n stateReducer: defaultProps$3.stateReducer,\n environment: defaultProps$3.environment,\n getA11yRemovalMessage,\n keyNavigationNext: \"ArrowRight\",\n keyNavigationPrevious: \"ArrowLeft\"\n};\nvar validatePropTypes = noop;\nif (true) {\n validatePropTypes = function validatePropTypes2(options, caller) {\n import_prop_types.default.checkPropTypes(propTypes, options, \"prop\", caller.name);\n };\n}\nvar SelectedItemClick = true ? \"__selected_item_click__\" : 0;\nvar SelectedItemKeyDownDelete = true ? \"__selected_item_keydown_delete__\" : 1;\nvar SelectedItemKeyDownBackspace = true ? \"__selected_item_keydown_backspace__\" : 2;\nvar SelectedItemKeyDownNavigationNext = true ? \"__selected_item_keydown_navigation_next__\" : 3;\nvar SelectedItemKeyDownNavigationPrevious = true ? \"__selected_item_keydown_navigation_previous__\" : 4;\nvar DropdownKeyDownNavigationPrevious = true ? \"__dropdown_keydown_navigation_previous__\" : 5;\nvar DropdownKeyDownBackspace = true ? \"__dropdown_keydown_backspace__\" : 6;\nvar DropdownClick = true ? \"__dropdown_click__\" : 7;\nvar FunctionAddSelectedItem = true ? \"__function_add_selected_item__\" : 8;\nvar FunctionRemoveSelectedItem = true ? \"__function_remove_selected_item__\" : 9;\nvar FunctionSetSelectedItems = true ? \"__function_set_selected_items__\" : 10;\nvar FunctionSetActiveIndex = true ? \"__function_set_active_index__\" : 11;\nvar FunctionReset = true ? \"__function_reset__\" : 12;\nvar stateChangeTypes = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n SelectedItemClick,\n SelectedItemKeyDownDelete,\n SelectedItemKeyDownBackspace,\n SelectedItemKeyDownNavigationNext,\n SelectedItemKeyDownNavigationPrevious,\n DropdownKeyDownNavigationPrevious,\n DropdownKeyDownBackspace,\n DropdownClick,\n FunctionAddSelectedItem,\n FunctionRemoveSelectedItem,\n FunctionSetSelectedItems,\n FunctionSetActiveIndex,\n FunctionReset\n});\nfunction downshiftMultipleSelectionReducer(state, action) {\n var type = action.type, index7 = action.index, props = action.props, selectedItem = action.selectedItem;\n var activeIndex = state.activeIndex, selectedItems = state.selectedItems;\n var changes;\n switch (type) {\n case SelectedItemClick:\n changes = {\n activeIndex: index7\n };\n break;\n case SelectedItemKeyDownNavigationPrevious:\n changes = {\n activeIndex: activeIndex - 1 < 0 ? 0 : activeIndex - 1\n };\n break;\n case SelectedItemKeyDownNavigationNext:\n changes = {\n activeIndex: activeIndex + 1 >= selectedItems.length ? -1 : activeIndex + 1\n };\n break;\n case SelectedItemKeyDownBackspace:\n case SelectedItemKeyDownDelete: {\n var newActiveIndex = activeIndex;\n if (selectedItems.length === 1) {\n newActiveIndex = -1;\n } else if (activeIndex === selectedItems.length - 1) {\n newActiveIndex = selectedItems.length - 2;\n }\n changes = _extends2({\n selectedItems: [].concat(selectedItems.slice(0, activeIndex), selectedItems.slice(activeIndex + 1))\n }, {\n activeIndex: newActiveIndex\n });\n break;\n }\n case DropdownKeyDownNavigationPrevious:\n changes = {\n activeIndex: selectedItems.length - 1\n };\n break;\n case DropdownKeyDownBackspace:\n changes = {\n selectedItems: selectedItems.slice(0, selectedItems.length - 1)\n };\n break;\n case FunctionAddSelectedItem:\n changes = {\n selectedItems: [].concat(selectedItems, [selectedItem])\n };\n break;\n case DropdownClick:\n changes = {\n activeIndex: -1\n };\n break;\n case FunctionRemoveSelectedItem: {\n var _newActiveIndex = activeIndex;\n var selectedItemIndex = selectedItems.indexOf(selectedItem);\n if (selectedItems.length === 1) {\n _newActiveIndex = -1;\n } else if (selectedItemIndex === selectedItems.length - 1) {\n _newActiveIndex = selectedItems.length - 2;\n }\n changes = _extends2({\n selectedItems: [].concat(selectedItems.slice(0, selectedItemIndex), selectedItems.slice(selectedItemIndex + 1))\n }, {\n activeIndex: _newActiveIndex\n });\n break;\n }\n case FunctionSetSelectedItems: {\n var newSelectedItems = action.selectedItems;\n changes = {\n selectedItems: newSelectedItems\n };\n break;\n }\n case FunctionSetActiveIndex: {\n var _newActiveIndex2 = action.activeIndex;\n changes = {\n activeIndex: _newActiveIndex2\n };\n break;\n }\n case FunctionReset:\n changes = {\n activeIndex: getDefaultValue(props, \"activeIndex\"),\n selectedItems: getDefaultValue(props, \"selectedItems\")\n };\n break;\n default:\n throw new Error(\"Reducer called without proper action type.\");\n }\n return _extends2({}, state, changes);\n}\nvar _excluded6 = [\"refKey\", \"ref\", \"onClick\", \"onKeyDown\", \"selectedItem\", \"index\"];\nvar _excluded23 = [\"refKey\", \"ref\", \"onKeyDown\", \"onClick\", \"preventKeyAction\"];\nuseMultipleSelection.stateChangeTypes = stateChangeTypes;\nfunction useMultipleSelection(userProps) {\n if (userProps === void 0) {\n userProps = {};\n }\n validatePropTypes(userProps, useMultipleSelection);\n var props = _extends2({}, defaultProps, userProps);\n var getA11yRemovalMessage2 = props.getA11yRemovalMessage, itemToString2 = props.itemToString, environment = props.environment, keyNavigationNext = props.keyNavigationNext, keyNavigationPrevious = props.keyNavigationPrevious;\n var _useControlledReducer = useControlledReducer$1(downshiftMultipleSelectionReducer, getInitialState(props), props), state = _useControlledReducer[0], dispatch = _useControlledReducer[1];\n var activeIndex = state.activeIndex, selectedItems = state.selectedItems;\n var isInitialMountRef = (0, import_react7.useRef)(true);\n var dropdownRef = (0, import_react7.useRef)(null);\n var previousSelectedItemsRef = (0, import_react7.useRef)(selectedItems);\n var selectedItemRefs = (0, import_react7.useRef)();\n selectedItemRefs.current = [];\n var latest = useLatestRef({\n state,\n props\n });\n (0, import_react7.useEffect)(function() {\n if (isInitialMountRef.current) {\n return;\n }\n if (selectedItems.length < previousSelectedItemsRef.current.length) {\n var removedSelectedItem = previousSelectedItemsRef.current.find(function(item) {\n return selectedItems.indexOf(item) < 0;\n });\n setStatus(getA11yRemovalMessage2({\n itemToString: itemToString2,\n resultCount: selectedItems.length,\n removedSelectedItem,\n activeIndex,\n activeSelectedItem: selectedItems[activeIndex]\n }), environment.document);\n }\n previousSelectedItemsRef.current = selectedItems;\n }, [selectedItems.length]);\n (0, import_react7.useEffect)(function() {\n if (isInitialMountRef.current) {\n return;\n }\n if (activeIndex === -1 && dropdownRef.current) {\n dropdownRef.current.focus();\n } else if (selectedItemRefs.current[activeIndex]) {\n selectedItemRefs.current[activeIndex].focus();\n }\n }, [activeIndex]);\n useControlPropsValidator({\n isInitialMount: isInitialMountRef.current,\n props,\n state\n });\n var setGetterPropCallInfo = useGetterPropsCalledChecker(\"getDropdownProps\");\n (0, import_react7.useEffect)(function() {\n isInitialMountRef.current = false;\n }, []);\n var selectedItemKeyDownHandlers = (0, import_react7.useMemo)(function() {\n var _ref;\n return _ref = {}, _ref[keyNavigationPrevious] = function() {\n dispatch({\n type: SelectedItemKeyDownNavigationPrevious\n });\n }, _ref[keyNavigationNext] = function() {\n dispatch({\n type: SelectedItemKeyDownNavigationNext\n });\n }, _ref.Delete = function Delete() {\n dispatch({\n type: SelectedItemKeyDownDelete\n });\n }, _ref.Backspace = function Backspace() {\n dispatch({\n type: SelectedItemKeyDownBackspace\n });\n }, _ref;\n }, [dispatch, keyNavigationNext, keyNavigationPrevious]);\n var dropdownKeyDownHandlers = (0, import_react7.useMemo)(function() {\n var _ref2;\n return _ref2 = {}, _ref2[keyNavigationPrevious] = function(event) {\n if (isKeyDownOperationPermitted(event)) {\n dispatch({\n type: DropdownKeyDownNavigationPrevious\n });\n }\n }, _ref2.Backspace = function Backspace(event) {\n if (isKeyDownOperationPermitted(event)) {\n dispatch({\n type: DropdownKeyDownBackspace\n });\n }\n }, _ref2;\n }, [dispatch, keyNavigationPrevious]);\n var getSelectedItemProps = (0, import_react7.useCallback)(function(_temp) {\n var _extends22;\n var _ref3 = _temp === void 0 ? {} : _temp, _ref3$refKey = _ref3.refKey, refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey, ref = _ref3.ref, onClick = _ref3.onClick, onKeyDown = _ref3.onKeyDown, selectedItem = _ref3.selectedItem, index7 = _ref3.index, rest = _objectWithoutPropertiesLoose3(_ref3, _excluded6);\n var latestState = latest.current.state;\n var itemIndex = getItemIndex(index7, selectedItem, latestState.selectedItems);\n if (itemIndex < 0) {\n throw new Error(\"Pass either selectedItem or index in getSelectedItemProps!\");\n }\n var selectedItemHandleClick = function selectedItemHandleClick2() {\n dispatch({\n type: SelectedItemClick,\n index: index7\n });\n };\n var selectedItemHandleKeyDown = function selectedItemHandleKeyDown2(event) {\n var key = normalizeArrowKey(event);\n if (key && selectedItemKeyDownHandlers[key]) {\n selectedItemKeyDownHandlers[key](event);\n }\n };\n return _extends2((_extends22 = {}, _extends22[refKey] = handleRefs(ref, function(selectedItemNode) {\n if (selectedItemNode) {\n selectedItemRefs.current.push(selectedItemNode);\n }\n }), _extends22.tabIndex = index7 === latestState.activeIndex ? 0 : -1, _extends22.onClick = callAllEventHandlers(onClick, selectedItemHandleClick), _extends22.onKeyDown = callAllEventHandlers(onKeyDown, selectedItemHandleKeyDown), _extends22), rest);\n }, [dispatch, latest, selectedItemKeyDownHandlers]);\n var getDropdownProps = (0, import_react7.useCallback)(function(_temp2, _temp3) {\n var _extends32;\n var _ref4 = _temp2 === void 0 ? {} : _temp2, _ref4$refKey = _ref4.refKey, refKey = _ref4$refKey === void 0 ? \"ref\" : _ref4$refKey, ref = _ref4.ref, onKeyDown = _ref4.onKeyDown, onClick = _ref4.onClick, _ref4$preventKeyActio = _ref4.preventKeyAction, preventKeyAction = _ref4$preventKeyActio === void 0 ? false : _ref4$preventKeyActio, rest = _objectWithoutPropertiesLoose3(_ref4, _excluded23);\n var _ref5 = _temp3 === void 0 ? {} : _temp3, _ref5$suppressRefErro = _ref5.suppressRefError, suppressRefError = _ref5$suppressRefErro === void 0 ? false : _ref5$suppressRefErro;\n setGetterPropCallInfo(\"getDropdownProps\", suppressRefError, refKey, dropdownRef);\n var dropdownHandleKeyDown = function dropdownHandleKeyDown2(event) {\n var key = normalizeArrowKey(event);\n if (key && dropdownKeyDownHandlers[key]) {\n dropdownKeyDownHandlers[key](event);\n }\n };\n var dropdownHandleClick = function dropdownHandleClick2() {\n dispatch({\n type: DropdownClick\n });\n };\n return _extends2((_extends32 = {}, _extends32[refKey] = handleRefs(ref, function(dropdownNode) {\n if (dropdownNode) {\n dropdownRef.current = dropdownNode;\n }\n }), _extends32), !preventKeyAction && {\n onKeyDown: callAllEventHandlers(onKeyDown, dropdownHandleKeyDown),\n onClick: callAllEventHandlers(onClick, dropdownHandleClick)\n }, rest);\n }, [dispatch, dropdownKeyDownHandlers, setGetterPropCallInfo]);\n var addSelectedItem = (0, import_react7.useCallback)(function(selectedItem) {\n dispatch({\n type: FunctionAddSelectedItem,\n selectedItem\n });\n }, [dispatch]);\n var removeSelectedItem = (0, import_react7.useCallback)(function(selectedItem) {\n dispatch({\n type: FunctionRemoveSelectedItem,\n selectedItem\n });\n }, [dispatch]);\n var setSelectedItems = (0, import_react7.useCallback)(function(newSelectedItems) {\n dispatch({\n type: FunctionSetSelectedItems,\n selectedItems: newSelectedItems\n });\n }, [dispatch]);\n var setActiveIndex = (0, import_react7.useCallback)(function(newActiveIndex) {\n dispatch({\n type: FunctionSetActiveIndex,\n activeIndex: newActiveIndex\n });\n }, [dispatch]);\n var reset = (0, import_react7.useCallback)(function() {\n dispatch({\n type: FunctionReset\n });\n }, [dispatch]);\n return {\n getSelectedItemProps,\n getDropdownProps,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n setActiveIndex,\n reset,\n selectedItems,\n activeIndex\n };\n}\n\n// node_modules/@udecode/plate-combobox/dist/index.es.js\nvar createComboboxStore = (state) => createStore3(`combobox-${state.id}`)(state);\nvar comboboxStore = createStore3(\"combobox\")({\n activeId: null,\n byId: {},\n highlightedIndex: 0,\n items: [],\n filteredItems: [],\n targetRange: null,\n text: null\n}).extendActions((set, get3) => ({\n setComboboxById: (state) => {\n if (get3.byId()[state.id])\n return;\n set.state((draft) => {\n draft.byId[state.id] = createComboboxStore(state);\n });\n },\n open: (state) => {\n set.mergeState(state);\n },\n reset: () => {\n set.state((draft) => {\n draft.activeId = null;\n draft.highlightedIndex = 0;\n draft.items = [];\n draft.text = null;\n draft.targetRange = null;\n });\n }\n})).extendSelectors((state) => ({\n isOpen: () => !!state.activeId\n}));\nvar useComboboxSelectors = comboboxStore.use;\nvar comboboxSelectors = comboboxStore.get;\nvar comboboxActions = comboboxStore.set;\nvar getComboboxStoreById = (id) => id ? comboboxSelectors.byId()[id] : null;\nvar getTextFromTrigger = (editor, {\n at,\n trigger,\n searchPattern = `\\\\S+`\n}) => {\n const escapedTrigger = escapeRegExp(trigger);\n const triggerRegex = new RegExp(`(?:^|\\\\s)${escapedTrigger}`);\n let start3 = at;\n let end3;\n while (true) {\n end3 = start3;\n if (!start3)\n break;\n start3 = getPointBefore(editor, start3);\n const charRange = start3 && getRange(editor, start3, end3);\n const charText = getEditorString(editor, charRange);\n if (!charText.match(searchPattern)) {\n start3 = end3;\n break;\n }\n }\n const range = start3 && getRange(editor, start3, at);\n const text4 = getEditorString(editor, range);\n if (!range || !text4.match(triggerRegex))\n return;\n return {\n range,\n textAfterTrigger: text4.substring(trigger.length)\n };\n};\nvar onChangeCombobox = (editor) => () => {\n const byId = comboboxSelectors.byId();\n const activeId = comboboxSelectors.activeId();\n let shouldClose = true;\n for (const store of Object.values(byId)) {\n var _store$get$controlled, _store$get, _store$get$searchPatt, _store$get2;\n const id = store.get.id();\n const controlled = (_store$get$controlled = (_store$get = store.get).controlled) === null || _store$get$controlled === void 0 ? void 0 : _store$get$controlled.call(_store$get);\n if (controlled) {\n if (activeId === id) {\n shouldClose = false;\n break;\n } else {\n continue;\n }\n }\n const {\n selection\n } = editor;\n if (!selection || !isCollapsed(selection)) {\n continue;\n }\n const trigger = store.get.trigger();\n const searchPattern = (_store$get$searchPatt = (_store$get2 = store.get).searchPattern) === null || _store$get$searchPatt === void 0 ? void 0 : _store$get$searchPatt.call(_store$get2);\n const isCursorAfterTrigger = getTextFromTrigger(editor, {\n at: Range.start(selection),\n trigger,\n searchPattern\n });\n if (!isCursorAfterTrigger) {\n continue;\n }\n const {\n range,\n textAfterTrigger\n } = isCursorAfterTrigger;\n comboboxActions.open({\n activeId: id,\n text: textAfterTrigger,\n targetRange: range\n });\n shouldClose = false;\n break;\n }\n if (shouldClose && comboboxSelectors.isOpen()) {\n comboboxActions.reset();\n }\n};\nvar getNextNonDisabledIndex2 = (moveAmount, baseIndex, itemCount, getItemNodeFromIndex, circular) => {\n const currentElementNode = getItemNodeFromIndex(baseIndex);\n if (!currentElementNode || !currentElementNode.hasAttribute(\"disabled\")) {\n return baseIndex;\n }\n if (moveAmount > 0) {\n for (let index7 = baseIndex + 1; index7 < itemCount; index7++) {\n if (!getItemNodeFromIndex(index7).hasAttribute(\"disabled\")) {\n return index7;\n }\n }\n } else {\n for (let index7 = baseIndex - 1; index7 >= 0; index7--) {\n if (!getItemNodeFromIndex(index7).hasAttribute(\"disabled\")) {\n return index7;\n }\n }\n }\n if (circular) {\n return moveAmount > 0 ? getNextNonDisabledIndex2(1, 0, itemCount, getItemNodeFromIndex, false) : getNextNonDisabledIndex2(-1, itemCount - 1, itemCount, getItemNodeFromIndex, false);\n }\n return -1;\n};\nvar getNextWrappingIndex2 = (moveAmount, baseIndex, itemCount, getItemNodeFromIndex, circular = true) => {\n if (itemCount === 0) {\n return -1;\n }\n const itemsLastIndex = itemCount - 1;\n if (typeof baseIndex !== \"number\" || baseIndex < 0 || baseIndex >= itemCount) {\n baseIndex = moveAmount > 0 ? -1 : itemsLastIndex + 1;\n }\n let newIndex = baseIndex + moveAmount;\n if (newIndex < 0) {\n newIndex = circular ? itemsLastIndex : 0;\n } else if (newIndex > itemsLastIndex) {\n newIndex = circular ? 0 : itemsLastIndex;\n }\n const nonDisabledNewIndex = getNextNonDisabledIndex2(moveAmount, newIndex, itemCount, getItemNodeFromIndex, circular);\n if (nonDisabledNewIndex === -1) {\n return baseIndex >= itemCount ? -1 : baseIndex;\n }\n return nonDisabledNewIndex;\n};\nvar onKeyDownCombobox = (editor) => (event) => {\n const {\n highlightedIndex,\n filteredItems,\n activeId\n } = comboboxSelectors.state();\n const isOpen = comboboxSelectors.isOpen();\n if (!isOpen)\n return;\n const store = getComboboxStoreById(activeId);\n if (!store)\n return;\n const onSelectItem = store.get.onSelectItem();\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const newIndex = getNextWrappingIndex2(1, highlightedIndex, filteredItems.length, () => {\n }, true);\n comboboxActions.highlightedIndex(newIndex);\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const newIndex = getNextWrappingIndex2(-1, highlightedIndex, filteredItems.length, () => {\n }, true);\n comboboxActions.highlightedIndex(newIndex);\n return;\n }\n if (event.key === \"Escape\") {\n event.preventDefault();\n comboboxActions.reset();\n return;\n }\n if ([\"Tab\", \"Enter\"].includes(event.key)) {\n event.preventDefault();\n event.stopPropagation();\n if (filteredItems[highlightedIndex]) {\n onSelectItem === null || onSelectItem === void 0 ? void 0 : onSelectItem(editor, filteredItems[highlightedIndex]);\n }\n }\n};\nvar KEY_COMBOBOX = \"combobox\";\nvar createComboboxPlugin = createPluginFactory({\n key: KEY_COMBOBOX,\n handlers: {\n onChange: onChangeCombobox,\n onKeyDown: onKeyDownCombobox\n }\n});\n\n// node_modules/@udecode/plate-find-replace/dist/index.es.js\nvar decorateFindReplace = (editor, {\n key,\n type\n}) => ([node, path]) => {\n const ranges = [];\n const {\n search\n } = editor.pluginsByKey[key].options;\n if (!search || !isText(node)) {\n return ranges;\n }\n const {\n text: text4\n } = node;\n const parts = text4.toLowerCase().split(search.toLowerCase());\n let offset3 = 0;\n parts.forEach((part, i3) => {\n if (i3 !== 0) {\n ranges.push({\n anchor: {\n path,\n offset: offset3 - search.length\n },\n focus: {\n path,\n offset: offset3\n },\n search,\n [type]: true\n });\n }\n offset3 = offset3 + part.length + search.length;\n });\n return ranges;\n};\nvar MARK_SEARCH_HIGHLIGHT = \"search_highlight\";\nvar createFindReplacePlugin = createPluginFactory({\n key: MARK_SEARCH_HIGHLIGHT,\n isLeaf: true,\n decorate: decorateFindReplace\n});\n\n// node_modules/@udecode/plate-font/dist/index.es.js\nvar MARK_BG_COLOR = \"backgroundColor\";\nvar createFontBackgroundColorPlugin = createPluginFactory({\n key: MARK_BG_COLOR,\n inject: {\n props: {\n nodeKey: MARK_BG_COLOR\n }\n },\n then: (editor, {\n type\n }) => ({\n deserializeHtml: {\n isLeaf: true,\n getNode: (element4) => ({\n [type]: element4.style.backgroundColor\n }),\n rules: [{\n validStyle: {\n backgroundColor: \"*\"\n }\n }]\n }\n })\n});\nvar MARK_COLOR = \"color\";\nvar createFontColorPlugin = createPluginFactory({\n key: MARK_COLOR,\n inject: {\n props: {\n nodeKey: MARK_COLOR,\n defaultNodeValue: \"black\"\n }\n },\n then: (editor, {\n type\n }) => ({\n deserializeHtml: {\n isLeaf: true,\n getNode(element4) {\n if (element4.style.color) {\n return {\n [type]: element4.style.color\n };\n }\n },\n rules: [{\n validStyle: {\n color: \"*\"\n }\n }]\n }\n })\n});\nvar MARK_FONT_FAMILY = \"fontFamily\";\nvar createFontFamilyPlugin = createPluginFactory({\n key: MARK_FONT_FAMILY,\n inject: {\n props: {\n nodeKey: MARK_FONT_FAMILY\n }\n },\n then: (editor, {\n type\n }) => ({\n deserializeHtml: {\n isLeaf: true,\n getNode: (element4) => ({\n [type]: element4.style.fontFamily\n }),\n rules: [{\n validStyle: {\n fontFamily: \"*\"\n }\n }]\n }\n })\n});\nvar MARK_FONT_SIZE = \"fontSize\";\nvar createFontSizePlugin = createPluginFactory({\n key: MARK_FONT_SIZE,\n inject: {\n props: {\n nodeKey: MARK_FONT_SIZE\n }\n },\n then: (editor, {\n type\n }) => ({\n deserializeHtml: {\n isLeaf: true,\n getNode: (element4) => ({\n [type]: element4.style.fontSize\n }),\n rules: [{\n validStyle: {\n fontSize: \"*\"\n }\n }]\n }\n })\n});\nvar MARK_FONT_WEIGHT = \"fontWeight\";\nvar createFontWeightPlugin = createPluginFactory({\n key: MARK_FONT_WEIGHT,\n inject: {\n props: {\n nodeKey: MARK_FONT_WEIGHT\n }\n },\n then: (editor, {\n type\n }) => ({\n deserializeHtml: {\n isLeaf: true,\n getNode: (element4) => ({\n [type]: element4.style.fontWeight\n }),\n rules: [{\n validStyle: {\n fontWeight: \"*\"\n }\n }]\n }\n })\n});\n\n// node_modules/@udecode/plate-highlight/dist/index.es.js\nvar MARK_HIGHLIGHT = \"highlight\";\nvar createHighlightPlugin = createPluginFactory({\n key: MARK_HIGHLIGHT,\n isLeaf: true,\n handlers: {\n onKeyDown: onKeyDownToggleMark\n },\n deserializeHtml: {\n rules: [{\n validNodeName: [\"MARK\"]\n }]\n },\n options: {\n hotkey: \"mod+shift+h\"\n }\n});\n\n// node_modules/@udecode/plate-horizontal-rule/dist/index.es.js\nvar ELEMENT_HR = \"hr\";\nvar createHorizontalRulePlugin = createPluginFactory({\n key: ELEMENT_HR,\n isElement: true,\n isVoid: true,\n deserializeHtml: {\n rules: [{\n validNodeName: \"HR\"\n }]\n }\n});\n\n// node_modules/@udecode/plate-image/dist/index.es.js\nvar insertImage = (editor, url) => {\n const text4 = {\n text: \"\"\n };\n const image2 = {\n type: getPluginType(editor, ELEMENT_IMAGE),\n url,\n children: [text4]\n };\n insertNodes(editor, image2);\n};\nvar imageExtensions = [\"ase\", \"art\", \"bmp\", \"blp\", \"cd5\", \"cit\", \"cpt\", \"cr2\", \"cut\", \"dds\", \"dib\", \"djvu\", \"egt\", \"exif\", \"gif\", \"gpl\", \"grf\", \"icns\", \"ico\", \"iff\", \"jng\", \"jpeg\", \"jpg\", \"jfif\", \"jp2\", \"jps\", \"lbm\", \"max\", \"miff\", \"mng\", \"msp\", \"nitf\", \"ota\", \"pbm\", \"pc1\", \"pc2\", \"pc3\", \"pcf\", \"pcx\", \"pdn\", \"pgm\", \"PI1\", \"PI2\", \"PI3\", \"pict\", \"pct\", \"pnm\", \"pns\", \"ppm\", \"psb\", \"psd\", \"pdd\", \"psp\", \"px\", \"pxm\", \"pxr\", \"qfx\", \"raw\", \"rle\", \"sct\", \"sgi\", \"rgb\", \"int\", \"bw\", \"tga\", \"tiff\", \"tif\", \"vtf\", \"xbm\", \"xcf\", \"xpm\", \"3dv\", \"amf\", \"ai\", \"awg\", \"cgm\", \"cdr\", \"cmx\", \"dxf\", \"e2d\", \"egt\", \"eps\", \"fs\", \"gbr\", \"odg\", \"svg\", \"stl\", \"vrml\", \"x3d\", \"sxd\", \"v2d\", \"vnd\", \"wmf\", \"emf\", \"art\", \"xar\", \"png\", \"webp\", \"jxr\", \"hdp\", \"wdp\", \"cur\", \"ecw\", \"iff\", \"lbm\", \"liff\", \"nrrd\", \"pam\", \"pcx\", \"pgf\", \"sgi\", \"rgb\", \"rgba\", \"bw\", \"int\", \"inta\", \"sid\", \"ras\", \"sun\", \"tga\"];\nvar isImageUrl = (url) => {\n if (!isUrl(url))\n return false;\n const ext = new URL(url).pathname.split(\".\").pop();\n return imageExtensions.includes(ext);\n};\nvar withImageUpload = (editor, plugin2) => {\n const {\n options: {\n uploadImage\n }\n } = plugin2;\n const {\n insertData\n } = editor;\n editor.insertData = (dataTransfer) => {\n const text4 = dataTransfer.getData(\"text/plain\");\n const {\n files\n } = dataTransfer;\n if (files && files.length > 0) {\n const injectedPlugins = getInjectedPlugins(editor, plugin2);\n if (!pipeInsertDataQuery(injectedPlugins, {\n data: text4,\n dataTransfer\n })) {\n return insertData(dataTransfer);\n }\n for (const file of files) {\n const reader = new FileReader();\n const [mime] = file.type.split(\"/\");\n if (mime === \"image\") {\n reader.addEventListener(\"load\", async () => {\n if (!reader.result) {\n return;\n }\n const uploadedUrl = uploadImage ? await uploadImage(reader.result) : reader.result;\n insertImage(editor, uploadedUrl);\n });\n reader.readAsDataURL(file);\n }\n }\n } else if (isImageUrl(text4)) {\n insertImage(editor, text4);\n } else {\n insertData(dataTransfer);\n }\n };\n return editor;\n};\nvar ELEMENT_IMAGE = \"img\";\nvar createImagePlugin = createPluginFactory({\n key: ELEMENT_IMAGE,\n isElement: true,\n isVoid: true,\n withOverrides: withImageUpload,\n then: (editor, {\n type\n }) => ({\n deserializeHtml: {\n rules: [{\n validNodeName: \"IMG\"\n }],\n getNode: (el) => ({\n type,\n url: el.getAttribute(\"src\")\n })\n }\n })\n});\n\n// node_modules/@udecode/plate-indent/dist/index.es.js\nvar setIndent = (editor, {\n offset: offset3 = 1,\n getNodesOptions,\n setNodesProps,\n unsetNodesProps = []\n}) => {\n const {\n nodeKey\n } = getPluginInjectProps(editor, KEY_INDENT);\n const _nodes = getNodeEntries(editor, __spreadValues({\n block: true\n }, getNodesOptions));\n const nodes = Array.from(_nodes);\n withoutNormalizing(editor, () => {\n nodes.forEach(([node, path]) => {\n var _ref, _setNodesProps;\n const blockIndent = (_ref = node[nodeKey]) !== null && _ref !== void 0 ? _ref : 0;\n const newIndent = blockIndent + offset3;\n const props = (_setNodesProps = setNodesProps === null || setNodesProps === void 0 ? void 0 : setNodesProps({\n indent: newIndent\n })) !== null && _setNodesProps !== void 0 ? _setNodesProps : {};\n if (newIndent <= 0) {\n unsetNodes(editor, [nodeKey, ...unsetNodesProps], {\n at: path\n });\n } else {\n setElements(editor, __spreadValues({\n [nodeKey]: newIndent\n }, props), {\n at: path\n });\n }\n });\n });\n};\nvar indent = (editor, options) => {\n setIndent(editor, __spreadValues({\n offset: 1\n }, options));\n};\nvar outdent = (editor, options) => {\n setIndent(editor, __spreadValues({\n offset: -1\n }, options));\n};\nvar onKeyDownIndent = (editor) => (e4) => {\n if (e4.key === \"Tab\" && !e4.altKey && !e4.ctrlKey && !e4.metaKey) {\n e4.preventDefault();\n e4.shiftKey ? outdent(editor) : indent(editor);\n }\n};\nvar withIndent = (editor, {\n inject: {\n props: {\n validTypes\n } = {}\n },\n options: {\n indentMax\n }\n}) => {\n const {\n normalizeNode\n } = editor;\n editor.normalizeNode = ([node, path]) => {\n const element4 = node;\n const {\n type\n } = element4;\n if (type) {\n if (validTypes.includes(type)) {\n if (indentMax && element4.indent && element4.indent > indentMax) {\n setElements(editor, {\n indent: indentMax\n }, {\n at: path\n });\n return;\n }\n } else if (element4.indent) {\n unsetNodes(editor, \"indent\", {\n at: path\n });\n return;\n }\n }\n return normalizeNode([node, path]);\n };\n return editor;\n};\nvar KEY_INDENT = \"indent\";\nvar createIndentPlugin = createPluginFactory({\n key: KEY_INDENT,\n withOverrides: withIndent,\n handlers: {\n onKeyDown: onKeyDownIndent\n },\n options: {\n offset: 24,\n unit: \"px\"\n },\n then: (editor, {\n options: {\n offset: offset3,\n unit\n } = {}\n }) => ({\n inject: {\n props: {\n nodeKey: KEY_INDENT,\n styleKey: \"marginLeft\",\n validTypes: [getPluginType(editor, ELEMENT_DEFAULT)],\n transformNodeValue: ({\n nodeValue\n }) => nodeValue * offset3 + unit\n }\n }\n })\n});\nvar KEY_TEXT_INDENT = \"textIndent\";\nvar createTextIndentPlugin = createPluginFactory({\n key: KEY_TEXT_INDENT,\n options: {\n offset: 24,\n unit: \"px\"\n },\n then: (editor, {\n options: {\n offset: offset3,\n unit\n } = {}\n }) => ({\n inject: {\n props: {\n nodeKey: KEY_TEXT_INDENT,\n styleKey: \"textIndent\",\n validTypes: [getPluginType(editor, ELEMENT_DEFAULT)],\n transformNodeValue({\n nodeValue\n }) {\n return nodeValue * offset3 + unit;\n }\n }\n }\n })\n});\n\n// node_modules/@udecode/plate-indent-list/dist/index.es.js\nvar import_react9 = __toESM(require(\"react\"));\nfunction toVal2(mix) {\n var k3, y3, str = \"\";\n if (typeof mix === \"string\" || typeof mix === \"number\") {\n str += mix;\n } else if (typeof mix === \"object\") {\n if (Array.isArray(mix)) {\n for (k3 = 0; k3 < mix.length; k3++) {\n if (mix[k3]) {\n if (y3 = toVal2(mix[k3])) {\n str && (str += \" \");\n str += y3;\n }\n }\n }\n } else {\n for (k3 in mix) {\n if (mix[k3]) {\n str && (str += \" \");\n str += k3;\n }\n }\n }\n }\n return str;\n}\nfunction clsx() {\n var i3 = 0, tmp, x3, str = \"\";\n while (i3 < arguments.length) {\n if (tmp = arguments[i3++]) {\n if (x3 = toVal2(tmp)) {\n str && (str += \" \");\n str += x3;\n }\n }\n }\n return str;\n}\nvar ListStyleType;\n(function(ListStyleType2) {\n ListStyleType2[\"Armenian\"] = \"armenian\";\n ListStyleType2[\"Circle\"] = \"circle\";\n ListStyleType2[\"CjkIdeographic\"] = \"cjk-ideographic\";\n ListStyleType2[\"Decimal\"] = \"decimal\";\n ListStyleType2[\"DecimalLeadingZero\"] = \"decimal-leading-zero\";\n ListStyleType2[\"Disc\"] = \"disc\";\n ListStyleType2[\"Georgian\"] = \"georgian\";\n ListStyleType2[\"Hebrew\"] = \"hebrew\";\n ListStyleType2[\"Hiragana\"] = \"hiragana\";\n ListStyleType2[\"HiraganaIroha\"] = \"hiragana-iroha\";\n ListStyleType2[\"Katakana\"] = \"katakana\";\n ListStyleType2[\"KatakanaIroha\"] = \"katakana-iroha\";\n ListStyleType2[\"LowerAlpha\"] = \"lower-alpha\";\n ListStyleType2[\"LowerGreek\"] = \"lower-greek\";\n ListStyleType2[\"LowerLatin\"] = \"lower-latin\";\n ListStyleType2[\"LowerRoman\"] = \"lower-roman\";\n ListStyleType2[\"None\"] = \"none\";\n ListStyleType2[\"Square\"] = \"square\";\n ListStyleType2[\"UpperAlpha\"] = \"upper-alpha\";\n ListStyleType2[\"UpperLatin\"] = \"upper-latin\";\n ListStyleType2[\"UpperRoman\"] = \"upper-roman\";\n ListStyleType2[\"Initial\"] = \"initial\";\n ListStyleType2[\"Inherit\"] = \"inherit\";\n})(ListStyleType || (ListStyleType = {}));\nvar injectIndentListComponent = (props) => {\n const {\n element: element4\n } = props;\n const listStyleType = element4[KEY_LIST_STYLE_TYPE];\n const listStart = element4[KEY_LIST_START];\n if (listStyleType) {\n let className = clsx(`slate-${KEY_LIST_STYLE_TYPE}-${listStyleType}`);\n const style = {\n padding: 0,\n margin: 0,\n listStyleType\n };\n if ([ListStyleType.Disc, ListStyleType.Circle, ListStyleType.Square].includes(listStyleType)) {\n className = clsx(className, \"slate-list-bullet\");\n return ({\n children\n }) => /* @__PURE__ */ import_react9.default.createElement(\"ul\", {\n style,\n className\n }, /* @__PURE__ */ import_react9.default.createElement(\"li\", null, children));\n }\n className = clsx(className, \"slate-list-number\");\n return ({\n children\n }) => /* @__PURE__ */ import_react9.default.createElement(\"ol\", {\n style,\n className,\n start: listStart\n }, /* @__PURE__ */ import_react9.default.createElement(\"li\", null, children));\n }\n};\nvar getSiblingIndentList = (editor, [node, path], {\n getPreviousEntry,\n getNextEntry,\n query,\n eqIndent = true,\n breakQuery,\n breakOnLowerIndent = true,\n breakOnEqIndentNeqListStyleType = true\n}) => {\n if (!getPreviousEntry && !getNextEntry)\n return;\n const getSiblingEntry = getNextEntry !== null && getNextEntry !== void 0 ? getNextEntry : getPreviousEntry;\n let nextEntry = getSiblingEntry([node, path]);\n while (true) {\n if (!nextEntry)\n return;\n const [nextNode, nextPath] = nextEntry;\n const indent2 = node[KEY_INDENT];\n const nextIndent = nextNode[KEY_INDENT];\n if (!nextIndent)\n return;\n if (breakQuery && breakQuery(nextNode))\n return;\n if (breakOnLowerIndent && nextIndent < indent2)\n return;\n if (breakOnEqIndentNeqListStyleType && nextIndent === indent2 && nextNode[KEY_LIST_STYLE_TYPE] !== node[KEY_LIST_STYLE_TYPE])\n return;\n let valid = !query || query(nextNode);\n if (valid) {\n valid = !eqIndent || nextIndent === indent2;\n if (valid)\n return [nextNode, nextPath];\n }\n nextEntry = getSiblingEntry(nextEntry);\n }\n};\nvar getNextIndentList = (editor, entry, options) => {\n return getSiblingIndentList(editor, entry, __spreadProps(__spreadValues({\n getNextEntry: ([, currPath]) => {\n const nextPath = Path.next(currPath);\n const nextNode = getNode(editor, nextPath);\n if (!nextNode)\n return;\n return [nextNode, nextPath];\n }\n }, options), {\n getPreviousEntry: void 0\n }));\n};\nvar getPreviousIndentList = (editor, entry, options) => {\n return getSiblingIndentList(editor, entry, __spreadProps(__spreadValues({\n getPreviousEntry: ([, currPath]) => {\n const prevPath = getPreviousPath(currPath);\n if (!prevPath)\n return;\n const prevNode = getNode(editor, prevPath);\n if (!prevNode)\n return;\n return [prevNode, prevPath];\n }\n }, options), {\n getNextEntry: void 0\n }));\n};\nvar normalizeFirstIndentListStart = (editor, [node, path]) => {\n if (isDefined(node[KEY_LIST_START])) {\n unsetNodes(editor, KEY_LIST_START, {\n at: path\n });\n return true;\n }\n};\nvar normalizeNextIndentListStart = (editor, entry, prevEntry) => {\n var _ref, _ref2;\n const [node, path] = entry;\n const [prevNode] = prevEntry !== null && prevEntry !== void 0 ? prevEntry : [null];\n const prevListStart = (_ref = prevNode === null || prevNode === void 0 ? void 0 : prevNode[KEY_LIST_START]) !== null && _ref !== void 0 ? _ref : 1;\n const currListStart = (_ref2 = node[KEY_LIST_START]) !== null && _ref2 !== void 0 ? _ref2 : 1;\n const listStart = prevListStart + 1;\n if (currListStart !== listStart) {\n setElements(editor, {\n [KEY_LIST_START]: listStart\n }, {\n at: path\n });\n return true;\n }\n return false;\n};\nvar normalizeIndentListStart = (editor, entry, options) => {\n return withoutNormalizing(editor, () => {\n const [node] = entry;\n const listStyleType = node[KEY_LIST_STYLE_TYPE];\n if (!listStyleType)\n return;\n let normalized = false;\n let prevEntry = getPreviousIndentList(editor, entry, options);\n if (!prevEntry) {\n normalized = normalizeFirstIndentListStart(editor, entry);\n if (!normalized)\n return;\n }\n let normalizeNext = true;\n let currEntry = entry;\n while (normalizeNext) {\n normalizeNext = normalizeNextIndentListStart(editor, currEntry, prevEntry) || normalized;\n if (normalizeNext)\n normalized = true;\n prevEntry = [getNode(editor, currEntry[1]), currEntry[1]];\n currEntry = getNextIndentList(editor, currEntry, options);\n if (!currEntry)\n break;\n }\n return normalized;\n });\n};\nvar normalizeIndentListNotIndented = (editor, [node, path]) => {\n if (!node[KEY_INDENT] && (node[KEY_LIST_STYLE_TYPE] || node[KEY_LIST_START])) {\n unsetNodes(editor, [KEY_LIST_STYLE_TYPE, KEY_LIST_START], {\n at: path\n });\n return true;\n }\n};\nvar normalizeIndentList = (editor, {\n getSiblingIndentListOptions\n} = {}) => {\n const {\n normalizeNode\n } = editor;\n return ([node, path]) => {\n const normalized = withoutNormalizing(editor, () => {\n if (normalizeIndentListNotIndented(editor, [node, path]))\n return true;\n if (normalizeIndentListStart(editor, [node, path], getSiblingIndentListOptions))\n return true;\n });\n if (normalized)\n return;\n return normalizeNode([node, path]);\n };\n};\nvar withIndentList = (editor, {\n options\n}) => {\n const {\n apply: apply2\n } = editor;\n const {\n getSiblingIndentListOptions\n } = options;\n editor.normalizeNode = normalizeIndentList(editor, options);\n editor.apply = (operation) => {\n const {\n path\n } = operation;\n let nodeBefore = null;\n if (operation.type === \"set_node\") {\n nodeBefore = getNode(editor, path);\n }\n if (operation.type === \"insert_node\") {\n const listStyleType = operation.node[KEY_LIST_STYLE_TYPE];\n if (listStyleType && [\"lower-roman\", \"upper-roman\"].includes(listStyleType)) {\n const prevNodeEntry = getPreviousIndentList(editor, [operation.node, path], __spreadValues({\n eqIndent: false,\n breakOnEqIndentNeqListStyleType: false\n }, getSiblingIndentListOptions));\n if (prevNodeEntry) {\n const prevListStyleType = prevNodeEntry[0][KEY_LIST_STYLE_TYPE];\n if (prevListStyleType === ListStyleType.LowerAlpha && listStyleType === ListStyleType.LowerRoman) {\n operation.node[KEY_LIST_STYLE_TYPE] = ListStyleType.LowerAlpha;\n } else if (prevListStyleType === ListStyleType.UpperAlpha && listStyleType === ListStyleType.UpperRoman) {\n operation.node[KEY_LIST_STYLE_TYPE] = ListStyleType.UpperAlpha;\n }\n }\n }\n }\n let nextIndentListPathRef = null;\n if (operation.type === \"merge_node\" && operation.properties[KEY_LIST_STYLE_TYPE]) {\n const node = getNode(editor, path);\n if (node) {\n const nextNodeEntryBefore = getNextIndentList(editor, [node, path], getSiblingIndentListOptions);\n if (nextNodeEntryBefore) {\n nextIndentListPathRef = createPathRef(editor, nextNodeEntryBefore[1]);\n }\n }\n }\n apply2(operation);\n if (operation.type === \"merge_node\") {\n const {\n properties\n } = operation;\n if (properties[KEY_LIST_STYLE_TYPE]) {\n const node = getNode(editor, path);\n if (!node)\n return;\n normalizeIndentListStart(editor, [node, path], getSiblingIndentListOptions);\n if (nextIndentListPathRef) {\n const nextPath = nextIndentListPathRef.unref();\n if (nextPath) {\n const nextNode = getNode(editor, nextPath);\n if (nextNode) {\n normalizeIndentListStart(editor, [nextNode, nextPath], getSiblingIndentListOptions);\n }\n }\n }\n }\n }\n if (nodeBefore) {\n if (operation.type === \"set_node\") {\n const prevListStyleType = operation.properties[KEY_LIST_STYLE_TYPE];\n const listStyleType = operation.newProperties[KEY_LIST_STYLE_TYPE];\n if (prevListStyleType && !listStyleType) {\n const node = getNode(editor, path);\n if (!node)\n return;\n const nextNodeEntry = getNextIndentList(editor, [nodeBefore, path], getSiblingIndentListOptions);\n if (!nextNodeEntry)\n return;\n normalizeIndentListStart(editor, nextNodeEntry, getSiblingIndentListOptions);\n }\n if ((prevListStyleType || listStyleType) && prevListStyleType !== listStyleType) {\n const node = getNode(editor, path);\n if (!node)\n return;\n let nextNodeEntry = getNextIndentList(editor, [nodeBefore, path], getSiblingIndentListOptions);\n if (nextNodeEntry) {\n normalizeIndentListStart(editor, nextNodeEntry, getSiblingIndentListOptions);\n }\n nextNodeEntry = getNextIndentList(editor, [node, path], getSiblingIndentListOptions);\n if (nextNodeEntry) {\n normalizeIndentListStart(editor, nextNodeEntry, getSiblingIndentListOptions);\n }\n }\n const prevIndent = operation.properties[KEY_INDENT];\n const indent2 = operation.newProperties[KEY_INDENT];\n if (prevIndent !== indent2) {\n const node = getNode(editor, path);\n if (!node)\n return;\n let prevNodeEntry = getPreviousIndentList(editor, [nodeBefore, path], __spreadValues({\n eqIndent: false,\n breakOnLowerIndent: false,\n breakOnEqIndentNeqListStyleType: false\n }, getSiblingIndentListOptions));\n if (prevNodeEntry) {\n normalizeIndentListStart(editor, prevNodeEntry, getSiblingIndentListOptions);\n }\n prevNodeEntry = getPreviousIndentList(editor, [node, path], __spreadValues({\n eqIndent: false,\n breakOnLowerIndent: false,\n breakOnEqIndentNeqListStyleType: false\n }, getSiblingIndentListOptions));\n if (prevNodeEntry) {\n normalizeIndentListStart(editor, prevNodeEntry, getSiblingIndentListOptions);\n }\n let nextNodeEntry = getNextIndentList(editor, [nodeBefore, path], {\n eqIndent: false,\n breakOnLowerIndent: false,\n breakOnEqIndentNeqListStyleType: false\n });\n if (nextNodeEntry) {\n normalizeIndentListStart(editor, nextNodeEntry, getSiblingIndentListOptions);\n }\n nextNodeEntry = getNextIndentList(editor, [node, path], {\n eqIndent: false,\n breakOnLowerIndent: false,\n breakOnEqIndentNeqListStyleType: false\n });\n if (nextNodeEntry) {\n normalizeIndentListStart(editor, nextNodeEntry, getSiblingIndentListOptions);\n }\n }\n }\n }\n };\n return editor;\n};\nvar KEY_LIST_STYLE_TYPE = \"listStyleType\";\nvar KEY_LIST_START = \"listStart\";\nvar createIndentListPlugin = createPluginFactory({\n key: KEY_LIST_STYLE_TYPE,\n inject: {\n belowComponent: injectIndentListComponent\n },\n withOverrides: withIndentList\n});\n\n// node_modules/@udecode/plate-juice/dist/index.es.js\nvar import_juice = __toESM(require_client());\nvar KEY_JUICE = \"juice\";\nvar createJuicePlugin = createPluginFactory({\n key: KEY_JUICE,\n inject: {\n pluginsByKey: {\n [KEY_DESERIALIZE_HTML]: {\n editor: {\n insertData: {\n transformData: (data) => {\n let newData = data.replace(/