From 10e3ec2876c3fb8980555403e974fbc4239864db Mon Sep 17 00:00:00 2001 From: BurningTreeC Date: Sun, 17 Mar 2024 19:46:45 +0100 Subject: [PATCH] update index.html --- index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 6c164fe..50fc067 100644 --- a/index.html +++ b/index.html @@ -47,7 +47,7 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." /> -TiddlyFlex v0.0.148 — a non-linear flexible personal web notebook +TiddlyFlex v0.0.149 — a non-linear flexible personal web notebook @@ -264,11 +264,11 @@ , {"title":"$:/config/tiddlyflex/sidebar/resizer","created":"20240308050754537","modified":"20240316074310580","type":"text/vnd.tiddlywiki","text":"yes","revision":"0","bag":"default"} , -{"title":"$:/config/tiddlyflex/story-river/dynanode","created":"20240311201157011","modified":"20240317173054765","type":"text/vnd.tiddlywiki","text":"no","revision":"0","bag":"default"} +{"title":"$:/config/tiddlyflex/story-river/dynanode","created":"20240311201157011","modified":"20240317184617366","type":"text/vnd.tiddlywiki","text":"no","revision":"0","bag":"default"} , {"title":"$:/config/tiddlyflex/story-river/dynanode/hide","created":"20240316071936283","modified":"20240316130512078","type":"text/vnd.tiddlywiki","text":"no","revision":"0","bag":"default"} , -{"title":"$:/config/tiddlyflex/story-river/dynanode/refreshchildren","created":"20240317152728104","modified":"20240317173055910","type":"text/vnd.tiddlywiki","text":"no","revision":"0","bag":"default"} +{"title":"$:/config/tiddlyflex/story-river/dynanode/refreshchildren","created":"20240317152728104","modified":"20240317184618590","type":"text/vnd.tiddlywiki","text":"no","revision":"0","bag":"default"} , {"title":"$:/config/tiddlyflex/story-river/dynanode/timeout","created":"20240317135536717","modified":"20240317135541578","type":"text/vnd.tiddlywiki","text":"25","revision":"0","bag":"default"} , @@ -290,7 +290,7 @@ , {"title":"$:/palette","created":"20240308051003793","modified":"20240308051117023","type":"text/vnd.tiddlywiki","text":"$:/palettes/Vanilla","revision":"0","bag":"default"} , -{"title":"$:/plugins/BTC/TiddlyFlex","description":"A Flexbox Layout for TiddlyWiki5","name":"TiddlyFlex","plugin-type":"plugin","author":"Simon Huber","version":"0.0.148","core-version":">=5.3.3","source":"https://github.com/BurningTreeC/TiddlyFlex","list":"readme license","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/add-column\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/add-column\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((add-column))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$let columns={{{ [list[$:/columns]count[]!match[0]] ~1 }}} nextColumn={{{ [\u003Ccolumns>add[1]] }}}>\\n\\t\\t\\t\u003C%if [list[$:/columns]count[]match[0]] %>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"1\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"[\u003CnextColumn>]\\\"/>\\n\\t\\t\u003C/$let>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/cancel-close-tiddler\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/cancel-close-tiddler\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((cancel-close-tiddler))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure tiddlyflex-tiddler-is-draft-actions-draft-of-not-is-missing()\\n\u003C$list filter=\\\"[list[$:/columns]!match{$:/columns!!current-column}]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>!match[$:/StoryList-]] ~[[$:/StoryList-1]] }}}>\\n\\t\\t\u003C%if [\u003Ctv-story-list>contains\u003Ctiddler>] %>\\n\\t\\t\\t\u003C$set name=\\\"index\\\" value={{{ [list\u003Ctv-story-list>allbefore\u003Ctiddler>add[1]] }}}>\\n\\t\\t\\t\\t\u003C$let nextTiddler={{{ [list\u003Ctv-story-list>zth\u003Cindex>] }}} viewTiddler={{{ [\u003Ctiddler>get[draft.of]] }}}>\\n\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CviewTiddler>,\u003CnextTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003Ctiddler>]\\\"/>\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$set>\\n\u003C/$list>\\n\\\\end\\n\\\\procedure tiddlyflex-tiddler-is-draft-actions()\\n\u003C% if [\u003Ctiddler>get[draft.of]!is[shadow]is[missing]] %>\\n\\t\u003C$list filter=\\\"[list[$:/columns]!match{$:/columns!!current-column}]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\t\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>!match[$:/StoryList-]] ~[[$:/StoryList-1]] }}}>\\n\\t\\t\\t\u003C%if [\u003Ctv-story-list>contains\u003Ctiddler>] %>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003Ctiddler>]\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$set>\\n\\t\u003C/$list>\\n\u003C% else %>\\n\\t\u003C\u003Ctiddlyflex-tiddler-is-draft-actions-draft-of-not-is-missing>>\\n\\t\u003C$set name=\\\"toTiddler\\\" value={{{ [\u003Ctiddler>get[draft.of]] }}}>\\n\\t\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Ctiddler>] }}} to={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CtoTiddler>] }}}/>\\n\\t\u003C/$set>\\n\u003C% endif %>\\n\u003C$set name=\\\"scrollTiddler\\\" value={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003Ctiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003Ctiddler>] }}}>\\n\\t\u003C%if [\u003Ctiddler>get[draft.of]!is[shadow]is[missing]] %>\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CscrollTiddler>>/>\\n\\t\\t\u003C%if [\u003CscrollTiddler>is[draft]] %>\\n\\t\\t\\t\u003C$set name=\\\"cssEscapedTitle\\\" value={{{ [\u003CscrollTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-focus-flexcontainer>>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\\t\u003C$action-sendmessage $message=\\\"tm-cancel-tiddler\\\" $param=\u003C\u003Ctiddler>>/>\\n\u003C/$set>\\n\\\\end\\n\\\\define actions()\\n\u003C$set name=\\\"tiddler\\\" value=\u003C\u003CcurrentTiddler>>>\\n\\t\u003C%if [\u003Ctiddler>!is[draft]] %>\\n\\t\\t\u003C$let scrollTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[after\u003Ctiddler>] ~[before\u003Ctiddler>] }}}>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CscrollTiddler>>/>\\n\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=\u003C\u003Ctiddler>>/>\\n\\t\\t\\t\u003C%if [\u003CscrollTiddler>is[draft]] %>\\n\\t\\t\\t\\t\u003C$set name=\\\"cssEscapedTitle\\\" value={{{ [\u003CscrollTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\u003C% else %>\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-flexcontainer>>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$let>\\n\\t\\t\u003C$action-deletetiddler $tiddler={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Ctiddler>] }}}/>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-tiddler-is-draft-actions>>\\n\\t\\t\u003C$action-deletetiddler $tiddler={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Ctiddler>] }}}/>\\n\\t\u003C% endif %>\\n\u003C/$set>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/column-down\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/column-down\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((column-down))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$let currentColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[[$:/columns]get[current-column]] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] ~1 }}} columnCount={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>last[]] ~[subfilter\u003Ctdff.tiddlyflex-enlist-columns>first[]] ~1 }}} nextColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] +[before\u003CcurrentColumn>] ~[\u003CcolumnCount>] }}} tv-story-list={{{ [[$:/StoryList-]addsuffix\u003CnextColumn>] }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CnextColumn>] }}}>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-cycle-columns-navigator>>\\n\\t\\t\u003C/$let>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/column-up\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/column-up\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((column-up))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$let currentColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[[$:/columns]get[current-column]] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] ~1 }}} nextColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] +[after\u003CcurrentColumn>] ~[subfilter\u003Ctdff.tiddlyflex-enlist-columns>first[]] ~1 }}} tv-story-list={{{ [[$:/StoryList-]addsuffix\u003CnextColumn>] }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CnextColumn>] }}}>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-cycle-columns-navigator>>\\n\\t\\t\u003C/$let>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/dragging\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/dragging\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((dragging))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C%if [{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}!match[yes]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/state/tiddlyflex/story-river/tiddler/drag-enabled\\\" text=\\\"yes\\\"/>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/tiddlyflex/story-river/tiddler/drag-enabled\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/edit-tiddler\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/edit-tiddler\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((edit-tiddler))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\define actions()\\n\u003C%if [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[match\u003CcurrentTiddler>] %>\\n\\t\u003C%if [\u003CcurrentTiddler>!is[draft]] %>\\n\\t\\t\u003C$action-sendmessage $message=\\\"tm-edit-tiddler\\\" $param=\u003C\u003CcurrentTiddler>>/>\\n\\t\\t\u003C%if [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>!is[missing]] %>\\n\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}} to={{{ [[$:/state/tiddlyflex/story-river/fullscreen/Draft of ']addsuffix\u003CcurrentTiddler>addsuffix[']] }}}/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C% endif %>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/filter-river\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/filter-river\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((filter-river))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C%if [{$:/state/tiddlyflex/story-river/filter}!match[yes]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/state/tiddlyflex/story-river/filter\\\" text=\\\"yes\\\"/>\\n\\t\\t\\t\u003C%if [{$:/temp/search/input}is[blank]match[]then[yes]] %>\\n\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\\\".tc-search input\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/tiddlyflex/story-river/filter\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/fullscreen\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/fullscreen\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((fullscreen))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\define actions()\\n\u003C%if [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[match\u003CcurrentTiddler>] %>\\n\\t\u003C%if [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>!is[missing]] %>\\n\\t\\t\u003C$action-deletetiddler $tiddler={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}}/>\\n\\t\u003C% else %>\\n\\t\\t\u003C$action-setfield $tiddler={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}} text=\\\"yes\\\" column=\u003C\u003CcurrentColumn>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-down\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-down\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((move-down))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure actions()\\n\u003C$set name=\\\"nextTiddler\\\" value={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[after\u003CcurrentTiddler>] }}}>\\n\\t\u003C%if [\u003CnextTiddler>!is[blank]!match[]] %>\\n\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore:currentTiddler\u003CnextTiddler>]\\\"/>\\n\\t\u003C% endif %>\\n\u003C/$set>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-left\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-left\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((move-left))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure current-tiddler-is-empty-message()\\n\u003C$action-listops $tiddler=\u003C\u003CpreviousStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CfirstPreviousStoryTiddler>]\\\"/>\\n\u003C$action-setfield $tiddler=\u003C\u003CpreviousHistoryList>> current-tiddler=\u003C\u003CfocusedTiddler>>/>\\n\\\\end\\n\\\\define actions()\\n\u003C%if [\u003CfocusedTiddler>!is[blank]then\u003Ctv-story-list>!match[$:/StoryList-1]] %>\\n\\t\u003C$let scrollTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] }}}>\\n\\t\\t\u003C$action-setfield $tiddler={{{ [[$:/state/tiddlyflex/removing/]addsuffix\u003CfocusedTiddler>] }}} direction=\\\"left\\\" column=\u003C\u003CcurrentColumn>>/>\\n\\t\\t\u003C$action-setfield $tiddler={{{ [[$:/state/tiddlyflex/adding/]addsuffix\u003CfocusedTiddler>] }}} direction=\\\"right\\\" column={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>before\u003CcurrentColumn>] }}}/>\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] }}}/>\\n\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CfocusedTiddler>]\\\"/>\\n\\t\\t\u003C%if [\u003CpreviousHistoryList>get[current-tiddler]!match[]] %>\\n\\t\\t\\t\u003C$set name=\\\"previousStoryFocusedTiddler\\\" value={{{ [\u003CpreviousHistoryList>get[current-tiddler]] }}}>\\n\\t\\t\\t\\t\u003C%if [\u003CpreviousStoryList>contains\u003CpreviousStoryFocusedTiddler>] %>\\n\\t\\t\\t\\t\\t\u003C%if [list\u003CpreviousStoryList>search:$(searchFields)$:$(searchFlags)${$:/temp/search/input}match\u003CpreviousStoryFocusedTiddler>then{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CpreviousStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CpreviousStoryFocusedTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C% elseif [{$:/state/tiddlyflex/story-river/filter}!match[yes]] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CpreviousStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CpreviousStoryFocusedTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C% else %>\\n\\t\\t\\t\\t\\t\\t\u003C$set name=\\\"firstFilteredStoryTiddler\\\" value={{{ [list\u003CpreviousStoryList>search{$:/temp/search/input}nth[1]] }}}>\\n\\t\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CpreviousStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CfirstFilteredStoryTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003CpreviousHistoryList>> current-tiddler=\u003C\u003CfocusedTiddler>>/>\\n\\t\\t\\t\\t\u003C% else %>\\n\\t\\t\\t\\t\\t\u003C\u003Ccurrent-tiddler-is-empty-message>>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C\u003Ccurrent-tiddler-is-empty-message>>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C%if [{$:/config/tiddlyflex/story-river/follow-current-column}match[yes]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/columns\\\" current-column=\u003C\u003CpreviousStoryCounter>>/>\\n\\t\\t\\t\u003C%if [\u003CfocusedTiddler>is[draft]] %>\\n\\t\\t\\t\\t\u003C$let currentColumn=\u003C\u003CpreviousStoryCounter>> cssEscapedTitle={{{ [\u003CfocusedTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$let currentTiddler={{{ [list\u003Ctv-story-list>after\u003CfocusedTiddler>] ~[list\u003Ctv-story-list>before\u003CfocusedTiddler>] }}} cssEscapedTitle={{{ [\u003CcurrentTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C%if [\u003CcurrentTiddler>is[draft]] %>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C$let currentColumn=\u003C\u003CpreviousStoryCounter>> cssEscapedTitle={{{ [\u003CfocusedTiddler>escapecss[]] }}}>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-scroll-to-tiddler>>\\n\\t\\t\u003C/$let>\\n\\t\u003C/$let>\\n\u003C% endif %>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-multi-column-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-right\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-right\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((move-right))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure current-tiddler-is-empty-message()\\n\u003C$action-listops $tiddler=\u003C\u003CnextStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CfirstNextStoryTiddler>]\\\"/>\\n\u003C$action-setfield $tiddler=\u003C\u003CnextHistoryList>> current-tiddler=\u003C\u003CfocusedTiddler>>/>\\n\\\\end\\n\\\\define actions()\\n\u003C%if [\u003CfocusedTiddler>!is[blank]then\u003CcurrentColumn>!match\u003ClastColumn>] %>\\n\\t\u003C$let scrollTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] }}}>\\n\\t\\t\u003C$action-setfield $tiddler={{{ [[$:/state/tiddlyflex/removing/]addsuffix\u003CfocusedTiddler>] }}} direction=\\\"right\\\" column=\u003C\u003CcurrentColumn>>/>\\n\\t\\t\u003C$action-setfield $tiddler={{{ [[$:/state/tiddlyflex/adding/]addsuffix\u003CfocusedTiddler>] }}} direction=\\\"left\\\" column={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>after\u003CcurrentColumn>] }}}/>\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] }}}/>\\n\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CfocusedTiddler>]\\\"/>\\n\\t\\t\u003C%if [\u003CnextHistoryList>get[current-tiddler]!match[]] %>\\n\\t\\t\\t\u003C$set name=\\\"nextStoryFocusedTiddler\\\" value={{{ [\u003CnextHistoryList>get[current-tiddler]] }}}>\\n\\t\\t\\t\\t\u003C%if [\u003CnextStoryList>contains\u003CnextStoryFocusedTiddler>] %>\\n\\t\\t\\t\\t\\t\u003C%if [list\u003CnextStoryList>search:$(searchFields)$:$(searchFlags)${$:/temp/search/input}match\u003CnextStoryFocusedTiddler>then{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CnextStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CnextStoryFocusedTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C% elseif [{$:/state/tiddlyflex/story-river/filter}!match[yes]] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CnextStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CnextStoryFocusedTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C% else %>\\n\\t\\t\\t\\t\\t\\t\u003C$set name=\\\"firstStoryTiddler\\\" value={{{ [list\u003CnextStoryList>nth[1]] }}}>\\n\\t\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CnextStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CfirstStoryTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003CnextHistoryList>> current-tiddler=\u003C\u003CfocusedTiddler>>/>\\n\\t\\t\\t\\t\u003C% else %>\\n\\t\\t\\t\\t\\t\u003C\u003Ccurrent-tiddler-is-empty-message>>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C\u003Ccurrent-tiddler-is-empty-message>>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C%if [{$:/config/tiddlyflex/story-river/follow-current-column}match[yes]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/columns\\\" current-column=\u003C\u003CnextStoryCounter>>/>\\n\\t\\t\\t\u003C%if [\u003CfocusedTiddler>is[draft]] %>\\n\\t\\t\\t\\t\u003C$let currentColumn=\u003C\u003CnextStoryCounter>> cssEscapedTitle={{{ [\u003CfocusedTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C$let currentColumn=\u003C\u003CnextStoryCounter>> cssEscapedTitle={{{ [\u003CfocusedTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-scroll-to-tiddler>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$let currentTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] }}} cssEscapedTitle={{{ [\u003CcurrentTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C%if [\u003CcurrentTiddler>is[draft]] %>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$let>\\n\u003C% endif %>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-multi-column-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-up\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-up\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((move-up))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\define actions()\\n\u003C$set name=\\\"previousTiddler\\\" value={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[before\u003CcurrentTiddler>] }}}>\\n\\t\u003C%if [\u003CpreviousTiddler>!is[blank]!match[]] %>\\n\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore:previousTiddler\u003CcurrentTiddler>]\\\"/>\\n\\t\u003C% endif %>\\n\u003C/$set>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/navigate-down\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/navigate-down\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((navigate-down))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure actions-inner()\\n\u003C%if [\u003CnextTiddler>!is[blank]!match[]] %>\\n\\t\u003C%if [\u003CnextTiddler>is[draft]] %>\\n\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-focus-flexcontainer>>\\n\\t\u003C% endif %>\\n\\t\u003C$action-navigate $to=\u003C\u003CnextTiddler>>/>\\n\u003C% endif %>\\n\\\\end\\n\\\\define actions()\\n\u003C%if [{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\u003C$set name=\\\"focusedTiddler\\\" value={{{ [\u003Ctv-history-list>get[current-tiddler]] }}}>\\n\\t\\t\u003C%if [subfilter\u003Ctdff.tiddlyflex-story-river-filter>match\u003CfocusedTiddler>] %>\\n\\t\\t\\t\u003C$let nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>nth[1]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Cactions-inner>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$let nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>nth[1]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Cactions-inner>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$set>\\n\u003C% else %>\\n\\t\u003C$let focusedTiddler={{{ [\u003Ctv-history-list>get[current-tiddler]] }}} nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>nth[1]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\u003C\u003Cactions-inner>>\\n\\t\u003C/$let>\\n\u003C% endif %>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/navigate-up\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/navigate-up\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((navigate-up))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure actions-inner()\\n\u003C%if [\u003CnextTiddler>!is[blank]!match[]] %>\\n\\t\u003C%if [\u003CnextTiddler>is[draft]] %>\\n\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-focus-flexcontainer>>\\n\\t\u003C% endif %>\\n\\t\u003C$action-navigate $to=\u003C\u003CnextTiddler>>/>\\n\u003C% endif %>\\n\\\\end\\n\\\\define actions()\\n\u003C%if [{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\u003C$set name=\\\"focusedTiddler\\\" value={{{ [\u003Ctv-history-list>get[current-tiddler]] }}}>\\n\\t\\t\u003C%if [subfilter\u003Ctdff.tiddlyflex-story-river-filter>match\u003CfocusedTiddler>] %>\\n\\t\\t\\t\u003C$let nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>last[]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Cactions-inner>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$let nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>last[]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Cactions-inner>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$set>\\n\u003C% else %>\\n\\t\u003C$let focusedTiddler={{{ [\u003Ctv-history-list>get[current-tiddler]] }}} nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>last[]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\u003C\u003Cactions-inner>>\\n\\t\u003C/$let>\\n\u003C% endif %>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/core/ui/KeyboardShortcuts/new-image\":{\"title\":\"$:/core/ui/KeyboardShortcuts/new-image\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((new-image))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure actions()\\n{{$:/core/ui/Actions/new-image}}\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]limit[1]] %>\\n\\t\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\\t\u003C% endif %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-simple-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\u003C% else %>\\n\\t\u003C$navigator story=\\\"$:/StoryList\\\" history=\\\"$:/HistoryList\\\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\u003C\u003Cactions>>\\n\\t\u003C/$navigator>\\n\u003C% endif %>\"},\"$:/core/ui/KeyboardShortcuts/new-journal\":{\"title\":\"$:/core/ui/KeyboardShortcuts/new-journal\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((new-journal))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure actions()\\n{{$:/core/ui/Actions/new-journal}}\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]limit[1]] %>\\n\\t\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\\t\u003C% endif %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-simple-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\u003C% else %>\\n\\t\u003C$navigator story=\\\"$:/StoryList\\\" history=\\\"$:/HistoryList\\\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\u003C\u003Cactions>>\\n\\t\u003C/$navigator>\\n\u003C% endif %>\"},\"$:/core/ui/KeyboardShortcuts/new-tiddler\":{\"title\":\"$:/core/ui/KeyboardShortcuts/new-tiddler\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((new-tiddler))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure actions()\\n{{$:/core/ui/Actions/new-tiddler}}\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]limit[1]] %>\\n\\t\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\\t\u003C% endif %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-simple-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\u003C% else %>\\n\\t\u003C$navigator story=\\\"$:/StoryList\\\" history=\\\"$:/HistoryList\\\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\u003C\u003Cactions>>\\n\\t\u003C/$navigator>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/remove-column\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/remove-column\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((remove-column))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure remove-column-actions()\\n\u003C$set name=\\\"columnCount\\\" value={{{ [list[$:/columns]count[]] }}}>\\n\\t\u003C$list filter=\\\"[[$:/columns]get[current-column]match\u003CcolumnCount>]\\\">\\n\\t\\t\u003C$action-setfield $tiddler=\\\"$:/columns\\\" current-column={{{ [\u003CcolumnCount>subtract[1]!match[0]] ~1 }}}/>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[\u003CcolumnCount>!match[1]]\\\">\\n\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"-[\u003CcolumnCount>]\\\"/>\\n\\t\u003C/$list>\\n\u003C/$set>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$let columns={{{ [list[$:/columns]count[]] ~1 }}}>\\n\\t\\t\\t\u003C\u003Cremove-column-actions>>\\n\\t\\t\u003C/$let>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/core/ui/KeyboardShortcuts/toggle-sidebar\":{\"title\":\"$:/core/ui/KeyboardShortcuts/toggle-sidebar\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((toggle-sidebar))\",\"text\":\"\\\\whitespace trim\\n\u003C%if [[$:/state/sidebar]is[missing]] [{$:/state/sidebar}match[yes]] %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/sidebar\\\" text=\\\"no\\\"/>\\n\u003C% else %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/sidebar\\\" text=\\\"yes\\\"/>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/StartupActions/current-tiddlers\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/StartupActions/current-tiddlers\",\"tags\":\"$:/tags/StartupAction/Browser\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>]\\\" variable=\\\"column\\\">\\n\\t\u003C$let tv-story-list={{{ [[$:/StoryList-]addsuffix\u003Ccolumn>!match[$:/StoryList-]] ~$:/StoryList-1 }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003Ccolumn>!match[$:/HistoryList-]] ~$:/HistoryList-1 }}} currentTiddler={{{ [list\u003Ctv-story-list>nth[1]] }}}>\\n\\t\\t\u003C%if [\u003CcurrentTiddler>!is[blank]!match[]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CcurrentTiddler>>/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$let>\\n\u003C/$list>\"},\"$:/config/DefaultColourMappings/tiddlyflex-box-shadow\":{\"title\":\"$:/config/DefaultColourMappings/tiddlyflex-box-shadow\",\"text\":\"rgba(0,0,0,0.6)\"},\"$:/config/DefaultColourMappings/tiddlyflex-sidebar-resizer\":{\"title\":\"$:/config/DefaultColourMappings/tiddlyflex-sidebar-resizer\",\"text\":\"rgba(0,0,0,0.2)\"},\"$:/config/ShortcutInfo/add-column\":{\"title\":\"$:/config/ShortcutInfo/add-column\",\"text\":\"Add one more column\"},\"$:/config/ShortcutInfo/cancel-close-tiddler\":{\"title\":\"$:/config/ShortcutInfo/cancel-close-tiddler\",\"text\":\"Cancel or close the current tiddler\"},\"$:/config/ShortcutInfo/column-down\":{\"title\":\"$:/config/ShortcutInfo/column-down\",\"text\":\"Select the next column at the left\"},\"$:/config/ShortcutInfo/column-up\":{\"title\":\"$:/config/ShortcutInfo/column-up\",\"text\":\"Select the next column at the right\"},\"$:/config/ShortcutInfo/dragging\":{\"title\":\"$:/config/ShortcutInfo/dragging\",\"text\":\"Toggle dragging on or off\"},\"$:/config/ShortcutInfo/edit-tiddler\":{\"title\":\"$:/config/ShortcutInfo/edit-tiddler\",\"text\":\"Edit the current tiddler\"},\"$:/config/ShortcutInfo/filter-river\":{\"title\":\"$:/config/ShortcutInfo/filter-river\",\"text\":\"Filter the story river by the search input\"},\"$:/config/ShortcutInfo/fullscreen\":{\"title\":\"$:/config/ShortcutInfo/fullscreen\",\"text\":\"Toggle fullscreen view of the current tiddler\"},\"$:/config/ShortcutInfo/move-down\":{\"title\":\"$:/config/ShortcutInfo/move-down\",\"text\":\"Move the current tiddler down\"},\"$:/config/ShortcutInfo/move-left\":{\"title\":\"$:/config/ShortcutInfo/move-left\",\"text\":\"Move the current tiddler to the left\"},\"$:/config/ShortcutInfo/move-right\":{\"title\":\"$:/config/ShortcutInfo/move-right\",\"text\":\"Move the current tiddler to the right\"},\"$:/config/ShortcutInfo/move-up\":{\"title\":\"$:/config/ShortcutInfo/move-up\",\"text\":\"Move the current tiddler up\"},\"$:/config/ShortcutInfo/navigate-down\":{\"title\":\"$:/config/ShortcutInfo/navigate-down\",\"text\":\"Navigate down to the next tiddler\"},\"$:/config/ShortcutInfo/navigate-up\":{\"title\":\"$:/config/ShortcutInfo/navigate-up\",\"text\":\"Navigate up to the next tiddler\"},\"$:/config/ShortcutInfo/remove-column\":{\"title\":\"$:/config/ShortcutInfo/remove-column\",\"text\":\"Remove one column\"},\"$:/config/shortcuts/add-column\":{\"title\":\"$:/config/shortcuts/add-column\",\"text\":\"ctrl-alt-N\"},\"$:/config/shortcuts/cancel-close-tiddler\":{\"title\":\"$:/config/shortcuts/cancel-close-tiddler\",\"text\":\"alt-C\"},\"$:/config/shortcuts/column-down\":{\"title\":\"$:/config/shortcuts/column-down\",\"text\":\"alt-Left\"},\"$:/config/shortcuts/column-up\":{\"title\":\"$:/config/shortcuts/column-up\",\"text\":\"alt-Right\"},\"$:/config/shortcuts/dragging\":{\"title\":\"$:/config/shortcuts/dragging\",\"text\":\"alt-D\"},\"$:/config/shortcuts/edit-tiddler\":{\"title\":\"$:/config/shortcuts/edit-tiddler\",\"text\":\"alt-E\"},\"$:/config/shortcuts/filter-river\":{\"title\":\"$:/config/shortcuts/filter-river\",\"text\":\"alt-F\"},\"$:/config/shortcuts/fullscreen\":{\"title\":\"$:/config/shortcuts/fullscreen\",\"text\":\"alt-shift-F\"},\"$:/config/shortcuts/move-down\":{\"title\":\"$:/config/shortcuts/move-down\",\"text\":\"alt-shift-Down\"},\"$:/config/shortcuts/move-left\":{\"title\":\"$:/config/shortcuts/move-left\",\"text\":\"alt-shift-Left\"},\"$:/config/shortcuts/move-right\":{\"title\":\"$:/config/shortcuts/move-right\",\"text\":\"alt-shift-Right\"},\"$:/config/shortcuts/move-up\":{\"title\":\"$:/config/shortcuts/move-up\",\"text\":\"alt-shift-Up\"},\"$:/config/shortcuts/navigate-down\":{\"title\":\"$:/config/shortcuts/navigate-down\",\"text\":\"alt-Down\"},\"$:/config/shortcuts/navigate-up\":{\"title\":\"$:/config/shortcuts/navigate-up\",\"text\":\"alt-Up\"},\"$:/config/shortcuts/remove-column\":{\"title\":\"$:/config/shortcuts/remove-column\",\"text\":\"ctrl-alt-M\"},\"$:/config/ViewToolbarButtons/Visibility/$:/plugins/BTC/TiddlyFlex/ui/Buttons/fullscreen\":{\"title\":\"$:/config/ViewToolbarButtons/Visibility/$:/plugins/BTC/TiddlyFlex/ui/Buttons/fullscreen\",\"text\":\"hide\"},\"$:/config/tiddlyflex/dragndrop/AnimationDuration\":{\"title\":\"$:/config/tiddlyflex/dragndrop/AnimationDuration\",\"text\":\"175\"},\"$:/config/tiddlyflex/navigation/edit-missing-tiddlers\":{\"title\":\"$:/config/tiddlyflex/navigation/edit-missing-tiddlers\",\"text\":\"no\"},\"$:/config/tiddlyflex/sidebar/resizer\":{\"title\":\"$:/config/tiddlyflex/sidebar/resizer\",\"text\":\"no\"},\"$:/config/tiddlyflex/sidebar/width\":{\"title\":\"$:/config/tiddlyflex/sidebar/width\",\"text\":\"15%\"},\"$:/config/tiddlyflex/story-river/dynanode/timeout\":{\"title\":\"$:/config/tiddlyflex/story-river/dynanode/timeout\",\"text\":\"25\"},\"$:/config/tiddlyflex/story-river/dynanode\":{\"title\":\"$:/config/tiddlyflex/story-river/dynanode\",\"text\":\"no\"},\"$:/config/tiddlyflex/story-river/filter/fields\":{\"title\":\"$:/config/tiddlyflex/story-river/filter/fields\",\"text\":\"*\"},\"$:/config/tiddlyflex/story-river/filter/flags\":{\"title\":\"$:/config/tiddlyflex/story-river/filter/flags\",\"text\":\"words\"},\"$:/config/tiddlyflex/story-river/follow-current-column\":{\"title\":\"$:/config/tiddlyflex/story-river/follow-current-column\",\"text\":\"yes\"},\"$:/config/tiddlyflex/story-river/min-width\":{\"title\":\"$:/config/tiddlyflex/story-river/min-width\",\"text\":\"300px\"},\"$:/config/tiddlyflex/story-river/padding\":{\"title\":\"$:/config/tiddlyflex/story-river/padding\",\"text\":\"42px\"},\"$:/config/tiddlyflex/story-river/tiddler/ClassFilters/adding\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/ClassFilters/adding\",\"tags\":\"$:/tags/ClassFilters/TiddlerTemplate\",\"text\":\"[\u003C..currentTiddler>addprefix[$:/state/tiddlyflex/adding/]!is[missing]then[tc-tiddlyflex-adding]]\"},\"$:/config/tiddlyflex/story-river/tiddler/ClassFilters/removing\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/ClassFilters/removing\",\"tags\":\"$:/tags/ClassFilters/TiddlerTemplate\",\"text\":\"[\u003C..currentTiddler>addprefix[$:/state/tiddlyflex/removing/]!is[missing]then[tc-tiddlyflex-removing]]\"},\"$:/config/tiddlyflex/story-river/tiddler/EditTemplate/StoryTiddlerTemplateFilter\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/EditTemplate/StoryTiddlerTemplateFilter\",\"tags\":\"$:/tags/StoryTiddlerTemplateFilter\",\"list-before\":\"\",\"text\":\"[is[draft]then{$:/layout}match[$:/plugins/BTC/TiddlyFlex/ui/Layout]then[$:/plugins/BTC/TiddlyFlex/ui/Templates/EditTemplate]]\"},\"$:/config/tiddlyflex/story-river/tiddler/ViewTemplate/StoryTiddlerTemplateFilter\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/ViewTemplate/StoryTiddlerTemplateFilter\",\"tags\":\"$:/tags/StoryTiddlerTemplateFilter\",\"list-before\":\"\",\"text\":\"[!is[draft]then{$:/layout}match[$:/plugins/BTC/TiddlyFlex/ui/Layout]then[$:/plugins/BTC/TiddlyFlex/ui/Templates/ViewTemplate]]\"},\"$:/config/tiddlyflex/story-river/tiddler/box-shadow-spread\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/box-shadow-spread\",\"text\":\"4px\"},\"$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar\",\"text\":\"3\"},\"$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint\",\"text\":\"4\"},\"$:/config/tiddlyflex/story-river/tiddler/margin-bottom\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/margin-bottom\",\"text\":\"28px\"},\"$:/plugins/BTC/TiddlyFlex/styles/base\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/base\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\".tc-tiddlyflex-container {\\n\\tdisplay: flex;\\n\\tflex-flow: column;\\n\\tjustify-content: flex-start;\\n\\talign-items: stretch;\\n\\theight: 100vh;\\n\\tmax-height: 100vh;\\n\\twidth: 100vw;\\n\\tmax-width: 100vw;\\n\\toutline: none;\\n\\toverflow: clip;\\n}\\n\\n.tc-tiddlyflex-main-wrapper {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-grow: 1;\\n}\\n\\n.tc-tiddlyflex-main {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-grow: 0;\\n\\tflex-shrink: 1;\\n\\tflex-basis: 100%;\\n\\tmax-height: 100%;\\n\\tmax-width: 100%;\\n\\tposition: relative;\\n}\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-main {\\n\\t\\t-webkit-transition: max-width {{$:/config/AnimationDuration}}ms linear;\\n\\t\\ttransition: max-width {{$:/config/AnimationDuration}}ms linear;\\n\\t}\\n\\n}\\n\\n\u003C% if [{$:/state/sidebar}match[no]] %>\\n\\n\\t.tc-tiddlyflex-main {\\n\\t\\t\u003C!--max-width: calc(100% + ((100vw / 100) * {{{ [{$:/config/tiddlyflex/sidebar/width}removesuffix[%]] ~[{$:/config/tiddlyflex/sidebar/width}removesuffix[px]] }}}));-->\\n\\t\\tmax-width: calc(100% + {{$:/config/tiddlyflex/sidebar/width}});\\n\\t}\\n\\n\u003C% endif %>\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-main {\\n\\t\\toverflow-x: clip;\\n\\t}\\n\\n}\\n\\n.tc-tiddlyflex-header {\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\tbox-shadow: 0 1px 5px -1px \u003C\u003Ccolour tiddlyflex-box-shadow>>;\\n\\tz-index: 999;\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n}\\n\\n.tc-tiddlyflex-footer {\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\tbox-shadow: 0 -1px 5px -1px \u003C\u003Ccolour tiddlyflex-box-shadow>>;\\n\\tz-index: 999;\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n}\\n\\n.tc-tiddlyflex-leftbar {\\n\\tdisplay: flex;\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\tbox-shadow: 1px 0 5px -1px \u003C\u003Ccolour tiddlyflex-box-shadow>>;;\\n\\tz-index: 998;\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n}\\n\\n/***************/\\n/* STORY RIVER */\\n/***************/\\n\\n.tc-tiddlyflex-story-river-container {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: stretch;\\n\\tflex-grow: 1;\\n\\tflex-shrink: 0;\\n\\tflex-basis: 100%;\\n\\toverflow: hidden;\\n\\tmax-height: 100%;\\n\\tmax-width: 100%;\\n}\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-story-river-container {\\n\\t\\t-webkit-transition: flex-basis {{$:/config/AnimationDuration}}ms linear, max-width {{$:/config/AnimationDuration}}ms linear;\\n\\t\\ttransition: flex-basis {{$:/config/AnimationDuration}}ms linear, max-width {{$:/config/AnimationDuration}}ms linear;\\n\\t}\\n\\n}\\n\\n\u003C%if [{$:/state/sidebar}!match[no]] %>\\n\\n\\t.tc-tiddlyflex-story-river-container {\\n\\t\\tflex-basis: calc(100% - {{$:/config/tiddlyflex/sidebar/width}});\\n\\t\\tmax-width: calc(100% - {{$:/config/tiddlyflex/sidebar/width}});\\n\\t}\\n\\n\u003C% endif %>\\n\\n\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\n\\t.tc-tiddlyflex-story-river-container {\\n\\t\\t-webkit-transition: none;\\n\\t\\ttransition: none;\\n\\t}\\n\\n\u003C% endif %>\\n\\n\u003C%if [{$:/config/tiddlyflex/sidebar/resizer}match[yes]then[$:/state/sidebar/posx]!is[missing]] %>\\n\\n\\t\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\n\\t\\t.tc-tiddlyflex-story-river-container {\\n\\t\\t\\tflex-basis: max(max(calc({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px)),calc({{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]] }}} * {{$:/config/tiddlyflex/story-river/min-width}})),calc(100% - (100% - ({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px)))));\\n\\t\\t}\\n\\n\\t\u003C% else %>\\n\\n\\t\\t.tc-tiddlyflex-story-river-container {\\n\\t\\t\\tflex-basis: max(max(calc({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px)),calc({{$:/state/sidebar/posx!!column-count}} * {{$:/config/tiddlyflex/story-river/min-width}})),calc(100% - (100% - ({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px)))));\\n\\t\\t}\\n\\n\\t\u003C% endif %>\\n\\n\u003C% endif %>\\n\\n\u003C%if [{$:/state/sidebar}match[no]] %>\\n\\n\\t.tc-tiddlyflex-story-river-container {\\n\\t\\tflex-basis: 100%;\\n\\t}\\n\\n\u003C% endif %>\\n\\n.tc-tiddlyflex-story-river-container-inner {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: flex-start;\\n\\talign-items: stretch;\\n\\tmax-height: 100%;\\n\\tflex-grow: 1;\\n\\tflex-shrink: 0;\\n}\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-story-river-container-inner {\\n\\t\\toverflow: hidden;\\n\\t\\tflex-basis: 0;\\n\\t}\\n\\n}\\n\\n.tc-tiddlyflex-story-river-wrapper {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tflex-shrink: 0;\\n\\tflex-grow: 1;\\n\\toverflow: hidden;\\n}\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-story-river-wrapper {\\n\\t\\tflex-basis: 0;\\n\\t}\\n\\n}\\n\\n.tc-tiddlyflex-story-river-wrapper-inner {\\n\\tflex-grow: 1;\\n\\tflex-shrink: 1;\\n\\toverflow-y: auto;\\n\\tscroll-behavior: smooth;\\n\\tz-index: 600;\\n}\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-story-river-wrapper-inner {\\n\\t\\tflex-basis: 0;\\n\\t}\\n\\n}\\n\\n.tc-tiddlyflex-story-river-wrapper .tc-tiddler-frame {\\n\\twidth: 100%;\\n\\tmargin-bottom: 0;\\n\\t-webkit-box-shadow: 0 0 {{$:/config/tiddlyflex/story-river/tiddler/box-shadow-spread}} \u003C\u003Ccolour tiddlyflex-box-shadow>>;\\n\\tbox-shadow: 0 0 {{$:/config/tiddlyflex/story-river/tiddler/box-shadow-spread}} \u003C\u003Ccolour tiddlyflex-box-shadow>>;\\n}\\n\\n.tc-tiddlyflex-story-river-wrapper-inner .tc-tiddlyflex-story-river {\\n\\tpadding: {{$:/config/tiddlyflex/story-river/padding}};\\n\\tmin-height: 100%;\\n}\\n\\n.tc-tiddlyflex-story-river-inner > .tc-tiddler-view-frame, .tc-tiddlyflex-story-river-inner > .tc-tiddler-edit-frame {\\n\\tmargin-bottom: {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}};\\n}\\n\\n.tc-tiddlyflex-story-river .tc-navigating .tc-tiddler-frame {\\n\\tborder: 2px dashed \u003C\u003Ccolour primary>>;\\n}\\n\\n/***********/\\n/* SIDEBAR */\\n/***********/\\n\\n.tc-tiddlyflex-sidebar {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: stretch;\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\tmax-height: 100%;\\n\\tz-index: 998;\\n\\t-webkit-box-shadow: 0px 0px 5px 0px \u003C\u003Ccolour tiddlyflex-box-shadow>>;\\n\\tbox-shadow: 0px 0px 5px 0px \u003C\u003Ccolour tiddlyflex-box-shadow>>;\\n}\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-sidebar {\\n\\t\\twidth: {{$:/config/tiddlyflex/sidebar/width}};\\n\\t\\t-webkit-transition: box-shadow {{$:/config/AnimationDuration}}ms linear;\\n\\t\\ttransition: box-shadow {{$:/config/AnimationDuration}}ms linear;\\n\\t}\\n\\n}\\n\\n\u003C%if [{$:/config/tiddlyflex/sidebar/resizer}match[yes]then[$:/state/sidebar/posx]!is[missing]] %>\\n\\n\\t\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\n\\t\\t.tc-tiddlyflex-sidebar {\\n\\t\\t\\twidth: max(min(max(calc(100% - ({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px))),{{$:/config/tiddlyflex/sidebar/width}}),calc(100% - ({{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]] }}} * {{$:/config/tiddlyflex/story-river/min-width}}))),{{$:/config/tiddlyflex/sidebar/width}});\\n\\t\\t}\\n\\n\\t\u003C% else %>\\n\\n\\t\\t.tc-tiddlyflex-sidebar {\\n\\t\\t\\twidth: max(min(max(calc(100% - ({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px))),{{$:/config/tiddlyflex/sidebar/width}}),calc(100% - ({{$:/state/sidebar/posx!!column-count}} * {{$:/config/tiddlyflex/story-river/min-width}}))),{{$:/config/tiddlyflex/sidebar/width}});\\n\\t\\t}\\n\\n\\t\u003C% endif %>\\n\\n\u003C% endif %>\\n\\n\u003C%if [{$:/state/sidebar}match[no]] %>\\n\\n\\t.tc-tiddlyflex-sidebar {\\n\\t\\t-webkit-box-shadow: 0px 0px 0px 0px transparent;\\n\\t\\tbox-shadow: 0px 0px 0px 0px transparent;\\n\\t}\\n\\n\u003C% endif %>\\n\\n.tc-tiddlyflex-sidebar-container {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tjustify-content: flex-start;\\n\\talign-items: stretch;\\n\\tmax-height: 100%;\\n\\tflex-grow: 1;\\n\\tflex-shrink: 0;\\n}\\n\\n.tc-tiddlyflex-sidebar-container-inner {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n\\tflex-shrink: 0;\\n\\toverflow-y: auto;\\n\\tscroll-behavior: smooth;\\n\\tflex-basis: 0;\\n\\tflex-direction: row;\\n}\\n\\n.tc-tiddlyflex-sidebar-scrollable {\\n\\tpadding-top: 42px;\\n\\tpadding-left: 42px;\\n\\tmin-width: 100%;\\n}\\n\\n.tc-tiddlyflex-sidebar-shown-eventcatcher {\\n\\t-webkit-tap-highlight-color: transparent;\\n\\t-webkit-touch-callout: none;\\n\\t-webkit-user-select: none;\\n\\t-khtml-user-select: none;\\n\\t-moz-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none;\\n}\\n\\n.tc-tiddlyflex-sidebar-hide {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tbottom: 0;\\n\\tright: 0;\\n\\twidth: 100vw;\\n\\theight: 100vh;\\n\\tbackground: 0 0;\\n\\tvisibility: hidden;\\n\\tz-index: 1000;\\n\\tcursor: pointer;\\n\\t-webkit-transition: background {{$:/config/AnimationDuration}}ms {{$:/config/AnimationDuration}}ms, visibility 0s calc(2 * {{$:/config/AnimationDuration}}ms);\\n\\ttransition: background {{$:/config/AnimationDuration}}ms {{$:/config/AnimationDuration}}ms, visibility 0s calc(2 * {{$:/config/AnimationDuration}}ms);\\n}\\n\\n/******************/\\n/* ACTIVE COLUMNS */\\n/******************/\\n\\n.tc-tiddlyflex-story-river-active {\\n\\tbackground: repeating-linear-gradient(\\n\\t\\tto right,\\n\\t\\t\u003C\u003Ccolour page-background>>,\\n\\t\\t\u003C\u003Ccolour page-background>> 10px,\\n\\t\\t\u003C\u003Ccolour tiddler-background>> 10px,\\n\\t\\t\u003C\u003Ccolour tiddler-background>> 20px\\n\\t);\\n}\\n\\n.tc-tiddlyflex-activate-column {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\theight: 100%;\\n\\tcursor: default;\\n\\tbackground-color: transparent;\\n\\t-webkit-tap-highlight-color: transparent;\\n\\t-webkit-touch-callout: none;\\n\\t-webkit-user-select: none;\\n\\t-khtml-user-select: none;\\n\\t-moz-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none;\\n}\\n\\n/*************/\\n/* DROPZONES */\\n/*************/\\n\\ndiv[class^=\\\"tc-tiddlyflex-dropzone-\\\"] {\\n\\tmin-height: 100%;\\n\\tposition: relative;\\n}\\n\\ndiv[class^=\\\"tc-tiddlyflex-dropzone-\\\"].tc-dragover:before {\\n\\tz-index: 999;\\n\\tdisplay: block;\\n\\tposition: sticky;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbackground: \u003C\u003Ccolour dropzone-background>>;\\n\\ttext-align: center;\\n\\tcontent: \\\"\u003C\u003Clingo DropMessage>>\\\";\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/current-tiddler\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/current-tiddler\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define tiddlyflex-style-current-tiddler()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentColumn)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"]:not(.tc-navigating) > .tc-tiddler-frame {\\n\\tborder: 1px solid \u003C\u003Ccolour tiddlyflex-current-tiddler>>;\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-style-unfocused-tiddlers()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"]:not(.tc-navigating) > .tc-tiddler-frame {\\n\\tborder: 1px solid \u003C\u003Ccolour tiddlyflex-current-tiddler-muted>>;\\n}\\n\\n\\\\end\\n\\n\u003C$let currentColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] }}} historyList={{{ [[$:/HistoryList-]addsuffix\u003CcurrentColumn>!match[$:/HistoryList-]] ~[[$:/HistoryList-1]] }}}>\\n\\n\\t\u003C$set name=\\\"cssEscapedTitle\\\" value={{{ [\u003ChistoryList>get[current-tiddler]escapecss[]] }}}>\\n\\n\\t\\t\u003C\u003Ctiddlyflex-style-current-tiddler>>\\n\\n\\t\u003C/$set>\\n\\n\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>] +[!match\u003CcurrentColumn>]\\\" variable=\\\"column\\\">\\n\\n\\t\\t\u003C$let historyList={{{ [[$:/HistoryList-]addsuffix\u003Ccolumn>!match[$:/HistoryList-]] ~[[$:/HistoryList-1]] }}} cssEscapedTitle={{{ [\u003ChistoryList>get[current-tiddler]escapecss[]] }}}>\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-style-unfocused-tiddlers>>\\n\\n\\t\\t\u003C/$let>\\n\\n\\t\u003C/$list>\\n\\n\u003C/$let>\"},\"$:/plugins/BTC/TiddlyFlex/styles/dragndrop\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/dragndrop\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define tiddlyflex-tiddler-frame-transitions()\\n\\n.tc-tiddlyflex-story-river-inner > .tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-inner > .tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\ttransition: margin-top {{$:/config/tiddlyflex/dragndrop/AnimationDuration}}ms linear, margin-bottom {{$:/config/tiddlyflex/dragndrop/AnimationDuration}}ms linear;\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-position-start-tiddlers-no-copying()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(startingNextTiddlerCSSEscaped)$\\\"].tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(startingNextTiddlerCSSEscaped)$\\\"].tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\ttransition: none;\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(startingNextTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame {\\n\\tmargin-top: calc({{$:/state/dragging!!height}}px + (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) + 2px);\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(startingNextTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame .tc-tiddlyflex-droppable-top-half {\\n\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + {{$:/config/tiddlyflex/story-river/padding}} + {{$:/state/dragging!!height}}px + 2px);\\n\\ttop: calc(-{{$:/state/dragging!!height}}px - (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) - 2px);\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-position-start-tiddlers-no-copying-nth-0()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(startingNextTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame {\\n\\tmargin-top: calc({{$:/state/dragging!!height}}px + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + 2px);\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(startingNextTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame .tc-tiddlyflex-droppable-top-half {\\n\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + {{$:/config/tiddlyflex/story-river/padding}} + {{$:/state/dragging!!height}}px + 2px);\\n\\ttop: calc(-{{$:/state/dragging!!height}}px - {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} - {{$:/config/tiddlyflex/story-river/padding}} - 2px);\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-position-start-tiddlers-copying()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(dragTiddlerCSSEscaped)$\\\"].tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(dragTiddlerCSSEscaped)$\\\"].tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\ttransition: none;\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(dragTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame {\\n\\tmargin-top: calc({{$:/state/dragging!!height}}px + (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) + 2px);\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(dragTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame .tc-tiddlyflex-droppable-top-half {\\n\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + {{$:/config/tiddlyflex/story-river/padding}} + {{$:/state/dragging!!height}}px + 2px);\\n\\ttop: calc(-{{$:/state/dragging!!height}}px - (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) - 2px);\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-position-start-tiddlers-copying-nth-0()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(dragTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame {\\n\\tmargin-top: calc({{$:/state/dragging!!height}}px + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + 2px);\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(dragTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame .tc-tiddlyflex-droppable-top-half {\\n\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + {{$:/config/tiddlyflex/story-river/padding}} + {{$:/state/dragging!!height}}px + 2px);\\n\\ttop: calc(-{{$:/state/dragging!!height}}px - {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} - {{$:/config/tiddlyflex/story-river/padding}} - 2px);\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-target-tiddler-margin()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddler-view-frame:not([data-tiddler-title=\\\"$(targetTiddlerCSSEscaped)$\\\"]) .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddler-edit-frame:not([data-tiddler-title=\\\"$(targetTiddlerCSSEscaped)$\\\"]) .tc-tiddler-frame {\\n\\tmargin-top: calc( {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + 2px);\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddler-view-frame:first-of-type:not([data-tiddler-title=\\\"$(targetTiddlerCSSEscaped)$\\\"]) .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddler-edit-frame:first-of-type:not([data-tiddler-title=\\\"$(targetTiddlerCSSEscaped)$\\\"]) .tc-tiddler-frame {\\n\\tmargin-top: 0;\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(targetTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame {\\n\\tmargin-top: calc({{$:/state/dragging!!height}}px + (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) + 2px);\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-target-tiddler-margin-nth-0()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(targetTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame {\\n\\tmargin-top: calc({{$:/state/dragging!!height}}px + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + 2px);\\n}\\n\\n\\\\end\\n\\n\u003C%if [{$:/state/dragging}match[yes]] %>\\n\\n\\t.tc-tiddlyflex-droppable-top-half {\\n\\t\\tposition: absolute;\\n\\t\\ttop: calc( -{{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} - 2px);\\n\\t\\tleft: calc( -{{$:/config/tiddlyflex/story-river/padding}} - 1px);\\n\\t\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + 2px);\\n\\t\\twidth: calc(100% + (2 * {{$:/config/tiddlyflex/story-river/padding}}) + 2px);\\n\\t\\tdisplay: none;\\n\\t\\tz-index: 501;\\n\\t}\\n\\n\\t.tc-tiddler-view-frame:first-of-type .tc-tiddlyflex-droppable-top-half, .tc-tiddler-edit-frame:first-of-type .tc-tiddlyflex-droppable-top-half {\\n\\t\\ttop: calc( -{{$:/config/tiddlyflex/story-river/padding}} - 2px);\\n\\t\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/padding}} + 2px);\\n\\t}\\n\\n\\t.tc-tiddlyflex-droppable-bottom-half {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 50%;\\n\\t\\tleft: calc( -{{$:/config/tiddlyflex/story-river/padding}} - 1px);\\n\\t\\theight: calc(50% + 2px);\\n\\t\\twidth: calc(100% + (2 * {{$:/config/tiddlyflex/story-river/padding}}) + 2px);\\n\\t\\tz-index: 501;\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t.tc-tiddlyflex-droppable-top-half.tc-dragover {\\n\\t\\theight: calc(50% + (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) + {{$:/state/dragging!!height}}px + 2px);\\n\\t\\ttop: calc(-{{$:/state/dragging!!height}}px - (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) - 2px);\\n\\t}\\n\\n\\t.tc-tiddler-view-frame:first-of-type .tc-tiddlyflex-droppable-top-half.tc-dragover, .tc-tiddler-edit-frame:first-of-type .tc-tiddlyflex-droppable-top-half.tc-dragover {\\n\\t\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + {{$:/config/tiddlyflex/story-river/padding}} + {{$:/state/dragging!!height}}px + 2px);\\n\\t\\ttop: calc(-{{$:/state/dragging!!height}}px - {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} - {{$:/config/tiddlyflex/story-river/padding}} - 2px);\\n\\t}\\n\\n\\t.tc-tiddlyflex-droppable-bottom-half.tc-dragover {\\n\\t\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + {{$:/state/dragging!!height}}px + 2px);\\n\\t}\\n\\n\\t\u003C%if [{$:/state/dragging}match[yes]] %>\\n\\n\\t\\t.tc-tiddlyflex-droppable-top-half, .tc-tiddlyflex-droppable-bottom-half {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t\u003C$set name=\\\"dragTiddler\\\" value={{$:/state/dragging!!drag-tiddler}}>\\n\\n\\t\\t\\t\u003C$set name=\\\"dragTiddlerCSSEscaped\\\" value={{{ [\u003CdragTiddler>escapecss[]] }}}>\\n\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-tiddler-frame-transitions>>\\n\\n\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\u003C/$set>\\n\\n\\t\u003C% endif %>\\n\\n\\t\u003C$let currentRiver={{$:/state/dragging!!river}} story={{{ [[$:/StoryList-]addsuffix\u003CcurrentRiver>] }}} targetTiddler={{$:/state/dragging!!target}} nextTiddler={{{ [list\u003Cstory>after\u003CtargetTiddler>] }}} margin={{$:/state/dragging!!margin}} targetTiddlerCSSEscaped={{{ [\u003Cmargin>match[top]then\u003CtargetTiddler>escapecss[]] [\u003Cmargin>match[bottom]then\u003CnextTiddler>escapecss[]] }}}>\\n\\n\\t\\t\u003C\u003Ctiddlyflex-target-tiddler-margin>>\\n\\n\\t\\t\u003C%if [{$:/state/dragging!!nth}match[0]] %>\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-target-tiddler-margin-nth-0>>\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\u003C/$let>\\n\\n\\t.tc-tiddlyflex-below-story-river-droppable {\\n\\t\\tposition: absolute;\\n\\t\\twidth: calc(100% + {{$:/config/tiddlyflex/story-river/padding}});\\n\\t\\theight: calc(100% + {{$:/config/tiddlyflex/story-river/padding}});\\n\\t\\tleft: -{{$:/config/tiddlyflex/story-river/padding}};\\n\\t\\ttop: -{{$:/config/tiddlyflex/story-river/padding}};\\n\\t}\\n\\n\\t\u003C$let currentRiver={{$:/state/dragging!!start-river}} dragTiddler={{$:/state/dragging!!drag-tiddler}} startingNextTiddler={{$:/state/dragging!!starting-next-tiddler}} startingNextTiddlerCSSEscaped={{{ [\u003CstartingNextTiddler>escapecss[]] }}} dragTiddlerCSSEscaped={{{ [\u003CdragTiddler>escapecss[]] }}}>\\n\\n\\t\\t\u003C%if [{$:/state/dragging!!copying}!match[yes]] %>\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-position-start-tiddlers-no-copying>>\\n\\n\\t\\t\\t\u003C%if [{$:/state/dragging!!nth}match[0]] %>\\n\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-position-start-tiddlers-no-copying-nth-0>>\\n\\n\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\u003C% else %>\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-position-start-tiddlers-copying>>\\n\\n\\t\\t\\t\u003C%if [{$:/state/dragging!!nth}match[0]] %>\\n\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-position-start-tiddlers-copying-nth-0>>\\n\\n\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\u003C/$let>\\n\\n\u003C% endif %>\\n\\n\u003C%if [{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}!match[no]] %>\\n\\n\\t.tc-tiddler-frame img {\\n\\t\\t-webkit-user-drag: none;\\n\\t\\t-khtml-user-drag: none;\\n\\t\\t-moz-user-drag: none;\\n\\t\\t-o-user-drag: none;\\n\\t\\tuser-drag: none;\\n\\t\\t-webkit-user-select: none;\\n\\t\\t-khtml-user-select: none;\\n\\t\\t-moz-user-select: none;\\n\\t\\t-o-user-select: none;\\n\\t\\t-ms-user-select: none;\\n\\t\\tuser-select: none;\\n\\t\\ttouch-action: none;\\n\\t\\tpointer-events: none;\\n\\t}\\n\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/styles/dynanode\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/dynanode\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\u003C%if [function[tiddlyflex-layout]then{$:/config/tiddlyflex/story-river/dynanode}match[yes]] %>\\n\\n\\t.tc-dynanode-track-tiddler-when-visible {\\n\\t\\ttransition: content-visibility {{$:/config/AnimationDuration}}ms;\\n\\t}\\n\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/styles/fullscreen\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/fullscreen\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define tiddlyflex-view-tiddler-full-screen()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"]:not(.tc-navigating), .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-navigating {\\n\\tposition: fixed;\\n\\tleft: 0;\\n\\ttop: 0;\\n\\theight: 100vh;\\n\\twidth: 100vw;\\n\\tz-index: 1004;\\n\\tborder: none;\\n\\tborder-radius: 0px;\\n}\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"]:not(.tc-navigating) > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-navigating > .tc-tiddler-frame {\\n\\tmin-height: 100%;\\n\\theight: 100%;\\n\\toverflow-y: auto;\\n\\tscroll-behavior: smooth;\\n\\tborder: none;\\n\\tborder-radius: 0px;\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-inherit-overflow-columns()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-wrapper-inner.tc-tiddlyflex-story-river-$(column)$ {\\n\\toverflow-y: hidden;\\n}\\n\\n\\\\end\\n\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\n\\t\u003C$list filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\" variable=\\\"fullScreenTiddler\\\">\\n\\n\\t\\t.tc-tiddlyflex-story-river-wrapper-inner {\\n\\t\\t\\tz-index: initial;\\n\\t\\t}\\n\\n\\t\\t\u003C$vars column={{{ [\u003CfullScreenTiddler>get[column]] }}} fullScreenTiddler={{{ [\u003CfullScreenTiddler>removeprefix[$:/state/tiddlyflex/story-river/fullscreen/]] }}}>\\n\\n\\t\\t\\t\u003C$let tiddlerTitle=\u003C\u003CfullScreenTiddler>> tiddlerTitleCSSEscaped={{{ [\u003CtiddlerTitle>escapecss[]] }}}>\\n\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-view-tiddler-full-screen>>\\n\\n\\t\\t\\t\u003C/$let>\\n\\n\\t\\t\u003C/$vars>\\n\\n\\t\\t@media (max-width: 991.98px) {\\n\\n\\t\\t\\t.tc-tiddlyflex-story-river-container-inner {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>]\\\" variable=\\\"column\\\">\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-inherit-overflow-columns>>\\n\\n\\t\\t\u003C/$list>\\n\\n\\t\u003C/$list>\\n\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/styles/icons\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/icons\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"svg.lucide.lucide-layout-dashboard {\\n\\tstroke: \u003C\u003Ccolour foreground>>;\\n\\tstroke-width: 3;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right svg.lucide {\\n\\tstroke: \u003C\u003Ccolour muted-foreground>>;\\n\\tfill: none;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right .tc-selected svg.lucide, .tc-tiddlyflex-top-toolbar-right .tc-btn-invisible:hover svg.lucide {\\n\\tstroke: \u003C\u003Ccolour foreground>>;\\n\\tfill: none;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right .tc-selected svg.lucide.lucide-grip {\\n\\tstroke: \u003C\u003Ccolour primary>>;\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/menu\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/menu\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-shown-when-narrow {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t\u003C%if [{$:/config/tiddlyflex/story-river/horizontal}!match[yes]] %>\\n\\n\\t\\t\u003C$list filter=\\\"[{$:/state/sidebar}match[no]] :then[subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]compare:number:gteq{$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint}] :else[subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]compare:number:gteq{$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar}]\\\" variable=\\\"column\\\">\\n\\n\\t\\t\\t.tc-tiddlyflex-column-\u003C\u003Ccolumn>> .tc-tiddler-controls > button:not(.tc-tiddlyflex-shown-when-narrow) {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.tc-tiddlyflex-column-\u003C\u003Ccolumn>> .tc-tiddler-controls .tc-tiddlyflex-shown-when-narrow {\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t}\\n\\n\\t\\t\u003C/$list>\\n\\n\\t\\t\u003C%if [[$:/state/sidebar/posx]!is[missing]] %>\\n\\n\\t\\t\\t\u003C$vars sidebarWidthPixels={{{ [{$:/config/tiddlyflex/sidebar/width}removesuffix[px]] }}} sidebarWidthPercentage={{{ [{$:/config/tiddlyflex/sidebar/width}removesuffix[%]] }}} drag-diff={{$:/state/sidebar/posx!!drag-diff}} selectednodeWidth={{$:/state/sidebar/posx!!selectednode-width}} containerWidth={{$:/state/sidebar/posx!!widgetnode-width}} columnCount={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]] }}} minStoryWidth={{{ [{$:/config/tiddlyflex/story-river/min-width}removesuffix[px]] }}} leftbarWidth={{$:/state/sidebar/posx!!leftbar-width}}>\\n\\n\\t\\t\\t\\t\u003C%if [\u003CsidebarWidthPixels>!is[blank]!match[]] %>\\n\\n\\t\\t\\t\\t\\t\u003C$let viewportWidth={{$:/state/DynaView/ViewportDimensions/Width}} containerWidth={{{ [\u003CviewportWidth>!is[blank]subtract\u003CleftbarWidth>] ~[\u003CcontainerWidth>] }}}>\\n\\n\\t\\t\\t\\t\\t\\t\u003C$let originalStoryContainerWidth={{{ [\u003CcontainerWidth>subtract\u003CsidebarWidthPixels>] }}} originalSingleColumnWidth={{{ [\u003CoriginalStoryContainerWidth>divide\u003CcolumnCount>] }}} sidebarResizerWidth={{{ [\u003CselectednodeWidth>divide[2]] }}} gripDiff={{{ [\u003CsidebarResizerWidth>subtract\u003Cdrag-diff>] }}} minStoryContainerWidth={{{ [\u003CminStoryWidth>multiply\u003CcolumnCount>] }}} sidebarWidthMax={{{ [\u003CcontainerWidth>subtract\u003CminStoryContainerWidth>] }}} sidebarWidth={{{ [\u003CcontainerWidth>subtract{$:/state/sidebar/posx}add\u003CgripDiff>compare:number:lteq\u003CsidebarWidthPixels>then\u003CsidebarWidthPixels>] ~[\u003CcontainerWidth>subtract{$:/state/sidebar/posx}add\u003CgripDiff>compare:number:gteq\u003CsidebarWidthMax>then\u003CsidebarWidthMax>] ~[\u003CcontainerWidth>subtract{$:/state/sidebar/posx}add\u003CgripDiff>] }}} maxStoryContainerWidth={{{ [\u003CcontainerWidth>subtract\u003CsidebarWidthPixels>] }}} storyContainerWidth={{{ [\u003CcontainerWidth>subtract\u003CsidebarWidth>compare:number:gteq\u003CminStoryContainerWidth>] ~[\u003CminStoryContainerWidth>] }}} singleColumnWidth={{{ [\u003CstoryContainerWidth>divide\u003CcolumnCount>compare:number:gt\u003CminStoryWidth>] ~[\u003CminStoryWidth>] }}} narrowWidthWhenSidebarShown={{{ [\u003CoriginalStoryContainerWidth>divide{$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar}compare:number:gteq\u003CminStoryWidth>] ~[\u003CminStoryWidth>multiply{$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar}divide\u003CcolumnCount>] }}}>\\n\\n\\t\\t\\t\\t\\t\\t\\t\u003C%if [\u003CsingleColumnWidth>compare:number:lteq\u003CnarrowWidthWhenSidebarShown>] %>\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t.tc-tiddler-controls > button:not(.tc-tiddlyflex-shown-when-narrow) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t.tc-tiddler-controls .tc-tiddlyflex-shown-when-narrow {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\\t\\t\\t\\t\u003C/$let>\\n\\n\\t\\t\\t\\t\\t\u003C/$let>\\n\\n\\t\\t\\t\\t\u003C% elseif [\u003CsidebarWidthPercentage>!is[blank]!match[]] %>\\n\\n\\t\\t\\t\\t\\t\u003C$let viewportWidth={{$:/state/DynaView/ViewportDimensions/Width}} containerWidth={{{ [\u003CviewportWidth>!is[blank]subtract\u003CleftbarWidth>] ~[\u003CcontainerWidth>] }}}>\\n\\n\\t\\t\\t\\t\\t\\t\u003C$set name=\\\"sidebarWidthPercentage\\\" value={{{ [\u003CcontainerWidth>divide[100]multiply\u003CsidebarWidthPercentage>] }}}>\\n\\n\\t\\t\\t\\t\\t\\t\\t\u003C$let originalStoryContainerWidth={{{ [\u003CcontainerWidth>subtract\u003CsidebarWidthPercentage>] }}} originalSingleColumnWidth={{{ [\u003CoriginalStoryContainerWidth>divide\u003CcolumnCount>] }}} sidebarResizerWidth={{{ [\u003CselectednodeWidth>divide[2]] }}} gripDiff={{{ [\u003CsidebarResizerWidth>subtract\u003Cdrag-diff>] }}} minStoryContainerWidth={{{ [\u003CminStoryWidth>multiply\u003CcolumnCount>] }}} sidebarWidthMax={{{ [\u003CcontainerWidth>subtract\u003CminStoryContainerWidth>] }}} sidebarWidth={{{ [\u003CcontainerWidth>subtract{$:/state/sidebar/posx}add\u003CgripDiff>compare:number:lteq\u003CsidebarWidthPercentage>then\u003CsidebarWidthPercentage>] ~[\u003CcontainerWidth>subtract{$:/state/sidebar/posx}add\u003CgripDiff>compare:number:gteq\u003CsidebarWidthMax>then\u003CsidebarWidthMax>] ~[\u003CcontainerWidth>subtract{$:/state/sidebar/posx}add\u003CgripDiff>] }}} maxStoryContainerWidth={{{ [\u003CcontainerWidth>subtract\u003CsidebarWidthPercentage>] }}} storyContainerWidth={{{ [\u003CcontainerWidth>subtract\u003CsidebarWidth>compare:number:gteq\u003CminStoryContainerWidth>] ~[\u003CminStoryContainerWidth>] }}} singleColumnWidth={{{ [\u003CstoryContainerWidth>divide\u003CcolumnCount>compare:number:gt\u003CminStoryWidth>] ~[\u003CminStoryWidth>] }}} narrowWidthWhenSidebarShown={{{ [\u003CoriginalStoryContainerWidth>divide{$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar}compare:number:gteq\u003CminStoryWidth>] ~[\u003CminStoryWidth>multiply{$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar}divide\u003CcolumnCount>] }}}>\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003C%if [\u003CsingleColumnWidth>compare:number:lteq\u003CnarrowWidthWhenSidebarShown>] %>\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t.tc-tiddler-controls > button:not(.tc-tiddlyflex-shown-when-narrow) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t.tc-tiddler-controls .tc-tiddlyflex-shown-when-narrow {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\\t\\t\\t\\t\\t\u003C/$let>\\n\\n\\t\\t\\t\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\\t\\t\\t\u003C/$let>\\n\\n\\t\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\\t\u003C/$vars>\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\u003C% endif %>\\n\\n}\\n\\n@media (max-width: 991.98px) {\\n\\n\\t.tc-tiddler-controls > button:not(.tc-tiddlyflex-shown-when-narrow) {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t.tc-tiddler-controls .tc-tiddlyflex-shown-when-narrow {\\n\\t\\tdisplay: block;\\n\\t}\\n\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/misc\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/misc\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\u003C%if [function[tiddlyflex-layout]] %>\\n\\n\\t.tc-tiddlyflex-sidebar .tc-sidebar-header {\\n\\t\\ttransition: none;\\n\\t}\\n\\n\\t.tc-tiddlyflex-top-toolbar .tc-show-sidebar-btn svg.tc-image-chevron-left, .tc-tiddlyflex-top-toolbar .tc-hide-sidebar-btn svg.tc-image-chevron-right {\\n\\t\\ttransform: none;\\n\\t}\\n\\n\\t.tc-modal-wrapper {\\n\\t\\tz-index: 999;\\n\\t}\\n\\n\\t.tc-plugin-reload-warning {\\n\\t\\tposition: relative;\\n\\t\\tpadding-top: 15px;\\n\\t\\tpadding-bottom: 15px;\\n\\t}\\n\\n\\t.tc-plugin-reload-warning p {\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\t.tc-drafts-list.tc-tiddlyflex-drafts-list {\\n\\t\\tz-index: 997;\\n\\t\\tposition: absolute;\\n\\t\\tfont-size: 0.8em;\\n\\t\\tleft: 0;\\n\\t\\tbottom: 0;\\n\\t}\\n\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/styles/narrow\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/narrow\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"@media (max-width: 991.98px) {\\n\\n\\t\u003C\u003Ctiddlyflex-css-horizontal-view>>\\n\\n\\t.tc-tiddlyflex-sidebar {\\n\\t\\twidth: 90%;\\n\\t}\\n\\n}\\n\\n@media (max-width: 767.98px) {\\n\\t\\n\\t.tc-tiddlyflex-top-toolbar .tc-sidebar-lists .tc-search input {\\n\\t\\twidth: 150px;\\n\\t}\\n\\n}\\n\\n@media (max-width: 575.98px) {\\n\\t\\n\\t.tc-tiddlyflex-top-toolbar .tc-sidebar-lists .tc-search input {\\n\\t\\twidth: 100px;\\n\\t}\\n\\n\\t.tc-tiddlyflex-top-toolbar .tc-sidebar-lists .tc-search .tc-image-down-arrow + em {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/scroll-margins\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/scroll-margins\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define tiddlyflex-scroll-margin-top-story-river-padding()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(tiddlyFlexColumn)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"].tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(tiddlyFlexColumn)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"].tc-tiddler-edit-frame {\\n\\tscroll-margin-top: {{$:/config/tiddlyflex/story-river/padding}};\\n\\tscroll-margin-left: {{$:/config/tiddlyflex/story-river/padding}};\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-scroll-margin-top()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(tiddlyFlexColumn)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"].tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(tiddlyFlexColumn)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"].tc-tiddler-edit-frame {\\n\\tscroll-margin-top: {{{ [{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}compare:number:lteq{$:/config/tiddlyflex/story-river/padding}] ~[{$:/config/tiddlyflex/story-river/padding}] }}};\\n\\tscroll-margin-left: {{$:/config/tiddlyflex/story-river/padding}};\\n}\\n\\n\\\\end\\n\\n\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\n\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\n\\t\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[nth[1]]\\\" variable=\\\"tiddler\\\">\\n\\n\\t\\t\\t\u003C$set name=\\\"cssEscapedTitle\\\" value={{{ [\u003Ctiddler>escapecss[]] }}}>\\n\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-scroll-margin-top-story-river-padding>>\\n\\n\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\u003C/$list>\\n\\n\\t\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-story-river-filter>] -[subfilter\u003Ctdff.tiddlyflex-story-river-filter>nth[1]]\\\" variable=\\\"tiddler\\\">\\n\\n\\t\\t\\t\u003C$set name=\\\"cssEscapedTitle\\\" value={{{ [\u003Ctiddler>escapecss[]] }}}>\\n\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-scroll-margin-top>>\\n\\n\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\u003C/$list>\\n\\n\\t\u003C/$set>\\n\\n\u003C/$list>\"},\"$:/plugins/BTC/TiddlyFlex/styles/sidebar-resizer\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/sidebar-resizer\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"@media (min-width: 992px) {\\n\\n\\t\u003C%if [{$:/config/tiddlyflex/sidebar/resizer}match[yes]] %>\\n\\n\\t\\t.tc-tiddlyflex-pointerdown-eventcatcher {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\n\\t\\t\\t.tc-tiddlyflex-pointerdown-eventcatcher {\\n\\t\\t\\t\\tz-index: 1001;\\n\\t\\t\\t}\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\\t.tc-tiddlyflex-pointermove-eventcatcher {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tz-index: 1003;\\n\\t\\t}\\n\\n\\t\\t.tc-tiddlyflex-pointermove {\\n\\t\\t\\tposition: fixed;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\theight: 100vh;\\n\\t\\t\\twidth: 100vw;\\n\\t\\t\\tz-index: 1003;\\n\\t\\t}\\n\\n\\t\\t.tc-tiddlyflex-sidebar-resizer {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: calc(50% - 26px);\\n\\t\\t\\tleft: calc(100% - 39px);\\n\\t\\t\\theight: 26px;\\n\\t\\t\\twidth: 52px;\\n\\t\\t\\tborder-radius: 26px 26px 0 0;\\n\\t\\t\\ttransform: rotate(-90deg);\\n\\t\\t\\tbackground-color: \u003C\u003Ccolour tiddlyflex-sidebar-resizer>>;\\n\\t\\t\\tz-index: 1002;\\n\\t\\t\\ttransition: left {{$:/config/AnimationDuration}}ms linear, visibility {{$:/config/AnimationDuration}}ms linear;\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t}\\n\\n\\t\\t\u003C%if [{$:/state/sidebar}!match[no]then[$:/state/sidebar/resizing]!is[missing]] %>\\n\\n\\t\\t\\t.tc-tiddlyflex-sidebar-resizer {\\n\\t\\t\\t\\ttransition: none;\\n\\t\\t\\t}\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\\t\u003C%if [{$:/state/sidebar}!match[no]] %>\\n\\n\\t\\t\\t.tc-tiddlyflex-sidebar-resizer {\\n\\t\\t\\t\\tleft: calc(100% - {{$:/config/tiddlyflex/sidebar/width}} - 39px);\\n\\t\\t\\t\\tvisibility: visible;\\n\\t\\t\\t}\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\\t\u003C%if [[$:/state/sidebar/posx]!is[missing]then{$:/state/sidebar}!match[no]] %>\\n\\n\\t\\t\\t\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\n\\t\\t\\t\\t.tc-tiddlyflex-sidebar-resizer {\\n\\t\\t\\t\\t\\tleft: min(max(min(calc(100% - {{$:/config/tiddlyflex/sidebar/width}} - 39px),calc({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px) - 39px)),calc(({{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]] }}} * {{$:/config/tiddlyflex/story-river/min-width}}) - 39px)),calc(100% - {{$:/config/tiddlyflex/sidebar/width}} - 39px));\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\u003C% else %>\\n\\n\\t\\t\\t\\t.tc-tiddlyflex-sidebar-resizer {\\n\\t\\t\\t\\t\\tleft: min(max(min(calc(100% - {{$:/config/tiddlyflex/sidebar/width}} - 39px),calc({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px) - 39px)),calc(({{$:/state/sidebar/posx!!column-count}} * {{$:/config/tiddlyflex/story-river/min-width}}) - 39px)),calc(100% - {{$:/config/tiddlyflex/sidebar/width}} - 39px));\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\u003C% else %>\\n\\n\\t\\t.tc-tiddlyflex-pointerdown-eventcatcher {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\u003C% endif %>\\n\\n}\\n\\n@media (max-width: 991.98px) {\\n\\n\\t.tc-tiddlyflex-pointerdown-eventcatcher {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/tiddler-animations\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/tiddler-animations\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define tiddlyflex-dont-display-tiddler()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\tvisibility: hidden;\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-remove-tiddler-animation()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n@keyframes margin-top-remove-$(column)$-$(tiddlerTitleCSSEscaped)$ {\\n\\tfrom {\\n\\t\\tmargin-top: 0%;\\n\\t}\\n\\tto {\\n\\t\\tmargin-top: calc( -{{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} - $(tiddlerHeight)$px);\\n\\t}\\n}\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\tvisibility: visible;\\n\\t-webkit-animation: slide-out-$(direction)$ {{$:/config/AnimationDuration}}ms linear;\\n\\t-moz-animation: slide-out-$(direction)$ {{$:/config/AnimationDuration}}ms linear;\\n\\tanimation: slide-out-$(direction)$ {{$:/config/AnimationDuration}}ms linear;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddlyflex-current-tiddler>>;\\n}\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame {\\n\\tz-index: 999;\\n}\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame + .tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame + .tc-tiddler-edit-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame + .tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame + .tc-tiddler-edit-frame {\\n\\t-webkit-animation: margin-top-remove-$(column)$-$(tiddlerTitleCSSEscaped)$ {{$:/config/AnimationDuration}}ms linear;\\n\\t-moz-animation: margin-top-remove-$(column)$-$(tiddlerTitleCSSEscaped)$ {{$:/config/AnimationDuration}}ms linear;\\n\\tanimation: margin-top-remove-$(column)$-$(tiddlerTitleCSSEscaped)$ {{$:/config/AnimationDuration}}ms linear;\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-add-tiddler-animation()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n@keyframes margin-top-add-$(column)$-$(tiddlerTitleCSSEscaped)$ {\\n\\tfrom {\\n\\t\\tmargin-top: calc( -{{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} - $(tiddlerHeight)$px);\\n\\t}\\n\\tto {\\n\\t\\tmargin-top: 0%;\\n\\t}\\n}\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\tvisibility: visible;\\n\\t-webkit-animation: slide-in-$(direction)$ {{$:/config/AnimationDuration}}ms linear;\\n\\t-moz-animation: slide-in-$(direction)$ {{$:/config/AnimationDuration}}ms linear;\\n\\tanimation: slide-in-$(direction)$ {{$:/config/AnimationDuration}}ms linear;\\n}\\n\\n\u003C%if [{$:/config/tiddlyflex/story-river/follow-current-column}match[yes]] %>\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\tborder: 1px solid \u003C\u003Ccolour tiddlyflex-current-tiddler>>;\\n}\\n\\n\u003C% endif %>\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame {\\n\\tz-index: 999;\\n}\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame + .tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame + .tc-tiddler-edit-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame + .tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame + .tc-tiddler-edit-frame {\\n\\t-webkit-animation: margin-top-add-$(column)$-$(tiddlerTitleCSSEscaped)$ {{$:/config/AnimationDuration}}ms linear;\\n\\t-moz-animation: margin-top-add-$(column)$-$(tiddlerTitleCSSEscaped)$ {{$:/config/AnimationDuration}}ms linear;\\n\\tanimation: margin-top-add-$(column)$-$(tiddlerTitleCSSEscaped)$ {{$:/config/AnimationDuration}}ms linear;\\n}\\n\\n\\\\end\\n\\n\u003C%if [{$:/config/AnimationDuration}!is[blank]!match[0]] %>\\n\\n\\t@keyframes slide-out-left {\\n\\t\\tfrom {\\n\\t\\t\\ttransform: translateX(0%);\\n\\t\\t}\\n\\t\\tto {\\n\\t\\t\\ttransform: translateX(calc(-100% - (2 * {{$:/config/tiddlyflex/story-river/padding}})));\\n\\t\\t}\\n\\t}\\n\\n\\t@keyframes slide-out-right {\\n\\t\\tfrom {\\n\\t\\t\\ttransform: translateX(0%);\\n\\t\\t}\\n\\t\\tto {\\n\\t\\t\\ttransform: translateX(calc(100% + (2 * {{$:/config/tiddlyflex/story-river/padding}})));\\n\\t\\t}\\n\\t}\\n\\n\\t@keyframes slide-in-left {\\n\\t\\tfrom {\\n\\t\\t\\ttransform: translateX(calc( -100% - (2 * {{$:/config/tiddlyflex/story-river/padding}})));\\n\\t\\t}\\n\\t\\tto {\\n\\t\\t\\ttransform: translateX(0%);\\n\\t\\t}\\n\\t}\\n\\n\\t@keyframes slide-in-right {\\n\\t\\tfrom {\\n\\t\\t\\ttransform: translateX(calc(100% + (2 * {{$:/config/tiddlyflex/story-river/padding}})));\\n\\t\\t}\\n\\t\\tto {\\n\\t\\t\\ttransform: translateX(0%);\\n\\t\\t}\\n\\t}\\n\\n\\t\u003C$list filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/removing/]]\\\" variable=\\\"stateTiddler\\\">\\n\\t\\t\u003C$let tiddlerTitle={{{ [\u003CstateTiddler>removeprefix[$:/state/tiddlyflex/removing/]] }}} tiddlerTitleCSSEscaped={{{ [\u003CtiddlerTitle>escapecss[]] }}} column={{{ [\u003CstateTiddler>get[column]] }}}>\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-dont-display-tiddler>>\\n\\n\\t\\t\\t\u003C%if [\u003CstateTiddler>has[height]] %>\\n\\t\\t\\t\\t\u003C$let direction={{{ [\u003CstateTiddler>get[direction]] }}} tiddlerHeight={{{ [\u003CstateTiddler>get[height]] }}}>\\n\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-remove-tiddler-animation>>\\n\\n\\t\\t\\t\\t\\t.tc-tiddlyflex-story-river {\\n\\t\\t\\t\\t\\t\\toverflow-x: clip;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$let>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/adding/]]\\\" variable=\\\"stateTiddler\\\">\\n\\t\\t\u003C$let tiddlerTitle={{{ [\u003CstateTiddler>removeprefix[$:/state/tiddlyflex/adding/]] }}} tiddlerTitleCSSEscaped={{{ [\u003CtiddlerTitle>escapecss[]] }}} column={{{ [\u003CstateTiddler>get[column]] }}}>\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-dont-display-tiddler>>\\n\\n\\t\\t\\t\u003C%if [\u003CstateTiddler>has[height]] %>\\n\\t\\t\\t\\t\u003C$let direction={{{ [\u003CstateTiddler>get[direction]] }}} tiddlerHeight={{{ [\u003CstateTiddler>get[height]] }}}>\\n\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-add-tiddler-animation>>\\n\\n\\t\\t\\t\\t\\t.tc-tiddlyflex-story-river {\\n\\t\\t\\t\\t\\t\\toverflow-x: clip;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$let>\\n\\t\u003C/$list>\\n\\n\u003C% endif %>\\n\\n.tc-tiddlyflex-adding {\\n\\tvisibility: hidden;\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/toolbars\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/toolbars\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\".tc-tiddlyflex-top-toolbar {\\n\\tdisplay: flex;\\n\\talign-items: stretch;\\n\\tline-height: 2em;\\n}\\n\\n.tc-tiddlyflex-top-toolbar .tc-sidebar-lists.tc-sidebar-search {\\n\\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\\n}\\n\\n.tc-tiddlyflex-top-toolbar .tc-sidebar-lists.tc-sidebar-search .tc-block-dropdown {\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-tiddlyflex-top-toolbar .tc-sidebar-lists.tc-sidebar-search .tc-search > .tc-reveal {\\n\\tfont-size: 0.75rem;\\n}\\n\\n.tc-tiddlyflex-top-toolbar p {\\n\\tmargin: 0;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-left, .tc-tiddlyflex-top-toolbar-right {\\n\\tflex-grow: 0;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-center {\\n\\tflex-grow: 1;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-left {\\n\\tmargin-top: 5px;\\n\\tmargin-bottom: 5px;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-left > div:first-of-type {\\n\\tmargin-left: {{$:/config/tiddlyflex/story-river/padding}};\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right button {\\n\\tmargin-right: 0.5em;\\n\\tvertical-align: bottom;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right .tc-btn-invisible svg:not(.lucide) {\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n\\tfont-size: 1rem;\\n\\theight: 1rem;\\n\\twidth: 1rem;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right .tc-btn-invisible:hover svg:not(.lucide), .tc-tiddlyflex-top-toolbar-right .tc-btn-invisible.tc-selected svg:not(.lucide) {\\n\\tfill: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right .tc-btn-invisible.tc-selected {\\n\\t-webkit-filter: drop-shadow(0px -1px 2px rgba(0,0,0,0.25));\\n\\t-moz-filter: drop-shadow(0px -1px 2px rgba(0,0,0,0.25));\\n\\tfilter: drop-shadow(0px -1px 2px rgba(0,0,0,0.25));\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/z-indexes\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/z-indexes\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define tiddlyflex-tiddler-z-indexes-inner()\\n\\n\u003C$list filter=\\\"[range\u003CstoryListCount>]\\\">\\n`.tc-tiddlyflex-story-river-`$(tiddlyFlexColumn)$ `.tc-tiddlyflex-story-river-inner > .tc-tiddler-view-frame:nth-child(100n+`\u003C$text text=\u003C\u003CcurrentTiddler>>/>`) > .tc-tiddler-frame`,\\n`.tc-tiddlyflex-story-river-`$(tiddlyFlexColumn)$ `.tc-tiddlyflex-story-river-inner > .tc-tiddler-edit-frame:nth-child(100n+`\u003C$text text=\u003C\u003CcurrentTiddler>>/>`) > .tc-tiddler-frame {\\nz-index: `\u003C$text text={{{ [\u003CstoryListCount>add[501]subtract\u003CcurrentTiddler>] }}}/>`;\\n}\\n`\\n\u003C/$list>\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-tiddler-z-indexes()\\n\\n\u003C$set name=\\\"storyListCount\\\" value={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[count[]] }}}>\\n\\n\\t\u003C\u003Ctiddlyflex-tiddler-z-indexes-inner>>\\n\\n\u003C/$set>\\n\\n\\\\end\\n\\n\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\n\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\n\\t\\t\u003C\u003Ctiddlyflex-tiddler-z-indexes>>\\n\\n\\t\u003C/$set>\\n\\n\u003C/$list>\"},\"$:/plugins/BTC/TiddlyFlex/modules/startup/tiddlyflex-hooks.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/startup/tiddlyflex-hooks.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nFavicon handling\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n// Export name and synchronous status\\nexports.name = \\\"tiddlyflex-hooks\\\";\\nexports.platforms = [\\\"browser\\\"];\\nexports.after = [\\\"startup\\\"];\\nexports.synchronous = true;\\n\\nexports.startup = function() {\\n\\t$tw.hooks.addHook(\\\"th-navigating\\\",function(event) { \\n\\t\\tif(!event.navigateTo && event.event && event.event.navigateTo) {\\n\\t\\t\\tif(event.navigateFromTitle && !event.event.navigateFromTitle) {\\n\\t\\t\\t\\tevent.event.navigateFromTitle = event.navigateFromTitle;\\n\\t\\t\\t}\\n\\t\\t\\treturn event.event;\\n\\t\\t} else {\\n\\t\\t\\treturn event;\\n\\t\\t}\\n\\t});\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/startup/tiddlyflex-hooks.js\",\"module-type\":\"startup\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/droppable.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/droppable.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"droppable\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.prototype.render = function(parent,nextSibling) {\\n\\tvar self = this,\\n\\t\\ttag = this.parseTreeNode.isBlock ? \\\"div\\\" : \\\"span\\\",\\n\\t\\tdomNode;\\n\\t// Remember parent\\n\\tthis.parentDomNode = parent;\\n\\t// Compute attributes and execute state\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\\n\\t\\ttag = this.droppableTag;\\n\\t}\\n\\t// Create element and assign classes\\n\\tdomNode = this.document.createElement(tag);\\n\\tthis.domNode = domNode;\\n\\tthis.assignDomNodeClasses();\\n\\t// Add event handlers\\n\\tif(this.droppableEnable) {\\n\\t\\t$tw.utils.addEventListeners(domNode,[\\n\\t\\t\\t{name: \\\"dragenter\\\", handlerObject: this, handlerMethod: \\\"handleDragEnterEvent\\\"},\\n\\t\\t\\t{name: \\\"dragover\\\", handlerObject: this, handlerMethod: \\\"handleDragOverEvent\\\"},\\n\\t\\t\\t{name: \\\"dragleave\\\", handlerObject: this, handlerMethod: \\\"handleDragLeaveEvent\\\"},\\n\\t\\t\\t{name: \\\"drop\\\", handlerObject: this, handlerMethod: \\\"handleDropEvent\\\"},\\n\\t\\t\\t{name: \\\"dragend\\\", handlerObject: this, handlerMethod: \\\"handleDragEndEvent\\\"}\\n\\t\\t]);\\n\\t} else {\\n\\t\\t$tw.utils.addClass(this.domNode,this.disabledClass);\\n\\t}\\n\\t// Insert element\\n\\tparent.insertBefore(domNode,nextSibling);\\n\\tthis.renderChildren(domNode,null);\\n\\tthis.domNodes.push(domNode);\\n\\t// Stack of outstanding enter/leave events\\n\\tthis.currentlyEntered = [];\\n};\\n\\nexports.prototype.handleEvent = function(event) {\\n\\tif(event.type === \\\"dragenter\\\") {\\n\\t\\tif(event.target && event.target !== this.domNode && !$tw.utils.domContains(this.domNode,event.target)) {\\n\\t\\t\\tthis.resetState(null,event);\\n\\t\\t}\\n\\t} else if(event.type === \\\"dragleave\\\") {\\n\\t\\t// Check if drag left the window\\n\\t\\tif(event.relatedTarget === null || (event.relatedTarget && event.relatedTarget.nodeName === \\\"HTML\\\")) {\\n\\t\\t\\tthis.resetState(null,event);\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.prototype.resetState = function(options,event) {\\n\\toptions = options || {};\\n\\tif(this.domNodes[0]) {\\n\\t\\t$tw.utils.removeClass(this.domNodes[0],\\\"tc-dragover\\\");\\n\\t}\\n\\tthis.currentlyEntered = [];\\n\\tthis.document.body.removeEventListener(\\\"dragenter\\\",this,true);\\n\\tthis.document.body.removeEventListener(\\\"dragleave\\\",this,true);\\n\\tif(options.performDragLeaveActions && this.dragLeaveActions) {\\n\\t\\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\\n\\t\\tthis.invokeActionString(this.dragLeaveActions,this,event,{modifier: modifierKey});\\n\\t}\\n\\tif(options.performDragEndActions && this.dragEndActions) {\\n\\t\\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\\n\\t\\tthis.invokeActionString(this.dragEndActions,this,event,{modifier: modifierKey});\\n\\t}\\n};\\n\\nexports.prototype.enterDrag = function(event) {\\n\\tif(this.currentlyEntered.indexOf(event.target) === -1) {\\n\\t\\tthis.currentlyEntered.push(event.target);\\n\\t}\\n\\t// If we're entering for the first time we need to apply highlighting\\n\\t$tw.utils.addClass(this.domNodes[0],\\\"tc-dragover\\\");\\n\\tthis.document.body.addEventListener(\\\"dragenter\\\",this,true);\\n\\tthis.document.body.addEventListener(\\\"dragleave\\\",this,true);\\n\\tif(this.dragEnterActions) {\\n\\t\\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\\n\\t\\tthis.invokeActionString(this.dragEnterActions,this,event,{modifier: modifierKey});\\n\\t}\\n};\\n\\nexports.prototype.leaveDrag = function(event) {\\n\\tvar pos = this.currentlyEntered.indexOf(event.target);\\n\\tif(pos !== -1) {\\n\\t\\tthis.currentlyEntered.splice(pos,1);\\n\\t}\\n\\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\\n\\tif(this.currentlyEntered.length === 0) {\\n\\t\\tthis.resetState({performDragLeaveActions: true},event);\\n\\t}\\n};\\n\\nexports.prototype.handleDragEnterEvent = function(event) {\\n\\tthis.enterDrag(event);\\n\\t// Tell the browser that we're ready to handle the drop\\n\\tevent.preventDefault();\\n\\t// Tell the browser not to ripple the drag up to any parent drop handlers\\n\\tevent.stopPropagation();\\n\\treturn false;\\n};\\n\\nexports.prototype.handleDragOverEvent = function(event) {\\n\\t// Check for being over a TEXTAREA or INPUT\\n\\tif([\\\"TEXTAREA\\\",\\\"INPUT\\\"].indexOf(event.target.tagName) !== -1) {\\n\\t\\treturn false;\\n\\t}\\n\\t// Tell the browser that we're still interested in the drop\\n\\tevent.preventDefault();\\n\\t// Set the drop effect\\n\\tevent.dataTransfer.dropEffect = this.droppableEffect;\\n\\treturn false;\\n};\\n\\nexports.prototype.handleDragLeaveEvent = function(event) {\\n\\tthis.leaveDrag(event);\\n\\treturn false;\\n};\\n\\nexports.prototype.handleDragEndEvent = function(event) {\\n\\tthis.resetState({performDragEndActions: true});\\n};\\n\\nexports.prototype.handleDropEvent = function(event) {\\n\\tvar self = this;\\n\\tthis.leaveDrag(event);\\n\\t// Check for being over a TEXTAREA or INPUT\\n\\tif([\\\"TEXTAREA\\\",\\\"INPUT\\\"].indexOf(event.target.tagName) !== -1) {\\n\\t\\treturn false;\\n\\t}\\n\\tvar dataTransfer = event.dataTransfer;\\n\\t// Remove highlighting\\n\\tthis.resetState(null,event);\\n\\t// Try to import the various data types we understand\\n\\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\\n\\t\\tfieldsArray.forEach(function(fields) {\\n\\t\\t\\tself.performActions(fields.title || fields.text,event);\\n\\t\\t});\\n\\t});\\n\\t// Tell the browser that we handled the drop\\n\\tevent.preventDefault();\\n\\t// Stop the drop ripple up to any parent handlers\\n\\tevent.stopPropagation();\\n\\treturn false;\\n};\\n\\nexports.prototype.performActions = function(title,event) {\\n\\tif(this.droppableActions) {\\n\\t\\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\\n\\t\\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\\n\\t}\\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nexports.prototype.execute = function() {\\n\\tthis.droppableActions = this.getAttribute(\\\"actions\\\");\\n\\tthis.droppableEffect = this.getAttribute(\\\"effect\\\",\\\"copy\\\");\\n\\tthis.droppableTag = this.getAttribute(\\\"tag\\\");\\n\\tthis.droppableEnable = (this.getAttribute(\\\"enable\\\") || \\\"yes\\\") === \\\"yes\\\";\\n\\tthis.disabledClass = this.getAttribute(\\\"disabledClass\\\",\\\"\\\");\\n\\tthis.dragEnterActions = this.getAttribute(\\\"dragenteractions\\\");\\n\\tthis.dragLeaveActions = this.getAttribute(\\\"dragleaveactions\\\");\\n\\tthis.dragEndActions = this.getAttribute(\\\"dragendactions\\\");\\n\\t// Make child widgets\\n\\tthis.makeChildWidgets();\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nexports.prototype.refresh = function(changedTiddlers) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass || changedAttributes.actions || changedAttributes.effect || changedAttributes.dragenteractions || changedAttributes.dragleaveactions || changedAttributes.dragendactions) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else if(changedAttributes[\\\"class\\\"]) {\\n\\t\\tthis.assignDomNodeClasses();\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/droppable.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/element.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/element.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"element\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.prototype.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes(),\\n\\t\\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\\n\\tif(hasChangedAttributes) {\\n\\t\\tif(!this.isReplaced) {\\n\\t\\t\\t// Update our attributes\\n\\t\\t\\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\\n\\t\\t} else {\\n\\t\\t\\t// If we were replaced then completely refresh ourselves\\n\\t\\t\\treturn this.refreshSelf();\\n\\t\\t}\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force) || hasChangedAttributes;\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/element.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/startup/widget.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/startup/widget.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nOverwriting the Base Widget refreshChildren method\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.name = \\\"tiddlyflex-widget\\\";\\nexports.platforms = [\\\"browser\\\"];\\nexports.after = [\\\"startup\\\"];\\nexports.synchronous = true;\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nWidget.prototype.refreshChildren = function(changedTiddlers,force) {\\n\\tvar children = this.children,\\n\\t\\trefreshed = false;\\n\\tfor(var i=0; i\u003Cchildren.length; i++) {\\n\\t\\tvar child = children[i];\\n\\t\\tif(!force && child.domNodes && child.domNodes[0] && child.domNodes[0].style && child.domNodes[0].style[\\\"content-visibility\\\"] && ((child.domNodes[0].style[\\\"content-visibility\\\"] === \\\"auto\\\") || (child.domNodes[0].style[\\\"content-visibility\\\"] === \\\"hidden\\\"))) {\\n\\t\\t\\treturn false;\\n\\t\\t} else {\\n\\t\\t\\trefreshed = child.refresh(changedTiddlers,force) || refreshed;\\n\\t\\t}\\n\\t}\\n\\treturn refreshed;\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/startup/widget.js\",\"module-type\":\"startup\"},\"$:/plugins/BTC/TiddlyFlex/modules/utils/utils.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/utils/utils.js\\ntype: application/javascript\\nmodule-type: utils\\n\\nUtils, mainly for catching the \\\"Resizeobserver loop completed with undelivered notifications.\\\" error on FireFox\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.error = function(err) {\\n\\t// Prepare the error message\\n\\tvar errHeading = ( $tw.language == undefined ? \\\"Internal JavaScript Error\\\" : $tw.language.getString(\\\"InternalJavaScriptError/Title\\\") ),\\n\\t\\tpromptMsg = ( $tw.language == undefined ? \\\"Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser\\\" : $tw.language.getString(\\\"InternalJavaScriptError/Hint\\\") );\\n\\t// Log the error to the console\\n\\tconsole.error($tw.node ? \\\"\\\\x1b[1;31m\\\" + err + \\\"\\\\x1b[0m\\\" : err);\\n\\tif($tw.browser && !$tw.node && (err !== \\\"ResizeObserver loop completed with undelivered notifications.\\\")) {\\n\\t\\t// Display an error message to the user\\n\\t\\tvar dm = $tw.utils.domMaker,\\n\\t\\t\\theading = dm(\\\"h1\\\",{text: errHeading}),\\n\\t\\t\\tprompt = dm(\\\"div\\\",{text: promptMsg, \\\"class\\\": \\\"tc-error-prompt\\\"}),\\n\\t\\t\\tmessage = dm(\\\"div\\\",{text: err, \\\"class\\\":\\\"tc-error-message\\\"}),\\n\\t\\t\\tcloseButton = dm(\\\"div\\\",{children: [dm(\\\"button\\\",{text: ( $tw.language == undefined ? \\\"close\\\" : $tw.language.getString(\\\"Buttons/Close/Caption\\\") )})], \\\"class\\\": \\\"tc-error-prompt\\\"}),\\n\\t\\t\\tdownloadButton = dm(\\\"div\\\",{children: [dm(\\\"button\\\",{text: ( $tw.language == undefined ? \\\"download tiddlers\\\" : $tw.language.getString(\\\"Buttons/EmergencyDownload/Caption\\\") )})], \\\"class\\\": \\\"tc-error-prompt\\\"}),\\n\\t\\t\\tform = dm(\\\"form\\\",{children: [heading,prompt,downloadButton,message,closeButton], \\\"class\\\": \\\"tc-error-form\\\"});\\n\\t\\tdocument.body.insertBefore(form,document.body.firstChild);\\n\\t\\tdownloadButton.addEventListener(\\\"click\\\",function(event) {\\n\\t\\t\\tif($tw && $tw.wiki) {\\n\\t\\t\\t\\tvar tiddlers = [];\\n\\t\\t\\t\\t$tw.wiki.each(function(tiddler,title) {\\n\\t\\t\\t\\t\\ttiddlers.push(tiddler.fields);\\n\\t\\t\\t\\t});\\n\\t\\t\\t\\tvar link = dm(\\\"a\\\"),\\n\\t\\t\\t\\t\\ttext = JSON.stringify(tiddlers);\\n\\t\\t\\t\\tif(Blob !== undefined) {\\n\\t\\t\\t\\t\\tvar blob = new Blob([text], {type: \\\"text/html\\\"});\\n\\t\\t\\t\\t\\tlink.setAttribute(\\\"href\\\", URL.createObjectURL(blob));\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tlink.setAttribute(\\\"href\\\",\\\"data:text/html,\\\" + encodeURIComponent(text));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tlink.setAttribute(\\\"download\\\",\\\"emergency-tiddlers-\\\" + (new Date()) + \\\".json\\\");\\n\\t\\t\\t\\tdocument.body.appendChild(link);\\n\\t\\t\\t\\tlink.click();\\n\\t\\t\\t\\tdocument.body.removeChild(link);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\talert(\\\"Emergency tiddler download is not available\\\");\\n\\t\\t\\t}\\n\\t\\t\\tevent.preventDefault();\\n\\t\\t\\treturn false;\\n\\t\\t},true);\\n\\t\\tform.addEventListener(\\\"submit\\\",function(event) {\\n\\t\\t\\tdocument.body.removeChild(form);\\n\\t\\t\\tevent.preventDefault();\\n\\t\\t\\treturn false;\\n\\t\\t},true);\\n\\t\\treturn null;\\n\\t} else if(!$tw.browser) {\\n\\t\\t// Exit if we're under node.js\\n\\t\\tprocess.exit(1);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/utils/utils.js\",\"module-type\":\"utils\"},\"$:/core/modules/utils/dom/scroller.js\":{\"text\":\"/*\\\\\\ntitle: $:/core/modules/utils/dom/scroller.js\\ntype: application/javascript\\nmodule-type: utils\\n\\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nEvent handler for when the `tm-scroll` event hits the document body\\n*/\\nvar PageScroller = function() {\\n\\tthis.idRequestFrame = null;\\n\\tthis.requestAnimationFrame = window.requestAnimationFrame ||\\n\\t\\twindow.webkitRequestAnimationFrame ||\\n\\t\\twindow.mozRequestAnimationFrame ||\\n\\t\\tfunction(callback) {\\n\\t\\t\\treturn window.setTimeout(callback, 1000/60);\\n\\t\\t};\\n\\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\\n\\t\\twindow.webkitCancelAnimationFrame ||\\n\\t\\twindow.webkitCancelRequestAnimationFrame ||\\n\\t\\twindow.mozCancelAnimationFrame ||\\n\\t\\twindow.mozCancelRequestAnimationFrame ||\\n\\t\\tfunction(id) {\\n\\t\\t\\twindow.clearTimeout(id);\\n\\t\\t};\\n};\\n\\nPageScroller.prototype.isScrolling = function() {\\n\\treturn this.idRequestFrame !== null;\\n}\\n\\nPageScroller.prototype.cancelScroll = function(srcWindow) {\\n\\tif(this.idRequestFrame) {\\n\\t\\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\\n\\t\\tthis.idRequestFrame = null;\\n\\t}\\n};\\n\\n/*\\nHandle an event\\n*/\\nPageScroller.prototype.handleEvent = function(event) {\\n\\tif(event.type === \\\"tm-scroll\\\") {\\n\\t\\tvar options = {};\\n\\t\\tif($tw.utils.hop(event.paramObject,\\\"animationDuration\\\")) {\\n\\t\\t\\toptions.animationDuration = event.paramObject.animationDuration;\\n\\t\\t}\\n\\t\\tif(event.paramObject && event.paramObject.selector) {\\n\\t\\t\\tthis.scrollSelectorIntoView(null,event.paramObject.selector,null,options);\\n\\t\\t} else {\\n\\t\\t\\tthis.scrollIntoView(event.target,null,options);\\n\\t\\t}\\n\\t\\treturn false; // Event was handled\\n\\t}\\n\\treturn true;\\n};\\n\\n/*\\nHandle a scroll event hitting the page document\\n*/\\nPageScroller.prototype.scrollIntoView = function(element,callback,options) {\\n\\tvar self = this,\\n\\t\\tduration = $tw.utils.hop(options,\\\"animationDuration\\\") ? parseInt(options.animationDuration) : $tw.utils.getAnimationDuration(),\\n\\t\\tsrcWindow = element ? element.ownerDocument.defaultView : window;\\n\\ttry {\\n\\t\\t$tw.utils.addClass(element,\\\"tc-navigating\\\");\\n\\t\\tvar scrollIntoView = function() {\\n\\t\\t\\telement.scrollIntoView({block: \\\"start\\\", inline: \\\"start\\\"});\\n\\t\\t};\\n\\t\\tthis.requestAnimationFrame.call(srcWindow,scrollIntoView);\\n\\t\\tsetTimeout(function() {\\n\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-navigating\\\");\\n\\t\\t},duration);\\n\\t} catch(e) {\\n\\t\\tconsole.log(e);\\n\\t}\\n};\\n\\nPageScroller.prototype.scrollSelectorIntoView = function(baseElement,selector,callback,options) {\\n\\tbaseElement = baseElement || document;\\n\\tvar element = $tw.utils.querySelectorSafe(selector,baseElement);\\n\\tif(element) {\\n\\t\\tthis.scrollIntoView(element,callback,options);\\n\\t}\\n};\\n\\nexports.PageScroller = PageScroller;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/utils/dom/scroller.js\",\"module-type\":\"utils\"},\"$:/plugins/BTC/TiddlyFlex/modules/storyviews/tiddlyflex.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/storyviews/tiddlyflex.js\\ntype: application/javascript\\nmodule-type: storyview\\n\\nViews the story as a linear sequence\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar easing = \\\"cubic-bezier(0.645, 0.045, 0.355, 1)\\\"; // From http://easings.net/#easeInOutCubic\\n\\nvar ClassicStoryView = function(listWidget) {\\n\\tthis.listWidget = listWidget;\\n};\\n\\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\\n\\tvar duration = $tw.utils.getAnimationDuration()\\n\\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\\n\\tif(listElementIndex === undefined) {\\n\\t\\treturn;\\n\\t}\\n\\tvar listItemWidget = this.listWidget.children[listElementIndex],\\n\\t\\ttargetElement = listItemWidget.findFirstDomNode();\\n\\t// Abandon if the list entry isn't a DOM element (it might be a text node)\\n\\tif(!targetElement || targetElement.nodeType === Node.TEXT_NODE) {\\n\\t\\treturn;\\n\\t}\\n\\tif(duration) {\\n\\t\\t// Scroll the node into view\\n\\t\\tthis.listWidget.dispatchEvent({type: \\\"tm-scroll\\\", target: targetElement});\\n\\t} else {\\n\\t\\ttargetElement.scrollIntoView();\\n\\t}\\n};\\n\\nClassicStoryView.prototype.insert = function(widget) {\\n\\tvar duration = $tw.utils.getAnimationDuration(),\\n\\t\\ttiddlerTitle = widget.parseTreeNode.itemTitle;\\n\\tif(duration && !widget.wiki.tiddlerExists(\\\"$:/state/dragging\\\") && !widget.wiki.tiddlerExists(\\\"$:/state/tiddlyflex/adding/\\\" + tiddlerTitle) && !widget.wiki.tiddlerExists(\\\"$:/state/tiddlyflex/story-river/fullscreen/\\\" + tiddlerTitle)) {\\n\\t\\tvar targetElement = widget.findFirstDomNode();\\n\\t\\t// Abandon if the list entry isn't a DOM element (it might be a text node)\\n\\t\\tif(!targetElement || targetElement.nodeType === Node.TEXT_NODE) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\t// Get the current height of the tiddler\\n\\t\\tvar computedStyle = window.getComputedStyle(targetElement),\\n\\t\\t\\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\\n\\t\\t\\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\\n\\t\\t\\tcurrHeight = targetElement.offsetHeight + currMarginTop;\\n\\t\\t// Reset the margin once the transition is over\\n\\t\\tsetTimeout(function() {\\n\\t\\t\\t$tw.utils.setStyle(targetElement,[\\n\\t\\t\\t\\t{transition: \\\"none\\\"},\\n\\t\\t\\t\\t{marginBottom: \\\"\\\"}\\n\\t\\t\\t]);\\n\\t\\t},duration);\\n\\t\\t// Set up the initial position of the element\\n\\t\\t$tw.utils.setStyle(targetElement,[\\n\\t\\t\\t{transition: \\\"none\\\"},\\n\\t\\t\\t{marginBottom: (-currHeight) + \\\"px\\\"},\\n\\t\\t\\t{opacity: \\\"0.0\\\"}\\n\\t\\t]);\\n\\t\\t$tw.utils.forceLayout(targetElement);\\n\\t\\t// Transition to the final position\\n\\t\\t$tw.utils.setStyle(targetElement,[\\n\\t\\t\\t{transition: \\\"opacity \\\" + duration + \\\"ms \\\" + easing + \\\", \\\" +\\n\\t\\t\\t\\t\\t\\t\\\"margin-bottom \\\" + duration + \\\"ms \\\" + easing},\\n\\t\\t\\t{marginBottom: currMarginBottom + \\\"px\\\"},\\n\\t\\t\\t{opacity: \\\"1.0\\\"}\\n\\t\\t]);\\n\\t} else if(duration && !widget.wiki.tiddlerExists(\\\"$:/state/dragging\\\") && widget.wiki.tiddlerExists(\\\"$:/state/tiddlyflex/adding/\\\" + tiddlerTitle)) {\\n\\t\\tvar targetElement = widget.findFirstDomNode();\\n\\t\\twidget.wiki.setText(\\\"$:/state/tiddlyflex/adding/\\\" + tiddlerTitle,\\\"height\\\",undefined,targetElement.offsetHeight);\\n\\t\\tsetTimeout(function() {\\n\\t\\t\\twidget.wiki.deleteTiddler(\\\"$:/state/tiddlyflex/adding/\\\" + tiddlerTitle);\\n\\t\\t},duration);\\n\\t}\\n\\tif($tw.wiki.tiddlerExists(\\\"$:/state/dragging\\\")) {\\n\\t\\twidget.wiki.deleteTiddler(\\\"$:/state/dragging\\\");\\n\\t}\\n};\\n\\nClassicStoryView.prototype.remove = function(widget) {\\n\\tvar duration = $tw.utils.getAnimationDuration(),\\n\\t\\ttiddlerTitle = widget.parseTreeNode.itemTitle;\\n\\tif(duration && !widget.wiki.tiddlerExists(\\\"$:/state/dragging\\\") && !widget.wiki.tiddlerExists(\\\"$:/state/tiddlyflex/removing/\\\" + tiddlerTitle) && !widget.wiki.tiddlerExists(\\\"$:/state/tiddlyflex/story-river/fullscreen/\\\" + tiddlerTitle)) {\\n\\t\\tvar targetElement = widget.findFirstDomNode(),\\n\\t\\t\\tremoveElement = function() {\\n\\t\\t\\t\\twidget.removeChildDomNodes();\\n\\t\\t\\t};\\n\\t\\t// Abandon if the list entry isn't a DOM element (it might be a text node)\\n\\t\\tif(!targetElement || targetElement.nodeType === Node.TEXT_NODE) {\\n\\t\\t\\tremoveElement();\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\t// Get the current height of the tiddler\\n\\t\\tvar currWidth = targetElement.offsetWidth,\\n\\t\\t\\tcomputedStyle = window.getComputedStyle(targetElement),\\n\\t\\t\\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\\n\\t\\t\\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\\n\\t\\t\\tcurrHeight = targetElement.offsetHeight + currMarginTop;\\n\\t\\t// Remove the dom nodes of the widget at the end of the transition\\n\\t\\tsetTimeout(removeElement,duration);\\n\\t\\t// Animate the closure\\n\\t\\t$tw.utils.setStyle(targetElement,[\\n\\t\\t\\t{transition: \\\"none\\\"},\\n\\t\\t\\t{transform: \\\"translateX(0px)\\\"},\\n\\t\\t\\t{marginBottom: currMarginBottom + \\\"px\\\"},\\n\\t\\t\\t{opacity: \\\"1.0\\\"}\\n\\t\\t]);\\n\\t\\t$tw.utils.forceLayout(targetElement);\\n\\t\\t$tw.utils.setStyle(targetElement,[\\n\\t\\t\\t{transition: $tw.utils.roundTripPropertyName(\\\"transform\\\") + \\\" \\\" + duration + \\\"ms \\\" + easing + \\\", \\\" +\\n\\t\\t\\t\\t\\t\\t\\\"opacity \\\" + duration + \\\"ms \\\" + easing + \\\", \\\" +\\n\\t\\t\\t\\t\\t\\t\\\"margin-bottom \\\" + duration + \\\"ms \\\" + easing},\\n\\t\\t\\t{transform: \\\"translateX(-\\\" + currWidth + \\\"px)\\\"},\\n\\t\\t\\t{marginBottom: (-currHeight) + \\\"px\\\"},\\n\\t\\t\\t{opacity: \\\"0.0\\\"}\\n\\t\\t]);\\n\\t} else if(duration && !widget.wiki.tiddlerExists(\\\"$:/state/dragging\\\") && widget.wiki.tiddlerExists(\\\"$:/state/tiddlyflex/removing/\\\" + tiddlerTitle)) {\\n\\t\\tvar targetElement = widget.findFirstDomNode(),\\n\\t\\t\\tremoveElement = function() {\\n\\t\\t\\t\\twidget.removeChildDomNodes();\\n\\t\\t\\t\\twidget.wiki.deleteTiddler(\\\"$:/state/tiddlyflex/removing/\\\" + tiddlerTitle);\\n\\t\\t\\t};\\n\\t\\twidget.wiki.setText(\\\"$:/state/tiddlyflex/removing/\\\" + tiddlerTitle,\\\"height\\\",undefined,targetElement.offsetHeight);\\n\\t\\tsetTimeout(removeElement,duration);\\n\\t} else {\\n\\t\\twidget.removeChildDomNodes();\\n\\t}\\n};\\n\\nexports.tiddlyflex = ClassicStoryView;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/storyviews/tiddlyflex.js\",\"module-type\":\"storyview\"},\"$:/core/modules/startup/story.js\":{\"text\":\"/*\\\\\\ntitle: $:/core/modules/startup/story.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nLoad core modules\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n// Export name and synchronous status\\nexports.name = \\\"story\\\";\\nexports.after = [\\\"startup\\\"];\\nexports.synchronous = true;\\n\\n// Default story and history lists\\nvar DEFAULT_STORY_TITLE = \\\"$:/StoryList\\\";\\nvar DEFAULT_HISTORY_TITLE = \\\"$:/HistoryList\\\";\\n\\n// Default tiddlers\\nvar DEFAULT_TIDDLERS_TITLE = \\\"$:/DefaultTiddlers\\\";\\n\\n// Config\\nvar CONFIG_UPDATE_ADDRESS_BAR = \\\"$:/config/Navigation/UpdateAddressBar\\\"; // Can be \\\"no\\\", \\\"permalink\\\", \\\"permaview\\\"\\nvar CONFIG_UPDATE_HISTORY = \\\"$:/config/Navigation/UpdateHistory\\\"; // Can be \\\"yes\\\" or \\\"no\\\"\\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \\\"$:/config/Navigation/Permalinkview/CopyToClipboard\\\"; // Can be \\\"yes\\\" (default) or \\\"no\\\"\\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \\\"$:/config/Navigation/Permalinkview/UpdateAddressBar\\\"; // Can be \\\"yes\\\" (default) or \\\"no\\\"\\n\\n\\n// Links to help, if there is no param\\nvar HELP_OPEN_EXTERNAL_WINDOW = \\\"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\\\";\\n\\nexports.startup = function() {\\n\\t// Open startup tiddlers\\n\\topenStartupTiddlers({\\n\\t\\tdisableHistory: $tw.boot.disableStartupNavigation\\n\\t});\\n\\tif($tw.browser) {\\n\\t\\t// Set up location hash update\\n\\t\\t$tw.wiki.addEventListener(\\\"change\\\",function(changes) {\\n\\t\\t\\tif($tw.utils.hop(changes,$tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/StoryList-1\\\" : DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,$tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/HistoryList-1\\\" : DEFAULT_HISTORY_TITLE)) {\\n\\t\\t\\t\\tupdateLocationHash({\\n\\t\\t\\t\\t\\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\\\"permaview\\\").trim(),\\n\\t\\t\\t\\t\\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\\\"no\\\").trim()\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\t// Listen for changes to the browser location hash\\n\\t\\twindow.addEventListener(\\\"hashchange\\\",function() {\\n\\t\\t\\tvar hash = $tw.utils.getLocationHash();\\n\\t\\t\\tif(hash !== $tw.locationHash) {\\n\\t\\t\\t\\t$tw.locationHash = hash;\\n\\t\\t\\t\\tif(hash !== \\\"#\\\") {\\n\\t\\t\\t\\t\\topenStartupTiddlers({defaultToCurrentStory: true});\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},false);\\n\\t\\t// Listen for the tm-browser-refresh message\\n\\t\\t$tw.rootWidget.addEventListener(\\\"tm-browser-refresh\\\",function(event) {\\n\\t\\t\\twindow.location.reload(true);\\n\\t\\t});\\n\\t\\t// Listen for tm-open-external-window message\\n\\t\\t$tw.rootWidget.addEventListener(\\\"tm-open-external-window\\\",function(event) {\\n\\t\\t\\tvar paramObject = event.paramObject || {},\\n\\t\\t\\t\\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\\n\\t\\t\\t\\tstrWindowName = paramObject.windowName,\\n\\t\\t\\t\\tstrWindowFeatures = paramObject.windowFeatures;\\n\\t\\t\\twindow.open(strUrl, strWindowName, strWindowFeatures);\\n\\t\\t});\\n\\t\\t// Listen for the tm-print message\\n\\t\\t$tw.rootWidget.addEventListener(\\\"tm-print\\\",function(event) {\\n\\t\\t\\t(event.event.view || window).print();\\n\\t\\t});\\n\\t\\t// Listen for the tm-home message\\n\\t\\t$tw.rootWidget.addEventListener(\\\"tm-home\\\",function(event) {\\n\\t\\t\\twindow.location.hash = \\\"\\\";\\n\\t\\t\\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\\n\\t\\t\\t\\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\\n\\t\\t\\t//invoke any hooks that might change the default story list\\n\\t\\t\\tstoryList = $tw.hooks.invokeHook(\\\"th-opening-default-tiddlers-list\\\",storyList);\\n\\t\\t\\t$tw.wiki.addTiddler({title: $tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/StoryList-1\\\" : DEFAULT_STORY_TITLE, text: \\\"\\\", list: storyList},$tw.wiki.getModificationFields());\\n\\t\\t\\tif(storyList[0]) {\\n\\t\\t\\t\\t$tw.wiki.addToHistory(storyList[0]);\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\t// Listen for the tm-permalink message\\n\\t\\t$tw.rootWidget.addEventListener(\\\"tm-permalink\\\",function(event) {\\n\\t\\t\\tupdateLocationHash({\\n\\t\\t\\t\\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\\\"yes\\\").trim() === \\\"yes\\\" ? \\\"permalink\\\" : \\\"none\\\",\\n\\t\\t\\t\\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\\\"no\\\").trim(),\\n\\t\\t\\t\\ttargetTiddler: event.param || event.tiddlerTitle,\\n\\t\\t\\t\\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\\\"yes\\\").trim() === \\\"yes\\\" ? \\\"permalink\\\" : \\\"none\\\"\\n\\t\\t\\t});\\n\\t\\t});\\n\\t\\t// Listen for the tm-permaview message\\n\\t\\t$tw.rootWidget.addEventListener(\\\"tm-permaview\\\",function(event) {\\n\\t\\t\\tupdateLocationHash({\\n\\t\\t\\t\\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\\\"yes\\\").trim() === \\\"yes\\\" ? \\\"permaview\\\" : \\\"none\\\",\\n\\t\\t\\t\\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\\\"no\\\").trim(),\\n\\t\\t\\t\\ttargetTiddler: event.param || event.tiddlerTitle,\\n\\t\\t\\t\\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\\\"yes\\\").trim() === \\\"yes\\\" ? \\\"permaview\\\" : \\\"none\\\"\\n\\t\\t\\t});\\n\\t\\t});\\n\\t}\\n};\\n\\n/*\\nProcess the location hash to open the specified tiddlers. Options:\\ndisableHistory: if true $:/History is NOT updated\\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\\n*/\\nfunction openStartupTiddlers(options) {\\n\\toptions = options || {};\\n\\t// Work out the target tiddler and the story filter. \\\"null\\\" means \\\"unspecified\\\"\\n\\tvar target = null,\\n\\t\\tstoryFilter = null;\\n\\tif($tw.locationHash.length > 1) {\\n\\t\\tvar hash = $tw.locationHash.substr(1),\\n\\t\\t\\tsplit = hash.indexOf(\\\":\\\");\\n\\t\\tif(split === -1) {\\n\\t\\t\\ttarget = $tw.utils.decodeURIComponentSafe(hash.trim());\\n\\t\\t} else {\\n\\t\\t\\ttarget = $tw.utils.decodeURIComponentSafe(hash.substr(0,split).trim());\\n\\t\\t\\tstoryFilter = $tw.utils.decodeURIComponentSafe(hash.substr(split + 1).trim());\\n\\t\\t}\\n\\t}\\n\\t// If the story wasn't specified use the current tiddlers or a blank story\\n\\tif(storyFilter === null) {\\n\\t\\tif(options.defaultToCurrentStory) {\\n\\t\\t\\tvar currStoryList = $tw.wiki.getTiddlerList($tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/StoryList-1\\\" : DEFAULT_STORY_TITLE);\\n\\t\\t\\tstoryFilter = $tw.utils.stringifyList(currStoryList);\\n\\t\\t} else {\\n\\t\\t\\tif(target && target !== \\\"\\\") {\\n\\t\\t\\t\\tstoryFilter = \\\"\\\";\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t// Process the story filter to get the story list\\n\\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\\n\\t// Invoke any hooks that want to change the default story list\\n\\tstoryList = $tw.hooks.invokeHook(\\\"th-opening-default-tiddlers-list\\\",storyList);\\n\\t// If the target tiddler isn't included then splice it in at the top\\n\\tif(target && storyList.indexOf(target) === -1) {\\n\\t\\tstoryList.unshift(target);\\n\\t}\\n\\t// Save the story list\\n\\t$tw.wiki.addTiddler({title: $tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/StoryList-1\\\" : DEFAULT_STORY_TITLE, text: \\\"\\\", list: storyList},$tw.wiki.getModificationFields());\\n\\t// Update history\\n\\tvar story = new $tw.Story({\\n\\t\\twiki: $tw.wiki,\\n\\t\\tstoryTitle: $tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/StoryList-1\\\" : DEFAULT_STORY_TITLE,\\n\\t\\thistoryTitle: $tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/HistoryList-1\\\" : DEFAULT_HISTORY_TITLE\\n\\t});\\n\\tif(!options.disableHistory) {\\n\\t\\t// If a target tiddler was specified add it to the history stack\\n\\t\\tif(target && target !== \\\"\\\") {\\n\\t\\t\\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\\n\\t\\t\\tif(target.indexOf(\\\"[[\\\") === 0 && target.substr(-2) === \\\"]]\\\") {\\n\\t\\t\\t\\ttarget = target.substr(2,target.length - 4);\\n\\t\\t\\t}\\n\\t\\t\\tstory.addToHistory(target);\\n\\t\\t} else if(storyList.length > 0) {\\n\\t\\t\\tstory.addToHistory(storyList[0]);\\n\\t\\t}\\n\\t}\\n}\\n\\n/*\\noptions: See below\\noptions.updateAddressBar: \\\"permalink\\\", \\\"permaview\\\" or \\\"no\\\" (defaults to \\\"permaview\\\")\\noptions.updateHistory: \\\"yes\\\" or \\\"no\\\" (defaults to \\\"no\\\")\\noptions.copyToClipboard: \\\"permalink\\\", \\\"permaview\\\" or \\\"no\\\" (defaults to \\\"no\\\")\\noptions.targetTiddler: optional title of target tiddler for permalink\\n*/\\nfunction updateLocationHash(options) {\\n\\t// Get the story and the history stack\\n\\tvar storyList = $tw.wiki.getTiddlerList($tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/StoryList-1\\\" : DEFAULT_STORY_TITLE),\\n\\t\\thistoryList = $tw.wiki.getTiddlerData($tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/HistoryList-1\\\" : DEFAULT_HISTORY_TITLE,[]),\\n\\t\\ttargetTiddler = \\\"\\\";\\n\\tif(options.targetTiddler) {\\n\\t\\ttargetTiddler = options.targetTiddler;\\n\\t} else {\\n\\t\\t// The target tiddler is the one at the top of the stack\\n\\t\\tif(historyList.length > 0) {\\n\\t\\t\\ttargetTiddler = historyList[historyList.length-1].title;\\n\\t\\t}\\n\\t\\t// Blank the target tiddler if it isn't present in the story\\n\\t\\tif(storyList.indexOf(targetTiddler) === -1) {\\n\\t\\t\\ttargetTiddler = \\\"\\\";\\n\\t\\t}\\n\\t}\\n\\t// Assemble the location hash\\n\\tswitch(options.updateAddressBar) {\\n\\t\\tcase \\\"permalink\\\":\\n\\t\\t\\t$tw.locationHash = \\\"#\\\" + encodeURIComponent(targetTiddler);\\n\\t\\t\\tbreak;\\n\\t\\tcase \\\"permaview\\\":\\n\\t\\t\\t$tw.locationHash = \\\"#\\\" + encodeURIComponent(targetTiddler) + \\\":\\\" + encodeURIComponent($tw.utils.stringifyList(storyList));\\n\\t\\t\\tbreak;\\n\\t}\\n\\t// Copy URL to the clipboard\\n\\tswitch(options.copyToClipboard) {\\n\\t\\tcase \\\"permalink\\\":\\n\\t\\t\\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \\\"#\\\" + encodeURIComponent(targetTiddler));\\n\\t\\t\\tbreak;\\n\\t\\tcase \\\"permaview\\\":\\n\\t\\t\\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \\\"#\\\" + encodeURIComponent(targetTiddler) + \\\":\\\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\\n\\t\\t\\tbreak;\\n\\t}\\n\\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\\n\\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\\n\\t\\tif(options.updateHistory === \\\"yes\\\") {\\n\\t\\t\\t// Assign the location hash so that history is updated\\n\\t\\t\\twindow.location.hash = $tw.locationHash;\\n\\t\\t} else {\\n\\t\\t\\t// We use replace so that browser history isn't affected\\n\\t\\t\\twindow.location.replace(window.location.toString().split(\\\"#\\\")[0] + $tw.locationHash);\\n\\t\\t}\\n\\t}\\n}\\n\\n})();\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/startup/story.js\",\"module-type\":\"startup\"},\"$:/plugins/BTC/TiddlyFlex/modules/utils/dom/tiddlyflex-utils.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/utils/dom/tiddlyflex-utils.js\\ntype: application/javascript\\nmodule-type: utils\\n\\nBrowser data transfer utilities, used with the clipboard and drag and drop\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nOptions:\\n\\ndomNode: dom node to make draggable\\nselector: CSS selector to identify element within domNode to be used as drag handle (optional)\\ndragImageType: \\\"pill\\\", \\\"blank\\\" or \\\"dom\\\" (the default)\\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\\nwidget: widget to use as the context for the filter\\n*/\\nexports.makeTiddlyFlexDraggable = function(options) {\\n\\tvar dragImageType = options.dragImageType || \\\"dom\\\",\\n\\t\\tdragImage,\\n\\t\\tdomNode = options.domNode,\\n\\t\\tremoveEventHandler = options.remove;\\n\\t// Make the dom node draggable (not necessary for anchor tags)\\n\\tif(!options.selector && ((domNode.tagName || \\\"\\\").toLowerCase() !== \\\"a\\\")) {\\n\\t\\tdomNode.setAttribute(\\\"draggable\\\",\\\"true\\\");\\n\\t}\\n\\tvar dragStartHandlerFunction = function(event) {\\n\\t\\tif(event.dataTransfer === undefined) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\t// Collect the tiddlers being dragged\\n\\t\\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\\n\\t\\t\\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\\n\\t\\t\\ttitles = dragTiddler ? [dragTiddler] : [],\\n\\t\\t\\tstartActions = options.startActions,\\n\\t\\t\\tvariables,\\n\\t\\t\\tdomNodeRect;\\n\\t\\tif(dragFilter) {\\n\\t\\t\\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\\n\\t\\t}\\n\\t\\tvar titleString = $tw.utils.stringifyList(titles);\\n\\t\\t// Check that we've something to drag\\n\\t\\tif(titles.length > 0 && (options.selector && $tw.utils.domMatchesSelector(event.target,options.selector) || event.target === domNode)) {\\n\\t\\t\\t// Mark the drag in progress\\n\\t\\t\\t$tw.dragInProgress = domNode;\\n\\t\\t\\t// Set the dragging class on the element being dragged\\n\\t\\t\\t$tw.utils.addClass(domNode,\\\"tc-dragging\\\");\\n\\t\\t\\t// Invoke drag-start actions if given\\n\\t\\t\\tif(startActions !== undefined) {\\n\\t\\t\\t\\t// Collect our variables\\n\\t\\t\\t\\tvariables = $tw.utils.collectDOMVariables(domNode,null,event);\\n\\t\\t\\t\\tvariables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\\n\\t\\t\\t\\tvariables[\\\"actionTiddler\\\"] = titleString;\\n\\t\\t\\t\\toptions.widget.invokeActionString(startActions,options.widget,event,variables);\\n\\t\\t\\t}\\n\\t\\t\\t// Create the drag image elements\\n\\t\\t\\tdragImage = options.widget.document.createElement(\\\"div\\\");\\n\\t\\t\\tdragImage.className = \\\"tc-tiddler-dragger\\\";\\n\\t\\t\\tvar inner = options.widget.document.createElement(\\\"div\\\");\\n\\t\\t\\tinner.className = \\\"tc-tiddler-dragger-inner\\\";\\n\\t\\t\\tinner.appendChild(options.widget.document.createTextNode(\\n\\t\\t\\t\\ttitles.length === 1 ? \\n\\t\\t\\t\\t\\ttitles[0] :\\n\\t\\t\\t\\t\\ttitles.length + \\\" tiddlers\\\"\\n\\t\\t\\t));\\n\\t\\t\\tdragImage.appendChild(inner);\\n\\t\\t\\toptions.widget.document.body.appendChild(dragImage);\\n\\t\\t\\t// Set the data transfer properties\\n\\t\\t\\tvar dataTransfer = event.dataTransfer;\\n\\t\\t\\t// Set up the image\\n\\t\\t\\tdataTransfer.effectAllowed = \\\"all\\\";\\n\\t\\t\\tif(dataTransfer.setDragImage) {\\n\\t\\t\\t\\tif(dragImageType === \\\"pill\\\") {\\n\\t\\t\\t\\t\\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\\n\\t\\t\\t\\t} else if(dragImageType === \\\"blank\\\") {\\n\\t\\t\\t\\t\\tdragImage.removeChild(dragImage.firstChild);\\n\\t\\t\\t\\t\\tdataTransfer.setDragImage(dragImage,0,0);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tvar r = domNode.getBoundingClientRect();\\n\\t\\t\\t\\t\\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t// Set up the data transfer\\n\\t\\t\\tif(dataTransfer.clearData) {\\n\\t\\t\\t\\tdataTransfer.clearData();\\n\\t\\t\\t}\\n\\t\\t\\tvar jsonData = [];\\n\\t\\t\\tif(titles.length > 1) {\\n\\t\\t\\t\\ttitles.forEach(function(title) {\\n\\t\\t\\t\\t\\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\\n\\t\\t\\t\\t});\\n\\t\\t\\t\\tjsonData = \\\"[\\\" + jsonData.join(\\\",\\\") + \\\"]\\\";\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\\n\\t\\t\\t}\\n\\t\\t\\t// IE doesn't like these content types\\n\\t\\t\\tif(!$tw.browser.isIE) {\\n\\t\\t\\t\\tdataTransfer.setData(\\\"text/vnd.tiddler\\\",jsonData);\\n\\t\\t\\t\\tdataTransfer.setData(\\\"text/plain\\\",titleString);\\n\\t\\t\\t\\tdataTransfer.setData(\\\"text/x-moz-url\\\",\\\"data:text/vnd.tiddler,\\\" + encodeURIComponent(jsonData));\\n\\t\\t\\t}\\n\\t\\t\\t// If browser is Chrome-like and has a touch-input device do NOT .setData\\n\\t\\t\\tif(!($tw.browser.isMobileChrome)) {\\n\\t\\t\\t\\tdataTransfer.setData(\\\"URL\\\",\\\"data:text/vnd.tiddler,\\\" + encodeURIComponent(jsonData));\\n\\t\\t\\t}\\n\\t\\t\\tdataTransfer.setData(\\\"Text\\\",titleString);\\n\\t\\t\\tevent.stopPropagation();\\n\\t\\t}\\n\\t\\treturn false;\\n\\t};\\n\\n\\tvar dragEndHandlerFunction = function(event) {\\n\\t\\tif((options.selector && $tw.utils.domMatchesSelector(event.target,options.selector)) || event.target === domNode) {\\n\\t\\t\\t// Collect the tiddlers being dragged\\n\\t\\t\\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\\n\\t\\t\\t\\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\\n\\t\\t\\t\\ttitles = dragTiddler ? [dragTiddler] : [],\\n\\t\\t\\t\\tendActions = options.endActions,\\n\\t\\t\\t\\tvariables;\\n\\t\\t\\tif(dragFilter) {\\n\\t\\t\\t\\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\\n\\t\\t\\t}\\n\\t\\t\\tvar titleString = $tw.utils.stringifyList(titles);\\n\\t\\t\\t$tw.dragInProgress = null;\\n\\t\\t\\t// Invoke drag-end actions if given\\n\\t\\t\\tif(endActions !== undefined) {\\n\\t\\t\\t\\tvariables = $tw.utils.collectDOMVariables(domNode,null,event);\\n\\t\\t\\t\\tvariables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\\n\\t\\t\\t\\tvariables[\\\"actionTiddler\\\"] = titleString;\\n\\t\\t\\t\\toptions.widget.invokeActionString(endActions,options.widget,event,variables);\\n\\t\\t\\t}\\n\\t\\t\\t// Remove the dragging class on the element being dragged\\n\\t\\t\\t$tw.utils.removeClass(domNode,\\\"tc-dragging\\\");\\n\\t\\t\\t// Delete the drag image element\\n\\t\\t\\tif(dragImage) {\\n\\t\\t\\t\\tdragImage.parentNode.removeChild(dragImage);\\n\\t\\t\\t\\tdragImage = null;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn false;\\n\\t};\\n\\n\\t// Add event handlers\\n\\toptions.widget.dragStartListenerReference = dragStartHandlerFunction;\\n\\toptions.widget.dragEndListenerReference = dragEndHandlerFunction;\\n\\t$tw.utils.addEventListeners(domNode,[\\n\\t\\t{name: \\\"dragstart\\\", handlerFunction: dragStartHandlerFunction},\\n\\t\\t{name: \\\"dragend\\\", handlerFunction: dragEndHandlerFunction}\\n\\t]);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/utils/dom/tiddlyflex-utils.js\",\"module-type\":\"utils\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/tiddlyflex-draggable.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/tiddlyflex-draggable.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nDraggable widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar DraggableWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nDraggableWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nDraggableWidget.prototype.render = function(parent,nextSibling) {\\n\\tvar self = this,\\n\\t\\ttag,\\n\\t\\tdomNode,\\n\\t\\tclasses = [];\\n\\t// Save the parent dom node\\n\\tthis.parentDomNode = parent;\\n\\t// Compute our attributes\\n\\tthis.computeAttributes();\\n\\t// Execute our logic\\n\\tthis.execute();\\n\\t// Sanitise the specified tag\\n\\ttag = this.draggableTag;\\n\\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\\n\\t\\ttag = \\\"div\\\";\\n\\t}\\n\\t// Create our element\\n\\tdomNode = this.document.createElement(tag);\\n\\t// Assign classes\\n\\tif(this.draggableClasses) {\\n\\t\\tclasses.push(this.draggableClasses);\\n\\t}\\n\\tif(!this.dragHandleSelector && this.dragEnable) {\\n\\t\\tclasses.push(\\\"tc-draggable\\\");\\n\\t}\\n\\tdomNode.setAttribute(\\\"class\\\",classes.join(\\\" \\\"));\\n\\t// Assign data- attributes and style. attributes\\n\\tthis.assignAttributes(domNode,{\\n\\t\\tsourcePrefix: \\\"data-\\\",\\n\\t\\tdestPrefix: \\\"data-\\\"\\n\\t});\\n\\t// Insert the node into the DOM and render any children\\n\\tparent.insertBefore(domNode,nextSibling);\\n\\tthis.renderChildren(domNode,null);\\n\\tthis.makeDraggable(domNode);\\n\\tthis.domNodes.push(domNode);\\n};\\n\\nDraggableWidget.prototype.makeDraggable = function(domNode) {\\n\\tvar self = this;\\n\\t// Add event handlers\\n\\tif(this.dragEnable) {\\n\\t\\t$tw.utils.makeTiddlyFlexDraggable({\\n\\t\\t\\tdomNode: domNode,\\n\\t\\t\\tremove: false,\\n\\t\\t\\tdragTiddlerFn: function() {return self.getAttribute(\\\"tiddler\\\");},\\n\\t\\t\\tdragFilterFn: function() {return self.getAttribute(\\\"filter\\\");},\\n\\t\\t\\tstartActions: self.startActions,\\n\\t\\t\\tendActions: self.endActions,\\n\\t\\t\\tdragImageType: self.dragImageType,\\n\\t\\t\\twidget: this,\\n\\t\\t\\tselector: self.dragHandleSelector\\n\\t\\t});\\n\\t} else if(this.dragStartListenerReference && this.dragEndListenerReference) {\\n\\t\\tdomNode.removeEventListener(\\\"dragstart\\\",this.dragStartListenerReference,false);\\n\\t\\tdomNode.removeEventListener(\\\"dragend\\\",this.dragEndListenerReference,false);\\n\\t\\tdomNode.removeAttribute(\\\"draggable\\\");\\n\\t}\\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nDraggableWidget.prototype.execute = function() {\\n\\t// Pick up our attributes\\n\\tthis.draggableTag = this.getAttribute(\\\"tag\\\",\\\"div\\\");\\n\\tthis.draggableClasses = this.getAttribute(\\\"class\\\");\\n\\tthis.startActions = this.getAttribute(\\\"startactions\\\");\\n\\tthis.endActions = this.getAttribute(\\\"endactions\\\");\\n\\tthis.dragImageType = this.getAttribute(\\\"dragimagetype\\\");\\n\\tthis.dragHandleSelector = this.getAttribute(\\\"selector\\\");\\n\\tthis.dragEnable = this.getAttribute(\\\"enable\\\",\\\"yes\\\") === \\\"yes\\\";\\n\\t// Make the child widgets\\n\\tthis.makeChildWidgets();\\n};\\n\\n\\nDraggableWidget.prototype.updateDomNodeClasses = function() {\\n\\tvar domNodeClasses = this.domNodes[0].className.split(\\\" \\\"),\\n\\t\\toldClasses = this.draggableClasses.split(\\\" \\\");\\n\\tthis.draggableClasses = this.getAttribute(\\\"class\\\");\\n\\t//Remove classes assigned from the old value of class attribute\\n\\t$tw.utils.each(oldClasses,function(oldClass){\\n\\t\\tvar i = domNodeClasses.indexOf(oldClass);\\n\\t\\tif(i !== -1) {\\n\\t\\t\\tdomNodeClasses.splice(i,1);\\n\\t\\t}\\n\\t});\\n\\t//Add new classes from updated class attribute.\\n\\t$tw.utils.pushTop(domNodeClasses,this.draggableClasses);\\n\\tthis.domNodes[0].setAttribute(\\\"class\\\",domNodeClasses.join(\\\" \\\"));\\n}\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.tag || changedAttributes.selector || changedAttributes.dragimagetype || changedAttributes.startactions || changedAttributes.endactions) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\tif(changedAttributes[\\\"enable\\\"]) {\\n\\t\\t\\tthis.dragEnable = this.getAttribute(\\\"enable\\\",\\\"yes\\\") === \\\"yes\\\";\\n\\t\\t\\tthis.makeDraggable(this.domNodes[0]);\\n\\t\\t\\tif(!this.dragHandleSelector && this.dragEnable && !this.domNodes[0].classList.contains(\\\"tc-draggable\\\")) {\\n\\t\\t\\t\\tthis.domNodes[0].classList.add(\\\"tc-draggable\\\");\\n\\t\\t\\t} else if(!this.dragEnable && this.domNodes[0].classList.contains(\\\"tc-draggable\\\")) {\\n\\t\\t\\t\\tthis.domNodes[0].classList.remove(\\\"tc-draggable\\\");\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif(changedAttributes[\\\"class\\\"]) {\\n\\t\\t\\tthis.updateDomNodeClasses();\\n\\t\\t}\\n\\t\\tthis.assignAttributes(this.domNodes[0],{\\n\\t\\t\\tchangedAttributes: changedAttributes,\\n\\t\\t\\tsourcePrefix: \\\"data-\\\",\\n\\t\\t\\tdestPrefix: \\\"data-\\\"\\n\\t\\t});\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers);\\n};\\n\\nexports[\\\"tiddlyflex-draggable\\\"] = DraggableWidget;\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/tiddlyflex-draggable.js\",\"module-type\":\"widget\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/dynanode.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/dynanode.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nDynaNode widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar STATE_OUT_OF_VIEW = \\\"0\\\",\\n\\tSTATE_NEAR_VIEW = \\\"1\\\",\\n\\tSTATE_IN_VIEW = \\\"2\\\";\\n\\nvar ANIM_FRAME_CAUSED_BY_LOAD = 1, // Animation frame was requested because of page load\\n\\tANIM_FRAME_CAUSED_BY_SCROLL = 2, // Animation frame was requested because of page scroll\\n\\tANIM_FRAME_CAUSED_BY_RESIZE = 4; // Animation frame was requested because of window resize\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar DynaNodeWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nDynaNodeWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nDynaNodeWidget.prototype.render = function(parent,nextSibling) {\\n\\tvar self = this;\\n\\t// Remember domNode\\n\\tthis.parentDomNode = parent;\\n\\t// Compute attributes and execute state\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\t// Create element\\n\\tvar tag = this.parseTreeNode.isBlock ? \\\"div\\\" : \\\"span\\\";\\n\\tif(this.elementTag && $tw.config.htmlUnsafeElements.indexOf(this.elementTag) === -1) {\\n\\t\\ttag = this.elementTag;\\n\\t}\\n\\tvar domNode = this.document.createElement(tag);\\n\\tthis.domNode = domNode;\\n\\t// Assign classes\\n\\tthis.assignDomNodeClasses();\\n\\tthis.assignAttributes(domNode,{\\n\\t\\tsourcePrefix: \\\"data-\\\",\\n\\t\\tdestPrefix: \\\"data-\\\"\\n\\t});\\n\\n\\tthis.isWaitingForAnimationFrame = 0;\\n\\tthis.changedTiddlers = {};\\n\\tthis.dynanodeElements = [];\\n\\tthis.spaced = new WeakMap();\\n\\tthis.spacedTimestamps = new WeakMap();\\n\\tthis.stateMap = new WeakMap();\\n\\n\\tfunction worker() {\\n\\t\\tfor(var i=0; i\u003Cself.dynanodeElements.length; i++) {\\n\\t\\t\\tself.reserveSpace(self.dynanodeElements.length,i,self.dynanodeElements[i]);\\n\\t\\t}\\n\\t};\\n\\n\\tthis.onScroll = function(event) {\\n\\t\\tif(!self.isWaitingForAnimationFrame) {\\n\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(worker);\\n\\t\\t}\\n\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_SCROLL;\\n\\t};\\n\\n\\tthis.onResize = function(event) {\\n\\t\\tif(!self.isWaitingForAnimationFrame) {\\n\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(worker);\\n\\t\\t}\\n\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_RESIZE;\\n\\t};\\n\\n\\tthis.dynanodeWorker = function(entries) {\\n\\t\\tvar length = entries.length;\\n\\t\\tfor(var i=0; i\u003Clength; i++) {\\n\\t\\t\\tvar entry= entries[i];\\n\\t\\t\\tif(entry.target) {\\n\\t\\t\\t\\tif(self.dynanodeElements.indexOf(entry.target) === -1) {\\n\\t\\t\\t\\t\\tself.dynanodeElements.push(entry.target);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else if(self.dynanodeElements.indexOf(entry) === -1) {\\n\\t\\t\\t\\tself.dynanodeElements.push(entry);\\n\\t\\t\\t}\\n\\t\\t\\tvar rect = entry.contentRect ? entry.contentRect : undefined;\\n\\t\\t\\tvar target = entry.target ? entry.target : entry;\\n\\t\\t\\tself.reserveSpace(length,i,target,rect);\\n\\t\\t}\\n\\t};\\n\\n\\tthis.resizeObserver = new ResizeObserver(function(entries) {\\n\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\tif(!Array.isArray(entries) || !entries.length) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\tif(self.isWaitingForAnimationFrame) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\tif(!self.isWaitingForAnimationFrame) {\\n\\t\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\t\\t\\tself.dynanodeWorker(entries);\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_RESIZE;\\n\\t\\t});\\n\\t});\\n\\n\\tthis.mutationObserver = new MutationObserver(function(mutations) {\\n\\t\\tvar childListChanged = false;\\n\\t\\tvar addedNodes = [],\\n\\t\\t\\tremovedNodes = [];\\n\\t\\tfor(var i=0; i\u003Cmutations.length; i++) {\\n\\t\\t\\tvar mutation = mutations[i];\\n\\t\\t\\tif(mutation.type === \\\"childList\\\") {\\n\\t\\t\\t\\tfor(var j=0; j\u003Cmutation.addedNodes.length; j++) {\\n\\t\\t\\t\\t\\tvar addedNode = mutation.addedNodes[j];\\n\\t\\t\\t\\t\\tif((addedNode.matches || addedNode.msMatchesSelector) && $tw.utils.domMatchesSelector(addedNode,self.dynanodeSelector)) {\\n\\t\\t\\t\\t\\t\\taddedNodes.push(addedNode);\\n\\t\\t\\t\\t\\t\\tif(j === (mutation.addedNodes.length - 1)) {\\n\\t\\t\\t\\t\\t\\t\\tfor(var k=0; k\u003CaddedNodes.length; k++) {\\n\\t\\t\\t\\t\\t\\t\\t\\tif(self.dynanodeElements.indexOf(addedNodes[k]) === -1) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tself.dynanodeElements.push(addedNodes[k]);\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\tself.resizeObserver.observe(addedNodes[k]);\\n\\t\\t\\t\\t\\t\\t\\t\\tif(k === (addedNodes.length - 1)) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif(!self.isWaitingForAnimationFrame) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.dynanodeWorker(addedNodes);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_LOAD;\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tfor(j=0; j\u003Cmutation.removedNodes.length; j++) {\\n\\t\\t\\t\\t\\tvar removedNode = mutation.removedNodes[j];\\n\\t\\t\\t\\t\\tif((removedNode.matches || removedNode.msMatchesSelector) && $tw.utils.domMatchesSelector(removedNode,self.dynanodeRemoveSelector)) {\\n\\t\\t\\t\\t\\t\\tremovedNodes.push(removedNode);\\n\\t\\t\\t\\t\\t\\tif(j === (mutation.removedNodes.length - 1)) {\\n\\t\\t\\t\\t\\t\\t\\tfor(var k=0; k\u003CremovedNodes.length; k++) {\\n\\t\\t\\t\\t\\t\\t\\t\\tfor(var l=0; l\u003Cself.dynanodeElements.length; l++) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar dynanodeElement = self.dynanodeElements[l];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif((removedNodes[k] === dynanodeElement) || (removedNodes[k].contains(dynanodeElement))) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.resizeObserver.unobserve(dynanodeElement);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.dynanodeElements.splice(l,1);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.spaced.delete(dynanodeElement);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.spacedTimestamps.delete(dynanodeElement);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.stateMap.delete(dynanodeElement);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\tif(k === (removedNodes.length - 1)) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif(!self.isWaitingForAnimationFrame) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(worker);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_LOAD;\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n\\n\\tif(this.dynanodeEnable) {\\n\\t\\tdomNode.addEventListener(\\\"scroll\\\",this.onScroll,false);\\n\\t\\tdomNode.addEventListener(\\\"resize\\\",this.onResize,false);\\n\\t\\tdomNode.ownerDocument.defaultView.addEventListener(\\\"resize\\\",this.onResize,false);\\n\\t\\tthis.mutationObserver.observe(domNode,{childList: true, subtree: true});\\n\\t}\\n\\n\\t// Insert element\\n\\tparent.insertBefore(domNode,nextSibling);\\n\\tthis.renderChildren(domNode,null);\\n\\tthis.domNodes.push(domNode);\\n\\n\\tif(this.dynanodeEnable) {\\n\\t\\tthis.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\t\\tvar elements = self.domNode.querySelectorAll(self.dynanodeSelector);\\n\\t\\t\\t\\tself.dynanodeWorker(elements);\\n\\t\\t\\t});\\n\\t\\t});\\n\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_LOAD;\\n\\t}\\n};\\n\\nDynaNodeWidget.prototype.eqIsh = function(a,b,fuzz = 0) {\\n\\treturn (Math.abs(a - b) \u003C= fuzz);\\n};\\n\\nDynaNodeWidget.prototype.rectNotEQ = function(a,b) {\\n\\treturn (!this.eqIsh(a.width, b.width) ||\\n\\t\\t\\t!this.eqIsh(a.height, b.height));\\n};\\n\\nDynaNodeWidget.prototype.reserveSpace = function(length,i,element,rect) {\\n\\tif(rect === undefined) {\\n\\t\\tvar bounds = element.getBoundingClientRect(),\\n\\t\\t\\twidth = bounds.width,\\n\\t\\t\\theight = bounds.height;\\n\\t\\tvar computedStyle = this.domNode.ownerDocument.defaultView.getComputedStyle(element);\\n\\t\\trect = {\\n\\t\\t\\twidth: width - (parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight) + parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth)),\\n\\t\\t\\theight: height - (parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom) + parseFloat(computedStyle.borderTopWidth) + parseFloat(computedStyle.borderBottomWidth))\\n\\t\\t};\\n\\t}\\n\\tvar old = this.spaced.get(element);\\n\\tvar oldTimestamp = this.spacedTimestamps.get(element),\\n\\t\\tnewTimestamp = Date.now();\\n\\tif(!old || this.rectNotEQ(old,rect)) {\\n\\t\\tthis.spaced.set(element,rect);\\n\\t\\tthis.spacedTimestamps.set(element,newTimestamp);\\n\\t\\tif(oldTimestamp === undefined) {\\n\\t\\t\\toldTimestamp = newTimestamp - this.dynanodeTimeout;\\n\\t\\t}\\n\\t\\tif((newTimestamp - oldTimestamp) >= this.dynanodeTimeout) {\\n\\t\\t\\t$tw.utils.setStyle(element,[\\n\\t\\t\\t\\t{ containIntrinsicSize: `${rect.width}px ${rect.height}px` }\\n\\t\\t\\t]);\\n\\t\\t}\\n\\t}\\n\\tif(i === (length - 1)) {\\n\\t\\tthis.checkVisibility();\\n\\t}\\n};\\n\\nDynaNodeWidget.prototype.checkVisibility = function() {\\n\\tvar self = this;\\n\\tvar elements = this.dynanodeElements;\\n\\tvar visibilityChanged = false;\\n\\tvar domNodeWidth = this.domNode.offsetWidth,\\n\\t\\tdomNodeHeight = this.domNode.offsetHeight,\\n\\t\\tdomNodeBounds = this.domNode.getBoundingClientRect();\\n\\n\\tvar domNodeRect = {\\n\\t\\tleft: domNodeBounds.left,\\n\\t\\tright: domNodeBounds.left + domNodeWidth,\\n\\t\\ttop: domNodeBounds.top,\\n\\t\\tbottom: domNodeBounds.top + domNodeHeight\\n\\t};\\n\\tfor(var i=0; i\u003Celements.length; i++) {\\n\\t\\tvar element = elements[i];\\n\\t\\tvar oldTimestamp = this.spacedTimestamps.get(element),\\n\\t\\t\\tnewTimestamp = Date.now();\\n\\t\\tif((newTimestamp - oldTimestamp) >= self.dynanodeTimeout) {\\n\\t\\t\\t// Calculate whether the element is visible\\n\\t\\t\\tvar elementRect = element.getBoundingClientRect();\\n\\t\\t\\tvar currValue = self.stateMap.get(element),//self.wiki.getTiddlerText(title),\\n\\t\\t\\t\\tnewValue = currValue;\\n\\t\\t\\t// Within viewport\\n\\t\\t\\tif(!(elementRect.left > domNodeRect.right || \\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.right \u003C domNodeRect.left || \\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.top > domNodeRect.bottom ||\\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.bottom \u003C domNodeRect.top)) {\\n\\t\\t\\t\\tnewValue = STATE_IN_VIEW;\\n\\t\\t\\t// Near viewport\\n\\t\\t\\t} else if(!(elementRect.left > (domNodeRect.right + domNodeWidth) || \\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.right \u003C (domNodeRect.left - domNodeWidth) || \\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.top > (domNodeRect.bottom + domNodeHeight) ||\\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.bottom \u003C (domNodeRect.top - domNodeHeight))) {\\n\\t\\t\\t\\tnewValue = STATE_NEAR_VIEW;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tnewValue = STATE_OUT_OF_VIEW;\\n\\t\\t\\t}\\n\\t\\t\\tif(newValue !== currValue) {\\n\\t\\t\\t\\tself.stateMap.set(element,newValue);\\n\\t\\t\\t\\tif(newValue === STATE_IN_VIEW) {\\n\\t\\t\\t\\t\\t$tw.utils.addClass(element,\\\"tc-dynanode-visible\\\");\\n\\t\\t\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-near\\\");\\n\\t\\t\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-hidden\\\");\\n\\t\\t\\t\\t\\t$tw.utils.setStyle(element,[\\n\\t\\t\\t\\t\\t\\t{ contentVisibility: null }\\n\\t\\t\\t\\t\\t]);\\n\\t\\t\\t\\t\\tif(currValue !== undefined) {\\n\\t\\t\\t\\t\\t\\tvisibilityChanged = true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif(newValue === STATE_NEAR_VIEW) {\\n\\t\\t\\t\\t\\t$tw.utils.addClass(element,\\\"tc-dynanode-near\\\");\\n\\t\\t\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-visible\\\");\\n\\t\\t\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-hidden\\\");\\n\\t\\t\\t\\t\\tif(element.style[\\\"content-visibility\\\"] !== \\\"auto\\\") {\\n\\t\\t\\t\\t\\t\\t$tw.utils.setStyle(element,[\\n\\t\\t\\t\\t\\t\\t\\t{ contentVisibility: \\\"auto\\\" }\\n\\t\\t\\t\\t\\t\\t]);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif(newValue === STATE_OUT_OF_VIEW) {\\n\\t\\t\\t\\t\\t$tw.utils.addClass(element,\\\"tc-dynanode-hidden\\\");\\n\\t\\t\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-visible\\\");\\n\\t\\t\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-near\\\");\\n\\t\\t\\t\\t\\tif(element.style[\\\"content-visibility\\\"] !== \\\"auto\\\") {\\n\\t\\t\\t\\t\\t\\t$tw.utils.setStyle(element,[\\n\\t\\t\\t\\t\\t\\t\\t{ contentVisibility: \\\"auto\\\" }\\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\\tif(i === (elements.length - 1)) {\\n\\t\\t\\t//if(visibilityChanged) {\\n\\t\\t\\tvar refreshed = self.refreshChildren(self.changedTiddlers,self.dynanodeRefreshChildren);\\n\\t\\t\\tif(refreshed) {\\n\\t\\t\\t\\tself.changedTiddlers = {};\\n\\t\\t\\t}\\n\\t\\t\\t//}\\n\\t\\t\\tself.isWaitingForAnimationFrame = 0;\\n\\t\\t}\\n\\t}\\n};\\n\\nDynaNodeWidget.prototype.clearElementStyles = function() {\\n\\tfor(var i=0; i\u003Cthis.dynanodeElements.length; i++) {\\n\\t\\tvar element = this.dynanodeElements[i];\\n\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-visible\\\");\\n\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-near\\\");\\n\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-hidden\\\");\\n\\t\\t$tw.utils.setStyle(element,[\\n\\t\\t\\t{ contentVisibility: null },\\n\\t\\t\\t{ containIntrinsicSize: null }\\n\\t\\t]);\\n\\t\\tif(i === (this.dynanodeElements.length - 1)) {\\n\\t\\t\\tthis.dynanodeElements = [];\\n\\t\\t\\tthis.spaced = new WeakMap();\\n\\t\\t\\tthis.spacedTimestamps = new WeakMap();\\n\\t\\t\\tthis.stateMap = new WeakMap();\\n\\t\\t}\\n\\t}\\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nDynaNodeWidget.prototype.execute = function() {\\n\\tvar self = this;\\n\\tthis.elementTag = this.getAttribute(\\\"tag\\\");\\n\\tthis.dynanodeEnable = this.getAttribute(\\\"enable\\\",\\\"no\\\") === \\\"yes\\\";\\n\\tthis.dynanodeSelector = this.getAttribute(\\\"selector\\\",\\\".tc-dynanode-track-tiddler-when-visible\\\");\\n\\tthis.dynanodeRemoveSelector = this.getAttribute(\\\"removeselector\\\",\\\".tc-dynanode-track-tiddler-when-visible\\\");\\n\\tthis.dynanodeTimeout = parseInt(this.getAttribute(\\\"timeout\\\",\\\"25\\\"));\\n\\tthis.dynanodeRefreshChildren = this.getAttribute(\\\"refreshchildren\\\",\\\"no\\\") === \\\"yes\\\";\\n\\t// Make child widgets\\n\\tthis.makeChildWidgets();\\n};\\n\\nDynaNodeWidget.prototype.assignDomNodeClasses = function() {\\n\\tvar classes = this.getAttribute(\\\"class\\\",\\\"\\\").split(\\\" \\\");\\n\\tclasses.push(\\\"tc-dynanode\\\");\\n\\tthis.domNode.className = classes.join(\\\" \\\");\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nDynaNodeWidget.prototype.refresh = function(changedTiddlers) {\\n\\tvar self = this;\\n\\tfor(var obj in changedTiddlers) {\\n\\t\\tthis.changedTiddlers[obj] = changedTiddlers[obj];\\n\\t}\\n\\tvar changedAttributes = this.computeAttributes(),\\n\\t\\tchangedAttributesCount = $tw.utils.count(changedAttributes);\\n\\tif(changedAttributesCount === 1 && changedAttributes[\\\"class\\\"]) {\\n\\t\\tthis.assignDomNodeClasses();\\n\\t} else if(changedAttributes.tag || changedAttributes.selector) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else if(changedAttributes.enable) {\\n\\t\\tthis.dynanodeEnable = this.getAttribute(\\\"enable\\\",\\\"no\\\") === \\\"yes\\\";\\n\\t\\tif(this.dynanodeEnable) {\\n\\t\\t\\tthis.domNode.addEventListener(\\\"scroll\\\",this.onScroll,false);\\n\\t\\t\\tthis.domNode.addEventListener(\\\"resize\\\",this.onResize,false);\\n\\t\\t\\tthis.domNode.ownerDocument.defaultView.addEventListener(\\\"resize\\\",this.onResize,false);\\n\\t\\t\\tthis.mutationObserver.observe(this.domNode,{childList: true, subtree: true});\\n\\t\\t\\tthis.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\t\\t\\tvar elements = self.domNode.querySelectorAll(self.dynanodeSelector);\\n\\t\\t\\t\\t\\tself.dynanodeWorker(elements);\\n\\t\\t\\t\\t\\tfor(var i=0; i\u003Celements.length; i++) {\\n\\t\\t\\t\\t\\t\\tself.resizeObserver.observe(elements[i]);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t});\\n\\t\\t\\t});\\n\\t\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_LOAD;\\n\\t\\t} else {\\n\\t\\t\\tthis.domNode.removeEventListener(\\\"scroll\\\",this.onScroll,false);\\n\\t\\t\\tthis.domNode.removeEventListener(\\\"resize\\\",this.onResize,false);\\n\\t\\t\\tthis.domNode.ownerDocument.defaultView.removeEventListener(\\\"resize\\\",this.onResize,false);\\n\\t\\t\\tthis.resizeObserver.disconnect();\\n\\t\\t\\tthis.mutationObserver.disconnect();\\n\\t\\t\\tthis.clearElementStyles();\\n\\t\\t}\\n\\t} else {\\n\\t\\tthis.assignAttributes(this.domNode,{\\n\\t\\t\\tchangedAttributes: changedAttributes,\\n\\t\\t\\tsourcePrefix: \\\"data-\\\",\\n\\t\\t\\tdestPrefix: \\\"data-\\\"\\n\\t\\t});\\n\\t}\\n\\tif(changedAttributes.timeout) {\\n\\t\\tthis.dynanodeTimeout = parseInt(this.getAttribute(\\\"timeout\\\",\\\"25\\\"));\\n\\t}\\n\\tif(changedAttributes.refreshchildren) {\\n\\t\\tthis.dynanodeRefreshChildren = this.getAttribute(\\\"refreshchildren\\\",\\\"no\\\") === \\\"yes\\\";\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers);\\n};\\n\\nexports.dynanode = DynaNodeWidget;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/dynanode.js\",\"module-type\":\"widget\"},\"$:/plugins/BTC/TiddlyFlex/globals/css\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/css\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\define tiddlyflex-css-horizontal-view()\\n\\n.tc-tiddlyflex-main-wrapper {\\n\\toverflow-x: auto;\\n}\\n\\n.tc-tiddlyflex-main {\\n\\toverflow-x: clip;\\n}\\n\\n.tc-tiddlyflex-sidebar {\\n\\tposition: fixed;\\n\\ttop:0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tz-index: 1001;\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n\\ttransform: translate3d(0,0,0);\\n\\t-webkit-transition: transform {{$:/config/AnimationDuration}}ms linear, box-shadow {{$:/config/AnimationDuration}}ms linear;\\n\\ttransition: transform {{$:/config/AnimationDuration}}ms linear, box-shadow {{$:/config/AnimationDuration}}ms linear;\\n}\\n\\n\u003C%if [{$:/state/sidebar}match[no]] %>\\n\\n\\t.tc-tiddlyflex-sidebar {\\n\\t\\ttransform: translate3d(100%,0,0);\\n\\t}\\n\\n\u003C% endif %>\\n\\n.tc-tiddlyflex-leftbar {\\n\\tdisplay: none;\\n}\\n\\n.tc-tiddlyflex-story-river-container-inner {\\n\\toverflow-x: auto;\\n\\twidth: 100vw;\\n\\tscroll-behavior: smooth;\\n\\tscroll-snap-type: x mandatory;\\n}\\n\\n.tc-tiddlyflex-story-river-wrapper {\\n\\twidth: 100vw;\\n\\tflex-basis: 100vw;\\n\\tscroll-snap-align: start;\\n\\toverflow: hidden;\\n}\\n\\n.tc-tiddlyflex-sidebar-hide.tc-tiddlyflex-sidebar-shown {\\n\\tvisibility: visible;\\n\\tbackground: rgba(0,0,0,.6);\\n\\t-webkit-transition: background {{$:/config/AnimationDuration}}ms 0s;\\n\\ttransition: background {{$:/config/AnimationDuration}}ms 0s;\\n}\\n\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/globals/dragndrop\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/dragndrop\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\procedure tiddlyflex-top-dragenter-actions()\\n\u003C%if [[$:/state/dragging]has[dragenter-count]] %>\\n \\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" starting-next-tiddler=\\\"\\\" copying=\\\"\\\" target=\u003C\u003CcurrentTiddler>> margin=\\\"top\\\" nth={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]] }}} river=\u003C\u003CtiddlyFlexColumn>> next-tiddler=\\\"\\\" from-index={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]] }}} from-story=\u003C\u003Ctv-story-list>> dragenter-count={{{ [[$:/state/dragging]get[dragenter-count]add[1]] }}}/>\\n\u003C% else %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" dragenter-count=\\\"1\\\"/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-bottom-dragenter-actions()\\n\u003C%if [[$:/state/dragging]has[dragenter-count]] %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" starting-next-tiddler=\\\"\\\" copying=\\\"\\\" target=\u003C\u003CcurrentTiddler>> margin=\\\"bottom\\\" nth={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]add[1]] }}} river=\u003C\u003CtiddlyFlexColumn>> next-tiddler=\\\"\\\" from-index={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]add[1]] }}} from-story=\u003C\u003Ctv-story-list>> dragenter-count={{{ [[$:/state/dragging]get[dragenter-count]add[1]] }}}/>\\n\u003C% else %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" dragenter-count=\\\"1\\\"/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-top-drop-actions-inner()\\n\u003C%if [\u003CactionTiddler>!match\u003CcurrentTiddler>] %>\\n\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CcurrentTiddler>]\\\"/>\\n\\t\u003C%if [\u003Ctv-history-list>get[current-tiddler]match[]] [\u003Ctv-history-list>!has[current-tiddler]] +[limit[1]] %>\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CactionTiddler>>/>\\n\\t\u003C% endif %>\\n\u003C% else %>\\n\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/drag-handled\\\"/>\u003C$action-deletetiddler $tiddler=\\\"$:/state/dragging\\\"/>\\n\u003C% endif %>\\n\u003C$vars fromStoryList={{$:/state/dragging!!starting-from-story}} fromHistoryList={{$:/state/dragging!!from-history}}>\\n\\t\u003C%if [\u003CfromStoryList>!match\u003Ctv-story-list>] %>\\n\\t\\t\u003C%if [{$:/state/dragging!!is-focused-tiddler}match[TRUE]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003CfromHistoryList>> current-tiddler={{{ [list\u003CfromStoryList>zth{$:/state/dragging!!starting-from-index}] }}}/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C/$vars>\\n\\\\end\\n\\\\procedure tiddlyflex-top-drop-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/state/drag-handled\\\" text=\\\"yes\\\"/>\\n\u003C$vars prefix=\\\"[[\\\" suffix=\\\"]]\\\">\\n\\t\u003C%if [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] %>\\n\\t\\t\u003C$set name=\\\"actionTiddler\\\" value={{{ [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] }}}>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-top-drop-actions-inner>>\\n\\t\\t\u003C/$set>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-top-drop-actions-inner>>\\n\\t\u003C% endif %>\\n\u003C/$vars>\\n\\\\end\\n\\\\procedure tiddlyflex-bottom-drop-actions-inner()\\n\u003C$set name=\\\"nextTiddler\\\" value={{{ [list\u003Ctv-story-list>after\u003CcurrentTiddler>] }}}>\\n\\t\u003C%if [\u003CnextTiddler>match[]] %>\\n\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"[\u003CactionTiddler>]\\\"/>\\n\\t\\t\u003C$list filter=\\\"[\u003Ctv-history-list>get[current-tiddler]match[]] [\u003Ctv-history-list>!has[current-tiddler]] +[limit[1]]\\\" variable=\\\"ignore\\\">\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CactionTiddler>>/>\\n\\t\\t\u003C/$list>\\n\\t\u003C% else %>\\n\\t\\t\u003C%if [\u003CactionTiddler>!match\u003CnextTiddler>] %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CnextTiddler>]\\\"/>\\n\\t\\t\\t\u003C$list filter=\\\"[\u003Ctv-history-list>get[current-tiddler]match[]] [\u003Ctv-history-list>!has[current-tiddler]] +[limit[1]]\\\" variable=\\\"ignore\\\">\\n\\t\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CactionTiddler>>/>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/drag-handled\\\"/>\u003C$action-deletetiddler $tiddler=\\\"$:/state/dragging\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C/$set>\\n\u003C$vars fromStoryList={{$:/state/dragging!!starting-from-story}} fromHistoryList={{$:/state/dragging!!from-history}}>\\n\\t\u003C%if [\u003CfromStoryList>!match\u003Ctv-story-list>] %>\\n\\t\\t\u003C%if [{$:/state/dragging!!is-focused-tiddler}match[TRUE]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003CfromHistoryList>> current-tiddler={{{ [list\u003CfromStoryList>zth{$:/state/dragging!!starting-from-index}] }}}/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C/$vars>\\n\\\\end\\n\\\\procedure tiddlyflex-bottom-drop-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/state/drag-handled\\\" text=\\\"yes\\\"/>\\n\u003C$vars prefix=\\\"[[\\\" suffix=\\\"]]\\\">\\n\\t\u003C%if [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] %>\\n\\t\\t\u003C$set name=\\\"actionTiddler\\\" value={{{ [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] }}}>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-bottom-drop-actions-inner>>\\n\\t\\t\u003C/$set>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-bottom-drop-actions-inner>>\\n\\t\u003C% endif %>\\n\u003C/$vars>\\n\\\\end\\n\\\\procedure tiddlyflex-drag-start-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\"\\n\\tnth={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]] }}}\\n\\theight=\u003C\u003Ctv-selectednode-height>>\\n\\twidth=\u003C\u003Ctv-selectednode-width>>\\n\\tstart-river=\u003C\u003CtiddlyFlexColumn>>\\n\\tstarting-next-tiddler={{{ [list\u003Ctv-story-list>after\u003CcurrentTiddler>] }}}\\n\\tstarting-from-index={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]] }}}\\n\\tstarting-from-story=\u003C\u003Ctv-story-list>>\\n/>\\n\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\"\\n\\tdrag-tiddler=\u003C\u003CcurrentTiddler>>\\n\\tnext-tiddler={{{ [list\u003Ctv-story-list>after\u003CcurrentTiddler>] }}}\\n\\tfrom-index={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]] }}}\\n\\tfrom-story=\u003C\u003Ctv-story-list>>\\n\\tfrom-history=\u003C\u003Ctv-history-list>>\\n\\tis-focused-tiddler={{{ [\u003Ctv-history-list>get[current-tiddler]match\u003CcurrentTiddler>then[TRUE]] ~[[FALSE]] }}}\\n\\ttarget={{{ [list\u003Ctv-story-list>after\u003CcurrentTiddler>] }}}\\n/>\\n\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" text=\\\"yes\\\"/>\\n\u003C%if [\u003Cmodifier>!match[ctrl]] %>\\n\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CcurrentTiddler>]\\\"/>\\n\u003C% else %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" copying=\\\"yes\\\"/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-drag-end-actions()\\n\u003C%if [[$:/state/drag-handled]is[missing]] %>\\n\\t\u003C$let fromStoryList={{$:/state/dragging!!starting-from-story}} fromIndex={{$:/state/dragging!!starting-from-index}} listBeforeTiddler={{{ [list\u003CfromStoryList>zth\u003CfromIndex>] }}} prefix=\\\"[[\\\" suffix=\\\"]]\\\" actionTiddler={{{ [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] :else[\u003CactionTiddler>] }}}>\\n\\t\\t\u003C%if [\u003ClistBeforeTiddler>!is[blank]] %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CfromStoryList>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003ClistBeforeTiddler>]\\\"/>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CfromStoryList>> $subfilter=\\\"[\u003CactionTiddler>]\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/drag-handled\\\"/>\\n\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/dragging\\\"/>\\n\\t\u003C/$let>\\n\u003C% else %>\\n\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/drag-handled\\\"/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-story-droppable-drop-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/state/drag-handled\\\" text=\\\"yes\\\"/>\\n\u003C$vars prefix=\\\"[[\\\" suffix=\\\"]]\\\">\\n\\t\u003C%if [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] %>\\n\\t\\t\u003C$set name=\\\"actionTiddler\\\" value={{{ [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] }}}>\\n\\t\\t\\t\u003C%if [{$:/state/tiddlyflex/story-river/filter}match[yes]] +[subfilter\u003Ctdff.tiddlyflex-story-river-filter>then[no]else[yes]!match[no]] %>\\n\\t\\t\\t\\t\u003C$set name=\\\"firstStoryTiddler\\\" value={{{ [list\u003Ctv-story-list>nth[1]] }}}>\\n\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CfirstStoryTiddler>]\\\"/>\\n\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\u003C% elseif [{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\\t\\t\\t\u003C$let lastShownTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[last[]] }}} insertBeforeTiddler={{{ [list\u003Ctv-story-list>after\u003ClastShownTiddler>] }}}>\\n\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CinsertBeforeTiddler>]\\\"/>\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C% else %>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"[\u003CactionTiddler>]\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$set>\\n\\t\u003C% else %>\\n\\t\\t\u003C%if [{$:/state/tiddlyflex/story-river/filter}match[yes]subfilter\u003Ctdff.tiddlyflex-story-river-filter>then[no]else[yes]!match[no]] %>\\n\\t\\t\\t\u003C$set name=\\\"firstStoryTiddler\\\" value={{{ [list\u003Ctv-story-list>nth[1]] }}}>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CfirstStoryTiddler>]\\\"/>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% elseif [{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\\t\\t\u003C$let lastShownTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[last[]] }}} insertBeforeTiddler={{{ [list\u003Ctv-story-list>after\u003ClastShownTiddler>] }}}>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CinsertBeforeTiddler>]\\\"/>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"[\u003CactionTiddler>]\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C/$vars>\\n\\\\end\\n\\\\procedure tiddlyflex-story-droppable-dragenter-actions()\\n\u003C%if [[$:/state/dragging]get[dragenter-count]] %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" target=\\\"\\\" starting-next-tiddler=\\\"\\\" copying=\\\"\\\"/>\\n\u003C% else %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" dragenter-count=\\\"1\\\"/>\\n\u003C% endif %>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/globals/interaction\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/interaction\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\procedure tiddlyflex-tm-message-navigator(actions)\\n\u003C$navigator story=\u003C\u003Ctv-story-list>> history=\u003C\u003Ctv-history-list>> openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\u003C\u003Cactions>>\\n\u003C/$navigator>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-message-navigator-outside(actions)\\n\u003C$navigator story={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] :map[addprefix[$:/StoryList-]] }}} history={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] :map[addprefix[$:/HistoryList-]] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\u003C\u003Cactions>>\\n\u003C/$navigator>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-message-actions(message,exclude)\\n\u003C$set name=\\\"storyTiddler\\\" value=\u003C\u003Cevent-navigateFromTitle>>>\\n\\t\u003C$action-sendmessage\\n\\t\\t$message=\u003C\u003Cevent-type>>\\n\\t\\t$param={{{ [\u003Cevent-param>!is[blank]!match[]] ~[\u003Cevent-type>!match[tm-new-tiddler]then\u003Cevent-tiddlerTitle>] }}}\\n\\t\\t$navigateTo=\u003C\u003Cevent-navigateTo>>\\n\\t\\t$navigateFromTitle=\u003C\u003Cevent-navigateFromTitle>>\\n\\t\\t$navigateFromClientRect=\u003C\u003Cevent-navigateFromClientRect>>\\n\\t\\t$navigateFromClientTop=\u003C\u003Cevent-navigateFromClientTop>>\\n\\t\\t$navigateFromClientLeft=\u003C\u003Cevent-navigateFromClientLeft>>\\n\\t\\t$navigateFromClientWidth=\u003C\u003Cevent-navigateFromClientWidth>>\\n\\t\\t$navigateFromClientRight=\u003C\u003Cevent-navigateFromClientRight>>\\n\\t\\t$navigateFromClientBottom=\u003C\u003Cevent-navigateFromClientBottom>>\\n\\t\\t$navigateFromClientHeight=\u003C\u003Cevent-navigateFromClientHeight>>\\n\\t\\t$navigateSuppressNavigation=\u003C\u003Cevent-navigateSuppressNavigation>>\\n\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-tm-cancel-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-cancel-tiddler \\\"param\\\">>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$vars from={{{ [\u003Cevent-param>!is[blank]] ~[\u003Cevent-tiddlerTitle>] }}} to={{{ [\u003Cevent-param>!is[blank]get[draft.of]] ~[\u003Cevent-tiddlerTitle>get[draft.of]] }}}>\\n\\t\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Cfrom>] }}} to={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Cto>] }}}/>\\n\\t\u003C/$vars>\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-close-all-tiddlers-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-close-all-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-close-other-tiddlers-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-close-other-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-close-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-close-tiddler \\\"param\\\">>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$action-deletetiddler $tiddler={{{ [\u003Cevent-param>!is[blank]addprefix[$:/state/tiddlyflex/story-river/fullscreen/]] ~[\u003Cevent-tiddlerTitle>addprefix[$:/state/tiddlyflex/story-river/fullscreen/]] }}}/>\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-delete-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-delete-tiddler \\\"param\\\">>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-edit-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-edit-tiddler \\\"param\\\">>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$vars from={{{ [\u003Cevent-param>!is[blank]] ~[\u003Cevent-tiddlerTitle>] }}} to={{{ [\u003Cevent-param>!is[blank]addprefix[Draft of ']addsuffix[']] ~[\u003Cevent-tiddlerTitle>addprefix[Draft of ']addsuffix[']] }}}>\\n\\t\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Cfrom>] }}} to={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Cto>] }}}/>\\n\\t\u003C/$vars>\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-fold-all-tiddlers-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-fold-all-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-fold-other-tiddlers-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-fold-other-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-fold-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-fold-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-home-actions()\\n\\\\procedure actions() \u003C$action-log/>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-navigate-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-navigate-story-river-actions>>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-import-tiddlers-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-import-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-new-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-new-tiddler \\\"tiddlerTitle type param\\\">>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-perform-import-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-perform-import \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-save-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-save-tiddler \\\"param\\\">>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$vars from={{{ [\u003Cevent-param>!is[blank]] ~[\u003Cevent-tiddlerTitle>] }}} to={{{ [\u003Cevent-param>!is[blank]get[draft.title]] ~[\u003Cevent-tiddlerTitle>get[draft.title]] }}}>\\n\\t\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Cfrom>] }}} to={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Cto>] }}}/>\\n\\t\u003C/$vars>\\t\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-unfold-all-tiddlers-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-unfold-all-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-tm-cancel-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-cancel-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-close-all-tiddlers-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-close-all-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-close-other-tiddlers-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-close-other-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-close-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-close-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-delete-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-delete-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-edit-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-edit-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-fold-all-tiddlers-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-fold-all-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-fold-other-tiddlers-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-fold-other-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-fold-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-fold-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-home-actions-outside()\\n\\\\procedure actions() \u003C$action-log/>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-navigate-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-navigate-story-river-actions>>\\n\u003C$set name=\\\"tiddlyFlexColumn\\\" value={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] }}}>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\u003C/$set>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-import-tiddlers-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-import-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-new-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-new-tiddler \\\"tiddlerTitle type param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-perform-import-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-perform-import \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-save-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-save-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-unfold-all-tiddlers-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-unfold-all-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/globals/ensemble\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/ensemble\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\function tdff.tiddlyflex-ensemble-tiddler-not-contains-value-in-field() [[\u003CensembleTiddler>]addprefix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[!contains:]] ${$(field)$}$ +[substitute[]] +[join[]] +[addsuffix[\u003Cvalue>]addsuffix[$(tiddlyFlexSuffix)$]substitute[]]\\n\\n\\\\define tiddlyflex-get-ensemble-overwrite-message()\\nThe ensemble \\\"$(ensembleTitle)$\\\" already exists.\\n\\nDo you want to overwrite it?\\n\\\\end\\n\\n\\\\procedure tiddlyflex-set-ensemble-configuration(tiddler,field:\\\"text\\\",value)\\n\\\\whitespace trim\\n\u003C%if [\u003Cvalue>!is[blank]then\u003Ctiddler>get\u003Cfield>!match\u003Cvalue>] ~[\u003Cvalue>!is[blank]then\u003Ctiddler>!has\u003Cfield>] ~[\u003Cvalue>!is[blank]then\u003Ctiddler>!is[shadow]is[missing]] %>\\n\\t\u003C$action-setfield $tiddler=\u003C\u003Ctiddler>> $field=\u003C\u003Cfield>> $value=\u003C\u003Cvalue>>/>\\n\u003C% endif %>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-save-ensemble-actions-inner(ensembleTitle)\\n\\\\whitespace trim\\n\u003C$set name=\\\"ensembleTiddler\\\" value={{{ [[$:/Ensemble/]addsuffix\u003CensembleTitle>] }}}>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"layout\\\" value={{$:/layout}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"view\\\" value={{$:/view}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"sidebar-state\\\" value={{$:/state/sidebar}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"columns\\\" value={{$:/columns!!list}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"current-column\\\" value={{$:/columns!!current-column}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"follow-current-column\\\" value={{{ [{$:/config/tiddlyflex/story-river/follow-current-column}match[no]] ~yes }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"show-edit-preview-per-tiddler\\\" value={{$:/config/ShowEditPreview/PerTiddler}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"story-river-padding\\\" value={{{ [[$:/config/tiddlyflex/story-river/padding]get[text]] ~[[]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"tiddler-margin-bottom\\\" value={{{ [[$:/config/tiddlyflex/story-river/tiddler/margin-bottom]get[text]] ~[[]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"palette\\\" value={{$:/palette}}/>\\n\\t\u003C$list filter=\\\"[list[$:/columns]]\\\" variable=\\\"column\\\">\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field={{{ [[story-list-]addsuffix\u003Ccolumn>] }}} value={{{ [[$:/StoryList-]addsuffix\u003Ccolumn>get[list]] ~[[]] }}}/>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/TopToolbar]!is[draft]]\\\" variable=\\\"topToolbarTiddler\\\">\\n\\t\\t\u003C%if [\u003CensembleTiddler>!contains:top-toolbar-tiddler\u003CtopToolbarTiddler>] %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CensembleTiddler>> $field=\\\"top-toolbar-tiddler\\\" $subfilter=\\\"[\u003CtopToolbarTiddler>]\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/BottomToolbar]!is[draft]]\\\" variable=\\\"bottomToolbarTiddler\\\">\\n\\t\\t\u003C%if [\u003CensembleTiddler>!contains:top-toolbar-tiddler\u003CbottomToolbarTiddler>] %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CensembleTiddler>> $field=\\\"bottom-toolbar-tiddler\\\" $subfilter=\\\"[\u003CbottomToolbarTiddler>]\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[tags[]prefix[$:/tags/AboveStoryHeader-]]\\\" variable=\\\"aboveStoryHeaderTag\\\">\\n\\t\\t\u003C$set name=\\\"index\\\" value={{{ [\u003CaboveStoryHeaderTag>removeprefix[$:/tags/AboveStoryHeader-]] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CaboveStoryHeaderTag>!is[draft]]\\\" variable=\\\"aboveStoryHeaderTiddler\\\">\\n\\t\\t\\t\\t\u003C$vars field={{{ [[above-story-header-tiddler-]addsuffix\u003Cindex>] }}} value=\u003C\u003CaboveStoryHeaderTiddler>>>\\n\\t\\t\\t\\t\\t\u003C%if [subfilter\u003Ctdff.tiddlyflex-ensemble-tiddler-not-contains-value-in-field>] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CensembleTiddler>> $field=\u003C\u003Cfield>> $subfilter=\\\"[\u003Cvalue>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\u003C/$vars>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[tags[]prefix[$:/tags/BelowStoryFooter-]]\\\" variable=\\\"belowStoryFooterTag\\\">\\n\\t\\t\u003C$set name=\\\"index\\\" value={{{ [\u003CbelowStoryFooterTag>removeprefix[$:/tags/BelowStoryFooter-]] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CbelowStoryFooterTag>!is[draft]]\\\" variable=\\\"belowStoryFooterTiddler\\\">\\n\\t\\t\\t\\t\u003C$vars field={{{ [[below-story-footer-tiddler-]addsuffix\u003Cindex>] }}} value=\u003C\u003CbelowStoryFooterTiddler>>>\\n\\t\\t\\t\\t\\t\u003C%if [subfilter\u003Ctdff.tiddlyflex-ensemble-tiddler-not-contains-value-in-field>] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CensembleTiddler>> $field=\u003C\u003Cfield>> $subfilter=\\\"[\u003Cvalue>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\u003C/$vars>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C/$list>\\n\\t\u003C$action-sendmessage $message=\\\"tm-auto-save-wiki\\\"/>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-empty-ensemble-title-message()\\n\\\\whitespace trim\\n\u003C$action-sendmessage $message=\\\"tm-notify\\\" $param=\\\"$:/plugins/BTC/tiddlyflex/ui/Notifications/Ensemble/EmptyNotification\\\"/>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-overwrite-ensemble-message()\\n\\\\whitespace trim\\n\u003C$action-confirm $message=\u003C\u003Ctiddlyflex-get-ensemble-overwrite-message>>>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-save-ensemble-actions-inner\\\" ensembleTitle=\u003C\u003CensembleTitle>>/>\\n\u003C/$action-confirm>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-save-ensemble-actions(ensembleTitle)\\n\\\\whitespace trim\\n\u003C%if [\u003CensembleTitle>!is[blank]!match[]] %>\\n\\t\u003C%if [[$:/Ensemble/]addsuffix\u003CensembleTitle>is[missing]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-save-ensemble-actions-inner\\\" ensembleTitle=\u003C\u003CensembleTitle>>/>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-overwrite-ensemble-message>>\\n\\t\u003C% endif %>\\n\u003C% else %>\\n\\t\u003C\u003Ctiddlyflex-empty-ensemble-title-message>>\\n\u003C% endif %>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-load-ensemble-actions()\\n\\\\whitespace trim\\n\u003C%if [\u003CensembleTiddler>!is[missing]] %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/layout\\\" value={{{ [\u003CensembleTiddler>get[layout]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/view\\\" value={{{ [\u003CensembleTiddler>get[view]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/state/sidebar\\\" value={{{ [\u003CensembleTiddler>get[sidebar-state]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/columns\\\" field=\\\"list\\\" value={{{ [\u003CensembleTiddler>get[columns]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/columns\\\" field=\\\"current-column\\\" value={{{ [\u003CensembleTiddler>get[current-column]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/config/ShowEditPreview/PerTiddler\\\" value={{{ [\u003CensembleTiddler>get[show-edit-preview-per-tiddler]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/config/tiddlyflex/story-river/padding\\\" value={{{ [\u003CensembleTiddler>get[story-river-padding]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/config/tiddlyflex/story-river/tiddler/margin-bottom\\\" value={{{ [\u003CensembleTiddler>get[tiddler-margin-bottom]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/config/tiddlyflex/story-river/follow-current-column\\\" value={{{ [\u003CensembleTiddler>get[follow-current-column]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/palette\\\" value={{{ [\u003CensembleTiddler>get[palette]] }}}/>\\n\\t\u003C$list filter=\\\"[all[tiddlers+shadows]prefix[$:/Ensemble/]!match\u003CensembleTiddler>]\\\" variable=\\\"ensembleTiddler\\\">\\n\\t\\t\u003C%if [\u003CensembleTiddler>has[stylesheets]] %>\\n\\t\\t\\t\u003C$set name=\\\"stylesheetsList\\\" value={{{ [\u003CensembleTiddler>get[stylesheets]] }}}>\\n\\t\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CstylesheetsList>]\\\" variable=\\\"stylesheetTiddler\\\">\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CstylesheetTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\\\"$:/tags/Stylesheet\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C%if [\u003CensembleTiddler>has[top-toolbar-tiddler]]\\\" %>\\n\\t\\t\\t\u003C$set name=\\\"topbarsList\\\" value={{{ [\u003CensembleTiddler>get[top-toolbar-tiddler]] }}}>\\n\\t\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CtopbarsList>]\\\" variable=\\\"topbarTiddler\\\">\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CtopbarTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\\\"$:/tags/TopToolbar\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C%if [\u003CensembleTiddler>has[bottom-toolbar-tiddler]]\\\" %>\\n\\t\\t\\t\u003C$set name=\\\"bottombarsList\\\" value={{{ [\u003CensembleTiddler>get[bottom-toolbar-tiddler]] }}}>\\n\\t\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CbottombarsList>]\\\" variable=\\\"bottombarTiddler\\\">\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CbottombarTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\\\"$:/tags/BottomToolbar\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C$list filter=\\\"[\u003CensembleTiddler>fields[]prefix[above-story-header-tiddler-]]\\\" variable=\\\"aboveStoryHeaderField\\\">\\n\\t\\t\\t\u003C$vars aboveStoryHeaderList={{{ [\u003CensembleTiddler>get\u003CaboveStoryHeaderField>] }}} index={{{ [\u003CaboveStoryHeaderField>removeprefix[above-story-header-tiddler-]] }}}>\\n\\t\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CaboveStoryHeaderList>]\\\" variable=\\\"aboveStoryHeaderTiddler\\\">\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CaboveStoryHeaderTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param={{{ [[$:/tags/AboveStoryHeader-]addsuffix\u003Cindex>] }}}/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C/$vars>\\n\\t\\t\u003C/$list>\\n\\t\\t\u003C$list filter=\\\"[\u003CensembleTiddler>fields[]prefix[below-story-footer-tiddler-]]\\\" variable=\\\"belowStoryFooterField\\\">\\n\\t\\t\\t\u003C$vars belowStoryFooterList={{{ [\u003CensembleTiddler>get\u003CbelowStoryFooterField>] }}} index={{{ [\u003CbelowStoryFooterField>removeprefix[below-story-footer-tiddler-]] }}}>\\n\\t\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CbelowStoryFooterList>]\\\" variable=\\\"belowStoryFooterTiddler\\\">\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CbelowStoryFooterTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param={{{ [[$:/tags/BelowStoryFooter-]addsuffix\u003Cindex>] }}}/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C/$vars>\\n\\t\\t\u003C/$list>\\n\\t\u003C/$list>\\n\\t\u003C%if [\u003CensembleTiddler>has[stylesheets]] %>\\n\\t\\t\u003C$set name=\\\"stylesheetsList\\\" value={{{ [\u003CensembleTiddler>get[stylesheets]] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CstylesheetsList>]\\\" variable=\\\"stylesheetTiddler\\\">\\n\\t\\t\\t\\t\u003C%if [\u003CstylesheetTiddler>!tag[$:/tags/Stylesheet]] %>\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CstylesheetTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\\\"$:/tags/Stylesheet\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C% endif %>\\n\\t\u003C%if [\u003CensembleTiddler>has[top-toolbar-tiddler]]\\\" %>\\n\\t\\t\u003C$set name=\\\"topbarsList\\\" value={{{ [\u003CensembleTiddler>get[top-toolbar-tiddler]] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CtopbarsList>]\\\" variable=\\\"topbarTiddler\\\">\\n\\t\\t\\t\\t\u003C%if [\u003CtopbarTiddler>!tag[$:/tags/TopToolbar]] %>\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CtopbarTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\\\"$:/tags/TopToolbar\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C% endif %>\\n\\t\u003C%if [\u003CensembleTiddler>has[bottom-toolbar-tiddler]]\\\" %>\\n\\t\\t\u003C$set name=\\\"bottombarsList\\\" value={{{ [\u003CensembleTiddler>get[bottom-toolbar-tiddler]] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CbottombarsList>]\\\" variable=\\\"bottombarTiddler\\\">\\n\\t\\t\\t\\t\u003C%if [\u003CbottombarTiddler>!tag[$:/tags/BottomToolbar]] %>\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CbottombarTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\\\"$:/tags/BottomToolbar\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C% endif %>\\n\\t\u003C$list filter=\\\"[\u003CensembleTiddler>fields[]prefix[above-story-header-tiddler-]]\\\" variable=\\\"aboveStoryHeaderField\\\">\\n\\t\\t\u003C$let aboveStoryHeaderList={{{ [\u003CensembleTiddler>get\u003CaboveStoryHeaderField>] }}} index={{{ [\u003CaboveStoryHeaderField>removeprefix[above-story-header-tiddler-]] }}} aboveStoryHeaderTag={{{ [[$:/tags/AboveStoryHeader-]addsuffix\u003Cindex>] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CaboveStoryHeaderList>]\\\" variable=\\\"aboveStoryHeaderTiddler\\\">\\n\\t\\t\\t\\t\u003C%if [\u003CaboveStoryHeaderTiddler>!tag\u003CaboveStoryHeaderTag>] %>\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CaboveStoryHeaderTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003CaboveStoryHeaderTag>>/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$let>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[\u003CensembleTiddler>fields[]prefix[below-story-footer-tiddler-]]\\\" variable=\\\"belowStoryFooterField\\\">\\n\\t\\t\u003C$let belowStoryFooterList={{{ [\u003CensembleTiddler>get\u003CbelowStoryFooterField>] }}} index={{{ [\u003CbelowStoryFooterField>removeprefix[below-story-footer-tiddler-]] }}} belowStoryFooterTag={{{ [[$:/tags/BelowStoryFooter-]addsuffix\u003Cindex>] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CbelowStoryFooterList>]\\\" variable=\\\"belowStoryFooterTiddler\\\">\\n\\t\\t\\t\\t\u003C%if [\u003CbelowStoryFooterTiddler>!tag\u003CbelowStoryFooterTag>] %>\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CbelowStoryFooterTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003CbelowStoryFooterTag>>/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$let>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[\u003CensembleTiddler>fields[]prefix[story-list-]]\\\" variable=\\\"storyField\\\">\\n\\t\\t\u003C$let storyNumber={{{ [\u003CstoryField>removeprefix[story-list-]] }}} storyTitle={{{ [[$:/StoryList-]addsuffix\u003CstoryNumber>] }}}>\\n\\t\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CstoryTitle>> field=\\\"list\\\" value={{{ [\u003CensembleTiddler>get\u003CstoryField>] }}}/>\\n\\t\\t\u003C/$let>\\n\\t\u003C/$list>\\n\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\u003C% endif %>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-ensemble(title)\\n\u003C$set name=\\\"ensembleTiddler\\\" value={{{ [[$:/Ensemble/]addsuffix\u003Ctitle>] }}}>\\n\u003C$button class=\\\"tc-btn-invisible\\\" actions=\u003C\u003Ctiddlyflex-load-ensemble-actions>>>\u003C$text text=\u003C\u003Ctitle>>/>\u003C/$button>\\n\u003C/$set>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/globals/layout/functions\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/layout/functions\",\"list-before\":\"\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\procedure tiddlyFlexPrefix() [\\n\\\\procedure tiddlyFlexSuffix() ]\\n\\n\\\\function tiddlyflex-layout() [{$:/layout}match[$:/plugins/BTC/TiddlyFlex/ui/Layout]]\\n\\n\\\\function tiddlyflex-fullscreen() [all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]limit[1]] ~[[]]\\n\\n\\\\function tdff.tiddlyflex-current-column-filtered() [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] +[count[]!match[1]] :then[subfilter\u003Ctdff.tiddlyflex-current-column-filtered-before>] ~[subfilter\u003Ctdff.tiddlyflex-enlist-columns>] ~1\\n\\n\\\\function tdff.tiddlyflex-current-column-filtered-before() [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] [{$:/columns!!current-column}] +[unique[]] +[nsort[]] +[before{$:/columns!!current-column}]\\n\\n\\\\function tdff.tiddlyflex-exclude-columns() [[list]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/columns]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ :map:flat]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[addprefix]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/StoryList-]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ :map:flat]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[get]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[list]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[enlist-input]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[search:]] ${$(tiddlyflex-story-filter-fields)$}$ +[substitute[]] +[join[]] +[addsuffix[:]] ${$(tiddlyflex-story-filter-flags)$}$ +[substitute[]] +[join[]] +[addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[{$:/temp/search/input}]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[limit]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[1]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[else\u003CcurrentTiddler>removeprefix]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/StoryList-]addsuffix[$(tiddlyFlexSuffix)$]substitute[]] +[addprefix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ +]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[join]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[ ]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]]\\n\\n\\\\function tdff.tiddlyflex-enlist-columns() [[list]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/columns]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ :map]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[{$:/state/tiddlyflex/story-river/filter}match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>addprefix]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/StoryList-]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[get]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[list]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[enlist-input]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[search:]] ${$(tiddlyflex-story-filter-fields)$}$ +[substitute[]] +[join[]] +[addsuffix[:]] ${$(tiddlyflex-story-filter-flags)$}$ +[substitute[]] +[join[]] +[addsuffix[{$:/temp/search/input}]addsuffix[limit]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[1]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>else{$:/state/tiddlyflex/story-river/filter}!match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ +]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[!match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]] +[addprefix[$(tiddlyFlexPrefix)$]substitute[]] +[addsuffix[ ~1]]\\n\\n\\\\function tdff.tiddlyflex-enlist-columns-first() [[list]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/columns]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ :map]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[{$:/state/tiddlyflex/story-river/filter}match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>addprefix]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/StoryList-]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[get]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[list]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[enlist-input]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[search:]] ${$(tiddlyflex-story-filter-fields)$}$ +[substitute[]] +[join[]] +[addsuffix[:]] ${$(tiddlyflex-story-filter-flags)$}$ +[substitute[]] +[join[]] +[addsuffix[{$:/temp/search/input}]addsuffix[limit]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[1]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>else{$:/state/tiddlyflex/story-river/filter}!match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ +]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[!match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ +]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[first]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]] +[addprefix[$(tiddlyFlexPrefix)$]substitute[]]\\n\\n\\\\function tiddlyflex-story-filter-fields() [fields[]] :intersection[[$:/config/tiddlyflex/story-river/filter/fields]get[text]!is[blank]!match[]split[,]] +[join[,]] ~[[*]]\\n\\n\\\\function tiddlyflex-story-filter-flags() [[$:/config/tiddlyflex/story-river/filter/flags]get[text]!is[blank]!match[]] ~[[words]]\\n\\n\\\\function tdff.tiddlyflex-story-river-filter-no-draft() [[list]addsuffix[\u003Ctv-story-list>]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ ]addsuffix[:filter]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[{$:/state/tiddlyflex/story-river/filter}match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>!is]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[draft]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[search:]] ${$(tiddlyflex-story-filter-fields)$}$ +[substitute[]] +[join[]] +[addsuffix[:]] ${$(tiddlyflex-story-filter-flags)$}$ +[substitute[]] +[join[]] +[addsuffix[{$:/temp/search/input}]] +[addsuffix[else{$:/state/tiddlyflex/story-river/filter}!match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>]] +[addprefix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]]\\n\\n\\\\function tdff.tiddlyflex-story-river-filter() [[list]addsuffix[\u003Ctv-story-list>]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ ]addsuffix[:filter]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[{$:/state/tiddlyflex/story-river/filter}match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>]addsuffix[search:]] ${$(tiddlyflex-story-filter-fields)$}$ +[substitute[]] +[join[]] +[addsuffix[:]] ${$(tiddlyflex-story-filter-flags)$}$ +[substitute[]] +[join[]] +[addsuffix[{$:/temp/search/input}]] +[addsuffix[else{$:/state/tiddlyflex/story-river/filter}!match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>]] +[addprefix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]]\"},\"$:/plugins/BTC/TiddlyFlex/globals/layout/procedures\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/layout/procedures\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\procedure tiddlyflex-message-catcher(tiddlyflex-layout-inner)\\n\\\\function tiddlyflex-current-column() [\u003CtiddlyFlexColumn>]\\n\u003C$messagecatcher\\n\\t$tm-cancel-tiddler=\u003C\u003Ctiddlyflex-tm-cancel-tiddler-actions>>\\n\\t$tm-close-all-tiddlers=\u003C\u003Ctiddlyflex-tm-close-all-tiddlers-actions>>\\n\\t$tm-close-other-tiddlers=\u003C\u003Ctiddlyflex-tm-close-other-tiddlers-actions>>\\n\\t$tm-close-tiddler=\u003C\u003Ctiddlyflex-tm-close-tiddler-actions>>\\n\\t$tm-delete-tiddler=\u003C\u003Ctiddlyflex-tm-delete-tiddler-actions>>\\n\\t$tm-edit-tiddler=\u003C\u003Ctiddlyflex-tm-edit-tiddler-actions>>\\n\\t$tm-fold-all-tiddlers=\u003C\u003Ctiddlyflex-tm-fold-all-tiddlers-actions>>\\n\\t$tm-fold-other-tiddlers=\u003C\u003Ctiddlyflex-tm-fold-other-tiddlers-actions>>\\n\\t$tm-fold-tiddler=\u003C\u003Ctiddlyflex-tm-fold-tiddler-actions>>\\n\\t$tm-home=\u003C\u003Ctiddlyflex-tm-home-actions>>\\n\\t$tm-import-tiddlers=\u003C\u003Ctiddlyflex-tm-import-tiddlers-actions>>\\n\\t$tm-navigate=\u003C\u003Ctiddlyflex-tm-navigate-actions>>\\n\\t$tm-new-tiddler=\u003C\u003Ctiddlyflex-tm-new-tiddler-actions>>\\n\\t$tm-perform-import=\u003C\u003Ctiddlyflex-tm-perform-import-actions>>\\n\\t$tm-save-tiddler=\u003C\u003Ctiddlyflex-tm-save-tiddler-actions>>\\n\\t$tm-unfold-all-tiddlers=\u003C\u003Ctiddlyflex-tm-unfold-all-tiddlers-actions>>>\\n\\t\u003C\u003Ctiddlyflex-layout-inner>>\\n\u003C/$messagecatcher>\\n\\\\end\\n\\\\procedure tiddlyflex-message-catcher-outside(tiddlyflex-layout-inner)\\n\\\\function tiddlyflex-current-column() [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>]\\n\u003C$messagecatcher\\n\\t$tm-cancel-tiddler=\u003C\u003Ctiddlyflex-tm-cancel-tiddler-actions-outside>>\\n\\t$tm-close-all-tiddlers=\u003C\u003Ctiddlyflex-tm-close-all-tiddlers-actions-outside>>\\n\\t$tm-close-other-tiddlers=\u003C\u003Ctiddlyflex-tm-close-other-tiddlers-actions-outside>>\\n\\t$tm-close-tiddler=\u003C\u003Ctiddlyflex-tm-close-tiddler-actions-outside>>\\n\\t$tm-delete-tiddler=\u003C\u003Ctiddlyflex-tm-delete-tiddler-actions-outside>>\\n\\t$tm-edit-tiddler=\u003C\u003Ctiddlyflex-tm-edit-tiddler-actions-outside>>\\n\\t$tm-fold-all-tiddlers=\u003C\u003Ctiddlyflex-tm-fold-all-tiddlers-actions-outside>>\\n\\t$tm-fold-other-tiddlers=\u003C\u003Ctiddlyflex-tm-fold-other-tiddlers-actions-outside>>\\n\\t$tm-fold-tiddler=\u003C\u003Ctiddlyflex-tm-fold-tiddler-actions-outside>>\\n\\t$tm-home=\u003C\u003Ctiddlyflex-tm-home-actions-outside>>\\n\\t$tm-import-tiddlers=\u003C\u003Ctiddlyflex-tm-import-tiddlers-actions-outside>>\\n\\t$tm-navigate=\u003C\u003Ctiddlyflex-tm-navigate-actions-outside>>\\n\\t$tm-new-tiddler=\u003C\u003Ctiddlyflex-tm-new-tiddler-actions-outside>>\\n\\t$tm-perform-import=\u003C\u003Ctiddlyflex-tm-perform-import-actions-outside>>\\n\\t$tm-save-tiddler=\u003C\u003Ctiddlyflex-tm-save-tiddler-actions-outside>>\\n\\t$tm-unfold-all-tiddlers=\u003C\u003Ctiddlyflex-tm-unfold-all-tiddlers-actions-outside>>>\\n\\t\u003C\u003Ctiddlyflex-layout-inner>>\\n\u003C/$messagecatcher>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/globals/layout/sidebar-resizer\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/layout/sidebar-resizer\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\procedure tiddlyflex-sidebar-resizer-pointerdown-actions()\\n\u003C%if [[$:/state/sidebar/resizing]is[missing]then\u003Cevent-mousebutton>match[left]] %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/sidebar/resizing\\\" text=\\\"yes\\\"/>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/sidebar/posx\\\" drag-diff=\u003C\u003Cevent-fromselected-posx>> selectednode-width=\u003C\u003Ctv-selectednode-width>> widgetnode-width=\u003C\u003Ctv-widgetnode-width>> text=\u003C\u003Cevent-fromcatcher-posx>> column-count={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]] }}} leftbar-width={{{ [\u003Cevent-fromviewport-posx>subtract\u003Cevent-fromcatcher-posx>] }}}/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-sidebar-resizer-pointerup-actions()\\n\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/sidebar/resizing\\\"/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-sidebar-resizer-pointermove-actions()\\n\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/sidebar/posx\\\" text=\u003C\u003Cevent-fromcatcher-posx>>/>\\n\u003C% endif %>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/globals/navigation\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/navigation\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\define tiddlyflex-navigate-story-river-actions-selector()\\n.tc-tiddlyflex-story-river-$(tiddlyFlexColumn)$ [data-tiddler-title=\\\"$(navigateToCSSEscaped)$\\\"]\\n\\\\end\\n\\\\function tiddlyflex-suppress-navigation() [\u003Cmodifier>match[ctrl]then[true]] [\u003Cmodifier>match[meta]then[true]] +[match[true]] ~false +[limit[1]]\\n\\\\function edit-missing-tiddler() [{$:/config/tiddlyflex/navigation/edit-missing-tiddlers}match[yes]then\u003Cevent-navigateTo>!is[shadow]is[missing]]\\n\\\\procedure tiddlyflex-navigate-story-river-actions-navigate()\\n\u003C$set name=\\\"storyTiddler\\\" value={{{ [subfilter\u003Ctiddlyflex-current-column>addprefix[$:/HistoryList-]get[current-tiddler]] :intersection[list\u003Ctv-story-list>] }}}>\\n\\t\u003C$action-sendmessage\\n\\t\\t$message=\\\"tm-navigate\\\"\\n\\t\\t$navigateTo=\u003C\u003Cevent-navigateTo>>\\n\\t\\t$navigateFromTitle=\u003C\u003CstoryTiddler>>\\n\\t\\t$navigateFromClientRect=\u003C\u003Cevent-navigateFromClientRect>>\\n\\t\\t$navigateFromClientTop=\u003C\u003Cevent-navigateFromClientTop>>\\n\\t\\t$navigateFromClientLeft=\u003C\u003Cevent-navigateFromClientLeft>>\\n\\t\\t$navigateFromClientWidth=\u003C\u003Cevent-navigateFromClientWidth>>\\n\\t\\t$navigateFromClientRight=\u003C\u003Cevent-navigateFromClientRight>>\\n\\t\\t$navigateFromClientBottom=\u003C\u003Cevent-navigateFromClientBottom>>\\n\\t\\t$navigateFromClientHeight=\u003C\u003Cevent-navigateFromClientHeight>>\\n\\t\\t$navigateSuppressNavigation={{{ [function[tiddlyflex-supress-navigation]] }}}\\n\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\u003C/$set>\\n\\\\end\\n\\\\procedure tiddlyflex-navigate-story-river-actions-inner-inner()\\n\u003C$let tv-story-list={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>] }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\t\u003C%if [[$:/columns]!contains\u003CtiddlyFlexColumn>] %>\\n\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"[\u003CtiddlyFlexColumn>]\\\"/>\\n\\t\u003C% endif %>\\n\\t\u003C$navigator story=\u003C\u003Ctv-story-list>> history=\u003C\u003Ctv-history-list>> openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-navigate>>\\n\\t\\t\u003C%if [function[edit-missing-tiddler]] %>\\n\\t\\t\\t\u003C$action-sendmessage\\n\\t\\t\\t\\t$message=\\\"tm-edit-tiddler\\\"\\n\\t\\t\\t\\t$param=\u003C\u003Cevent-navigateTo>>\\n\\t\\t\\t\\t$tiddlerTitle=\u003C\u003Cevent-tiddlerTitle>>\\n\\t\\t\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$navigator>\\n\u003C/$let>\\n\\\\end\\n\\\\procedure tiddlyflex-navigate-story-river-actions-inner()\\n\u003C%if [\u003Cmodifier>match[shift]] %>\\n\\t\u003C$let currentColumn=\u003C\u003CtiddlyFlexColumn>> tiddlyFlexColumn={{{ [\u003CcurrentColumn>add[1]] }}}>\\n\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-inner-inner>>\\n\\t\u003C/$let>\\n\u003C% elseif [\u003Cmodifier>match[alt]] %>\\n\\t\u003C$let currentColumn=\u003C\u003CtiddlyFlexColumn>> tiddlyFlexColumn={{{ [\u003CtiddlyFlexColumn>!match[1]subtract[1]] ~1 }}}>\\n\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-inner-inner>>\\n\\t\u003C/$let>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-navigate-story-river-actions()\\n\\\\function tiddlyflex-no-shift-alt() [\u003Cmodifier>!match[shift]then\u003Cmodifier>!match[alt]]\\n\u003C%if [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] +[addprefix[$:/StoryList-]] +[enlist-input[]] +[contains\u003Cevent-navigateTo>] %>\\n\\t\u003C%if [function[tiddlyflex-no-shift-alt]] %>\\n\\t\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\t\\t\\t\u003C$let tv-story-list={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>] }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CtiddlyFlexColumn>] }}} navigateToCSSEscaped={{{ [\u003Cevent-navigateTo>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C%if [\u003Ctv-story-list>contains\u003Cevent-navigateTo>] %>\\n\\t\\t\\t\\t\\t\u003C%if [\u003Cmodifier>!match[ctrl]then\u003Cmodifier>!match[meta]] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-scroll\\\" selector=\u003C\u003Ctiddlyflex-navigate-story-river-actions-selector>>/>\\n\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\\t\u003C%if [function[edit-missing-tiddler]] %>\\n\\t\\t\\t\\t\\t\\t\u003C$navigator story={{{ [\u003CtiddlyFlexColumn>addprefix[$:/StoryList-]] }}} history={{{ [\u003CtiddlyFlexColumn>addprefix[$:/HistoryList-]] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\\t\\t\\t\\t\\t\u003C$set name=\\\"currentColumn\\\" value=\u003C\u003CtiddlyFlexColumn>>>\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-navigate>>\\n\\t\\t\\t\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage\\n\\t\\t\\t\\t\\t\\t\\t\\t$message=\\\"tm-edit-tiddler\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t$param=\u003C\u003Cevent-navigateTo>> \\n\\t\\t\\t\\t\\t\\t\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\\t\\t\\t\\t\\t\\t\u003C/$navigator>\\n\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C/$list>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-inner>>\\n\\t\u003C% endif %>\\n\u003C% else %>\\n\\t\u003C%if [function[tiddlyflex-no-shift-alt]] %>\\n\\t\\t\u003C%if [function[edit-missing-tiddler]] %>\\n\\t\\t\\t\u003C$navigator story={{{ [\u003CtiddlyFlexColumn>addprefix[$:/StoryList-]] }}} history={{{ [\u003CtiddlyFlexColumn>addprefix[$:/HistoryList-]] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\\t\\t\u003C$set name=\\\"currentColumn\\\" value=\u003C\u003CtiddlyFlexColumn>>>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-navigate>>\\n\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\\t\u003C$action-sendmessage\\n\\t\\t\\t\\t\\t$message=\\\"tm-edit-tiddler\\\"\\n\\t\\t\\t\\t\\t$param=\u003C\u003Cevent-navigateTo>>\\n\\t\\t\\t\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t\\t\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\\t\\t\\t\u003C/$navigator>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$navigator story={{{ [\u003CtiddlyFlexColumn>addprefix[$:/StoryList-]] }}} history={{{ [\u003CtiddlyFlexColumn>addprefix[$:/HistoryList-]] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\\t\\t\u003C$set name=\\\"currentColumn\\\" value=\u003C\u003CtiddlyFlexColumn>>>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-navigate>>\\n\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\u003C/$navigator>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-inner>>\\n\\t\u003C% endif %>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-cancel-draft-tiddler-actions-draft-of-not-is-missing()\\n\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>!match\u003CtiddlyFlexColumn>]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>!match[$:/StoryList-]] ~$:/StoryList-1 }}}>\\n\\t\\t\u003C%if [\u003Ctv-story-list>contains\u003CcurrentTiddler>] %>\\n\\t\\t\\t\u003C$set name=\\\"index\\\" value={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[allbefore\u003CcurrentTiddler>add[1]] }}}>\\n\\t\\t\\t\\t\u003C$let nextTiddler={{{ [\u003Ctdff.tiddlyflex-story-river-filter>] +[zth\u003Cindex>] }}} viewTiddler={{{ [\u003CcurrentTiddler>get[draft.of]] }}}>\\n\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CviewTiddler>,\u003CnextTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CcurrentTiddler>]\\\"/>\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$set>\\n\u003C/$list>\\n\u003C\u003Cdelete-edittemplate-state-tiddlers>>\\n\u003C%if [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>!is[missing]] %>\\n\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}} to={{{ [\u003CcurrentTiddler>get[draft.of]addprefix[$:/state/tiddlyflex/story-river/fullscreen/]] }}}/>\\n\u003C% endif %>\\n\u003C$navigator story={{{ [\u003CtiddlyFlexColumn>addprefix[$:/StoryList-]] }}} history={{{ [\u003CtiddlyFlexColumn>addprefix[$:/HistoryList-]] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\u003C$action-sendmessage\\n\\t\\t$message=\\\"tm-cancel-tiddler\\\"\\n\\t\\t$param={{{ [\u003Cevent-param>!is[blank]!match[]] ~[\u003Cevent-tiddlerTitle>] }}}\\n\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\u003C/$navigator>\\n\\\\end\\n\\\\procedure tiddlyflex-cancel-draft-tiddler-actions()\\n\u003C%if [\u003CcurrentTiddler>get[draft.of]!is[shadow]is[missing]] %>\\n\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>!match\u003CtiddlyFlexColumn>]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\t\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>!match[$:/StoryList-]] ~$:/StoryList-1 }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[\u003Ctv-story-list>contains\u003CcurrentTiddler>]\\\" variable=\\\"ignore\\\">\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CcurrentTiddler>]\\\"/>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C/$list>\\n\\t\u003C\u003Cdelete-edittemplate-state-tiddlers>>\\n\\t\u003C$action-deletetiddler $tiddler={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}}/>\\n\\t\u003C$let scrollTiddler={{{ [\u003Ctdff.tiddlyflex-story-river-filter>] +[after\u003CcurrentTiddler>] ~[\u003Ctdff.tiddlyflex-story-river-filter>before\u003CcurrentTiddler>] }}}>\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CscrollTiddler>>/>\\n\\t\\t\u003C$action-sendmessage\\n\\t\\t\\t$message=\\\"tm-cancel-tiddler\\\"\\n\\t\\t\\t$param={{{ [\u003Cevent-param>!is[blank]!match[]] ~[\u003Cevent-tiddlerTitle>] }}}\\n\\t\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\\t\u003C/$let>\\n\u003C% else %>\\n\\t\u003C\u003Ctiddlyflex-cancel-draft-tiddler-actions-draft-of-not-is-missing>>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-delete-draft-tiddler-actions()\\n\u003C$let deleteTiddlerViewMode={{{ [\u003CcurrentTiddler>get[draft.of]] }}} deleteTiddlerEditMode=\u003C\u003CcurrentTiddler>>>\\n\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>!match\u003CtiddlyFlexColumn>]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\t\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>!match[$:/StoryList-1]] ~[[$:/StoryList]] }}}>\\n\\t\\t\\t\u003C%if [\u003Ctv-story-list>contains\u003CdeleteTiddlerViewMode>] %>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CdeleteTiddlerViewMode>]\\\"/>\\n\\t\\t\\t\u003C% elseif [\u003Ctv-story-list>contains\u003CdeleteTiddlerEditMode>] %>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CdeleteTiddlerEditMode>]\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$set>\\n\\t\u003C/$list>\\n\u003C/$let>\\n\u003C\u003Cdelete-edittemplate-state-tiddlers>>\\n\u003C$action-deletetiddler $tiddler={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}}/>\\n\u003C$let scrollTiddler={{{ [\u003Ctdff.tiddlyflex-story-river-filter>] +[after\u003CcurrentTiddler>] ~[\u003Ctdff.tiddlyflex-story-river-filter>before\u003CcurrentTiddler>] }}}>\\n\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CscrollTiddler>>/>\\n\\t\u003C$action-sendmessage\\n\\t\\t$message=\\\"tm-delete-tiddler\\\"\\n\\t\\t$param={{{ [\u003Cevent-param>!is[blank]!match[]] ~[\u003Cevent-tiddlerTitle>] }}}\\n\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\u003C/$let>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/icons/drag-grip\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/icons/drag-grip\",\"text\":\"\u003Csvg width=\\\"1rem\\\" height=\\\"1rem\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" class=\\\"lucide lucide-grip\\\">\u003Ccircle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"19\\\" cy=\\\"5\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"5\\\" cy=\\\"5\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"19\\\" cy=\\\"12\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"5\\\" cy=\\\"12\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"12\\\" cy=\\\"19\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"19\\\" cy=\\\"19\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"5\\\" cy=\\\"19\\\" r=\\\"1\\\"/>\u003C/svg>\"},\"$:/plugins/BTC/TiddlyFlex/icons/filter\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/icons/filter\",\"text\":\"\u003Csvg width=\\\"1rem\\\" height=\\\"1rem\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" class=\\\"lucide lucide-filter\\\">\u003Cpolygon points=\\\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\\\"/>\u003C/svg>\"},\"$:/plugins/BTC/TiddlyFlex/icons/layout\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/icons/layout\",\"text\":\"\u003Csvg width=\\\"1rem\\\" height=\\\"1rem\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" class=\\\"lucide lucide-layout-dashboard\\\">\u003Crect width=\\\"7\\\" height=\\\"9\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"1\\\"/>\u003Crect width=\\\"7\\\" height=\\\"5\\\" x=\\\"14\\\" y=\\\"3\\\" rx=\\\"1\\\"/>\u003Crect width=\\\"7\\\" height=\\\"9\\\" x=\\\"14\\\" y=\\\"12\\\" rx=\\\"1\\\"/>\u003Crect width=\\\"7\\\" height=\\\"5\\\" x=\\\"3\\\" y=\\\"16\\\" rx=\\\"1\\\"/>\u003C/svg>\"},\"$:/plugins/BTC/TiddlyFlex/license\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/license\",\"text\":\"!!! This plugin is distributed under MIT License\\n\\n```\\n\\nMIT License\\n\\nCopyright (c) 2024 Simon Huber\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\\n```\\n\\n!!! Lucide icons are distributed under ISC License\\n\\n```\\nISC License\\n\\nCopyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022.\\n\\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\\n\\n```\"},\"$:/plugins/BTC/TiddlyFlex/privates/navigation\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/privates/navigation\",\"text\":\"\\\\procedure tiddlyflex-focus-flexcontainer() \u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\\\".tc-tiddlyflex-container\\\" preventScroll=\\\"true\\\"/>\\n\\\\procedure tiddlyflex-keyboard-navigator(actions)\\n\u003C$let currentColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] }}} tv-story-list={{{ [function[tiddlyflex-fullscreen]!is[blank]] :then[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]get[column]addprefix[$:/StoryList-]] ~[[$:/StoryList-]addsuffix\u003CcurrentColumn>!match[$:/StoryList-]] ~[[$:/StoryList-1]] }}} tv-history-list={{{ [function[tiddlyflex-fullscreen]!is[blank]] :then[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]get[column]addprefix[$:/HistoryList-]] ~[[$:/HistoryList-]addsuffix\u003CcurrentColumn>!match[$:/HistoryList-]] ~[[$:/HistoryList-1]] }}} currentTiddler={{{ [all[tiddlers]removeprefix[$:/state/tiddlyflex/story-river/fullscreen/]limit[1]] ~[\u003Ctv-history-list>get[current-tiddler]] }}}>\\n\\t\u003C$navigator story=\u003C\u003Ctv-story-list>> history=\u003C\u003Ctv-history-list>> openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\u003C\u003Cactions>>\\n\\t\u003C/$navigator>\\n\u003C/$let>\\n\\\\end\\n\\\\procedure tiddlyflex-simple-keyboard-navigator()\\n\u003C$navigator story={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] :map[addprefix[$:/StoryList-]] }}} history={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-enlist-columns>first[]] :map[addprefix[$:/HistoryList-]] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\u003C\u003Cactions>>\\n\u003C/$navigator>\\n\\\\end\\n\\\\procedure tiddlyflex-cycle-columns-navigator-inner()\\n\u003C%if [\u003CnextTiddler>is[draft]] %>\\n\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\u003C% else %>\\n\\t\u003C\u003Ctiddlyflex-focus-flexcontainer>>\\n\u003C% endif %>\\n\u003C$navigator story=\u003C\u003Ctv-story-list>> history=\u003C\u003Ctv-history-list>> openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\u003C$action-navigate $to=\u003C\u003CnextTiddler>>/>\\n\u003C/$navigator>\\n\\\\end\\n\\\\define tiddlyflex-cycle-columns-navigator()\\n\u003C$action-setfield $tiddler=\\\"$:/columns\\\" current-column=\u003C\u003CnextColumn>>/>\\n\u003C$set name=\\\"currentHistoryListTiddler\\\" value={{{ [\u003Ctv-history-list>get[current-tiddler]] }}}>\\n\\t\u003C%if [\u003Ctv-story-list>contains\u003CcurrentHistoryListTiddler>] %>\\n\\t\\t\u003C%if [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[match\u003CcurrentHistoryListTiddler>] %>\\n\\t\\t\\t\u003C$let currentColumn=\u003C\u003CnextColumn>> nextTiddler=\u003C\u003CcurrentHistoryListTiddler>> cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-cycle-columns-navigator-inner>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$let currentColumn=\u003C\u003CnextColumn>> nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[nth[1]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-cycle-columns-navigator-inner>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% elseif [\u003Ctv-story-list>!contains\u003CcurrentHistoryListTiddler>] %>\\n\\t\\t\u003C$let currentColumn=\u003C\u003CnextColumn>> nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[nth[1]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-cycle-columns-navigator-inner>>\\n\\t\\t\u003C/$let>\\n\\t\u003C% endif %>\\n\u003C/$set>\\n\\\\end\\n\\\\procedure tiddlyflex-multi-column-keyboard-navigator()\\n\u003C$let\\n\\tcurrentColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] }}}\\n\\tlastColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>last[]] }}}\\n\\ttv-story-list={{{ [[$:/StoryList-]addsuffix\u003CcurrentColumn>!match[$:/StoryList-]] ~$:/StoryList-1 }}}\\n\\ttv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CcurrentColumn>!match[$:/HistoryList-]] ~$:/HistoryList-1 }}}\\n\\tfocusedTiddler={{{ [\u003Ctv-history-list>get[current-tiddler]] }}}\\n\\tnextStoryCounter={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>after\u003CcurrentColumn>] }}}\\n\\tnextStoryList={{{ [\u003Ctv-story-list>removesuffix\u003CcurrentColumn>addsuffix\u003CnextStoryCounter>] }}}\\n\\tnextHistoryList={{{ [\u003Ctv-history-list>removesuffix\u003CcurrentColumn>addsuffix\u003CnextStoryCounter>] }}}\\n\\tfirstNextStoryTiddler={{{ [list\u003CnextStoryList>first[]] }}}\\n\\tpreviousStoryCounter={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>before\u003CcurrentColumn>] }}}\\n\\tpreviousStoryList={{{ [\u003Ctv-story-list>removesuffix\u003CcurrentColumn>addsuffix\u003CpreviousStoryCounter>] }}}\\n\\tpreviousHistoryList={{{ [\u003Ctv-history-list>removesuffix\u003CcurrentColumn>addsuffix\u003CpreviousStoryCounter>] }}}\\n\\tfirstPreviousStoryTiddler={{{ [list\u003CpreviousStoryList>first[]] }}}\\n>\\n\\t\u003C\u003Cactions>>\\n\u003C/$let>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/privates/selectors\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/privates/selectors\",\"text\":\"\\\\define tiddlyflex-tiddler-scroll-selector()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n.tc-tiddlyflex-story-river-\u003C\u003CcurrentColumn>> .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"]\\n\\\\end\\n\\\\define tiddlyflex-draft-focus-selector()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n.tc-tiddlyflex-story-river-\u003C\u003CcurrentColumn>> .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] input.tc-titlebar.tc-edit-texteditor\\n\\\\end\\n\\\\procedure tiddlyflex-focus-draft-tiddler()\\n\u003C$wikify name=\\\"focusSelector\\\" text=\u003C\u003Ctiddlyflex-draft-focus-selector>>>\\n\\t\u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\u003C\u003CfocusSelector>> preventScroll=\\\"true\\\"/>\\n\u003C/$wikify>\\n\\\\end\\n\\\\procedure tiddlyflex-scroll-to-tiddler()\\n\u003C$wikify name=\\\"scrollSelector\\\" text=\u003C\u003Ctiddlyflex-tiddler-scroll-selector>>>\\n\\t\u003C$action-sendmessage $message=\\\"tm-scroll\\\" selector=\u003C\u003CscrollSelector>>/>\\n\u003C/$wikify>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/readme\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/readme\",\"text\":\"!!! ~TiddlyFlex\\n\\nThis ''plugin'' provides an alternative [ext[Flexbox|https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox]] Layout for ~TiddlyWiki5\"},\"$:/core/ui/Buttons/control-panel\":{\"title\":\"$:/core/ui/Buttons/control-panel\",\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}\",\"description\":\"{{$:/language/Buttons/ControlPanel/Hint}}\",\"text\":\"\\\\whitespace trim\\n\\\\define control-panel-button(class)\\n\\\\whitespace trim\\n\u003C$button to=\\\"$:/ControlPanel\\\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\\\"\\\"\\\"$(tv-config-toolbar-class)$ $class$\\\"\\\"\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/options-button}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/ControlPanel/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] +[addprefix[$:/StoryList-]] +[enlist-input[]] +[contains[$:/ControlPanel]] %>\\n\\t\\t\u003C\u003Ccontrol-panel-button \\\"tc-selected\\\">>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ccontrol-panel-button>>\\n\\t\u003C% endif %>\\n\u003C% else %>\\n\\t\u003C%if [\u003Ctv-story-list>contains[$:/ControlPanel]] %>\\n\\t\\t\u003C\u003Ccontrol-panel-button \\\"tc-selected\\\">>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ccontrol-panel-button>>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/add-column\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/add-column\",\"tags\":\"$:/tags/TopRightBar\",\"list-before\":\"$:/core/ui/TopBar/menu\",\"text\":\"\\\\whitespace trim\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$let columns={{{ [list[$:/columns]count[]!match[0]] ~1 }}} nextColumn={{{ [\u003Ccolumns>add[1]] }}}>\\n\\t\\t\u003C$button class=\\\"tc-btn-invisible\\\">\\n\\t\\t\\t\u003C%if [list[$:/columns]count[]match[0]] %>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"1\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"[\u003CnextColumn>]\\\"/>\\n\\t\\t\\t{{$:/core/images/plus-button}}\\n\\t\\t\u003C/$button>\\n\\t\u003C/$let>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/dragging\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/dragging\",\"tags\":\"$:/tags/TopRightBar\",\"list-before\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/remove-column\",\"text\":\"\\\\whitespace trim\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$button class={{{ tc-btn-invisible [{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}match[yes]then[tc-selected]] +[join[ ]] }}}>\\n\\t\\t{{$:/plugins/BTC/TiddlyFlex/icons/drag-grip}}\\n\\t\\t\u003C%if [{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}!match[yes]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/state/tiddlyflex/story-river/tiddler/drag-enabled\\\" text=\\\"yes\\\"/>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/tiddlyflex/story-river/tiddler/drag-enabled\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$button>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/filter\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/filter\",\"tags\":\"$:/tags/TopRightBar\",\"list-before\":\"\",\"text\":\"\\\\whitespace trim\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$button class={{{ [{$:/state/tiddlyflex/story-river/filter}match[yes]then[tc-selected]] tc-btn-invisible +[join[ ]] }}}>\\n\\t\\t\u003C%if [{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/tiddlyflex/story-river/filter\\\"/>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/state/tiddlyflex/story-river/filter\\\" text=\\\"yes\\\"/>\\n\\t\\t\\t\u003C%if [{$:/temp/search/input}is[blank]match[]then[yes]] %>\\n\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\\\".tc-search input\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C% endif %>\\n\\t\\t{{$:/plugins/BTC/TiddlyFlex/icons/filter}}\\n\\t\u003C/$button>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/remove-column\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/remove-column\",\"tags\":\"$:/tags/TopRightBar\",\"list-before\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/add-column\",\"text\":\"\\\\whitespace trim\\n\\\\procedure remove-column-actions()\\n\u003C$set name=\\\"columnCount\\\" value={{{ [list[$:/columns]count[]] }}}>\\n\\t\u003C$list filter=\\\"[[$:/columns]get[current-column]match\u003CcolumnCount>]\\\">\\n\\t\\t\u003C$action-setfield $tiddler=\\\"$:/columns\\\" current-column={{{ [\u003CcolumnCount>subtract[1]!match[0]] ~1 }}}/>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[\u003CcolumnCount>!match[1]]\\\">\\n\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"-[\u003CcolumnCount>]\\\"/>\\n\\t\u003C/$list>\\n\u003C/$set>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$let columns={{{ [list[$:/columns]count[]] ~1 }}}>\\n\\t\\t\u003C$button class=\\\"tc-btn-invisible\\\" actions=\u003C\u003Cremove-column-actions>>>\\n\\t\\t\\t{{$:/core/images/minus-button}}\\n\\t\\t\u003C/$button>\\n\\t\u003C/$let>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/fullscreen\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/fullscreen\",\"tags\":\"$:/tags/ViewToolbar $:/tags/EditToolbar\",\"text\":\"\\\\define get-button-class(class)\\nbtc-fullscreen-button $(tv-config-toolbar-class)$ tc-toolbar-icon $class$\\n\\\\end\\n\\\\define get-fullscreen-tooltip(onoff)\\nfullscreen $onoff$ - [$(fullScreenShortcut)$]\\n\\\\end\\n\\n\\\\whitespace trim\\n\u003C$vars fullScreenShortcut=\u003C\u003Cdisplayshortcuts ((fullscreen))>> state={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}}>\\n\\t\u003C%if [\u003Cstate>!is[missing]get[text]!match[yes]] ~[\u003Cstate>is[missing]] %>\\n\\t\\t\u003C$button class=\u003C\u003Cget-button-class>> tooltip=\u003C\u003Cget-fullscreen-tooltip \\\"on\\\">>>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Cstate>> text=\\\"yes\\\" column=\u003C\u003CtiddlyFlexColumn>>/>\\n\\t\\t\\t\u003C%if [\u003Ctv-config-toolbar-icons>match[yes]] %>\\n\\t\\t\\t\\t{{$:/core/images/full-screen-button}}\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C%if [\u003Ctv-config-toolbar-text>match[yes]] %>\\n\\t\\t\\t\\t\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text=\\\"fullscreen\\\"/>\u003C/span>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$button>\\n\\t\u003C% elseif [\u003Cstate>get[text]match[yes]] %>\\n\\t\\t\u003C$button class=\u003C\u003Cget-button-class \\\"tc-selected\\\">> tooltip=\u003C\u003Cget-fullscreen-tooltip \\\"off\\\">>>\\n\\t\\t\\t\u003C$list filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\" variable=\\\"fullScreenTiddler\\\">\\n\\t\\t\\t\\t\u003C$action-deletetiddler $tiddler=\u003C\u003CfullScreenTiddler>>/>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C%if [\u003Ctv-config-toolbar-icons>match[yes]] %>\\n\\t\\t\\t\\t{{$:/core/images/full-screen-button}}\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C%if [\u003Ctv-config-toolbar-text>match[yes]] %>\\n\\t\\t\\t\\t\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text=\\\"fullscreen\\\"/>\u003C/span>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$button>\\n\\t\u003C% endif %>\\n\u003C/$vars>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/ViewToolbar/menu\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/ViewToolbar/menu\",\"tags\":\"$:/tags/ViewToolbar\",\"text\":\"\\\\whitespace trim\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\u003C$button popup=\u003C\u003Cqualify \\\"$:/state/popup/tiddlyflex/menu\\\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class={{{ [\u003Ctv-config-toolbar-class>] tc-tiddlyflex-shown-when-narrow +[join[ ]] }}} selectedClass=\\\"tc-selected\\\">\\n{{$:/core/images/menu-button}}\\n\u003C/$button>\\n\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/popup/tiddlyflex/menu\\\">> type=\\\"popup\\\" position=\\\"belowleft\\\" animate=\\\"yes\\\">\\n\\n\u003Cdiv class=\\\"tc-drop-down\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-icons\\\" value=\\\"yes\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-text\\\" value=\\\"yes\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-class\\\" value=\\\"tc-btn-invisible\\\">\\n\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!is[draft]] -[[$:/core/ui/Buttons/more-tiddler-actions]] -[[$:/plugins/BTC/TiddlyFlex/ui/Buttons/ViewToolbar/menu]]\\\" variable=\\\"listItem\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-class\\\" filter=\\\"[\u003Ctv-config-toolbar-class>] [\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]]\\\">\\n\\n\u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"inline\\\"/>\\n\\n\u003C/$set>\\n\\n\u003C/$list>\\n\\n\u003C/$set>\\n\\n\u003C/$set>\\n\\n\u003C/$set>\\n\\n\u003C/div>\\n\\n\u003C/$reveal>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Layout\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Layout\",\"tags\":\"$:/tags/Layout\",\"description\":\"A Flexbox Layout\",\"name\":\"~TiddlyFlex\",\"icon\":\"$:/plugins/BTC/TiddlyFlex/icons/layout\",\"code-body\":\"yes\",\"text\":\"\\\\whitespace trim\\n\\\\import [subfilter{$:/core/config/GlobalImportFilter}]\\n\\\\procedure tiddlyflex-hide-sidebar-actions() \u003C$action-setfield $tiddler=\\\"$:/state/sidebar\\\" text=\\\"no\\\"/>\\n\\\\procedure tiddlyflex-layout-story()\\n\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-tiddlyflex-story-river-wrapper\\\">\\n\\t\u003Cdiv class=\\\"tc-tiddlyflex-story-river-header\\\">\\n\\t\\t\u003C$set name=\\\"aboveStoryHeaderTag\\\" value={{{ [[$:/tags/AboveStoryHeader-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CaboveStoryHeaderTag>!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C/div>\\n\\t\u003C$transclude tiddler=\\\"$:/plugins/BTC/TiddlyFlex/ui/Templates/story\\\"/>\\n\\t\u003Cdiv class=\\\"tc-tiddlyflex-story-river-footer\\\">\\n\\t\\t\u003C$set name=\\\"belowStoryFooterTag\\\" value={{{ [[$:/tags/BelowStoryFooter-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CbelowStoryFooterTag>!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C/div>\\n\u003C/div>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-story-rivers()\\n\\\\whitespace trim\\n\u003C$list filter=\u003C\u003Ctdff.tiddlyflex-enlist-columns>> variable=\\\"tiddlyFlexColumn\\\">\\n\\t\u003C$set name=\\\"transclusion\\\" value=\u003C\u003CtiddlyFlexColumn>>>\\n\\t\\t\u003C$vars tv-story-list={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>] }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CtiddlyFlexColumn>] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-message-catcher\\\" tiddlyflex-layout-inner=\u003C\u003Ctiddlyflex-layout-story>>/>\\n\\t\\t\u003C/$vars>\\n\\t\u003C/$set>\\n\u003C/$list>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-drafts-inner()\\n\u003C$transclude tiddler=\\\"$:/plugins/BTC/TiddlyFlex/ui/Templates/drafts\\\"/>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-drafts()\\n\u003C$macrocall $name=\\\"tiddlyflex-message-catcher-outside\\\" tiddlyflex-layout-inner=\u003C\u003Ctiddlyflex-layout-drafts-inner>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-sidebar()\\n\u003C$transclude tiddler=\\\"$:/plugins/BTC/TiddlyFlex/ui/Templates/sidebar\\\"/>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-header()\\n\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-tiddlyflex-header\\\">\\n\\t\u003C$list filter=\\\"[{$:/status/RequireReloadDueToPluginChange}match[yes]then{$:/temp/HidePluginWarning}!match[yes]then[$:/plugins/BTC/TiddlyFlex/ui/Toolbars/PluginReloadWarning]] [all[shadows+tiddlers]tag[$:/tags/TopToolbar]!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\u003C/$list>\\n\u003C/div>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-leftbar()\\n\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-tiddlyflex-leftbar\\\">\\n\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/LeftToolbar]!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\u003C/$list>\\n\u003C/div>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-footer()\\n\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-tiddlyflex-footer\\\">\\n\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/BottomToolbar]!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\u003C/$list>\\n\u003C/div>\\n\\\\end\\n\u003C$vars\\n\\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\\n\\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\\n\\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\\n\\ttv-enable-drag-and-drop={{$:/config/DragAndDrop/Enable}}\\n\\ttv-show-missing-links={{$:/config/MissingLinks}}\\n\\tstoryviewTitle={{$:/view}}\\n\\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\\n\\t\u003Cdiv class={{{ [all[shadows+tiddlers]tag[$:/tags/ClassFilters/PageTemplate/TiddlyFlex]!is[draft]] :map:flat[subfilter{!!text}] tc-page-container tc-tiddlyflex-container [[tc-page-view-]addsuffix\u003CstoryviewTitle>] [[tc-language-]addsuffix\u003ClanguageTitle>] [{$:/state/sidebar}match[yes]then[tc-sidebar-shown]] :and[unique[]join[ ]] }}} tabindex=\\\"0\\\">\\n\\t\\t\u003C$eventcatcher selector=\\\".tc-tiddlyflex-sidebar-shown\\\" matchSelector=\\\".tc-tiddlyflex-sidebar-shown\\\" $click=\u003C\u003Ctiddlyflex-hide-sidebar-actions>> class=\\\"tc-tiddlyflex-sidebar-shown-eventcatcher\\\">\\n\\t\\t\\t\u003Cdiv class={{{ [{$:/state/sidebar}!match[no]then[tc-tiddlyflex-sidebar-hide tc-btn-invisible tc-tiddlyflex-sidebar-shown]] [{$:/state/sidebar}match[no]then[tc-tiddlyflex-sidebar-hide tc-btn-invisible tc-tiddlyflex-sidebar-hidden]] }}}/>\\n\\t\\t\u003C/$eventcatcher>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-message-catcher-outside\\\" tiddlyflex-layout-inner=\u003C\u003Ctiddlyflex-layout-header>>/>\\n\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-main-wrapper\\\">\\n\\t\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-message-catcher-outside\\\" tiddlyflex-layout-inner=\u003C\u003Ctiddlyflex-layout-leftbar>>/>\\n\\t\\t\\t\u003Cmain class=\\\"tc-tiddlyflex-main\\\">\\n\\t\\t\\t\\t\u003C%if [{$:/config/tiddlyflex/sidebar/resizer}match[yes]] %>\\n\\t\\t\\t\\t\\t\u003C$eventcatcher tag=\\\"div\\\" class=\\\"tc-tiddlyflex-pointerdown-eventcatcher\\\" selector=\\\".tc-tiddlyflex-sidebar-resizer\\\" matchSelector=\\\".tc-tiddlyflex-sidebar-resizer\\\" $pointerdown=\u003C\u003Ctiddlyflex-sidebar-resizer-pointerdown-actions>> $pointerup=\u003C\u003Ctiddlyflex-sidebar-resizer-pointerup-actions>>>\\n\\t\\t\\t\\t\\t\\t\u003C%if [{$:/state/sidebar/resizing}match[yes]] %>\\n\\t\\t\\t\\t\\t\\t\\t\u003C$eventcatcher tag=\\\"div\\\" selector=\\\".tc-tiddlyflex-pointermove\\\" matchSelector=\\\".tc-tiddlyflex-pointermove\\\" class=\\\"tc-tiddlyflex-pointermove-eventcatcher\\\" $pointerup=\u003C\u003Ctiddlyflex-sidebar-resizer-pointerup-actions>> $pointermove=\u003C\u003Ctiddlyflex-sidebar-resizer-pointermove-actions>> $pointerleave=\u003C\u003Ctiddlyflex-sidebar-resizer-pointerup-actions>> $pointerout=\u003C\u003Ctiddlyflex-sidebar-resizer-pointerup-actions>>>\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-pointermove\\\"/>\\n\\t\\t\\t\\t\\t\\t\\t\u003C/$eventcatcher>\\n\\t\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-sidebar-resizer\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$eventcatcher>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-story-river-container\\\">\\n\\t\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-story-river-container-inner\\\">\\n\\t\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-layout-story-rivers>>\\n\\t\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-layout-drafts>>\\n\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-sidebar\\\">\\n\\t\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-sidebar-container\\\">\\n\\t\\t\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-sidebar-container-inner\\\">\\n\\t\\t\\t\\t\\t\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-message-catcher-outside\\\" tiddlyflex-layout-inner=\u003C\u003Ctiddlyflex-layout-sidebar>>/>\\n\\t\\t\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\u003C/main>\\n\\t\\t\u003C/div>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-message-catcher-outside\\\" tiddlyflex-layout-inner=\u003C\u003Ctiddlyflex-layout-footer>>/>\\n\\t\u003C/div>\\n\u003C/$vars>\"},\"$:/plugins/BTC/tiddlyflex/ui/Notifications/Ensemble/EmptyNotification\":{\"title\":\"$:/plugins/BTC/tiddlyflex/ui/Notifications/Ensemble/EmptyNotification\",\"text\":\"The Ensemble Title must not be empty\"},\"$:/plugins/BTC/tiddlyflex/ui/Notifications/Ensemble/MatchingEnsembleNotification\":{\"title\":\"$:/plugins/BTC/tiddlyflex/ui/Notifications/Ensemble/MatchingEnsembleNotification\",\"text\":\"Nothing to load. The current configuration matches the Ensemble.\"},\"$:/plugins/BTC/TiddlyFlex/ui/SideBar/Ensemble\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/SideBar/Ensemble\",\"caption\":\"Ensemble\",\"tags\":\"$:/tags/SideBar\",\"text\":\"\\\\whitespace trim\\n\\n!! Save Ensemble\\n\\nGive your ensemble a title:\u003Cbr>\\n\u003C$edit-text tiddler=\\\"$:/temp/tiddlyflex/save-ensemble/story-title\\\" default=\\\"\\\" placeholder=\\\"Title\\\" tag=\\\"input\\\" class=\\\"tc-story-title tc-small-gap-right\\\"/>\u003C$button class=\\\"tc-btn-invisible tc-greyed-out-button\\\">\u003C$action-deletefield $tiddler=\\\"$:/temp/tiddlyflex/save-ensemble/story-title\\\" $field=\\\"text\\\"/>{{$:/core/images/close-button}}\u003C/$button>\\n\\nOptionally, provide a list of tiddlers that should get the tag \u003Cspan class=\\\"tc-small-gap-left tc-small-gap-right\\\">\u003C\u003Ctag-pill \\\"$:/tags/Stylesheet\\\">>\u003C/span> when the Ensemble is loaded:\u003Cbr>\\n\u003C$edit-text tiddler=\\\"$:/temp/tiddlyflex/save-ensemble/story-title\\\" default=\\\"\\\" field=\\\"stylesheets\\\" placeholder=\\\"Stylesheets\\\" tag=\\\"input\\\" class=\\\"tc-small-gap-right\\\"/>\u003C$button class=\\\"tc-btn-invisible tc-greyed-out-button\\\">\u003C$action-deletefield $tiddler=\\\"$:/temp/tiddlyflex/save-ensemble/story-title\\\" $field=\\\"stylesheets\\\"/>{{$:/core/images/close-button}}\u003C/$button>\\n\\n\u003C$let ensembleTitle={{{ [[$:/temp/tiddlyflex/save-ensemble/story-title]get[text]] }}}>\\n\\t\u003C$button>\u003C$macrocall $name=\\\"tiddlyflex-save-ensemble-actions\\\" ensembleTitle=\u003C\u003CensembleTitle>>/>Save\u003C/$button>\\n\u003C/$let>\\n\\n\u003Chr class=\\\"simple\\\">\\n\\n!! Load Ensemble\\n\\n\u003C$list filter=\\\"[all[tiddlers+shadows]prefix[$:/Ensemble/]]\\\" variable=\\\"ensembleTiddler\\\" storyview=\\\"pop\\\">\\n\\n\u003C$let ensembleName={{{ [\u003CensembleTiddler>removeprefix[$:/Ensemble/]] }}}>\\n\\n\u003C$text text=\u003C\u003CensembleName>>/>\u003C$button actions=\u003C\u003Ctiddlyflex-load-ensemble-actions>> class=\\\"tc-small-gap-left\\\">Load\u003C/$button>\u003C$button class=\\\"tc-small-gap-left\\\" actions=\\\"\\\"\\\"\u003C$action-deletetiddler $tiddler=\u003C\u003CensembleTiddler>>/>\\\"\\\"\\\">Delete\u003C/$button>\\n\\n\u003C/$let>\\n\\n\u003C/$list>\"},\"$:/core/ui/SideBar/Open\":{\"title\":\"$:/core/ui/SideBar/Open\",\"tags\":\"$:/tags/SideBar\",\"caption\":\"{{$:/language/SideBar/Open/Caption}}\",\"text\":\"\\\\whitespace trim\\n\\\\define lingo-base() $:/language/CloseAll/\\n\\n\\\\define drop-actions()\\n\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CcurrentTiddler>]\\\"/>\\n\\\\end\\n\\n\\\\define placeholder()\\n\u003Cdiv class=\\\"tc-droppable-placeholder\\\"/>\\n\\\\end\\n\\n\\\\define droppable-item(button)\\n\\\\whitespace trim\\n\u003C$droppable actions=\u003C\u003Cdrop-actions>> enable=\u003C\u003Ctv-allow-drag-and-drop>> tag=\\\"div\\\">\\n\u003C\u003Cplaceholder>>\\n\u003Cdiv>\\n$button$\\n\u003C/div>\\n\u003C/$droppable>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-sidebar-tab-open()\\n\u003Cdiv class=\\\"tc-sidebar-tab-open\\\">\\n\u003C$list filter=\\\"[list\u003Ctv-story-list>]\\\" history=\u003C\u003Ctv-history-list>> storyview=\\\"pop\\\">\\n\u003Cdiv class=\\\"tc-sidebar-tab-open-item\\\">\\n\u003C$macrocall $name=\\\"droppable-item\\\" button=\\\"\u003C$button message='tm-close-tiddler' tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class='tc-btn-invisible tc-btn-mini tc-small-gap-right'>{{$:/core/images/close-button}}\u003C/$button>\u003C$link/>\\\"/>\\n\u003C/div>\\n\u003C/$list>\\n\u003C$tiddler tiddler=\\\"\\\">\\n\u003Cdiv>\\n\u003C$macrocall $name=\\\"droppable-item\\\" button=\\\"\u003C$button message='tm-close-all-tiddlers' class='tc-btn-invisible tc-btn-mini'>\u003C\u003Clingo Button>>\u003C/$button>\\\"/>\\n\u003C/div>\\n\u003C/$tiddler>\\n\u003C/div>\\n\\\\end\\n\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$let currentColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[[$:/columns]get[current-column]] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] ~1 }}} tv-story-list={{{ [[$:/StoryList-]addsuffix\u003CcurrentColumn>] }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CcurrentColumn>] }}}>\\n\\t\\t\u003C\u003Ctiddlyflex-sidebar-tab-open>>\\n\\t\u003C/$let>\\n\u003C% else %>\\n\\t\u003C\u003Ctiddlyflex-sidebar-tab-open>>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Templates/EditTemplate\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Templates/EditTemplate\",\"code-body\":\"yes\",\"text\":\"\\\\procedure delete-edittemplate-state-tiddlers()\\n\u003C$set name=\\\"safeNewFieldValueTiddlerPrefix\\\" value=\u003C\u003CnewFieldValueTiddlerPrefix>> emptyValue=\u003C\u003Cqualify \\\"$:/temp/NewFieldValue\\\">> >\\n\\t\u003C$action-deletetiddler $filter=\\\"[\u003CnewFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix\u003CsafeNewFieldValueTiddlerPrefix>] [\u003CnewFieldNameInputTiddler>] [\u003CnewFieldNameSelectionTiddler>] [\u003CnewTagNameTiddler>] [\u003CnewTagNameInputTiddler>] [\u003CnewTagNameSelectionTiddler>] [\u003CtypeInputTiddler>] [\u003CtypeSelectionTiddler>]\\\"/>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\procedure save-tiddler-actions()\\n\\\\whitespace trim\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param={{{ [\u003CnewTagNameTiddler>get[text]] }}}/>\\n\u003C$action-sendmessage $message=\\\"tm-add-field\\\" $name={{{ [\u003CnewFieldNameTiddler>get[text]] }}} $value={{{ [\u003CnewFieldNameTiddler>get[text]] :map[subfilter\u003Cget-field-value-tiddler-filter>get[text]] }}}/>\\n\u003C\u003Cdelete-edittemplate-state-tiddlers>>\\n\u003C$action-sendmessage $message=\\\"tm-save-tiddler\\\"/>\\n\\\\end\\n\\n\\\\define cancel-delete-tiddler-actions(message)\\n\u003C%if [[$message$]match[delete]] %>\\n\\t\u003C\u003Ctiddlyflex-delete-draft-tiddler-actions>>\\n\u003C% elseif [[$message$]match[cancel]] %>\\n\\t\u003C\u003Ctiddlyflex-cancel-draft-tiddler-actions>>\\n\u003C% endif %>\\n\\\\end\\n\\n\\\\procedure get-field-value-tiddler-filter() [subfilter\u003Cget-field-editor-filter>sha256[16]addprefix[/]addprefix\u003CnewFieldValueTiddlerPrefix>]\\n\\\\procedure get-field-editor-filter() [\u003CnewFieldNameTiddler>get[text]else[]] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}]\\n\\n\\\\whitespace trim\\n\u003Cdiv\\n\\tdata-tiddler-title=\u003C\u003CcurrentTiddler>>\\n\\tdata-tags={{!!tags}}\\n\\tclass={{{ [all[shadows+tiddlers]tag[$:/tags/ClassFilters/TiddlerTemplate]!is[draft]] :map:flat[subfilter{!!text}] [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]addprefix[tc-tiddlyflex-column-]] tc-tiddler-edit-frame [\u003CcurrentTiddler>is[tiddler]then[tc-tiddler-exists]] [\u003CcurrentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [\u003CcurrentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [\u003CcurrentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] tc-dynanode-track-tiddler-when-visible [\u003CcurrentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}\\n\\trole=\\\"region\\\"\\n\\taria-label={{$:/language/EditTemplate/Caption}}>\\n\\t\u003C$fieldmangler>\\n\\t\\t\u003C$tiddlyflex-draggable enable={{{ [{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}match[yes]then[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>is[missing]then[yes]] ~[[no]] }}} tiddler=\u003C\u003CcurrentTiddler>> startactions=\u003C\u003Ctiddlyflex-drag-start-actions>> endactions=\u003C\u003Ctiddlyflex-drag-end-actions>> class=\\\"tc-tiddler-frame\\\">\\n\\t\\t\\t\u003C$vars\\n\\t\\t\\t\\tstoryTiddler=\u003C\u003CcurrentTiddler>>\\n\\t\\t\\t\\tnewTagNameTiddler=\u003C\u003Cqualify \\\"$:/temp/NewTagName\\\">>\\n\\t\\t\\t\\tnewFieldNameTiddler=\u003C\u003Cqualify \\\"$:/temp/NewFieldName\\\">>\\n\\t\\t\\t\\tnewFieldValueTiddlerPrefix=\u003C\u003Cqualify \\\"$:/temp/NewFieldValue\\\">>\\n\\t\\t\\t\\tnewFieldNameInputTiddler=\u003C\u003Cqualify \\\"$:/temp/NewFieldName/input\\\">>\\n\\t\\t\\t\\tnewFieldNameSelectionTiddler=\u003C\u003Cqualify \\\"$:/temp/NewFieldName/selected-item\\\">>\\n\\t\\t\\t\\tnewTagNameInputTiddler=\u003C\u003Cqualify \\\"$:/temp/NewTagName/input\\\">>\\n\\t\\t\\t\\tnewTagNameSelectionTiddler=\u003C\u003Cqualify \\\"$:/temp/NewTagName/selected-item\\\">>\\n\\t\\t\\t\\ttypeInputTiddler=\u003C\u003Cqualify \\\"$:/temp/Type/input\\\">>\\n\\t\\t\\t\\ttypeSelectionTiddler=\u003C\u003Cqualify \\\"$:/temp/Type/selected-item\\\">>>\\n\\t\\t\\t\\t\u003C$keyboard key=\\\"((cancel-edit-tiddler))\\\" actions=\u003C\u003Ccancel-delete-tiddler-actions \\\"cancel\\\">> tag=\\\"div\\\">\\n\\t\\t\\t\\t\\t\u003C$keyboard key=\\\"((save-tiddler))\\\" actions=\u003C\u003Csave-tiddler-actions>> tag=\\\"div\\\">\\n\\t\\t\\t\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!is[draft]]\\\" variable=\\\"listItem\\\">\\n\\t\\t\\t\\t\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\\t\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\\t\\t\u003C/$keyboard>\\n\\t\\t\\t\\t\u003C/$keyboard>\\n\\t\\t\\t\u003C/$vars>\\n\\t\\t\\t\u003C% if [{$:/state/dragging}match[yes]then{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}match[yes]then[$:/state/story-river/full-screen/]addsuffix\u003CcurrentTiddler>is[missing]] %>\\n\\t\\t\\t\\t\u003C$droppable class=\\\"tc-tiddlyflex-droppable-top-half\\\" actions=\u003C\u003Ctiddlyflex-top-drop-actions>> dragenteractions=\u003C\u003Ctiddlyflex-top-dragenter-actions>>/>\\n\\t\\t\\t\\t\u003C$droppable class=\\\"tc-tiddlyflex-droppable-bottom-half\\\" actions=\u003C\u003Ctiddlyflex-bottom-drop-actions>> dragenteractions=\u003C\u003Ctiddlyflex-bottom-dragenter-actions>>/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$tiddlyflex-draggable>\\n\\t\u003C/$fieldmangler>\\n\u003C/div>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Templates/ViewTemplate\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Templates/ViewTemplate\",\"code-body\":\"yes\",\"text\":\"\\\\whitespace trim\\n\\\\define folded-state()\\n$:/state/folded/$(currentTiddler)$\\n\\\\end\\n\\\\define cancel-delete-tiddler-actions(message) \u003C$action-sendmessage $message=\\\"tm-$message$-tiddler\\\"/>\\n\\\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!is[draft]] [all[shadows+tiddlers]tag[$:/tags/Global/View]!is[draft]]\\n\u003C$vars storyTiddler=\u003C\u003CcurrentTiddler>> tiddlerInfoState=\u003C\u003Cqualify \\\"$:/state/popup/tiddler-info\\\">>>\\n\\t\u003Cdiv data-tiddler-title=\u003C\u003CcurrentTiddler>> data-tags={{!!tags}} class={{{ [all[shadows+tiddlers]tag[$:/tags/ClassFilters/TiddlerTemplate]!is[draft]] :map:flat[subfilter{!!text}] [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]addprefix[tc-tiddlyflex-column-]] tc-tiddler-view-frame [\u003CcurrentTiddler>is[tiddler]then[tc-tiddler-exists]] [\u003CcurrentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [\u003CcurrentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [\u003CcurrentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [\u003CcurrentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] tc-dynanode-track-tiddler-when-visible [\u003CcurrentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}} role=\\\"article\\\">\\n\\t\\t\u003C$tiddlyflex-draggable enable={{{ [{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}match[yes]then[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>is[missing]then[yes]] ~[[no]] }}} tiddler=\u003C\u003CcurrentTiddler>> startactions=\u003C\u003Ctiddlyflex-drag-start-actions>> endactions=\u003C\u003Ctiddlyflex-drag-end-actions>> class=\\\"tc-tiddler-frame\\\">\\n\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!is[draft]]\\\" variable=\\\"listItem\\\">\\n\\t\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C% if [{$:/state/dragging}match[yes]then{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}match[yes]then[$:/state/story-river/full-screen/]addsuffix\u003CcurrentTiddler>is[missing]] %>\\n\\t\\t\\t\\t\u003C$droppable class=\\\"tc-tiddlyflex-droppable-top-half\\\" actions=\u003C\u003Ctiddlyflex-top-drop-actions>> dragenteractions=\u003C\u003Ctiddlyflex-top-dragenter-actions>>/>\\n\\t\\t\\t\\t\u003C$droppable class=\\\"tc-tiddlyflex-droppable-bottom-half\\\" actions=\u003C\u003Ctiddlyflex-bottom-drop-actions>> dragenteractions=\u003C\u003Ctiddlyflex-bottom-dragenter-actions>>/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$tiddlyflex-draggable>\\n\\t\u003C/div>\\n\u003C/$vars>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Templates/drafts\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Templates/drafts\",\"text\":\"\\\\whitespace trim\\n\u003C$reveal state=\\\"$:/status/IsReadOnly\\\" type=\\\"nomatch\\\" text=\\\"yes\\\" tag=\\\"div\\\" class=\\\"tc-drafts-list tc-tiddlyflex-drafts-list\\\">\\n\u003C$list filter=\\\"[is[draft]!sort[modified]] -[all[tiddlers]prefix[$:/StoryList-]get[list]enlist-input[]]\\\">\\n\u003C$link>\\n\u003Cspan class=\\\"tc-small-gap-right\\\">{{$:/core/images/edit-button}}\u003C/span>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\\n\u003C/$link>\\n\u003C/$list>\\n\u003C/$reveal>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Templates/sidebar\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Templates/sidebar\",\"code-body\":\"yes\",\"text\":\"\\\\whitespace trim\\n\\\\define config-title()\\n$:/config/SideBarSegments/Visibility/$(listItem)$\\n\\\\end\\n\\n\u003Cdiv class=\\\"tc-tiddlyflex-sidebar-scrollable\\\">\\n\\n\\t\u003Cdiv class=\\\"tc-sidebar-header\\\">\\n\\n\\t\\t\u003C$reveal state=\\\"$:/state/sidebar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"yes\\\" animate=\\\"yes\\\">\\n\\n\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n\\n\\t\\t\\t\\t\u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Cconfig-title>> text=\\\"hide\\\" tag=\\\"div\\\">\\n\\n\\t\\t\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"block\\\"/>\\n\\n\\t\\t\\t\\t\u003C/$reveal>\\n\\n\\t\\t\\t\u003C/$list>\\n\\n\\t\\t\u003C/$reveal>\\n\\n\\t\u003C/div>\\n\\n\u003C/div>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Templates/story\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Templates/story\",\"code-body\":\"yes\",\"text\":\"\\\\whitespace trim\\n\\\\procedure tiddlyflex-activate-column-actions()\\n\u003C%if [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] +[!match\u003CtiddlyFlexColumn>] %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/columns\\\" current-column=\u003C\u003CtiddlyFlexColumn>>/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-filtered-story-list()\\n\\n\u003C$list filter=\u003C\u003Ctdff.tiddlyflex-story-river-filter>> history=\u003C\u003Ctv-history-list>> template=\\\"$:/core/ui/StoryTiddlerTemplate\\\" storyview=\\\"tiddlyflex\\\" emptyMessage={{{ [list\u003Ctv-story-list>limit[1]then[]else{$(emptyMessageTiddler)$}] }}}/>\\n\\n\\\\end\\n\u003C$dynanode enable={{{ [{$:/config/tiddlyflex/story-river/dynanode}match[yes]] }}} timeout={{$:/config/tiddlyflex/story-river/dynanode/timeout}} refreshchildren={{{ [[$:/config/tiddlyflex/story-river/dynanode/refreshchildren]get[text]match[yes]] }}} class={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] +[match\u003CtiddlyFlexColumn>then[tc-tiddlyflex-story-river-active]] [[tc-tiddlyflex-story-river-wrapper-inner]] [[tc-tiddlyflex-story-river-]addsuffix\u003CtiddlyFlexColumn>] :and[unique[]join[ ]] }}}>\\n\\n\\t\u003C$dropzone enable={{{ [function[tiddlyflex-fullscreen]is[blank]then\u003Ctv-enable-drag-and-drop>] }}} class={{{ [\u003CtiddlyFlexColumn>!is[blank]addprefix[tc-tiddlyflex-dropzone-]] ~tc-tiddlyflex-dropzone-1 }}} importTitle={{{ [[$:/Import-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\n\\t\\t\u003C$eventcatcher selector=\\\".tc-tiddlyflex-activate-column\\\" matchSelector=\\\".tc-tiddlyflex-activate-column\\\" $click=\u003C\u003Ctiddlyflex-activate-column-actions>> class=\\\"tc-tiddlyflex-active-column-wrapper\\\">\\n\\n\\t\\t\\t\u003Ca class=\\\"tc-btn-invisible tc-tiddlyflex-activate-column\\\"/>\\n\\n\\t\\t\u003C/$eventcatcher>\\n\\n\\t\\t\u003Csection class=\\\"tc-tiddlyflex-story-river\\\" role=\\\"main\\\">\\n\\n\\t\\t\\t\u003Csection class=\\\"story-backdrop\\\">\\n\\n\\t\\t\\t\\t\u003C$set name=\\\"aboveStoryTag\\\" value={{{ [[$:/tags/AboveStory-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\n\\t\\t\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CaboveStoryTag>!is[draft]]\\\">\\n\\n\\t\\t\\t\\t\\t\\t\u003C$transclude/>\\n\\n\\t\\t\\t\\t\\t\u003C/$list>\\n\\n\\t\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\\t\u003C/section>\\n\\n\\t\\t\\t\u003Csection class=\\\"tc-tiddlyflex-story-river-inner\\\">\\n\\n\\t\\t\\t\\t\u003C$set name=\\\"emptyMessageTiddler\\\" value={{{ [[$:/config/EmptyStoryMessage-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-filtered-story-list>>\\n\\n\\t\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\\t\\t\u003C%if [{$:/state/dragging}match[yes]] %>\\n\\n\\t\\t\\t\\t\\t\u003C$droppable class=\\\"tc-tiddlyflex-below-story-river-droppable\\\" actions=\u003C\u003Ctiddlyflex-story-droppable-drop-actions>> dragenteractions=\u003C\u003Ctiddlyflex-story-droppable-dragenter-actions>>/>\\n\\n\\t\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\\t\u003C/section>\\n\\n\\t\\t\\t\u003Csection class=\\\"story-frontdrop\\\">\\n\\n\\t\\t\\t\\t\u003C$set name=\\\"belowStoryTag\\\" value={{{ [[$:/tags/BelowStory-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\n\\t\\t\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CbelowStoryTag>!is[draft]]\\\">\\n\\n\\t\\t\\t\\t\\t\\t\u003C$transclude/>\\n\\n\\t\\t\\t\\t\\t\u003C/$list>\\n\\n\\t\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\\t\u003C/section>\\n\\n\\t\\t\u003C/section>\\n\\n\\t\u003C/$dropzone>\\n\\n\u003C/$dynanode>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Toolbars/PluginReloadWarning\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Toolbars/PluginReloadWarning\",\"text\":\"\\\\define lingo-base() $:/language/\\n\\n\u003Cdiv class=\\\"tc-plugin-reload-warning\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-class\\\" value=\\\"\\\">\\n\\n\u003C\u003Clingo PluginReloadWarning>>\u003C$button set=\\\"$:/temp/HidePluginWarning\\\" setTo=\\\"yes\\\" class=\\\"tc-btn-invisible tc-small-gap-left\\\">{{$:/core/images/close-button}}\u003C/$button>\\n\\n\u003C/$set>\\n\\n\u003C/div>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Toolbars/Segments/search\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Toolbars/Segments/search\",\"tags\":\"$:/tags/TopLeftBar\",\"text\":\"\\\\whitespace trim\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t{{$:/core/ui/SideBarSegments/search}}\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Toolbars/TopToolbar\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Toolbars/TopToolbar\",\"tags\":\"$:/tags/TopToolbar\",\"text\":\"\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-tiddlyflex-top-toolbar\\\">\\n\\t\u003Cdiv class=\\\"tc-tiddlyflex-top-toolbar-left\\\">\\n\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\\t\u003C/$list>\\n\\t\u003C/div>\\n\\t\u003Cdiv class=\\\"tc-tiddlyflex-top-toolbar-center\\\">\\n\\n\\t\u003C/div>\\n\\t\u003Cdiv class=\\\"tc-tiddlyflex-top-toolbar-right\\\">\\n\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\\t\u003C/$list>\\n\\t\u003C/div>\\n\u003C/div>\"}}}","revision":"0","bag":"default"} +{"title":"$:/plugins/BTC/TiddlyFlex","description":"A Flexbox Layout for TiddlyWiki5","name":"TiddlyFlex","plugin-type":"plugin","author":"Simon Huber","version":"0.0.149","core-version":">=5.3.3","source":"https://github.com/BurningTreeC/TiddlyFlex","list":"readme license","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/add-column\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/add-column\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((add-column))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$let columns={{{ [list[$:/columns]count[]!match[0]] ~1 }}} nextColumn={{{ [\u003Ccolumns>add[1]] }}}>\\n\\t\\t\\t\u003C%if [list[$:/columns]count[]match[0]] %>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"1\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"[\u003CnextColumn>]\\\"/>\\n\\t\\t\u003C/$let>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/cancel-close-tiddler\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/cancel-close-tiddler\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((cancel-close-tiddler))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure tiddlyflex-tiddler-is-draft-actions-draft-of-not-is-missing()\\n\u003C$list filter=\\\"[list[$:/columns]!match{$:/columns!!current-column}]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>!match[$:/StoryList-]] ~[[$:/StoryList-1]] }}}>\\n\\t\\t\u003C%if [\u003Ctv-story-list>contains\u003Ctiddler>] %>\\n\\t\\t\\t\u003C$set name=\\\"index\\\" value={{{ [list\u003Ctv-story-list>allbefore\u003Ctiddler>add[1]] }}}>\\n\\t\\t\\t\\t\u003C$let nextTiddler={{{ [list\u003Ctv-story-list>zth\u003Cindex>] }}} viewTiddler={{{ [\u003Ctiddler>get[draft.of]] }}}>\\n\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CviewTiddler>,\u003CnextTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003Ctiddler>]\\\"/>\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$set>\\n\u003C/$list>\\n\\\\end\\n\\\\procedure tiddlyflex-tiddler-is-draft-actions()\\n\u003C% if [\u003Ctiddler>get[draft.of]!is[shadow]is[missing]] %>\\n\\t\u003C$list filter=\\\"[list[$:/columns]!match{$:/columns!!current-column}]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\t\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>!match[$:/StoryList-]] ~[[$:/StoryList-1]] }}}>\\n\\t\\t\\t\u003C%if [\u003Ctv-story-list>contains\u003Ctiddler>] %>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003Ctiddler>]\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$set>\\n\\t\u003C/$list>\\n\u003C% else %>\\n\\t\u003C\u003Ctiddlyflex-tiddler-is-draft-actions-draft-of-not-is-missing>>\\n\\t\u003C$set name=\\\"toTiddler\\\" value={{{ [\u003Ctiddler>get[draft.of]] }}}>\\n\\t\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Ctiddler>] }}} to={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CtoTiddler>] }}}/>\\n\\t\u003C/$set>\\n\u003C% endif %>\\n\u003C$set name=\\\"scrollTiddler\\\" value={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003Ctiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003Ctiddler>] }}}>\\n\\t\u003C%if [\u003Ctiddler>get[draft.of]!is[shadow]is[missing]] %>\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CscrollTiddler>>/>\\n\\t\\t\u003C%if [\u003CscrollTiddler>is[draft]] %>\\n\\t\\t\\t\u003C$set name=\\\"cssEscapedTitle\\\" value={{{ [\u003CscrollTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-focus-flexcontainer>>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\\t\u003C$action-sendmessage $message=\\\"tm-cancel-tiddler\\\" $param=\u003C\u003Ctiddler>>/>\\n\u003C/$set>\\n\\\\end\\n\\\\define actions()\\n\u003C$set name=\\\"tiddler\\\" value=\u003C\u003CcurrentTiddler>>>\\n\\t\u003C%if [\u003Ctiddler>!is[draft]] %>\\n\\t\\t\u003C$let scrollTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[after\u003Ctiddler>] ~[before\u003Ctiddler>] }}}>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CscrollTiddler>>/>\\n\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-close-tiddler\\\" $param=\u003C\u003Ctiddler>>/>\\n\\t\\t\\t\u003C%if [\u003CscrollTiddler>is[draft]] %>\\n\\t\\t\\t\\t\u003C$set name=\\\"cssEscapedTitle\\\" value={{{ [\u003CscrollTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\u003C% else %>\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-flexcontainer>>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$let>\\n\\t\\t\u003C$action-deletetiddler $tiddler={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Ctiddler>] }}}/>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-tiddler-is-draft-actions>>\\n\\t\\t\u003C$action-deletetiddler $tiddler={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Ctiddler>] }}}/>\\n\\t\u003C% endif %>\\n\u003C/$set>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/column-down\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/column-down\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((column-down))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$let currentColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[[$:/columns]get[current-column]] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] ~1 }}} columnCount={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>last[]] ~[subfilter\u003Ctdff.tiddlyflex-enlist-columns>first[]] ~1 }}} nextColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] +[before\u003CcurrentColumn>] ~[\u003CcolumnCount>] }}} tv-story-list={{{ [[$:/StoryList-]addsuffix\u003CnextColumn>] }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CnextColumn>] }}}>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-cycle-columns-navigator>>\\n\\t\\t\u003C/$let>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/column-up\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/column-up\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((column-up))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$let currentColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[[$:/columns]get[current-column]] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] ~1 }}} nextColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] +[after\u003CcurrentColumn>] ~[subfilter\u003Ctdff.tiddlyflex-enlist-columns>first[]] ~1 }}} tv-story-list={{{ [[$:/StoryList-]addsuffix\u003CnextColumn>] }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CnextColumn>] }}}>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-cycle-columns-navigator>>\\n\\t\\t\u003C/$let>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/dragging\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/dragging\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((dragging))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C%if [{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}!match[yes]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/state/tiddlyflex/story-river/tiddler/drag-enabled\\\" text=\\\"yes\\\"/>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/tiddlyflex/story-river/tiddler/drag-enabled\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/edit-tiddler\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/edit-tiddler\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((edit-tiddler))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\define actions()\\n\u003C%if [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[match\u003CcurrentTiddler>] %>\\n\\t\u003C%if [\u003CcurrentTiddler>!is[draft]] %>\\n\\t\\t\u003C$action-sendmessage $message=\\\"tm-edit-tiddler\\\" $param=\u003C\u003CcurrentTiddler>>/>\\n\\t\\t\u003C%if [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>!is[missing]] %>\\n\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}} to={{{ [[$:/state/tiddlyflex/story-river/fullscreen/Draft of ']addsuffix\u003CcurrentTiddler>addsuffix[']] }}}/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C% endif %>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/filter-river\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/filter-river\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((filter-river))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C%if [{$:/state/tiddlyflex/story-river/filter}!match[yes]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/state/tiddlyflex/story-river/filter\\\" text=\\\"yes\\\"/>\\n\\t\\t\\t\u003C%if [{$:/temp/search/input}is[blank]match[]then[yes]] %>\\n\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\\\".tc-search input\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/tiddlyflex/story-river/filter\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/fullscreen\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/fullscreen\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((fullscreen))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\define actions()\\n\u003C%if [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[match\u003CcurrentTiddler>] %>\\n\\t\u003C%if [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>!is[missing]] %>\\n\\t\\t\u003C$action-deletetiddler $tiddler={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}}/>\\n\\t\u003C% else %>\\n\\t\\t\u003C$action-setfield $tiddler={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}} text=\\\"yes\\\" column=\u003C\u003CcurrentColumn>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-down\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-down\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((move-down))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure actions()\\n\u003C$set name=\\\"nextTiddler\\\" value={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[after\u003CcurrentTiddler>] }}}>\\n\\t\u003C%if [\u003CnextTiddler>!is[blank]!match[]] %>\\n\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore:currentTiddler\u003CnextTiddler>]\\\"/>\\n\\t\u003C% endif %>\\n\u003C/$set>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-left\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-left\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((move-left))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure current-tiddler-is-empty-message()\\n\u003C$action-listops $tiddler=\u003C\u003CpreviousStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CfirstPreviousStoryTiddler>]\\\"/>\\n\u003C$action-setfield $tiddler=\u003C\u003CpreviousHistoryList>> current-tiddler=\u003C\u003CfocusedTiddler>>/>\\n\\\\end\\n\\\\define actions()\\n\u003C%if [\u003CfocusedTiddler>!is[blank]then\u003Ctv-story-list>!match[$:/StoryList-1]] %>\\n\\t\u003C$let scrollTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] }}}>\\n\\t\\t\u003C$action-setfield $tiddler={{{ [[$:/state/tiddlyflex/removing/]addsuffix\u003CfocusedTiddler>] }}} direction=\\\"left\\\" column=\u003C\u003CcurrentColumn>>/>\\n\\t\\t\u003C$action-setfield $tiddler={{{ [[$:/state/tiddlyflex/adding/]addsuffix\u003CfocusedTiddler>] }}} direction=\\\"right\\\" column={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>before\u003CcurrentColumn>] }}}/>\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] }}}/>\\n\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CfocusedTiddler>]\\\"/>\\n\\t\\t\u003C%if [\u003CpreviousHistoryList>get[current-tiddler]!match[]] %>\\n\\t\\t\\t\u003C$set name=\\\"previousStoryFocusedTiddler\\\" value={{{ [\u003CpreviousHistoryList>get[current-tiddler]] }}}>\\n\\t\\t\\t\\t\u003C%if [\u003CpreviousStoryList>contains\u003CpreviousStoryFocusedTiddler>] %>\\n\\t\\t\\t\\t\\t\u003C%if [list\u003CpreviousStoryList>search:$(searchFields)$:$(searchFlags)${$:/temp/search/input}match\u003CpreviousStoryFocusedTiddler>then{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CpreviousStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CpreviousStoryFocusedTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C% elseif [{$:/state/tiddlyflex/story-river/filter}!match[yes]] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CpreviousStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CpreviousStoryFocusedTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C% else %>\\n\\t\\t\\t\\t\\t\\t\u003C$set name=\\\"firstFilteredStoryTiddler\\\" value={{{ [list\u003CpreviousStoryList>search{$:/temp/search/input}nth[1]] }}}>\\n\\t\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CpreviousStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CfirstFilteredStoryTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003CpreviousHistoryList>> current-tiddler=\u003C\u003CfocusedTiddler>>/>\\n\\t\\t\\t\\t\u003C% else %>\\n\\t\\t\\t\\t\\t\u003C\u003Ccurrent-tiddler-is-empty-message>>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C\u003Ccurrent-tiddler-is-empty-message>>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C%if [{$:/config/tiddlyflex/story-river/follow-current-column}match[yes]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/columns\\\" current-column=\u003C\u003CpreviousStoryCounter>>/>\\n\\t\\t\\t\u003C%if [\u003CfocusedTiddler>is[draft]] %>\\n\\t\\t\\t\\t\u003C$let currentColumn=\u003C\u003CpreviousStoryCounter>> cssEscapedTitle={{{ [\u003CfocusedTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$let currentTiddler={{{ [list\u003Ctv-story-list>after\u003CfocusedTiddler>] ~[list\u003Ctv-story-list>before\u003CfocusedTiddler>] }}} cssEscapedTitle={{{ [\u003CcurrentTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C%if [\u003CcurrentTiddler>is[draft]] %>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C$let currentColumn=\u003C\u003CpreviousStoryCounter>> cssEscapedTitle={{{ [\u003CfocusedTiddler>escapecss[]] }}}>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-scroll-to-tiddler>>\\n\\t\\t\u003C/$let>\\n\\t\u003C/$let>\\n\u003C% endif %>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-multi-column-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-right\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-right\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((move-right))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure current-tiddler-is-empty-message()\\n\u003C$action-listops $tiddler=\u003C\u003CnextStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CfirstNextStoryTiddler>]\\\"/>\\n\u003C$action-setfield $tiddler=\u003C\u003CnextHistoryList>> current-tiddler=\u003C\u003CfocusedTiddler>>/>\\n\\\\end\\n\\\\define actions()\\n\u003C%if [\u003CfocusedTiddler>!is[blank]then\u003CcurrentColumn>!match\u003ClastColumn>] %>\\n\\t\u003C$let scrollTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] }}}>\\n\\t\\t\u003C$action-setfield $tiddler={{{ [[$:/state/tiddlyflex/removing/]addsuffix\u003CfocusedTiddler>] }}} direction=\\\"right\\\" column=\u003C\u003CcurrentColumn>>/>\\n\\t\\t\u003C$action-setfield $tiddler={{{ [[$:/state/tiddlyflex/adding/]addsuffix\u003CfocusedTiddler>] }}} direction=\\\"left\\\" column={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>after\u003CcurrentColumn>] }}}/>\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] }}}/>\\n\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CfocusedTiddler>]\\\"/>\\n\\t\\t\u003C%if [\u003CnextHistoryList>get[current-tiddler]!match[]] %>\\n\\t\\t\\t\u003C$set name=\\\"nextStoryFocusedTiddler\\\" value={{{ [\u003CnextHistoryList>get[current-tiddler]] }}}>\\n\\t\\t\\t\\t\u003C%if [\u003CnextStoryList>contains\u003CnextStoryFocusedTiddler>] %>\\n\\t\\t\\t\\t\\t\u003C%if [list\u003CnextStoryList>search:$(searchFields)$:$(searchFlags)${$:/temp/search/input}match\u003CnextStoryFocusedTiddler>then{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CnextStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CnextStoryFocusedTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C% elseif [{$:/state/tiddlyflex/story-river/filter}!match[yes]] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CnextStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CnextStoryFocusedTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C% else %>\\n\\t\\t\\t\\t\\t\\t\u003C$set name=\\\"firstStoryTiddler\\\" value={{{ [list\u003CnextStoryList>nth[1]] }}}>\\n\\t\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CnextStoryList>> $subfilter=\\\"+[insertbefore\u003CfocusedTiddler>,\u003CfirstStoryTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003CnextHistoryList>> current-tiddler=\u003C\u003CfocusedTiddler>>/>\\n\\t\\t\\t\\t\u003C% else %>\\n\\t\\t\\t\\t\\t\u003C\u003Ccurrent-tiddler-is-empty-message>>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C\u003Ccurrent-tiddler-is-empty-message>>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C%if [{$:/config/tiddlyflex/story-river/follow-current-column}match[yes]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/columns\\\" current-column=\u003C\u003CnextStoryCounter>>/>\\n\\t\\t\\t\u003C%if [\u003CfocusedTiddler>is[draft]] %>\\n\\t\\t\\t\\t\u003C$let currentColumn=\u003C\u003CnextStoryCounter>> cssEscapedTitle={{{ [\u003CfocusedTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C$let currentColumn=\u003C\u003CnextStoryCounter>> cssEscapedTitle={{{ [\u003CfocusedTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-scroll-to-tiddler>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$let currentTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] }}} cssEscapedTitle={{{ [\u003CcurrentTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C%if [\u003CcurrentTiddler>is[draft]] %>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$let>\\n\u003C% endif %>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-multi-column-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-up\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/move-up\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((move-up))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\define actions()\\n\u003C$set name=\\\"previousTiddler\\\" value={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[before\u003CcurrentTiddler>] }}}>\\n\\t\u003C%if [\u003CpreviousTiddler>!is[blank]!match[]] %>\\n\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore:previousTiddler\u003CcurrentTiddler>]\\\"/>\\n\\t\u003C% endif %>\\n\u003C/$set>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/navigate-down\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/navigate-down\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((navigate-down))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure actions-inner()\\n\u003C%if [\u003CnextTiddler>!is[blank]!match[]] %>\\n\\t\u003C%if [\u003CnextTiddler>is[draft]] %>\\n\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-focus-flexcontainer>>\\n\\t\u003C% endif %>\\n\\t\u003C$action-navigate $to=\u003C\u003CnextTiddler>>/>\\n\u003C% endif %>\\n\\\\end\\n\\\\define actions()\\n\u003C%if [{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\u003C$set name=\\\"focusedTiddler\\\" value={{{ [\u003Ctv-history-list>get[current-tiddler]] }}}>\\n\\t\\t\u003C%if [subfilter\u003Ctdff.tiddlyflex-story-river-filter>match\u003CfocusedTiddler>] %>\\n\\t\\t\\t\u003C$let nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>nth[1]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Cactions-inner>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$let nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>nth[1]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Cactions-inner>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$set>\\n\u003C% else %>\\n\\t\u003C$let focusedTiddler={{{ [\u003Ctv-history-list>get[current-tiddler]] }}} nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>after\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>nth[1]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\u003C\u003Cactions-inner>>\\n\\t\u003C/$let>\\n\u003C% endif %>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/navigate-up\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/navigate-up\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((navigate-up))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/selectors $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure actions-inner()\\n\u003C%if [\u003CnextTiddler>!is[blank]!match[]] %>\\n\\t\u003C%if [\u003CnextTiddler>is[draft]] %>\\n\\t\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-focus-flexcontainer>>\\n\\t\u003C% endif %>\\n\\t\u003C$action-navigate $to=\u003C\u003CnextTiddler>>/>\\n\u003C% endif %>\\n\\\\end\\n\\\\define actions()\\n\u003C%if [{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\u003C$set name=\\\"focusedTiddler\\\" value={{{ [\u003Ctv-history-list>get[current-tiddler]] }}}>\\n\\t\\t\u003C%if [subfilter\u003Ctdff.tiddlyflex-story-river-filter>match\u003CfocusedTiddler>] %>\\n\\t\\t\\t\u003C$let nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>last[]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Cactions-inner>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$let nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>last[]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Cactions-inner>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$set>\\n\u003C% else %>\\n\\t\u003C$let focusedTiddler={{{ [\u003Ctv-history-list>get[current-tiddler]] }}} nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>before\u003CfocusedTiddler>] ~[subfilter\u003Ctdff.tiddlyflex-story-river-filter>last[]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\u003C\u003Cactions-inner>>\\n\\t\u003C/$let>\\n\u003C% endif %>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/core/ui/KeyboardShortcuts/new-image\":{\"title\":\"$:/core/ui/KeyboardShortcuts/new-image\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((new-image))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure actions()\\n{{$:/core/ui/Actions/new-image}}\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]limit[1]] %>\\n\\t\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\\t\u003C% endif %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-simple-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\u003C% else %>\\n\\t\u003C$navigator story=\\\"$:/StoryList\\\" history=\\\"$:/HistoryList\\\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\u003C\u003Cactions>>\\n\\t\u003C/$navigator>\\n\u003C% endif %>\"},\"$:/core/ui/KeyboardShortcuts/new-journal\":{\"title\":\"$:/core/ui/KeyboardShortcuts/new-journal\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((new-journal))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure actions()\\n{{$:/core/ui/Actions/new-journal}}\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]limit[1]] %>\\n\\t\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\\t\u003C% endif %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-simple-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\u003C% else %>\\n\\t\u003C$navigator story=\\\"$:/StoryList\\\" history=\\\"$:/HistoryList\\\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\u003C\u003Cactions>>\\n\\t\u003C/$navigator>\\n\u003C% endif %>\"},\"$:/core/ui/KeyboardShortcuts/new-tiddler\":{\"title\":\"$:/core/ui/KeyboardShortcuts/new-tiddler\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((new-tiddler))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/privates/navigation $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure actions()\\n{{$:/core/ui/Actions/new-tiddler}}\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]limit[1]] %>\\n\\t\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\\t\u003C% endif %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-simple-keyboard-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\u003C% else %>\\n\\t\u003C$navigator story=\\\"$:/StoryList\\\" history=\\\"$:/HistoryList\\\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\u003C\u003Cactions>>\\n\\t\u003C/$navigator>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/remove-column\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/KeyboardShortcuts/remove-column\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((remove-column))\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\\\\procedure remove-column-actions()\\n\u003C$set name=\\\"columnCount\\\" value={{{ [list[$:/columns]count[]] }}}>\\n\\t\u003C$list filter=\\\"[[$:/columns]get[current-column]match\u003CcolumnCount>]\\\">\\n\\t\\t\u003C$action-setfield $tiddler=\\\"$:/columns\\\" current-column={{{ [\u003CcolumnCount>subtract[1]!match[0]] ~1 }}}/>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[\u003CcolumnCount>!match[1]]\\\">\\n\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"-[\u003CcolumnCount>]\\\"/>\\n\\t\u003C/$list>\\n\u003C/$set>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [function[tiddlyflex-fullscreen]is[blank]] %>\\n\\t\\t\u003C$let columns={{{ [list[$:/columns]count[]] ~1 }}}>\\n\\t\\t\\t\u003C\u003Cremove-column-actions>>\\n\\t\\t\u003C/$let>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/core/ui/KeyboardShortcuts/toggle-sidebar\":{\"title\":\"$:/core/ui/KeyboardShortcuts/toggle-sidebar\",\"tags\":\"$:/tags/KeyboardShortcut\",\"key\":\"((toggle-sidebar))\",\"text\":\"\\\\whitespace trim\\n\u003C%if [[$:/state/sidebar]is[missing]] [{$:/state/sidebar}match[yes]] %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/sidebar\\\" text=\\\"no\\\"/>\\n\u003C% else %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/sidebar\\\" text=\\\"yes\\\"/>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/StartupActions/current-tiddlers\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/StartupActions/current-tiddlers\",\"tags\":\"$:/tags/StartupAction/Browser\",\"text\":\"\\\\import $:/plugins/BTC/TiddlyFlex/globals/layout/functions\\n\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>]\\\" variable=\\\"column\\\">\\n\\t\u003C$let tv-story-list={{{ [[$:/StoryList-]addsuffix\u003Ccolumn>!match[$:/StoryList-]] ~$:/StoryList-1 }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003Ccolumn>!match[$:/HistoryList-]] ~$:/HistoryList-1 }}} currentTiddler={{{ [list\u003Ctv-story-list>nth[1]] }}}>\\n\\t\\t\u003C%if [\u003CcurrentTiddler>!is[blank]!match[]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CcurrentTiddler>>/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$let>\\n\u003C/$list>\"},\"$:/config/DefaultColourMappings/tiddlyflex-box-shadow\":{\"title\":\"$:/config/DefaultColourMappings/tiddlyflex-box-shadow\",\"text\":\"rgba(0,0,0,0.6)\"},\"$:/config/DefaultColourMappings/tiddlyflex-sidebar-resizer\":{\"title\":\"$:/config/DefaultColourMappings/tiddlyflex-sidebar-resizer\",\"text\":\"rgba(0,0,0,0.2)\"},\"$:/config/ShortcutInfo/add-column\":{\"title\":\"$:/config/ShortcutInfo/add-column\",\"text\":\"Add one more column\"},\"$:/config/ShortcutInfo/cancel-close-tiddler\":{\"title\":\"$:/config/ShortcutInfo/cancel-close-tiddler\",\"text\":\"Cancel or close the current tiddler\"},\"$:/config/ShortcutInfo/column-down\":{\"title\":\"$:/config/ShortcutInfo/column-down\",\"text\":\"Select the next column at the left\"},\"$:/config/ShortcutInfo/column-up\":{\"title\":\"$:/config/ShortcutInfo/column-up\",\"text\":\"Select the next column at the right\"},\"$:/config/ShortcutInfo/dragging\":{\"title\":\"$:/config/ShortcutInfo/dragging\",\"text\":\"Toggle dragging on or off\"},\"$:/config/ShortcutInfo/edit-tiddler\":{\"title\":\"$:/config/ShortcutInfo/edit-tiddler\",\"text\":\"Edit the current tiddler\"},\"$:/config/ShortcutInfo/filter-river\":{\"title\":\"$:/config/ShortcutInfo/filter-river\",\"text\":\"Filter the story river by the search input\"},\"$:/config/ShortcutInfo/fullscreen\":{\"title\":\"$:/config/ShortcutInfo/fullscreen\",\"text\":\"Toggle fullscreen view of the current tiddler\"},\"$:/config/ShortcutInfo/move-down\":{\"title\":\"$:/config/ShortcutInfo/move-down\",\"text\":\"Move the current tiddler down\"},\"$:/config/ShortcutInfo/move-left\":{\"title\":\"$:/config/ShortcutInfo/move-left\",\"text\":\"Move the current tiddler to the left\"},\"$:/config/ShortcutInfo/move-right\":{\"title\":\"$:/config/ShortcutInfo/move-right\",\"text\":\"Move the current tiddler to the right\"},\"$:/config/ShortcutInfo/move-up\":{\"title\":\"$:/config/ShortcutInfo/move-up\",\"text\":\"Move the current tiddler up\"},\"$:/config/ShortcutInfo/navigate-down\":{\"title\":\"$:/config/ShortcutInfo/navigate-down\",\"text\":\"Navigate down to the next tiddler\"},\"$:/config/ShortcutInfo/navigate-up\":{\"title\":\"$:/config/ShortcutInfo/navigate-up\",\"text\":\"Navigate up to the next tiddler\"},\"$:/config/ShortcutInfo/remove-column\":{\"title\":\"$:/config/ShortcutInfo/remove-column\",\"text\":\"Remove one column\"},\"$:/config/shortcuts/add-column\":{\"title\":\"$:/config/shortcuts/add-column\",\"text\":\"ctrl-alt-N\"},\"$:/config/shortcuts/cancel-close-tiddler\":{\"title\":\"$:/config/shortcuts/cancel-close-tiddler\",\"text\":\"alt-C\"},\"$:/config/shortcuts/column-down\":{\"title\":\"$:/config/shortcuts/column-down\",\"text\":\"alt-Left\"},\"$:/config/shortcuts/column-up\":{\"title\":\"$:/config/shortcuts/column-up\",\"text\":\"alt-Right\"},\"$:/config/shortcuts/dragging\":{\"title\":\"$:/config/shortcuts/dragging\",\"text\":\"alt-D\"},\"$:/config/shortcuts/edit-tiddler\":{\"title\":\"$:/config/shortcuts/edit-tiddler\",\"text\":\"alt-E\"},\"$:/config/shortcuts/filter-river\":{\"title\":\"$:/config/shortcuts/filter-river\",\"text\":\"alt-F\"},\"$:/config/shortcuts/fullscreen\":{\"title\":\"$:/config/shortcuts/fullscreen\",\"text\":\"alt-shift-F\"},\"$:/config/shortcuts/move-down\":{\"title\":\"$:/config/shortcuts/move-down\",\"text\":\"alt-shift-Down\"},\"$:/config/shortcuts/move-left\":{\"title\":\"$:/config/shortcuts/move-left\",\"text\":\"alt-shift-Left\"},\"$:/config/shortcuts/move-right\":{\"title\":\"$:/config/shortcuts/move-right\",\"text\":\"alt-shift-Right\"},\"$:/config/shortcuts/move-up\":{\"title\":\"$:/config/shortcuts/move-up\",\"text\":\"alt-shift-Up\"},\"$:/config/shortcuts/navigate-down\":{\"title\":\"$:/config/shortcuts/navigate-down\",\"text\":\"alt-Down\"},\"$:/config/shortcuts/navigate-up\":{\"title\":\"$:/config/shortcuts/navigate-up\",\"text\":\"alt-Up\"},\"$:/config/shortcuts/remove-column\":{\"title\":\"$:/config/shortcuts/remove-column\",\"text\":\"ctrl-alt-M\"},\"$:/config/ViewToolbarButtons/Visibility/$:/plugins/BTC/TiddlyFlex/ui/Buttons/fullscreen\":{\"title\":\"$:/config/ViewToolbarButtons/Visibility/$:/plugins/BTC/TiddlyFlex/ui/Buttons/fullscreen\",\"text\":\"hide\"},\"$:/config/tiddlyflex/dragndrop/AnimationDuration\":{\"title\":\"$:/config/tiddlyflex/dragndrop/AnimationDuration\",\"text\":\"175\"},\"$:/config/tiddlyflex/navigation/edit-missing-tiddlers\":{\"title\":\"$:/config/tiddlyflex/navigation/edit-missing-tiddlers\",\"text\":\"no\"},\"$:/config/tiddlyflex/sidebar/resizer\":{\"title\":\"$:/config/tiddlyflex/sidebar/resizer\",\"text\":\"no\"},\"$:/config/tiddlyflex/sidebar/width\":{\"title\":\"$:/config/tiddlyflex/sidebar/width\",\"text\":\"15%\"},\"$:/config/tiddlyflex/story-river/dynanode/timeout\":{\"title\":\"$:/config/tiddlyflex/story-river/dynanode/timeout\",\"text\":\"25\"},\"$:/config/tiddlyflex/story-river/dynanode\":{\"title\":\"$:/config/tiddlyflex/story-river/dynanode\",\"text\":\"no\"},\"$:/config/tiddlyflex/story-river/filter/fields\":{\"title\":\"$:/config/tiddlyflex/story-river/filter/fields\",\"text\":\"*\"},\"$:/config/tiddlyflex/story-river/filter/flags\":{\"title\":\"$:/config/tiddlyflex/story-river/filter/flags\",\"text\":\"words\"},\"$:/config/tiddlyflex/story-river/follow-current-column\":{\"title\":\"$:/config/tiddlyflex/story-river/follow-current-column\",\"text\":\"yes\"},\"$:/config/tiddlyflex/story-river/min-width\":{\"title\":\"$:/config/tiddlyflex/story-river/min-width\",\"text\":\"300px\"},\"$:/config/tiddlyflex/story-river/padding\":{\"title\":\"$:/config/tiddlyflex/story-river/padding\",\"text\":\"42px\"},\"$:/config/tiddlyflex/story-river/tiddler/ClassFilters/adding\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/ClassFilters/adding\",\"tags\":\"$:/tags/ClassFilters/TiddlerTemplate\",\"text\":\"[\u003C..currentTiddler>addprefix[$:/state/tiddlyflex/adding/]!is[missing]then[tc-tiddlyflex-adding]]\"},\"$:/config/tiddlyflex/story-river/tiddler/ClassFilters/removing\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/ClassFilters/removing\",\"tags\":\"$:/tags/ClassFilters/TiddlerTemplate\",\"text\":\"[\u003C..currentTiddler>addprefix[$:/state/tiddlyflex/removing/]!is[missing]then[tc-tiddlyflex-removing]]\"},\"$:/config/tiddlyflex/story-river/tiddler/EditTemplate/StoryTiddlerTemplateFilter\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/EditTemplate/StoryTiddlerTemplateFilter\",\"tags\":\"$:/tags/StoryTiddlerTemplateFilter\",\"list-before\":\"\",\"text\":\"[is[draft]then{$:/layout}match[$:/plugins/BTC/TiddlyFlex/ui/Layout]then[$:/plugins/BTC/TiddlyFlex/ui/Templates/EditTemplate]]\"},\"$:/config/tiddlyflex/story-river/tiddler/ViewTemplate/StoryTiddlerTemplateFilter\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/ViewTemplate/StoryTiddlerTemplateFilter\",\"tags\":\"$:/tags/StoryTiddlerTemplateFilter\",\"list-before\":\"\",\"text\":\"[!is[draft]then{$:/layout}match[$:/plugins/BTC/TiddlyFlex/ui/Layout]then[$:/plugins/BTC/TiddlyFlex/ui/Templates/ViewTemplate]]\"},\"$:/config/tiddlyflex/story-river/tiddler/box-shadow-spread\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/box-shadow-spread\",\"text\":\"4px\"},\"$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar\",\"text\":\"3\"},\"$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint\",\"text\":\"4\"},\"$:/config/tiddlyflex/story-river/tiddler/margin-bottom\":{\"title\":\"$:/config/tiddlyflex/story-river/tiddler/margin-bottom\",\"text\":\"28px\"},\"$:/plugins/BTC/TiddlyFlex/styles/base\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/base\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\".tc-tiddlyflex-container {\\n\\tdisplay: flex;\\n\\tflex-flow: column;\\n\\tjustify-content: flex-start;\\n\\talign-items: stretch;\\n\\theight: 100vh;\\n\\tmax-height: 100vh;\\n\\twidth: 100vw;\\n\\tmax-width: 100vw;\\n\\toutline: none;\\n\\toverflow: clip;\\n}\\n\\n.tc-tiddlyflex-main-wrapper {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-grow: 1;\\n}\\n\\n.tc-tiddlyflex-main {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-grow: 0;\\n\\tflex-shrink: 1;\\n\\tflex-basis: 100%;\\n\\tmax-height: 100%;\\n\\tmax-width: 100%;\\n\\tposition: relative;\\n}\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-main {\\n\\t\\t-webkit-transition: max-width {{$:/config/AnimationDuration}}ms linear;\\n\\t\\ttransition: max-width {{$:/config/AnimationDuration}}ms linear;\\n\\t}\\n\\n}\\n\\n\u003C% if [{$:/state/sidebar}match[no]] %>\\n\\n\\t.tc-tiddlyflex-main {\\n\\t\\t\u003C!--max-width: calc(100% + ((100vw / 100) * {{{ [{$:/config/tiddlyflex/sidebar/width}removesuffix[%]] ~[{$:/config/tiddlyflex/sidebar/width}removesuffix[px]] }}}));-->\\n\\t\\tmax-width: calc(100% + {{$:/config/tiddlyflex/sidebar/width}});\\n\\t}\\n\\n\u003C% endif %>\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-main {\\n\\t\\toverflow-x: clip;\\n\\t}\\n\\n}\\n\\n.tc-tiddlyflex-header {\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\tbox-shadow: 0 1px 5px -1px \u003C\u003Ccolour tiddlyflex-box-shadow>>;\\n\\tz-index: 999;\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n}\\n\\n.tc-tiddlyflex-footer {\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\tbox-shadow: 0 -1px 5px -1px \u003C\u003Ccolour tiddlyflex-box-shadow>>;\\n\\tz-index: 999;\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n}\\n\\n.tc-tiddlyflex-leftbar {\\n\\tdisplay: flex;\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\tbox-shadow: 1px 0 5px -1px \u003C\u003Ccolour tiddlyflex-box-shadow>>;;\\n\\tz-index: 998;\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n}\\n\\n/***************/\\n/* STORY RIVER */\\n/***************/\\n\\n.tc-tiddlyflex-story-river-container {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: stretch;\\n\\tflex-grow: 1;\\n\\tflex-shrink: 0;\\n\\tflex-basis: 100%;\\n\\toverflow: hidden;\\n\\tmax-height: 100%;\\n\\tmax-width: 100%;\\n}\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-story-river-container {\\n\\t\\t-webkit-transition: flex-basis {{$:/config/AnimationDuration}}ms linear, max-width {{$:/config/AnimationDuration}}ms linear;\\n\\t\\ttransition: flex-basis {{$:/config/AnimationDuration}}ms linear, max-width {{$:/config/AnimationDuration}}ms linear;\\n\\t}\\n\\n}\\n\\n\u003C%if [{$:/state/sidebar}!match[no]] %>\\n\\n\\t.tc-tiddlyflex-story-river-container {\\n\\t\\tflex-basis: calc(100% - {{$:/config/tiddlyflex/sidebar/width}});\\n\\t\\tmax-width: calc(100% - {{$:/config/tiddlyflex/sidebar/width}});\\n\\t}\\n\\n\u003C% endif %>\\n\\n\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\n\\t.tc-tiddlyflex-story-river-container {\\n\\t\\t-webkit-transition: none;\\n\\t\\ttransition: none;\\n\\t}\\n\\n\u003C% endif %>\\n\\n\u003C%if [{$:/config/tiddlyflex/sidebar/resizer}match[yes]then[$:/state/sidebar/posx]!is[missing]] %>\\n\\n\\t\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\n\\t\\t.tc-tiddlyflex-story-river-container {\\n\\t\\t\\tflex-basis: max(max(calc({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px)),calc({{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]] }}} * {{$:/config/tiddlyflex/story-river/min-width}})),calc(100% - (100% - ({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px)))));\\n\\t\\t}\\n\\n\\t\u003C% else %>\\n\\n\\t\\t.tc-tiddlyflex-story-river-container {\\n\\t\\t\\tflex-basis: max(max(calc({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px)),calc({{$:/state/sidebar/posx!!column-count}} * {{$:/config/tiddlyflex/story-river/min-width}})),calc(100% - (100% - ({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px)))));\\n\\t\\t}\\n\\n\\t\u003C% endif %>\\n\\n\u003C% endif %>\\n\\n\u003C%if [{$:/state/sidebar}match[no]] %>\\n\\n\\t.tc-tiddlyflex-story-river-container {\\n\\t\\tflex-basis: 100%;\\n\\t}\\n\\n\u003C% endif %>\\n\\n.tc-tiddlyflex-story-river-container-inner {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: flex-start;\\n\\talign-items: stretch;\\n\\tmax-height: 100%;\\n\\tflex-grow: 1;\\n\\tflex-shrink: 0;\\n}\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-story-river-container-inner {\\n\\t\\toverflow: hidden;\\n\\t\\tflex-basis: 0;\\n\\t}\\n\\n}\\n\\n.tc-tiddlyflex-story-river-wrapper {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tflex-shrink: 0;\\n\\tflex-grow: 1;\\n\\toverflow: hidden;\\n}\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-story-river-wrapper {\\n\\t\\tflex-basis: 0;\\n\\t}\\n\\n}\\n\\n.tc-tiddlyflex-story-river-wrapper-inner {\\n\\tflex-grow: 1;\\n\\tflex-shrink: 1;\\n\\toverflow-y: auto;\\n\\tscroll-behavior: smooth;\\n\\tz-index: 600;\\n}\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-story-river-wrapper-inner {\\n\\t\\tflex-basis: 0;\\n\\t}\\n\\n}\\n\\n.tc-tiddlyflex-story-river-wrapper .tc-tiddler-frame {\\n\\twidth: 100%;\\n\\tmargin-bottom: 0;\\n\\t-webkit-box-shadow: 0 0 {{$:/config/tiddlyflex/story-river/tiddler/box-shadow-spread}} \u003C\u003Ccolour tiddlyflex-box-shadow>>;\\n\\tbox-shadow: 0 0 {{$:/config/tiddlyflex/story-river/tiddler/box-shadow-spread}} \u003C\u003Ccolour tiddlyflex-box-shadow>>;\\n}\\n\\n.tc-tiddlyflex-story-river-wrapper-inner .tc-tiddlyflex-story-river {\\n\\tpadding: {{$:/config/tiddlyflex/story-river/padding}};\\n\\tmin-height: 100%;\\n}\\n\\n.tc-tiddlyflex-story-river-inner > .tc-tiddler-view-frame, .tc-tiddlyflex-story-river-inner > .tc-tiddler-edit-frame {\\n\\tmargin-bottom: {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}};\\n}\\n\\n.tc-tiddlyflex-story-river .tc-navigating .tc-tiddler-frame {\\n\\tborder: 2px dashed \u003C\u003Ccolour primary>>;\\n}\\n\\n/***********/\\n/* SIDEBAR */\\n/***********/\\n\\n.tc-tiddlyflex-sidebar {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: stretch;\\n\\tflex-grow: 0;\\n\\tflex-shrink: 0;\\n\\tmax-height: 100%;\\n\\tz-index: 998;\\n\\t-webkit-box-shadow: 0px 0px 5px 0px \u003C\u003Ccolour tiddlyflex-box-shadow>>;\\n\\tbox-shadow: 0px 0px 5px 0px \u003C\u003Ccolour tiddlyflex-box-shadow>>;\\n}\\n\\n@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-sidebar {\\n\\t\\twidth: {{$:/config/tiddlyflex/sidebar/width}};\\n\\t\\t-webkit-transition: box-shadow {{$:/config/AnimationDuration}}ms linear;\\n\\t\\ttransition: box-shadow {{$:/config/AnimationDuration}}ms linear;\\n\\t}\\n\\n}\\n\\n\u003C%if [{$:/config/tiddlyflex/sidebar/resizer}match[yes]then[$:/state/sidebar/posx]!is[missing]] %>\\n\\n\\t\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\n\\t\\t.tc-tiddlyflex-sidebar {\\n\\t\\t\\twidth: max(min(max(calc(100% - ({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px))),{{$:/config/tiddlyflex/sidebar/width}}),calc(100% - ({{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]] }}} * {{$:/config/tiddlyflex/story-river/min-width}}))),{{$:/config/tiddlyflex/sidebar/width}});\\n\\t\\t}\\n\\n\\t\u003C% else %>\\n\\n\\t\\t.tc-tiddlyflex-sidebar {\\n\\t\\t\\twidth: max(min(max(calc(100% - ({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px))),{{$:/config/tiddlyflex/sidebar/width}}),calc(100% - ({{$:/state/sidebar/posx!!column-count}} * {{$:/config/tiddlyflex/story-river/min-width}}))),{{$:/config/tiddlyflex/sidebar/width}});\\n\\t\\t}\\n\\n\\t\u003C% endif %>\\n\\n\u003C% endif %>\\n\\n\u003C%if [{$:/state/sidebar}match[no]] %>\\n\\n\\t.tc-tiddlyflex-sidebar {\\n\\t\\t-webkit-box-shadow: 0px 0px 0px 0px transparent;\\n\\t\\tbox-shadow: 0px 0px 0px 0px transparent;\\n\\t}\\n\\n\u003C% endif %>\\n\\n.tc-tiddlyflex-sidebar-container {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tjustify-content: flex-start;\\n\\talign-items: stretch;\\n\\tmax-height: 100%;\\n\\tflex-grow: 1;\\n\\tflex-shrink: 0;\\n}\\n\\n.tc-tiddlyflex-sidebar-container-inner {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n\\tflex-shrink: 0;\\n\\toverflow-y: auto;\\n\\tscroll-behavior: smooth;\\n\\tflex-basis: 0;\\n\\tflex-direction: row;\\n}\\n\\n.tc-tiddlyflex-sidebar-scrollable {\\n\\tpadding-top: 42px;\\n\\tpadding-left: 42px;\\n\\tmin-width: 100%;\\n}\\n\\n.tc-tiddlyflex-sidebar-shown-eventcatcher {\\n\\t-webkit-tap-highlight-color: transparent;\\n\\t-webkit-touch-callout: none;\\n\\t-webkit-user-select: none;\\n\\t-khtml-user-select: none;\\n\\t-moz-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none;\\n}\\n\\n.tc-tiddlyflex-sidebar-hide {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tbottom: 0;\\n\\tright: 0;\\n\\twidth: 100vw;\\n\\theight: 100vh;\\n\\tbackground: 0 0;\\n\\tvisibility: hidden;\\n\\tz-index: 1000;\\n\\tcursor: pointer;\\n\\t-webkit-transition: background {{$:/config/AnimationDuration}}ms {{$:/config/AnimationDuration}}ms, visibility 0s calc(2 * {{$:/config/AnimationDuration}}ms);\\n\\ttransition: background {{$:/config/AnimationDuration}}ms {{$:/config/AnimationDuration}}ms, visibility 0s calc(2 * {{$:/config/AnimationDuration}}ms);\\n}\\n\\n/******************/\\n/* ACTIVE COLUMNS */\\n/******************/\\n\\n.tc-tiddlyflex-story-river-active {\\n\\tbackground: repeating-linear-gradient(\\n\\t\\tto right,\\n\\t\\t\u003C\u003Ccolour page-background>>,\\n\\t\\t\u003C\u003Ccolour page-background>> 10px,\\n\\t\\t\u003C\u003Ccolour tiddler-background>> 10px,\\n\\t\\t\u003C\u003Ccolour tiddler-background>> 20px\\n\\t);\\n}\\n\\n.tc-tiddlyflex-activate-column {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\theight: 100%;\\n\\tcursor: default;\\n\\tbackground-color: transparent;\\n\\t-webkit-tap-highlight-color: transparent;\\n\\t-webkit-touch-callout: none;\\n\\t-webkit-user-select: none;\\n\\t-khtml-user-select: none;\\n\\t-moz-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none;\\n}\\n\\n/*************/\\n/* DROPZONES */\\n/*************/\\n\\ndiv[class^=\\\"tc-tiddlyflex-dropzone-\\\"] {\\n\\tmin-height: 100%;\\n\\tposition: relative;\\n}\\n\\ndiv[class^=\\\"tc-tiddlyflex-dropzone-\\\"].tc-dragover:before {\\n\\tz-index: 999;\\n\\tdisplay: block;\\n\\tposition: sticky;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbackground: \u003C\u003Ccolour dropzone-background>>;\\n\\ttext-align: center;\\n\\tcontent: \\\"\u003C\u003Clingo DropMessage>>\\\";\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/current-tiddler\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/current-tiddler\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define tiddlyflex-style-current-tiddler()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentColumn)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"]:not(.tc-navigating) > .tc-tiddler-frame {\\n\\tborder: 1px solid \u003C\u003Ccolour tiddlyflex-current-tiddler>>;\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-style-unfocused-tiddlers()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"]:not(.tc-navigating) > .tc-tiddler-frame {\\n\\tborder: 1px solid \u003C\u003Ccolour tiddlyflex-current-tiddler-muted>>;\\n}\\n\\n\\\\end\\n\\n\u003C$let currentColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] }}} historyList={{{ [[$:/HistoryList-]addsuffix\u003CcurrentColumn>!match[$:/HistoryList-]] ~[[$:/HistoryList-1]] }}}>\\n\\n\\t\u003C$set name=\\\"cssEscapedTitle\\\" value={{{ [\u003ChistoryList>get[current-tiddler]escapecss[]] }}}>\\n\\n\\t\\t\u003C\u003Ctiddlyflex-style-current-tiddler>>\\n\\n\\t\u003C/$set>\\n\\n\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>] +[!match\u003CcurrentColumn>]\\\" variable=\\\"column\\\">\\n\\n\\t\\t\u003C$let historyList={{{ [[$:/HistoryList-]addsuffix\u003Ccolumn>!match[$:/HistoryList-]] ~[[$:/HistoryList-1]] }}} cssEscapedTitle={{{ [\u003ChistoryList>get[current-tiddler]escapecss[]] }}}>\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-style-unfocused-tiddlers>>\\n\\n\\t\\t\u003C/$let>\\n\\n\\t\u003C/$list>\\n\\n\u003C/$let>\"},\"$:/plugins/BTC/TiddlyFlex/styles/dragndrop\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/dragndrop\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define tiddlyflex-tiddler-frame-transitions()\\n\\n.tc-tiddlyflex-story-river-inner > .tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-inner > .tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\ttransition: margin-top {{$:/config/tiddlyflex/dragndrop/AnimationDuration}}ms linear, margin-bottom {{$:/config/tiddlyflex/dragndrop/AnimationDuration}}ms linear;\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-position-start-tiddlers-no-copying()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(startingNextTiddlerCSSEscaped)$\\\"].tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(startingNextTiddlerCSSEscaped)$\\\"].tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\ttransition: none;\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(startingNextTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame {\\n\\tmargin-top: calc({{$:/state/dragging!!height}}px + (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) + 2px);\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(startingNextTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame .tc-tiddlyflex-droppable-top-half {\\n\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + {{$:/config/tiddlyflex/story-river/padding}} + {{$:/state/dragging!!height}}px + 2px);\\n\\ttop: calc(-{{$:/state/dragging!!height}}px - (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) - 2px);\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-position-start-tiddlers-no-copying-nth-0()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(startingNextTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame {\\n\\tmargin-top: calc({{$:/state/dragging!!height}}px + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + 2px);\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(startingNextTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame .tc-tiddlyflex-droppable-top-half {\\n\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + {{$:/config/tiddlyflex/story-river/padding}} + {{$:/state/dragging!!height}}px + 2px);\\n\\ttop: calc(-{{$:/state/dragging!!height}}px - {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} - {{$:/config/tiddlyflex/story-river/padding}} - 2px);\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-position-start-tiddlers-copying()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(dragTiddlerCSSEscaped)$\\\"].tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(dragTiddlerCSSEscaped)$\\\"].tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\ttransition: none;\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(dragTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame {\\n\\tmargin-top: calc({{$:/state/dragging!!height}}px + (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) + 2px);\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(dragTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame .tc-tiddlyflex-droppable-top-half {\\n\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + {{$:/config/tiddlyflex/story-river/padding}} + {{$:/state/dragging!!height}}px + 2px);\\n\\ttop: calc(-{{$:/state/dragging!!height}}px - (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) - 2px);\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-position-start-tiddlers-copying-nth-0()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(dragTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame {\\n\\tmargin-top: calc({{$:/state/dragging!!height}}px + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + 2px);\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(dragTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame .tc-tiddlyflex-droppable-top-half {\\n\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + {{$:/config/tiddlyflex/story-river/padding}} + {{$:/state/dragging!!height}}px + 2px);\\n\\ttop: calc(-{{$:/state/dragging!!height}}px - {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} - {{$:/config/tiddlyflex/story-river/padding}} - 2px);\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-target-tiddler-margin()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddler-view-frame:not([data-tiddler-title=\\\"$(targetTiddlerCSSEscaped)$\\\"]) .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddler-edit-frame:not([data-tiddler-title=\\\"$(targetTiddlerCSSEscaped)$\\\"]) .tc-tiddler-frame {\\n\\tmargin-top: calc( {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + 2px);\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddler-view-frame:first-of-type:not([data-tiddler-title=\\\"$(targetTiddlerCSSEscaped)$\\\"]) .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(currentRiver)$ .tc-tiddler-edit-frame:first-of-type:not([data-tiddler-title=\\\"$(targetTiddlerCSSEscaped)$\\\"]) .tc-tiddler-frame {\\n\\tmargin-top: 0;\\n}\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(targetTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame {\\n\\tmargin-top: calc({{$:/state/dragging!!height}}px + (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) + 2px);\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-target-tiddler-margin-nth-0()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(currentRiver)$ [data-tiddler-title=\\\"$(targetTiddlerCSSEscaped)$\\\"] .tc-tiddler-frame {\\n\\tmargin-top: calc({{$:/state/dragging!!height}}px + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + 2px);\\n}\\n\\n\\\\end\\n\\n\u003C%if [{$:/state/dragging}match[yes]] %>\\n\\n\\t.tc-tiddlyflex-droppable-top-half {\\n\\t\\tposition: absolute;\\n\\t\\ttop: calc( -{{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} - 2px);\\n\\t\\tleft: calc( -{{$:/config/tiddlyflex/story-river/padding}} - 1px);\\n\\t\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + 2px);\\n\\t\\twidth: calc(100% + (2 * {{$:/config/tiddlyflex/story-river/padding}}) + 2px);\\n\\t\\tdisplay: none;\\n\\t\\tz-index: 501;\\n\\t}\\n\\n\\t.tc-tiddler-view-frame:first-of-type .tc-tiddlyflex-droppable-top-half, .tc-tiddler-edit-frame:first-of-type .tc-tiddlyflex-droppable-top-half {\\n\\t\\ttop: calc( -{{$:/config/tiddlyflex/story-river/padding}} - 2px);\\n\\t\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/padding}} + 2px);\\n\\t}\\n\\n\\t.tc-tiddlyflex-droppable-bottom-half {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 50%;\\n\\t\\tleft: calc( -{{$:/config/tiddlyflex/story-river/padding}} - 1px);\\n\\t\\theight: calc(50% + 2px);\\n\\t\\twidth: calc(100% + (2 * {{$:/config/tiddlyflex/story-river/padding}}) + 2px);\\n\\t\\tz-index: 501;\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t.tc-tiddlyflex-droppable-top-half.tc-dragover {\\n\\t\\theight: calc(50% + (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) + {{$:/state/dragging!!height}}px + 2px);\\n\\t\\ttop: calc(-{{$:/state/dragging!!height}}px - (2 * {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}}) - 2px);\\n\\t}\\n\\n\\t.tc-tiddler-view-frame:first-of-type .tc-tiddlyflex-droppable-top-half.tc-dragover, .tc-tiddler-edit-frame:first-of-type .tc-tiddlyflex-droppable-top-half.tc-dragover {\\n\\t\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + {{$:/config/tiddlyflex/story-river/padding}} + {{$:/state/dragging!!height}}px + 2px);\\n\\t\\ttop: calc(-{{$:/state/dragging!!height}}px - {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} - {{$:/config/tiddlyflex/story-river/padding}} - 2px);\\n\\t}\\n\\n\\t.tc-tiddlyflex-droppable-bottom-half.tc-dragover {\\n\\t\\theight: calc(50% + {{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} + {{$:/state/dragging!!height}}px + 2px);\\n\\t}\\n\\n\\t\u003C%if [{$:/state/dragging}match[yes]] %>\\n\\n\\t\\t.tc-tiddlyflex-droppable-top-half, .tc-tiddlyflex-droppable-bottom-half {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t\u003C$set name=\\\"dragTiddler\\\" value={{$:/state/dragging!!drag-tiddler}}>\\n\\n\\t\\t\\t\u003C$set name=\\\"dragTiddlerCSSEscaped\\\" value={{{ [\u003CdragTiddler>escapecss[]] }}}>\\n\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-tiddler-frame-transitions>>\\n\\n\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\u003C/$set>\\n\\n\\t\u003C% endif %>\\n\\n\\t\u003C$let currentRiver={{$:/state/dragging!!river}} story={{{ [[$:/StoryList-]addsuffix\u003CcurrentRiver>] }}} targetTiddler={{$:/state/dragging!!target}} nextTiddler={{{ [list\u003Cstory>after\u003CtargetTiddler>] }}} margin={{$:/state/dragging!!margin}} targetTiddlerCSSEscaped={{{ [\u003Cmargin>match[top]then\u003CtargetTiddler>escapecss[]] [\u003Cmargin>match[bottom]then\u003CnextTiddler>escapecss[]] }}}>\\n\\n\\t\\t\u003C\u003Ctiddlyflex-target-tiddler-margin>>\\n\\n\\t\\t\u003C%if [{$:/state/dragging!!nth}match[0]] %>\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-target-tiddler-margin-nth-0>>\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\u003C/$let>\\n\\n\\t.tc-tiddlyflex-below-story-river-droppable {\\n\\t\\tposition: absolute;\\n\\t\\twidth: calc(100% + {{$:/config/tiddlyflex/story-river/padding}});\\n\\t\\theight: calc(100% + {{$:/config/tiddlyflex/story-river/padding}});\\n\\t\\tleft: -{{$:/config/tiddlyflex/story-river/padding}};\\n\\t\\ttop: -{{$:/config/tiddlyflex/story-river/padding}};\\n\\t}\\n\\n\\t\u003C$let currentRiver={{$:/state/dragging!!start-river}} dragTiddler={{$:/state/dragging!!drag-tiddler}} startingNextTiddler={{$:/state/dragging!!starting-next-tiddler}} startingNextTiddlerCSSEscaped={{{ [\u003CstartingNextTiddler>escapecss[]] }}} dragTiddlerCSSEscaped={{{ [\u003CdragTiddler>escapecss[]] }}}>\\n\\n\\t\\t\u003C%if [{$:/state/dragging!!copying}!match[yes]] %>\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-position-start-tiddlers-no-copying>>\\n\\n\\t\\t\\t\u003C%if [{$:/state/dragging!!nth}match[0]] %>\\n\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-position-start-tiddlers-no-copying-nth-0>>\\n\\n\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\u003C% else %>\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-position-start-tiddlers-copying>>\\n\\n\\t\\t\\t\u003C%if [{$:/state/dragging!!nth}match[0]] %>\\n\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-position-start-tiddlers-copying-nth-0>>\\n\\n\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\u003C/$let>\\n\\n\u003C% endif %>\\n\\n\u003C%if [{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}!match[no]] %>\\n\\n\\t.tc-tiddler-frame img {\\n\\t\\t-webkit-user-drag: none;\\n\\t\\t-khtml-user-drag: none;\\n\\t\\t-moz-user-drag: none;\\n\\t\\t-o-user-drag: none;\\n\\t\\tuser-drag: none;\\n\\t\\t-webkit-user-select: none;\\n\\t\\t-khtml-user-select: none;\\n\\t\\t-moz-user-select: none;\\n\\t\\t-o-user-select: none;\\n\\t\\t-ms-user-select: none;\\n\\t\\tuser-select: none;\\n\\t\\ttouch-action: none;\\n\\t\\tpointer-events: none;\\n\\t}\\n\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/styles/dynanode\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/dynanode\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\u003C%if [function[tiddlyflex-layout]then{$:/config/tiddlyflex/story-river/dynanode}match[yes]] %>\\n\\n\\t.tc-dynanode-track-tiddler-when-visible {\\n\\t\\ttransition: content-visibility {{$:/config/AnimationDuration}}ms;\\n\\t}\\n\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/styles/fullscreen\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/fullscreen\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define tiddlyflex-view-tiddler-full-screen()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"]:not(.tc-navigating), .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-navigating {\\n\\tposition: fixed;\\n\\tleft: 0;\\n\\ttop: 0;\\n\\theight: 100vh;\\n\\twidth: 100vw;\\n\\tz-index: 1004;\\n\\tborder: none;\\n\\tborder-radius: 0px;\\n}\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"]:not(.tc-navigating) > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-navigating > .tc-tiddler-frame {\\n\\tmin-height: 100%;\\n\\theight: 100%;\\n\\toverflow-y: auto;\\n\\tscroll-behavior: smooth;\\n\\tborder: none;\\n\\tborder-radius: 0px;\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-inherit-overflow-columns()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-wrapper-inner.tc-tiddlyflex-story-river-$(column)$ {\\n\\toverflow-y: hidden;\\n}\\n\\n\\\\end\\n\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\n\\t\u003C$list filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\" variable=\\\"fullScreenTiddler\\\">\\n\\n\\t\\t.tc-tiddlyflex-story-river-wrapper-inner {\\n\\t\\t\\tz-index: initial;\\n\\t\\t}\\n\\n\\t\\t\u003C$vars column={{{ [\u003CfullScreenTiddler>get[column]] }}} fullScreenTiddler={{{ [\u003CfullScreenTiddler>removeprefix[$:/state/tiddlyflex/story-river/fullscreen/]] }}}>\\n\\n\\t\\t\\t\u003C$let tiddlerTitle=\u003C\u003CfullScreenTiddler>> tiddlerTitleCSSEscaped={{{ [\u003CtiddlerTitle>escapecss[]] }}}>\\n\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-view-tiddler-full-screen>>\\n\\n\\t\\t\\t\u003C/$let>\\n\\n\\t\\t\u003C/$vars>\\n\\n\\t\\t@media (max-width: 991.98px) {\\n\\n\\t\\t\\t.tc-tiddlyflex-story-river-container-inner {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>]\\\" variable=\\\"column\\\">\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-inherit-overflow-columns>>\\n\\n\\t\\t\u003C/$list>\\n\\n\\t\u003C/$list>\\n\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/styles/icons\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/icons\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"svg.lucide.lucide-layout-dashboard {\\n\\tstroke: \u003C\u003Ccolour foreground>>;\\n\\tstroke-width: 3;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right svg.lucide {\\n\\tstroke: \u003C\u003Ccolour muted-foreground>>;\\n\\tfill: none;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right .tc-selected svg.lucide, .tc-tiddlyflex-top-toolbar-right .tc-btn-invisible:hover svg.lucide {\\n\\tstroke: \u003C\u003Ccolour foreground>>;\\n\\tfill: none;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right .tc-selected svg.lucide.lucide-grip {\\n\\tstroke: \u003C\u003Ccolour primary>>;\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/menu\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/menu\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"@media (min-width: 992px) {\\n\\n\\t.tc-tiddlyflex-shown-when-narrow {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t\u003C%if [{$:/config/tiddlyflex/story-river/horizontal}!match[yes]] %>\\n\\n\\t\\t\u003C$list filter=\\\"[{$:/state/sidebar}match[no]] :then[subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]compare:number:gteq{$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint}] :else[subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]compare:number:gteq{$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar}]\\\" variable=\\\"column\\\">\\n\\n\\t\\t\\t.tc-tiddlyflex-column-\u003C\u003Ccolumn>> .tc-tiddler-controls > button:not(.tc-tiddlyflex-shown-when-narrow) {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.tc-tiddlyflex-column-\u003C\u003Ccolumn>> .tc-tiddler-controls .tc-tiddlyflex-shown-when-narrow {\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t}\\n\\n\\t\\t\u003C/$list>\\n\\n\\t\\t\u003C%if [[$:/state/sidebar/posx]!is[missing]] %>\\n\\n\\t\\t\\t\u003C$vars sidebarWidthPixels={{{ [{$:/config/tiddlyflex/sidebar/width}removesuffix[px]] }}} sidebarWidthPercentage={{{ [{$:/config/tiddlyflex/sidebar/width}removesuffix[%]] }}} drag-diff={{$:/state/sidebar/posx!!drag-diff}} selectednodeWidth={{$:/state/sidebar/posx!!selectednode-width}} containerWidth={{$:/state/sidebar/posx!!widgetnode-width}} columnCount={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]] }}} minStoryWidth={{{ [{$:/config/tiddlyflex/story-river/min-width}removesuffix[px]] }}} leftbarWidth={{$:/state/sidebar/posx!!leftbar-width}}>\\n\\n\\t\\t\\t\\t\u003C%if [\u003CsidebarWidthPixels>!is[blank]!match[]] %>\\n\\n\\t\\t\\t\\t\\t\u003C$let viewportWidth={{$:/state/DynaView/ViewportDimensions/Width}} containerWidth={{{ [\u003CviewportWidth>!is[blank]subtract\u003CleftbarWidth>] ~[\u003CcontainerWidth>] }}}>\\n\\n\\t\\t\\t\\t\\t\\t\u003C$let originalStoryContainerWidth={{{ [\u003CcontainerWidth>subtract\u003CsidebarWidthPixels>] }}} originalSingleColumnWidth={{{ [\u003CoriginalStoryContainerWidth>divide\u003CcolumnCount>] }}} sidebarResizerWidth={{{ [\u003CselectednodeWidth>divide[2]] }}} gripDiff={{{ [\u003CsidebarResizerWidth>subtract\u003Cdrag-diff>] }}} minStoryContainerWidth={{{ [\u003CminStoryWidth>multiply\u003CcolumnCount>] }}} sidebarWidthMax={{{ [\u003CcontainerWidth>subtract\u003CminStoryContainerWidth>] }}} sidebarWidth={{{ [\u003CcontainerWidth>subtract{$:/state/sidebar/posx}add\u003CgripDiff>compare:number:lteq\u003CsidebarWidthPixels>then\u003CsidebarWidthPixels>] ~[\u003CcontainerWidth>subtract{$:/state/sidebar/posx}add\u003CgripDiff>compare:number:gteq\u003CsidebarWidthMax>then\u003CsidebarWidthMax>] ~[\u003CcontainerWidth>subtract{$:/state/sidebar/posx}add\u003CgripDiff>] }}} maxStoryContainerWidth={{{ [\u003CcontainerWidth>subtract\u003CsidebarWidthPixels>] }}} storyContainerWidth={{{ [\u003CcontainerWidth>subtract\u003CsidebarWidth>compare:number:gteq\u003CminStoryContainerWidth>] ~[\u003CminStoryContainerWidth>] }}} singleColumnWidth={{{ [\u003CstoryContainerWidth>divide\u003CcolumnCount>compare:number:gt\u003CminStoryWidth>] ~[\u003CminStoryWidth>] }}} narrowWidthWhenSidebarShown={{{ [\u003CoriginalStoryContainerWidth>divide{$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar}compare:number:gteq\u003CminStoryWidth>] ~[\u003CminStoryWidth>multiply{$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar}divide\u003CcolumnCount>] }}}>\\n\\n\\t\\t\\t\\t\\t\\t\\t\u003C%if [\u003CsingleColumnWidth>compare:number:lteq\u003CnarrowWidthWhenSidebarShown>] %>\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t.tc-tiddler-controls > button:not(.tc-tiddlyflex-shown-when-narrow) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t.tc-tiddler-controls .tc-tiddlyflex-shown-when-narrow {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\\t\\t\\t\\t\u003C/$let>\\n\\n\\t\\t\\t\\t\\t\u003C/$let>\\n\\n\\t\\t\\t\\t\u003C% elseif [\u003CsidebarWidthPercentage>!is[blank]!match[]] %>\\n\\n\\t\\t\\t\\t\\t\u003C$let viewportWidth={{$:/state/DynaView/ViewportDimensions/Width}} containerWidth={{{ [\u003CviewportWidth>!is[blank]subtract\u003CleftbarWidth>] ~[\u003CcontainerWidth>] }}}>\\n\\n\\t\\t\\t\\t\\t\\t\u003C$set name=\\\"sidebarWidthPercentage\\\" value={{{ [\u003CcontainerWidth>divide[100]multiply\u003CsidebarWidthPercentage>] }}}>\\n\\n\\t\\t\\t\\t\\t\\t\\t\u003C$let originalStoryContainerWidth={{{ [\u003CcontainerWidth>subtract\u003CsidebarWidthPercentage>] }}} originalSingleColumnWidth={{{ [\u003CoriginalStoryContainerWidth>divide\u003CcolumnCount>] }}} sidebarResizerWidth={{{ [\u003CselectednodeWidth>divide[2]] }}} gripDiff={{{ [\u003CsidebarResizerWidth>subtract\u003Cdrag-diff>] }}} minStoryContainerWidth={{{ [\u003CminStoryWidth>multiply\u003CcolumnCount>] }}} sidebarWidthMax={{{ [\u003CcontainerWidth>subtract\u003CminStoryContainerWidth>] }}} sidebarWidth={{{ [\u003CcontainerWidth>subtract{$:/state/sidebar/posx}add\u003CgripDiff>compare:number:lteq\u003CsidebarWidthPercentage>then\u003CsidebarWidthPercentage>] ~[\u003CcontainerWidth>subtract{$:/state/sidebar/posx}add\u003CgripDiff>compare:number:gteq\u003CsidebarWidthMax>then\u003CsidebarWidthMax>] ~[\u003CcontainerWidth>subtract{$:/state/sidebar/posx}add\u003CgripDiff>] }}} maxStoryContainerWidth={{{ [\u003CcontainerWidth>subtract\u003CsidebarWidthPercentage>] }}} storyContainerWidth={{{ [\u003CcontainerWidth>subtract\u003CsidebarWidth>compare:number:gteq\u003CminStoryContainerWidth>] ~[\u003CminStoryContainerWidth>] }}} singleColumnWidth={{{ [\u003CstoryContainerWidth>divide\u003CcolumnCount>compare:number:gt\u003CminStoryWidth>] ~[\u003CminStoryWidth>] }}} narrowWidthWhenSidebarShown={{{ [\u003CoriginalStoryContainerWidth>divide{$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar}compare:number:gteq\u003CminStoryWidth>] ~[\u003CminStoryWidth>multiply{$:/config/tiddlyflex/story-river/tiddler/controls-breakpoint-sidebar}divide\u003CcolumnCount>] }}}>\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003C%if [\u003CsingleColumnWidth>compare:number:lteq\u003CnarrowWidthWhenSidebarShown>] %>\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t.tc-tiddler-controls > button:not(.tc-tiddlyflex-shown-when-narrow) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t.tc-tiddler-controls .tc-tiddlyflex-shown-when-narrow {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\\t\\t\\t\\t\\t\u003C/$let>\\n\\n\\t\\t\\t\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\\t\\t\\t\u003C/$let>\\n\\n\\t\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\\t\u003C/$vars>\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\u003C% endif %>\\n\\n}\\n\\n@media (max-width: 991.98px) {\\n\\n\\t.tc-tiddler-controls > button:not(.tc-tiddlyflex-shown-when-narrow) {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t.tc-tiddler-controls .tc-tiddlyflex-shown-when-narrow {\\n\\t\\tdisplay: block;\\n\\t}\\n\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/misc\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/misc\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\u003C%if [function[tiddlyflex-layout]] %>\\n\\n\\t.tc-tiddlyflex-sidebar .tc-sidebar-header {\\n\\t\\ttransition: none;\\n\\t}\\n\\n\\t.tc-tiddlyflex-top-toolbar .tc-show-sidebar-btn svg.tc-image-chevron-left, .tc-tiddlyflex-top-toolbar .tc-hide-sidebar-btn svg.tc-image-chevron-right {\\n\\t\\ttransform: none;\\n\\t}\\n\\n\\t.tc-modal-wrapper {\\n\\t\\tz-index: 999;\\n\\t}\\n\\n\\t.tc-plugin-reload-warning {\\n\\t\\tposition: relative;\\n\\t\\tpadding-top: 15px;\\n\\t\\tpadding-bottom: 15px;\\n\\t}\\n\\n\\t.tc-plugin-reload-warning p {\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\t.tc-drafts-list.tc-tiddlyflex-drafts-list {\\n\\t\\tz-index: 997;\\n\\t\\tposition: absolute;\\n\\t\\tfont-size: 0.8em;\\n\\t\\tleft: 0;\\n\\t\\tbottom: 0;\\n\\t}\\n\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/styles/narrow\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/narrow\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"@media (max-width: 991.98px) {\\n\\n\\t\u003C\u003Ctiddlyflex-css-horizontal-view>>\\n\\n\\t.tc-tiddlyflex-sidebar {\\n\\t\\twidth: 90%;\\n\\t}\\n\\n}\\n\\n@media (max-width: 767.98px) {\\n\\t\\n\\t.tc-tiddlyflex-top-toolbar .tc-sidebar-lists .tc-search input {\\n\\t\\twidth: 150px;\\n\\t}\\n\\n}\\n\\n@media (max-width: 575.98px) {\\n\\t\\n\\t.tc-tiddlyflex-top-toolbar .tc-sidebar-lists .tc-search input {\\n\\t\\twidth: 100px;\\n\\t}\\n\\n\\t.tc-tiddlyflex-top-toolbar .tc-sidebar-lists .tc-search .tc-image-down-arrow + em {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/scroll-margins\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/scroll-margins\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define tiddlyflex-scroll-margin-top-story-river-padding()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(tiddlyFlexColumn)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"].tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(tiddlyFlexColumn)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"].tc-tiddler-edit-frame {\\n\\tscroll-margin-top: {{$:/config/tiddlyflex/story-river/padding}};\\n\\tscroll-margin-left: {{$:/config/tiddlyflex/story-river/padding}};\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-scroll-margin-top()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(tiddlyFlexColumn)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"].tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(tiddlyFlexColumn)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"].tc-tiddler-edit-frame {\\n\\tscroll-margin-top: {{{ [{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}compare:number:lteq{$:/config/tiddlyflex/story-river/padding}] ~[{$:/config/tiddlyflex/story-river/padding}] }}};\\n\\tscroll-margin-left: {{$:/config/tiddlyflex/story-river/padding}};\\n}\\n\\n\\\\end\\n\\n\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\n\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\n\\t\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[nth[1]]\\\" variable=\\\"tiddler\\\">\\n\\n\\t\\t\\t\u003C$set name=\\\"cssEscapedTitle\\\" value={{{ [\u003Ctiddler>escapecss[]] }}}>\\n\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-scroll-margin-top-story-river-padding>>\\n\\n\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\u003C/$list>\\n\\n\\t\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-story-river-filter>] -[subfilter\u003Ctdff.tiddlyflex-story-river-filter>nth[1]]\\\" variable=\\\"tiddler\\\">\\n\\n\\t\\t\\t\u003C$set name=\\\"cssEscapedTitle\\\" value={{{ [\u003Ctiddler>escapecss[]] }}}>\\n\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-scroll-margin-top>>\\n\\n\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\u003C/$list>\\n\\n\\t\u003C/$set>\\n\\n\u003C/$list>\"},\"$:/plugins/BTC/TiddlyFlex/styles/sidebar-resizer\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/sidebar-resizer\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"@media (min-width: 992px) {\\n\\n\\t\u003C%if [{$:/config/tiddlyflex/sidebar/resizer}match[yes]] %>\\n\\n\\t\\t.tc-tiddlyflex-pointerdown-eventcatcher {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\n\\t\\t\\t.tc-tiddlyflex-pointerdown-eventcatcher {\\n\\t\\t\\t\\tz-index: 1001;\\n\\t\\t\\t}\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\\t.tc-tiddlyflex-pointermove-eventcatcher {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tz-index: 1003;\\n\\t\\t}\\n\\n\\t\\t.tc-tiddlyflex-pointermove {\\n\\t\\t\\tposition: fixed;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\theight: 100vh;\\n\\t\\t\\twidth: 100vw;\\n\\t\\t\\tz-index: 1003;\\n\\t\\t}\\n\\n\\t\\t.tc-tiddlyflex-sidebar-resizer {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: calc(50% - 26px);\\n\\t\\t\\tleft: calc(100% - 39px);\\n\\t\\t\\theight: 26px;\\n\\t\\t\\twidth: 52px;\\n\\t\\t\\tborder-radius: 26px 26px 0 0;\\n\\t\\t\\ttransform: rotate(-90deg);\\n\\t\\t\\tbackground-color: \u003C\u003Ccolour tiddlyflex-sidebar-resizer>>;\\n\\t\\t\\tz-index: 1002;\\n\\t\\t\\ttransition: left {{$:/config/AnimationDuration}}ms linear, visibility {{$:/config/AnimationDuration}}ms linear;\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t}\\n\\n\\t\\t\u003C%if [{$:/state/sidebar}!match[no]then[$:/state/sidebar/resizing]!is[missing]] %>\\n\\n\\t\\t\\t.tc-tiddlyflex-sidebar-resizer {\\n\\t\\t\\t\\ttransition: none;\\n\\t\\t\\t}\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\\t\u003C%if [{$:/state/sidebar}!match[no]] %>\\n\\n\\t\\t\\t.tc-tiddlyflex-sidebar-resizer {\\n\\t\\t\\t\\tleft: calc(100% - {{$:/config/tiddlyflex/sidebar/width}} - 39px);\\n\\t\\t\\t\\tvisibility: visible;\\n\\t\\t\\t}\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\\t\u003C%if [[$:/state/sidebar/posx]!is[missing]then{$:/state/sidebar}!match[no]] %>\\n\\n\\t\\t\\t\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\n\\t\\t\\t\\t.tc-tiddlyflex-sidebar-resizer {\\n\\t\\t\\t\\t\\tleft: min(max(min(calc(100% - {{$:/config/tiddlyflex/sidebar/width}} - 39px),calc({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px) - 39px)),calc(({{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]] }}} * {{$:/config/tiddlyflex/story-river/min-width}}) - 39px)),calc(100% - {{$:/config/tiddlyflex/sidebar/width}} - 39px));\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\u003C% else %>\\n\\n\\t\\t\\t\\t.tc-tiddlyflex-sidebar-resizer {\\n\\t\\t\\t\\t\\tleft: min(max(min(calc(100% - {{$:/config/tiddlyflex/sidebar/width}} - 39px),calc({{$:/state/sidebar/posx}}px + (({{$:/state/sidebar/posx!!selectednode-width}}px / 2) - {{$:/state/sidebar/posx!!drag-diff}}px) - 39px)),calc(({{$:/state/sidebar/posx!!column-count}} * {{$:/config/tiddlyflex/story-river/min-width}}) - 39px)),calc(100% - {{$:/config/tiddlyflex/sidebar/width}} - 39px));\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\u003C% endif %>\\n\\n\\t\u003C% else %>\\n\\n\\t\\t.tc-tiddlyflex-pointerdown-eventcatcher {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\u003C% endif %>\\n\\n}\\n\\n@media (max-width: 991.98px) {\\n\\n\\t.tc-tiddlyflex-pointerdown-eventcatcher {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/tiddler-animations\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/tiddler-animations\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define tiddlyflex-dont-display-tiddler()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\tvisibility: hidden;\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-remove-tiddler-animation()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n@keyframes margin-top-remove-$(column)$-$(tiddlerTitleCSSEscaped)$ {\\n\\tfrom {\\n\\t\\tmargin-top: 0%;\\n\\t}\\n\\tto {\\n\\t\\tmargin-top: calc( -{{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} - $(tiddlerHeight)$px);\\n\\t}\\n}\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\tvisibility: visible;\\n\\t-webkit-animation: slide-out-$(direction)$ {{$:/config/AnimationDuration}}ms linear;\\n\\t-moz-animation: slide-out-$(direction)$ {{$:/config/AnimationDuration}}ms linear;\\n\\tanimation: slide-out-$(direction)$ {{$:/config/AnimationDuration}}ms linear;\\n\\tborder: 1px solid \u003C\u003Ccolour tiddlyflex-current-tiddler>>;\\n}\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame {\\n\\tz-index: 999;\\n}\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame + .tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame + .tc-tiddler-edit-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame + .tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame + .tc-tiddler-edit-frame {\\n\\t-webkit-animation: margin-top-remove-$(column)$-$(tiddlerTitleCSSEscaped)$ {{$:/config/AnimationDuration}}ms linear;\\n\\t-moz-animation: margin-top-remove-$(column)$-$(tiddlerTitleCSSEscaped)$ {{$:/config/AnimationDuration}}ms linear;\\n\\tanimation: margin-top-remove-$(column)$-$(tiddlerTitleCSSEscaped)$ {{$:/config/AnimationDuration}}ms linear;\\n}\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-add-tiddler-animation()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n@keyframes margin-top-add-$(column)$-$(tiddlerTitleCSSEscaped)$ {\\n\\tfrom {\\n\\t\\tmargin-top: calc( -{{$:/config/tiddlyflex/story-river/tiddler/margin-bottom}} - $(tiddlerHeight)$px);\\n\\t}\\n\\tto {\\n\\t\\tmargin-top: 0%;\\n\\t}\\n}\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\tvisibility: visible;\\n\\t-webkit-animation: slide-in-$(direction)$ {{$:/config/AnimationDuration}}ms linear;\\n\\t-moz-animation: slide-in-$(direction)$ {{$:/config/AnimationDuration}}ms linear;\\n\\tanimation: slide-in-$(direction)$ {{$:/config/AnimationDuration}}ms linear;\\n}\\n\\n\u003C%if [{$:/config/tiddlyflex/story-river/follow-current-column}match[yes]] %>\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame > .tc-tiddler-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame > .tc-tiddler-frame {\\n\\tborder: 1px solid \u003C\u003Ccolour tiddlyflex-current-tiddler>>;\\n}\\n\\n\u003C% endif %>\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame {\\n\\tz-index: 999;\\n}\\n\\n.tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame + .tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-view-frame + .tc-tiddler-edit-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame + .tc-tiddler-view-frame, .tc-tiddlyflex-story-river-$(column)$ .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(tiddlerTitleCSSEscaped)$\\\"].tc-tiddler-edit-frame + .tc-tiddler-edit-frame {\\n\\t-webkit-animation: margin-top-add-$(column)$-$(tiddlerTitleCSSEscaped)$ {{$:/config/AnimationDuration}}ms linear;\\n\\t-moz-animation: margin-top-add-$(column)$-$(tiddlerTitleCSSEscaped)$ {{$:/config/AnimationDuration}}ms linear;\\n\\tanimation: margin-top-add-$(column)$-$(tiddlerTitleCSSEscaped)$ {{$:/config/AnimationDuration}}ms linear;\\n}\\n\\n\\\\end\\n\\n\u003C%if [{$:/config/AnimationDuration}!is[blank]!match[0]] %>\\n\\n\\t@keyframes slide-out-left {\\n\\t\\tfrom {\\n\\t\\t\\ttransform: translateX(0%);\\n\\t\\t}\\n\\t\\tto {\\n\\t\\t\\ttransform: translateX(calc(-100% - (2 * {{$:/config/tiddlyflex/story-river/padding}})));\\n\\t\\t}\\n\\t}\\n\\n\\t@keyframes slide-out-right {\\n\\t\\tfrom {\\n\\t\\t\\ttransform: translateX(0%);\\n\\t\\t}\\n\\t\\tto {\\n\\t\\t\\ttransform: translateX(calc(100% + (2 * {{$:/config/tiddlyflex/story-river/padding}})));\\n\\t\\t}\\n\\t}\\n\\n\\t@keyframes slide-in-left {\\n\\t\\tfrom {\\n\\t\\t\\ttransform: translateX(calc( -100% - (2 * {{$:/config/tiddlyflex/story-river/padding}})));\\n\\t\\t}\\n\\t\\tto {\\n\\t\\t\\ttransform: translateX(0%);\\n\\t\\t}\\n\\t}\\n\\n\\t@keyframes slide-in-right {\\n\\t\\tfrom {\\n\\t\\t\\ttransform: translateX(calc(100% + (2 * {{$:/config/tiddlyflex/story-river/padding}})));\\n\\t\\t}\\n\\t\\tto {\\n\\t\\t\\ttransform: translateX(0%);\\n\\t\\t}\\n\\t}\\n\\n\\t\u003C$list filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/removing/]]\\\" variable=\\\"stateTiddler\\\">\\n\\t\\t\u003C$let tiddlerTitle={{{ [\u003CstateTiddler>removeprefix[$:/state/tiddlyflex/removing/]] }}} tiddlerTitleCSSEscaped={{{ [\u003CtiddlerTitle>escapecss[]] }}} column={{{ [\u003CstateTiddler>get[column]] }}}>\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-dont-display-tiddler>>\\n\\n\\t\\t\\t\u003C%if [\u003CstateTiddler>has[height]] %>\\n\\t\\t\\t\\t\u003C$let direction={{{ [\u003CstateTiddler>get[direction]] }}} tiddlerHeight={{{ [\u003CstateTiddler>get[height]] }}}>\\n\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-remove-tiddler-animation>>\\n\\n\\t\\t\\t\\t\\t.tc-tiddlyflex-story-river {\\n\\t\\t\\t\\t\\t\\toverflow-x: clip;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$let>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/adding/]]\\\" variable=\\\"stateTiddler\\\">\\n\\t\\t\u003C$let tiddlerTitle={{{ [\u003CstateTiddler>removeprefix[$:/state/tiddlyflex/adding/]] }}} tiddlerTitleCSSEscaped={{{ [\u003CtiddlerTitle>escapecss[]] }}} column={{{ [\u003CstateTiddler>get[column]] }}}>\\n\\n\\t\\t\\t\u003C\u003Ctiddlyflex-dont-display-tiddler>>\\n\\n\\t\\t\\t\u003C%if [\u003CstateTiddler>has[height]] %>\\n\\t\\t\\t\\t\u003C$let direction={{{ [\u003CstateTiddler>get[direction]] }}} tiddlerHeight={{{ [\u003CstateTiddler>get[height]] }}}>\\n\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-add-tiddler-animation>>\\n\\n\\t\\t\\t\\t\\t.tc-tiddlyflex-story-river {\\n\\t\\t\\t\\t\\t\\toverflow-x: clip;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$let>\\n\\t\u003C/$list>\\n\\n\u003C% endif %>\\n\\n.tc-tiddlyflex-adding {\\n\\tvisibility: hidden;\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/toolbars\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/toolbars\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\".tc-tiddlyflex-top-toolbar {\\n\\tdisplay: flex;\\n\\talign-items: stretch;\\n\\tline-height: 2em;\\n}\\n\\n.tc-tiddlyflex-top-toolbar .tc-sidebar-lists.tc-sidebar-search {\\n\\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\\n}\\n\\n.tc-tiddlyflex-top-toolbar .tc-sidebar-lists.tc-sidebar-search .tc-block-dropdown {\\n\\tcolor: \u003C\u003Ccolour muted-foreground>>;\\n}\\n\\n.tc-tiddlyflex-top-toolbar .tc-sidebar-lists.tc-sidebar-search .tc-search > .tc-reveal {\\n\\tfont-size: 0.75rem;\\n}\\n\\n.tc-tiddlyflex-top-toolbar p {\\n\\tmargin: 0;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-left, .tc-tiddlyflex-top-toolbar-right {\\n\\tflex-grow: 0;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-center {\\n\\tflex-grow: 1;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-left {\\n\\tmargin-top: 5px;\\n\\tmargin-bottom: 5px;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-left > div:first-of-type {\\n\\tmargin-left: {{$:/config/tiddlyflex/story-river/padding}};\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right button {\\n\\tmargin-right: 0.5em;\\n\\tvertical-align: bottom;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right .tc-btn-invisible svg:not(.lucide) {\\n\\tfill: \u003C\u003Ccolour muted-foreground>>;\\n\\tfont-size: 1rem;\\n\\theight: 1rem;\\n\\twidth: 1rem;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right .tc-btn-invisible:hover svg:not(.lucide), .tc-tiddlyflex-top-toolbar-right .tc-btn-invisible.tc-selected svg:not(.lucide) {\\n\\tfill: \u003C\u003Ccolour foreground>>;\\n}\\n\\n.tc-tiddlyflex-top-toolbar-right .tc-btn-invisible.tc-selected {\\n\\t-webkit-filter: drop-shadow(0px -1px 2px rgba(0,0,0,0.25));\\n\\t-moz-filter: drop-shadow(0px -1px 2px rgba(0,0,0,0.25));\\n\\tfilter: drop-shadow(0px -1px 2px rgba(0,0,0,0.25));\\n}\"},\"$:/plugins/BTC/TiddlyFlex/styles/z-indexes\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/styles/z-indexes\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define tiddlyflex-tiddler-z-indexes-inner()\\n\\n\u003C$list filter=\\\"[range\u003CstoryListCount>]\\\">\\n`.tc-tiddlyflex-story-river-`$(tiddlyFlexColumn)$ `.tc-tiddlyflex-story-river-inner > .tc-tiddler-view-frame:nth-child(100n+`\u003C$text text=\u003C\u003CcurrentTiddler>>/>`) > .tc-tiddler-frame`,\\n`.tc-tiddlyflex-story-river-`$(tiddlyFlexColumn)$ `.tc-tiddlyflex-story-river-inner > .tc-tiddler-edit-frame:nth-child(100n+`\u003C$text text=\u003C\u003CcurrentTiddler>>/>`) > .tc-tiddler-frame {\\nz-index: `\u003C$text text={{{ [\u003CstoryListCount>add[501]subtract\u003CcurrentTiddler>] }}}/>`;\\n}\\n`\\n\u003C/$list>\\n\\n\\\\end\\n\\n\\\\define tiddlyflex-tiddler-z-indexes()\\n\\n\u003C$set name=\\\"storyListCount\\\" value={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[count[]] }}}>\\n\\n\\t\u003C\u003Ctiddlyflex-tiddler-z-indexes-inner>>\\n\\n\u003C/$set>\\n\\n\\\\end\\n\\n\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\n\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\n\\t\\t\u003C\u003Ctiddlyflex-tiddler-z-indexes>>\\n\\n\\t\u003C/$set>\\n\\n\u003C/$list>\"},\"$:/plugins/BTC/TiddlyFlex/modules/startup/tiddlyflex-hooks.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/startup/tiddlyflex-hooks.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nFavicon handling\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n// Export name and synchronous status\\nexports.name = \\\"tiddlyflex-hooks\\\";\\nexports.platforms = [\\\"browser\\\"];\\nexports.after = [\\\"startup\\\"];\\nexports.synchronous = true;\\n\\nexports.startup = function() {\\n\\t$tw.hooks.addHook(\\\"th-navigating\\\",function(event) { \\n\\t\\tif(!event.navigateTo && event.event && event.event.navigateTo) {\\n\\t\\t\\tif(event.navigateFromTitle && !event.event.navigateFromTitle) {\\n\\t\\t\\t\\tevent.event.navigateFromTitle = event.navigateFromTitle;\\n\\t\\t\\t}\\n\\t\\t\\treturn event.event;\\n\\t\\t} else {\\n\\t\\t\\treturn event;\\n\\t\\t}\\n\\t});\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/startup/tiddlyflex-hooks.js\",\"module-type\":\"startup\"},\"$:/plugins/BTC/TiddlyFlex/modules/startup/widget.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/startup/widget.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nOverwriting the Base Widget refreshChildren method\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.name = \\\"tiddlyflex-widget\\\";\\nexports.platforms = [\\\"browser\\\"];\\nexports.after = [\\\"startup\\\"];\\nexports.synchronous = true;\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nWidget.prototype.refreshChildren = function(changedTiddlers,force) {\\n\\tvar children = this.children,\\n\\t\\trefreshed = false;\\n\\tfor(var i=0; i\u003Cchildren.length; i++) {\\n\\t\\tvar child = children[i];\\n\\t\\tif(!force && child.domNodes && child.domNodes[0] && child.domNodes[0].style && child.domNodes[0].style[\\\"content-visibility\\\"] && ((child.domNodes[0].style[\\\"content-visibility\\\"] === \\\"auto\\\") || (child.domNodes[0].style[\\\"content-visibility\\\"] === \\\"hidden\\\"))) {\\n\\t\\t\\treturn false;\\n\\t\\t} else {\\n\\t\\t\\trefreshed = child.refresh(changedTiddlers,force) || refreshed;\\n\\t\\t}\\n\\t}\\n\\treturn refreshed;\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/startup/widget.js\",\"module-type\":\"startup\"},\"$:/plugins/BTC/TiddlyFlex/modules/utils/utils.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/utils/utils.js\\ntype: application/javascript\\nmodule-type: utils\\n\\nUtils, mainly for catching the \\\"Resizeobserver loop completed with undelivered notifications.\\\" error on FireFox\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.error = function(err) {\\n\\t// Prepare the error message\\n\\tvar errHeading = ( $tw.language == undefined ? \\\"Internal JavaScript Error\\\" : $tw.language.getString(\\\"InternalJavaScriptError/Title\\\") ),\\n\\t\\tpromptMsg = ( $tw.language == undefined ? \\\"Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser\\\" : $tw.language.getString(\\\"InternalJavaScriptError/Hint\\\") );\\n\\t// Log the error to the console\\n\\tconsole.error($tw.node ? \\\"\\\\x1b[1;31m\\\" + err + \\\"\\\\x1b[0m\\\" : err);\\n\\tif($tw.browser && !$tw.node && (err !== \\\"ResizeObserver loop completed with undelivered notifications.\\\")) {\\n\\t\\t// Display an error message to the user\\n\\t\\tvar dm = $tw.utils.domMaker,\\n\\t\\t\\theading = dm(\\\"h1\\\",{text: errHeading}),\\n\\t\\t\\tprompt = dm(\\\"div\\\",{text: promptMsg, \\\"class\\\": \\\"tc-error-prompt\\\"}),\\n\\t\\t\\tmessage = dm(\\\"div\\\",{text: err, \\\"class\\\":\\\"tc-error-message\\\"}),\\n\\t\\t\\tcloseButton = dm(\\\"div\\\",{children: [dm(\\\"button\\\",{text: ( $tw.language == undefined ? \\\"close\\\" : $tw.language.getString(\\\"Buttons/Close/Caption\\\") )})], \\\"class\\\": \\\"tc-error-prompt\\\"}),\\n\\t\\t\\tdownloadButton = dm(\\\"div\\\",{children: [dm(\\\"button\\\",{text: ( $tw.language == undefined ? \\\"download tiddlers\\\" : $tw.language.getString(\\\"Buttons/EmergencyDownload/Caption\\\") )})], \\\"class\\\": \\\"tc-error-prompt\\\"}),\\n\\t\\t\\tform = dm(\\\"form\\\",{children: [heading,prompt,downloadButton,message,closeButton], \\\"class\\\": \\\"tc-error-form\\\"});\\n\\t\\tdocument.body.insertBefore(form,document.body.firstChild);\\n\\t\\tdownloadButton.addEventListener(\\\"click\\\",function(event) {\\n\\t\\t\\tif($tw && $tw.wiki) {\\n\\t\\t\\t\\tvar tiddlers = [];\\n\\t\\t\\t\\t$tw.wiki.each(function(tiddler,title) {\\n\\t\\t\\t\\t\\ttiddlers.push(tiddler.fields);\\n\\t\\t\\t\\t});\\n\\t\\t\\t\\tvar link = dm(\\\"a\\\"),\\n\\t\\t\\t\\t\\ttext = JSON.stringify(tiddlers);\\n\\t\\t\\t\\tif(Blob !== undefined) {\\n\\t\\t\\t\\t\\tvar blob = new Blob([text], {type: \\\"text/html\\\"});\\n\\t\\t\\t\\t\\tlink.setAttribute(\\\"href\\\", URL.createObjectURL(blob));\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tlink.setAttribute(\\\"href\\\",\\\"data:text/html,\\\" + encodeURIComponent(text));\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tlink.setAttribute(\\\"download\\\",\\\"emergency-tiddlers-\\\" + (new Date()) + \\\".json\\\");\\n\\t\\t\\t\\tdocument.body.appendChild(link);\\n\\t\\t\\t\\tlink.click();\\n\\t\\t\\t\\tdocument.body.removeChild(link);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\talert(\\\"Emergency tiddler download is not available\\\");\\n\\t\\t\\t}\\n\\t\\t\\tevent.preventDefault();\\n\\t\\t\\treturn false;\\n\\t\\t},true);\\n\\t\\tform.addEventListener(\\\"submit\\\",function(event) {\\n\\t\\t\\tdocument.body.removeChild(form);\\n\\t\\t\\tevent.preventDefault();\\n\\t\\t\\treturn false;\\n\\t\\t},true);\\n\\t\\treturn null;\\n\\t} else if(!$tw.browser) {\\n\\t\\t// Exit if we're under node.js\\n\\t\\tprocess.exit(1);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/utils/utils.js\",\"module-type\":\"utils\"},\"$:/core/modules/utils/dom/scroller.js\":{\"text\":\"/*\\\\\\ntitle: $:/core/modules/utils/dom/scroller.js\\ntype: application/javascript\\nmodule-type: utils\\n\\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nEvent handler for when the `tm-scroll` event hits the document body\\n*/\\nvar PageScroller = function() {\\n\\tthis.idRequestFrame = null;\\n\\tthis.requestAnimationFrame = window.requestAnimationFrame ||\\n\\t\\twindow.webkitRequestAnimationFrame ||\\n\\t\\twindow.mozRequestAnimationFrame ||\\n\\t\\tfunction(callback) {\\n\\t\\t\\treturn window.setTimeout(callback, 1000/60);\\n\\t\\t};\\n\\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\\n\\t\\twindow.webkitCancelAnimationFrame ||\\n\\t\\twindow.webkitCancelRequestAnimationFrame ||\\n\\t\\twindow.mozCancelAnimationFrame ||\\n\\t\\twindow.mozCancelRequestAnimationFrame ||\\n\\t\\tfunction(id) {\\n\\t\\t\\twindow.clearTimeout(id);\\n\\t\\t};\\n};\\n\\nPageScroller.prototype.isScrolling = function() {\\n\\treturn this.idRequestFrame !== null;\\n}\\n\\nPageScroller.prototype.cancelScroll = function(srcWindow) {\\n\\tif(this.idRequestFrame) {\\n\\t\\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\\n\\t\\tthis.idRequestFrame = null;\\n\\t}\\n};\\n\\n/*\\nHandle an event\\n*/\\nPageScroller.prototype.handleEvent = function(event) {\\n\\tif(event.type === \\\"tm-scroll\\\") {\\n\\t\\tvar options = {};\\n\\t\\tif($tw.utils.hop(event.paramObject,\\\"animationDuration\\\")) {\\n\\t\\t\\toptions.animationDuration = event.paramObject.animationDuration;\\n\\t\\t}\\n\\t\\tif(event.paramObject && event.paramObject.selector) {\\n\\t\\t\\tthis.scrollSelectorIntoView(null,event.paramObject.selector,null,options);\\n\\t\\t} else {\\n\\t\\t\\tthis.scrollIntoView(event.target,null,options);\\n\\t\\t}\\n\\t\\treturn false; // Event was handled\\n\\t}\\n\\treturn true;\\n};\\n\\n/*\\nHandle a scroll event hitting the page document\\n*/\\nPageScroller.prototype.scrollIntoView = function(element,callback,options) {\\n\\tvar self = this,\\n\\t\\tduration = $tw.utils.hop(options,\\\"animationDuration\\\") ? parseInt(options.animationDuration) : $tw.utils.getAnimationDuration(),\\n\\t\\tsrcWindow = element ? element.ownerDocument.defaultView : window;\\n\\ttry {\\n\\t\\t$tw.utils.addClass(element,\\\"tc-navigating\\\");\\n\\t\\tvar scrollIntoView = function() {\\n\\t\\t\\telement.scrollIntoView({block: \\\"start\\\", inline: \\\"start\\\"});\\n\\t\\t};\\n\\t\\tthis.requestAnimationFrame.call(srcWindow,scrollIntoView);\\n\\t\\tsetTimeout(function() {\\n\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-navigating\\\");\\n\\t\\t},duration);\\n\\t} catch(e) {\\n\\t\\tconsole.log(e);\\n\\t}\\n};\\n\\nPageScroller.prototype.scrollSelectorIntoView = function(baseElement,selector,callback,options) {\\n\\tbaseElement = baseElement || document;\\n\\tvar element = $tw.utils.querySelectorSafe(selector,baseElement);\\n\\tif(element) {\\n\\t\\tthis.scrollIntoView(element,callback,options);\\n\\t}\\n};\\n\\nexports.PageScroller = PageScroller;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/utils/dom/scroller.js\",\"module-type\":\"utils\"},\"$:/plugins/BTC/TiddlyFlex/modules/storyviews/tiddlyflex.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/storyviews/tiddlyflex.js\\ntype: application/javascript\\nmodule-type: storyview\\n\\nViews the story as a linear sequence\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar easing = \\\"cubic-bezier(0.645, 0.045, 0.355, 1)\\\"; // From http://easings.net/#easeInOutCubic\\n\\nvar ClassicStoryView = function(listWidget) {\\n\\tthis.listWidget = listWidget;\\n};\\n\\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\\n\\tvar duration = $tw.utils.getAnimationDuration()\\n\\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\\n\\tif(listElementIndex === undefined) {\\n\\t\\treturn;\\n\\t}\\n\\tvar listItemWidget = this.listWidget.children[listElementIndex],\\n\\t\\ttargetElement = listItemWidget.findFirstDomNode();\\n\\t// Abandon if the list entry isn't a DOM element (it might be a text node)\\n\\tif(!targetElement || targetElement.nodeType === Node.TEXT_NODE) {\\n\\t\\treturn;\\n\\t}\\n\\tif(duration) {\\n\\t\\t// Scroll the node into view\\n\\t\\tthis.listWidget.dispatchEvent({type: \\\"tm-scroll\\\", target: targetElement});\\n\\t} else {\\n\\t\\ttargetElement.scrollIntoView();\\n\\t}\\n};\\n\\nClassicStoryView.prototype.insert = function(widget) {\\n\\tvar duration = $tw.utils.getAnimationDuration(),\\n\\t\\ttiddlerTitle = widget.parseTreeNode.itemTitle;\\n\\tif(duration && !widget.wiki.tiddlerExists(\\\"$:/state/dragging\\\") && !widget.wiki.tiddlerExists(\\\"$:/state/tiddlyflex/adding/\\\" + tiddlerTitle) && !widget.wiki.tiddlerExists(\\\"$:/state/tiddlyflex/story-river/fullscreen/\\\" + tiddlerTitle)) {\\n\\t\\tvar targetElement = widget.findFirstDomNode();\\n\\t\\t// Abandon if the list entry isn't a DOM element (it might be a text node)\\n\\t\\tif(!targetElement || targetElement.nodeType === Node.TEXT_NODE) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\t// Get the current height of the tiddler\\n\\t\\tvar computedStyle = window.getComputedStyle(targetElement),\\n\\t\\t\\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\\n\\t\\t\\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\\n\\t\\t\\tcurrHeight = targetElement.offsetHeight + currMarginTop;\\n\\t\\t// Reset the margin once the transition is over\\n\\t\\tsetTimeout(function() {\\n\\t\\t\\t$tw.utils.setStyle(targetElement,[\\n\\t\\t\\t\\t{transition: \\\"none\\\"},\\n\\t\\t\\t\\t{marginBottom: \\\"\\\"}\\n\\t\\t\\t]);\\n\\t\\t},duration);\\n\\t\\t// Set up the initial position of the element\\n\\t\\t$tw.utils.setStyle(targetElement,[\\n\\t\\t\\t{transition: \\\"none\\\"},\\n\\t\\t\\t{marginBottom: (-currHeight) + \\\"px\\\"},\\n\\t\\t\\t{opacity: \\\"0.0\\\"}\\n\\t\\t]);\\n\\t\\t$tw.utils.forceLayout(targetElement);\\n\\t\\t// Transition to the final position\\n\\t\\t$tw.utils.setStyle(targetElement,[\\n\\t\\t\\t{transition: \\\"opacity \\\" + duration + \\\"ms \\\" + easing + \\\", \\\" +\\n\\t\\t\\t\\t\\t\\t\\\"margin-bottom \\\" + duration + \\\"ms \\\" + easing},\\n\\t\\t\\t{marginBottom: currMarginBottom + \\\"px\\\"},\\n\\t\\t\\t{opacity: \\\"1.0\\\"}\\n\\t\\t]);\\n\\t} else if(duration && !widget.wiki.tiddlerExists(\\\"$:/state/dragging\\\") && widget.wiki.tiddlerExists(\\\"$:/state/tiddlyflex/adding/\\\" + tiddlerTitle)) {\\n\\t\\tvar targetElement = widget.findFirstDomNode();\\n\\t\\twidget.wiki.setText(\\\"$:/state/tiddlyflex/adding/\\\" + tiddlerTitle,\\\"height\\\",undefined,targetElement.offsetHeight);\\n\\t\\tsetTimeout(function() {\\n\\t\\t\\twidget.wiki.deleteTiddler(\\\"$:/state/tiddlyflex/adding/\\\" + tiddlerTitle);\\n\\t\\t},duration);\\n\\t}\\n\\tif($tw.wiki.tiddlerExists(\\\"$:/state/dragging\\\")) {\\n\\t\\twidget.wiki.deleteTiddler(\\\"$:/state/dragging\\\");\\n\\t}\\n};\\n\\nClassicStoryView.prototype.remove = function(widget) {\\n\\tvar duration = $tw.utils.getAnimationDuration(),\\n\\t\\ttiddlerTitle = widget.parseTreeNode.itemTitle;\\n\\tif(duration && !widget.wiki.tiddlerExists(\\\"$:/state/dragging\\\") && !widget.wiki.tiddlerExists(\\\"$:/state/tiddlyflex/removing/\\\" + tiddlerTitle) && !widget.wiki.tiddlerExists(\\\"$:/state/tiddlyflex/story-river/fullscreen/\\\" + tiddlerTitle)) {\\n\\t\\tvar targetElement = widget.findFirstDomNode(),\\n\\t\\t\\tremoveElement = function() {\\n\\t\\t\\t\\twidget.removeChildDomNodes();\\n\\t\\t\\t};\\n\\t\\t// Abandon if the list entry isn't a DOM element (it might be a text node)\\n\\t\\tif(!targetElement || targetElement.nodeType === Node.TEXT_NODE) {\\n\\t\\t\\tremoveElement();\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\t// Get the current height of the tiddler\\n\\t\\tvar currWidth = targetElement.offsetWidth,\\n\\t\\t\\tcomputedStyle = window.getComputedStyle(targetElement),\\n\\t\\t\\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\\n\\t\\t\\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\\n\\t\\t\\tcurrHeight = targetElement.offsetHeight + currMarginTop;\\n\\t\\t// Remove the dom nodes of the widget at the end of the transition\\n\\t\\tsetTimeout(removeElement,duration);\\n\\t\\t// Animate the closure\\n\\t\\t$tw.utils.setStyle(targetElement,[\\n\\t\\t\\t{transition: \\\"none\\\"},\\n\\t\\t\\t{transform: \\\"translateX(0px)\\\"},\\n\\t\\t\\t{marginBottom: currMarginBottom + \\\"px\\\"},\\n\\t\\t\\t{opacity: \\\"1.0\\\"}\\n\\t\\t]);\\n\\t\\t$tw.utils.forceLayout(targetElement);\\n\\t\\t$tw.utils.setStyle(targetElement,[\\n\\t\\t\\t{transition: $tw.utils.roundTripPropertyName(\\\"transform\\\") + \\\" \\\" + duration + \\\"ms \\\" + easing + \\\", \\\" +\\n\\t\\t\\t\\t\\t\\t\\\"opacity \\\" + duration + \\\"ms \\\" + easing + \\\", \\\" +\\n\\t\\t\\t\\t\\t\\t\\\"margin-bottom \\\" + duration + \\\"ms \\\" + easing},\\n\\t\\t\\t{transform: \\\"translateX(-\\\" + currWidth + \\\"px)\\\"},\\n\\t\\t\\t{marginBottom: (-currHeight) + \\\"px\\\"},\\n\\t\\t\\t{opacity: \\\"0.0\\\"}\\n\\t\\t]);\\n\\t} else if(duration && !widget.wiki.tiddlerExists(\\\"$:/state/dragging\\\") && widget.wiki.tiddlerExists(\\\"$:/state/tiddlyflex/removing/\\\" + tiddlerTitle)) {\\n\\t\\tvar targetElement = widget.findFirstDomNode(),\\n\\t\\t\\tremoveElement = function() {\\n\\t\\t\\t\\twidget.removeChildDomNodes();\\n\\t\\t\\t\\twidget.wiki.deleteTiddler(\\\"$:/state/tiddlyflex/removing/\\\" + tiddlerTitle);\\n\\t\\t\\t};\\n\\t\\twidget.wiki.setText(\\\"$:/state/tiddlyflex/removing/\\\" + tiddlerTitle,\\\"height\\\",undefined,targetElement.offsetHeight);\\n\\t\\tsetTimeout(removeElement,duration);\\n\\t} else {\\n\\t\\twidget.removeChildDomNodes();\\n\\t}\\n};\\n\\nexports.tiddlyflex = ClassicStoryView;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/storyviews/tiddlyflex.js\",\"module-type\":\"storyview\"},\"$:/core/modules/startup/story.js\":{\"text\":\"/*\\\\\\ntitle: $:/core/modules/startup/story.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nLoad core modules\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n// Export name and synchronous status\\nexports.name = \\\"story\\\";\\nexports.after = [\\\"startup\\\"];\\nexports.synchronous = true;\\n\\n// Default story and history lists\\nvar DEFAULT_STORY_TITLE = \\\"$:/StoryList\\\";\\nvar DEFAULT_HISTORY_TITLE = \\\"$:/HistoryList\\\";\\n\\n// Default tiddlers\\nvar DEFAULT_TIDDLERS_TITLE = \\\"$:/DefaultTiddlers\\\";\\n\\n// Config\\nvar CONFIG_UPDATE_ADDRESS_BAR = \\\"$:/config/Navigation/UpdateAddressBar\\\"; // Can be \\\"no\\\", \\\"permalink\\\", \\\"permaview\\\"\\nvar CONFIG_UPDATE_HISTORY = \\\"$:/config/Navigation/UpdateHistory\\\"; // Can be \\\"yes\\\" or \\\"no\\\"\\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \\\"$:/config/Navigation/Permalinkview/CopyToClipboard\\\"; // Can be \\\"yes\\\" (default) or \\\"no\\\"\\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \\\"$:/config/Navigation/Permalinkview/UpdateAddressBar\\\"; // Can be \\\"yes\\\" (default) or \\\"no\\\"\\n\\n\\n// Links to help, if there is no param\\nvar HELP_OPEN_EXTERNAL_WINDOW = \\\"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\\\";\\n\\nexports.startup = function() {\\n\\t// Open startup tiddlers\\n\\topenStartupTiddlers({\\n\\t\\tdisableHistory: $tw.boot.disableStartupNavigation\\n\\t});\\n\\tif($tw.browser) {\\n\\t\\t// Set up location hash update\\n\\t\\t$tw.wiki.addEventListener(\\\"change\\\",function(changes) {\\n\\t\\t\\tif($tw.utils.hop(changes,$tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/StoryList-1\\\" : DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,$tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/HistoryList-1\\\" : DEFAULT_HISTORY_TITLE)) {\\n\\t\\t\\t\\tupdateLocationHash({\\n\\t\\t\\t\\t\\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\\\"permaview\\\").trim(),\\n\\t\\t\\t\\t\\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\\\"no\\\").trim()\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\t// Listen for changes to the browser location hash\\n\\t\\twindow.addEventListener(\\\"hashchange\\\",function() {\\n\\t\\t\\tvar hash = $tw.utils.getLocationHash();\\n\\t\\t\\tif(hash !== $tw.locationHash) {\\n\\t\\t\\t\\t$tw.locationHash = hash;\\n\\t\\t\\t\\tif(hash !== \\\"#\\\") {\\n\\t\\t\\t\\t\\topenStartupTiddlers({defaultToCurrentStory: true});\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},false);\\n\\t\\t// Listen for the tm-browser-refresh message\\n\\t\\t$tw.rootWidget.addEventListener(\\\"tm-browser-refresh\\\",function(event) {\\n\\t\\t\\twindow.location.reload(true);\\n\\t\\t});\\n\\t\\t// Listen for tm-open-external-window message\\n\\t\\t$tw.rootWidget.addEventListener(\\\"tm-open-external-window\\\",function(event) {\\n\\t\\t\\tvar paramObject = event.paramObject || {},\\n\\t\\t\\t\\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\\n\\t\\t\\t\\tstrWindowName = paramObject.windowName,\\n\\t\\t\\t\\tstrWindowFeatures = paramObject.windowFeatures;\\n\\t\\t\\twindow.open(strUrl, strWindowName, strWindowFeatures);\\n\\t\\t});\\n\\t\\t// Listen for the tm-print message\\n\\t\\t$tw.rootWidget.addEventListener(\\\"tm-print\\\",function(event) {\\n\\t\\t\\t(event.event.view || window).print();\\n\\t\\t});\\n\\t\\t// Listen for the tm-home message\\n\\t\\t$tw.rootWidget.addEventListener(\\\"tm-home\\\",function(event) {\\n\\t\\t\\twindow.location.hash = \\\"\\\";\\n\\t\\t\\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\\n\\t\\t\\t\\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\\n\\t\\t\\t//invoke any hooks that might change the default story list\\n\\t\\t\\tstoryList = $tw.hooks.invokeHook(\\\"th-opening-default-tiddlers-list\\\",storyList);\\n\\t\\t\\t$tw.wiki.addTiddler({title: $tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/StoryList-1\\\" : DEFAULT_STORY_TITLE, text: \\\"\\\", list: storyList},$tw.wiki.getModificationFields());\\n\\t\\t\\tif(storyList[0]) {\\n\\t\\t\\t\\t$tw.wiki.addToHistory(storyList[0]);\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\t// Listen for the tm-permalink message\\n\\t\\t$tw.rootWidget.addEventListener(\\\"tm-permalink\\\",function(event) {\\n\\t\\t\\tupdateLocationHash({\\n\\t\\t\\t\\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\\\"yes\\\").trim() === \\\"yes\\\" ? \\\"permalink\\\" : \\\"none\\\",\\n\\t\\t\\t\\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\\\"no\\\").trim(),\\n\\t\\t\\t\\ttargetTiddler: event.param || event.tiddlerTitle,\\n\\t\\t\\t\\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\\\"yes\\\").trim() === \\\"yes\\\" ? \\\"permalink\\\" : \\\"none\\\"\\n\\t\\t\\t});\\n\\t\\t});\\n\\t\\t// Listen for the tm-permaview message\\n\\t\\t$tw.rootWidget.addEventListener(\\\"tm-permaview\\\",function(event) {\\n\\t\\t\\tupdateLocationHash({\\n\\t\\t\\t\\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\\\"yes\\\").trim() === \\\"yes\\\" ? \\\"permaview\\\" : \\\"none\\\",\\n\\t\\t\\t\\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\\\"no\\\").trim(),\\n\\t\\t\\t\\ttargetTiddler: event.param || event.tiddlerTitle,\\n\\t\\t\\t\\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\\\"yes\\\").trim() === \\\"yes\\\" ? \\\"permaview\\\" : \\\"none\\\"\\n\\t\\t\\t});\\n\\t\\t});\\n\\t}\\n};\\n\\n/*\\nProcess the location hash to open the specified tiddlers. Options:\\ndisableHistory: if true $:/History is NOT updated\\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\\n*/\\nfunction openStartupTiddlers(options) {\\n\\toptions = options || {};\\n\\t// Work out the target tiddler and the story filter. \\\"null\\\" means \\\"unspecified\\\"\\n\\tvar target = null,\\n\\t\\tstoryFilter = null;\\n\\tif($tw.locationHash.length > 1) {\\n\\t\\tvar hash = $tw.locationHash.substr(1),\\n\\t\\t\\tsplit = hash.indexOf(\\\":\\\");\\n\\t\\tif(split === -1) {\\n\\t\\t\\ttarget = $tw.utils.decodeURIComponentSafe(hash.trim());\\n\\t\\t} else {\\n\\t\\t\\ttarget = $tw.utils.decodeURIComponentSafe(hash.substr(0,split).trim());\\n\\t\\t\\tstoryFilter = $tw.utils.decodeURIComponentSafe(hash.substr(split + 1).trim());\\n\\t\\t}\\n\\t}\\n\\t// If the story wasn't specified use the current tiddlers or a blank story\\n\\tif(storyFilter === null) {\\n\\t\\tif(options.defaultToCurrentStory) {\\n\\t\\t\\tvar currStoryList = $tw.wiki.getTiddlerList($tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/StoryList-1\\\" : DEFAULT_STORY_TITLE);\\n\\t\\t\\tstoryFilter = $tw.utils.stringifyList(currStoryList);\\n\\t\\t} else {\\n\\t\\t\\tif(target && target !== \\\"\\\") {\\n\\t\\t\\t\\tstoryFilter = \\\"\\\";\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t// Process the story filter to get the story list\\n\\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\\n\\t// Invoke any hooks that want to change the default story list\\n\\tstoryList = $tw.hooks.invokeHook(\\\"th-opening-default-tiddlers-list\\\",storyList);\\n\\t// If the target tiddler isn't included then splice it in at the top\\n\\tif(target && storyList.indexOf(target) === -1) {\\n\\t\\tstoryList.unshift(target);\\n\\t}\\n\\t// Save the story list\\n\\t$tw.wiki.addTiddler({title: $tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/StoryList-1\\\" : DEFAULT_STORY_TITLE, text: \\\"\\\", list: storyList},$tw.wiki.getModificationFields());\\n\\t// Update history\\n\\tvar story = new $tw.Story({\\n\\t\\twiki: $tw.wiki,\\n\\t\\tstoryTitle: $tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/StoryList-1\\\" : DEFAULT_STORY_TITLE,\\n\\t\\thistoryTitle: $tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/HistoryList-1\\\" : DEFAULT_HISTORY_TITLE\\n\\t});\\n\\tif(!options.disableHistory) {\\n\\t\\t// If a target tiddler was specified add it to the history stack\\n\\t\\tif(target && target !== \\\"\\\") {\\n\\t\\t\\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\\n\\t\\t\\tif(target.indexOf(\\\"[[\\\") === 0 && target.substr(-2) === \\\"]]\\\") {\\n\\t\\t\\t\\ttarget = target.substr(2,target.length - 4);\\n\\t\\t\\t}\\n\\t\\t\\tstory.addToHistory(target);\\n\\t\\t} else if(storyList.length > 0) {\\n\\t\\t\\tstory.addToHistory(storyList[0]);\\n\\t\\t}\\n\\t}\\n}\\n\\n/*\\noptions: See below\\noptions.updateAddressBar: \\\"permalink\\\", \\\"permaview\\\" or \\\"no\\\" (defaults to \\\"permaview\\\")\\noptions.updateHistory: \\\"yes\\\" or \\\"no\\\" (defaults to \\\"no\\\")\\noptions.copyToClipboard: \\\"permalink\\\", \\\"permaview\\\" or \\\"no\\\" (defaults to \\\"no\\\")\\noptions.targetTiddler: optional title of target tiddler for permalink\\n*/\\nfunction updateLocationHash(options) {\\n\\t// Get the story and the history stack\\n\\tvar storyList = $tw.wiki.getTiddlerList($tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/StoryList-1\\\" : DEFAULT_STORY_TITLE),\\n\\t\\thistoryList = $tw.wiki.getTiddlerData($tw.wiki.getTiddlerText(\\\"$:/layout\\\") === \\\"$:/plugins/BTC/TiddlyFlex/ui/Layout\\\" ? \\\"$:/HistoryList-1\\\" : DEFAULT_HISTORY_TITLE,[]),\\n\\t\\ttargetTiddler = \\\"\\\";\\n\\tif(options.targetTiddler) {\\n\\t\\ttargetTiddler = options.targetTiddler;\\n\\t} else {\\n\\t\\t// The target tiddler is the one at the top of the stack\\n\\t\\tif(historyList.length > 0) {\\n\\t\\t\\ttargetTiddler = historyList[historyList.length-1].title;\\n\\t\\t}\\n\\t\\t// Blank the target tiddler if it isn't present in the story\\n\\t\\tif(storyList.indexOf(targetTiddler) === -1) {\\n\\t\\t\\ttargetTiddler = \\\"\\\";\\n\\t\\t}\\n\\t}\\n\\t// Assemble the location hash\\n\\tswitch(options.updateAddressBar) {\\n\\t\\tcase \\\"permalink\\\":\\n\\t\\t\\t$tw.locationHash = \\\"#\\\" + encodeURIComponent(targetTiddler);\\n\\t\\t\\tbreak;\\n\\t\\tcase \\\"permaview\\\":\\n\\t\\t\\t$tw.locationHash = \\\"#\\\" + encodeURIComponent(targetTiddler) + \\\":\\\" + encodeURIComponent($tw.utils.stringifyList(storyList));\\n\\t\\t\\tbreak;\\n\\t}\\n\\t// Copy URL to the clipboard\\n\\tswitch(options.copyToClipboard) {\\n\\t\\tcase \\\"permalink\\\":\\n\\t\\t\\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \\\"#\\\" + encodeURIComponent(targetTiddler));\\n\\t\\t\\tbreak;\\n\\t\\tcase \\\"permaview\\\":\\n\\t\\t\\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \\\"#\\\" + encodeURIComponent(targetTiddler) + \\\":\\\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\\n\\t\\t\\tbreak;\\n\\t}\\n\\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\\n\\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\\n\\t\\tif(options.updateHistory === \\\"yes\\\") {\\n\\t\\t\\t// Assign the location hash so that history is updated\\n\\t\\t\\twindow.location.hash = $tw.locationHash;\\n\\t\\t} else {\\n\\t\\t\\t// We use replace so that browser history isn't affected\\n\\t\\t\\twindow.location.replace(window.location.toString().split(\\\"#\\\")[0] + $tw.locationHash);\\n\\t\\t}\\n\\t}\\n}\\n\\n})();\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/startup/story.js\",\"module-type\":\"startup\"},\"$:/plugins/BTC/TiddlyFlex/modules/utils/dom/tiddlyflex-utils.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/utils/dom/tiddlyflex-utils.js\\ntype: application/javascript\\nmodule-type: utils\\n\\nBrowser data transfer utilities, used with the clipboard and drag and drop\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nOptions:\\n\\ndomNode: dom node to make draggable\\nselector: CSS selector to identify element within domNode to be used as drag handle (optional)\\ndragImageType: \\\"pill\\\", \\\"blank\\\" or \\\"dom\\\" (the default)\\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\\nwidget: widget to use as the context for the filter\\n*/\\nexports.makeTiddlyFlexDraggable = function(options) {\\n\\tvar dragImageType = options.dragImageType || \\\"dom\\\",\\n\\t\\tdragImage,\\n\\t\\tdomNode = options.domNode,\\n\\t\\tremoveEventHandler = options.remove;\\n\\t// Make the dom node draggable (not necessary for anchor tags)\\n\\tif(!options.selector && ((domNode.tagName || \\\"\\\").toLowerCase() !== \\\"a\\\")) {\\n\\t\\tdomNode.setAttribute(\\\"draggable\\\",\\\"true\\\");\\n\\t}\\n\\tvar dragStartHandlerFunction = function(event) {\\n\\t\\tif(event.dataTransfer === undefined) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\t// Collect the tiddlers being dragged\\n\\t\\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\\n\\t\\t\\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\\n\\t\\t\\ttitles = dragTiddler ? [dragTiddler] : [],\\n\\t\\t\\tstartActions = options.startActions,\\n\\t\\t\\tvariables,\\n\\t\\t\\tdomNodeRect;\\n\\t\\tif(dragFilter) {\\n\\t\\t\\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\\n\\t\\t}\\n\\t\\tvar titleString = $tw.utils.stringifyList(titles);\\n\\t\\t// Check that we've something to drag\\n\\t\\tif(titles.length > 0 && (options.selector && $tw.utils.domMatchesSelector(event.target,options.selector) || event.target === domNode)) {\\n\\t\\t\\t// Mark the drag in progress\\n\\t\\t\\t$tw.dragInProgress = domNode;\\n\\t\\t\\t// Set the dragging class on the element being dragged\\n\\t\\t\\t$tw.utils.addClass(domNode,\\\"tc-dragging\\\");\\n\\t\\t\\t// Invoke drag-start actions if given\\n\\t\\t\\tif(startActions !== undefined) {\\n\\t\\t\\t\\t// Collect our variables\\n\\t\\t\\t\\tvariables = $tw.utils.collectDOMVariables(domNode,null,event);\\n\\t\\t\\t\\tvariables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\\n\\t\\t\\t\\tvariables[\\\"actionTiddler\\\"] = titleString;\\n\\t\\t\\t\\toptions.widget.invokeActionString(startActions,options.widget,event,variables);\\n\\t\\t\\t}\\n\\t\\t\\t// Create the drag image elements\\n\\t\\t\\tdragImage = options.widget.document.createElement(\\\"div\\\");\\n\\t\\t\\tdragImage.className = \\\"tc-tiddler-dragger\\\";\\n\\t\\t\\tvar inner = options.widget.document.createElement(\\\"div\\\");\\n\\t\\t\\tinner.className = \\\"tc-tiddler-dragger-inner\\\";\\n\\t\\t\\tinner.appendChild(options.widget.document.createTextNode(\\n\\t\\t\\t\\ttitles.length === 1 ? \\n\\t\\t\\t\\t\\ttitles[0] :\\n\\t\\t\\t\\t\\ttitles.length + \\\" tiddlers\\\"\\n\\t\\t\\t));\\n\\t\\t\\tdragImage.appendChild(inner);\\n\\t\\t\\toptions.widget.document.body.appendChild(dragImage);\\n\\t\\t\\t// Set the data transfer properties\\n\\t\\t\\tvar dataTransfer = event.dataTransfer;\\n\\t\\t\\t// Set up the image\\n\\t\\t\\tdataTransfer.effectAllowed = \\\"all\\\";\\n\\t\\t\\tif(dataTransfer.setDragImage) {\\n\\t\\t\\t\\tif(dragImageType === \\\"pill\\\") {\\n\\t\\t\\t\\t\\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\\n\\t\\t\\t\\t} else if(dragImageType === \\\"blank\\\") {\\n\\t\\t\\t\\t\\tdragImage.removeChild(dragImage.firstChild);\\n\\t\\t\\t\\t\\tdataTransfer.setDragImage(dragImage,0,0);\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tvar r = domNode.getBoundingClientRect();\\n\\t\\t\\t\\t\\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t// Set up the data transfer\\n\\t\\t\\tif(dataTransfer.clearData) {\\n\\t\\t\\t\\tdataTransfer.clearData();\\n\\t\\t\\t}\\n\\t\\t\\tvar jsonData = [];\\n\\t\\t\\tif(titles.length > 1) {\\n\\t\\t\\t\\ttitles.forEach(function(title) {\\n\\t\\t\\t\\t\\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\\n\\t\\t\\t\\t});\\n\\t\\t\\t\\tjsonData = \\\"[\\\" + jsonData.join(\\\",\\\") + \\\"]\\\";\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\\n\\t\\t\\t}\\n\\t\\t\\t// IE doesn't like these content types\\n\\t\\t\\tif(!$tw.browser.isIE) {\\n\\t\\t\\t\\tdataTransfer.setData(\\\"text/vnd.tiddler\\\",jsonData);\\n\\t\\t\\t\\tdataTransfer.setData(\\\"text/plain\\\",titleString);\\n\\t\\t\\t\\tdataTransfer.setData(\\\"text/x-moz-url\\\",\\\"data:text/vnd.tiddler,\\\" + encodeURIComponent(jsonData));\\n\\t\\t\\t}\\n\\t\\t\\t// If browser is Chrome-like and has a touch-input device do NOT .setData\\n\\t\\t\\tif(!($tw.browser.isMobileChrome)) {\\n\\t\\t\\t\\tdataTransfer.setData(\\\"URL\\\",\\\"data:text/vnd.tiddler,\\\" + encodeURIComponent(jsonData));\\n\\t\\t\\t}\\n\\t\\t\\tdataTransfer.setData(\\\"Text\\\",titleString);\\n\\t\\t\\tevent.stopPropagation();\\n\\t\\t}\\n\\t\\treturn false;\\n\\t};\\n\\n\\tvar dragEndHandlerFunction = function(event) {\\n\\t\\tif((options.selector && $tw.utils.domMatchesSelector(event.target,options.selector)) || event.target === domNode) {\\n\\t\\t\\t// Collect the tiddlers being dragged\\n\\t\\t\\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\\n\\t\\t\\t\\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\\n\\t\\t\\t\\ttitles = dragTiddler ? [dragTiddler] : [],\\n\\t\\t\\t\\tendActions = options.endActions,\\n\\t\\t\\t\\tvariables;\\n\\t\\t\\tif(dragFilter) {\\n\\t\\t\\t\\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\\n\\t\\t\\t}\\n\\t\\t\\tvar titleString = $tw.utils.stringifyList(titles);\\n\\t\\t\\t$tw.dragInProgress = null;\\n\\t\\t\\t// Invoke drag-end actions if given\\n\\t\\t\\tif(endActions !== undefined) {\\n\\t\\t\\t\\tvariables = $tw.utils.collectDOMVariables(domNode,null,event);\\n\\t\\t\\t\\tvariables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\\n\\t\\t\\t\\tvariables[\\\"actionTiddler\\\"] = titleString;\\n\\t\\t\\t\\toptions.widget.invokeActionString(endActions,options.widget,event,variables);\\n\\t\\t\\t}\\n\\t\\t\\t// Remove the dragging class on the element being dragged\\n\\t\\t\\t$tw.utils.removeClass(domNode,\\\"tc-dragging\\\");\\n\\t\\t\\t// Delete the drag image element\\n\\t\\t\\tif(dragImage) {\\n\\t\\t\\t\\tdragImage.parentNode.removeChild(dragImage);\\n\\t\\t\\t\\tdragImage = null;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn false;\\n\\t};\\n\\n\\t// Add event handlers\\n\\toptions.widget.dragStartListenerReference = dragStartHandlerFunction;\\n\\toptions.widget.dragEndListenerReference = dragEndHandlerFunction;\\n\\t$tw.utils.addEventListeners(domNode,[\\n\\t\\t{name: \\\"dragstart\\\", handlerFunction: dragStartHandlerFunction},\\n\\t\\t{name: \\\"dragend\\\", handlerFunction: dragEndHandlerFunction}\\n\\t]);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/utils/dom/tiddlyflex-utils.js\",\"module-type\":\"utils\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/tiddlyflex-draggable.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/tiddlyflex-draggable.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nDraggable widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar DraggableWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nDraggableWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nDraggableWidget.prototype.render = function(parent,nextSibling) {\\n\\tvar self = this,\\n\\t\\ttag,\\n\\t\\tdomNode,\\n\\t\\tclasses = [];\\n\\t// Save the parent dom node\\n\\tthis.parentDomNode = parent;\\n\\t// Compute our attributes\\n\\tthis.computeAttributes();\\n\\t// Execute our logic\\n\\tthis.execute();\\n\\t// Sanitise the specified tag\\n\\ttag = this.draggableTag;\\n\\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\\n\\t\\ttag = \\\"div\\\";\\n\\t}\\n\\t// Create our element\\n\\tdomNode = this.document.createElement(tag);\\n\\t// Assign classes\\n\\tif(this.draggableClasses) {\\n\\t\\tclasses.push(this.draggableClasses);\\n\\t}\\n\\tif(!this.dragHandleSelector && this.dragEnable) {\\n\\t\\tclasses.push(\\\"tc-draggable\\\");\\n\\t}\\n\\tdomNode.setAttribute(\\\"class\\\",classes.join(\\\" \\\"));\\n\\t// Assign data- attributes and style. attributes\\n\\tthis.assignAttributes(domNode,{\\n\\t\\tsourcePrefix: \\\"data-\\\",\\n\\t\\tdestPrefix: \\\"data-\\\"\\n\\t});\\n\\t// Insert the node into the DOM and render any children\\n\\tparent.insertBefore(domNode,nextSibling);\\n\\tthis.renderChildren(domNode,null);\\n\\tthis.makeDraggable(domNode);\\n\\tthis.domNodes.push(domNode);\\n};\\n\\nDraggableWidget.prototype.makeDraggable = function(domNode) {\\n\\tvar self = this;\\n\\t// Add event handlers\\n\\tif(this.dragEnable) {\\n\\t\\t$tw.utils.makeTiddlyFlexDraggable({\\n\\t\\t\\tdomNode: domNode,\\n\\t\\t\\tremove: false,\\n\\t\\t\\tdragTiddlerFn: function() {return self.getAttribute(\\\"tiddler\\\");},\\n\\t\\t\\tdragFilterFn: function() {return self.getAttribute(\\\"filter\\\");},\\n\\t\\t\\tstartActions: self.startActions,\\n\\t\\t\\tendActions: self.endActions,\\n\\t\\t\\tdragImageType: self.dragImageType,\\n\\t\\t\\twidget: this,\\n\\t\\t\\tselector: self.dragHandleSelector\\n\\t\\t});\\n\\t} else if(this.dragStartListenerReference && this.dragEndListenerReference) {\\n\\t\\tdomNode.removeEventListener(\\\"dragstart\\\",this.dragStartListenerReference,false);\\n\\t\\tdomNode.removeEventListener(\\\"dragend\\\",this.dragEndListenerReference,false);\\n\\t\\tdomNode.removeAttribute(\\\"draggable\\\");\\n\\t}\\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nDraggableWidget.prototype.execute = function() {\\n\\t// Pick up our attributes\\n\\tthis.draggableTag = this.getAttribute(\\\"tag\\\",\\\"div\\\");\\n\\tthis.draggableClasses = this.getAttribute(\\\"class\\\");\\n\\tthis.startActions = this.getAttribute(\\\"startactions\\\");\\n\\tthis.endActions = this.getAttribute(\\\"endactions\\\");\\n\\tthis.dragImageType = this.getAttribute(\\\"dragimagetype\\\");\\n\\tthis.dragHandleSelector = this.getAttribute(\\\"selector\\\");\\n\\tthis.dragEnable = this.getAttribute(\\\"enable\\\",\\\"yes\\\") === \\\"yes\\\";\\n\\t// Make the child widgets\\n\\tthis.makeChildWidgets();\\n};\\n\\n\\nDraggableWidget.prototype.updateDomNodeClasses = function() {\\n\\tvar domNodeClasses = this.domNodes[0].className.split(\\\" \\\"),\\n\\t\\toldClasses = this.draggableClasses.split(\\\" \\\");\\n\\tthis.draggableClasses = this.getAttribute(\\\"class\\\");\\n\\t//Remove classes assigned from the old value of class attribute\\n\\t$tw.utils.each(oldClasses,function(oldClass){\\n\\t\\tvar i = domNodeClasses.indexOf(oldClass);\\n\\t\\tif(i !== -1) {\\n\\t\\t\\tdomNodeClasses.splice(i,1);\\n\\t\\t}\\n\\t});\\n\\t//Add new classes from updated class attribute.\\n\\t$tw.utils.pushTop(domNodeClasses,this.draggableClasses);\\n\\tthis.domNodes[0].setAttribute(\\\"class\\\",domNodeClasses.join(\\\" \\\"));\\n}\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nDraggableWidget.prototype.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.tag || changedAttributes.selector || changedAttributes.dragimagetype || changedAttributes.startactions || changedAttributes.endactions) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\tif(changedAttributes[\\\"enable\\\"]) {\\n\\t\\t\\tthis.dragEnable = this.getAttribute(\\\"enable\\\",\\\"yes\\\") === \\\"yes\\\";\\n\\t\\t\\tthis.makeDraggable(this.domNodes[0]);\\n\\t\\t\\tif(!this.dragHandleSelector && this.dragEnable && !this.domNodes[0].classList.contains(\\\"tc-draggable\\\")) {\\n\\t\\t\\t\\tthis.domNodes[0].classList.add(\\\"tc-draggable\\\");\\n\\t\\t\\t} else if(!this.dragHandleSelector && !this.dragEnable && this.domNodes[0].classList.contains(\\\"tc-draggable\\\")) {\\n\\t\\t\\t\\tthis.domNodes[0].classList.remove(\\\"tc-draggable\\\");\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tif(changedAttributes[\\\"class\\\"]) {\\n\\t\\t\\tthis.updateDomNodeClasses();\\n\\t\\t}\\n\\t\\tthis.assignAttributes(this.domNodes[0],{\\n\\t\\t\\tchangedAttributes: changedAttributes,\\n\\t\\t\\tsourcePrefix: \\\"data-\\\",\\n\\t\\t\\tdestPrefix: \\\"data-\\\"\\n\\t\\t});\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\nexports[\\\"tiddlyflex-draggable\\\"] = DraggableWidget;\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/tiddlyflex-draggable.js\",\"module-type\":\"widget\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/dynanode.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/dynanode.js\\ntype: application/javascript\\nmodule-type: widget\\n\\nDynaNode widget\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nvar STATE_OUT_OF_VIEW = \\\"0\\\",\\n\\tSTATE_NEAR_VIEW = \\\"1\\\",\\n\\tSTATE_IN_VIEW = \\\"2\\\";\\n\\nvar ANIM_FRAME_CAUSED_BY_LOAD = 1, // Animation frame was requested because of page load\\n\\tANIM_FRAME_CAUSED_BY_SCROLL = 2, // Animation frame was requested because of page scroll\\n\\tANIM_FRAME_CAUSED_BY_RESIZE = 4; // Animation frame was requested because of window resize\\n\\nvar Widget = require(\\\"$:/core/modules/widgets/widget.js\\\").widget;\\n\\nvar DynaNodeWidget = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\n/*\\nInherit from the base widget class\\n*/\\nDynaNodeWidget.prototype = new Widget();\\n\\n/*\\nRender this widget into the DOM\\n*/\\nDynaNodeWidget.prototype.render = function(parent,nextSibling) {\\n\\tvar self = this;\\n\\t// Remember domNode\\n\\tthis.parentDomNode = parent;\\n\\t// Compute attributes and execute state\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\t// Create element\\n\\tvar tag = this.parseTreeNode.isBlock ? \\\"div\\\" : \\\"span\\\";\\n\\tif(this.elementTag && $tw.config.htmlUnsafeElements.indexOf(this.elementTag) === -1) {\\n\\t\\ttag = this.elementTag;\\n\\t}\\n\\tvar domNode = this.document.createElement(tag);\\n\\tthis.domNode = domNode;\\n\\t// Assign classes\\n\\tthis.assignDomNodeClasses();\\n\\tthis.assignAttributes(domNode,{\\n\\t\\tsourcePrefix: \\\"data-\\\",\\n\\t\\tdestPrefix: \\\"data-\\\"\\n\\t});\\n\\n\\tthis.isWaitingForAnimationFrame = 0;\\n\\tthis.changedTiddlers = {};\\n\\tthis.dynanodeElements = [];\\n\\tthis.spaced = new WeakMap();\\n\\tthis.spacedTimestamps = new WeakMap();\\n\\tthis.stateMap = new WeakMap();\\n\\n\\tfunction worker() {\\n\\t\\tfor(var i=0; i\u003Cself.dynanodeElements.length; i++) {\\n\\t\\t\\tself.reserveSpace(self.dynanodeElements.length,i,self.dynanodeElements[i]);\\n\\t\\t}\\n\\t};\\n\\n\\tthis.onScroll = function(event) {\\n\\t\\tif(!self.isWaitingForAnimationFrame) {\\n\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(worker);\\n\\t\\t}\\n\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_SCROLL;\\n\\t};\\n\\n\\tthis.onResize = function(event) {\\n\\t\\tif(!self.isWaitingForAnimationFrame) {\\n\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(worker);\\n\\t\\t}\\n\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_RESIZE;\\n\\t};\\n\\n\\tthis.dynanodeWorker = function(entries) {\\n\\t\\tvar length = entries.length;\\n\\t\\tfor(var i=0; i\u003Clength; i++) {\\n\\t\\t\\tvar entry= entries[i];\\n\\t\\t\\tif(entry.target) {\\n\\t\\t\\t\\tif(self.dynanodeElements.indexOf(entry.target) === -1) {\\n\\t\\t\\t\\t\\tself.dynanodeElements.push(entry.target);\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else if(self.dynanodeElements.indexOf(entry) === -1) {\\n\\t\\t\\t\\tself.dynanodeElements.push(entry);\\n\\t\\t\\t}\\n\\t\\t\\tvar rect = entry.contentRect ? entry.contentRect : undefined;\\n\\t\\t\\tvar target = entry.target ? entry.target : entry;\\n\\t\\t\\tself.reserveSpace(length,i,target,rect);\\n\\t\\t}\\n\\t};\\n\\n\\tthis.resizeObserver = new ResizeObserver(function(entries) {\\n\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\tif(!Array.isArray(entries) || !entries.length) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\tif(self.isWaitingForAnimationFrame) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\t\\t\\tif(!self.isWaitingForAnimationFrame) {\\n\\t\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\t\\t\\tself.dynanodeWorker(entries);\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_RESIZE;\\n\\t\\t});\\n\\t});\\n\\n\\tthis.mutationObserver = new MutationObserver(function(mutations) {\\n\\t\\tvar childListChanged = false;\\n\\t\\tvar addedNodes = [],\\n\\t\\t\\tremovedNodes = [];\\n\\t\\tfor(var i=0; i\u003Cmutations.length; i++) {\\n\\t\\t\\tvar mutation = mutations[i];\\n\\t\\t\\tif(mutation.type === \\\"childList\\\") {\\n\\t\\t\\t\\tfor(var j=0; j\u003Cmutation.addedNodes.length; j++) {\\n\\t\\t\\t\\t\\tvar addedNode = mutation.addedNodes[j];\\n\\t\\t\\t\\t\\tif((addedNode.matches || addedNode.msMatchesSelector) && $tw.utils.domMatchesSelector(addedNode,self.dynanodeSelector)) {\\n\\t\\t\\t\\t\\t\\taddedNodes.push(addedNode);\\n\\t\\t\\t\\t\\t\\tif(j === (mutation.addedNodes.length - 1)) {\\n\\t\\t\\t\\t\\t\\t\\tfor(var k=0; k\u003CaddedNodes.length; k++) {\\n\\t\\t\\t\\t\\t\\t\\t\\tif(self.dynanodeElements.indexOf(addedNodes[k]) === -1) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tself.dynanodeElements.push(addedNodes[k]);\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\tself.resizeObserver.observe(addedNodes[k]);\\n\\t\\t\\t\\t\\t\\t\\t\\tif(k === (addedNodes.length - 1)) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif(!self.isWaitingForAnimationFrame) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.dynanodeWorker(addedNodes);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_LOAD;\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tfor(j=0; j\u003Cmutation.removedNodes.length; j++) {\\n\\t\\t\\t\\t\\tvar removedNode = mutation.removedNodes[j];\\n\\t\\t\\t\\t\\tif((removedNode.matches || removedNode.msMatchesSelector) && $tw.utils.domMatchesSelector(removedNode,self.dynanodeRemoveSelector)) {\\n\\t\\t\\t\\t\\t\\tremovedNodes.push(removedNode);\\n\\t\\t\\t\\t\\t\\tif(j === (mutation.removedNodes.length - 1)) {\\n\\t\\t\\t\\t\\t\\t\\tfor(var k=0; k\u003CremovedNodes.length; k++) {\\n\\t\\t\\t\\t\\t\\t\\t\\tfor(var l=0; l\u003Cself.dynanodeElements.length; l++) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar dynanodeElement = self.dynanodeElements[l];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif((removedNodes[k] === dynanodeElement) || (removedNodes[k].contains(dynanodeElement))) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.resizeObserver.unobserve(dynanodeElement);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.dynanodeElements.splice(l,1);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.spaced.delete(dynanodeElement);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.spacedTimestamps.delete(dynanodeElement);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.stateMap.delete(dynanodeElement);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\tif(k === (removedNodes.length - 1)) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif(!self.isWaitingForAnimationFrame) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(worker);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_LOAD;\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t});\\n\\n\\tif(this.dynanodeEnable) {\\n\\t\\tdomNode.addEventListener(\\\"scroll\\\",this.onScroll,false);\\n\\t\\tdomNode.addEventListener(\\\"resize\\\",this.onResize,false);\\n\\t\\tdomNode.ownerDocument.defaultView.addEventListener(\\\"resize\\\",this.onResize,false);\\n\\t\\tthis.mutationObserver.observe(domNode,{childList: true, subtree: true});\\n\\t}\\n\\n\\t// Insert element\\n\\tparent.insertBefore(domNode,nextSibling);\\n\\tthis.renderChildren(domNode,null);\\n\\tthis.domNodes.push(domNode);\\n\\n\\tif(this.dynanodeEnable) {\\n\\t\\tthis.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\t\\tvar elements = self.domNode.querySelectorAll(self.dynanodeSelector);\\n\\t\\t\\t\\tself.dynanodeWorker(elements);\\n\\t\\t\\t});\\n\\t\\t});\\n\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_LOAD;\\n\\t}\\n};\\n\\nDynaNodeWidget.prototype.eqIsh = function(a,b,fuzz = 0) {\\n\\treturn (Math.abs(a - b) \u003C= fuzz);\\n};\\n\\nDynaNodeWidget.prototype.rectNotEQ = function(a,b) {\\n\\treturn (!this.eqIsh(a.width, b.width) ||\\n\\t\\t\\t!this.eqIsh(a.height, b.height));\\n};\\n\\nDynaNodeWidget.prototype.reserveSpace = function(length,i,element,rect) {\\n\\tif(rect === undefined) {\\n\\t\\tvar bounds = element.getBoundingClientRect(),\\n\\t\\t\\twidth = bounds.width,\\n\\t\\t\\theight = bounds.height;\\n\\t\\tvar computedStyle = this.domNode.ownerDocument.defaultView.getComputedStyle(element);\\n\\t\\trect = {\\n\\t\\t\\twidth: width - (parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight) + parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth)),\\n\\t\\t\\theight: height - (parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom) + parseFloat(computedStyle.borderTopWidth) + parseFloat(computedStyle.borderBottomWidth))\\n\\t\\t};\\n\\t}\\n\\tvar old = this.spaced.get(element);\\n\\tvar oldTimestamp = this.spacedTimestamps.get(element),\\n\\t\\tnewTimestamp = Date.now();\\n\\tif(!old || this.rectNotEQ(old,rect)) {\\n\\t\\tthis.spaced.set(element,rect);\\n\\t\\tthis.spacedTimestamps.set(element,newTimestamp);\\n\\t\\tif(oldTimestamp === undefined) {\\n\\t\\t\\toldTimestamp = newTimestamp - this.dynanodeTimeout;\\n\\t\\t}\\n\\t\\tif((newTimestamp - oldTimestamp) >= this.dynanodeTimeout) {\\n\\t\\t\\t$tw.utils.setStyle(element,[\\n\\t\\t\\t\\t{ containIntrinsicSize: `${rect.width}px ${rect.height}px` }\\n\\t\\t\\t]);\\n\\t\\t}\\n\\t}\\n\\tif(i === (length - 1)) {\\n\\t\\tthis.checkVisibility();\\n\\t}\\n};\\n\\nDynaNodeWidget.prototype.checkVisibility = function() {\\n\\tvar self = this;\\n\\tvar elements = this.dynanodeElements;\\n\\tvar visibilityChanged = false;\\n\\tvar domNodeWidth = this.domNode.offsetWidth,\\n\\t\\tdomNodeHeight = this.domNode.offsetHeight,\\n\\t\\tdomNodeBounds = this.domNode.getBoundingClientRect();\\n\\n\\tvar domNodeRect = {\\n\\t\\tleft: domNodeBounds.left,\\n\\t\\tright: domNodeBounds.left + domNodeWidth,\\n\\t\\ttop: domNodeBounds.top,\\n\\t\\tbottom: domNodeBounds.top + domNodeHeight\\n\\t};\\n\\tfor(var i=0; i\u003Celements.length; i++) {\\n\\t\\tvar element = elements[i];\\n\\t\\tvar oldTimestamp = this.spacedTimestamps.get(element),\\n\\t\\t\\tnewTimestamp = Date.now();\\n\\t\\tif((newTimestamp - oldTimestamp) >= self.dynanodeTimeout) {\\n\\t\\t\\t// Calculate whether the element is visible\\n\\t\\t\\tvar elementRect = element.getBoundingClientRect();\\n\\t\\t\\tvar currValue = self.stateMap.get(element),//self.wiki.getTiddlerText(title),\\n\\t\\t\\t\\tnewValue = currValue;\\n\\t\\t\\t// Within viewport\\n\\t\\t\\tif(!(elementRect.left > domNodeRect.right || \\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.right \u003C domNodeRect.left || \\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.top > domNodeRect.bottom ||\\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.bottom \u003C domNodeRect.top)) {\\n\\t\\t\\t\\tnewValue = STATE_IN_VIEW;\\n\\t\\t\\t// Near viewport\\n\\t\\t\\t} else if(!(elementRect.left > (domNodeRect.right + domNodeWidth) || \\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.right \u003C (domNodeRect.left - domNodeWidth) || \\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.top > (domNodeRect.bottom + domNodeHeight) ||\\n\\t\\t\\t\\t\\t\\t\\t\\telementRect.bottom \u003C (domNodeRect.top - domNodeHeight))) {\\n\\t\\t\\t\\tnewValue = STATE_NEAR_VIEW;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tnewValue = STATE_OUT_OF_VIEW;\\n\\t\\t\\t}\\n\\t\\t\\tif(newValue !== currValue) {\\n\\t\\t\\t\\tself.stateMap.set(element,newValue);\\n\\t\\t\\t\\tif(newValue === STATE_IN_VIEW) {\\n\\t\\t\\t\\t\\t$tw.utils.addClass(element,\\\"tc-dynanode-visible\\\");\\n\\t\\t\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-near\\\");\\n\\t\\t\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-hidden\\\");\\n\\t\\t\\t\\t\\t$tw.utils.setStyle(element,[\\n\\t\\t\\t\\t\\t\\t{ contentVisibility: null }\\n\\t\\t\\t\\t\\t]);\\n\\t\\t\\t\\t\\tif(currValue !== undefined) {\\n\\t\\t\\t\\t\\t\\tvisibilityChanged = true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif(newValue === STATE_NEAR_VIEW) {\\n\\t\\t\\t\\t\\t$tw.utils.addClass(element,\\\"tc-dynanode-near\\\");\\n\\t\\t\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-visible\\\");\\n\\t\\t\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-hidden\\\");\\n\\t\\t\\t\\t\\tif(element.style[\\\"content-visibility\\\"] !== \\\"auto\\\") {\\n\\t\\t\\t\\t\\t\\t$tw.utils.setStyle(element,[\\n\\t\\t\\t\\t\\t\\t\\t{ contentVisibility: \\\"auto\\\" }\\n\\t\\t\\t\\t\\t\\t]);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif(newValue === STATE_OUT_OF_VIEW) {\\n\\t\\t\\t\\t\\t$tw.utils.addClass(element,\\\"tc-dynanode-hidden\\\");\\n\\t\\t\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-visible\\\");\\n\\t\\t\\t\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-near\\\");\\n\\t\\t\\t\\t\\tif(element.style[\\\"content-visibility\\\"] !== \\\"auto\\\") {\\n\\t\\t\\t\\t\\t\\t$tw.utils.setStyle(element,[\\n\\t\\t\\t\\t\\t\\t\\t{ contentVisibility: \\\"auto\\\" }\\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\\tif(i === (elements.length - 1)) {\\n\\t\\t\\t//if(visibilityChanged) {\\n\\t\\t\\tvar refreshed = self.refreshChildren(self.changedTiddlers,self.dynanodeRefreshChildren);\\n\\t\\t\\tif(refreshed) {\\n\\t\\t\\t\\tself.changedTiddlers = {};\\n\\t\\t\\t}\\n\\t\\t\\t//}\\n\\t\\t\\tself.isWaitingForAnimationFrame = 0;\\n\\t\\t}\\n\\t}\\n};\\n\\nDynaNodeWidget.prototype.clearElementStyles = function() {\\n\\tfor(var i=0; i\u003Cthis.dynanodeElements.length; i++) {\\n\\t\\tvar element = this.dynanodeElements[i];\\n\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-visible\\\");\\n\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-near\\\");\\n\\t\\t$tw.utils.removeClass(element,\\\"tc-dynanode-hidden\\\");\\n\\t\\t$tw.utils.setStyle(element,[\\n\\t\\t\\t{ contentVisibility: null },\\n\\t\\t\\t{ containIntrinsicSize: null }\\n\\t\\t]);\\n\\t\\tif(i === (this.dynanodeElements.length - 1)) {\\n\\t\\t\\tthis.dynanodeElements = [];\\n\\t\\t\\tthis.spaced = new WeakMap();\\n\\t\\t\\tthis.spacedTimestamps = new WeakMap();\\n\\t\\t\\tthis.stateMap = new WeakMap();\\n\\t\\t}\\n\\t}\\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nDynaNodeWidget.prototype.execute = function() {\\n\\tvar self = this;\\n\\tthis.elementTag = this.getAttribute(\\\"tag\\\");\\n\\tthis.dynanodeEnable = this.getAttribute(\\\"enable\\\",\\\"no\\\") === \\\"yes\\\";\\n\\tthis.dynanodeSelector = this.getAttribute(\\\"selector\\\",\\\".tc-dynanode-track-tiddler-when-visible\\\");\\n\\tthis.dynanodeRemoveSelector = this.getAttribute(\\\"removeselector\\\",\\\".tc-dynanode-track-tiddler-when-visible\\\");\\n\\tthis.dynanodeTimeout = parseInt(this.getAttribute(\\\"timeout\\\",\\\"25\\\"));\\n\\tthis.dynanodeRefreshChildren = this.getAttribute(\\\"refreshchildren\\\",\\\"no\\\") === \\\"yes\\\";\\n\\t// Make child widgets\\n\\tthis.makeChildWidgets();\\n};\\n\\nDynaNodeWidget.prototype.assignDomNodeClasses = function() {\\n\\tvar classes = this.getAttribute(\\\"class\\\",\\\"\\\").split(\\\" \\\");\\n\\tclasses.push(\\\"tc-dynanode\\\");\\n\\tthis.domNode.className = classes.join(\\\" \\\");\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nDynaNodeWidget.prototype.refresh = function(changedTiddlers) {\\n\\tvar self = this;\\n\\tfor(var obj in changedTiddlers) {\\n\\t\\tthis.changedTiddlers[obj] = changedTiddlers[obj];\\n\\t}\\n\\tvar changedAttributes = this.computeAttributes(),\\n\\t\\tchangedAttributesCount = $tw.utils.count(changedAttributes);\\n\\tif(changedAttributesCount === 1 && changedAttributes[\\\"class\\\"]) {\\n\\t\\tthis.assignDomNodeClasses();\\n\\t} else if(changedAttributes.tag || changedAttributes.selector) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else if(changedAttributes.enable) {\\n\\t\\tthis.dynanodeEnable = this.getAttribute(\\\"enable\\\",\\\"no\\\") === \\\"yes\\\";\\n\\t\\tif(this.dynanodeEnable) {\\n\\t\\t\\tthis.domNode.addEventListener(\\\"scroll\\\",this.onScroll,false);\\n\\t\\t\\tthis.domNode.addEventListener(\\\"resize\\\",this.onResize,false);\\n\\t\\t\\tthis.domNode.ownerDocument.defaultView.addEventListener(\\\"resize\\\",this.onResize,false);\\n\\t\\t\\tthis.mutationObserver.observe(this.domNode,{childList: true, subtree: true});\\n\\t\\t\\tthis.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\t\\tself.domNode.ownerDocument.defaultView.requestAnimationFrame(function() {\\n\\t\\t\\t\\t\\tvar elements = self.domNode.querySelectorAll(self.dynanodeSelector);\\n\\t\\t\\t\\t\\tself.dynanodeWorker(elements);\\n\\t\\t\\t\\t\\tfor(var i=0; i\u003Celements.length; i++) {\\n\\t\\t\\t\\t\\t\\tself.resizeObserver.observe(elements[i]);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t});\\n\\t\\t\\t});\\n\\t\\t\\tself.isWaitingForAnimationFrame |= ANIM_FRAME_CAUSED_BY_LOAD;\\n\\t\\t} else {\\n\\t\\t\\tthis.domNode.removeEventListener(\\\"scroll\\\",this.onScroll,false);\\n\\t\\t\\tthis.domNode.removeEventListener(\\\"resize\\\",this.onResize,false);\\n\\t\\t\\tthis.domNode.ownerDocument.defaultView.removeEventListener(\\\"resize\\\",this.onResize,false);\\n\\t\\t\\tthis.resizeObserver.disconnect();\\n\\t\\t\\tthis.mutationObserver.disconnect();\\n\\t\\t\\tthis.clearElementStyles();\\n\\t\\t}\\n\\t} else {\\n\\t\\tthis.assignAttributes(this.domNode,{\\n\\t\\t\\tchangedAttributes: changedAttributes,\\n\\t\\t\\tsourcePrefix: \\\"data-\\\",\\n\\t\\t\\tdestPrefix: \\\"data-\\\"\\n\\t\\t});\\n\\t}\\n\\tif(changedAttributes.timeout) {\\n\\t\\tthis.dynanodeTimeout = parseInt(this.getAttribute(\\\"timeout\\\",\\\"25\\\"));\\n\\t}\\n\\tif(changedAttributes.refreshchildren) {\\n\\t\\tthis.dynanodeRefreshChildren = this.getAttribute(\\\"refreshchildren\\\",\\\"no\\\") === \\\"yes\\\";\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers);\\n};\\n\\nexports.dynanode = DynaNodeWidget;\\n\\n})();\\n\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/dynanode.js\",\"module-type\":\"widget\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/button.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/button.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"button\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.popupAbsCoords || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle || changedAttributes.disabled || changedAttributes[\\\"default\\\"]) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\tif(changedAttributes[\\\"class\\\"]) {\\n\\t\\t\\tthis.updateDomNodeClasses();\\n\\t\\t}\\n\\t\\tthis.assignAttributes(this.domNodes[0],{\\n\\t\\t\\tchangedAttributes: changedAttributes,\\n\\t\\t\\tsourcePrefix: \\\"data-\\\",\\n\\t\\t\\tdestPrefix: \\\"data-\\\"\\n\\t\\t});\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/button.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/checkbox.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/checkbox.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"checkbox\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.listField || changedAttributes.listIndex || changedAttributes.filter || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\\\"default\\\"] || changedAttributes.indeterminate || changedAttributes[\\\"class\\\"] || changedAttributes.disabled) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\tvar refreshed = false;\\n\\t\\tif(changedTiddlers[this.checkboxTitle]) {\\n\\t\\t\\tvar isChecked = this.getValue();\\n\\t\\t\\tthis.inputDomNode.checked = !!isChecked;\\n\\t\\t\\tthis.inputDomNode.indeterminate = (isChecked === undefined);\\n\\t\\t\\trefreshed = true;\\n\\t\\t\\tif(isChecked) {\\n\\t\\t\\t\\t$tw.utils.addClass(this.labelDomNode,\\\"tc-checkbox-checked\\\");\\n\\t\\t\\t} else {\\n\\t\\t\\t\\t$tw.utils.removeClass(this.labelDomNode,\\\"tc-checkbox-checked\\\");\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tthis.assignAttributes(this.inputDomNode,{\\n\\t\\t\\tchangedAttributes: changedAttributes,\\n\\t\\t\\tsourcePrefix: \\\"data-\\\",\\n\\t\\t\\tdestPrefix: \\\"data-\\\"\\n\\t\\t});\\n\\t\\treturn this.refreshChildren(changedTiddlers,force) || refreshed;\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/checkbox.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/diff-text.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/diff-text.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"diff-text\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/diff-text.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/draggable.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/draggable.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"draggable\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.tag || changedAttributes.selector || changedAttributes.dragimagetype || changedAttributes.enable || changedAttributes.startactions || changedAttributes.endactions) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\tif(changedAttributes[\\\"class\\\"]) {\\n\\t\\t\\tthis.updateDomNodeClasses();\\n\\t\\t}\\n\\t\\tthis.assignAttributes(this.domNodes[0],{\\n\\t\\t\\tchangedAttributes: changedAttributes,\\n\\t\\t\\tsourcePrefix: \\\"data-\\\",\\n\\t\\t\\tdestPrefix: \\\"data-\\\"\\n\\t\\t});\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/draggable.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/droppable.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/droppable.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"droppable\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.prototype.render = function(parent,nextSibling) {\\n\\tvar self = this,\\n\\t\\ttag = this.parseTreeNode.isBlock ? \\\"div\\\" : \\\"span\\\",\\n\\t\\tdomNode;\\n\\t// Remember parent\\n\\tthis.parentDomNode = parent;\\n\\t// Compute attributes and execute state\\n\\tthis.computeAttributes();\\n\\tthis.execute();\\n\\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\\n\\t\\ttag = this.droppableTag;\\n\\t}\\n\\t// Create element and assign classes\\n\\tdomNode = this.document.createElement(tag);\\n\\tthis.domNode = domNode;\\n\\tthis.assignDomNodeClasses();\\n\\t// Add event handlers\\n\\tif(this.droppableEnable) {\\n\\t\\t$tw.utils.addEventListeners(domNode,[\\n\\t\\t\\t{name: \\\"dragenter\\\", handlerObject: this, handlerMethod: \\\"handleDragEnterEvent\\\"},\\n\\t\\t\\t{name: \\\"dragover\\\", handlerObject: this, handlerMethod: \\\"handleDragOverEvent\\\"},\\n\\t\\t\\t{name: \\\"dragleave\\\", handlerObject: this, handlerMethod: \\\"handleDragLeaveEvent\\\"},\\n\\t\\t\\t{name: \\\"drop\\\", handlerObject: this, handlerMethod: \\\"handleDropEvent\\\"},\\n\\t\\t\\t{name: \\\"dragend\\\", handlerObject: this, handlerMethod: \\\"handleDragEndEvent\\\"}\\n\\t\\t]);\\n\\t} else {\\n\\t\\t$tw.utils.addClass(this.domNode,this.disabledClass);\\n\\t}\\n\\t// Insert element\\n\\tparent.insertBefore(domNode,nextSibling);\\n\\tthis.renderChildren(domNode,null);\\n\\tthis.domNodes.push(domNode);\\n\\t// Stack of outstanding enter/leave events\\n\\tthis.currentlyEntered = [];\\n};\\n\\nexports.prototype.handleEvent = function(event) {\\n\\tif(event.type === \\\"dragenter\\\") {\\n\\t\\tif(event.target && event.target !== this.domNode && !$tw.utils.domContains(this.domNode,event.target)) {\\n\\t\\t\\tthis.resetState(null,event);\\n\\t\\t}\\n\\t} else if(event.type === \\\"dragleave\\\") {\\n\\t\\t// Check if drag left the window\\n\\t\\tif(event.relatedTarget === null || (event.relatedTarget && event.relatedTarget.nodeName === \\\"HTML\\\")) {\\n\\t\\t\\tthis.resetState(null,event);\\n\\t\\t}\\n\\t}\\n};\\n\\nexports.prototype.resetState = function(options,event) {\\n\\toptions = options || {};\\n\\tif(this.domNodes[0]) {\\n\\t\\t$tw.utils.removeClass(this.domNodes[0],\\\"tc-dragover\\\");\\n\\t}\\n\\tthis.currentlyEntered = [];\\n\\tthis.document.body.removeEventListener(\\\"dragenter\\\",this,true);\\n\\tthis.document.body.removeEventListener(\\\"dragleave\\\",this,true);\\n\\tif(options.performDragLeaveActions && this.dragLeaveActions) {\\n\\t\\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\\n\\t\\tthis.invokeActionString(this.dragLeaveActions,this,event,{modifier: modifierKey});\\n\\t}\\n\\tif(options.performDragEndActions && this.dragEndActions) {\\n\\t\\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\\n\\t\\tthis.invokeActionString(this.dragEndActions,this,event,{modifier: modifierKey});\\n\\t}\\n};\\n\\nexports.prototype.enterDrag = function(event) {\\n\\tif(this.currentlyEntered.indexOf(event.target) === -1) {\\n\\t\\tthis.currentlyEntered.push(event.target);\\n\\t}\\n\\t// If we're entering for the first time we need to apply highlighting\\n\\t$tw.utils.addClass(this.domNodes[0],\\\"tc-dragover\\\");\\n\\tthis.document.body.addEventListener(\\\"dragenter\\\",this,true);\\n\\tthis.document.body.addEventListener(\\\"dragleave\\\",this,true);\\n\\tif(this.dragEnterActions) {\\n\\t\\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\\n\\t\\tthis.invokeActionString(this.dragEnterActions,this,event,{modifier: modifierKey});\\n\\t}\\n};\\n\\nexports.prototype.leaveDrag = function(event) {\\n\\tvar pos = this.currentlyEntered.indexOf(event.target);\\n\\tif(pos !== -1) {\\n\\t\\tthis.currentlyEntered.splice(pos,1);\\n\\t}\\n\\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\\n\\tif(this.currentlyEntered.length === 0) {\\n\\t\\tthis.resetState({performDragLeaveActions: true},event);\\n\\t}\\n};\\n\\nexports.prototype.handleDragEnterEvent = function(event) {\\n\\tthis.enterDrag(event);\\n\\t// Tell the browser that we're ready to handle the drop\\n\\tevent.preventDefault();\\n\\t// Tell the browser not to ripple the drag up to any parent drop handlers\\n\\tevent.stopPropagation();\\n\\treturn false;\\n};\\n\\nexports.prototype.handleDragOverEvent = function(event) {\\n\\t// Check for being over a TEXTAREA or INPUT\\n\\tif([\\\"TEXTAREA\\\",\\\"INPUT\\\"].indexOf(event.target.tagName) !== -1) {\\n\\t\\treturn false;\\n\\t}\\n\\t// Tell the browser that we're still interested in the drop\\n\\tevent.preventDefault();\\n\\t// Set the drop effect\\n\\tevent.dataTransfer.dropEffect = this.droppableEffect;\\n\\treturn false;\\n};\\n\\nexports.prototype.handleDragLeaveEvent = function(event) {\\n\\tthis.leaveDrag(event);\\n\\treturn false;\\n};\\n\\nexports.prototype.handleDragEndEvent = function(event) {\\n\\tthis.resetState({performDragEndActions: true});\\n};\\n\\nexports.prototype.handleDropEvent = function(event) {\\n\\tvar self = this;\\n\\tthis.leaveDrag(event);\\n\\t// Check for being over a TEXTAREA or INPUT\\n\\tif([\\\"TEXTAREA\\\",\\\"INPUT\\\"].indexOf(event.target.tagName) !== -1) {\\n\\t\\treturn false;\\n\\t}\\n\\tvar dataTransfer = event.dataTransfer;\\n\\t// Remove highlighting\\n\\tthis.resetState(null,event);\\n\\t// Try to import the various data types we understand\\n\\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\\n\\t\\tfieldsArray.forEach(function(fields) {\\n\\t\\t\\tself.performActions(fields.title || fields.text,event);\\n\\t\\t});\\n\\t});\\n\\t// Tell the browser that we handled the drop\\n\\tevent.preventDefault();\\n\\t// Stop the drop ripple up to any parent handlers\\n\\tevent.stopPropagation();\\n\\treturn false;\\n};\\n\\nexports.prototype.performActions = function(title,event) {\\n\\tif(this.droppableActions) {\\n\\t\\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\\n\\t\\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\\n\\t}\\n};\\n\\n/*\\nCompute the internal state of the widget\\n*/\\nexports.prototype.execute = function() {\\n\\tthis.droppableActions = this.getAttribute(\\\"actions\\\");\\n\\tthis.droppableEffect = this.getAttribute(\\\"effect\\\",\\\"copy\\\");\\n\\tthis.droppableTag = this.getAttribute(\\\"tag\\\");\\n\\tthis.droppableEnable = (this.getAttribute(\\\"enable\\\") || \\\"yes\\\") === \\\"yes\\\";\\n\\tthis.disabledClass = this.getAttribute(\\\"disabledClass\\\",\\\"\\\");\\n\\tthis.dragEnterActions = this.getAttribute(\\\"dragenteractions\\\");\\n\\tthis.dragLeaveActions = this.getAttribute(\\\"dragleaveactions\\\");\\n\\tthis.dragEndActions = this.getAttribute(\\\"dragendactions\\\");\\n\\t// Make child widgets\\n\\tthis.makeChildWidgets();\\n};\\n\\n/*\\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\\n*/\\nexports.prototype.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass || changedAttributes.actions || changedAttributes.effect || changedAttributes.dragenteractions || changedAttributes.dragleaveactions || changedAttributes.dragendactions) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else if(changedAttributes[\\\"class\\\"]) {\\n\\t\\tthis.assignDomNodeClasses();\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/droppable.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/dropzone.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/dropzone.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"dropzone\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif($tw.utils.count(changedAttributes) > 0) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/dropzone.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/edit-binary.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/edit-binary.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"edit-binary\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/edit-binary.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/edit-bitmap.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/edit-bitmap.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"edit-bitmap\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/edit-bitmap.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/edit.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/edit.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"edit\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\\n\\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || (this.getEditorType() !== this.editorType)) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/edit.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/element.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/element.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"element\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.prototype.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes(),\\n\\t\\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\\n\\tif(hasChangedAttributes) {\\n\\t\\tif(!this.isReplaced) {\\n\\t\\t\\t// Update our attributes\\n\\t\\t\\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\\n\\t\\t} else {\\n\\t\\t\\t// If we were replaced then completely refresh ourselves\\n\\t\\t\\treturn this.refreshSelf();\\n\\t\\t}\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force) || hasChangedAttributes;\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/element.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/eventcatcher.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/eventcatcher.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"eventcatcher\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes(),\\n\\t\\tchangedAttributesCount = $tw.utils.count(changedAttributes);\\n\\tif(changedAttributesCount === 1 && changedAttributes[\\\"class\\\"]) {\\n\\t\\tthis.assignDomNodeClasses();\\n\\t} else if(changedAttributesCount > 0) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/eventcatcher.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/fieldmangler.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/fieldmangler.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"fieldmangler\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.tiddler) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/fieldmangler.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/genesis.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/genesis.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"genesis\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes(),\\n\\t\\tfilterNames = this.getAttribute(\\\"$names\\\",\\\"\\\"),\\n\\t\\tfilterValues = this.getAttribute(\\\"$values\\\",\\\"\\\"),\\n\\t\\tattributeNames = this.wiki.filterTiddlers(filterNames,this),\\n\\t\\tattributeValues = this.wiki.filterTiddlers(filterValues,this);\\n\\tif($tw.utils.count(changedAttributes) > 0 || !$tw.utils.isArrayEqual(this.attributeNames,attributeNames) || !$tw.utils.isArrayEqual(this.attributeValues,attributeValues)) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/genesis.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/importvariables.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/importvariables.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"importvariables\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\t// Recompute our attributes and the filter list\\n\\tvar changedAttributes = this.computeAttributes(),\\n\\t\\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\\\"filter\\\"),this);\\n\\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\\n\\tfunction haveListedTiddlersChanged() {\\n\\t\\tvar changed = false;\\n\\t\\ttiddlerList.forEach(function(title) {\\n\\t\\t\\tif(changedTiddlers[title]) {\\n\\t\\t\\t\\tchanged = true;\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\treturn changed;\\n\\t}\\n\\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\\n\\t\\t// Compute the filter\\n\\t\\tthis.removeChildDomNodes();\\n\\t\\tthis.execute(tiddlerList);\\n\\t\\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/importvariables.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/keyboard.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/keyboard.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"keyboard\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes.tag) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else if(changedAttributes[\\\"class\\\"]) {\\n\\t\\tthis.assignDomNodeClasses();\\n\\t}\\n\\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\\n\\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\\n\\t\\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/keyboard.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/let.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/let.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"let\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif($tw.utils.count(changedAttributes) > 0) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/let.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/link.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/link.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"link\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif($tw.utils.count(changedAttributes) > 0 || changedTiddlers[this.to]) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/link.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/linkcatcher.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/linkcatcher.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"linkcatcher\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/linkcatcher.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/list.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/list.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"list\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/list.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/macrocall.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/macrocall.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"macrocall\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif($tw.utils.count(changedAttributes) > 0) {\\n\\t\\t// Rerender ourselves\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/macrocall.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/messagecatcher.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/messagecatcher.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"messagecatcher\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif($tw.utils.count(changedAttributes) > 0) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/messagecatcher.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/navigator.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/navigator.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"navigator\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.story || changedAttributes.history) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/navigator.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/parameters.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/parameters.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"parameters\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(Object.keys(changedAttributes).length) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/parameters.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/password.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/password.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"password\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.name) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/password.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/qualify.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/qualify.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"qualify\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.name || changedAttributes.title) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/qualify.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/radio.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/radio.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"radio\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(($tw.utils.count(changedAttributes) > 0)) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else if(changedTiddlers[this.radioTitle]) {\\n\\t\\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\\n\\t\\t$tw.utils.toggleClass(this.labelDomNode,\\\"tc-radio-selected\\\",this.inputDomNode.checked);\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/radio.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/range.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/range.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"range\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif($tw.utils.count(changedAttributes) > 0) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\tvar refreshed = false;\\n\\t\\tif(changedTiddlers[this.tiddlerTitle]) {\\n\\t\\t\\tvar value = this.getValue();\\n\\t\\t\\tif(this.inputDomNode.value !== value) {\\n\\t\\t\\t\\tthis.inputDomNode.value = value;\\n\\t\\t\\t}\\n\\t\\t\\trefreshed = true;\\n\\t\\t}\\n\\t\\treturn this.refreshChildren(changedTiddlers,force) || refreshed;\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/range.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/reveal.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/reveal.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"reveal\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes.positionAllowNegative || changedAttributes[\\\"default\\\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\tvar currentlyOpen = this.isOpen;\\n\\t\\tthis.readState();\\n\\t\\tif(this.isOpen !== currentlyOpen) {\\n\\t\\t\\tif(this.retain === \\\"yes\\\") {\\n\\t\\t\\t\\tthis.updateState();\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tthis.refreshSelf();\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t} else if(this.type === \\\"popup\\\" && this.isOpen && this.updatePopupPosition && (changedTiddlers[this.state] || changedTiddlers[this.stateTitle])) {\\n\\t\\t\\tthis.positionPopup(this.domNode);\\n\\t\\t}\\n\\t\\tif(changedAttributes.style) {\\n\\t\\t\\tthis.domNode.style = this.getAttribute(\\\"style\\\",\\\"\\\");\\n\\t\\t}\\n\\t\\tif(changedAttributes[\\\"class\\\"]) {\\n\\t\\t\\tthis.assignDomNodeClasses();\\n\\t\\t}\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/reveal.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/scrollable.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/scrollable.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"scrollable\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes[\\\"class\\\"]) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\t// If the bound tiddler has changed, update the eventListener and update scroll position\\n\\tif(changedAttributes[\\\"bind\\\"]) {\\n\\t\\tif(this.currentListener) {\\n\\t\\t\\tthis.outerDomNode.removeEventListener(\\\"scroll\\\", this.currentListener, false);\\n\\t\\t}\\n\\t\\tthis.scrollableBind = this.getAttribute(\\\"bind\\\");\\n\\t\\tthis.currentListener = this.listenerFunction.bind(this);\\n\\t\\tthis.outerDomNode.addEventListener(\\\"scroll\\\", this.currentListener);\\n\\t}\\n\\t// Refresh children\\n\\tvar result = this.refreshChildren(changedTiddlers,force);\\n\\t// If the bound tiddler has changed, update scroll position\\n\\tif(changedAttributes[\\\"bind\\\"] || changedTiddlers[this.getAttribute(\\\"bind\\\")]) {\\n\\t\\tthis.updateScrollPositionFromBoundTiddler();\\n\\t}\\n\\treturn result;\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/scrollable.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/set.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/set.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"set\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\\n\\t (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/set.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/setmultiplevariables.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/setmultiplevariables.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"setmultiplevariables\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n var filterNames = this.getAttribute(\\\"$names\\\",\\\"\\\"),\\n filterValues = this.getAttribute(\\\"$values\\\",\\\"\\\"),\\n variableNames = this.wiki.filterTiddlers(filterNames,this),\\n variableValues = this.wiki.filterTiddlers(filterValues,this);\\n if(!$tw.utils.isArrayEqual(this.variableNames,variableNames) || !$tw.utils.isArrayEqual(this.variableValues,variableValues)) {\\n this.refreshSelf();\\n return true;\\n }\\n return this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/setmultiplevariables.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/setvariable.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/setvariable.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"setvariable\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\\n\\t (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/setvariable.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/slot.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/slot.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"slot\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(changedAttributes[\\\"$name\\\"] || changedAttributes[\\\"$depth\\\"]) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/slot.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/tiddler.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/tiddler.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"tiddler\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes(),\\n\\t\\tnewTiddlerState = this.computeTiddlerState();\\n\\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/tiddler.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/transclude.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/transclude.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"transclude\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif(($tw.utils.count(changedAttributes) > 0) || (this.transcludeVariableIsFunction && this.functionNeedsRefresh()) || (!this.transcludeVariable && changedTiddlers[this.transcludeTitle] && this.parserNeedsRefresh())) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/transclude.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/vars.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/vars.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"vars\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\tif($tw.utils.count(changedAttributes) > 0) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t}\\n\\treturn this.refreshChildren(changedTiddlers,force);\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/vars.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/wikify.js\":{\"text\":\"/*\\\\\\ntitle: $:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/wikify.js\\ntype: application/javascript\\nmodule-type: widget-subclass\\n\\nWidget base class\\n\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\nexports.baseClass = \\\"wikify\\\";\\n\\nexports.constructor = function(parseTreeNode,options) {\\n\\tthis.initialise(parseTreeNode,options);\\n};\\n\\nexports.prototype = {};\\n\\nexports.refresh = function(changedTiddlers,force) {\\n\\tvar changedAttributes = this.computeAttributes();\\n\\t// Refresh ourselves entirely if any of our attributes have changed\\n\\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\\n\\t\\tthis.refreshSelf();\\n\\t\\treturn true;\\n\\t} else {\\n\\t\\t// Refresh the widget tree\\n\\t\\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\\n\\t\\t\\t// Check if there was any change\\n\\t\\t\\tvar result = this.getResult();\\n\\t\\t\\tif(result !== this.wikifyResult) {\\n\\t\\t\\t\\t// If so, save the change\\n\\t\\t\\t\\tthis.wikifyResult = result;\\n\\t\\t\\t\\tthis.setVariable(this.wikifyName,this.wikifyResult);\\n\\t\\t\\t\\t// Refresh each of our child widgets\\n\\t\\t\\t\\t$tw.utils.each(this.children,function(childWidget) {\\n\\t\\t\\t\\t\\tchildWidget.refreshSelf();\\n\\t\\t\\t\\t});\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t// Just refresh the children\\n\\t\\treturn this.refreshChildren(changedTiddlers,force);\\n\\t}\\n};\\n\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/TiddlyFlex/modules/widgets/subclasses/wikify.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/TiddlyFlex/globals/css\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/css\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\define tiddlyflex-css-horizontal-view()\\n\\n.tc-tiddlyflex-main-wrapper {\\n\\toverflow-x: auto;\\n}\\n\\n.tc-tiddlyflex-main {\\n\\toverflow-x: clip;\\n}\\n\\n.tc-tiddlyflex-sidebar {\\n\\tposition: fixed;\\n\\ttop:0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tz-index: 1001;\\n\\tbackground-color: \u003C\u003Ccolour page-background>>;\\n\\ttransform: translate3d(0,0,0);\\n\\t-webkit-transition: transform {{$:/config/AnimationDuration}}ms linear, box-shadow {{$:/config/AnimationDuration}}ms linear;\\n\\ttransition: transform {{$:/config/AnimationDuration}}ms linear, box-shadow {{$:/config/AnimationDuration}}ms linear;\\n}\\n\\n\u003C%if [{$:/state/sidebar}match[no]] %>\\n\\n\\t.tc-tiddlyflex-sidebar {\\n\\t\\ttransform: translate3d(100%,0,0);\\n\\t}\\n\\n\u003C% endif %>\\n\\n.tc-tiddlyflex-leftbar {\\n\\tdisplay: none;\\n}\\n\\n.tc-tiddlyflex-story-river-container-inner {\\n\\toverflow-x: auto;\\n\\twidth: 100vw;\\n\\tscroll-behavior: smooth;\\n\\tscroll-snap-type: x mandatory;\\n}\\n\\n.tc-tiddlyflex-story-river-wrapper {\\n\\twidth: 100vw;\\n\\tflex-basis: 100vw;\\n\\tscroll-snap-align: start;\\n\\toverflow: hidden;\\n}\\n\\n.tc-tiddlyflex-sidebar-hide.tc-tiddlyflex-sidebar-shown {\\n\\tvisibility: visible;\\n\\tbackground: rgba(0,0,0,.6);\\n\\t-webkit-transition: background {{$:/config/AnimationDuration}}ms 0s;\\n\\ttransition: background {{$:/config/AnimationDuration}}ms 0s;\\n}\\n\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/globals/dragndrop\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/dragndrop\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\procedure tiddlyflex-top-dragenter-actions()\\n\u003C%if [[$:/state/dragging]has[dragenter-count]] %>\\n \\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" starting-next-tiddler=\\\"\\\" copying=\\\"\\\" target=\u003C\u003CcurrentTiddler>> margin=\\\"top\\\" nth={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]] }}} river=\u003C\u003CtiddlyFlexColumn>> next-tiddler=\\\"\\\" from-index={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]] }}} from-story=\u003C\u003Ctv-story-list>> dragenter-count={{{ [[$:/state/dragging]get[dragenter-count]add[1]] }}}/>\\n\u003C% else %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" dragenter-count=\\\"1\\\"/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-bottom-dragenter-actions()\\n\u003C%if [[$:/state/dragging]has[dragenter-count]] %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" starting-next-tiddler=\\\"\\\" copying=\\\"\\\" target=\u003C\u003CcurrentTiddler>> margin=\\\"bottom\\\" nth={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]add[1]] }}} river=\u003C\u003CtiddlyFlexColumn>> next-tiddler=\\\"\\\" from-index={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]add[1]] }}} from-story=\u003C\u003Ctv-story-list>> dragenter-count={{{ [[$:/state/dragging]get[dragenter-count]add[1]] }}}/>\\n\u003C% else %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" dragenter-count=\\\"1\\\"/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-top-drop-actions-inner()\\n\u003C%if [\u003CactionTiddler>!match\u003CcurrentTiddler>] %>\\n\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CcurrentTiddler>]\\\"/>\\n\\t\u003C%if [\u003Ctv-history-list>get[current-tiddler]match[]] [\u003Ctv-history-list>!has[current-tiddler]] +[limit[1]] %>\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CactionTiddler>>/>\\n\\t\u003C% endif %>\\n\u003C% else %>\\n\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/drag-handled\\\"/>\u003C$action-deletetiddler $tiddler=\\\"$:/state/dragging\\\"/>\\n\u003C% endif %>\\n\u003C$vars fromStoryList={{$:/state/dragging!!starting-from-story}} fromHistoryList={{$:/state/dragging!!from-history}}>\\n\\t\u003C%if [\u003CfromStoryList>!match\u003Ctv-story-list>] %>\\n\\t\\t\u003C%if [{$:/state/dragging!!is-focused-tiddler}match[TRUE]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003CfromHistoryList>> current-tiddler={{{ [list\u003CfromStoryList>zth{$:/state/dragging!!starting-from-index}] }}}/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C/$vars>\\n\\\\end\\n\\\\procedure tiddlyflex-top-drop-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/state/drag-handled\\\" text=\\\"yes\\\"/>\\n\u003C$vars prefix=\\\"[[\\\" suffix=\\\"]]\\\">\\n\\t\u003C%if [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] %>\\n\\t\\t\u003C$set name=\\\"actionTiddler\\\" value={{{ [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] }}}>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-top-drop-actions-inner>>\\n\\t\\t\u003C/$set>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-top-drop-actions-inner>>\\n\\t\u003C% endif %>\\n\u003C/$vars>\\n\\\\end\\n\\\\procedure tiddlyflex-bottom-drop-actions-inner()\\n\u003C$set name=\\\"nextTiddler\\\" value={{{ [list\u003Ctv-story-list>after\u003CcurrentTiddler>] }}}>\\n\\t\u003C%if [\u003CnextTiddler>match[]] %>\\n\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"[\u003CactionTiddler>]\\\"/>\\n\\t\\t\u003C$list filter=\\\"[\u003Ctv-history-list>get[current-tiddler]match[]] [\u003Ctv-history-list>!has[current-tiddler]] +[limit[1]]\\\" variable=\\\"ignore\\\">\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CactionTiddler>>/>\\n\\t\\t\u003C/$list>\\n\\t\u003C% else %>\\n\\t\\t\u003C%if [\u003CactionTiddler>!match\u003CnextTiddler>] %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CnextTiddler>]\\\"/>\\n\\t\\t\\t\u003C$list filter=\\\"[\u003Ctv-history-list>get[current-tiddler]match[]] [\u003Ctv-history-list>!has[current-tiddler]] +[limit[1]]\\\" variable=\\\"ignore\\\">\\n\\t\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CactionTiddler>>/>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/drag-handled\\\"/>\u003C$action-deletetiddler $tiddler=\\\"$:/state/dragging\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C/$set>\\n\u003C$vars fromStoryList={{$:/state/dragging!!starting-from-story}} fromHistoryList={{$:/state/dragging!!from-history}}>\\n\\t\u003C%if [\u003CfromStoryList>!match\u003Ctv-story-list>] %>\\n\\t\\t\u003C%if [{$:/state/dragging!!is-focused-tiddler}match[TRUE]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003CfromHistoryList>> current-tiddler={{{ [list\u003CfromStoryList>zth{$:/state/dragging!!starting-from-index}] }}}/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C/$vars>\\n\\\\end\\n\\\\procedure tiddlyflex-bottom-drop-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/state/drag-handled\\\" text=\\\"yes\\\"/>\\n\u003C$vars prefix=\\\"[[\\\" suffix=\\\"]]\\\">\\n\\t\u003C%if [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] %>\\n\\t\\t\u003C$set name=\\\"actionTiddler\\\" value={{{ [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] }}}>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-bottom-drop-actions-inner>>\\n\\t\\t\u003C/$set>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-bottom-drop-actions-inner>>\\n\\t\u003C% endif %>\\n\u003C/$vars>\\n\\\\end\\n\\\\procedure tiddlyflex-drag-start-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\"\\n\\tnth={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]] }}}\\n\\theight=\u003C\u003Ctv-selectednode-height>>\\n\\twidth=\u003C\u003Ctv-selectednode-width>>\\n\\tstart-river=\u003C\u003CtiddlyFlexColumn>>\\n\\tstarting-next-tiddler={{{ [list\u003Ctv-story-list>after\u003CcurrentTiddler>] }}}\\n\\tstarting-from-index={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]] }}}\\n\\tstarting-from-story=\u003C\u003Ctv-story-list>>\\n/>\\n\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\"\\n\\tdrag-tiddler=\u003C\u003CcurrentTiddler>>\\n\\tnext-tiddler={{{ [list\u003Ctv-story-list>after\u003CcurrentTiddler>] }}}\\n\\tfrom-index={{{ [list\u003Ctv-story-list>allbefore\u003CcurrentTiddler>count[]] }}}\\n\\tfrom-story=\u003C\u003Ctv-story-list>>\\n\\tfrom-history=\u003C\u003Ctv-history-list>>\\n\\tis-focused-tiddler={{{ [\u003Ctv-history-list>get[current-tiddler]match\u003CcurrentTiddler>then[TRUE]] ~[[FALSE]] }}}\\n\\ttarget={{{ [list\u003Ctv-story-list>after\u003CcurrentTiddler>] }}}\\n/>\\n\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" text=\\\"yes\\\"/>\\n\u003C%if [\u003Cmodifier>!match[ctrl]] %>\\n\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CcurrentTiddler>]\\\"/>\\n\u003C% else %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" copying=\\\"yes\\\"/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-drag-end-actions()\\n\u003C%if [[$:/state/drag-handled]is[missing]] %>\\n\\t\u003C$let fromStoryList={{$:/state/dragging!!starting-from-story}} fromIndex={{$:/state/dragging!!starting-from-index}} listBeforeTiddler={{{ [list\u003CfromStoryList>zth\u003CfromIndex>] }}} prefix=\\\"[[\\\" suffix=\\\"]]\\\" actionTiddler={{{ [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] :else[\u003CactionTiddler>] }}}>\\n\\t\\t\u003C%if [\u003ClistBeforeTiddler>!is[blank]] %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CfromStoryList>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003ClistBeforeTiddler>]\\\"/>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CfromStoryList>> $subfilter=\\\"[\u003CactionTiddler>]\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/drag-handled\\\"/>\\n\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/dragging\\\"/>\\n\\t\u003C/$let>\\n\u003C% else %>\\n\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/drag-handled\\\"/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-story-droppable-drop-actions()\\n\u003C$action-setfield $tiddler=\\\"$:/state/drag-handled\\\" text=\\\"yes\\\"/>\\n\u003C$vars prefix=\\\"[[\\\" suffix=\\\"]]\\\">\\n\\t\u003C%if [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] %>\\n\\t\\t\u003C$set name=\\\"actionTiddler\\\" value={{{ [\u003CactionTiddler>removeprefix\u003Cprefix>removesuffix\u003Csuffix>] }}}>\\n\\t\\t\\t\u003C%if [{$:/state/tiddlyflex/story-river/filter}match[yes]] +[subfilter\u003Ctdff.tiddlyflex-story-river-filter>then[no]else[yes]!match[no]] %>\\n\\t\\t\\t\\t\u003C$set name=\\\"firstStoryTiddler\\\" value={{{ [list\u003Ctv-story-list>nth[1]] }}}>\\n\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CfirstStoryTiddler>]\\\"/>\\n\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\u003C% elseif [{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\\t\\t\\t\u003C$let lastShownTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[last[]] }}} insertBeforeTiddler={{{ [list\u003Ctv-story-list>after\u003ClastShownTiddler>] }}}>\\n\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CinsertBeforeTiddler>]\\\"/>\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C% else %>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"[\u003CactionTiddler>]\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$set>\\n\\t\u003C% else %>\\n\\t\\t\u003C%if [{$:/state/tiddlyflex/story-river/filter}match[yes]subfilter\u003Ctdff.tiddlyflex-story-river-filter>then[no]else[yes]!match[no]] %>\\n\\t\\t\\t\u003C$set name=\\\"firstStoryTiddler\\\" value={{{ [list\u003Ctv-story-list>nth[1]] }}}>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CfirstStoryTiddler>]\\\"/>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% elseif [{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\\t\\t\u003C$let lastShownTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[last[]] }}} insertBeforeTiddler={{{ [list\u003Ctv-story-list>after\u003ClastShownTiddler>] }}}>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CinsertBeforeTiddler>]\\\"/>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"[\u003CactionTiddler>]\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% endif %>\\n\u003C/$vars>\\n\\\\end\\n\\\\procedure tiddlyflex-story-droppable-dragenter-actions()\\n\u003C%if [[$:/state/dragging]get[dragenter-count]] %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" target=\\\"\\\" starting-next-tiddler=\\\"\\\" copying=\\\"\\\"/>\\n\u003C% else %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/dragging\\\" dragenter-count=\\\"1\\\"/>\\n\u003C% endif %>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/globals/interaction\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/interaction\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\procedure tiddlyflex-tm-message-navigator(actions)\\n\u003C$navigator story=\u003C\u003Ctv-story-list>> history=\u003C\u003Ctv-history-list>> openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\u003C\u003Cactions>>\\n\u003C/$navigator>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-message-navigator-outside(actions)\\n\u003C$navigator story={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] :map[addprefix[$:/StoryList-]] }}} history={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] :map[addprefix[$:/HistoryList-]] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\u003C\u003Cactions>>\\n\u003C/$navigator>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-message-actions(message,exclude)\\n\u003C$set name=\\\"storyTiddler\\\" value=\u003C\u003Cevent-navigateFromTitle>>>\\n\\t\u003C$action-sendmessage\\n\\t\\t$message=\u003C\u003Cevent-type>>\\n\\t\\t$param={{{ [\u003Cevent-param>!is[blank]!match[]] ~[\u003Cevent-type>!match[tm-new-tiddler]then\u003Cevent-tiddlerTitle>] }}}\\n\\t\\t$navigateTo=\u003C\u003Cevent-navigateTo>>\\n\\t\\t$navigateFromTitle=\u003C\u003Cevent-navigateFromTitle>>\\n\\t\\t$navigateFromClientRect=\u003C\u003Cevent-navigateFromClientRect>>\\n\\t\\t$navigateFromClientTop=\u003C\u003Cevent-navigateFromClientTop>>\\n\\t\\t$navigateFromClientLeft=\u003C\u003Cevent-navigateFromClientLeft>>\\n\\t\\t$navigateFromClientWidth=\u003C\u003Cevent-navigateFromClientWidth>>\\n\\t\\t$navigateFromClientRight=\u003C\u003Cevent-navigateFromClientRight>>\\n\\t\\t$navigateFromClientBottom=\u003C\u003Cevent-navigateFromClientBottom>>\\n\\t\\t$navigateFromClientHeight=\u003C\u003Cevent-navigateFromClientHeight>>\\n\\t\\t$navigateSuppressNavigation=\u003C\u003Cevent-navigateSuppressNavigation>>\\n\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-tm-cancel-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-cancel-tiddler \\\"param\\\">>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$vars from={{{ [\u003Cevent-param>!is[blank]] ~[\u003Cevent-tiddlerTitle>] }}} to={{{ [\u003Cevent-param>!is[blank]get[draft.of]] ~[\u003Cevent-tiddlerTitle>get[draft.of]] }}}>\\n\\t\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Cfrom>] }}} to={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Cto>] }}}/>\\n\\t\u003C/$vars>\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-close-all-tiddlers-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-close-all-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-close-other-tiddlers-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-close-other-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-close-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-close-tiddler \\\"param\\\">>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$action-deletetiddler $tiddler={{{ [\u003Cevent-param>!is[blank]addprefix[$:/state/tiddlyflex/story-river/fullscreen/]] ~[\u003Cevent-tiddlerTitle>addprefix[$:/state/tiddlyflex/story-river/fullscreen/]] }}}/>\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-delete-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-delete-tiddler \\\"param\\\">>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-edit-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-edit-tiddler \\\"param\\\">>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$vars from={{{ [\u003Cevent-param>!is[blank]] ~[\u003Cevent-tiddlerTitle>] }}} to={{{ [\u003Cevent-param>!is[blank]addprefix[Draft of ']addsuffix[']] ~[\u003Cevent-tiddlerTitle>addprefix[Draft of ']addsuffix[']] }}}>\\n\\t\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Cfrom>] }}} to={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Cto>] }}}/>\\n\\t\u003C/$vars>\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-fold-all-tiddlers-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-fold-all-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-fold-other-tiddlers-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-fold-other-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-fold-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-fold-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-home-actions()\\n\\\\procedure actions() \u003C$action-log/>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-navigate-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-navigate-story-river-actions>>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-import-tiddlers-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-import-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-new-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-new-tiddler \\\"tiddlerTitle type param\\\">>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-perform-import-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-perform-import \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-save-tiddler-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-save-tiddler \\\"param\\\">>\\n\u003C%if [function[tiddlyflex-fullscreen]!is[blank]] %>\\n\\t\u003C$vars from={{{ [\u003Cevent-param>!is[blank]] ~[\u003Cevent-tiddlerTitle>] }}} to={{{ [\u003Cevent-param>!is[blank]get[draft.title]] ~[\u003Cevent-tiddlerTitle>get[draft.title]] }}}>\\n\\t\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Cfrom>] }}} to={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003Cto>] }}}/>\\n\\t\u003C/$vars>\\t\\n\u003C% endif %>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-unfold-all-tiddlers-actions()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-unfold-all-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-tm-cancel-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-cancel-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-close-all-tiddlers-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-close-all-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-close-other-tiddlers-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-close-other-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-close-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-close-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-delete-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-delete-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-edit-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-edit-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-fold-all-tiddlers-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-fold-all-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-fold-other-tiddlers-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-fold-other-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-fold-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-fold-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-home-actions-outside()\\n\\\\procedure actions() \u003C$action-log/>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-navigate-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-navigate-story-river-actions>>\\n\u003C$set name=\\\"tiddlyFlexColumn\\\" value={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] }}}>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\u003C/$set>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-import-tiddlers-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-import-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-new-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-new-tiddler \\\"tiddlerTitle type param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-perform-import-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-perform-import \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-save-tiddler-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-save-tiddler \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-tm-unfold-all-tiddlers-actions-outside()\\n\\\\procedure actions() \u003C\u003Ctiddlyflex-tm-message-actions tm-unfold-all-tiddlers \\\"param\\\">>\\n\u003C$macrocall $name=\\\"tiddlyflex-tm-message-navigator-outside\\\" actions=\u003C\u003Cactions>>/>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/globals/ensemble\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/ensemble\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\function tdff.tiddlyflex-ensemble-tiddler-not-contains-value-in-field() [[\u003CensembleTiddler>]addprefix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[!contains:]] ${$(field)$}$ +[substitute[]] +[join[]] +[addsuffix[\u003Cvalue>]addsuffix[$(tiddlyFlexSuffix)$]substitute[]]\\n\\n\\\\define tiddlyflex-get-ensemble-overwrite-message()\\nThe ensemble \\\"$(ensembleTitle)$\\\" already exists.\\n\\nDo you want to overwrite it?\\n\\\\end\\n\\n\\\\procedure tiddlyflex-set-ensemble-configuration(tiddler,field:\\\"text\\\",value)\\n\\\\whitespace trim\\n\u003C%if [\u003Cvalue>!is[blank]then\u003Ctiddler>get\u003Cfield>!match\u003Cvalue>] ~[\u003Cvalue>!is[blank]then\u003Ctiddler>!has\u003Cfield>] ~[\u003Cvalue>!is[blank]then\u003Ctiddler>!is[shadow]is[missing]] %>\\n\\t\u003C$action-setfield $tiddler=\u003C\u003Ctiddler>> $field=\u003C\u003Cfield>> $value=\u003C\u003Cvalue>>/>\\n\u003C% endif %>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-save-ensemble-actions-inner(ensembleTitle)\\n\\\\whitespace trim\\n\u003C$set name=\\\"ensembleTiddler\\\" value={{{ [[$:/Ensemble/]addsuffix\u003CensembleTitle>] }}}>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"layout\\\" value={{$:/layout}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"view\\\" value={{$:/view}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"sidebar-state\\\" value={{$:/state/sidebar}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"columns\\\" value={{$:/columns!!list}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"current-column\\\" value={{$:/columns!!current-column}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"follow-current-column\\\" value={{{ [{$:/config/tiddlyflex/story-river/follow-current-column}match[no]] ~yes }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"show-edit-preview-per-tiddler\\\" value={{$:/config/ShowEditPreview/PerTiddler}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"story-river-padding\\\" value={{{ [[$:/config/tiddlyflex/story-river/padding]get[text]] ~[[]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"tiddler-margin-bottom\\\" value={{{ [[$:/config/tiddlyflex/story-river/tiddler/margin-bottom]get[text]] ~[[]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field=\\\"palette\\\" value={{$:/palette}}/>\\n\\t\u003C$list filter=\\\"[list[$:/columns]]\\\" variable=\\\"column\\\">\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CensembleTiddler>> field={{{ [[story-list-]addsuffix\u003Ccolumn>] }}} value={{{ [[$:/StoryList-]addsuffix\u003Ccolumn>get[list]] ~[[]] }}}/>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/TopToolbar]!is[draft]]\\\" variable=\\\"topToolbarTiddler\\\">\\n\\t\\t\u003C%if [\u003CensembleTiddler>!contains:top-toolbar-tiddler\u003CtopToolbarTiddler>] %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CensembleTiddler>> $field=\\\"top-toolbar-tiddler\\\" $subfilter=\\\"[\u003CtopToolbarTiddler>]\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/BottomToolbar]!is[draft]]\\\" variable=\\\"bottomToolbarTiddler\\\">\\n\\t\\t\u003C%if [\u003CensembleTiddler>!contains:top-toolbar-tiddler\u003CbottomToolbarTiddler>] %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CensembleTiddler>> $field=\\\"bottom-toolbar-tiddler\\\" $subfilter=\\\"[\u003CbottomToolbarTiddler>]\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[tags[]prefix[$:/tags/AboveStoryHeader-]]\\\" variable=\\\"aboveStoryHeaderTag\\\">\\n\\t\\t\u003C$set name=\\\"index\\\" value={{{ [\u003CaboveStoryHeaderTag>removeprefix[$:/tags/AboveStoryHeader-]] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CaboveStoryHeaderTag>!is[draft]]\\\" variable=\\\"aboveStoryHeaderTiddler\\\">\\n\\t\\t\\t\\t\u003C$vars field={{{ [[above-story-header-tiddler-]addsuffix\u003Cindex>] }}} value=\u003C\u003CaboveStoryHeaderTiddler>>>\\n\\t\\t\\t\\t\\t\u003C%if [subfilter\u003Ctdff.tiddlyflex-ensemble-tiddler-not-contains-value-in-field>] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CensembleTiddler>> $field=\u003C\u003Cfield>> $subfilter=\\\"[\u003Cvalue>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\u003C/$vars>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[tags[]prefix[$:/tags/BelowStoryFooter-]]\\\" variable=\\\"belowStoryFooterTag\\\">\\n\\t\\t\u003C$set name=\\\"index\\\" value={{{ [\u003CbelowStoryFooterTag>removeprefix[$:/tags/BelowStoryFooter-]] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CbelowStoryFooterTag>!is[draft]]\\\" variable=\\\"belowStoryFooterTiddler\\\">\\n\\t\\t\\t\\t\u003C$vars field={{{ [[below-story-footer-tiddler-]addsuffix\u003Cindex>] }}} value=\u003C\u003CbelowStoryFooterTiddler>>>\\n\\t\\t\\t\\t\\t\u003C%if [subfilter\u003Ctdff.tiddlyflex-ensemble-tiddler-not-contains-value-in-field>] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003CensembleTiddler>> $field=\u003C\u003Cfield>> $subfilter=\\\"[\u003Cvalue>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\u003C/$vars>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C/$list>\\n\\t\u003C$action-sendmessage $message=\\\"tm-auto-save-wiki\\\"/>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-empty-ensemble-title-message()\\n\\\\whitespace trim\\n\u003C$action-sendmessage $message=\\\"tm-notify\\\" $param=\\\"$:/plugins/BTC/tiddlyflex/ui/Notifications/Ensemble/EmptyNotification\\\"/>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-overwrite-ensemble-message()\\n\\\\whitespace trim\\n\u003C$action-confirm $message=\u003C\u003Ctiddlyflex-get-ensemble-overwrite-message>>>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-save-ensemble-actions-inner\\\" ensembleTitle=\u003C\u003CensembleTitle>>/>\\n\u003C/$action-confirm>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-save-ensemble-actions(ensembleTitle)\\n\\\\whitespace trim\\n\u003C%if [\u003CensembleTitle>!is[blank]!match[]] %>\\n\\t\u003C%if [[$:/Ensemble/]addsuffix\u003CensembleTitle>is[missing]] %>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-save-ensemble-actions-inner\\\" ensembleTitle=\u003C\u003CensembleTitle>>/>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-overwrite-ensemble-message>>\\n\\t\u003C% endif %>\\n\u003C% else %>\\n\\t\u003C\u003Ctiddlyflex-empty-ensemble-title-message>>\\n\u003C% endif %>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-load-ensemble-actions()\\n\\\\whitespace trim\\n\u003C%if [\u003CensembleTiddler>!is[missing]] %>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/layout\\\" value={{{ [\u003CensembleTiddler>get[layout]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/view\\\" value={{{ [\u003CensembleTiddler>get[view]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/state/sidebar\\\" value={{{ [\u003CensembleTiddler>get[sidebar-state]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/columns\\\" field=\\\"list\\\" value={{{ [\u003CensembleTiddler>get[columns]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/columns\\\" field=\\\"current-column\\\" value={{{ [\u003CensembleTiddler>get[current-column]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/config/ShowEditPreview/PerTiddler\\\" value={{{ [\u003CensembleTiddler>get[show-edit-preview-per-tiddler]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/config/tiddlyflex/story-river/padding\\\" value={{{ [\u003CensembleTiddler>get[story-river-padding]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/config/tiddlyflex/story-river/tiddler/margin-bottom\\\" value={{{ [\u003CensembleTiddler>get[tiddler-margin-bottom]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/config/tiddlyflex/story-river/follow-current-column\\\" value={{{ [\u003CensembleTiddler>get[follow-current-column]] }}}/>\\n\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\\\"$:/palette\\\" value={{{ [\u003CensembleTiddler>get[palette]] }}}/>\\n\\t\u003C$list filter=\\\"[all[tiddlers+shadows]prefix[$:/Ensemble/]!match\u003CensembleTiddler>]\\\" variable=\\\"ensembleTiddler\\\">\\n\\t\\t\u003C%if [\u003CensembleTiddler>has[stylesheets]] %>\\n\\t\\t\\t\u003C$set name=\\\"stylesheetsList\\\" value={{{ [\u003CensembleTiddler>get[stylesheets]] }}}>\\n\\t\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CstylesheetsList>]\\\" variable=\\\"stylesheetTiddler\\\">\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CstylesheetTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\\\"$:/tags/Stylesheet\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C%if [\u003CensembleTiddler>has[top-toolbar-tiddler]]\\\" %>\\n\\t\\t\\t\u003C$set name=\\\"topbarsList\\\" value={{{ [\u003CensembleTiddler>get[top-toolbar-tiddler]] }}}>\\n\\t\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CtopbarsList>]\\\" variable=\\\"topbarTiddler\\\">\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CtopbarTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\\\"$:/tags/TopToolbar\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C%if [\u003CensembleTiddler>has[bottom-toolbar-tiddler]]\\\" %>\\n\\t\\t\\t\u003C$set name=\\\"bottombarsList\\\" value={{{ [\u003CensembleTiddler>get[bottom-toolbar-tiddler]] }}}>\\n\\t\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CbottombarsList>]\\\" variable=\\\"bottombarTiddler\\\">\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CbottombarTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param=\\\"$:/tags/BottomToolbar\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% endif %>\\n\\t\\t\u003C$list filter=\\\"[\u003CensembleTiddler>fields[]prefix[above-story-header-tiddler-]]\\\" variable=\\\"aboveStoryHeaderField\\\">\\n\\t\\t\\t\u003C$vars aboveStoryHeaderList={{{ [\u003CensembleTiddler>get\u003CaboveStoryHeaderField>] }}} index={{{ [\u003CaboveStoryHeaderField>removeprefix[above-story-header-tiddler-]] }}}>\\n\\t\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CaboveStoryHeaderList>]\\\" variable=\\\"aboveStoryHeaderTiddler\\\">\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CaboveStoryHeaderTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param={{{ [[$:/tags/AboveStoryHeader-]addsuffix\u003Cindex>] }}}/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C/$vars>\\n\\t\\t\u003C/$list>\\n\\t\\t\u003C$list filter=\\\"[\u003CensembleTiddler>fields[]prefix[below-story-footer-tiddler-]]\\\" variable=\\\"belowStoryFooterField\\\">\\n\\t\\t\\t\u003C$vars belowStoryFooterList={{{ [\u003CensembleTiddler>get\u003CbelowStoryFooterField>] }}} index={{{ [\u003CbelowStoryFooterField>removeprefix[below-story-footer-tiddler-]] }}}>\\n\\t\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CbelowStoryFooterList>]\\\" variable=\\\"belowStoryFooterTiddler\\\">\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CbelowStoryFooterTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-remove-tag\\\" $param={{{ [[$:/tags/BelowStoryFooter-]addsuffix\u003Cindex>] }}}/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C/$vars>\\n\\t\\t\u003C/$list>\\n\\t\u003C/$list>\\n\\t\u003C%if [\u003CensembleTiddler>has[stylesheets]] %>\\n\\t\\t\u003C$set name=\\\"stylesheetsList\\\" value={{{ [\u003CensembleTiddler>get[stylesheets]] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CstylesheetsList>]\\\" variable=\\\"stylesheetTiddler\\\">\\n\\t\\t\\t\\t\u003C%if [\u003CstylesheetTiddler>!tag[$:/tags/Stylesheet]] %>\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CstylesheetTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\\\"$:/tags/Stylesheet\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C% endif %>\\n\\t\u003C%if [\u003CensembleTiddler>has[top-toolbar-tiddler]]\\\" %>\\n\\t\\t\u003C$set name=\\\"topbarsList\\\" value={{{ [\u003CensembleTiddler>get[top-toolbar-tiddler]] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CtopbarsList>]\\\" variable=\\\"topbarTiddler\\\">\\n\\t\\t\\t\\t\u003C%if [\u003CtopbarTiddler>!tag[$:/tags/TopToolbar]] %>\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CtopbarTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\\\"$:/tags/TopToolbar\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C% endif %>\\n\\t\u003C%if [\u003CensembleTiddler>has[bottom-toolbar-tiddler]]\\\" %>\\n\\t\\t\u003C$set name=\\\"bottombarsList\\\" value={{{ [\u003CensembleTiddler>get[bottom-toolbar-tiddler]] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CbottombarsList>]\\\" variable=\\\"bottombarTiddler\\\">\\n\\t\\t\\t\\t\u003C%if [\u003CbottombarTiddler>!tag[$:/tags/BottomToolbar]] %>\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CbottombarTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\\\"$:/tags/BottomToolbar\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C% endif %>\\n\\t\u003C$list filter=\\\"[\u003CensembleTiddler>fields[]prefix[above-story-header-tiddler-]]\\\" variable=\\\"aboveStoryHeaderField\\\">\\n\\t\\t\u003C$let aboveStoryHeaderList={{{ [\u003CensembleTiddler>get\u003CaboveStoryHeaderField>] }}} index={{{ [\u003CaboveStoryHeaderField>removeprefix[above-story-header-tiddler-]] }}} aboveStoryHeaderTag={{{ [[$:/tags/AboveStoryHeader-]addsuffix\u003Cindex>] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CaboveStoryHeaderList>]\\\" variable=\\\"aboveStoryHeaderTiddler\\\">\\n\\t\\t\\t\\t\u003C%if [\u003CaboveStoryHeaderTiddler>!tag\u003CaboveStoryHeaderTag>] %>\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CaboveStoryHeaderTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003CaboveStoryHeaderTag>>/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$let>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[\u003CensembleTiddler>fields[]prefix[below-story-footer-tiddler-]]\\\" variable=\\\"belowStoryFooterField\\\">\\n\\t\\t\u003C$let belowStoryFooterList={{{ [\u003CensembleTiddler>get\u003CbelowStoryFooterField>] }}} index={{{ [\u003CbelowStoryFooterField>removeprefix[below-story-footer-tiddler-]] }}} belowStoryFooterTag={{{ [[$:/tags/BelowStoryFooter-]addsuffix\u003Cindex>] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[enlist\u003CbelowStoryFooterList>]\\\" variable=\\\"belowStoryFooterTiddler\\\">\\n\\t\\t\\t\\t\u003C%if [\u003CbelowStoryFooterTiddler>!tag\u003CbelowStoryFooterTag>] %>\\n\\t\\t\\t\\t\\t\u003C$fieldmangler tiddler=\u003C\u003CbelowStoryFooterTiddler>>>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param=\u003C\u003CbelowStoryFooterTag>>/>\\n\\t\\t\\t\\t\\t\u003C/$fieldmangler>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$let>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[\u003CensembleTiddler>fields[]prefix[story-list-]]\\\" variable=\\\"storyField\\\">\\n\\t\\t\u003C$let storyNumber={{{ [\u003CstoryField>removeprefix[story-list-]] }}} storyTitle={{{ [[$:/StoryList-]addsuffix\u003CstoryNumber>] }}}>\\n\\t\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-set-ensemble-configuration\\\" tiddler=\u003C\u003CstoryTitle>> field=\\\"list\\\" value={{{ [\u003CensembleTiddler>get\u003CstoryField>] }}}/>\\n\\t\\t\u003C/$let>\\n\\t\u003C/$list>\\n\\t\u003C$action-deletetiddler $filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\"/>\\n\u003C% endif %>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-ensemble(title)\\n\u003C$set name=\\\"ensembleTiddler\\\" value={{{ [[$:/Ensemble/]addsuffix\u003Ctitle>] }}}>\\n\u003C$button class=\\\"tc-btn-invisible\\\" actions=\u003C\u003Ctiddlyflex-load-ensemble-actions>>>\u003C$text text=\u003C\u003Ctitle>>/>\u003C/$button>\\n\u003C/$set>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/globals/layout/functions\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/layout/functions\",\"list-before\":\"\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\procedure tiddlyFlexPrefix() [\\n\\\\procedure tiddlyFlexSuffix() ]\\n\\n\\\\function tiddlyflex-layout() [{$:/layout}match[$:/plugins/BTC/TiddlyFlex/ui/Layout]]\\n\\n\\\\function tiddlyflex-fullscreen() [all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]limit[1]] ~[[]]\\n\\n\\\\function tdff.tiddlyflex-current-column-filtered() [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] +[count[]!match[1]] :then[subfilter\u003Ctdff.tiddlyflex-current-column-filtered-before>] ~[subfilter\u003Ctdff.tiddlyflex-enlist-columns>] ~1\\n\\n\\\\function tdff.tiddlyflex-current-column-filtered-before() [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] [{$:/columns!!current-column}] +[unique[]] +[nsort[]] +[before{$:/columns!!current-column}]\\n\\n\\\\function tdff.tiddlyflex-exclude-columns() [[list]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/columns]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ :map:flat]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[addprefix]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/StoryList-]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ :map:flat]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[get]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[list]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[enlist-input]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[search:]] ${$(tiddlyflex-story-filter-fields)$}$ +[substitute[]] +[join[]] +[addsuffix[:]] ${$(tiddlyflex-story-filter-flags)$}$ +[substitute[]] +[join[]] +[addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[{$:/temp/search/input}]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[limit]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[1]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[else\u003CcurrentTiddler>removeprefix]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/StoryList-]addsuffix[$(tiddlyFlexSuffix)$]substitute[]] +[addprefix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ +]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[join]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[ ]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]]\\n\\n\\\\function tdff.tiddlyflex-enlist-columns() [[list]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/columns]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ :map]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[{$:/state/tiddlyflex/story-river/filter}match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>addprefix]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/StoryList-]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[get]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[list]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[enlist-input]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[search:]] ${$(tiddlyflex-story-filter-fields)$}$ +[substitute[]] +[join[]] +[addsuffix[:]] ${$(tiddlyflex-story-filter-flags)$}$ +[substitute[]] +[join[]] +[addsuffix[{$:/temp/search/input}]addsuffix[limit]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[1]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>else{$:/state/tiddlyflex/story-river/filter}!match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ +]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[!match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]] +[addprefix[$(tiddlyFlexPrefix)$]substitute[]] +[addsuffix[ ~1]]\\n\\n\\\\function tdff.tiddlyflex-enlist-columns-first() [[list]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/columns]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ :map]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[{$:/state/tiddlyflex/story-river/filter}match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>addprefix]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$:/StoryList-]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[get]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[list]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[enlist-input]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[search:]] ${$(tiddlyflex-story-filter-fields)$}$ +[substitute[]] +[join[]] +[addsuffix[:]] ${$(tiddlyflex-story-filter-flags)$}$ +[substitute[]] +[join[]] +[addsuffix[{$:/temp/search/input}]addsuffix[limit]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[1]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>else{$:/state/tiddlyflex/story-river/filter}!match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ +]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[!match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ +]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[first]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]] +[addprefix[$(tiddlyFlexPrefix)$]substitute[]]\\n\\n\\\\function tiddlyflex-story-filter-fields() [fields[]] :intersection[[$:/config/tiddlyflex/story-river/filter/fields]get[text]!is[blank]!match[]split[,]] +[join[,]] ~[[*]]\\n\\n\\\\function tiddlyflex-story-filter-flags() [[$:/config/tiddlyflex/story-river/filter/flags]get[text]!is[blank]!match[]] ~[[words]]\\n\\n\\\\function tdff.tiddlyflex-story-river-filter-no-draft() [[list]addsuffix[\u003Ctv-story-list>]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ ]addsuffix[:filter]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[{$:/state/tiddlyflex/story-river/filter}match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>!is]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[draft]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[search:]] ${$(tiddlyflex-story-filter-fields)$}$ +[substitute[]] +[join[]] +[addsuffix[:]] ${$(tiddlyflex-story-filter-flags)$}$ +[substitute[]] +[join[]] +[addsuffix[{$:/temp/search/input}]] +[addsuffix[else{$:/state/tiddlyflex/story-river/filter}!match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>]] +[addprefix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]]\\n\\n\\\\function tdff.tiddlyflex-story-river-filter() [[list]addsuffix[\u003Ctv-story-list>]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[ ]addsuffix[:filter]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[{$:/state/tiddlyflex/story-river/filter}match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>]addsuffix[search:]] ${$(tiddlyflex-story-filter-fields)$}$ +[substitute[]] +[join[]] +[addsuffix[:]] ${$(tiddlyflex-story-filter-flags)$}$ +[substitute[]] +[join[]] +[addsuffix[{$:/temp/search/input}]] +[addsuffix[else{$:/state/tiddlyflex/story-river/filter}!match]addsuffix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[yes]addsuffix[$(tiddlyFlexSuffix)$]substitute[]addsuffix[then\u003CcurrentTiddler>]] +[addprefix[$(tiddlyFlexPrefix)$]substitute[]addsuffix[$(tiddlyFlexSuffix)$]substitute[]]\"},\"$:/plugins/BTC/TiddlyFlex/globals/layout/procedures\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/layout/procedures\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\procedure tiddlyflex-message-catcher(tiddlyflex-layout-inner)\\n\\\\function tiddlyflex-current-column() [\u003CtiddlyFlexColumn>]\\n\u003C$messagecatcher\\n\\t$tm-cancel-tiddler=\u003C\u003Ctiddlyflex-tm-cancel-tiddler-actions>>\\n\\t$tm-close-all-tiddlers=\u003C\u003Ctiddlyflex-tm-close-all-tiddlers-actions>>\\n\\t$tm-close-other-tiddlers=\u003C\u003Ctiddlyflex-tm-close-other-tiddlers-actions>>\\n\\t$tm-close-tiddler=\u003C\u003Ctiddlyflex-tm-close-tiddler-actions>>\\n\\t$tm-delete-tiddler=\u003C\u003Ctiddlyflex-tm-delete-tiddler-actions>>\\n\\t$tm-edit-tiddler=\u003C\u003Ctiddlyflex-tm-edit-tiddler-actions>>\\n\\t$tm-fold-all-tiddlers=\u003C\u003Ctiddlyflex-tm-fold-all-tiddlers-actions>>\\n\\t$tm-fold-other-tiddlers=\u003C\u003Ctiddlyflex-tm-fold-other-tiddlers-actions>>\\n\\t$tm-fold-tiddler=\u003C\u003Ctiddlyflex-tm-fold-tiddler-actions>>\\n\\t$tm-home=\u003C\u003Ctiddlyflex-tm-home-actions>>\\n\\t$tm-import-tiddlers=\u003C\u003Ctiddlyflex-tm-import-tiddlers-actions>>\\n\\t$tm-navigate=\u003C\u003Ctiddlyflex-tm-navigate-actions>>\\n\\t$tm-new-tiddler=\u003C\u003Ctiddlyflex-tm-new-tiddler-actions>>\\n\\t$tm-perform-import=\u003C\u003Ctiddlyflex-tm-perform-import-actions>>\\n\\t$tm-save-tiddler=\u003C\u003Ctiddlyflex-tm-save-tiddler-actions>>\\n\\t$tm-unfold-all-tiddlers=\u003C\u003Ctiddlyflex-tm-unfold-all-tiddlers-actions>>>\\n\\t\u003C\u003Ctiddlyflex-layout-inner>>\\n\u003C/$messagecatcher>\\n\\\\end\\n\\\\procedure tiddlyflex-message-catcher-outside(tiddlyflex-layout-inner)\\n\\\\function tiddlyflex-current-column() [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>]\\n\u003C$messagecatcher\\n\\t$tm-cancel-tiddler=\u003C\u003Ctiddlyflex-tm-cancel-tiddler-actions-outside>>\\n\\t$tm-close-all-tiddlers=\u003C\u003Ctiddlyflex-tm-close-all-tiddlers-actions-outside>>\\n\\t$tm-close-other-tiddlers=\u003C\u003Ctiddlyflex-tm-close-other-tiddlers-actions-outside>>\\n\\t$tm-close-tiddler=\u003C\u003Ctiddlyflex-tm-close-tiddler-actions-outside>>\\n\\t$tm-delete-tiddler=\u003C\u003Ctiddlyflex-tm-delete-tiddler-actions-outside>>\\n\\t$tm-edit-tiddler=\u003C\u003Ctiddlyflex-tm-edit-tiddler-actions-outside>>\\n\\t$tm-fold-all-tiddlers=\u003C\u003Ctiddlyflex-tm-fold-all-tiddlers-actions-outside>>\\n\\t$tm-fold-other-tiddlers=\u003C\u003Ctiddlyflex-tm-fold-other-tiddlers-actions-outside>>\\n\\t$tm-fold-tiddler=\u003C\u003Ctiddlyflex-tm-fold-tiddler-actions-outside>>\\n\\t$tm-home=\u003C\u003Ctiddlyflex-tm-home-actions-outside>>\\n\\t$tm-import-tiddlers=\u003C\u003Ctiddlyflex-tm-import-tiddlers-actions-outside>>\\n\\t$tm-navigate=\u003C\u003Ctiddlyflex-tm-navigate-actions-outside>>\\n\\t$tm-new-tiddler=\u003C\u003Ctiddlyflex-tm-new-tiddler-actions-outside>>\\n\\t$tm-perform-import=\u003C\u003Ctiddlyflex-tm-perform-import-actions-outside>>\\n\\t$tm-save-tiddler=\u003C\u003Ctiddlyflex-tm-save-tiddler-actions-outside>>\\n\\t$tm-unfold-all-tiddlers=\u003C\u003Ctiddlyflex-tm-unfold-all-tiddlers-actions-outside>>>\\n\\t\u003C\u003Ctiddlyflex-layout-inner>>\\n\u003C/$messagecatcher>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/globals/layout/sidebar-resizer\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/layout/sidebar-resizer\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\procedure tiddlyflex-sidebar-resizer-pointerdown-actions()\\n\u003C%if [[$:/state/sidebar/resizing]is[missing]then\u003Cevent-mousebutton>match[left]] %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/sidebar/resizing\\\" text=\\\"yes\\\"/>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/sidebar/posx\\\" drag-diff=\u003C\u003Cevent-fromselected-posx>> selectednode-width=\u003C\u003Ctv-selectednode-width>> widgetnode-width=\u003C\u003Ctv-widgetnode-width>> text=\u003C\u003Cevent-fromcatcher-posx>> column-count={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]] }}} leftbar-width={{{ [\u003Cevent-fromviewport-posx>subtract\u003Cevent-fromcatcher-posx>] }}}/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-sidebar-resizer-pointerup-actions()\\n\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/sidebar/resizing\\\"/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-sidebar-resizer-pointermove-actions()\\n\u003C%if [[$:/state/sidebar/resizing]!is[missing]] %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/state/sidebar/posx\\\" text=\u003C\u003Cevent-fromcatcher-posx>>/>\\n\u003C% endif %>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/globals/navigation\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/globals/navigation\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\define tiddlyflex-navigate-story-river-actions-selector()\\n.tc-tiddlyflex-story-river-$(tiddlyFlexColumn)$ [data-tiddler-title=\\\"$(navigateToCSSEscaped)$\\\"]\\n\\\\end\\n\\\\function tiddlyflex-suppress-navigation() [\u003Cmodifier>match[ctrl]then[true]] [\u003Cmodifier>match[meta]then[true]] +[match[true]] ~false +[limit[1]]\\n\\\\function edit-missing-tiddler() [{$:/config/tiddlyflex/navigation/edit-missing-tiddlers}match[yes]then\u003Cevent-navigateTo>!is[shadow]is[missing]]\\n\\\\procedure tiddlyflex-navigate-story-river-actions-navigate()\\n\u003C$set name=\\\"storyTiddler\\\" value={{{ [subfilter\u003Ctiddlyflex-current-column>addprefix[$:/HistoryList-]get[current-tiddler]] :intersection[list\u003Ctv-story-list>] }}}>\\n\\t\u003C$action-sendmessage\\n\\t\\t$message=\\\"tm-navigate\\\"\\n\\t\\t$navigateTo=\u003C\u003Cevent-navigateTo>>\\n\\t\\t$navigateFromTitle=\u003C\u003CstoryTiddler>>\\n\\t\\t$navigateFromClientRect=\u003C\u003Cevent-navigateFromClientRect>>\\n\\t\\t$navigateFromClientTop=\u003C\u003Cevent-navigateFromClientTop>>\\n\\t\\t$navigateFromClientLeft=\u003C\u003Cevent-navigateFromClientLeft>>\\n\\t\\t$navigateFromClientWidth=\u003C\u003Cevent-navigateFromClientWidth>>\\n\\t\\t$navigateFromClientRight=\u003C\u003Cevent-navigateFromClientRight>>\\n\\t\\t$navigateFromClientBottom=\u003C\u003Cevent-navigateFromClientBottom>>\\n\\t\\t$navigateFromClientHeight=\u003C\u003Cevent-navigateFromClientHeight>>\\n\\t\\t$navigateSuppressNavigation={{{ [function[tiddlyflex-supress-navigation]] }}}\\n\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\u003C/$set>\\n\\\\end\\n\\\\procedure tiddlyflex-navigate-story-river-actions-inner-inner()\\n\u003C$let tv-story-list={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>] }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\t\u003C%if [[$:/columns]!contains\u003CtiddlyFlexColumn>] %>\\n\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"[\u003CtiddlyFlexColumn>]\\\"/>\\n\\t\u003C% endif %>\\n\\t\u003C$navigator story=\u003C\u003Ctv-story-list>> history=\u003C\u003Ctv-history-list>> openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-navigate>>\\n\\t\\t\u003C%if [function[edit-missing-tiddler]] %>\\n\\t\\t\\t\u003C$action-sendmessage\\n\\t\\t\\t\\t$message=\\\"tm-edit-tiddler\\\"\\n\\t\\t\\t\\t$param=\u003C\u003Cevent-navigateTo>>\\n\\t\\t\\t\\t$tiddlerTitle=\u003C\u003Cevent-tiddlerTitle>>\\n\\t\\t\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$navigator>\\n\u003C/$let>\\n\\\\end\\n\\\\procedure tiddlyflex-navigate-story-river-actions-inner()\\n\u003C%if [\u003Cmodifier>match[shift]] %>\\n\\t\u003C$let currentColumn=\u003C\u003CtiddlyFlexColumn>> tiddlyFlexColumn={{{ [\u003CcurrentColumn>add[1]] }}}>\\n\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-inner-inner>>\\n\\t\u003C/$let>\\n\u003C% elseif [\u003Cmodifier>match[alt]] %>\\n\\t\u003C$let currentColumn=\u003C\u003CtiddlyFlexColumn>> tiddlyFlexColumn={{{ [\u003CtiddlyFlexColumn>!match[1]subtract[1]] ~1 }}}>\\n\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-inner-inner>>\\n\\t\u003C/$let>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-navigate-story-river-actions()\\n\\\\function tiddlyflex-no-shift-alt() [\u003Cmodifier>!match[shift]then\u003Cmodifier>!match[alt]]\\n\u003C%if [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] +[addprefix[$:/StoryList-]] +[enlist-input[]] +[contains\u003Cevent-navigateTo>] %>\\n\\t\u003C%if [function[tiddlyflex-no-shift-alt]] %>\\n\\t\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\t\\t\\t\u003C$let tv-story-list={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>] }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CtiddlyFlexColumn>] }}} navigateToCSSEscaped={{{ [\u003Cevent-navigateTo>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C%if [\u003Ctv-story-list>contains\u003Cevent-navigateTo>] %>\\n\\t\\t\\t\\t\\t\u003C%if [\u003Cmodifier>!match[ctrl]then\u003Cmodifier>!match[meta]] %>\\n\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-scroll\\\" selector=\u003C\u003Ctiddlyflex-navigate-story-river-actions-selector>>/>\\n\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\\t\u003C%if [function[edit-missing-tiddler]] %>\\n\\t\\t\\t\\t\\t\\t\u003C$navigator story={{{ [\u003CtiddlyFlexColumn>addprefix[$:/StoryList-]] }}} history={{{ [\u003CtiddlyFlexColumn>addprefix[$:/HistoryList-]] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\\t\\t\\t\\t\\t\u003C$set name=\\\"currentColumn\\\" value=\u003C\u003CtiddlyFlexColumn>>>\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-navigate>>\\n\\t\\t\\t\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\\t\\t\\t\\t\u003C$action-sendmessage\\n\\t\\t\\t\\t\\t\\t\\t\\t$message=\\\"tm-edit-tiddler\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t$param=\u003C\u003Cevent-navigateTo>> \\n\\t\\t\\t\\t\\t\\t\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\\t\\t\\t\\t\\t\\t\u003C/$navigator>\\n\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C/$list>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-inner>>\\n\\t\u003C% endif %>\\n\u003C% else %>\\n\\t\u003C%if [function[tiddlyflex-no-shift-alt]] %>\\n\\t\\t\u003C%if [function[edit-missing-tiddler]] %>\\n\\t\\t\\t\u003C$navigator story={{{ [\u003CtiddlyFlexColumn>addprefix[$:/StoryList-]] }}} history={{{ [\u003CtiddlyFlexColumn>addprefix[$:/HistoryList-]] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\\t\\t\u003C$set name=\\\"currentColumn\\\" value=\u003C\u003CtiddlyFlexColumn>>>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-navigate>>\\n\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\\t\u003C$action-sendmessage\\n\\t\\t\\t\\t\\t$message=\\\"tm-edit-tiddler\\\"\\n\\t\\t\\t\\t\\t$param=\u003C\u003Cevent-navigateTo>>\\n\\t\\t\\t\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t\\t\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\\t\\t\\t\u003C/$navigator>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$navigator story={{{ [\u003CtiddlyFlexColumn>addprefix[$:/StoryList-]] }}} history={{{ [\u003CtiddlyFlexColumn>addprefix[$:/HistoryList-]] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\\t\\t\u003C$set name=\\\"currentColumn\\\" value=\u003C\u003CtiddlyFlexColumn>>>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-navigate>>\\n\\t\\t\\t\\t\u003C/$set>\\n\\t\\t\\t\u003C/$navigator>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ctiddlyflex-navigate-story-river-actions-inner>>\\n\\t\u003C% endif %>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-cancel-draft-tiddler-actions-draft-of-not-is-missing()\\n\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>!match\u003CtiddlyFlexColumn>]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>!match[$:/StoryList-]] ~$:/StoryList-1 }}}>\\n\\t\\t\u003C%if [\u003Ctv-story-list>contains\u003CcurrentTiddler>] %>\\n\\t\\t\\t\u003C$set name=\\\"index\\\" value={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[allbefore\u003CcurrentTiddler>add[1]] }}}>\\n\\t\\t\\t\\t\u003C$let nextTiddler={{{ [\u003Ctdff.tiddlyflex-story-river-filter>] +[zth\u003Cindex>] }}} viewTiddler={{{ [\u003CcurrentTiddler>get[draft.of]] }}}>\\n\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CviewTiddler>,\u003CnextTiddler>]\\\"/>\\n\\t\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CcurrentTiddler>]\\\"/>\\n\\t\\t\\t\\t\u003C/$let>\\n\\t\\t\\t\u003C/$set>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$set>\\n\u003C/$list>\\n\u003C\u003Cdelete-edittemplate-state-tiddlers>>\\n\u003C%if [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>!is[missing]] %>\\n\\t\u003C$action-sendmessage $message=\\\"tm-rename-tiddler\\\" from={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}} to={{{ [\u003CcurrentTiddler>get[draft.of]addprefix[$:/state/tiddlyflex/story-river/fullscreen/]] }}}/>\\n\u003C% endif %>\\n\u003C$navigator story={{{ [\u003CtiddlyFlexColumn>addprefix[$:/StoryList-]] }}} history={{{ [\u003CtiddlyFlexColumn>addprefix[$:/HistoryList-]] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\u003C$action-sendmessage\\n\\t\\t$message=\\\"tm-cancel-tiddler\\\"\\n\\t\\t$param={{{ [\u003Cevent-param>!is[blank]!match[]] ~[\u003Cevent-tiddlerTitle>] }}}\\n\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\u003C/$navigator>\\n\\\\end\\n\\\\procedure tiddlyflex-cancel-draft-tiddler-actions()\\n\u003C%if [\u003CcurrentTiddler>get[draft.of]!is[shadow]is[missing]] %>\\n\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>!match\u003CtiddlyFlexColumn>]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\t\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>!match[$:/StoryList-]] ~$:/StoryList-1 }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[\u003Ctv-story-list>contains\u003CcurrentTiddler>]\\\" variable=\\\"ignore\\\">\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CcurrentTiddler>]\\\"/>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C/$list>\\n\\t\u003C\u003Cdelete-edittemplate-state-tiddlers>>\\n\\t\u003C$action-deletetiddler $tiddler={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}}/>\\n\\t\u003C$let scrollTiddler={{{ [\u003Ctdff.tiddlyflex-story-river-filter>] +[after\u003CcurrentTiddler>] ~[\u003Ctdff.tiddlyflex-story-river-filter>before\u003CcurrentTiddler>] }}}>\\n\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CscrollTiddler>>/>\\n\\t\\t\u003C$action-sendmessage\\n\\t\\t\\t$message=\\\"tm-cancel-tiddler\\\"\\n\\t\\t\\t$param={{{ [\u003Cevent-param>!is[blank]!match[]] ~[\u003Cevent-tiddlerTitle>] }}}\\n\\t\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\\t\u003C/$let>\\n\u003C% else %>\\n\\t\u003C\u003Ctiddlyflex-cancel-draft-tiddler-actions-draft-of-not-is-missing>>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-delete-draft-tiddler-actions()\\n\u003C$let deleteTiddlerViewMode={{{ [\u003CcurrentTiddler>get[draft.of]] }}} deleteTiddlerEditMode=\u003C\u003CcurrentTiddler>>>\\n\\t\u003C$list filter=\\\"[subfilter\u003Ctdff.tiddlyflex-enlist-columns>!match\u003CtiddlyFlexColumn>]\\\" variable=\\\"tiddlyFlexColumn\\\">\\n\\t\\t\u003C$set name=\\\"tv-story-list\\\" value={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>!match[$:/StoryList-1]] ~[[$:/StoryList]] }}}>\\n\\t\\t\\t\u003C%if [\u003Ctv-story-list>contains\u003CdeleteTiddlerViewMode>] %>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CdeleteTiddlerViewMode>]\\\"/>\\n\\t\\t\\t\u003C% elseif [\u003Ctv-story-list>contains\u003CdeleteTiddlerEditMode>] %>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"-[\u003CdeleteTiddlerEditMode>]\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$set>\\n\\t\u003C/$list>\\n\u003C/$let>\\n\u003C\u003Cdelete-edittemplate-state-tiddlers>>\\n\u003C$action-deletetiddler $tiddler={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}}/>\\n\u003C$let scrollTiddler={{{ [\u003Ctdff.tiddlyflex-story-river-filter>] +[after\u003CcurrentTiddler>] ~[\u003Ctdff.tiddlyflex-story-river-filter>before\u003CcurrentTiddler>] }}}>\\n\\t\u003C$action-setfield $tiddler=\u003C\u003Ctv-history-list>> current-tiddler=\u003C\u003CscrollTiddler>>/>\\n\\t\u003C$action-sendmessage\\n\\t\\t$message=\\\"tm-delete-tiddler\\\"\\n\\t\\t$param={{{ [\u003Cevent-param>!is[blank]!match[]] ~[\u003Cevent-tiddlerTitle>] }}}\\n\\t\\t$names=\\\"[\u003Clist-event-paramObject>enlist-input[]]\\\"\\n\\t\\t$values=\\\"[\u003Clist-event-paramObject>enlist-input[]] :map:flat[addprefix[event-paramObject-]getvariable[]]\\\"/>\\n\u003C/$let>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/icons/drag-grip\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/icons/drag-grip\",\"text\":\"\u003Csvg width=\\\"1rem\\\" height=\\\"1rem\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" class=\\\"lucide lucide-grip\\\">\u003Ccircle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"19\\\" cy=\\\"5\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"5\\\" cy=\\\"5\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"19\\\" cy=\\\"12\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"5\\\" cy=\\\"12\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"12\\\" cy=\\\"19\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"19\\\" cy=\\\"19\\\" r=\\\"1\\\"/>\u003Ccircle cx=\\\"5\\\" cy=\\\"19\\\" r=\\\"1\\\"/>\u003C/svg>\"},\"$:/plugins/BTC/TiddlyFlex/icons/filter\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/icons/filter\",\"text\":\"\u003Csvg width=\\\"1rem\\\" height=\\\"1rem\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" class=\\\"lucide lucide-filter\\\">\u003Cpolygon points=\\\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\\\"/>\u003C/svg>\"},\"$:/plugins/BTC/TiddlyFlex/icons/layout\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/icons/layout\",\"text\":\"\u003Csvg width=\\\"1rem\\\" height=\\\"1rem\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" class=\\\"lucide lucide-layout-dashboard\\\">\u003Crect width=\\\"7\\\" height=\\\"9\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"1\\\"/>\u003Crect width=\\\"7\\\" height=\\\"5\\\" x=\\\"14\\\" y=\\\"3\\\" rx=\\\"1\\\"/>\u003Crect width=\\\"7\\\" height=\\\"9\\\" x=\\\"14\\\" y=\\\"12\\\" rx=\\\"1\\\"/>\u003Crect width=\\\"7\\\" height=\\\"5\\\" x=\\\"3\\\" y=\\\"16\\\" rx=\\\"1\\\"/>\u003C/svg>\"},\"$:/plugins/BTC/TiddlyFlex/license\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/license\",\"text\":\"!!! This plugin is distributed under MIT License\\n\\n```\\n\\nMIT License\\n\\nCopyright (c) 2024 Simon Huber\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\nin the Software without restriction, including without limitation the rights\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\ncopies of the Software, and to permit persons to whom the Software is\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\nSOFTWARE.\\n\\n```\\n\\n!!! Lucide icons are distributed under ISC License\\n\\n```\\nISC License\\n\\nCopyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022.\\n\\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\\n\\n```\"},\"$:/plugins/BTC/TiddlyFlex/privates/navigation\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/privates/navigation\",\"text\":\"\\\\procedure tiddlyflex-focus-flexcontainer() \u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\\\".tc-tiddlyflex-container\\\" preventScroll=\\\"true\\\"/>\\n\\\\procedure tiddlyflex-keyboard-navigator(actions)\\n\u003C$let currentColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] }}} tv-story-list={{{ [function[tiddlyflex-fullscreen]!is[blank]] :then[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]get[column]addprefix[$:/StoryList-]] ~[[$:/StoryList-]addsuffix\u003CcurrentColumn>!match[$:/StoryList-]] ~[[$:/StoryList-1]] }}} tv-history-list={{{ [function[tiddlyflex-fullscreen]!is[blank]] :then[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]get[column]addprefix[$:/HistoryList-]] ~[[$:/HistoryList-]addsuffix\u003CcurrentColumn>!match[$:/HistoryList-]] ~[[$:/HistoryList-1]] }}} currentTiddler={{{ [all[tiddlers]removeprefix[$:/state/tiddlyflex/story-river/fullscreen/]limit[1]] ~[\u003Ctv-history-list>get[current-tiddler]] }}}>\\n\\t\u003C$navigator story=\u003C\u003Ctv-story-list>> history=\u003C\u003Ctv-history-list>> openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\u003C\u003Cactions>>\\n\\t\u003C/$navigator>\\n\u003C/$let>\\n\\\\end\\n\\\\procedure tiddlyflex-simple-keyboard-navigator()\\n\u003C$navigator story={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] :map[addprefix[$:/StoryList-]] }}} history={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-enlist-columns>first[]] :map[addprefix[$:/HistoryList-]] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\u003C\u003Cactions>>\\n\u003C/$navigator>\\n\\\\end\\n\\\\procedure tiddlyflex-cycle-columns-navigator-inner()\\n\u003C%if [\u003CnextTiddler>is[draft]] %>\\n\\t\u003C\u003Ctiddlyflex-focus-draft-tiddler>>\\n\u003C% else %>\\n\\t\u003C\u003Ctiddlyflex-focus-flexcontainer>>\\n\u003C% endif %>\\n\u003C$navigator story=\u003C\u003Ctv-story-list>> history=\u003C\u003Ctv-history-list>> openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\u003C$action-navigate $to=\u003C\u003CnextTiddler>>/>\\n\u003C/$navigator>\\n\\\\end\\n\\\\define tiddlyflex-cycle-columns-navigator()\\n\u003C$action-setfield $tiddler=\\\"$:/columns\\\" current-column=\u003C\u003CnextColumn>>/>\\n\u003C$set name=\\\"currentHistoryListTiddler\\\" value={{{ [\u003Ctv-history-list>get[current-tiddler]] }}}>\\n\\t\u003C%if [\u003Ctv-story-list>contains\u003CcurrentHistoryListTiddler>] %>\\n\\t\\t\u003C%if [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[match\u003CcurrentHistoryListTiddler>] %>\\n\\t\\t\\t\u003C$let currentColumn=\u003C\u003CnextColumn>> nextTiddler=\u003C\u003CcurrentHistoryListTiddler>> cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-cycle-columns-navigator-inner>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$let currentColumn=\u003C\u003CnextColumn>> nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[nth[1]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\\t\u003C\u003Ctiddlyflex-cycle-columns-navigator-inner>>\\n\\t\\t\\t\u003C/$let>\\n\\t\\t\u003C% endif %>\\n\\t\u003C% elseif [\u003Ctv-story-list>!contains\u003CcurrentHistoryListTiddler>] %>\\n\\t\\t\u003C$let currentColumn=\u003C\u003CnextColumn>> nextTiddler={{{ [subfilter\u003Ctdff.tiddlyflex-story-river-filter>] +[nth[1]] }}} cssEscapedTitle={{{ [\u003CnextTiddler>escapecss[]] }}}>\\n\\t\\t\\t\u003C\u003Ctiddlyflex-cycle-columns-navigator-inner>>\\n\\t\\t\u003C/$let>\\n\\t\u003C% endif %>\\n\u003C/$set>\\n\\\\end\\n\\\\procedure tiddlyflex-multi-column-keyboard-navigator()\\n\u003C$let\\n\\tcurrentColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] }}}\\n\\tlastColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>last[]] }}}\\n\\ttv-story-list={{{ [[$:/StoryList-]addsuffix\u003CcurrentColumn>!match[$:/StoryList-]] ~$:/StoryList-1 }}}\\n\\ttv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CcurrentColumn>!match[$:/HistoryList-]] ~$:/HistoryList-1 }}}\\n\\tfocusedTiddler={{{ [\u003Ctv-history-list>get[current-tiddler]] }}}\\n\\tnextStoryCounter={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>after\u003CcurrentColumn>] }}}\\n\\tnextStoryList={{{ [\u003Ctv-story-list>removesuffix\u003CcurrentColumn>addsuffix\u003CnextStoryCounter>] }}}\\n\\tnextHistoryList={{{ [\u003Ctv-history-list>removesuffix\u003CcurrentColumn>addsuffix\u003CnextStoryCounter>] }}}\\n\\tfirstNextStoryTiddler={{{ [list\u003CnextStoryList>first[]] }}}\\n\\tpreviousStoryCounter={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>before\u003CcurrentColumn>] }}}\\n\\tpreviousStoryList={{{ [\u003Ctv-story-list>removesuffix\u003CcurrentColumn>addsuffix\u003CpreviousStoryCounter>] }}}\\n\\tpreviousHistoryList={{{ [\u003Ctv-history-list>removesuffix\u003CcurrentColumn>addsuffix\u003CpreviousStoryCounter>] }}}\\n\\tfirstPreviousStoryTiddler={{{ [list\u003CpreviousStoryList>first[]] }}}\\n>\\n\\t\u003C\u003Cactions>>\\n\u003C/$let>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/privates/selectors\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/privates/selectors\",\"text\":\"\\\\define tiddlyflex-tiddler-scroll-selector()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n.tc-tiddlyflex-story-river-\u003C\u003CcurrentColumn>> .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"]\\n\\\\end\\n\\\\define tiddlyflex-draft-focus-selector()\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n.tc-tiddlyflex-story-river-\u003C\u003CcurrentColumn>> .tc-tiddlyflex-story-river-inner > [data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] input.tc-titlebar.tc-edit-texteditor\\n\\\\end\\n\\\\procedure tiddlyflex-focus-draft-tiddler()\\n\u003C$wikify name=\\\"focusSelector\\\" text=\u003C\u003Ctiddlyflex-draft-focus-selector>>>\\n\\t\u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\u003C\u003CfocusSelector>> preventScroll=\\\"true\\\"/>\\n\u003C/$wikify>\\n\\\\end\\n\\\\procedure tiddlyflex-scroll-to-tiddler()\\n\u003C$wikify name=\\\"scrollSelector\\\" text=\u003C\u003Ctiddlyflex-tiddler-scroll-selector>>>\\n\\t\u003C$action-sendmessage $message=\\\"tm-scroll\\\" selector=\u003C\u003CscrollSelector>>/>\\n\u003C/$wikify>\\n\\\\end\"},\"$:/plugins/BTC/TiddlyFlex/readme\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/readme\",\"text\":\"!!! ~TiddlyFlex\\n\\nThis ''plugin'' provides an alternative [ext[Flexbox|https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox]] Layout for ~TiddlyWiki5\"},\"$:/core/ui/Buttons/control-panel\":{\"title\":\"$:/core/ui/Buttons/control-panel\",\"tags\":\"$:/tags/PageControls\",\"caption\":\"{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}\",\"description\":\"{{$:/language/Buttons/ControlPanel/Hint}}\",\"text\":\"\\\\whitespace trim\\n\\\\define control-panel-button(class)\\n\\\\whitespace trim\\n\u003C$button to=\\\"$:/ControlPanel\\\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\\\"\\\"\\\"$(tv-config-toolbar-class)$ $class$\\\"\\\"\\\">\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/options-button}}\\n\u003C/$list>\\n\u003C$list filter=\\\"[\u003Ctv-config-toolbar-text>match[yes]]\\\">\\n\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text={{$:/language/Buttons/ControlPanel/Caption}}/>\u003C/span>\\n\u003C/$list>\\n\u003C/$button>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C%if [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] +[addprefix[$:/StoryList-]] +[enlist-input[]] +[contains[$:/ControlPanel]] %>\\n\\t\\t\u003C\u003Ccontrol-panel-button \\\"tc-selected\\\">>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ccontrol-panel-button>>\\n\\t\u003C% endif %>\\n\u003C% else %>\\n\\t\u003C%if [\u003Ctv-story-list>contains[$:/ControlPanel]] %>\\n\\t\\t\u003C\u003Ccontrol-panel-button \\\"tc-selected\\\">>\\n\\t\u003C% else %>\\n\\t\\t\u003C\u003Ccontrol-panel-button>>\\n\\t\u003C% endif %>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/add-column\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/add-column\",\"tags\":\"$:/tags/TopRightBar\",\"list-before\":\"$:/core/ui/TopBar/menu\",\"text\":\"\\\\whitespace trim\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$let columns={{{ [list[$:/columns]count[]!match[0]] ~1 }}} nextColumn={{{ [\u003Ccolumns>add[1]] }}}>\\n\\t\\t\u003C$button class=\\\"tc-btn-invisible\\\">\\n\\t\\t\\t\u003C%if [list[$:/columns]count[]match[0]] %>\\n\\t\\t\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"1\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"[\u003CnextColumn>]\\\"/>\\n\\t\\t\\t{{$:/core/images/plus-button}}\\n\\t\\t\u003C/$button>\\n\\t\u003C/$let>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/dragging\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/dragging\",\"tags\":\"$:/tags/TopRightBar\",\"list-before\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/remove-column\",\"text\":\"\\\\whitespace trim\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$button class={{{ tc-btn-invisible [{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}match[yes]then[tc-selected]] +[join[ ]] }}}>\\n\\t\\t{{$:/plugins/BTC/TiddlyFlex/icons/drag-grip}}\\n\\t\\t\u003C%if [{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}!match[yes]] %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/state/tiddlyflex/story-river/tiddler/drag-enabled\\\" text=\\\"yes\\\"/>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/tiddlyflex/story-river/tiddler/drag-enabled\\\"/>\\n\\t\\t\u003C% endif %>\\n\\t\u003C/$button>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/filter\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/filter\",\"tags\":\"$:/tags/TopRightBar\",\"list-before\":\"\",\"text\":\"\\\\whitespace trim\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$button class={{{ [{$:/state/tiddlyflex/story-river/filter}match[yes]then[tc-selected]] tc-btn-invisible +[join[ ]] }}}>\\n\\t\\t\u003C%if [{$:/state/tiddlyflex/story-river/filter}match[yes]] %>\\n\\t\\t\\t\u003C$action-deletetiddler $tiddler=\\\"$:/state/tiddlyflex/story-river/filter\\\"/>\\n\\t\\t\u003C% else %>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\\\"$:/state/tiddlyflex/story-river/filter\\\" text=\\\"yes\\\"/>\\n\\t\\t\\t\u003C%if [{$:/temp/search/input}is[blank]match[]then[yes]] %>\\n\\t\\t\\t\\t\u003C$action-sendmessage $message=\\\"tm-focus-selector\\\" $param=\\\".tc-search input\\\"/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C% endif %>\\n\\t\\t{{$:/plugins/BTC/TiddlyFlex/icons/filter}}\\n\\t\u003C/$button>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/remove-column\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/remove-column\",\"tags\":\"$:/tags/TopRightBar\",\"list-before\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/TopToolbar/add-column\",\"text\":\"\\\\whitespace trim\\n\\\\procedure remove-column-actions()\\n\u003C$set name=\\\"columnCount\\\" value={{{ [list[$:/columns]count[]] }}}>\\n\\t\u003C$list filter=\\\"[[$:/columns]get[current-column]match\u003CcolumnCount>]\\\">\\n\\t\\t\u003C$action-setfield $tiddler=\\\"$:/columns\\\" current-column={{{ [\u003CcolumnCount>subtract[1]!match[0]] ~1 }}}/>\\n\\t\u003C/$list>\\n\\t\u003C$list filter=\\\"[\u003CcolumnCount>!match[1]]\\\">\\n\\t\\t\u003C$action-listops $tiddler=\\\"$:/columns\\\" $subfilter=\\\"-[\u003CcolumnCount>]\\\"/>\\n\\t\u003C/$list>\\n\u003C/$set>\\n\\\\end\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$let columns={{{ [list[$:/columns]count[]] ~1 }}}>\\n\\t\\t\u003C$button class=\\\"tc-btn-invisible\\\" actions=\u003C\u003Cremove-column-actions>>>\\n\\t\\t\\t{{$:/core/images/minus-button}}\\n\\t\\t\u003C/$button>\\n\\t\u003C/$let>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/fullscreen\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/fullscreen\",\"tags\":\"$:/tags/ViewToolbar $:/tags/EditToolbar\",\"text\":\"\\\\define get-button-class(class)\\nbtc-fullscreen-button $(tv-config-toolbar-class)$ tc-toolbar-icon $class$\\n\\\\end\\n\\\\define get-fullscreen-tooltip(onoff)\\nfullscreen $onoff$ - [$(fullScreenShortcut)$]\\n\\\\end\\n\\n\\\\whitespace trim\\n\u003C$vars fullScreenShortcut=\u003C\u003Cdisplayshortcuts ((fullscreen))>> state={{{ [[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>] }}}>\\n\\t\u003C%if [\u003Cstate>!is[missing]get[text]!match[yes]] ~[\u003Cstate>is[missing]] %>\\n\\t\\t\u003C$button class=\u003C\u003Cget-button-class>> tooltip=\u003C\u003Cget-fullscreen-tooltip \\\"on\\\">>>\\n\\t\\t\\t\u003C$action-setfield $tiddler=\u003C\u003Cstate>> text=\\\"yes\\\" column=\u003C\u003CtiddlyFlexColumn>>/>\\n\\t\\t\\t\u003C%if [\u003Ctv-config-toolbar-icons>match[yes]] %>\\n\\t\\t\\t\\t{{$:/core/images/full-screen-button}}\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C%if [\u003Ctv-config-toolbar-text>match[yes]] %>\\n\\t\\t\\t\\t\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text=\\\"fullscreen\\\"/>\u003C/span>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$button>\\n\\t\u003C% elseif [\u003Cstate>get[text]match[yes]] %>\\n\\t\\t\u003C$button class=\u003C\u003Cget-button-class \\\"tc-selected\\\">> tooltip=\u003C\u003Cget-fullscreen-tooltip \\\"off\\\">>>\\n\\t\\t\\t\u003C$list filter=\\\"[all[tiddlers]prefix[$:/state/tiddlyflex/story-river/fullscreen/]]\\\" variable=\\\"fullScreenTiddler\\\">\\n\\t\\t\\t\\t\u003C$action-deletetiddler $tiddler=\u003C\u003CfullScreenTiddler>>/>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C%if [\u003Ctv-config-toolbar-icons>match[yes]] %>\\n\\t\\t\\t\\t{{$:/core/images/full-screen-button}}\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\u003C%if [\u003Ctv-config-toolbar-text>match[yes]] %>\\n\\t\\t\\t\\t\u003Cspan class=\\\"tc-btn-text\\\">\u003C$text text=\\\"fullscreen\\\"/>\u003C/span>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$button>\\n\\t\u003C% endif %>\\n\u003C/$vars>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/ViewToolbar/menu\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Buttons/ViewToolbar/menu\",\"tags\":\"$:/tags/ViewToolbar\",\"text\":\"\\\\whitespace trim\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\u003C$button popup=\u003C\u003Cqualify \\\"$:/state/popup/tiddlyflex/menu\\\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class={{{ [\u003Ctv-config-toolbar-class>] tc-tiddlyflex-shown-when-narrow +[join[ ]] }}} selectedClass=\\\"tc-selected\\\">\\n{{$:/core/images/menu-button}}\\n\u003C/$button>\\n\u003C$reveal state=\u003C\u003Cqualify \\\"$:/state/popup/tiddlyflex/menu\\\">> type=\\\"popup\\\" position=\\\"belowleft\\\" animate=\\\"yes\\\">\\n\\n\u003Cdiv class=\\\"tc-drop-down\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-icons\\\" value=\\\"yes\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-text\\\" value=\\\"yes\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-class\\\" value=\\\"tc-btn-invisible\\\">\\n\\n\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!is[draft]] -[[$:/core/ui/Buttons/more-tiddler-actions]] -[[$:/plugins/BTC/TiddlyFlex/ui/Buttons/ViewToolbar/menu]]\\\" variable=\\\"listItem\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-class\\\" filter=\\\"[\u003Ctv-config-toolbar-class>] [\u003ClistItem>encodeuricomponent[]addprefix[tc-btn-]]\\\">\\n\\n\u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"inline\\\"/>\\n\\n\u003C/$set>\\n\\n\u003C/$list>\\n\\n\u003C/$set>\\n\\n\u003C/$set>\\n\\n\u003C/$set>\\n\\n\u003C/div>\\n\\n\u003C/$reveal>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Layout\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Layout\",\"tags\":\"$:/tags/Layout\",\"description\":\"A Flexbox Layout\",\"name\":\"~TiddlyFlex\",\"icon\":\"$:/plugins/BTC/TiddlyFlex/icons/layout\",\"code-body\":\"yes\",\"text\":\"\\\\whitespace trim\\n\\\\import [subfilter{$:/core/config/GlobalImportFilter}]\\n\\\\procedure tiddlyflex-hide-sidebar-actions() \u003C$action-setfield $tiddler=\\\"$:/state/sidebar\\\" text=\\\"no\\\"/>\\n\\\\procedure tiddlyflex-layout-story()\\n\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-tiddlyflex-story-river-wrapper\\\">\\n\\t\u003Cdiv class=\\\"tc-tiddlyflex-story-river-header\\\">\\n\\t\\t\u003C$set name=\\\"aboveStoryHeaderTag\\\" value={{{ [[$:/tags/AboveStoryHeader-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CaboveStoryHeaderTag>!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C/div>\\n\\t\u003C$transclude tiddler=\\\"$:/plugins/BTC/TiddlyFlex/ui/Templates/story\\\"/>\\n\\t\u003Cdiv class=\\\"tc-tiddlyflex-story-river-footer\\\">\\n\\t\\t\u003C$set name=\\\"belowStoryFooterTag\\\" value={{{ [[$:/tags/BelowStoryFooter-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CbelowStoryFooterTag>!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\u003C/$set>\\n\\t\u003C/div>\\n\u003C/div>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-story-rivers()\\n\\\\whitespace trim\\n\u003C$list filter=\u003C\u003Ctdff.tiddlyflex-enlist-columns>> variable=\\\"tiddlyFlexColumn\\\">\\n\\t\u003C$set name=\\\"transclusion\\\" value=\u003C\u003CtiddlyFlexColumn>>>\\n\\t\\t\u003C$vars tv-story-list={{{ [[$:/StoryList-]addsuffix\u003CtiddlyFlexColumn>] }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CtiddlyFlexColumn>] }}} openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\t\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-message-catcher\\\" tiddlyflex-layout-inner=\u003C\u003Ctiddlyflex-layout-story>>/>\\n\\t\\t\u003C/$vars>\\n\\t\u003C/$set>\\n\u003C/$list>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-drafts-inner()\\n\u003C$transclude tiddler=\\\"$:/plugins/BTC/TiddlyFlex/ui/Templates/drafts\\\"/>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-drafts()\\n\u003C$macrocall $name=\\\"tiddlyflex-message-catcher-outside\\\" tiddlyflex-layout-inner=\u003C\u003Ctiddlyflex-layout-drafts-inner>>/>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-sidebar()\\n\u003C$transclude tiddler=\\\"$:/plugins/BTC/TiddlyFlex/ui/Templates/sidebar\\\"/>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-header()\\n\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-tiddlyflex-header\\\">\\n\\t\u003C$list filter=\\\"[{$:/status/RequireReloadDueToPluginChange}match[yes]then{$:/temp/HidePluginWarning}!match[yes]then[$:/plugins/BTC/TiddlyFlex/ui/Toolbars/PluginReloadWarning]] [all[shadows+tiddlers]tag[$:/tags/TopToolbar]!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\u003C/$list>\\n\u003C/div>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-leftbar()\\n\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-tiddlyflex-leftbar\\\">\\n\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/LeftToolbar]!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\u003C/$list>\\n\u003C/div>\\n\\\\end\\n\\\\procedure tiddlyflex-layout-footer()\\n\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-tiddlyflex-footer\\\">\\n\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/BottomToolbar]!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\u003C/$list>\\n\u003C/div>\\n\\\\end\\n\u003C$vars\\n\\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\\n\\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\\n\\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\\n\\ttv-enable-drag-and-drop={{$:/config/DragAndDrop/Enable}}\\n\\ttv-show-missing-links={{$:/config/MissingLinks}}\\n\\tstoryviewTitle={{$:/view}}\\n\\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\\n\\t\u003Cdiv class={{{ [all[shadows+tiddlers]tag[$:/tags/ClassFilters/PageTemplate/TiddlyFlex]!is[draft]] :map:flat[subfilter{!!text}] tc-page-container tc-tiddlyflex-container [[tc-page-view-]addsuffix\u003CstoryviewTitle>] [[tc-language-]addsuffix\u003ClanguageTitle>] [{$:/state/sidebar}match[yes]then[tc-sidebar-shown]] :and[unique[]join[ ]] }}} tabindex=\\\"0\\\">\\n\\t\\t\u003C$eventcatcher selector=\\\".tc-tiddlyflex-sidebar-shown\\\" matchSelector=\\\".tc-tiddlyflex-sidebar-shown\\\" $click=\u003C\u003Ctiddlyflex-hide-sidebar-actions>> class=\\\"tc-tiddlyflex-sidebar-shown-eventcatcher\\\">\\n\\t\\t\\t\u003Cdiv class={{{ [{$:/state/sidebar}!match[no]then[tc-tiddlyflex-sidebar-hide tc-btn-invisible tc-tiddlyflex-sidebar-shown]] [{$:/state/sidebar}match[no]then[tc-tiddlyflex-sidebar-hide tc-btn-invisible tc-tiddlyflex-sidebar-hidden]] }}}/>\\n\\t\\t\u003C/$eventcatcher>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-message-catcher-outside\\\" tiddlyflex-layout-inner=\u003C\u003Ctiddlyflex-layout-header>>/>\\n\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-main-wrapper\\\">\\n\\t\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-message-catcher-outside\\\" tiddlyflex-layout-inner=\u003C\u003Ctiddlyflex-layout-leftbar>>/>\\n\\t\\t\\t\u003Cmain class=\\\"tc-tiddlyflex-main\\\">\\n\\t\\t\\t\\t\u003C%if [{$:/config/tiddlyflex/sidebar/resizer}match[yes]] %>\\n\\t\\t\\t\\t\\t\u003C$eventcatcher tag=\\\"div\\\" class=\\\"tc-tiddlyflex-pointerdown-eventcatcher\\\" selector=\\\".tc-tiddlyflex-sidebar-resizer\\\" matchSelector=\\\".tc-tiddlyflex-sidebar-resizer\\\" $pointerdown=\u003C\u003Ctiddlyflex-sidebar-resizer-pointerdown-actions>> $pointerup=\u003C\u003Ctiddlyflex-sidebar-resizer-pointerup-actions>>>\\n\\t\\t\\t\\t\\t\\t\u003C%if [{$:/state/sidebar/resizing}match[yes]] %>\\n\\t\\t\\t\\t\\t\\t\\t\u003C$eventcatcher tag=\\\"div\\\" selector=\\\".tc-tiddlyflex-pointermove\\\" matchSelector=\\\".tc-tiddlyflex-pointermove\\\" class=\\\"tc-tiddlyflex-pointermove-eventcatcher\\\" $pointerup=\u003C\u003Ctiddlyflex-sidebar-resizer-pointerup-actions>> $pointermove=\u003C\u003Ctiddlyflex-sidebar-resizer-pointermove-actions>> $pointerleave=\u003C\u003Ctiddlyflex-sidebar-resizer-pointerup-actions>> $pointerout=\u003C\u003Ctiddlyflex-sidebar-resizer-pointerup-actions>>>\\n\\t\\t\\t\\t\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-pointermove\\\"/>\\n\\t\\t\\t\\t\\t\\t\\t\u003C/$eventcatcher>\\n\\t\\t\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-sidebar-resizer\\\"/>\\n\\t\\t\\t\\t\\t\u003C/$eventcatcher>\\n\\t\\t\\t\\t\u003C% endif %>\\n\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-story-river-container\\\">\\n\\t\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-story-river-container-inner\\\">\\n\\t\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-layout-story-rivers>>\\n\\t\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-layout-drafts>>\\n\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-sidebar\\\">\\n\\t\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-sidebar-container\\\">\\n\\t\\t\\t\\t\\t\\t\u003Cdiv class=\\\"tc-tiddlyflex-sidebar-container-inner\\\">\\n\\t\\t\\t\\t\\t\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-message-catcher-outside\\\" tiddlyflex-layout-inner=\u003C\u003Ctiddlyflex-layout-sidebar>>/>\\n\\t\\t\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\\t\u003C/div>\\n\\t\\t\\t\u003C/main>\\n\\t\\t\u003C/div>\\n\\t\\t\u003C$macrocall $name=\\\"tiddlyflex-message-catcher-outside\\\" tiddlyflex-layout-inner=\u003C\u003Ctiddlyflex-layout-footer>>/>\\n\\t\u003C/div>\\n\u003C/$vars>\"},\"$:/plugins/BTC/tiddlyflex/ui/Notifications/Ensemble/EmptyNotification\":{\"title\":\"$:/plugins/BTC/tiddlyflex/ui/Notifications/Ensemble/EmptyNotification\",\"text\":\"The Ensemble Title must not be empty\"},\"$:/plugins/BTC/tiddlyflex/ui/Notifications/Ensemble/MatchingEnsembleNotification\":{\"title\":\"$:/plugins/BTC/tiddlyflex/ui/Notifications/Ensemble/MatchingEnsembleNotification\",\"text\":\"Nothing to load. The current configuration matches the Ensemble.\"},\"$:/plugins/BTC/TiddlyFlex/ui/SideBar/Ensemble\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/SideBar/Ensemble\",\"caption\":\"Ensemble\",\"tags\":\"$:/tags/SideBar\",\"text\":\"\\\\whitespace trim\\n\\n!! Save Ensemble\\n\\nGive your ensemble a title:\u003Cbr>\\n\u003C$edit-text tiddler=\\\"$:/temp/tiddlyflex/save-ensemble/story-title\\\" default=\\\"\\\" placeholder=\\\"Title\\\" tag=\\\"input\\\" class=\\\"tc-story-title tc-small-gap-right\\\"/>\u003C$button class=\\\"tc-btn-invisible tc-greyed-out-button\\\">\u003C$action-deletefield $tiddler=\\\"$:/temp/tiddlyflex/save-ensemble/story-title\\\" $field=\\\"text\\\"/>{{$:/core/images/close-button}}\u003C/$button>\\n\\nOptionally, provide a list of tiddlers that should get the tag \u003Cspan class=\\\"tc-small-gap-left tc-small-gap-right\\\">\u003C\u003Ctag-pill \\\"$:/tags/Stylesheet\\\">>\u003C/span> when the Ensemble is loaded:\u003Cbr>\\n\u003C$edit-text tiddler=\\\"$:/temp/tiddlyflex/save-ensemble/story-title\\\" default=\\\"\\\" field=\\\"stylesheets\\\" placeholder=\\\"Stylesheets\\\" tag=\\\"input\\\" class=\\\"tc-small-gap-right\\\"/>\u003C$button class=\\\"tc-btn-invisible tc-greyed-out-button\\\">\u003C$action-deletefield $tiddler=\\\"$:/temp/tiddlyflex/save-ensemble/story-title\\\" $field=\\\"stylesheets\\\"/>{{$:/core/images/close-button}}\u003C/$button>\\n\\n\u003C$let ensembleTitle={{{ [[$:/temp/tiddlyflex/save-ensemble/story-title]get[text]] }}}>\\n\\t\u003C$button>\u003C$macrocall $name=\\\"tiddlyflex-save-ensemble-actions\\\" ensembleTitle=\u003C\u003CensembleTitle>>/>Save\u003C/$button>\\n\u003C/$let>\\n\\n\u003Chr class=\\\"simple\\\">\\n\\n!! Load Ensemble\\n\\n\u003C$list filter=\\\"[all[tiddlers+shadows]prefix[$:/Ensemble/]]\\\" variable=\\\"ensembleTiddler\\\" storyview=\\\"pop\\\">\\n\\n\u003C$let ensembleName={{{ [\u003CensembleTiddler>removeprefix[$:/Ensemble/]] }}}>\\n\\n\u003C$text text=\u003C\u003CensembleName>>/>\u003C$button actions=\u003C\u003Ctiddlyflex-load-ensemble-actions>> class=\\\"tc-small-gap-left\\\">Load\u003C/$button>\u003C$button class=\\\"tc-small-gap-left\\\" actions=\\\"\\\"\\\"\u003C$action-deletetiddler $tiddler=\u003C\u003CensembleTiddler>>/>\\\"\\\"\\\">Delete\u003C/$button>\\n\\n\u003C/$let>\\n\\n\u003C/$list>\"},\"$:/core/ui/SideBar/Open\":{\"title\":\"$:/core/ui/SideBar/Open\",\"tags\":\"$:/tags/SideBar\",\"caption\":\"{{$:/language/SideBar/Open/Caption}}\",\"text\":\"\\\\whitespace trim\\n\\\\define lingo-base() $:/language/CloseAll/\\n\\n\\\\define drop-actions()\\n\u003C$action-listops $tiddler=\u003C\u003Ctv-story-list>> $subfilter=\\\"+[insertbefore\u003CactionTiddler>,\u003CcurrentTiddler>]\\\"/>\\n\\\\end\\n\\n\\\\define placeholder()\\n\u003Cdiv class=\\\"tc-droppable-placeholder\\\"/>\\n\\\\end\\n\\n\\\\define droppable-item(button)\\n\\\\whitespace trim\\n\u003C$droppable actions=\u003C\u003Cdrop-actions>> enable=\u003C\u003Ctv-allow-drag-and-drop>> tag=\\\"div\\\">\\n\u003C\u003Cplaceholder>>\\n\u003Cdiv>\\n$button$\\n\u003C/div>\\n\u003C/$droppable>\\n\\\\end\\n\\n\\\\procedure tiddlyflex-sidebar-tab-open()\\n\u003Cdiv class=\\\"tc-sidebar-tab-open\\\">\\n\u003C$list filter=\\\"[list\u003Ctv-story-list>]\\\" history=\u003C\u003Ctv-history-list>> storyview=\\\"pop\\\">\\n\u003Cdiv class=\\\"tc-sidebar-tab-open-item\\\">\\n\u003C$macrocall $name=\\\"droppable-item\\\" button=\\\"\u003C$button message='tm-close-tiddler' tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class='tc-btn-invisible tc-btn-mini tc-small-gap-right'>{{$:/core/images/close-button}}\u003C/$button>\u003C$link/>\\\"/>\\n\u003C/div>\\n\u003C/$list>\\n\u003C$tiddler tiddler=\\\"\\\">\\n\u003Cdiv>\\n\u003C$macrocall $name=\\\"droppable-item\\\" button=\\\"\u003C$button message='tm-close-all-tiddlers' class='tc-btn-invisible tc-btn-mini'>\u003C\u003Clingo Button>>\u003C/$button>\\\"/>\\n\u003C/div>\\n\u003C/$tiddler>\\n\u003C/div>\\n\\\\end\\n\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t\u003C$let currentColumn={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[[$:/columns]get[current-column]] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] ~1 }}} tv-story-list={{{ [[$:/StoryList-]addsuffix\u003CcurrentColumn>] }}} tv-history-list={{{ [[$:/HistoryList-]addsuffix\u003CcurrentColumn>] }}}>\\n\\t\\t\u003C\u003Ctiddlyflex-sidebar-tab-open>>\\n\\t\u003C/$let>\\n\u003C% else %>\\n\\t\u003C\u003Ctiddlyflex-sidebar-tab-open>>\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Templates/EditTemplate\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Templates/EditTemplate\",\"code-body\":\"yes\",\"text\":\"\\\\procedure delete-edittemplate-state-tiddlers()\\n\u003C$set name=\\\"safeNewFieldValueTiddlerPrefix\\\" value=\u003C\u003CnewFieldValueTiddlerPrefix>> emptyValue=\u003C\u003Cqualify \\\"$:/temp/NewFieldValue\\\">> >\\n\\t\u003C$action-deletetiddler $filter=\\\"[\u003CnewFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix\u003CsafeNewFieldValueTiddlerPrefix>] [\u003CnewFieldNameInputTiddler>] [\u003CnewFieldNameSelectionTiddler>] [\u003CnewTagNameTiddler>] [\u003CnewTagNameInputTiddler>] [\u003CnewTagNameSelectionTiddler>] [\u003CtypeInputTiddler>] [\u003CtypeSelectionTiddler>]\\\"/>\\n\u003C/$set>\\n\\\\end\\n\\n\\\\procedure save-tiddler-actions()\\n\\\\whitespace trim\\n\u003C$action-sendmessage $message=\\\"tm-add-tag\\\" $param={{{ [\u003CnewTagNameTiddler>get[text]] }}}/>\\n\u003C$action-sendmessage $message=\\\"tm-add-field\\\" $name={{{ [\u003CnewFieldNameTiddler>get[text]] }}} $value={{{ [\u003CnewFieldNameTiddler>get[text]] :map[subfilter\u003Cget-field-value-tiddler-filter>get[text]] }}}/>\\n\u003C\u003Cdelete-edittemplate-state-tiddlers>>\\n\u003C$action-sendmessage $message=\\\"tm-save-tiddler\\\"/>\\n\\\\end\\n\\n\\\\define cancel-delete-tiddler-actions(message)\\n\u003C%if [[$message$]match[delete]] %>\\n\\t\u003C\u003Ctiddlyflex-delete-draft-tiddler-actions>>\\n\u003C% elseif [[$message$]match[cancel]] %>\\n\\t\u003C\u003Ctiddlyflex-cancel-draft-tiddler-actions>>\\n\u003C% endif %>\\n\\\\end\\n\\n\\\\procedure get-field-value-tiddler-filter() [subfilter\u003Cget-field-editor-filter>sha256[16]addprefix[/]addprefix\u003CnewFieldValueTiddlerPrefix>]\\n\\\\procedure get-field-editor-filter() [\u003CnewFieldNameTiddler>get[text]else[]] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}]\\n\\n\\\\whitespace trim\\n\u003Cdiv\\n\\tdata-tiddler-title=\u003C\u003CcurrentTiddler>>\\n\\tdata-tags={{!!tags}}\\n\\tclass={{{ [all[shadows+tiddlers]tag[$:/tags/ClassFilters/TiddlerTemplate]!is[draft]] :map:flat[subfilter{!!text}] [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]addprefix[tc-tiddlyflex-column-]] tc-tiddler-edit-frame [\u003CcurrentTiddler>is[tiddler]then[tc-tiddler-exists]] [\u003CcurrentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [\u003CcurrentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [\u003CcurrentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] tc-dynanode-track-tiddler-when-visible [\u003CcurrentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}\\n\\trole=\\\"region\\\"\\n\\taria-label={{$:/language/EditTemplate/Caption}}>\\n\\t\u003C$fieldmangler>\\n\\t\\t\u003C$tiddlyflex-draggable enable={{{ [{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}match[yes]then[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>is[missing]then[yes]] ~[[no]] }}} tiddler=\u003C\u003CcurrentTiddler>> startactions=\u003C\u003Ctiddlyflex-drag-start-actions>> endactions=\u003C\u003Ctiddlyflex-drag-end-actions>> class=\\\"tc-tiddler-frame\\\">\\n\\t\\t\\t\u003C$vars\\n\\t\\t\\t\\tstoryTiddler=\u003C\u003CcurrentTiddler>>\\n\\t\\t\\t\\tnewTagNameTiddler=\u003C\u003Cqualify \\\"$:/temp/NewTagName\\\">>\\n\\t\\t\\t\\tnewFieldNameTiddler=\u003C\u003Cqualify \\\"$:/temp/NewFieldName\\\">>\\n\\t\\t\\t\\tnewFieldValueTiddlerPrefix=\u003C\u003Cqualify \\\"$:/temp/NewFieldValue\\\">>\\n\\t\\t\\t\\tnewFieldNameInputTiddler=\u003C\u003Cqualify \\\"$:/temp/NewFieldName/input\\\">>\\n\\t\\t\\t\\tnewFieldNameSelectionTiddler=\u003C\u003Cqualify \\\"$:/temp/NewFieldName/selected-item\\\">>\\n\\t\\t\\t\\tnewTagNameInputTiddler=\u003C\u003Cqualify \\\"$:/temp/NewTagName/input\\\">>\\n\\t\\t\\t\\tnewTagNameSelectionTiddler=\u003C\u003Cqualify \\\"$:/temp/NewTagName/selected-item\\\">>\\n\\t\\t\\t\\ttypeInputTiddler=\u003C\u003Cqualify \\\"$:/temp/Type/input\\\">>\\n\\t\\t\\t\\ttypeSelectionTiddler=\u003C\u003Cqualify \\\"$:/temp/Type/selected-item\\\">>>\\n\\t\\t\\t\\t\u003C$keyboard key=\\\"((cancel-edit-tiddler))\\\" actions=\u003C\u003Ccancel-delete-tiddler-actions \\\"cancel\\\">> tag=\\\"div\\\">\\n\\t\\t\\t\\t\\t\u003C$keyboard key=\\\"((save-tiddler))\\\" actions=\u003C\u003Csave-tiddler-actions>> tag=\\\"div\\\">\\n\\t\\t\\t\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!is[draft]]\\\" variable=\\\"listItem\\\">\\n\\t\\t\\t\\t\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\\t\\t\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\\t\\t\u003C/$keyboard>\\n\\t\\t\\t\\t\u003C/$keyboard>\\n\\t\\t\\t\u003C/$vars>\\n\\t\\t\\t\u003C% if [{$:/state/dragging}match[yes]then{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}match[yes]then[$:/state/story-river/full-screen/]addsuffix\u003CcurrentTiddler>is[missing]] %>\\n\\t\\t\\t\\t\u003C$droppable class=\\\"tc-tiddlyflex-droppable-top-half\\\" actions=\u003C\u003Ctiddlyflex-top-drop-actions>> dragenteractions=\u003C\u003Ctiddlyflex-top-dragenter-actions>>/>\\n\\t\\t\\t\\t\u003C$droppable class=\\\"tc-tiddlyflex-droppable-bottom-half\\\" actions=\u003C\u003Ctiddlyflex-bottom-drop-actions>> dragenteractions=\u003C\u003Ctiddlyflex-bottom-dragenter-actions>>/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$tiddlyflex-draggable>\\n\\t\u003C/$fieldmangler>\\n\u003C/div>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Templates/ViewTemplate\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Templates/ViewTemplate\",\"code-body\":\"yes\",\"text\":\"\\\\whitespace trim\\n\\\\define folded-state()\\n$:/state/folded/$(currentTiddler)$\\n\\\\end\\n\\\\define cancel-delete-tiddler-actions(message) \u003C$action-sendmessage $message=\\\"tm-$message$-tiddler\\\"/>\\n\\\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!is[draft]] [all[shadows+tiddlers]tag[$:/tags/Global/View]!is[draft]]\\n\u003C$vars storyTiddler=\u003C\u003CcurrentTiddler>> tiddlerInfoState=\u003C\u003Cqualify \\\"$:/state/popup/tiddler-info\\\">>>\\n\\t\u003Cdiv data-tiddler-title=\u003C\u003CcurrentTiddler>> data-tags={{!!tags}} class={{{ [all[shadows+tiddlers]tag[$:/tags/ClassFilters/TiddlerTemplate]!is[draft]] :map:flat[subfilter{!!text}] [subfilter\u003Ctdff.tiddlyflex-enlist-columns>count[]addprefix[tc-tiddlyflex-column-]] tc-tiddler-view-frame [\u003CcurrentTiddler>is[tiddler]then[tc-tiddler-exists]] [\u003CcurrentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [\u003CcurrentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [\u003CcurrentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [\u003CcurrentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] tc-dynanode-track-tiddler-when-visible [\u003CcurrentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}} role=\\\"article\\\">\\n\\t\\t\u003C$tiddlyflex-draggable enable={{{ [{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}match[yes]then[$:/state/tiddlyflex/story-river/fullscreen/]addsuffix\u003CcurrentTiddler>is[missing]then[yes]] ~[[no]] }}} tiddler=\u003C\u003CcurrentTiddler>> startactions=\u003C\u003Ctiddlyflex-drag-start-actions>> endactions=\u003C\u003Ctiddlyflex-drag-end-actions>> class=\\\"tc-tiddler-frame\\\">\\n\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!is[draft]]\\\" variable=\\\"listItem\\\">\\n\\t\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\\t\\t\u003C/$list>\\n\\t\\t\\t\u003C% if [{$:/state/dragging}match[yes]then{$:/state/tiddlyflex/story-river/tiddler/drag-enabled}match[yes]then[$:/state/story-river/full-screen/]addsuffix\u003CcurrentTiddler>is[missing]] %>\\n\\t\\t\\t\\t\u003C$droppable class=\\\"tc-tiddlyflex-droppable-top-half\\\" actions=\u003C\u003Ctiddlyflex-top-drop-actions>> dragenteractions=\u003C\u003Ctiddlyflex-top-dragenter-actions>>/>\\n\\t\\t\\t\\t\u003C$droppable class=\\\"tc-tiddlyflex-droppable-bottom-half\\\" actions=\u003C\u003Ctiddlyflex-bottom-drop-actions>> dragenteractions=\u003C\u003Ctiddlyflex-bottom-dragenter-actions>>/>\\n\\t\\t\\t\u003C% endif %>\\n\\t\\t\u003C/$tiddlyflex-draggable>\\n\\t\u003C/div>\\n\u003C/$vars>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Templates/drafts\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Templates/drafts\",\"text\":\"\\\\whitespace trim\\n\u003C$reveal state=\\\"$:/status/IsReadOnly\\\" type=\\\"nomatch\\\" text=\\\"yes\\\" tag=\\\"div\\\" class=\\\"tc-drafts-list tc-tiddlyflex-drafts-list\\\">\\n\u003C$list filter=\\\"[is[draft]!sort[modified]] -[all[tiddlers]prefix[$:/StoryList-]get[list]enlist-input[]]\\\">\\n\u003C$link>\\n\u003Cspan class=\\\"tc-small-gap-right\\\">{{$:/core/images/edit-button}}\u003C/span>\u003C$text text=\u003C\u003CcurrentTiddler>>/>\\n\u003C/$link>\\n\u003C/$list>\\n\u003C/$reveal>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Templates/sidebar\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Templates/sidebar\",\"code-body\":\"yes\",\"text\":\"\\\\whitespace trim\\n\\\\define config-title()\\n$:/config/SideBarSegments/Visibility/$(listItem)$\\n\\\\end\\n\\n\u003Cdiv class=\\\"tc-tiddlyflex-sidebar-scrollable\\\">\\n\\n\\t\u003Cdiv class=\\\"tc-sidebar-header\\\">\\n\\n\\t\\t\u003C$reveal state=\\\"$:/state/sidebar\\\" type=\\\"match\\\" text=\\\"yes\\\" default=\\\"yes\\\" animate=\\\"yes\\\">\\n\\n\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n\\n\\t\\t\\t\\t\u003C$reveal type=\\\"nomatch\\\" state=\u003C\u003Cconfig-title>> text=\\\"hide\\\" tag=\\\"div\\\">\\n\\n\\t\\t\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>> mode=\\\"block\\\"/>\\n\\n\\t\\t\\t\\t\u003C/$reveal>\\n\\n\\t\\t\\t\u003C/$list>\\n\\n\\t\\t\u003C/$reveal>\\n\\n\\t\u003C/div>\\n\\n\u003C/div>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Templates/story\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Templates/story\",\"code-body\":\"yes\",\"text\":\"\\\\whitespace trim\\n\\\\procedure tiddlyflex-activate-column-actions()\\n\u003C%if [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] +[!match\u003CtiddlyFlexColumn>] %>\\n\\t\u003C$action-setfield $tiddler=\\\"$:/columns\\\" current-column=\u003C\u003CtiddlyFlexColumn>>/>\\n\u003C% endif %>\\n\\\\end\\n\\\\procedure tiddlyflex-filtered-story-list()\\n\\n\u003C$list filter=\u003C\u003Ctdff.tiddlyflex-story-river-filter>> history=\u003C\u003Ctv-history-list>> template=\\\"$:/core/ui/StoryTiddlerTemplate\\\" storyview=\\\"tiddlyflex\\\" emptyMessage={{{ [list\u003Ctv-story-list>limit[1]then[]else{$(emptyMessageTiddler)$}] }}}/>\\n\\n\\\\end\\n\u003C$dynanode enable={{{ [{$:/config/tiddlyflex/story-river/dynanode}match[yes]] }}} timeout={{$:/config/tiddlyflex/story-river/dynanode/timeout}} refreshchildren={{{ [[$:/config/tiddlyflex/story-river/dynanode/refreshchildren]get[text]match[yes]] }}} class={{{ [subfilter\u003Ctdff.tiddlyflex-enlist-columns>] :intersection[{$:/columns!!current-column}] ~[subfilter\u003Ctdff.tiddlyflex-current-column-filtered>] +[match\u003CtiddlyFlexColumn>then[tc-tiddlyflex-story-river-active]] [[tc-tiddlyflex-story-river-wrapper-inner]] [[tc-tiddlyflex-story-river-]addsuffix\u003CtiddlyFlexColumn>] :and[unique[]join[ ]] }}}>\\n\\n\\t\u003C$dropzone enable={{{ [function[tiddlyflex-fullscreen]is[blank]then\u003Ctv-enable-drag-and-drop>] }}} class={{{ [\u003CtiddlyFlexColumn>!is[blank]addprefix[tc-tiddlyflex-dropzone-]] ~tc-tiddlyflex-dropzone-1 }}} importTitle={{{ [[$:/Import-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\n\\t\\t\u003C$eventcatcher selector=\\\".tc-tiddlyflex-activate-column\\\" matchSelector=\\\".tc-tiddlyflex-activate-column\\\" $click=\u003C\u003Ctiddlyflex-activate-column-actions>> class=\\\"tc-tiddlyflex-active-column-wrapper\\\">\\n\\n\\t\\t\\t\u003Ca class=\\\"tc-btn-invisible tc-tiddlyflex-activate-column\\\"/>\\n\\n\\t\\t\u003C/$eventcatcher>\\n\\n\\t\\t\u003Csection class=\\\"tc-tiddlyflex-story-river\\\" role=\\\"main\\\">\\n\\n\\t\\t\\t\u003Csection class=\\\"story-backdrop\\\">\\n\\n\\t\\t\\t\\t\u003C$set name=\\\"aboveStoryTag\\\" value={{{ [[$:/tags/AboveStory-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\n\\t\\t\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CaboveStoryTag>!is[draft]]\\\">\\n\\n\\t\\t\\t\\t\\t\\t\u003C$transclude/>\\n\\n\\t\\t\\t\\t\\t\u003C/$list>\\n\\n\\t\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\\t\u003C/section>\\n\\n\\t\\t\\t\u003Csection class=\\\"tc-tiddlyflex-story-river-inner\\\">\\n\\n\\t\\t\\t\\t\u003C$set name=\\\"emptyMessageTiddler\\\" value={{{ [[$:/config/EmptyStoryMessage-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\n\\t\\t\\t\\t\\t\u003C\u003Ctiddlyflex-filtered-story-list>>\\n\\n\\t\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\\t\\t\u003C%if [{$:/state/dragging}match[yes]] %>\\n\\n\\t\\t\\t\\t\\t\u003C$droppable class=\\\"tc-tiddlyflex-below-story-river-droppable\\\" actions=\u003C\u003Ctiddlyflex-story-droppable-drop-actions>> dragenteractions=\u003C\u003Ctiddlyflex-story-droppable-dragenter-actions>>/>\\n\\n\\t\\t\\t\\t\u003C% endif %>\\n\\n\\t\\t\\t\u003C/section>\\n\\n\\t\\t\\t\u003Csection class=\\\"story-frontdrop\\\">\\n\\n\\t\\t\\t\\t\u003C$set name=\\\"belowStoryTag\\\" value={{{ [[$:/tags/BelowStory-]addsuffix\u003CtiddlyFlexColumn>] }}}>\\n\\n\\t\\t\\t\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag\u003CbelowStoryTag>!is[draft]]\\\">\\n\\n\\t\\t\\t\\t\\t\\t\u003C$transclude/>\\n\\n\\t\\t\\t\\t\\t\u003C/$list>\\n\\n\\t\\t\\t\\t\u003C/$set>\\n\\n\\t\\t\\t\u003C/section>\\n\\n\\t\\t\u003C/section>\\n\\n\\t\u003C/$dropzone>\\n\\n\u003C/$dynanode>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Toolbars/PluginReloadWarning\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Toolbars/PluginReloadWarning\",\"text\":\"\\\\define lingo-base() $:/language/\\n\\n\u003Cdiv class=\\\"tc-plugin-reload-warning\\\">\\n\\n\u003C$set name=\\\"tv-config-toolbar-class\\\" value=\\\"\\\">\\n\\n\u003C\u003Clingo PluginReloadWarning>>\u003C$button set=\\\"$:/temp/HidePluginWarning\\\" setTo=\\\"yes\\\" class=\\\"tc-btn-invisible tc-small-gap-left\\\">{{$:/core/images/close-button}}\u003C/$button>\\n\\n\u003C/$set>\\n\\n\u003C/div>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Toolbars/Segments/search\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Toolbars/Segments/search\",\"tags\":\"$:/tags/TopLeftBar\",\"text\":\"\\\\whitespace trim\\n\u003C%if [function[tiddlyflex-layout]] %>\\n\\t{{$:/core/ui/SideBarSegments/search}}\\n\u003C% endif %>\"},\"$:/plugins/BTC/TiddlyFlex/ui/Toolbars/TopToolbar\":{\"title\":\"$:/plugins/BTC/TiddlyFlex/ui/Toolbars/TopToolbar\",\"tags\":\"$:/tags/TopToolbar\",\"text\":\"\\\\whitespace trim\\n\u003Cdiv class=\\\"tc-tiddlyflex-top-toolbar\\\">\\n\\t\u003Cdiv class=\\\"tc-tiddlyflex-top-toolbar-left\\\">\\n\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\\t\u003C/$list>\\n\\t\u003C/div>\\n\\t\u003Cdiv class=\\\"tc-tiddlyflex-top-toolbar-center\\\">\\n\\n\\t\u003C/div>\\n\\t\u003Cdiv class=\\\"tc-tiddlyflex-top-toolbar-right\\\">\\n\\t\\t\u003C$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!is[draft]]\\\" variable=\\\"listItem\\\" storyview=\\\"pop\\\">\\n\\t\\t\\t\u003C$transclude tiddler=\u003C\u003ClistItem>>/>\\n\\t\\t\u003C/$list>\\n\\t\u003C/div>\\n\u003C/div>\"}}}","revision":"0","bag":"default"} , {"title":"$:/plugins/BTC/tiddlywiki-codemirror-6","name":"CodeMirror","description":"CodeMirror 6 editor","version":"0.1.30","list":"readme usage license","plugin-type":"plugin","dependents":"","type":"application/json","text":"{\"tiddlers\":{\"$:/config/EditorTypeMappings/application/javascript\":{\"title\":\"$:/config/EditorTypeMappings/application/javascript\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/application/json\":{\"title\":\"$:/config/EditorTypeMappings/application/json\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/application/x-tiddler-dictionary\":{\"title\":\"$:/config/EditorTypeMappings/application/x-tiddler-dictionary\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/css\":{\"title\":\"$:/config/EditorTypeMappings/text/css\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/html\":{\"title\":\"$:/config/EditorTypeMappings/text/html\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/plain\":{\"title\":\"$:/config/EditorTypeMappings/text/plain\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\":{\"title\":\"$:/config/EditorTypeMappings/text/vnd.tiddlywiki\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/x-markdown\":{\"title\":\"$:/config/EditorTypeMappings/text/x-markdown\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/markdown\":{\"title\":\"$:/config/EditorTypeMappings/text/markdown\",\"text\":\"codemirror-6\"},\"$:/config/EditorTypeMappings/text/x-tiddlywiki\":{\"title\":\"$:/config/EditorTypeMappings/text/x-tiddlywiki\",\"text\":\"codemirror-6\"},\"$:/config/ShortcutInfo/editor-fullscreen\":{\"title\":\"$:/config/ShortcutInfo/editor-fullscreen\",\"text\":\"Toggle the fullscreen view of the editor\"},\"$:/config/codemirror-6/autocompleteIcons\":{\"title\":\"$:/config/codemirror-6/autocompleteIcons\",\"caption\":\"Autocompletion icons\",\"description\":\"whether or not the autocompletion icons should be shown\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/autocorrect\":{\"title\":\"$:/config/codemirror-6/autocorrect\",\"caption\":\"Autocorrect\",\"description\":\"whether or not the \\\"autocorrect\\\" attribute should be set within the editor\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/bracketMatching\":{\"title\":\"$:/config/codemirror-6/bracketMatching\",\"caption\":\"Bracket matching\",\"description\":\"whether or not matching brackets should be highlighted\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/closeBrackets\":{\"title\":\"$:/config/codemirror-6/closeBrackets\",\"caption\":\"Close brackets\",\"description\":\"whether or not brackets should be closed automatically\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/completeAnyWord\":{\"title\":\"$:/config/codemirror-6/completeAnyWord\",\"caption\":\"Complete any word\",\"description\":\"whether or not any word of the currently edited tiddler should be uses for autocompletion\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/cursor-thickness\":{\"title\":\"$:/config/codemirror-6/cursor-thickness\",\"caption\":\"Cursor thickness\",\"description\":\"The thickness of the cursor\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"1px\"},\"$:/config/codemirror-6/fontsize\":{\"title\":\"$:/config/codemirror-6/fontsize\",\"caption\":\"Font-size\",\"description\":\"The fontsize of the text within the editor\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"15px\"},\"$:/config/codemirror-6/highlightActiveLine\":{\"title\":\"$:/config/codemirror-6/highlightActiveLine\",\"caption\":\"Highlight active line\",\"description\":\"whether or not the active line should be highlighted\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/indentWithTab\":{\"title\":\"$:/config/codemirror-6/indentWithTab\",\"caption\":\"Indent with Tab\",\"description\":\"whether or not the Tab key should indent\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/lineNumbers\":{\"title\":\"$:/config/codemirror-6/lineNumbers\",\"caption\":\"Line numbers\",\"description\":\"whether or not the line numbers should be shown\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"yes\"},\"$:/config/codemirror-6/maxRenderedOptions\":{\"title\":\"$:/config/codemirror-6/maxRenderedOptions\",\"caption\":\"Max rendered autocomplete options\",\"description\":\"The maximum amount of rendered options in the autocompletion tooltip\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"100\"},\"$:/config/codemirror-6/rtl\":{\"title\":\"$:/config/codemirror-6/rtl\",\"caption\":\"Right to left view\",\"description\":\"whether or not the editor should be displayed from right to left\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/selectOnOpen\":{\"title\":\"$:/config/codemirror-6/selectOnOpen\",\"caption\":\"Select autocompletion-match on open\",\"description\":\"whether or not the first autocompletion match should be selected as soon as the autocompletion tooltip opens\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/shortcuts/editor-fullscreen\":{\"title\":\"$:/config/shortcuts/editor-fullscreen\",\"text\":\"alt-shift-f\"},\"$:/config/codemirror-6/spellcheck\":{\"title\":\"$:/config/codemirror-6/spellcheck\",\"caption\":\"Spellchecking\",\"description\":\"whether or not the \\\"spellcheck\\\" attribute should be set within the editor\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/config/codemirror-6/tiddlerCompletionIcon\":{\"title\":\"$:/config/codemirror-6/tiddlerCompletionIcon\",\"caption\":\"Tiddler completion icon\",\"description\":\"The icon used for tiddler completions\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"🐟\"},\"$:/config/codemirror-6/tiddlerFilter\":{\"title\":\"$:/config/codemirror-6/tiddlerFilter\",\"caption\":\"Tiddler filter for autocompletion\",\"description\":\"The tiddler filter used for autocompletion\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"[all[tiddlers]!is[system]!is[shadow]!is[draft]]\"},\"$:/config/codemirror-6/tiddlerMatchDelimiter\":{\"title\":\"$:/config/codemirror-6/tiddlerMatchDelimiter\",\"caption\":\"Tiddler completion delimiter\",\"description\":\"The (literal) delimiter used to trigger tiddler autocompletion\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"??\"},\"$:/config/codemirror-6/translate\":{\"title\":\"$:/config/codemirror-6/translate\",\"caption\":\"Translating\",\"description\":\"whether or not the \\\"translate\\\" attribute should be set within the editor\",\"settings-template\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"no\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/edit-codemirror-6.js\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/edit-codemirror-6.js\",\"text\":\"/*\\\\\\r\\ntitle: $:/plugins/BTC/tiddlywiki-codemirror-6/edit-codemirror-6.js\\r\\ntype: application/javascript\\r\\nmodule-type: widget\\r\\n\\r\\nEdit-codemirror widget\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nvar editTextWidgetFactory = require(\\\"$:/core/modules/editor/factory.js\\\").editTextWidgetFactory,\\r\\n\\tCodeMirrorEngine = require(\\\"$:/plugins/BTC/tiddlywiki-codemirror-6/engine.js\\\").CodeMirrorEngine;\\r\\n\\r\\nexports[\\\"edit-codemirror-6\\\"] = editTextWidgetFactory(CodeMirrorEngine,CodeMirrorEngine);\\r\\n\\r\\n})();\\r\\n\",\"type\":\"application/javascript\",\"module-type\":\"widget\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/engine.js\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/engine.js\",\"text\":\"/*\\\\\\r\\ntitle: $:/plugins/BTC/tiddlywiki-codemirror-6/engine.js\\r\\ntype: application/javascript\\r\\nmodule-type: library\\r\\n\\r\\nText editor engine based on a CodeMirror instance\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\t\\r\\n// Install CodeMirror\\r\\nif($tw.browser && !window.CM) {\\r\\n\\trequire(\\\"$:/plugins/BTC/tiddlywiki-codemirror-6/lib/codemirror.js\\\");\\r\\n}\\r\\n\\r\\nfunction CodeMirrorEngine(options) {\\r\\n\\t// Save our options\\r\\n\\tvar self = this;\\r\\n\\toptions = options || {};\\r\\n\\tthis.widget = options.widget;\\r\\n\\tthis.value = options.value;\\r\\n\\tthis.parentNode = options.parentNode;\\r\\n\\tthis.nextSibling = options.nextSibling;\\r\\n\\t// Create the wrapper DIV\\r\\n\\tthis.domNode = this.widget.document.createElement(\\\"div\\\");\\r\\n\\tif(this.widget.editClass) {\\r\\n\\t\\tthis.domNode.className = this.widget.editClass;\\r\\n\\t}\\r\\n\\tthis.domNode.style.display = \\\"inline-block\\\";\\r\\n\\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\\r\\n\\tthis.widget.domNodes.push(this.domNode);\\r\\n\\r\\n\\tvar {EditorView,dropCursor,keymap,highlightSpecialChars,drawSelection,highlightActiveLine,rectangularSelection,crosshairCursor,lineNumbers,highlightActiveLineGutter,placeholder,tooltips} = CM[\\\"@codemirror/view\\\"];\\r\\n\\tvar {defaultKeymap,standardKeymap,indentWithTab,history,historyKeymap,undo,redo} = CM[\\\"@codemirror/commands\\\"];\\r\\n\\tvar {indentUnit,defaultHighlightStyle,syntaxHighlighting,indentOnInput,bracketMatching,foldGutter,foldKeymap} = CM[\\\"@codemirror/language\\\"];\\r\\n\\tvar {EditorState,EditorSelection,Prec} = CM[\\\"@codemirror/state\\\"];\\r\\n\\tvar {searchKeymap,highlightSelectionMatches,openSearchPanel,closeSearchPanel} = CM[\\\"@codemirror/search\\\"];\\r\\n\\tvar {autocompletion,completionKeymap,closeBrackets,closeBracketsKeymap,completionStatus,acceptCompletion,completeAnyWord} = CM[\\\"@codemirror/autocomplete\\\"];\\r\\n\\tvar {lintKeymap} = CM[\\\"@codemirror/lint\\\"];\\r\\n\\r\\n\\tthis.editorSelection = EditorSelection;\\r\\n\\tthis.completionStatus = completionStatus;\\r\\n\\r\\n\\tthis.undo = undo;\\r\\n\\tthis.redo = redo;\\r\\n\\tthis.openSearchPanel = openSearchPanel;\\r\\n\\tthis.closeSearchPanel = closeSearchPanel;\\r\\n\\r\\n\\tthis.solarizedLightTheme = EditorView.theme({},{dark:false});\\r\\n\\tthis.solarizedDarkTheme = EditorView.theme({},{dark:true});\\r\\n\\r\\n\\tvar {tags} = CM[\\\"@lezer/highlight\\\"];\\r\\n\\tvar {HighlightStyle,syntaxHighlighting} = CM[\\\"@codemirror/language\\\"];\\r\\n\\r\\n\\tthis.solarizedLightHighlightStyle = $tw.utils.codemirror.getSolarizedLightHighlightStyle(HighlightStyle,tags);\\r\\n\\tthis.solarizedDarkHighlightStyle = $tw.utils.codemirror.getSolarizedDarkHighlightStyle(HighlightStyle,tags);\\r\\n\\r\\n\\tvar solarizedTheme = this.widget.wiki.getTiddler(this.widget.wiki.getTiddlerText(\\\"$:/palette\\\")).fields[\\\"color-scheme\\\"] === \\\"light\\\" ? this.solarizedLightTheme : this.solarizedDarkTheme;\\r\\n\\tvar solarizedHighlightStyle = this.widget.wiki.getTiddler(this.widget.wiki.getTiddlerText(\\\"$:/palette\\\")).fields[\\\"color-scheme\\\"] === \\\"light\\\" ? this.solarizedLightHighlightStyle : this.solarizedDarkHighlightStyle;\\r\\n\\r\\n\\tvar autoCloseBrackets = this.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/closeBrackets\\\") === \\\"yes\\\";\\r\\n\\r\\n\\tthis.actionCompletionSource = function(context) {\\r\\n\\t\\tvar actionTiddlers = self.widget.wiki.filterTiddlers(\\\"[all[tiddlers+shadows]tag[$:/tags/CodeMirror/Action]!is[draft]]\\\");\\r\\n\\t\\tvar actionStrings = [];\\r\\n\\t\\tvar actions = [];\\r\\n\\t\\t$tw.utils.each(actionTiddlers,function(actionTiddler) {\\r\\n\\t\\t\\tvar tiddler = self.widget.wiki.getTiddler(actionTiddler);\\r\\n\\t\\t\\tactionStrings.push(tiddler.fields.string);\\r\\n\\t\\t\\tactions.push(tiddler.fields.text);\\r\\n\\t\\t});\\r\\n\\t\\t$tw.utils.each(actionStrings,function(actionString) {\\r\\n\\t\\t\\tvar actionStringEscaped = actionString.replace(/[.*+?^${}()|[\\\\]\\\\\\\\]/g, '\\\\\\\\$&');\\r\\n\\t\\t\\tvar regex = $tw.utils.codemirror.validateRegex(actionStringEscaped) ? new RegExp(actionStringEscaped) : null;\\r\\n\\t\\t\\tif(regex) {\\r\\n\\t\\t\\t\\tvar stringContext = context.matchBefore(regex);\\r\\n\\t\\t\\t\\tif(stringContext) {\\r\\n\\t\\t\\t\\t\\tvar string = stringContext.text;\\r\\n\\t\\t\\t\\t\\tvar index = actionStrings.indexOf(string);\\r\\n\\t\\t\\t\\t\\tif(index !== -1) {\\r\\n\\t\\t\\t\\t\\t\\tself.cm.dispatch({changes: {from: stringContext.from, to: stringContext.to, insert: \\\"\\\"}});\\r\\n\\t\\t\\t\\t\\t\\tself.widget.invokeActionString(actions[index],self,undefined,self.widget.variables);\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t}\\r\\n\\t\\t});\\r\\n\\t};\\r\\n\\r\\n\\tthis.tiddlerCompletionSource = function(context) {\\r\\n\\t\\tvar delimiter = self.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/tiddlerMatchDelimiter\\\");\\r\\n\\t\\tvar delimiterRegex = $tw.utils.codemirror.validateRegex(delimiter.replace(/[.*+?^${}()|[\\\\]\\\\\\\\]/g, '\\\\\\\\$&')) ? new RegExp(delimiter.replace(/[.*+?^${}()|[\\\\]\\\\\\\\]/g, '\\\\\\\\$&')) : null;\\r\\n\\t\\tif(delimiterRegex) {\\r\\n\\t\\t\\tvar followingRegex = new RegExp(\\\"[^\\\\\\\\\\\\s]*\\\");\\r\\n\\t\\t\\tvar completeRegex = new RegExp(delimiterRegex.source + followingRegex.source);\\r\\n\\t\\t\\tvar completeMatch = context.matchBefore(completeRegex);\\r\\n\\t\\t\\tif(completeMatch) {\\r\\n\\t\\t\\t\\tvar tiddlers = self.widget.wiki.filterTiddlers(self.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/tiddlerFilter\\\"));\\r\\n\\t\\t\\t\\treturn {\\r\\n\\t\\t\\t\\t\\tfrom: completeMatch.from + delimiter.length,\\r\\n\\t\\t\\t\\t\\toptions: self.getTiddlerCompletionOptions(tiddlers,completeMatch.text.length - (completeMatch.text.length - delimiter.length))\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t};\\r\\n\\r\\n\\tvar selectOnOpen = this.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/selectOnOpen\\\") === \\\"yes\\\";\\r\\n\\tvar autocompleteIcons = this.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/autocompleteIcons\\\") === \\\"yes\\\";\\r\\n\\tvar maxRenderedOptions = parseInt(this.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/maxRenderedOptions\\\"));\\r\\n\\r\\n\\tvar editorExtensions = [\\r\\n\\t\\tdropCursor(),\\r\\n\\t\\tsolarizedTheme,\\r\\n\\t\\tPrec.high(syntaxHighlighting(solarizedHighlightStyle)),\\r\\n\\t\\tPrec.high(EditorView.domEventHandlers({\\r\\n\\t\\t\\tdrop(event,view) {\\r\\n\\t\\t\\t\\tself.dragCancel = false;\\r\\n\\t\\t\\t\\treturn self.handleDropEvent(event,view);\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tdragstart(event,view) {\\r\\n\\t\\t\\t\\tself.dragCancel = true;\\r\\n\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tdragenter(event,view) {\\r\\n\\t\\t\\t\\tself.dragCancel = true;\\r\\n\\t\\t\\t\\tif(self.widget.isFileDropEnabled && ($tw.utils.dragEventContainsFiles(event) || event.dataTransfer.files.length)) {\\r\\n\\t\\t\\t\\t\\tevent.preventDefault();\\r\\n\\t\\t\\t\\t\\treturn true;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tdragover(event,view) {\\r\\n\\t\\t\\t\\tself.dragCancel = true;\\r\\n\\t\\t\\t\\tif(self.widget.isFileDropEnabled && ($tw.utils.dragEventContainsFiles(event) || event.dataTransfer.files.length)) {\\r\\n\\t\\t\\t\\t\\tevent.preventDefault();\\r\\n\\t\\t\\t\\t\\treturn true;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tdragleave(event,view) {\\r\\n\\t\\t\\t\\tself.dragCancel = false;\\r\\n\\t\\t\\t\\tif(self.widget.isFileDropEnabled) {\\r\\n\\t\\t\\t\\t\\tevent.preventDefault();\\r\\n\\t\\t\\t\\t\\treturn true;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tdragend(event,view) {\\r\\n\\t\\t\\t\\tself.dragCancel = true;\\r\\n\\t\\t\\t\\tif(self.widget.isFileDropEnabled) {\\r\\n\\t\\t\\t\\t\\t//event.preventDefault();\\r\\n\\t\\t\\t\\t\\t//return true;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tpaste(event,view) {\\r\\n\\t\\t\\t\\tif(self.widget.isFileDropEnabled) {\\r\\n\\t\\t\\t\\t\\tevent[\\\"twEditor\\\"] = true;\\r\\n\\t\\t\\t\\t\\treturn self.widget.handlePasteEvent.call(self.widget,event);\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\tevent[\\\"twEditor\\\"] = true;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tkeydown(event,view) {\\r\\n\\t\\t\\t\\treturn self.handleKeydownEvent(event,view);\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tfocus(event,view) {\\r\\n\\t\\t\\t\\tif(self.widget.editCancelPopups) {\\r\\n\\t\\t\\t\\t\\t$tw.popup.cancel(0);\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tblur(event,view) {\\r\\n\\t\\t\\t\\treturn false;\\r\\n\\t\\t\\t}\\r\\n\\t\\t})),\\r\\n\\t\\ttooltips({\\r\\n\\t\\t\\tparent: self.domNode.ownerDocument.body\\r\\n\\t\\t}),\\r\\n\\t\\thighlightSpecialChars(),\\r\\n\\t\\thistory(), //{newGroupDelay: 0, joinToEvent: function() { return false; }}),\\r\\n\\t\\tdrawSelection(),\\r\\n\\t\\tEditorState.allowMultipleSelections.of(true),\\r\\n\\t\\tindentOnInput(),\\r\\n\\t\\tsyntaxHighlighting(defaultHighlightStyle,{fallback: true}),\\r\\n\\t\\tautocompletion({tooltipClass: function() { return \\\"cm-autocomplete-tooltip\\\"}, selectOnOpen: selectOnOpen, icons: autocompleteIcons, maxRenderedOptions: maxRenderedOptions}), //{activateOnTyping: false, closeOnBlur: false}),\\r\\n\\t\\trectangularSelection(),\\r\\n\\t\\tcrosshairCursor(),\\r\\n\\t\\thighlightSelectionMatches(),\\r\\n\\t\\tkeymap.of([\\r\\n\\t\\t\\t...closeBracketsKeymap,\\r\\n\\t\\t\\t...defaultKeymap,\\r\\n\\t\\t\\t...searchKeymap,\\r\\n\\t\\t\\t...historyKeymap,\\r\\n\\t\\t\\t...foldKeymap,\\r\\n\\t\\t\\t...completionKeymap,\\r\\n\\t\\t\\t...lintKeymap\\r\\n\\t\\t]),\\r\\n\\t\\tPrec.high(keymap.of({key: \\\"Tab\\\", run: acceptCompletion})),\\r\\n\\t\\tEditorView.lineWrapping,\\r\\n\\t\\tEditorView.contentAttributes.of({tabindex: self.widget.editTabIndex ? self.widget.editTabIndex : \\\"\\\"}),\\r\\n\\t\\tEditorView.contentAttributes.of({spellcheck: self.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/spellcheck\\\") === \\\"yes\\\"}),\\r\\n\\t\\tEditorView.contentAttributes.of({autocorrect: self.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/autocorrect\\\") === \\\"yes\\\"}),\\r\\n\\t\\tEditorView.contentAttributes.of({translate: self.widget.wiki.getTiddlerText(\\\"$:/state/codemirror-6/translate/\\\" + self.widget.editTitle) === \\\"yes\\\" ? \\\"yes\\\" : \\\"no\\\"}),\\r\\n\\t\\tEditorView.perLineTextDirection.of(true),\\r\\n\\t\\tEditorView.updateListener.of(function(v) {\\r\\n\\t\\t\\tif(v.docChanged) {\\r\\n\\t\\t\\t\\tvar text = self.cm.state.doc.toString();\\r\\n\\t\\t\\t\\tself.widget.saveChanges(text);\\r\\n\\t\\t\\t}\\r\\n\\t\\t}),\\r\\n\\t];\\r\\n\\r\\n\\tif(this.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/indentWithTab\\\") === \\\"yes\\\") {\\r\\n\\t\\teditorExtensions.push(\\r\\n\\t\\t\\tkeymap.of([\\r\\n\\t\\t\\t\\tindentWithTab\\r\\n\\t\\t\\t])\\r\\n\\t\\t);\\r\\n\\t};\\r\\n\\r\\n\\tif(this.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/completeAnyWord\\\") === \\\"yes\\\") {\\r\\n\\t\\teditorExtensions.push(EditorState.languageData.of(function() { return [{autocomplete: completeAnyWord}]; }));\\r\\n\\t};\\r\\n\\r\\n\\tif(autoCloseBrackets) {\\r\\n\\t\\teditorExtensions.push(closeBrackets());\\r\\n\\t};\\r\\n\\r\\n\\tif(this.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/bracketMatching\\\") === \\\"yes\\\") {\\r\\n\\t\\teditorExtensions.push(bracketMatching());\\r\\n\\t};\\r\\n\\r\\n\\tif(this.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/lineNumbers\\\") === \\\"yes\\\") {\\r\\n\\t\\teditorExtensions.push(lineNumbers());\\r\\n\\t\\teditorExtensions.push(foldGutter());\\r\\n\\t};\\r\\n\\r\\n\\tif(this.widget.wiki.getTiddlerText(\\\"$:/config/codemirror-6/highlightActiveLine\\\") === \\\"yes\\\") {\\r\\n\\t\\teditorExtensions.push(highlightActiveLine());\\r\\n\\t\\teditorExtensions.push(highlightActiveLineGutter());\\r\\n\\t};\\r\\n\\r\\n\\tif(this.widget.editPlaceholder) {\\r\\n\\t\\teditorExtensions.push(placeholder(self.widget.editPlaceholder));\\r\\n\\t};\\r\\n\\r\\n\\tvar cmIndentUnit = \\\"\\t\\\";\\r\\n\\teditorExtensions.push(indentUnit.of(cmIndentUnit));\\r\\n\\r\\n\\tvar mode = this.widget.editType;\\r\\n\\tconsole.log(mode);\\r\\n\\tif(mode === \\\"\\\") {\\r\\n\\t\\tmode = \\\"text/vnd.tiddlywiki\\\";\\r\\n\\t}\\r\\n\\tswitch(mode) {\\r\\n\\t\\tcase \\\"text/vnd.tiddlywiki\\\":\\r\\n\\t\\t\\tvar {tiddlywiki,tiddlywikiLanguage} = CM[\\\"@codemirror/lang-tiddlywiki\\\"];\\r\\n\\t\\t\\teditorExtensions.push(tiddlywiki());\\r\\n\\t\\t\\tvar actionCompletions = tiddlywikiLanguage.data.of({autocomplete: this.actionCompletionSource});\\r\\n\\t\\t\\tvar tiddlerCompletions = tiddlywikiLanguage.data.of({autocomplete: this.tiddlerCompletionSource});\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(actionCompletions));\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(tiddlerCompletions));\\r\\n\\t\\t\\tbreak;\\r\\n\\t\\tcase \\\"text/html\\\":\\r\\n\\t\\t\\tvar {html,htmlLanguage} = CM[\\\"@codemirror/lang-html\\\"];\\r\\n\\t\\t\\teditorExtensions.push(html({selfClosingTags: true}));\\r\\n\\t\\t\\tvar actionCompletions = htmlLanguage.data.of({autocomplete: this.actionCompletionSource});\\r\\n\\t\\t\\tvar tiddlerCompletions = htmlLanguage.data.of({autocomplete: this.tiddlerCompletionSource});\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(actionCompletions));\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(tiddlerCompletions));\\r\\n\\t\\t\\tbreak;\\r\\n\\t\\tcase \\\"application/javascript\\\":\\r\\n\\t\\t\\tvar {javascript,javascriptLanguage,scopeCompletionSource} = CM[\\\"@codemirror/lang-javascript\\\"];\\r\\n\\t\\t\\teditorExtensions.push(javascript());\\r\\n\\t\\t\\tvar actionCompletions = javascriptLanguage.data.of({autocomplete: this.actionCompletionSource});\\r\\n\\t\\t\\tvar tiddlerCompletions = javascriptLanguage.data.of({autocomplete: this.tiddlerCompletionSource});\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(actionCompletions));\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(tiddlerCompletions));\\r\\n\\t\\t\\t/*editorExtensions.push(\\r\\n\\t\\t\\t\\tjavascriptLanguage.data.of({\\r\\n\\t\\t\\t\\t\\tautocomplete: scopeCompletionSource(globalThis)\\r\\n\\t\\t\\t\\t})\\r\\n\\t\\t\\t);*/\\r\\n\\t\\t\\tbreak;\\r\\n\\t\\tcase \\\"application/json\\\":\\r\\n\\t\\t\\tvar {json,jsonLanguage} = CM[\\\"@codemirror/lang-json\\\"];\\r\\n\\t\\t\\teditorExtensions.push(json());\\r\\n\\t\\t\\tvar actionCompletions = jsonLanguage.data.of({autocomplete: this.actionCompletionSource});\\r\\n\\t\\t\\tvar tiddlerCompletions = jsonLanguage.data.of({autocomplete: this.tiddlerCompletionSource});\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(actionCompletions));\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(tiddlerCompletions));\\r\\n\\t\\t\\tbreak;\\r\\n\\t\\tcase \\\"text/css\\\":\\r\\n\\t\\t\\tvar {css,cssLanguage} = CM[\\\"@codemirror/lang-css\\\"];\\r\\n\\t\\t\\teditorExtensions.push(css());\\r\\n\\t\\t\\tvar actionCompletions = cssLanguage.data.of({autocomplete: this.actionCompletionSource});\\r\\n\\t\\t\\tvar tiddlerCompletions = cssLanguage.data.of({autocomplete: this.tiddlerCompletionSource});\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(actionCompletions));\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(tiddlerCompletions));\\r\\n\\t\\t\\tbreak;\\r\\n\\t\\tcase \\\"text/markdown\\\":\\r\\n\\t\\tcase \\\"text/x-markdown\\\":\\r\\n\\t\\t\\tvar {markdown,markdownLanguage,markdownKeymap} = CM[\\\"@codemirror/lang-markdown\\\"];\\r\\n\\t\\t\\teditorExtensions.push(markdown({base: markdownLanguage}));\\r\\n\\t\\t\\tvar actionCompletions = markdownLanguage.data.of({autocomplete: this.actionCompletionSource});\\r\\n\\t\\t\\tvar tiddlerCompletions = markdownLanguage.data.of({autocomplete: this.tiddlerCompletionSource});\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(actionCompletions));\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(tiddlerCompletions));\\r\\n\\t\\t\\teditorExtensions.push(Prec.high(keymap.of(markdownKeymap)));\\r\\n\\t\\t\\tbreak;\\r\\n\\t\\tdefault:\\r\\n\\t\\t\\tbreak;\\r\\n\\t};\\r\\n\\tvar state = EditorState.create({doc: options.value,extensions: editorExtensions});\\r\\n\\tvar editorOptions = {\\r\\n\\t\\tparent: this.domNode,\\r\\n\\t\\tstate: state\\r\\n\\t};\\r\\n\\r\\n\\tthis.cm = new EditorView(editorOptions);\\r\\n};\\r\\n\\r\\nCodeMirrorEngine.prototype.getTiddlerCompletionOptions = function(tiddlers,prefixLength) {\\r\\n\\tvar self = this;\\r\\n\\tvar options = [];\\r\\n\\t$tw.utils.each(tiddlers,function(tiddler) {\\r\\n\\t\\toptions.push({label: tiddler, type: \\\"cm-tiddler\\\", boost: 99, apply: function(view,completion,from,to) {\\r\\n\\t\\t\\tvar applyFrom = from - prefixLength;\\r\\n\\t\\t\\tvar apply = completion.label;\\r\\n\\t\\t\\tvar applyTo = applyFrom + completion.label.length;\\r\\n\\t\\t\\tview.dispatch(view.state.changeByRange(function(range) {\\r\\n\\t\\t\\t\\tvar editorChanges = [{from: applyFrom, to: to, insert: apply}];\\r\\n\\t\\t\\t\\tvar selectionRange = self.editorSelection.range(applyTo,applyTo);\\r\\n\\t\\t\\t\\treturn {\\r\\n\\t\\t\\t\\t\\tchanges: editorChanges,\\r\\n\\t\\t\\t\\t\\trange: selectionRange\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t}));\\r\\n\\t\\t}});\\r\\n\\t});\\r\\n\\treturn options;\\r\\n};\\r\\n\\r\\nCodeMirrorEngine.prototype.handleDropEvent = function(event,view) {\\r\\n\\tif(!this.widget.isFileDropEnabled) {\\r\\n\\t\\tevent.stopPropagation();\\r\\n\\t\\treturn false;\\r\\n\\t}\\r\\n\\tif($tw.utils.dragEventContainsFiles(event) || event.dataTransfer.files.length) {\\r\\n\\t\\tvar dropCursorPos = view.posAtCoords({x: event.clientX, y: event.clientY},true);\\r\\n\\t\\tview.dispatch({selection: {anchor: dropCursorPos, head: dropCursorPos}});\\r\\n\\t\\tevent.preventDefault();\\r\\n\\t\\treturn true;\\r\\n\\t}\\r\\n\\treturn false;\\r\\n};\\r\\n\\r\\nCodeMirrorEngine.prototype.handleDragEnterEvent = function(event) {\\r\\n\\treturn false;\\r\\n};\\r\\n\\r\\nCodeMirrorEngine.prototype.handleKeydownEvent = function(event,view) {\\r\\n\\tif($tw.keyboardManager.handleKeydownEvent(event,{onlyPriority: true})) {\\r\\n\\t\\tthis.dragCancel = false;\\r\\n\\t\\treturn true;\\r\\n\\t}\\r\\n\\tif((event.keyCode === 27) && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey && (this.completionStatus(this.cm.state) === \\\"active\\\")) {\\r\\n\\t\\tevent.stopPropagation();\\r\\n\\t\\treturn false;\\r\\n\\t}\\r\\n\\tvar widget = this.widget;\\r\\n\\tvar keyboardWidgets = [];\\r\\n\\twhile(widget) {\\r\\n\\t\\tif(widget.parseTreeNode.type === \\\"keyboard\\\") {\\r\\n\\t\\t\\tkeyboardWidgets.push(widget);\\r\\n\\t\\t}\\r\\n\\t\\twidget = widget.parentWidget;\\r\\n\\t}\\r\\n\\tif(keyboardWidgets.length > 0) {\\r\\n\\t\\tvar handled = undefined;\\r\\n\\t\\tfor(var i=0; i\u003CkeyboardWidgets.length; i++) {\\r\\n\\t\\t\\tvar keyboardWidget = keyboardWidgets[i];\\r\\n\\t\\t\\tvar keyInfoArray = keyboardWidget.keyInfoArray;\\r\\n\\t\\t\\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\\r\\n\\t\\t\\t\\tif(this.dragCancel && ($tw.keyboardManager.getPrintableShortcuts(keyInfoArray).indexOf(\\\"Escape\\\") !== -1)) {\\r\\n\\t\\t\\t\\t\\thandled = false;\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\thandled = true;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t\\tif(handled) {\\r\\n\\t\\t\\tthis.dragCancel = false;\\r\\n\\t\\t\\treturn true;\\r\\n\\t\\t} else if(handled === false) {\\r\\n\\t\\t\\tevent.stopPropagation();\\r\\n\\t\\t\\tthis.dragCancel = false;\\r\\n\\t\\t\\treturn true;\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\tthis.dragCancel = false;\\r\\n\\treturn this.widget.handleKeydownEvent.call(this.widget,event);\\r\\n};\\r\\n\\r\\n/*\\r\\nSet the text of the engine if it doesn't currently have focus\\r\\n*/\\r\\nCodeMirrorEngine.prototype.setText = function(text,type) {\\r\\n\\tif(!this.cm.hasFocus) {\\r\\n\\t\\tthis.updateDomNodeText(text);\\r\\n\\t}\\r\\n};\\r\\n\\r\\n/*\\r\\nUpdate the DomNode with the new text\\r\\n*/\\r\\nCodeMirrorEngine.prototype.updateDomNodeText = function(text) {\\r\\n\\tvar self = this;\\r\\n\\tvar selections = this.cm.state.selection;\\r\\n\\tthis.cm.dispatch(this.cm.state.update({\\r\\n\\t\\tchanges: {\\r\\n\\t\\t\\tfrom: 0,\\r\\n\\t\\t\\tto: self.cm.state.doc.length,\\r\\n\\t\\t\\tinsert: text\\r\\n\\t\\t},\\r\\n\\t\\tselection: selections,\\r\\n\\t\\tdocChanged: true\\r\\n\\t}));\\r\\n};\\r\\n\\r\\n/*\\r\\nGet the text of the engine\\r\\n*/\\r\\nCodeMirrorEngine.prototype.getText = function() {\\r\\n\\treturn this.cm.state.doc.toString();\\r\\n};\\r\\n\\r\\n/*\\r\\nFix the height of textarea to fit content\\r\\n*/\\r\\nCodeMirrorEngine.prototype.fixHeight = function() {\\r\\n\\tthis.cm.requestMeasure();\\r\\n};\\r\\n\\r\\n/*\\r\\nFocus the engine node\\r\\n*/\\r\\nCodeMirrorEngine.prototype.focus = function() {\\r\\n\\tthis.cm.focus();\\r\\n}\\r\\n\\r\\n/*\\r\\nCreate a blank structure representing a text operation\\r\\n*/\\r\\nCodeMirrorEngine.prototype.createTextOperation = function(type) {\\r\\n\\tvar selections = this.cm.state.selection.ranges;\\r\\n\\tvar operations;\\r\\n\\tswitch(type) {\\r\\n\\tcase (\\\"excise\\\"):\\r\\n\\tcase (\\\"focus-editor\\\"):\\r\\n\\tcase (\\\"insert-text\\\"):\\r\\n\\tcase (\\\"make-link\\\"):\\r\\n\\tcase (\\\"prefix-lines\\\"):\\r\\n\\tcase (\\\"redo\\\"):\\r\\n\\tcase (\\\"replace-all\\\"):\\r\\n\\tcase (\\\"replace-selection\\\"):\\r\\n\\tcase (\\\"save-selection\\\"):\\r\\n\\tcase (\\\"search\\\"):\\r\\n\\tcase (\\\"undo\\\"):\\r\\n\\tcase (\\\"wrap-lines\\\"):\\r\\n\\tcase (\\\"wrap-selection\\\"):\\r\\n\\t\\toperations = [];\\r\\n\\t\\tfor(var i=0; i\u003Cselections.length; i++) {\\r\\n\\t\\t\\tvar anchorPos = selections[i].from,\\r\\n\\t\\t\\t\\theadPos = selections[i].to;\\r\\n\\t\\t\\tvar operation = {\\r\\n\\t\\t\\t\\ttext: this.cm.state.doc.toString(),\\r\\n\\t\\t\\t\\tselStart: anchorPos,\\r\\n\\t\\t\\t\\tselEnd: headPos,\\r\\n\\t\\t\\t\\tcutStart: null,\\r\\n\\t\\t\\t\\tcutEnd: null,\\r\\n\\t\\t\\t\\treplacement: null,\\r\\n\\t\\t\\t\\tnewSelStart: null,\\r\\n\\t\\t\\t\\tnewSelEnd: null\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\toperation.selection = this.cm.state.sliceDoc(anchorPos,headPos);\\r\\n\\t\\t\\toperations.push(operation);\\r\\n\\t\\t}\\r\\n\\t\\tbreak;\\r\\n\\tdefault:\\r\\n\\t\\toperations = {\\r\\n\\t\\t\\ttext: this.cm.state.doc.toString(),\\r\\n\\t\\t\\tselStart: selections[0].from,\\r\\n\\t\\t\\tselEnd: selections[0].to,\\r\\n\\t\\t\\tcutStart: null,\\r\\n\\t\\t\\tcutEnd: null,\\r\\n\\t\\t\\treplacement: null,\\r\\n\\t\\t\\tnewSelStart: null,\\r\\n\\t\\t\\tnewSelEnd: null\\r\\n\\t\\t}\\r\\n\\t\\tbreak;\\r\\n\\t}\\r\\n\\treturn operations;\\r\\n};\\r\\n\\r\\n/*\\r\\nExecute a text operation\\r\\n*/\\r\\nCodeMirrorEngine.prototype.executeTextOperation = function(operations) {\\r\\n\\tvar self = this;\\r\\n\\tif(operations.type && (operations.type === \\\"undo\\\")) {\\r\\n\\t\\tthis.undo(this.cm);\\r\\n\\t} else if(operations.type && (operations.type === \\\"redo\\\")) {\\r\\n\\t\\tthis.redo(this.cm);\\r\\n\\t} else if(operations.type && (operations.type === \\\"search\\\")) {\\r\\n\\t\\tthis.closeSearchPanel(this.cm) || this.openSearchPanel(this.cm);\\r\\n\\t} else if((operations.type !== \\\"focus-editor\\\") && operations && operations.length) {\\r\\n\\t\\tvar ranges = this.cm.state.selection.ranges;\\r\\n\\t\\tthis.cm.dispatch(this.cm.state.changeByRange(function(range) {\\r\\n\\t\\t\\tvar index;\\r\\n\\t\\t\\tfor(var i=0; i\u003Cranges.length; i++) {\\r\\n\\t\\t\\t\\tif(ranges[i] === range) {\\r\\n\\t\\t\\t\\t\\tindex = i;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\tvar editorChanges = [{from: operations[index].cutStart, to: operations[index].cutEnd, insert: operations[index].replacement}];\\r\\n\\t\\t\\tvar selectionRange = self.editorSelection.range(operations[index].newSelStart,operations[index].newSelEnd);\\r\\n\\t\\t\\treturn {\\r\\n\\t\\t\\t\\tchanges: editorChanges,\\r\\n\\t\\t\\t\\trange: selectionRange\\r\\n\\t\\t\\t}\\r\\n\\t\\t}));\\r\\n\\t} else if(operations.type !== \\\"focus-editor\\\" && operations && operations.cutStart && operations.cutEnd && operations.newSelStart && operations.newSelEnd && operations.replacement) {\\r\\n\\t\\tthis.cm.dispatch(this.cm.state.changeByRange(function(range) {\\r\\n\\t\\t\\tvar editorChanges = [{from: operations.cutStart, to: operations.cutEnd, insert: operations.replacement}];\\r\\n\\t\\t\\tvar selectionRange = self.editorSelection.range(operations.newSelStart,operations.newSelEnd);\\r\\n\\t\\t\\treturn {\\r\\n\\t\\t\\t\\tchanges: editorChanges,\\r\\n\\t\\t\\t\\trange: selectionRange\\r\\n\\t\\t\\t}\\t\\t\\t\\r\\n\\t\\t}));\\r\\n\\t}\\r\\n\\tthis.cm.focus();\\r\\n\\treturn this.cm.state.doc.toString();\\r\\n};\\r\\n\\r\\nexports.CodeMirrorEngine = $tw.browser ? CodeMirrorEngine : require(\\\"$:/core/modules/editor/engines/simple.js\\\").SimpleEngine;\\r\\n\\r\\n})();\\r\\n\",\"type\":\"application/javascript\",\"module-type\":\"library\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/lib/codemirror.js\":{\"text\":\"(function(){'use strict';!function(e){(\\\"object\\\"!=typeof exports||\\\"undefined\\\"==typeof module)&&\\\"function\\\"==typeof define&&define.amd?define(e):e();}(function(){function e(n){var t=this.constructor;return this.then(function(e){return t.resolve(n()).then(function(){return e;});},function(e){return t.resolve(n()).then(function(){return t.reject(e);});});}var n=setTimeout;function a(e){return e&&\\\"undefined\\\"!=typeof e.length;}function o(){}function i(e){if(!(this instanceof i))throw new TypeError(\\\"Promises must be constructed via new\\\");if(\\\"function\\\"!=typeof e)throw new TypeError(\\\"not a function\\\");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],s(e,this);}function r(o,r){for(;3===o._state;)o=o._value;0!==o._state?(o._handled=!0,i._immediateFn(function(){var e=1===o._state?r.onFulfilled:r.onRejected;if(null!==e){var n;try{n=e(o._value);}catch(t){return void u(r.promise,t);}f(r.promise,n);}else(1===o._state?f:u)(r.promise,o._value);})):o._deferreds.push(r);}function f(e,n){try{if(n===e)throw new TypeError(\\\"A promise cannot be resolved with itself.\\\");if(n&&(\\\"object\\\"==typeof n||\\\"function\\\"==typeof n)){var t=n.then;if(n instanceof i)return e._state=3,e._value=n,void c(e);if(\\\"function\\\"==typeof t)return void s(function o(e,n){return function(){e.apply(n,arguments);};}(t,n),e);}e._state=1,e._value=n,c(e);}catch(r){u(e,r);}}function u(e,n){e._state=2,e._value=n,c(e);}function c(e){2===e._state&&0===e._deferreds.length&&i._immediateFn(function(){e._handled||i._unhandledRejectionFn(e._value);});for(var n=0,t=e._deferreds.length;n\u003Ct;n++)r(e,e._deferreds[n]);e._deferreds=null;}function l(e,n,t){this.onFulfilled=\\\"function\\\"==typeof e?e:null,this.onRejected=\\\"function\\\"==typeof n?n:null,this.promise=t;}function s(e,n){var t=!1;try{e(function(e){t||(t=!0,f(n,e));},function(e){t||(t=!0,u(n,e));});}catch(o){if(t)return;t=!0,u(n,o);}}i.prototype[\\\"catch\\\"]=function(e){return this.then(null,e);},i.prototype.then=function(e,n){var t=new this.constructor(o);return r(this,new l(e,n,t)),t;},i.prototype[\\\"finally\\\"]=e,i.all=function(n){return new i(function(r,i){if(!a(n))return i(new TypeError(\\\"Promise.all accepts an array\\\"));var f=Array.prototype.slice.call(n);if(0===f.length)return r([]);var u=f.length;function c(n,e){try{if(e&&(\\\"object\\\"==typeof e||\\\"function\\\"==typeof e)){var t=e.then;if(\\\"function\\\"==typeof t)return void t.call(e,function(e){c(n,e);},i);}f[n]=e,0==--u&&r(f);}catch(o){i(o);}}for(var e=0;e\u003Cf.length;e++)c(e,f[e]);});},i.resolve=function(n){return n&&\\\"object\\\"==typeof n&&n.constructor===i?n:new i(function(e){e(n);});},i.reject=function(t){return new i(function(e,n){n(t);});},i.race=function(r){return new i(function(e,n){if(!a(r))return n(new TypeError(\\\"Promise.race accepts an array\\\"));for(var t=0,o=r.length;t\u003Co;t++)i.resolve(r[t]).then(e,n);});},i._immediateFn=\\\"function\\\"==typeof setImmediate?function(e){setImmediate(e);}:function(e){n(e,0);},i._unhandledRejectionFn=function(e){void 0!==console&&console&&console.warn(\\\"Possible Unhandled Promise Rejection:\\\",e);};var t=function(){if(\\\"undefined\\\"!=typeof self)return self;if(\\\"undefined\\\"!=typeof window)return window;if(\\\"undefined\\\"!=typeof global)return global;throw Error(\\\"unable to locate global object\\\");}();\\\"function\\\"!=typeof t.Promise?t.Promise=i:t.Promise.prototype[\\\"finally\\\"]||(t.Promise.prototype[\\\"finally\\\"]=e);});\\\"function\\\"!=typeof Object.assign&&Object.defineProperty(Object,\\\"assign\\\",{value:function(e,t){if(null==e)throw new TypeError(\\\"Cannot convert undefined or null to object\\\");for(var n=Object(e),r=1;r\u003Carguments.length;r++){var o=arguments[r];if(null!=o)for(var c in o)Object.prototype.hasOwnProperty.call(o,c)&&(n[c]=o[c]);}return n;},writable:!0,configurable:!0});[Element.prototype,CharacterData.prototype,DocumentType.prototype].forEach(function(e){e.hasOwnProperty(\\\"remove\\\")||Object.defineProperty(e,\\\"remove\\\",{configurable:!0,enumerable:!0,writable:!0,value:function(){null!==this.parentNode&&this.parentNode.removeChild(this);}});});class Text$1{lineAt(pos){if(pos\u003C0||pos>this.length)throw new RangeError(`Invalid position ${pos} in document of length ${this.length}`);return this.lineInner(pos,false,1,0);}line(n){if(n\u003C1||n>this.lines)throw new RangeError(`Invalid line number ${n} in ${this.lines}-line document`);return this.lineInner(n,true,1,0);}replace(from,to,text){[from,to]=clip(this,from,to);let parts=[];this.decompose(0,from,parts,2);if(text.length)text.decompose(0,text.length,parts,1|2);this.decompose(to,this.length,parts,1);return TextNode.from(parts,this.length-(to-from)+text.length);}append(other){return this.replace(this.length,this.length,other);}slice(from,to=this.length){[from,to]=clip(this,from,to);let parts=[];this.decompose(from,to,parts,0);return TextNode.from(parts,to-from);}eq(other){if(other==this)return true;if(other.length!=this.length||other.lines!=this.lines)return false;let start=this.scanIdentical(other,1),end=this.length-this.scanIdentical(other,-1);let a=new RawTextCursor(this),b=new RawTextCursor(other);for(let skip=start,pos=start;;){a.next(skip);b.next(skip);skip=0;if(a.lineBreak!=b.lineBreak||a.done!=b.done||a.value!=b.value)return false;pos+=a.value.length;if(a.done||pos>=end)return true;}}iter(dir=1){return new RawTextCursor(this,dir);}iterRange(from,to=this.length){return new PartialTextCursor(this,from,to);}iterLines(from,to){let inner;if(from==null){inner=this.iter();}else{if(to==null)to=this.lines+1;let start=this.line(from).from;inner=this.iterRange(start,Math.max(start,to==this.lines+1?this.length:to\u003C=1?0:this.line(to-1).to));}return new LineCursor(inner);}toString(){return this.sliceString(0);}toJSON(){let lines=[];this.flatten(lines);return lines;}constructor(){}static of(text){if(text.length==0)throw new RangeError(\\\"A document must have at least one line\\\");if(text.length==1&&!text[0])return Text$1.empty;return text.length\u003C=32?new TextLeaf(text):TextNode.from(TextLeaf.split(text,[]));}}class TextLeaf extends Text$1{constructor(text,length=textLength(text)){super();this.text=text;this.length=length;}get lines(){return this.text.length;}get children(){return null;}lineInner(target,isLine,line,offset){for(let i=0;;i++){let string=this.text[i],end=offset+string.length;if((isLine?line:end)>=target)return new Line$1(offset,end,line,string);offset=end+1;line++;}}decompose(from,to,target,open){let text=from\u003C=0&&to>=this.length?this:new TextLeaf(sliceText(this.text,from,to),Math.min(to,this.length)-Math.max(0,from));if(open&1){let prev=target.pop();let joined=appendText(text.text,prev.text.slice(),0,text.length);if(joined.length\u003C=32){target.push(new TextLeaf(joined,prev.length+text.length));}else{let mid=joined.length>>1;target.push(new TextLeaf(joined.slice(0,mid)),new TextLeaf(joined.slice(mid)));}}else{target.push(text);}}replace(from,to,text){if(!(text instanceof TextLeaf))return super.replace(from,to,text);[from,to]=clip(this,from,to);let lines=appendText(this.text,appendText(text.text,sliceText(this.text,0,from)),to);let newLen=this.length+text.length-(to-from);if(lines.length\u003C=32)return new TextLeaf(lines,newLen);return TextNode.from(TextLeaf.split(lines,[]),newLen);}sliceString(from,to=this.length,lineSep=\\\"\\\\n\\\"){[from,to]=clip(this,from,to);let result=\\\"\\\";for(let pos=0,i=0;pos\u003C=to&&i\u003Cthis.text.length;i++){let line=this.text[i],end=pos+line.length;if(pos>from&&i)result+=lineSep;if(from\u003Cend&&to>pos)result+=line.slice(Math.max(0,from-pos),to-pos);pos=end+1;}return result;}flatten(target){for(let _i=0,_this$text=this.text,_length=_this$text.length;_i\u003C_length;_i++){let line=_this$text[_i];target.push(line);}}scanIdentical(){return 0;}static split(text,target){let part=[],len=-1;for(let _i2=0,_length2=text.length;_i2\u003C_length2;_i2++){let line=text[_i2];part.push(line);len+=line.length+1;if(part.length==32){target.push(new TextLeaf(part,len));part=[];len=-1;}}if(len>-1)target.push(new TextLeaf(part,len));return target;}}class TextNode extends Text$1{constructor(children,length){super();this.children=children;this.length=length;this.lines=0;for(let _i3=0,_length3=children.length;_i3\u003C_length3;_i3++){let child=children[_i3];this.lines+=child.lines;}}lineInner(target,isLine,line,offset){for(let i=0;;i++){let child=this.children[i],end=offset+child.length,endLine=line+child.lines-1;if((isLine?endLine:end)>=target)return child.lineInner(target,isLine,line,offset);offset=end+1;line=endLine+1;}}decompose(from,to,target,open){for(let i=0,pos=0;pos\u003C=to&&i\u003Cthis.children.length;i++){let child=this.children[i],end=pos+child.length;if(from\u003C=end&&to>=pos){let childOpen=open&((pos\u003C=from?1:0)|(end>=to?2:0));if(pos>=from&&end\u003C=to&&!childOpen)target.push(child);else child.decompose(from-pos,to-pos,target,childOpen);}pos=end+1;}}replace(from,to,text){[from,to]=clip(this,from,to);if(text.lines\u003Cthis.lines)for(let i=0,pos=0;i\u003Cthis.children.length;i++){let child=this.children[i],end=pos+child.length;if(from>=pos&&to\u003C=end){let updated=child.replace(from-pos,to-pos,text);let totalLines=this.lines-child.lines+updated.lines;if(updated.lines\u003CtotalLines>>5-1&&updated.lines>totalLines>>5+1){let copy=this.children.slice();copy[i]=updated;return new TextNode(copy,this.length-(to-from)+text.length);}return super.replace(pos,end,updated);}pos=end+1;}return super.replace(from,to,text);}sliceString(from,to=this.length,lineSep=\\\"\\\\n\\\"){[from,to]=clip(this,from,to);let result=\\\"\\\";for(let i=0,pos=0;i\u003Cthis.children.length&&pos\u003C=to;i++){let child=this.children[i],end=pos+child.length;if(pos>from&&i)result+=lineSep;if(from\u003Cend&&to>pos)result+=child.sliceString(from-pos,to-pos,lineSep);pos=end+1;}return result;}flatten(target){for(let _i4=0,_this$children=this.children,_length4=_this$children.length;_i4\u003C_length4;_i4++){let child=_this$children[_i4];child.flatten(target);}}scanIdentical(other,dir){if(!(other instanceof TextNode))return 0;let length=0;let[iA,iB,eA,eB]=dir>0?[0,0,this.children.length,other.children.length]:[this.children.length-1,other.children.length-1,-1,-1];for(;;iA+=dir,iB+=dir){if(iA==eA||iB==eB)return length;let chA=this.children[iA],chB=other.children[iB];if(chA!=chB)return length+chA.scanIdentical(chB,dir);length+=chA.length+1;}}static from(children,length=children.reduce((l,ch)=>l+ch.length+1,-1)){let lines=0;for(let _i5=0,_length5=children.length;_i5\u003C_length5;_i5++){let ch=children[_i5];lines+=ch.lines;}if(lines\u003C32){let flat=[];for(let _i6=0,_length6=children.length;_i6\u003C_length6;_i6++){let ch=children[_i6];ch.flatten(flat);}return new TextLeaf(flat,length);}let chunk=Math.max(32,lines>>5),maxChunk=chunk\u003C\u003C1,minChunk=chunk>>1;let chunked=[],currentLines=0,currentLen=-1,currentChunk=[];function add(child){let last;if(child.lines>maxChunk&&child instanceof TextNode){for(let _i7=0,_child$children=child.children,_length7=_child$children.length;_i7\u003C_length7;_i7++){let node=_child$children[_i7];add(node);}}else if(child.lines>minChunk&&(currentLines>minChunk||!currentLines)){flush();chunked.push(child);}else if(child instanceof TextLeaf&¤tLines&&(last=currentChunk[currentChunk.length-1])instanceof TextLeaf&&child.lines+last.lines\u003C=32){currentLines+=child.lines;currentLen+=child.length+1;currentChunk[currentChunk.length-1]=new TextLeaf(last.text.concat(child.text),last.length+1+child.length);}else{if(currentLines+child.lines>chunk)flush();currentLines+=child.lines;currentLen+=child.length+1;currentChunk.push(child);}}function flush(){if(currentLines==0)return;chunked.push(currentChunk.length==1?currentChunk[0]:TextNode.from(currentChunk,currentLen));currentLen=-1;currentLines=currentChunk.length=0;}for(let _i8=0,_length8=children.length;_i8\u003C_length8;_i8++){let child=children[_i8];add(child);}flush();return chunked.length==1?chunked[0]:new TextNode(chunked,length);}}Text$1.empty=new TextLeaf([\\\"\\\"],0);function textLength(text){let length=-1;for(let _i9=0,_length9=text.length;_i9\u003C_length9;_i9++){let line=text[_i9];length+=line.length+1;}return length;}function appendText(text,target,from=0,to=1e9){for(let pos=0,i=0,first=true;i\u003Ctext.length&&pos\u003C=to;i++){let line=text[i],end=pos+line.length;if(end>=from){if(end>to)line=line.slice(0,to-pos);if(pos\u003Cfrom)line=line.slice(from-pos);if(first){target[target.length-1]+=line;first=false;}else target.push(line);}pos=end+1;}return target;}function sliceText(text,from,to){return appendText(text,[\\\"\\\"],from,to);}class RawTextCursor{constructor(text,dir=1){this.dir=dir;this.done=false;this.lineBreak=false;this.value=\\\"\\\";this.nodes=[text];this.offsets=[dir>0?1:(text instanceof TextLeaf?text.text.length:text.children.length)\u003C\u003C1];}nextInner(skip,dir){this.done=this.lineBreak=false;for(;;){let last=this.nodes.length-1;let top=this.nodes[last],offsetValue=this.offsets[last],offset=offsetValue>>1;let size=top instanceof TextLeaf?top.text.length:top.children.length;if(offset==(dir>0?size:0)){if(last==0){this.done=true;this.value=\\\"\\\";return this;}if(dir>0)this.offsets[last-1]++;this.nodes.pop();this.offsets.pop();}else if((offsetValue&1)==(dir>0?0:1)){this.offsets[last]+=dir;if(skip==0){this.lineBreak=true;this.value=\\\"\\\\n\\\";return this;}skip--;}else if(top instanceof TextLeaf){let next=top.text[offset+(dir\u003C0?-1:0)];this.offsets[last]+=dir;if(next.length>Math.max(0,skip)){this.value=skip==0?next:dir>0?next.slice(skip):next.slice(0,next.length-skip);return this;}skip-=next.length;}else{let next=top.children[offset+(dir\u003C0?-1:0)];if(skip>next.length){skip-=next.length;this.offsets[last]+=dir;}else{if(dir\u003C0)this.offsets[last]--;this.nodes.push(next);this.offsets.push(dir>0?1:(next instanceof TextLeaf?next.text.length:next.children.length)\u003C\u003C1);}}}}next(skip=0){if(skip\u003C0){this.nextInner(-skip,-this.dir);skip=this.value.length;}return this.nextInner(skip,this.dir);}}class PartialTextCursor{constructor(text,start,end){this.value=\\\"\\\";this.done=false;this.cursor=new RawTextCursor(text,start>end?-1:1);this.pos=start>end?text.length:0;this.from=Math.min(start,end);this.to=Math.max(start,end);}nextInner(skip,dir){if(dir\u003C0?this.pos\u003C=this.from:this.pos>=this.to){this.value=\\\"\\\";this.done=true;return this;}skip+=Math.max(0,dir\u003C0?this.pos-this.to:this.from-this.pos);let limit=dir\u003C0?this.pos-this.from:this.to-this.pos;if(skip>limit)skip=limit;limit-=skip;let{value}=this.cursor.next(skip);this.pos+=(value.length+skip)*dir;this.value=value.length\u003C=limit?value:dir\u003C0?value.slice(value.length-limit):value.slice(0,limit);this.done=!this.value;return this;}next(skip=0){if(skip\u003C0)skip=Math.max(skip,this.from-this.pos);else if(skip>0)skip=Math.min(skip,this.to-this.pos);return this.nextInner(skip,this.cursor.dir);}get lineBreak(){return this.cursor.lineBreak&&this.value!=\\\"\\\";}}class LineCursor{constructor(inner){this.inner=inner;this.afterBreak=true;this.value=\\\"\\\";this.done=false;}next(skip=0){let{done,lineBreak,value}=this.inner.next(skip);if(done&&this.afterBreak){this.value=\\\"\\\";this.afterBreak=false;}else if(done){this.done=true;this.value=\\\"\\\";}else if(lineBreak){if(this.afterBreak){this.value=\\\"\\\";}else{this.afterBreak=true;this.next();}}else{this.value=value;this.afterBreak=false;}return this;}get lineBreak(){return false;}}if(typeof Symbol!=\\\"undefined\\\"){Text$1.prototype[Symbol.iterator]=function(){return this.iter();};RawTextCursor.prototype[Symbol.iterator]=PartialTextCursor.prototype[Symbol.iterator]=LineCursor.prototype[Symbol.iterator]=function(){return this;};}class Line$1{constructor(from,to,number,text){this.from=from;this.to=to;this.number=number;this.text=text;}get length(){return this.to-this.from;}}function clip(text,from,to){from=Math.max(0,Math.min(text.length,from));return[from,Math.max(from,Math.min(text.length,to))];}let extend=\\\"lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o\\\".split(\\\",\\\").map(s=>s?parseInt(s,36):1);for(let i=1;i\u003Cextend.length;i++)extend[i]+=extend[i-1];function isExtendingChar(code){for(let i=1;i\u003Cextend.length;i+=2)if(extend[i]>code)return extend[i-1]\u003C=code;return false;}function isRegionalIndicator(code){return code>=0x1F1E6&&code\u003C=0x1F1FF;}const ZWJ=0x200d;function findClusterBreak(str,pos,forward=true,includeExtending=true){return(forward?nextClusterBreak:prevClusterBreak)(str,pos,includeExtending);}function nextClusterBreak(str,pos,includeExtending){if(pos==str.length)return pos;if(pos&&surrogateLow(str.charCodeAt(pos))&&surrogateHigh(str.charCodeAt(pos-1)))pos--;let prev=codePointAt(str,pos);pos+=codePointSize(prev);while(pos\u003Cstr.length){let next=codePointAt(str,pos);if(prev==ZWJ||next==ZWJ||includeExtending&&isExtendingChar(next)){pos+=codePointSize(next);prev=next;}else if(isRegionalIndicator(next)){let countBefore=0,i=pos-2;while(i>=0&&isRegionalIndicator(codePointAt(str,i))){countBefore++;i-=2;}if(countBefore%2==0)break;else pos+=2;}else{break;}}return pos;}function prevClusterBreak(str,pos,includeExtending){while(pos>0){let found=nextClusterBreak(str,pos-2,includeExtending);if(found\u003Cpos)return found;pos--;}return 0;}function surrogateLow(ch){return ch>=0xDC00&&ch\u003C0xE000;}function surrogateHigh(ch){return ch>=0xD800&&ch\u003C0xDC00;}function codePointAt(str,pos){let code0=str.charCodeAt(pos);if(!surrogateHigh(code0)||pos+1==str.length)return code0;let code1=str.charCodeAt(pos+1);if(!surrogateLow(code1))return code0;return(code0-0xd800\u003C\u003C10)+(code1-0xdc00)+0x10000;}function fromCodePoint(code){if(code\u003C=0xffff)return String.fromCharCode(code);code-=0x10000;return String.fromCharCode((code>>10)+0xd800,(code&1023)+0xdc00);}function codePointSize(code){return code\u003C0x10000?1:2;}const DefaultSplit=/\\\\r\\\\n?|\\\\n/;var MapMode=function(MapMode){MapMode[MapMode[\\\"Simple\\\"]=0]=\\\"Simple\\\";MapMode[MapMode[\\\"TrackDel\\\"]=1]=\\\"TrackDel\\\";MapMode[MapMode[\\\"TrackBefore\\\"]=2]=\\\"TrackBefore\\\";MapMode[MapMode[\\\"TrackAfter\\\"]=3]=\\\"TrackAfter\\\";return MapMode;}(MapMode||(MapMode={}));class ChangeDesc{constructor(sections){this.sections=sections;}get length(){let result=0;for(let i=0;i\u003Cthis.sections.length;i+=2)result+=this.sections[i];return result;}get newLength(){let result=0;for(let i=0;i\u003Cthis.sections.length;i+=2){let ins=this.sections[i+1];result+=ins\u003C0?this.sections[i]:ins;}return result;}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]\u003C0;}iterGaps(f){for(let i=0,posA=0,posB=0;i\u003Cthis.sections.length;){let len=this.sections[i++],ins=this.sections[i++];if(ins\u003C0){f(posA,posB,len);posB+=len;}else{posB+=ins;}posA+=len;}}iterChangedRanges(f,individual=false){iterChanges(this,f,individual);}get invertedDesc(){let sections=[];for(let i=0;i\u003Cthis.sections.length;){let len=this.sections[i++],ins=this.sections[i++];if(ins\u003C0)sections.push(len,ins);else sections.push(ins,len);}return new ChangeDesc(sections);}composeDesc(other){return this.empty?other:other.empty?this:composeSets(this,other);}mapDesc(other,before=false){return other.empty?this:mapSet(this,other,before);}mapPos(pos,assoc=-1,mode=MapMode.Simple){let posA=0,posB=0;for(let i=0;i\u003Cthis.sections.length;){let len=this.sections[i++],ins=this.sections[i++],endA=posA+len;if(ins\u003C0){if(endA>pos)return posB+(pos-posA);posB+=len;}else{if(mode!=MapMode.Simple&&endA>=pos&&(mode==MapMode.TrackDel&&posA\u003Cpos&&endA>pos||mode==MapMode.TrackBefore&&posA\u003Cpos||mode==MapMode.TrackAfter&&endA>pos))return null;if(endA>pos||endA==pos&&assoc\u003C0&&!len)return pos==posA||assoc\u003C0?posB:posB+ins;posB+=ins;}posA=endA;}if(pos>posA)throw new RangeError(`Position ${pos} is out of range for changeset of length ${posA}`);return posB;}touchesRange(from,to=from){for(let i=0,pos=0;i\u003Cthis.sections.length&&pos\u003C=to;){let len=this.sections[i++],ins=this.sections[i++],end=pos+len;if(ins>=0&&pos\u003C=to&&end>=from)return pos\u003Cfrom&&end>to?\\\"cover\\\":true;pos=end;}return false;}toString(){let result=\\\"\\\";for(let i=0;i\u003Cthis.sections.length;){let len=this.sections[i++],ins=this.sections[i++];result+=(result?\\\" \\\":\\\"\\\")+len+(ins>=0?\\\":\\\"+ins:\\\"\\\");}return result;}toJSON(){return this.sections;}static fromJSON(json){if(!Array.isArray(json)||json.length%2||json.some(a=>typeof a!=\\\"number\\\"))throw new RangeError(\\\"Invalid JSON representation of ChangeDesc\\\");return new ChangeDesc(json);}static create(sections){return new ChangeDesc(sections);}}class ChangeSet extends ChangeDesc{constructor(sections,inserted){super(sections);this.inserted=inserted;}apply(doc){if(this.length!=doc.length)throw new RangeError(\\\"Applying change set to a document with the wrong length\\\");iterChanges(this,(fromA,toA,fromB,_toB,text)=>doc=doc.replace(fromB,fromB+(toA-fromA),text),false);return doc;}mapDesc(other,before=false){return mapSet(this,other,before,true);}invert(doc){let sections=this.sections.slice(),inserted=[];for(let i=0,pos=0;i\u003Csections.length;i+=2){let len=sections[i],ins=sections[i+1];if(ins>=0){sections[i]=ins;sections[i+1]=len;let index=i>>1;while(inserted.length\u003Cindex)inserted.push(Text$1.empty);inserted.push(len?doc.slice(pos,pos+len):Text$1.empty);}pos+=len;}return new ChangeSet(sections,inserted);}compose(other){return this.empty?other:other.empty?this:composeSets(this,other,true);}map(other,before=false){return other.empty?this:mapSet(this,other,before,true);}iterChanges(f,individual=false){iterChanges(this,f,individual);}get desc(){return ChangeDesc.create(this.sections);}filter(ranges){let resultSections=[],resultInserted=[],filteredSections=[];let iter=new SectionIter(this);done:for(let i=0,pos=0;;){let next=i==ranges.length?1e9:ranges[i++];while(pos\u003Cnext||pos==next&&iter.len==0){if(iter.done)break done;let len=Math.min(iter.len,next-pos);addSection(filteredSections,len,-1);let ins=iter.ins==-1?-1:iter.off==0?iter.ins:0;addSection(resultSections,len,ins);if(ins>0)addInsert(resultInserted,resultSections,iter.text);iter.forward(len);pos+=len;}let end=ranges[i++];while(pos\u003Cend){if(iter.done)break done;let len=Math.min(iter.len,end-pos);addSection(resultSections,len,-1);addSection(filteredSections,len,iter.ins==-1?-1:iter.off==0?iter.ins:0);iter.forward(len);pos+=len;}}return{changes:new ChangeSet(resultSections,resultInserted),filtered:ChangeDesc.create(filteredSections)};}toJSON(){let parts=[];for(let i=0;i\u003Cthis.sections.length;i+=2){let len=this.sections[i],ins=this.sections[i+1];if(ins\u003C0)parts.push(len);else if(ins==0)parts.push([len]);else parts.push([len].concat(this.inserted[i>>1].toJSON()));}return parts;}static of(changes,length,lineSep){let sections=[],inserted=[],pos=0;let total=null;function flush(force=false){if(!force&&!sections.length)return;if(pos\u003Clength)addSection(sections,length-pos,-1);let set=new ChangeSet(sections,inserted);total=total?total.compose(set.map(total)):set;sections=[];inserted=[];pos=0;}function process(spec){if(Array.isArray(spec)){for(let _i10=0,_length10=spec.length;_i10\u003C_length10;_i10++){let sub=spec[_i10];process(sub);}}else if(spec instanceof ChangeSet){if(spec.length!=length)throw new RangeError(`Mismatched change set length (got ${spec.length}, expected ${length})`);flush();total=total?total.compose(spec.map(total)):spec;}else{let{from,to=from,insert}=spec;if(from>to||from\u003C0||to>length)throw new RangeError(`Invalid change range ${from} to ${to} (in doc of length ${length})`);let insText=!insert?Text$1.empty:typeof insert==\\\"string\\\"?Text$1.of(insert.split(lineSep||DefaultSplit)):insert;let insLen=insText.length;if(from==to&&insLen==0)return;if(from\u003Cpos)flush();if(from>pos)addSection(sections,from-pos,-1);addSection(sections,to-from,insLen);addInsert(inserted,sections,insText);pos=to;}}process(changes);flush(!total);return total;}static empty(length){return new ChangeSet(length?[length,-1]:[],[]);}static fromJSON(json){if(!Array.isArray(json))throw new RangeError(\\\"Invalid JSON representation of ChangeSet\\\");let sections=[],inserted=[];for(let i=0;i\u003Cjson.length;i++){let part=json[i];if(typeof part==\\\"number\\\"){sections.push(part,-1);}else if(!Array.isArray(part)||typeof part[0]!=\\\"number\\\"||part.some((e,i)=>i&&typeof e!=\\\"string\\\")){throw new RangeError(\\\"Invalid JSON representation of ChangeSet\\\");}else if(part.length==1){sections.push(part[0],0);}else{while(inserted.length\u003Ci)inserted.push(Text$1.empty);inserted[i]=Text$1.of(part.slice(1));sections.push(part[0],inserted[i].length);}}return new ChangeSet(sections,inserted);}static createSet(sections,inserted){return new ChangeSet(sections,inserted);}}function addSection(sections,len,ins,forceJoin=false){if(len==0&&ins\u003C=0)return;let last=sections.length-2;if(last>=0&&ins\u003C=0&&ins==sections[last+1])sections[last]+=len;else if(len==0&§ions[last]==0)sections[last+1]+=ins;else if(forceJoin){sections[last]+=len;sections[last+1]+=ins;}else sections.push(len,ins);}function addInsert(values,sections,value){if(value.length==0)return;let index=sections.length-2>>1;if(index\u003Cvalues.length){values[values.length-1]=values[values.length-1].append(value);}else{while(values.length\u003Cindex)values.push(Text$1.empty);values.push(value);}}function iterChanges(desc,f,individual){let inserted=desc.inserted;for(let posA=0,posB=0,i=0;i\u003Cdesc.sections.length;){let len=desc.sections[i++],ins=desc.sections[i++];if(ins\u003C0){posA+=len;posB+=len;}else{let endA=posA,endB=posB,text=Text$1.empty;for(;;){endA+=len;endB+=ins;if(ins&&inserted)text=text.append(inserted[i-2>>1]);if(individual||i==desc.sections.length||desc.sections[i+1]\u003C0)break;len=desc.sections[i++];ins=desc.sections[i++];}f(posA,endA,posB,endB,text);posA=endA;posB=endB;}}}function mapSet(setA,setB,before,mkSet=false){let sections=[],insert=mkSet?[]:null;let a=new SectionIter(setA),b=new SectionIter(setB);for(let inserted=-1;;){if(a.ins==-1&&b.ins==-1){let len=Math.min(a.len,b.len);addSection(sections,len,-1);a.forward(len);b.forward(len);}else if(b.ins>=0&&(a.ins\u003C0||inserted==a.i||a.off==0&&(b.len\u003Ca.len||b.len==a.len&&!before))){let len=b.len;addSection(sections,b.ins,-1);while(len){let piece=Math.min(a.len,len);if(a.ins>=0&&inserted\u003Ca.i&&a.len\u003C=piece){addSection(sections,0,a.ins);if(insert)addInsert(insert,sections,a.text);inserted=a.i;}a.forward(piece);len-=piece;}b.next();}else if(a.ins>=0){let len=0,left=a.len;while(left){if(b.ins==-1){let piece=Math.min(left,b.len);len+=piece;left-=piece;b.forward(piece);}else if(b.ins==0&&b.len\u003Cleft){left-=b.len;b.next();}else{break;}}addSection(sections,len,inserted\u003Ca.i?a.ins:0);if(insert&&inserted\u003Ca.i)addInsert(insert,sections,a.text);inserted=a.i;a.forward(a.len-left);}else if(a.done&&b.done){return insert?ChangeSet.createSet(sections,insert):ChangeDesc.create(sections);}else{throw new Error(\\\"Mismatched change set lengths\\\");}}}function composeSets(setA,setB,mkSet=false){let sections=[];let insert=mkSet?[]:null;let a=new SectionIter(setA),b=new SectionIter(setB);for(let open=false;;){if(a.done&&b.done){return insert?ChangeSet.createSet(sections,insert):ChangeDesc.create(sections);}else if(a.ins==0){addSection(sections,a.len,0,open);a.next();}else if(b.len==0&&!b.done){addSection(sections,0,b.ins,open);if(insert)addInsert(insert,sections,b.text);b.next();}else if(a.done||b.done){throw new Error(\\\"Mismatched change set lengths\\\");}else{let len=Math.min(a.len2,b.len),sectionLen=sections.length;if(a.ins==-1){let insB=b.ins==-1?-1:b.off?0:b.ins;addSection(sections,len,insB,open);if(insert&&insB)addInsert(insert,sections,b.text);}else if(b.ins==-1){addSection(sections,a.off?0:a.len,len,open);if(insert)addInsert(insert,sections,a.textBit(len));}else{addSection(sections,a.off?0:a.len,b.off?0:b.ins,open);if(insert&&!b.off)addInsert(insert,sections,b.text);}open=(a.ins>len||b.ins>=0&&b.len>len)&&(open||sections.length>sectionLen);a.forward2(len);b.forward(len);}}}class SectionIter{constructor(set){this.set=set;this.i=0;this.next();}next(){let{sections}=this.set;if(this.i\u003Csections.length){this.len=sections[this.i++];this.ins=sections[this.i++];}else{this.len=0;this.ins=-2;}this.off=0;}get done(){return this.ins==-2;}get len2(){return this.ins\u003C0?this.len:this.ins;}get text(){let{inserted}=this.set,index=this.i-2>>1;return index>=inserted.length?Text$1.empty:inserted[index];}textBit(len){let{inserted}=this.set,index=this.i-2>>1;return index>=inserted.length&&!len?Text$1.empty:inserted[index].slice(this.off,len==null?undefined:this.off+len);}forward(len){if(len==this.len)this.next();else{this.len-=len;this.off+=len;}}forward2(len){if(this.ins==-1)this.forward(len);else if(len==this.ins)this.next();else{this.ins-=len;this.off+=len;}}}class SelectionRange{constructor(from,to,flags){this.from=from;this.to=to;this.flags=flags;}get anchor(){return this.flags&32?this.to:this.from;}get head(){return this.flags&32?this.from:this.to;}get empty(){return this.from==this.to;}get assoc(){return this.flags&8?-1:this.flags&16?1:0;}get bidiLevel(){let level=this.flags&7;return level==7?null:level;}get goalColumn(){let value=this.flags>>6;return value==16777215?undefined:value;}map(change,assoc=-1){let from,to;if(this.empty){from=to=change.mapPos(this.from,assoc);}else{from=change.mapPos(this.from,1);to=change.mapPos(this.to,-1);}return from==this.from&&to==this.to?this:new SelectionRange(from,to,this.flags);}extend(from,to=from){if(from\u003C=this.anchor&&to>=this.anchor)return EditorSelection.range(from,to);let head=Math.abs(from-this.anchor)>Math.abs(to-this.anchor)?from:to;return EditorSelection.range(this.anchor,head);}eq(other,includeAssoc=false){return this.anchor==other.anchor&&this.head==other.head&&(!includeAssoc||!this.empty||this.assoc==other.assoc);}toJSON(){return{anchor:this.anchor,head:this.head};}static fromJSON(json){if(!json||typeof json.anchor!=\\\"number\\\"||typeof json.head!=\\\"number\\\")throw new RangeError(\\\"Invalid JSON representation for SelectionRange\\\");return EditorSelection.range(json.anchor,json.head);}static create(from,to,flags){return new SelectionRange(from,to,flags);}}class EditorSelection{constructor(ranges,mainIndex){this.ranges=ranges;this.mainIndex=mainIndex;}map(change,assoc=-1){if(change.empty)return this;return EditorSelection.create(this.ranges.map(r=>r.map(change,assoc)),this.mainIndex);}eq(other,includeAssoc=false){if(this.ranges.length!=other.ranges.length||this.mainIndex!=other.mainIndex)return false;for(let i=0;i\u003Cthis.ranges.length;i++)if(!this.ranges[i].eq(other.ranges[i],includeAssoc))return false;return true;}get main(){return this.ranges[this.mainIndex];}asSingle(){return this.ranges.length==1?this:new EditorSelection([this.main],0);}addRange(range,main=true){return EditorSelection.create([range].concat(this.ranges),main?0:this.mainIndex+1);}replaceRange(range,which=this.mainIndex){let ranges=this.ranges.slice();ranges[which]=range;return EditorSelection.create(ranges,this.mainIndex);}toJSON(){return{ranges:this.ranges.map(r=>r.toJSON()),main:this.mainIndex};}static fromJSON(json){if(!json||!Array.isArray(json.ranges)||typeof json.main!=\\\"number\\\"||json.main>=json.ranges.length)throw new RangeError(\\\"Invalid JSON representation for EditorSelection\\\");return new EditorSelection(json.ranges.map(r=>SelectionRange.fromJSON(r)),json.main);}static single(anchor,head=anchor){return new EditorSelection([EditorSelection.range(anchor,head)],0);}static create(ranges,mainIndex=0){if(ranges.length==0)throw new RangeError(\\\"A selection needs at least one range\\\");for(let pos=0,i=0;i\u003Cranges.length;i++){let range=ranges[i];if(range.empty?range.from\u003C=pos:range.from\u003Cpos)return EditorSelection.normalized(ranges.slice(),mainIndex);pos=range.to;}return new EditorSelection(ranges,mainIndex);}static cursor(pos,assoc=0,bidiLevel,goalColumn){return SelectionRange.create(pos,pos,(assoc==0?0:assoc\u003C0?8:16)|(bidiLevel==null?7:Math.min(6,bidiLevel))|(goalColumn!==null&&goalColumn!==void 0?goalColumn:16777215)\u003C\u003C6);}static range(anchor,head,goalColumn,bidiLevel){let flags=(goalColumn!==null&&goalColumn!==void 0?goalColumn:16777215)\u003C\u003C6|(bidiLevel==null?7:Math.min(6,bidiLevel));return head\u003Canchor?SelectionRange.create(head,anchor,32|16|flags):SelectionRange.create(anchor,head,(head>anchor?8:0)|flags);}static normalized(ranges,mainIndex=0){let main=ranges[mainIndex];ranges.sort((a,b)=>a.from-b.from);mainIndex=ranges.indexOf(main);for(let i=1;i\u003Cranges.length;i++){let range=ranges[i],prev=ranges[i-1];if(range.empty?range.from\u003C=prev.to:range.from\u003Cprev.to){let from=prev.from,to=Math.max(range.to,prev.to);if(i\u003C=mainIndex)mainIndex--;ranges.splice(--i,2,range.anchor>range.head?EditorSelection.range(to,from):EditorSelection.range(from,to));}}return new EditorSelection(ranges,mainIndex);}}function checkSelection(selection,docLength){for(let _i11=0,_selection$ranges=selection.ranges,_length11=_selection$ranges.length;_i11\u003C_length11;_i11++){let range=_selection$ranges[_i11];if(range.to>docLength)throw new RangeError(\\\"Selection points outside of document\\\");}}let nextID=0;class Facet{constructor(combine,compareInput,compare,isStatic,enables){this.combine=combine;this.compareInput=compareInput;this.compare=compare;this.isStatic=isStatic;this.id=nextID++;this.default=combine([]);this.extensions=typeof enables==\\\"function\\\"?enables(this):enables;}get reader(){return this;}static define(config={}){return new Facet(config.combine||(a=>a),config.compareInput||((a,b)=>a===b),config.compare||(!config.combine?sameArray$1:(a,b)=>a===b),!!config.static,config.enables);}of(value){return new FacetProvider([],this,0,value);}compute(deps,get){if(this.isStatic)throw new Error(\\\"Can't compute a static facet\\\");return new FacetProvider(deps,this,1,get);}computeN(deps,get){if(this.isStatic)throw new Error(\\\"Can't compute a static facet\\\");return new FacetProvider(deps,this,2,get);}from(field,get){if(!get)get=x=>x;return this.compute([field],state=>get(state.field(field)));}}function sameArray$1(a,b){return a==b||a.length==b.length&&a.every((e,i)=>e===b[i]);}class FacetProvider{constructor(dependencies,facet,type,value){this.dependencies=dependencies;this.facet=facet;this.type=type;this.value=value;this.id=nextID++;}dynamicSlot(addresses){var _a;let getter=this.value;let compare=this.facet.compareInput;let id=this.id,idx=addresses[id]>>1,multi=this.type==2;let depDoc=false,depSel=false,depAddrs=[];for(let _i12=0,_this$dependencies=this.dependencies,_length12=_this$dependencies.length;_i12\u003C_length12;_i12++){let dep=_this$dependencies[_i12];if(dep==\\\"doc\\\")depDoc=true;else if(dep==\\\"selection\\\")depSel=true;else if((((_a=addresses[dep.id])!==null&&_a!==void 0?_a:1)&1)==0)depAddrs.push(addresses[dep.id]);}return{create(state){state.values[idx]=getter(state);return 1;},update(state,tr){if(depDoc&&tr.docChanged||depSel&&(tr.docChanged||tr.selection)||ensureAll(state,depAddrs)){let newVal=getter(state);if(multi?!compareArray(newVal,state.values[idx],compare):!compare(newVal,state.values[idx])){state.values[idx]=newVal;return 1;}}return 0;},reconfigure:(state,oldState)=>{let newVal,oldAddr=oldState.config.address[id];if(oldAddr!=null){let oldVal=getAddr(oldState,oldAddr);if(this.dependencies.every(dep=>{return dep instanceof Facet?oldState.facet(dep)===state.facet(dep):dep instanceof StateField?oldState.field(dep,false)==state.field(dep,false):true;})||(multi?compareArray(newVal=getter(state),oldVal,compare):compare(newVal=getter(state),oldVal))){state.values[idx]=oldVal;return 0;}}else{newVal=getter(state);}state.values[idx]=newVal;return 1;}};}}function compareArray(a,b,compare){if(a.length!=b.length)return false;for(let i=0;i\u003Ca.length;i++)if(!compare(a[i],b[i]))return false;return true;}function ensureAll(state,addrs){let changed=false;for(let _i13=0,_length13=addrs.length;_i13\u003C_length13;_i13++){let addr=addrs[_i13];if(ensureAddr(state,addr)&1)changed=true;}return changed;}function dynamicFacetSlot(addresses,facet,providers){let providerAddrs=providers.map(p=>addresses[p.id]);let providerTypes=providers.map(p=>p.type);let dynamic=providerAddrs.filter(p=>!(p&1));let idx=addresses[facet.id]>>1;function get(state){let values=[];for(let i=0;i\u003CproviderAddrs.length;i++){let value=getAddr(state,providerAddrs[i]);if(providerTypes[i]==2)for(let _i14=0,_length14=value.length;_i14\u003C_length14;_i14++){let val=value[_i14];values.push(val);}else values.push(value);}return facet.combine(values);}return{create(state){for(let _i15=0,_length15=providerAddrs.length;_i15\u003C_length15;_i15++){let addr=providerAddrs[_i15];ensureAddr(state,addr);}state.values[idx]=get(state);return 1;},update(state,tr){if(!ensureAll(state,dynamic))return 0;let value=get(state);if(facet.compare(value,state.values[idx]))return 0;state.values[idx]=value;return 1;},reconfigure(state,oldState){let depChanged=ensureAll(state,providerAddrs);let oldProviders=oldState.config.facets[facet.id],oldValue=oldState.facet(facet);if(oldProviders&&!depChanged&&sameArray$1(providers,oldProviders)){state.values[idx]=oldValue;return 0;}let value=get(state);if(facet.compare(value,oldValue)){state.values[idx]=oldValue;return 0;}state.values[idx]=value;return 1;}};}const initField=Facet.define({static:true});class StateField{constructor(id,createF,updateF,compareF,spec){this.id=id;this.createF=createF;this.updateF=updateF;this.compareF=compareF;this.spec=spec;this.provides=undefined;}static define(config){let field=new StateField(nextID++,config.create,config.update,config.compare||((a,b)=>a===b),config);if(config.provide)field.provides=config.provide(field);return field;}create(state){let init=state.facet(initField).find(i=>i.field==this);return((init===null||init===void 0?void 0:init.create)||this.createF)(state);}slot(addresses){let idx=addresses[this.id]>>1;return{create:state=>{state.values[idx]=this.create(state);return 1;},update:(state,tr)=>{let oldVal=state.values[idx];let value=this.updateF(oldVal,tr);if(this.compareF(oldVal,value))return 0;state.values[idx]=value;return 1;},reconfigure:(state,oldState)=>{if(oldState.config.address[this.id]!=null){state.values[idx]=oldState.field(this);return 0;}state.values[idx]=this.create(state);return 1;}};}init(create){return[this,initField.of({field:this,create})];}get extension(){return this;}}const Prec_={lowest:4,low:3,default:2,high:1,highest:0};function prec(value){return ext=>new PrecExtension(ext,value);}const Prec={highest:prec(Prec_.highest),high:prec(Prec_.high),default:prec(Prec_.default),low:prec(Prec_.low),lowest:prec(Prec_.lowest)};class PrecExtension{constructor(inner,prec){this.inner=inner;this.prec=prec;}}class Compartment{of(ext){return new CompartmentInstance(this,ext);}reconfigure(content){return Compartment.reconfigure.of({compartment:this,extension:content});}get(state){return state.config.compartments.get(this);}}class CompartmentInstance{constructor(compartment,inner){this.compartment=compartment;this.inner=inner;}}class Configuration{constructor(base,compartments,dynamicSlots,address,staticValues,facets){this.base=base;this.compartments=compartments;this.dynamicSlots=dynamicSlots;this.address=address;this.staticValues=staticValues;this.facets=facets;this.statusTemplate=[];while(this.statusTemplate.length\u003CdynamicSlots.length)this.statusTemplate.push(0);}staticFacet(facet){let addr=this.address[facet.id];return addr==null?facet.default:this.staticValues[addr>>1];}static resolve(base,compartments,oldState){let fields=[];let facets=Object.create(null);let newCompartments=new Map();for(let _i16=0,_flatten=flatten(base,compartments,newCompartments),_length16=_flatten.length;_i16\u003C_length16;_i16++){let ext=_flatten[_i16];if(ext instanceof StateField)fields.push(ext);else(facets[ext.facet.id]||(facets[ext.facet.id]=[])).push(ext);}let address=Object.create(null);let staticValues=[];let dynamicSlots=[];for(let _i17=0,_length17=fields.length;_i17\u003C_length17;_i17++){let field=fields[_i17];address[field.id]=dynamicSlots.length\u003C\u003C1;dynamicSlots.push(a=>field.slot(a));}let oldFacets=oldState===null||oldState===void 0?void 0:oldState.config.facets;for(let id in facets){let providers=facets[id],facet=providers[0].facet;let oldProviders=oldFacets&&oldFacets[id]||[];if(providers.every(p=>p.type==0)){address[facet.id]=staticValues.length\u003C\u003C1|1;if(sameArray$1(oldProviders,providers)){staticValues.push(oldState.facet(facet));}else{let value=facet.combine(providers.map(p=>p.value));staticValues.push(oldState&&facet.compare(value,oldState.facet(facet))?oldState.facet(facet):value);}}else{for(let _i18=0,_length18=providers.length;_i18\u003C_length18;_i18++){let p=providers[_i18];if(p.type==0){address[p.id]=staticValues.length\u003C\u003C1|1;staticValues.push(p.value);}else{address[p.id]=dynamicSlots.length\u003C\u003C1;dynamicSlots.push(a=>p.dynamicSlot(a));}}address[facet.id]=dynamicSlots.length\u003C\u003C1;dynamicSlots.push(a=>dynamicFacetSlot(a,facet,providers));}}let dynamic=dynamicSlots.map(f=>f(address));return new Configuration(base,newCompartments,dynamic,address,staticValues,facets);}}function flatten(extension,compartments,newCompartments){let result=[[],[],[],[],[]];let seen=new Map();function inner(ext,prec){let known=seen.get(ext);if(known!=null){if(known\u003C=prec)return;let found=result[known].indexOf(ext);if(found>-1)result[known].splice(found,1);if(ext instanceof CompartmentInstance)newCompartments.delete(ext.compartment);}seen.set(ext,prec);if(Array.isArray(ext)){for(let _i19=0,_length19=ext.length;_i19\u003C_length19;_i19++){let e=ext[_i19];inner(e,prec);}}else if(ext instanceof CompartmentInstance){if(newCompartments.has(ext.compartment))throw new RangeError(`Duplicate use of compartment in extensions`);let content=compartments.get(ext.compartment)||ext.inner;newCompartments.set(ext.compartment,content);inner(content,prec);}else if(ext instanceof PrecExtension){inner(ext.inner,ext.prec);}else if(ext instanceof StateField){result[prec].push(ext);if(ext.provides)inner(ext.provides,prec);}else if(ext instanceof FacetProvider){result[prec].push(ext);if(ext.facet.extensions)inner(ext.facet.extensions,Prec_.default);}else{let content=ext.extension;if(!content)throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);inner(content,prec);}}inner(extension,Prec_.default);return result.reduce((a,b)=>a.concat(b));}function ensureAddr(state,addr){if(addr&1)return 2;let idx=addr>>1;let status=state.status[idx];if(status==4)throw new Error(\\\"Cyclic dependency between fields and/or facets\\\");if(status&2)return status;state.status[idx]=4;let changed=state.computeSlot(state,state.config.dynamicSlots[idx]);return state.status[idx]=2|changed;}function getAddr(state,addr){return addr&1?state.config.staticValues[addr>>1]:state.values[addr>>1];}const languageData=Facet.define();const allowMultipleSelections=Facet.define({combine:values=>values.some(v=>v),static:true});const lineSeparator=Facet.define({combine:values=>values.length?values[0]:undefined,static:true});const changeFilter=Facet.define();const transactionFilter=Facet.define();const transactionExtender=Facet.define();const readOnly=Facet.define({combine:values=>values.length?values[0]:false});class Annotation{constructor(type,value){this.type=type;this.value=value;}static define(){return new AnnotationType();}}class AnnotationType{of(value){return new Annotation(this,value);}}class StateEffectType{constructor(map){this.map=map;}of(value){return new StateEffect(this,value);}}class StateEffect{constructor(type,value){this.type=type;this.value=value;}map(mapping){let mapped=this.type.map(this.value,mapping);return mapped===undefined?undefined:mapped==this.value?this:new StateEffect(this.type,mapped);}is(type){return this.type==type;}static define(spec={}){return new StateEffectType(spec.map||(v=>v));}static mapEffects(effects,mapping){if(!effects.length)return effects;let result=[];for(let _i20=0,_length20=effects.length;_i20\u003C_length20;_i20++){let effect=effects[_i20];let mapped=effect.map(mapping);if(mapped)result.push(mapped);}return result;}}StateEffect.reconfigure=StateEffect.define();StateEffect.appendConfig=StateEffect.define();class Transaction{constructor(startState,changes,selection,effects,annotations,scrollIntoView){this.startState=startState;this.changes=changes;this.selection=selection;this.effects=effects;this.annotations=annotations;this.scrollIntoView=scrollIntoView;this._doc=null;this._state=null;if(selection)checkSelection(selection,changes.newLength);if(!annotations.some(a=>a.type==Transaction.time))this.annotations=annotations.concat(Transaction.time.of(Date.now()));}static create(startState,changes,selection,effects,annotations,scrollIntoView){return new Transaction(startState,changes,selection,effects,annotations,scrollIntoView);}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc));}get newSelection(){return this.selection||this.startState.selection.map(this.changes);}get state(){if(!this._state)this.startState.applyTransaction(this);return this._state;}annotation(type){for(let _i21=0,_this$annotations=this.annotations,_length21=_this$annotations.length;_i21\u003C_length21;_i21++){let ann=_this$annotations[_i21];if(ann.type==type)return ann.value;}return undefined;}get docChanged(){return!this.changes.empty;}get reconfigured(){return this.startState.config!=this.state.config;}isUserEvent(event){let e=this.annotation(Transaction.userEvent);return!!(e&&(e==event||e.length>event.length&&e.slice(0,event.length)==event&&e[event.length]==\\\".\\\"));}}Transaction.time=Annotation.define();Transaction.userEvent=Annotation.define();Transaction.addToHistory=Annotation.define();Transaction.remote=Annotation.define();function joinRanges(a,b){let result=[];for(let iA=0,iB=0;;){let from,to;if(iA\u003Ca.length&&(iB==b.length||b[iB]>=a[iA])){from=a[iA++];to=a[iA++];}else if(iB\u003Cb.length){from=b[iB++];to=b[iB++];}else return result;if(!result.length||result[result.length-1]\u003Cfrom)result.push(from,to);else if(result[result.length-1]\u003Cto)result[result.length-1]=to;}}function mergeTransaction(a,b,sequential){var _a;let mapForA,mapForB,changes;if(sequential){mapForA=b.changes;mapForB=ChangeSet.empty(b.changes.length);changes=a.changes.compose(b.changes);}else{mapForA=b.changes.map(a.changes);mapForB=a.changes.mapDesc(b.changes,true);changes=a.changes.compose(mapForA);}return{changes,selection:b.selection?b.selection.map(mapForB):(_a=a.selection)===null||_a===void 0?void 0:_a.map(mapForA),effects:StateEffect.mapEffects(a.effects,mapForA).concat(StateEffect.mapEffects(b.effects,mapForB)),annotations:a.annotations.length?a.annotations.concat(b.annotations):b.annotations,scrollIntoView:a.scrollIntoView||b.scrollIntoView};}function resolveTransactionInner(state,spec,docSize){let sel=spec.selection,annotations=asArray$1(spec.annotations);if(spec.userEvent)annotations=annotations.concat(Transaction.userEvent.of(spec.userEvent));return{changes:spec.changes instanceof ChangeSet?spec.changes:ChangeSet.of(spec.changes||[],docSize,state.facet(lineSeparator)),selection:sel&&(sel instanceof EditorSelection?sel:EditorSelection.single(sel.anchor,sel.head)),effects:asArray$1(spec.effects),annotations,scrollIntoView:!!spec.scrollIntoView};}function resolveTransaction(state,specs,filter){let s=resolveTransactionInner(state,specs.length?specs[0]:{},state.doc.length);if(specs.length&&specs[0].filter===false)filter=false;for(let i=1;i\u003Cspecs.length;i++){if(specs[i].filter===false)filter=false;let seq=!!specs[i].sequential;s=mergeTransaction(s,resolveTransactionInner(state,specs[i],seq?s.changes.newLength:state.doc.length),seq);}let tr=Transaction.create(state,s.changes,s.selection,s.effects,s.annotations,s.scrollIntoView);return extendTransaction(filter?filterTransaction(tr):tr);}function filterTransaction(tr){let state=tr.startState;let result=true;for(let _i22=0,_state$facet=state.facet(changeFilter),_length22=_state$facet.length;_i22\u003C_length22;_i22++){let filter=_state$facet[_i22];let value=filter(tr);if(value===false){result=false;break;}if(Array.isArray(value))result=result===true?value:joinRanges(result,value);}if(result!==true){let changes,back;if(result===false){back=tr.changes.invertedDesc;changes=ChangeSet.empty(state.doc.length);}else{let filtered=tr.changes.filter(result);changes=filtered.changes;back=filtered.filtered.mapDesc(filtered.changes).invertedDesc;}tr=Transaction.create(state,changes,tr.selection&&tr.selection.map(back),StateEffect.mapEffects(tr.effects,back),tr.annotations,tr.scrollIntoView);}let filters=state.facet(transactionFilter);for(let i=filters.length-1;i>=0;i--){let filtered=filters[i](tr);if(filtered instanceof Transaction)tr=filtered;else if(Array.isArray(filtered)&&filtered.length==1&&filtered[0]instanceof Transaction)tr=filtered[0];else tr=resolveTransaction(state,asArray$1(filtered),false);}return tr;}function extendTransaction(tr){let state=tr.startState,extenders=state.facet(transactionExtender),spec=tr;for(let i=extenders.length-1;i>=0;i--){let extension=extenders[i](tr);if(extension&&Object.keys(extension).length)spec=mergeTransaction(spec,resolveTransactionInner(state,extension,tr.changes.newLength),true);}return spec==tr?tr:Transaction.create(state,tr.changes,tr.selection,spec.effects,spec.annotations,spec.scrollIntoView);}const none$3=[];function asArray$1(value){return value==null?none$3:Array.isArray(value)?value:[value];}var CharCategory=function(CharCategory){CharCategory[CharCategory[\\\"Word\\\"]=0]=\\\"Word\\\";CharCategory[CharCategory[\\\"Space\\\"]=1]=\\\"Space\\\";CharCategory[CharCategory[\\\"Other\\\"]=2]=\\\"Other\\\";return CharCategory;}(CharCategory||(CharCategory={}));const nonASCIISingleCaseWordChar=/[\\\\u00df\\\\u0587\\\\u0590-\\\\u05f4\\\\u0600-\\\\u06ff\\\\u3040-\\\\u309f\\\\u30a0-\\\\u30ff\\\\u3400-\\\\u4db5\\\\u4e00-\\\\u9fcc\\\\uac00-\\\\ud7af]/;let wordChar$2;try{wordChar$2=new RegExp(\\\"[\\\\\\\\p{Alphabetic}\\\\\\\\p{Number}_]\\\",\\\"u\\\");}catch(_){}function hasWordChar(str){if(wordChar$2)return wordChar$2.test(str);for(let i=0;i\u003Cstr.length;i++){let ch=str[i];if(/\\\\w/.test(ch)||ch>\\\"\\\\x80\\\"&&(ch.toUpperCase()!=ch.toLowerCase()||nonASCIISingleCaseWordChar.test(ch)))return true;}return false;}function makeCategorizer(wordChars){return char=>{if(!/\\\\S/.test(char))return CharCategory.Space;if(hasWordChar(char))return CharCategory.Word;for(let i=0;i\u003CwordChars.length;i++)if(char.indexOf(wordChars[i])>-1)return CharCategory.Word;return CharCategory.Other;};}class EditorState{constructor(config,doc,selection,values,computeSlot,tr){this.config=config;this.doc=doc;this.selection=selection;this.values=values;this.status=config.statusTemplate.slice();this.computeSlot=computeSlot;if(tr)tr._state=this;for(let i=0;i\u003Cthis.config.dynamicSlots.length;i++)ensureAddr(this,i\u003C\u003C1);this.computeSlot=null;}field(field,require=true){let addr=this.config.address[field.id];if(addr==null){if(require)throw new RangeError(\\\"Field is not present in this state\\\");return undefined;}ensureAddr(this,addr);return getAddr(this,addr);}update(...specs){return resolveTransaction(this,specs,true);}applyTransaction(tr){let conf=this.config,{base,compartments}=conf;for(let _i23=0,_tr$effects=tr.effects,_length23=_tr$effects.length;_i23\u003C_length23;_i23++){let effect=_tr$effects[_i23];if(effect.is(Compartment.reconfigure)){if(conf){compartments=new Map();conf.compartments.forEach((val,key)=>compartments.set(key,val));conf=null;}compartments.set(effect.value.compartment,effect.value.extension);}else if(effect.is(StateEffect.reconfigure)){conf=null;base=effect.value;}else if(effect.is(StateEffect.appendConfig)){conf=null;base=asArray$1(base).concat(effect.value);}}let startValues;if(!conf){conf=Configuration.resolve(base,compartments,this);let intermediateState=new EditorState(conf,this.doc,this.selection,conf.dynamicSlots.map(()=>null),(state,slot)=>slot.reconfigure(state,this),null);startValues=intermediateState.values;}else{startValues=tr.startState.values.slice();}let selection=tr.startState.facet(allowMultipleSelections)?tr.newSelection:tr.newSelection.asSingle();new EditorState(conf,tr.newDoc,selection,startValues,(state,slot)=>slot.update(state,tr),tr);}replaceSelection(text){if(typeof text==\\\"string\\\")text=this.toText(text);return this.changeByRange(range=>({changes:{from:range.from,to:range.to,insert:text},range:EditorSelection.cursor(range.from+text.length)}));}changeByRange(f){let sel=this.selection;let result1=f(sel.ranges[0]);let changes=this.changes(result1.changes),ranges=[result1.range];let effects=asArray$1(result1.effects);for(let i=1;i\u003Csel.ranges.length;i++){let result=f(sel.ranges[i]);let newChanges=this.changes(result.changes),newMapped=newChanges.map(changes);for(let j=0;j\u003Ci;j++)ranges[j]=ranges[j].map(newMapped);let mapBy=changes.mapDesc(newChanges,true);ranges.push(result.range.map(mapBy));changes=changes.compose(newMapped);effects=StateEffect.mapEffects(effects,newMapped).concat(StateEffect.mapEffects(asArray$1(result.effects),mapBy));}return{changes,selection:EditorSelection.create(ranges,sel.mainIndex),effects};}changes(spec=[]){if(spec instanceof ChangeSet)return spec;return ChangeSet.of(spec,this.doc.length,this.facet(EditorState.lineSeparator));}toText(string){return Text$1.of(string.split(this.facet(EditorState.lineSeparator)||DefaultSplit));}sliceDoc(from=0,to=this.doc.length){return this.doc.sliceString(from,to,this.lineBreak);}facet(facet){let addr=this.config.address[facet.id];if(addr==null)return facet.default;ensureAddr(this,addr);return getAddr(this,addr);}toJSON(fields){let result={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(fields)for(let prop in fields){let value=fields[prop];if(value instanceof StateField&&this.config.address[value.id]!=null)result[prop]=value.spec.toJSON(this.field(fields[prop]),this);}return result;}static fromJSON(json,config={},fields){if(!json||typeof json.doc!=\\\"string\\\")throw new RangeError(\\\"Invalid JSON representation for EditorState\\\");let fieldInit=[];if(fields)for(let prop in fields){if(Object.prototype.hasOwnProperty.call(json,prop)){let field=fields[prop],value=json[prop];fieldInit.push(field.init(state=>field.spec.fromJSON(value,state)));}}return EditorState.create({doc:json.doc,selection:EditorSelection.fromJSON(json.selection),extensions:config.extensions?fieldInit.concat([config.extensions]):fieldInit});}static create(config={}){let configuration=Configuration.resolve(config.extensions||[],new Map());let doc=config.doc instanceof Text$1?config.doc:Text$1.of((config.doc||\\\"\\\").split(configuration.staticFacet(EditorState.lineSeparator)||DefaultSplit));let selection=!config.selection?EditorSelection.single(0):config.selection instanceof EditorSelection?config.selection:EditorSelection.single(config.selection.anchor,config.selection.head);checkSelection(selection,doc.length);if(!configuration.staticFacet(allowMultipleSelections))selection=selection.asSingle();return new EditorState(configuration,doc,selection,configuration.dynamicSlots.map(()=>null),(state,slot)=>slot.create(state),null);}get tabSize(){return this.facet(EditorState.tabSize);}get lineBreak(){return this.facet(EditorState.lineSeparator)||\\\"\\\\n\\\";}get readOnly(){return this.facet(readOnly);}phrase(phrase,...insert){for(let _i24=0,_this$facet=this.facet(EditorState.phrases),_length24=_this$facet.length;_i24\u003C_length24;_i24++){let map=_this$facet[_i24];if(Object.prototype.hasOwnProperty.call(map,phrase)){phrase=map[phrase];break;}}if(insert.length)phrase=phrase.replace(/\\\\$(\\\\$|\\\\d*)/g,(m,i)=>{if(i==\\\"$\\\")return\\\"$\\\";let n=+(i||1);return!n||n>insert.length?m:insert[n-1];});return phrase;}languageDataAt(name,pos,side=-1){let values=[];for(let _i25=0,_this$facet2=this.facet(languageData),_length25=_this$facet2.length;_i25\u003C_length25;_i25++){let provider=_this$facet2[_i25];for(let _i26=0,_provider=provider(this,pos,side),_length26=_provider.length;_i26\u003C_length26;_i26++){let result=_provider[_i26];if(Object.prototype.hasOwnProperty.call(result,name))values.push(result[name]);}}return values;}charCategorizer(at){return makeCategorizer(this.languageDataAt(\\\"wordChars\\\",at).join(\\\"\\\"));}wordAt(pos){let{text,from,length}=this.doc.lineAt(pos);let cat=this.charCategorizer(pos);let start=pos-from,end=pos-from;while(start>0){let prev=findClusterBreak(text,start,false);if(cat(text.slice(prev,start))!=CharCategory.Word)break;start=prev;}while(end\u003Clength){let next=findClusterBreak(text,end);if(cat(text.slice(end,next))!=CharCategory.Word)break;end=next;}return start==end?null:EditorSelection.range(start+from,end+from);}}EditorState.allowMultipleSelections=allowMultipleSelections;EditorState.tabSize=Facet.define({combine:values=>values.length?values[0]:4});EditorState.lineSeparator=lineSeparator;EditorState.readOnly=readOnly;EditorState.phrases=Facet.define({compare(a,b){let kA=Object.keys(a),kB=Object.keys(b);return kA.length==kB.length&&kA.every(k=>a[k]==b[k]);}});EditorState.languageData=languageData;EditorState.changeFilter=changeFilter;EditorState.transactionFilter=transactionFilter;EditorState.transactionExtender=transactionExtender;Compartment.reconfigure=StateEffect.define();function combineConfig(configs,defaults,combine={}){let result={};for(let _i27=0,_length27=configs.length;_i27\u003C_length27;_i27++){let config=configs[_i27];for(let _i28=0,_Object$keys=Object.keys(config),_length28=_Object$keys.length;_i28\u003C_length28;_i28++){let key=_Object$keys[_i28];let value=config[key],current=result[key];if(current===undefined)result[key]=value;else if(current===value||value===undefined);else if(Object.hasOwnProperty.call(combine,key))result[key]=combine[key](current,value);else throw new Error(\\\"Config merge conflict for field \\\"+key);}}for(let key in defaults)if(result[key]===undefined)result[key]=defaults[key];return result;}class RangeValue{eq(other){return this==other;}range(from,to=from){return Range$1.create(from,to,this);}}RangeValue.prototype.startSide=RangeValue.prototype.endSide=0;RangeValue.prototype.point=false;RangeValue.prototype.mapMode=MapMode.TrackDel;class Range$1{constructor(from,to,value){this.from=from;this.to=to;this.value=value;}static create(from,to,value){return new Range$1(from,to,value);}}function cmpRange(a,b){return a.from-b.from||a.value.startSide-b.value.startSide;}class Chunk$1{constructor(from,to,value,maxPoint){this.from=from;this.to=to;this.value=value;this.maxPoint=maxPoint;}get length(){return this.to[this.to.length-1];}findIndex(pos,side,end,startAt=0){let arr=end?this.to:this.from;for(let lo=startAt,hi=arr.length;;){if(lo==hi)return lo;let mid=lo+hi>>1;let diff=arr[mid]-pos||(end?this.value[mid].endSide:this.value[mid].startSide)-side;if(mid==lo)return diff>=0?lo:hi;if(diff>=0)hi=mid;else lo=mid+1;}}between(offset,from,to,f){for(let i=this.findIndex(from,-1000000000,true),e=this.findIndex(to,1000000000,false,i);i\u003Ce;i++)if(f(this.from[i]+offset,this.to[i]+offset,this.value[i])===false)return false;}map(offset,changes){let value=[],from=[],to=[],newPos=-1,maxPoint=-1;for(let i=0;i\u003Cthis.value.length;i++){let val=this.value[i],curFrom=this.from[i]+offset,curTo=this.to[i]+offset,newFrom,newTo;if(curFrom==curTo){let mapped=changes.mapPos(curFrom,val.startSide,val.mapMode);if(mapped==null)continue;newFrom=newTo=mapped;if(val.startSide!=val.endSide){newTo=changes.mapPos(curFrom,val.endSide);if(newTo\u003CnewFrom)continue;}}else{newFrom=changes.mapPos(curFrom,val.startSide);newTo=changes.mapPos(curTo,val.endSide);if(newFrom>newTo||newFrom==newTo&&val.startSide>0&&val.endSide\u003C=0)continue;}if((newTo-newFrom||val.endSide-val.startSide)\u003C0)continue;if(newPos\u003C0)newPos=newFrom;if(val.point)maxPoint=Math.max(maxPoint,newTo-newFrom);value.push(val);from.push(newFrom-newPos);to.push(newTo-newPos);}return{mapped:value.length?new Chunk$1(from,to,value,maxPoint):null,pos:newPos};}}class RangeSet{constructor(chunkPos,chunk,nextLayer,maxPoint){this.chunkPos=chunkPos;this.chunk=chunk;this.nextLayer=nextLayer;this.maxPoint=maxPoint;}static create(chunkPos,chunk,nextLayer,maxPoint){return new RangeSet(chunkPos,chunk,nextLayer,maxPoint);}get length(){let last=this.chunk.length-1;return last\u003C0?0:Math.max(this.chunkEnd(last),this.nextLayer.length);}get size(){if(this.isEmpty)return 0;let size=this.nextLayer.size;for(let _i29=0,_this$chunk=this.chunk,_length29=_this$chunk.length;_i29\u003C_length29;_i29++){let chunk=_this$chunk[_i29];size+=chunk.value.length;}return size;}chunkEnd(index){return this.chunkPos[index]+this.chunk[index].length;}update(updateSpec){let{add=[],sort=false,filterFrom=0,filterTo=this.length}=updateSpec;let filter=updateSpec.filter;if(add.length==0&&!filter)return this;if(sort)add=add.slice().sort(cmpRange);if(this.isEmpty)return add.length?RangeSet.of(add):this;let cur=new LayerCursor(this,null,-1).goto(0),i=0,spill=[];let builder=new RangeSetBuilder();while(cur.value||i\u003Cadd.length){if(i\u003Cadd.length&&(cur.from-add[i].from||cur.startSide-add[i].value.startSide)>=0){let range=add[i++];if(!builder.addInner(range.from,range.to,range.value))spill.push(range);}else if(cur.rangeIndex==1&&cur.chunkIndex\u003Cthis.chunk.length&&(i==add.length||this.chunkEnd(cur.chunkIndex)\u003Cadd[i].from)&&(!filter||filterFrom>this.chunkEnd(cur.chunkIndex)||filterTo\u003Cthis.chunkPos[cur.chunkIndex])&&builder.addChunk(this.chunkPos[cur.chunkIndex],this.chunk[cur.chunkIndex])){cur.nextChunk();}else{if(!filter||filterFrom>cur.to||filterTo\u003Ccur.from||filter(cur.from,cur.to,cur.value)){if(!builder.addInner(cur.from,cur.to,cur.value))spill.push(Range$1.create(cur.from,cur.to,cur.value));}cur.next();}}return builder.finishInner(this.nextLayer.isEmpty&&!spill.length?RangeSet.empty:this.nextLayer.update({add:spill,filter,filterFrom,filterTo}));}map(changes){if(changes.empty||this.isEmpty)return this;let chunks=[],chunkPos=[],maxPoint=-1;for(let i=0;i\u003Cthis.chunk.length;i++){let start=this.chunkPos[i],chunk=this.chunk[i];let touch=changes.touchesRange(start,start+chunk.length);if(touch===false){maxPoint=Math.max(maxPoint,chunk.maxPoint);chunks.push(chunk);chunkPos.push(changes.mapPos(start));}else if(touch===true){let{mapped,pos}=chunk.map(start,changes);if(mapped){maxPoint=Math.max(maxPoint,mapped.maxPoint);chunks.push(mapped);chunkPos.push(pos);}}}let next=this.nextLayer.map(changes);return chunks.length==0?next:new RangeSet(chunkPos,chunks,next||RangeSet.empty,maxPoint);}between(from,to,f){if(this.isEmpty)return;for(let i=0;i\u003Cthis.chunk.length;i++){let start=this.chunkPos[i],chunk=this.chunk[i];if(to>=start&&from\u003C=start+chunk.length&&chunk.between(start,from-start,to-start,f)===false)return;}this.nextLayer.between(from,to,f);}iter(from=0){return HeapCursor.from([this]).goto(from);}get isEmpty(){return this.nextLayer==this;}static iter(sets,from=0){return HeapCursor.from(sets).goto(from);}static compare(oldSets,newSets,textDiff,comparator,minPointSize=-1){let a=oldSets.filter(set=>set.maxPoint>0||!set.isEmpty&&set.maxPoint>=minPointSize);let b=newSets.filter(set=>set.maxPoint>0||!set.isEmpty&&set.maxPoint>=minPointSize);let sharedChunks=findSharedChunks(a,b,textDiff);let sideA=new SpanCursor(a,sharedChunks,minPointSize);let sideB=new SpanCursor(b,sharedChunks,minPointSize);textDiff.iterGaps((fromA,fromB,length)=>compare(sideA,fromA,sideB,fromB,length,comparator));if(textDiff.empty&&textDiff.length==0)compare(sideA,0,sideB,0,0,comparator);}static eq(oldSets,newSets,from=0,to){if(to==null)to=1000000000-1;let a=oldSets.filter(set=>!set.isEmpty&&newSets.indexOf(set)\u003C0);let b=newSets.filter(set=>!set.isEmpty&&oldSets.indexOf(set)\u003C0);if(a.length!=b.length)return false;if(!a.length)return true;let sharedChunks=findSharedChunks(a,b);let sideA=new SpanCursor(a,sharedChunks,0).goto(from),sideB=new SpanCursor(b,sharedChunks,0).goto(from);for(;;){if(sideA.to!=sideB.to||!sameValues(sideA.active,sideB.active)||sideA.point&&(!sideB.point||!sideA.point.eq(sideB.point)))return false;if(sideA.to>to)return true;sideA.next();sideB.next();}}static spans(sets,from,to,iterator,minPointSize=-1){let cursor=new SpanCursor(sets,null,minPointSize).goto(from),pos=from;let openRanges=cursor.openStart;for(;;){let curTo=Math.min(cursor.to,to);if(cursor.point){let active=cursor.activeForPoint(cursor.to);let openCount=cursor.pointFrom\u003Cfrom?active.length+1:cursor.point.startSide\u003C0?active.length:Math.min(active.length,openRanges);iterator.point(pos,curTo,cursor.point,active,openCount,cursor.pointRank);openRanges=Math.min(cursor.openEnd(curTo),active.length);}else if(curTo>pos){iterator.span(pos,curTo,cursor.active,openRanges);openRanges=cursor.openEnd(curTo);}if(cursor.to>to)return openRanges+(cursor.point&&cursor.to>to?1:0);pos=cursor.to;cursor.next();}}static of(ranges,sort=false){let build=new RangeSetBuilder();for(let _i30=0,_ref=ranges instanceof Range$1?[ranges]:sort?lazySort(ranges):ranges,_length30=_ref.length;_i30\u003C_length30;_i30++){let range=_ref[_i30];build.add(range.from,range.to,range.value);}return build.finish();}static join(sets){if(!sets.length)return RangeSet.empty;let result=sets[sets.length-1];for(let i=sets.length-2;i>=0;i--){for(let layer=sets[i];layer!=RangeSet.empty;layer=layer.nextLayer)result=new RangeSet(layer.chunkPos,layer.chunk,result,Math.max(layer.maxPoint,result.maxPoint));}return result;}}RangeSet.empty=new RangeSet([],[],null,-1);function lazySort(ranges){if(ranges.length>1)for(let prev=ranges[0],i=1;i\u003Cranges.length;i++){let cur=ranges[i];if(cmpRange(prev,cur)>0)return ranges.slice().sort(cmpRange);prev=cur;}return ranges;}RangeSet.empty.nextLayer=RangeSet.empty;class RangeSetBuilder{finishChunk(newArrays){this.chunks.push(new Chunk$1(this.from,this.to,this.value,this.maxPoint));this.chunkPos.push(this.chunkStart);this.chunkStart=-1;this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint);this.maxPoint=-1;if(newArrays){this.from=[];this.to=[];this.value=[];}}constructor(){this.chunks=[];this.chunkPos=[];this.chunkStart=-1;this.last=null;this.lastFrom=-1000000000;this.lastTo=-1000000000;this.from=[];this.to=[];this.value=[];this.maxPoint=-1;this.setMaxPoint=-1;this.nextLayer=null;}add(from,to,value){if(!this.addInner(from,to,value))(this.nextLayer||(this.nextLayer=new RangeSetBuilder())).add(from,to,value);}addInner(from,to,value){let diff=from-this.lastTo||value.startSide-this.last.endSide;if(diff\u003C=0&&(from-this.lastFrom||value.startSide-this.last.startSide)\u003C0)throw new Error(\\\"Ranges must be added sorted by `from` position and `startSide`\\\");if(diff\u003C0)return false;if(this.from.length==250)this.finishChunk(true);if(this.chunkStart\u003C0)this.chunkStart=from;this.from.push(from-this.chunkStart);this.to.push(to-this.chunkStart);this.last=value;this.lastFrom=from;this.lastTo=to;this.value.push(value);if(value.point)this.maxPoint=Math.max(this.maxPoint,to-from);return true;}addChunk(from,chunk){if((from-this.lastTo||chunk.value[0].startSide-this.last.endSide)\u003C0)return false;if(this.from.length)this.finishChunk(true);this.setMaxPoint=Math.max(this.setMaxPoint,chunk.maxPoint);this.chunks.push(chunk);this.chunkPos.push(from);let last=chunk.value.length-1;this.last=chunk.value[last];this.lastFrom=chunk.from[last]+from;this.lastTo=chunk.to[last]+from;return true;}finish(){return this.finishInner(RangeSet.empty);}finishInner(next){if(this.from.length)this.finishChunk(false);if(this.chunks.length==0)return next;let result=RangeSet.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(next):next,this.setMaxPoint);this.from=null;return result;}}function findSharedChunks(a,b,textDiff){let inA=new Map();for(let _i31=0,_length31=a.length;_i31\u003C_length31;_i31++){let set=a[_i31];for(let i=0;i\u003Cset.chunk.length;i++)if(set.chunk[i].maxPoint\u003C=0)inA.set(set.chunk[i],set.chunkPos[i]);}let shared=new Set();for(let _i32=0,_length32=b.length;_i32\u003C_length32;_i32++){let set=b[_i32];for(let i=0;i\u003Cset.chunk.length;i++){let known=inA.get(set.chunk[i]);if(known!=null&&(textDiff?textDiff.mapPos(known):known)==set.chunkPos[i]&&!(textDiff===null||textDiff===void 0?void 0:textDiff.touchesRange(known,known+set.chunk[i].length)))shared.add(set.chunk[i]);}}return shared;}class LayerCursor{constructor(layer,skip,minPoint,rank=0){this.layer=layer;this.skip=skip;this.minPoint=minPoint;this.rank=rank;}get startSide(){return this.value?this.value.startSide:0;}get endSide(){return this.value?this.value.endSide:0;}goto(pos,side=-1000000000){this.chunkIndex=this.rangeIndex=0;this.gotoInner(pos,side,false);return this;}gotoInner(pos,side,forward){while(this.chunkIndex\u003Cthis.layer.chunk.length){let next=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(next)||this.layer.chunkEnd(this.chunkIndex)\u003Cpos||next.maxPoint\u003Cthis.minPoint))break;this.chunkIndex++;forward=false;}if(this.chunkIndex\u003Cthis.layer.chunk.length){let rangeIndex=this.layer.chunk[this.chunkIndex].findIndex(pos-this.layer.chunkPos[this.chunkIndex],side,true);if(!forward||this.rangeIndex\u003CrangeIndex)this.setRangeIndex(rangeIndex);}this.next();}forward(pos,side){if((this.to-pos||this.endSide-side)\u003C0)this.gotoInner(pos,side,true);}next(){for(;;){if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1000000000;this.value=null;break;}else{let chunkPos=this.layer.chunkPos[this.chunkIndex],chunk=this.layer.chunk[this.chunkIndex];let from=chunkPos+chunk.from[this.rangeIndex];this.from=from;this.to=chunkPos+chunk.to[this.rangeIndex];this.value=chunk.value[this.rangeIndex];this.setRangeIndex(this.rangeIndex+1);if(this.minPoint\u003C0||this.value.point&&this.to-this.from>=this.minPoint)break;}}}setRangeIndex(index){if(index==this.layer.chunk[this.chunkIndex].value.length){this.chunkIndex++;if(this.skip){while(this.chunkIndex\u003Cthis.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]))this.chunkIndex++;}this.rangeIndex=0;}else{this.rangeIndex=index;}}nextChunk(){this.chunkIndex++;this.rangeIndex=0;this.next();}compare(other){return this.from-other.from||this.startSide-other.startSide||this.rank-other.rank||this.to-other.to||this.endSide-other.endSide;}}class HeapCursor{constructor(heap){this.heap=heap;}static from(sets,skip=null,minPoint=-1){let heap=[];for(let i=0;i\u003Csets.length;i++){for(let cur=sets[i];!cur.isEmpty;cur=cur.nextLayer){if(cur.maxPoint>=minPoint)heap.push(new LayerCursor(cur,skip,minPoint,i));}}return heap.length==1?heap[0]:new HeapCursor(heap);}get startSide(){return this.value?this.value.startSide:0;}goto(pos,side=-1000000000){for(let _i33=0,_this$heap=this.heap,_length33=_this$heap.length;_i33\u003C_length33;_i33++){let cur=_this$heap[_i33];cur.goto(pos,side);}for(let i=this.heap.length>>1;i>=0;i--)heapBubble(this.heap,i);this.next();return this;}forward(pos,side){for(let _i34=0,_this$heap2=this.heap,_length34=_this$heap2.length;_i34\u003C_length34;_i34++){let cur=_this$heap2[_i34];cur.forward(pos,side);}for(let i=this.heap.length>>1;i>=0;i--)heapBubble(this.heap,i);if((this.to-pos||this.value.endSide-side)\u003C0)this.next();}next(){if(this.heap.length==0){this.from=this.to=1000000000;this.value=null;this.rank=-1;}else{let top=this.heap[0];this.from=top.from;this.to=top.to;this.value=top.value;this.rank=top.rank;if(top.value)top.next();heapBubble(this.heap,0);}}}function heapBubble(heap,index){for(let cur=heap[index];;){let childIndex=(index\u003C\u003C1)+1;if(childIndex>=heap.length)break;let child=heap[childIndex];if(childIndex+1\u003Cheap.length&&child.compare(heap[childIndex+1])>=0){child=heap[childIndex+1];childIndex++;}if(cur.compare(child)\u003C0)break;heap[childIndex]=cur;heap[index]=child;index=childIndex;}}class SpanCursor{constructor(sets,skip,minPoint){this.minPoint=minPoint;this.active=[];this.activeTo=[];this.activeRank=[];this.minActive=-1;this.point=null;this.pointFrom=0;this.pointRank=0;this.to=-1000000000;this.endSide=0;this.openStart=-1;this.cursor=HeapCursor.from(sets,skip,minPoint);}goto(pos,side=-1000000000){this.cursor.goto(pos,side);this.active.length=this.activeTo.length=this.activeRank.length=0;this.minActive=-1;this.to=pos;this.endSide=side;this.openStart=-1;this.next();return this;}forward(pos,side){while(this.minActive>-1&&(this.activeTo[this.minActive]-pos||this.active[this.minActive].endSide-side)\u003C0)this.removeActive(this.minActive);this.cursor.forward(pos,side);}removeActive(index){remove(this.active,index);remove(this.activeTo,index);remove(this.activeRank,index);this.minActive=findMinIndex(this.active,this.activeTo);}addActive(trackOpen){let i=0,{value,to,rank}=this.cursor;while(i\u003Cthis.activeRank.length&&(rank-this.activeRank[i]||to-this.activeTo[i])>0)i++;insert(this.active,i,value);insert(this.activeTo,i,to);insert(this.activeRank,i,rank);if(trackOpen)insert(trackOpen,i,this.cursor.from);this.minActive=findMinIndex(this.active,this.activeTo);}next(){let from=this.to,wasPoint=this.point;this.point=null;let trackOpen=this.openStart\u003C0?[]:null;for(;;){let a=this.minActive;if(a>-1&&(this.activeTo[a]-this.cursor.from||this.active[a].endSide-this.cursor.startSide)\u003C0){if(this.activeTo[a]>from){this.to=this.activeTo[a];this.endSide=this.active[a].endSide;break;}this.removeActive(a);if(trackOpen)remove(trackOpen,a);}else if(!this.cursor.value){this.to=this.endSide=1000000000;break;}else if(this.cursor.from>from){this.to=this.cursor.from;this.endSide=this.cursor.startSide;break;}else{let nextVal=this.cursor.value;if(!nextVal.point){this.addActive(trackOpen);this.cursor.next();}else if(wasPoint&&this.cursor.to==this.to&&this.cursor.from\u003Cthis.cursor.to){this.cursor.next();}else{this.point=nextVal;this.pointFrom=this.cursor.from;this.pointRank=this.cursor.rank;this.to=this.cursor.to;this.endSide=nextVal.endSide;this.cursor.next();this.forward(this.to,this.endSide);break;}}}if(trackOpen){this.openStart=0;for(let i=trackOpen.length-1;i>=0&&trackOpen[i]\u003Cfrom;i--)this.openStart++;}}activeForPoint(to){if(!this.active.length)return this.active;let active=[];for(let i=this.active.length-1;i>=0;i--){if(this.activeRank[i]\u003Cthis.pointRank)break;if(this.activeTo[i]>to||this.activeTo[i]==to&&this.active[i].endSide>=this.point.endSide)active.push(this.active[i]);}return active.reverse();}openEnd(to){let open=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>to;i--)open++;return open;}}function compare(a,startA,b,startB,length,comparator){a.goto(startA);b.goto(startB);let endB=startB+length;let pos=startB,dPos=startB-startA;for(;;){let diff=a.to+dPos-b.to||a.endSide-b.endSide;let end=diff\u003C0?a.to+dPos:b.to,clipEnd=Math.min(end,endB);if(a.point||b.point){if(!(a.point&&b.point&&(a.point==b.point||a.point.eq(b.point))&&sameValues(a.activeForPoint(a.to),b.activeForPoint(b.to))))comparator.comparePoint(pos,clipEnd,a.point,b.point);}else{if(clipEnd>pos&&!sameValues(a.active,b.active))comparator.compareRange(pos,clipEnd,a.active,b.active);}if(end>endB)break;pos=end;if(diff\u003C=0)a.next();if(diff>=0)b.next();}}function sameValues(a,b){if(a.length!=b.length)return false;for(let i=0;i\u003Ca.length;i++)if(a[i]!=b[i]&&!a[i].eq(b[i]))return false;return true;}function remove(array,index){for(let i=index,e=array.length-1;i\u003Ce;i++)array[i]=array[i+1];array.pop();}function insert(array,index,value){for(let i=array.length-1;i>=index;i--)array[i+1]=array[i];array[index]=value;}function findMinIndex(value,array){let found=-1,foundPos=1000000000;for(let i=0;i\u003Carray.length;i++)if((array[i]-foundPos||value[i].endSide-value[found].endSide)\u003C0){found=i;foundPos=array[i];}return found;}function countColumn(string,tabSize,to=string.length){let n=0;for(let i=0;i\u003Cto;){if(string.charCodeAt(i)==9){n+=tabSize-n%tabSize;i++;}else{n++;i=findClusterBreak(string,i);}}return n;}function findColumn(string,col,tabSize,strict){for(let i=0,n=0;;){if(n>=col)return i;if(i==string.length)break;n+=string.charCodeAt(i)==9?tabSize-n%tabSize:1;i=findClusterBreak(string,i);}return strict===true?-1:string.length;}var _m0=Object.freeze({__proto__:null,Annotation:Annotation,AnnotationType:AnnotationType,ChangeDesc:ChangeDesc,ChangeSet:ChangeSet,get CharCategory(){return CharCategory;},Compartment:Compartment,EditorSelection:EditorSelection,EditorState:EditorState,Facet:Facet,Line:Line$1,get MapMode(){return MapMode;},Prec:Prec,Range:Range$1,RangeSet:RangeSet,RangeSetBuilder:RangeSetBuilder,RangeValue:RangeValue,SelectionRange:SelectionRange,StateEffect:StateEffect,StateEffectType:StateEffectType,StateField:StateField,Text:Text$1,Transaction:Transaction,codePointAt:codePointAt,codePointSize:codePointSize,combineConfig:combineConfig,countColumn:countColumn,findClusterBreak:findClusterBreak,findColumn:findColumn,fromCodePoint:fromCodePoint});const C=\\\"\\\\u037c\\\";const COUNT=typeof Symbol==\\\"undefined\\\"?\\\"__\\\"+C:Symbol.for(C);const SET=typeof Symbol==\\\"undefined\\\"?\\\"__styleSet\\\"+Math.floor(Math.random()*1e8):Symbol(\\\"styleSet\\\");const top=typeof globalThis!=\\\"undefined\\\"?globalThis:typeof window!=\\\"undefined\\\"?window:{};class StyleModule{constructor(spec,options){this.rules=[];let{finish}=options||{};function splitSelector(selector){return /^@/.test(selector)?[selector]:selector.split(/,\\\\s*/);}function render(selectors,spec,target,isKeyframes){let local=[],isAt=/^@(\\\\w+)\\\\b/.exec(selectors[0]),keyframes=isAt&&isAt[1]==\\\"keyframes\\\";if(isAt&&spec==null)return target.push(selectors[0]+\\\";\\\");for(let prop in spec){let value=spec[prop];if(/&/.test(prop)){render(prop.split(/,\\\\s*/).map(part=>selectors.map(sel=>part.replace(/&/,sel))).reduce((a,b)=>a.concat(b)),value,target);}else if(value&&typeof value==\\\"object\\\"){if(!isAt)throw new RangeError(\\\"The value of a property (\\\"+prop+\\\") should be a primitive value.\\\");render(splitSelector(prop),value,local,keyframes);}else if(value!=null){local.push(prop.replace(/_.*/,\\\"\\\").replace(/[A-Z]/g,l=>\\\"-\\\"+l.toLowerCase())+\\\": \\\"+value+\\\";\\\");}}if(local.length||keyframes){target.push((finish&&!isAt&&!isKeyframes?selectors.map(finish):selectors).join(\\\", \\\")+\\\" {\\\"+local.join(\\\" \\\")+\\\"}\\\");}}for(let prop in spec)render(splitSelector(prop),spec[prop],this.rules);}getRules(){return this.rules.join(\\\"\\\\n\\\");}static newName(){let id=top[COUNT]||1;top[COUNT]=id+1;return C+id.toString(36);}static mount(root,modules,options){let set=root[SET],nonce=options&&options.nonce;if(!set)set=new StyleSet(root,nonce);else if(nonce)set.setNonce(nonce);set.mount(Array.isArray(modules)?modules:[modules],root);}}let adoptedSet=new Map();class StyleSet{constructor(root,nonce){let doc=root.ownerDocument||root,win=doc.defaultView;if(!root.head&&root.adoptedStyleSheets&&win.CSSStyleSheet){let adopted=adoptedSet.get(doc);if(adopted)return root[SET]=adopted;this.sheet=new win.CSSStyleSheet();adoptedSet.set(doc,this);}else{this.styleTag=doc.createElement(\\\"style\\\");if(nonce)this.styleTag.setAttribute(\\\"nonce\\\",nonce);}this.modules=[];root[SET]=this;}mount(modules,root){let sheet=this.sheet;let pos=0,j=0;for(let i=0;i\u003Cmodules.length;i++){let mod=modules[i],index=this.modules.indexOf(mod);if(index\u003Cj&&index>-1){this.modules.splice(index,1);j--;index=-1;}if(index==-1){this.modules.splice(j++,0,mod);if(sheet)for(let k=0;k\u003Cmod.rules.length;k++)sheet.insertRule(mod.rules[k],pos++);}else{while(j\u003Cindex)pos+=this.modules[j++].rules.length;pos+=mod.rules.length;j++;}}if(sheet){if(root.adoptedStyleSheets.indexOf(this.sheet)\u003C0)root.adoptedStyleSheets=[this.sheet,...root.adoptedStyleSheets];}else{let text=\\\"\\\";for(let i=0;i\u003Cthis.modules.length;i++)text+=this.modules[i].getRules()+\\\"\\\\n\\\";this.styleTag.textContent=text;let target=root.head||root;if(this.styleTag.parentNode!=target)target.insertBefore(this.styleTag,target.firstChild);}}setNonce(nonce){if(this.styleTag&&this.styleTag.getAttribute(\\\"nonce\\\")!=nonce)this.styleTag.setAttribute(\\\"nonce\\\",nonce);}}var base$1={8:\\\"Backspace\\\",9:\\\"Tab\\\",10:\\\"Enter\\\",12:\\\"NumLock\\\",13:\\\"Enter\\\",16:\\\"Shift\\\",17:\\\"Control\\\",18:\\\"Alt\\\",20:\\\"CapsLock\\\",27:\\\"Escape\\\",32:\\\" \\\",33:\\\"PageUp\\\",34:\\\"PageDown\\\",35:\\\"End\\\",36:\\\"Home\\\",37:\\\"ArrowLeft\\\",38:\\\"ArrowUp\\\",39:\\\"ArrowRight\\\",40:\\\"ArrowDown\\\",44:\\\"PrintScreen\\\",45:\\\"Insert\\\",46:\\\"Delete\\\",59:\\\";\\\",61:\\\"=\\\",91:\\\"Meta\\\",92:\\\"Meta\\\",106:\\\"*\\\",107:\\\"+\\\",108:\\\",\\\",109:\\\"-\\\",110:\\\".\\\",111:\\\"/\\\",144:\\\"NumLock\\\",145:\\\"ScrollLock\\\",160:\\\"Shift\\\",161:\\\"Shift\\\",162:\\\"Control\\\",163:\\\"Control\\\",164:\\\"Alt\\\",165:\\\"Alt\\\",173:\\\"-\\\",186:\\\";\\\",187:\\\"=\\\",188:\\\",\\\",189:\\\"-\\\",190:\\\".\\\",191:\\\"/\\\",192:\\\"`\\\",219:\\\"[\\\",220:\\\"\\\\\\\\\\\",221:\\\"]\\\",222:\\\"'\\\"};var shift={48:\\\")\\\",49:\\\"!\\\",50:\\\"@\\\",51:\\\"#\\\",52:\\\"$\\\",53:\\\"%\\\",54:\\\"^\\\",55:\\\"&\\\",56:\\\"*\\\",57:\\\"(\\\",59:\\\":\\\",61:\\\"+\\\",173:\\\"_\\\",186:\\\":\\\",187:\\\"+\\\",188:\\\"\u003C\\\",189:\\\"_\\\",190:\\\">\\\",191:\\\"?\\\",192:\\\"~\\\",219:\\\"{\\\",220:\\\"|\\\",221:\\\"}\\\",222:\\\"\\\\\\\"\\\"};var mac=typeof navigator!=\\\"undefined\\\"&&/Mac/.test(navigator.platform);var ie$1=typeof navigator!=\\\"undefined\\\"&&/MSIE \\\\d|Trident\\\\/(?:[7-9]|\\\\d{2,})\\\\..*rv:(\\\\d+)/.exec(navigator.userAgent);for(var i=0;i\u003C10;i++)base$1[48+i]=base$1[96+i]=String(i);for(var i=1;i\u003C=24;i++)base$1[i+111]=\\\"F\\\"+i;for(var i=65;i\u003C=90;i++){base$1[i]=String.fromCharCode(i+32);shift[i]=String.fromCharCode(i);}for(var code in base$1)if(!shift.hasOwnProperty(code))shift[code]=base$1[code];function keyName(event){var ignoreKey=mac&&event.metaKey&&event.shiftKey&&!event.ctrlKey&&!event.altKey||ie$1&&event.shiftKey&&event.key&&event.key.length==1||event.key==\\\"Unidentified\\\";var name=!ignoreKey&&event.key||(event.shiftKey?shift:base$1)[event.keyCode]||event.key||\\\"Unidentified\\\";if(name==\\\"Esc\\\")name=\\\"Escape\\\";if(name==\\\"Del\\\")name=\\\"Delete\\\";if(name==\\\"Left\\\")name=\\\"ArrowLeft\\\";if(name==\\\"Up\\\")name=\\\"ArrowUp\\\";if(name==\\\"Right\\\")name=\\\"ArrowRight\\\";if(name==\\\"Down\\\")name=\\\"ArrowDown\\\";return name;}function getSelection(root){let target;if(root.nodeType==11){target=root.getSelection?root:root.ownerDocument;}else{target=root;}return target.getSelection();}function contains(dom,node){return node?dom==node||dom.contains(node.nodeType!=1?node.parentNode:node):false;}function deepActiveElement(doc){let elt=doc.activeElement;while(elt&&elt.shadowRoot)elt=elt.shadowRoot.activeElement;return elt;}function hasSelection(dom,selection){if(!selection.anchorNode)return false;try{return contains(dom,selection.anchorNode);}catch(_){return false;}}function clientRectsFor(dom){if(dom.nodeType==3)return textRange(dom,0,dom.nodeValue.length).getClientRects();else if(dom.nodeType==1)return dom.getClientRects();else return[];}function isEquivalentPosition(node,off,targetNode,targetOff){return targetNode?scanFor(node,off,targetNode,targetOff,-1)||scanFor(node,off,targetNode,targetOff,1):false;}function domIndex(node){for(var index=0;;index++){node=node.previousSibling;if(!node)return index;}}function scanFor(node,off,targetNode,targetOff,dir){for(;;){if(node==targetNode&&off==targetOff)return true;if(off==(dir\u003C0?0:maxOffset(node))){if(node.nodeName==\\\"DIV\\\")return false;let parent=node.parentNode;if(!parent||parent.nodeType!=1)return false;off=domIndex(node)+(dir\u003C0?0:1);node=parent;}else if(node.nodeType==1){node=node.childNodes[off+(dir\u003C0?-1:0)];if(node.nodeType==1&&node.contentEditable==\\\"false\\\")return false;off=dir\u003C0?maxOffset(node):0;}else{return false;}}}function maxOffset(node){return node.nodeType==3?node.nodeValue.length:node.childNodes.length;}function flattenRect(rect,left){let x=left?rect.left:rect.right;return{left:x,right:x,top:rect.top,bottom:rect.bottom};}function windowRect(win){return{left:0,right:win.innerWidth,top:0,bottom:win.innerHeight};}function getScale(elt,rect){let scaleX=rect.width/elt.offsetWidth;let scaleY=rect.height/elt.offsetHeight;if(scaleX>0.995&&scaleX\u003C1.005||!isFinite(scaleX)||Math.abs(rect.width-elt.offsetWidth)\u003C1)scaleX=1;if(scaleY>0.995&&scaleY\u003C1.005||!isFinite(scaleY)||Math.abs(rect.height-elt.offsetHeight)\u003C1)scaleY=1;return{scaleX,scaleY};}function scrollRectIntoView(dom,rect,side,x,y,xMargin,yMargin,ltr){let doc=dom.ownerDocument,win=doc.defaultView||window;for(let cur=dom,stop=false;cur&&!stop;){if(cur.nodeType==1){let bounding,top=cur==doc.body;let scaleX=1,scaleY=1;if(top){bounding=windowRect(win);}else{if(/^(fixed|sticky)$/.test(getComputedStyle(cur).position))stop=true;if(cur.scrollHeight\u003C=cur.clientHeight&&cur.scrollWidth\u003C=cur.clientWidth){cur=cur.assignedSlot||cur.parentNode;continue;}let rect=cur.getBoundingClientRect();({scaleX,scaleY}=getScale(cur,rect));bounding={left:rect.left,right:rect.left+cur.clientWidth*scaleX,top:rect.top,bottom:rect.top+cur.clientHeight*scaleY};}let moveX=0,moveY=0;if(y==\\\"nearest\\\"){if(rect.top\u003Cbounding.top){moveY=-(bounding.top-rect.top+yMargin);if(side>0&&rect.bottom>bounding.bottom+moveY)moveY=rect.bottom-bounding.bottom+moveY+yMargin;}else if(rect.bottom>bounding.bottom){moveY=rect.bottom-bounding.bottom+yMargin;if(side\u003C0&&rect.top-moveY\u003Cbounding.top)moveY=-(bounding.top+moveY-rect.top+yMargin);}}else{let rectHeight=rect.bottom-rect.top,boundingHeight=bounding.bottom-bounding.top;let targetTop=y==\\\"center\\\"&&rectHeight\u003C=boundingHeight?rect.top+rectHeight/2-boundingHeight/2:y==\\\"start\\\"||y==\\\"center\\\"&&side\u003C0?rect.top-yMargin:rect.bottom-boundingHeight+yMargin;moveY=targetTop-bounding.top;}if(x==\\\"nearest\\\"){if(rect.left\u003Cbounding.left){moveX=-(bounding.left-rect.left+xMargin);if(side>0&&rect.right>bounding.right+moveX)moveX=rect.right-bounding.right+moveX+xMargin;}else if(rect.right>bounding.right){moveX=rect.right-bounding.right+xMargin;if(side\u003C0&&rect.left\u003Cbounding.left+moveX)moveX=-(bounding.left+moveX-rect.left+xMargin);}}else{let targetLeft=x==\\\"center\\\"?rect.left+(rect.right-rect.left)/2-(bounding.right-bounding.left)/2:x==\\\"start\\\"==ltr?rect.left-xMargin:rect.right-(bounding.right-bounding.left)+xMargin;moveX=targetLeft-bounding.left;}if(moveX||moveY){if(top){win.scrollBy(moveX,moveY);}else{let movedX=0,movedY=0;if(moveY){let start=cur.scrollTop;cur.scrollTop+=moveY/scaleY;movedY=(cur.scrollTop-start)*scaleY;}if(moveX){let start=cur.scrollLeft;cur.scrollLeft+=moveX/scaleX;movedX=(cur.scrollLeft-start)*scaleX;}rect={left:rect.left-movedX,top:rect.top-movedY,right:rect.right-movedX,bottom:rect.bottom-movedY};if(movedX&&Math.abs(movedX-moveX)\u003C1)x=\\\"nearest\\\";if(movedY&&Math.abs(movedY-moveY)\u003C1)y=\\\"nearest\\\";}}if(top)break;cur=cur.assignedSlot||cur.parentNode;}else if(cur.nodeType==11){cur=cur.host;}else{break;}}}function scrollableParent(dom){let doc=dom.ownerDocument;for(let cur=dom.parentNode;cur;){if(cur==doc.body){break;}else if(cur.nodeType==1){if(cur.scrollHeight>cur.clientHeight||cur.scrollWidth>cur.clientWidth)return cur;cur=cur.assignedSlot||cur.parentNode;}else if(cur.nodeType==11){cur=cur.host;}else{break;}}return null;}class DOMSelectionState{constructor(){this.anchorNode=null;this.anchorOffset=0;this.focusNode=null;this.focusOffset=0;}eq(domSel){return this.anchorNode==domSel.anchorNode&&this.anchorOffset==domSel.anchorOffset&&this.focusNode==domSel.focusNode&&this.focusOffset==domSel.focusOffset;}setRange(range){let{anchorNode,focusNode}=range;this.set(anchorNode,Math.min(range.anchorOffset,anchorNode?maxOffset(anchorNode):0),focusNode,Math.min(range.focusOffset,focusNode?maxOffset(focusNode):0));}set(anchorNode,anchorOffset,focusNode,focusOffset){this.anchorNode=anchorNode;this.anchorOffset=anchorOffset;this.focusNode=focusNode;this.focusOffset=focusOffset;}}let preventScrollSupported=null;function focusPreventScroll(dom){if(dom.setActive)return dom.setActive();if(preventScrollSupported)return dom.focus(preventScrollSupported);let stack=[];for(let cur=dom;cur;cur=cur.parentNode){stack.push(cur,cur.scrollTop,cur.scrollLeft);if(cur==cur.ownerDocument)break;}dom.focus(preventScrollSupported==null?{get preventScroll(){preventScrollSupported={preventScroll:true};return true;}}:undefined);if(!preventScrollSupported){preventScrollSupported=false;for(let i=0;i\u003Cstack.length;){let elt=stack[i++],top=stack[i++],left=stack[i++];if(elt.scrollTop!=top)elt.scrollTop=top;if(elt.scrollLeft!=left)elt.scrollLeft=left;}}}let scratchRange;function textRange(node,from,to=from){let range=scratchRange||(scratchRange=document.createRange());range.setEnd(node,to);range.setStart(node,from);return range;}function dispatchKey(elt,name,code){let options={key:name,code:name,keyCode:code,which:code,cancelable:true};let down=new KeyboardEvent(\\\"keydown\\\",options);down.synthetic=true;elt.dispatchEvent(down);let up=new KeyboardEvent(\\\"keyup\\\",options);up.synthetic=true;elt.dispatchEvent(up);return down.defaultPrevented||up.defaultPrevented;}function getRoot(node){while(node){if(node&&(node.nodeType==9||node.nodeType==11&&node.host))return node;node=node.assignedSlot||node.parentNode;}return null;}function clearAttributes(node){while(node.attributes.length)node.removeAttributeNode(node.attributes[0]);}function atElementStart(doc,selection){let node=selection.focusNode,offset=selection.focusOffset;if(!node||selection.anchorNode!=node||selection.anchorOffset!=offset)return false;offset=Math.min(offset,maxOffset(node));for(;;){if(offset){if(node.nodeType!=1)return false;let prev=node.childNodes[offset-1];if(prev.contentEditable==\\\"false\\\")offset--;else{node=prev;offset=maxOffset(node);}}else if(node==doc){return true;}else{offset=domIndex(node);node=node.parentNode;}}}function isScrolledToBottom(elt){return elt.scrollTop>Math.max(1,elt.scrollHeight-elt.clientHeight-4);}class DOMPos{constructor(node,offset,precise=true){this.node=node;this.offset=offset;this.precise=precise;}static before(dom,precise){return new DOMPos(dom.parentNode,domIndex(dom),precise);}static after(dom,precise){return new DOMPos(dom.parentNode,domIndex(dom)+1,precise);}}const noChildren=[];class ContentView{constructor(){this.parent=null;this.dom=null;this.flags=2;}get overrideDOMText(){return null;}get posAtStart(){return this.parent?this.parent.posBefore(this):0;}get posAtEnd(){return this.posAtStart+this.length;}posBefore(view){let pos=this.posAtStart;for(let _i35=0,_this$children2=this.children,_length35=_this$children2.length;_i35\u003C_length35;_i35++){let child=_this$children2[_i35];if(child==view)return pos;pos+=child.length+child.breakAfter;}throw new RangeError(\\\"Invalid child in posBefore\\\");}posAfter(view){return this.posBefore(view)+view.length;}sync(view,track){if(this.flags&2){let parent=this.dom;let prev=null,next;for(let _i36=0,_this$children3=this.children,_length36=_this$children3.length;_i36\u003C_length36;_i36++){let child=_this$children3[_i36];if(child.flags&7){if(!child.dom&&(next=prev?prev.nextSibling:parent.firstChild)){let contentView=ContentView.get(next);if(!contentView||!contentView.parent&&contentView.canReuseDOM(child))child.reuseDOM(next);}child.sync(view,track);child.flags&=~7;}next=prev?prev.nextSibling:parent.firstChild;if(track&&!track.written&&track.node==parent&&next!=child.dom)track.written=true;if(child.dom.parentNode==parent){while(next&&next!=child.dom)next=rm$1(next);}else{parent.insertBefore(child.dom,next);}prev=child.dom;}next=prev?prev.nextSibling:parent.firstChild;if(next&&track&&track.node==parent)track.written=true;while(next)next=rm$1(next);}else if(this.flags&1){for(let _i37=0,_this$children4=this.children,_length37=_this$children4.length;_i37\u003C_length37;_i37++){let child=_this$children4[_i37];if(child.flags&7){child.sync(view,track);child.flags&=~7;}}}}reuseDOM(_dom){}localPosFromDOM(node,offset){let after;if(node==this.dom){after=this.dom.childNodes[offset];}else{let bias=maxOffset(node)==0?0:offset==0?-1:1;for(;;){let parent=node.parentNode;if(parent==this.dom)break;if(bias==0&&parent.firstChild!=parent.lastChild){if(node==parent.firstChild)bias=-1;else bias=1;}node=parent;}if(bias\u003C0)after=node;else after=node.nextSibling;}if(after==this.dom.firstChild)return 0;while(after&&!ContentView.get(after))after=after.nextSibling;if(!after)return this.length;for(let i=0,pos=0;;i++){let child=this.children[i];if(child.dom==after)return pos;pos+=child.length+child.breakAfter;}}domBoundsAround(from,to,offset=0){let fromI=-1,fromStart=-1,toI=-1,toEnd=-1;for(let i=0,pos=offset,prevEnd=offset;i\u003Cthis.children.length;i++){let child=this.children[i],end=pos+child.length;if(pos\u003Cfrom&&end>to)return child.domBoundsAround(from,to,pos);if(end>=from&&fromI==-1){fromI=i;fromStart=pos;}if(pos>to&&child.dom.parentNode==this.dom){toI=i;toEnd=prevEnd;break;}prevEnd=end;pos=end+child.breakAfter;}return{from:fromStart,to:toEnd\u003C0?offset+this.length:toEnd,startDOM:(fromI?this.children[fromI-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:toI\u003Cthis.children.length&&toI>=0?this.children[toI].dom:null};}markDirty(andParent=false){this.flags|=2;this.markParentsDirty(andParent);}markParentsDirty(childList){for(let parent=this.parent;parent;parent=parent.parent){if(childList)parent.flags|=2;if(parent.flags&1)return;parent.flags|=1;childList=false;}}setParent(parent){if(this.parent!=parent){this.parent=parent;if(this.flags&7)this.markParentsDirty(true);}}setDOM(dom){if(this.dom==dom)return;if(this.dom)this.dom.cmView=null;this.dom=dom;dom.cmView=this;}get rootView(){for(let v=this;;){let parent=v.parent;if(!parent)return v;v=parent;}}replaceChildren(from,to,children=noChildren){this.markDirty();for(let i=from;i\u003Cto;i++){let child=this.children[i];if(child.parent==this&&children.indexOf(child)\u003C0)child.destroy();}this.children.splice(from,to-from,...children);for(let i=0;i\u003Cchildren.length;i++)children[i].setParent(this);}ignoreMutation(_rec){return false;}ignoreEvent(_event){return false;}childCursor(pos=this.length){return new ChildCursor(this.children,pos,this.children.length);}childPos(pos,bias=1){return this.childCursor().findPos(pos,bias);}toString(){let name=this.constructor.name.replace(\\\"View\\\",\\\"\\\");return name+(this.children.length?\\\"(\\\"+this.children.join()+\\\")\\\":this.length?\\\"[\\\"+(name==\\\"Text\\\"?this.text:this.length)+\\\"]\\\":\\\"\\\")+(this.breakAfter?\\\"#\\\":\\\"\\\");}static get(node){return node.cmView;}get isEditable(){return true;}get isWidget(){return false;}get isHidden(){return false;}merge(from,to,source,hasStart,openStart,openEnd){return false;}become(other){return false;}canReuseDOM(other){return other.constructor==this.constructor&&!((this.flags|other.flags)&8);}getSide(){return 0;}destroy(){for(let _i38=0,_this$children5=this.children,_length38=_this$children5.length;_i38\u003C_length38;_i38++){let child=_this$children5[_i38];if(child.parent==this)child.destroy();}this.parent=null;}}ContentView.prototype.breakAfter=0;function rm$1(dom){let next=dom.nextSibling;dom.parentNode.removeChild(dom);return next;}class ChildCursor{constructor(children,pos,i){this.children=children;this.pos=pos;this.i=i;this.off=0;}findPos(pos,bias=1){for(;;){if(pos>this.pos||pos==this.pos&&(bias>0||this.i==0||this.children[this.i-1].breakAfter)){this.off=pos-this.pos;return this;}let next=this.children[--this.i];this.pos-=next.length+next.breakAfter;}}}function replaceRange(parent,fromI,fromOff,toI,toOff,insert,breakAtStart,openStart,openEnd){let{children}=parent;let before=children.length?children[fromI]:null;let last=insert.length?insert[insert.length-1]:null;let breakAtEnd=last?last.breakAfter:breakAtStart;if(fromI==toI&&before&&!breakAtStart&&!breakAtEnd&&insert.length\u003C2&&before.merge(fromOff,toOff,insert.length?last:null,fromOff==0,openStart,openEnd))return;if(toI\u003Cchildren.length){let after=children[toI];if(after&&(toOff\u003Cafter.length||after.breakAfter&&(last===null||last===void 0?void 0:last.breakAfter))){if(fromI==toI){after=after.split(toOff);toOff=0;}if(!breakAtEnd&&last&&after.merge(0,toOff,last,true,0,openEnd)){insert[insert.length-1]=after;}else{if(toOff||after.children.length&&!after.children[0].length)after.merge(0,toOff,null,false,0,openEnd);insert.push(after);}}else if(after===null||after===void 0?void 0:after.breakAfter){if(last)last.breakAfter=1;else breakAtStart=1;}toI++;}if(before){before.breakAfter=breakAtStart;if(fromOff>0){if(!breakAtStart&&insert.length&&before.merge(fromOff,before.length,insert[0],false,openStart,0)){before.breakAfter=insert.shift().breakAfter;}else if(fromOff\u003Cbefore.length||before.children.length&&before.children[before.children.length-1].length==0){before.merge(fromOff,before.length,null,false,openStart,0);}fromI++;}}while(fromI\u003CtoI&&insert.length){if(children[toI-1].become(insert[insert.length-1])){toI--;insert.pop();openEnd=insert.length?0:openStart;}else if(children[fromI].become(insert[0])){fromI++;insert.shift();openStart=insert.length?0:openEnd;}else{break;}}if(!insert.length&&fromI&&toI\u003Cchildren.length&&!children[fromI-1].breakAfter&&children[toI].merge(0,0,children[fromI-1],false,openStart,openEnd))fromI--;if(fromI\u003CtoI||insert.length)parent.replaceChildren(fromI,toI,insert);}function mergeChildrenInto(parent,from,to,insert,openStart,openEnd){let cur=parent.childCursor();let{i:toI,off:toOff}=cur.findPos(to,1);let{i:fromI,off:fromOff}=cur.findPos(from,-1);let dLen=from-to;for(let _i39=0,_length39=insert.length;_i39\u003C_length39;_i39++){let view=insert[_i39];dLen+=view.length;}parent.length+=dLen;replaceRange(parent,fromI,fromOff,toI,toOff,insert,0,openStart,openEnd);}let nav=typeof navigator!=\\\"undefined\\\"?navigator:{userAgent:\\\"\\\",vendor:\\\"\\\",platform:\\\"\\\"};let doc=typeof document!=\\\"undefined\\\"?document:{documentElement:{style:{}}};const ie_edge=/Edge\\\\/(\\\\d+)/.exec(nav.userAgent);const ie_upto10=/MSIE \\\\d/.test(nav.userAgent);const ie_11up=/Trident\\\\/(?:[7-9]|\\\\d{2,})\\\\..*rv:(\\\\d+)/.exec(nav.userAgent);const ie=!!(ie_upto10||ie_11up||ie_edge);const gecko=!ie&&/gecko\\\\/(\\\\d+)/i.test(nav.userAgent);const chrome=!ie&&/Chrome\\\\/(\\\\d+)/.exec(nav.userAgent);const webkit=(\\\"webkitFontSmoothing\\\"in doc.documentElement.style);const safari=!ie&&/Apple Computer/.test(nav.vendor);const ios=safari&&(/Mobile\\\\/\\\\w+/.test(nav.userAgent)||nav.maxTouchPoints>2);var browser={mac:ios||/Mac/.test(nav.platform),windows:/Win/.test(nav.platform),linux:/Linux|X11/.test(nav.platform),ie,ie_version:ie_upto10?doc.documentMode||6:ie_11up?+ie_11up[1]:ie_edge?+ie_edge[1]:0,gecko,gecko_version:gecko?+(/Firefox\\\\/(\\\\d+)/.exec(nav.userAgent)||[0,0])[1]:0,chrome:!!chrome,chrome_version:chrome?+chrome[1]:0,ios,android:/Android\\\\b/.test(nav.userAgent),webkit,safari,webkit_version:webkit?+(/\\\\bAppleWebKit\\\\/(\\\\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:doc.documentElement.style.tabSize!=null?\\\"tab-size\\\":\\\"-moz-tab-size\\\"};const MaxJoinLen=256;class TextView extends ContentView{constructor(text){super();this.text=text;}get length(){return this.text.length;}createDOM(textDOM){this.setDOM(textDOM||document.createTextNode(this.text));}sync(view,track){if(!this.dom)this.createDOM();if(this.dom.nodeValue!=this.text){if(track&&track.node==this.dom)track.written=true;this.dom.nodeValue=this.text;}}reuseDOM(dom){if(dom.nodeType==3)this.createDOM(dom);}merge(from,to,source){if(this.flags&8||source&&(!(source instanceof TextView)||this.length-(to-from)+source.length>MaxJoinLen||source.flags&8))return false;this.text=this.text.slice(0,from)+(source?source.text:\\\"\\\")+this.text.slice(to);this.markDirty();return true;}split(from){let result=new TextView(this.text.slice(from));this.text=this.text.slice(0,from);this.markDirty();result.flags|=this.flags&8;return result;}localPosFromDOM(node,offset){return node==this.dom?offset:offset?this.text.length:0;}domAtPos(pos){return new DOMPos(this.dom,pos);}domBoundsAround(_from,_to,offset){return{from:offset,to:offset+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling};}coordsAt(pos,side){return textCoords(this.dom,pos,side);}}class MarkView extends ContentView{constructor(mark,children=[],length=0){super();this.mark=mark;this.children=children;this.length=length;for(let _i40=0,_length40=children.length;_i40\u003C_length40;_i40++){let ch=children[_i40];ch.setParent(this);}}setAttrs(dom){clearAttributes(dom);if(this.mark.class)dom.className=this.mark.class;if(this.mark.attrs)for(let name in this.mark.attrs)dom.setAttribute(name,this.mark.attrs[name]);return dom;}canReuseDOM(other){return super.canReuseDOM(other)&&!((this.flags|other.flags)&8);}reuseDOM(node){if(node.nodeName==this.mark.tagName.toUpperCase()){this.setDOM(node);this.flags|=4|2;}}sync(view,track){if(!this.dom)this.setDOM(this.setAttrs(document.createElement(this.mark.tagName)));else if(this.flags&4)this.setAttrs(this.dom);super.sync(view,track);}merge(from,to,source,_hasStart,openStart,openEnd){if(source&&(!(source instanceof MarkView&&source.mark.eq(this.mark))||from&&openStart\u003C=0||to\u003Cthis.length&&openEnd\u003C=0))return false;mergeChildrenInto(this,from,to,source?source.children.slice():[],openStart-1,openEnd-1);this.markDirty();return true;}split(from){let result=[],off=0,detachFrom=-1,i=0;for(let _i41=0,_this$children6=this.children,_length41=_this$children6.length;_i41\u003C_length41;_i41++){let elt=_this$children6[_i41];let end=off+elt.length;if(end>from)result.push(off\u003Cfrom?elt.split(from-off):elt);if(detachFrom\u003C0&&off>=from)detachFrom=i;off=end;i++;}let length=this.length-from;this.length=from;if(detachFrom>-1){this.children.length=detachFrom;this.markDirty();}return new MarkView(this.mark,result,length);}domAtPos(pos){return inlineDOMAtPos(this,pos);}coordsAt(pos,side){return coordsInChildren(this,pos,side);}}function textCoords(text,pos,side){let length=text.nodeValue.length;if(pos>length)pos=length;let from=pos,to=pos,flatten=0;if(pos==0&&side\u003C0||pos==length&&side>=0){if(!(browser.chrome||browser.gecko)){if(pos){from--;flatten=1;}else if(to\u003Clength){to++;flatten=-1;}}}else{if(side\u003C0)from--;else if(to\u003Clength)to++;}let rects=textRange(text,from,to).getClientRects();if(!rects.length)return null;let rect=rects[(flatten?flatten\u003C0:side>=0)?0:rects.length-1];if(browser.safari&&!flatten&&rect.width==0)rect=Array.prototype.find.call(rects,r=>r.width)||rect;return flatten?flattenRect(rect,flatten\u003C0):rect||null;}class WidgetView extends ContentView{static create(widget,length,side){return new WidgetView(widget,length,side);}constructor(widget,length,side){super();this.widget=widget;this.length=length;this.side=side;this.prevWidget=null;}split(from){let result=WidgetView.create(this.widget,this.length-from,this.side);this.length-=from;return result;}sync(view){if(!this.dom||!this.widget.updateDOM(this.dom,view)){if(this.dom&&this.prevWidget)this.prevWidget.destroy(this.dom);this.prevWidget=null;this.setDOM(this.widget.toDOM(view));if(!this.widget.editable)this.dom.contentEditable=\\\"false\\\";}}getSide(){return this.side;}merge(from,to,source,hasStart,openStart,openEnd){if(source&&(!(source instanceof WidgetView)||!this.widget.compare(source.widget)||from>0&&openStart\u003C=0||to\u003Cthis.length&&openEnd\u003C=0))return false;this.length=from+(source?source.length:0)+(this.length-to);return true;}become(other){if(other instanceof WidgetView&&other.side==this.side&&this.widget.constructor==other.widget.constructor){if(!this.widget.compare(other.widget))this.markDirty(true);if(this.dom&&!this.prevWidget)this.prevWidget=this.widget;this.widget=other.widget;this.length=other.length;return true;}return false;}ignoreMutation(){return true;}ignoreEvent(event){return this.widget.ignoreEvent(event);}get overrideDOMText(){if(this.length==0)return Text$1.empty;let top=this;while(top.parent)top=top.parent;let{view}=top,text=view&&view.state.doc,start=this.posAtStart;return text?text.slice(start,start+this.length):Text$1.empty;}domAtPos(pos){return(this.length?pos==0:this.side>0)?DOMPos.before(this.dom):DOMPos.after(this.dom,pos==this.length);}domBoundsAround(){return null;}coordsAt(pos,side){let custom=this.widget.coordsAt(this.dom,pos,side);if(custom)return custom;let rects=this.dom.getClientRects(),rect=null;if(!rects.length)return null;let fromBack=this.side?this.side\u003C0:pos>0;for(let i=fromBack?rects.length-1:0;;i+=fromBack?-1:1){rect=rects[i];if(pos>0?i==0:i==rects.length-1||rect.top\u003Crect.bottom)break;}return flattenRect(rect,!fromBack);}get isEditable(){return false;}get isWidget(){return true;}get isHidden(){return this.widget.isHidden;}destroy(){super.destroy();if(this.dom)this.widget.destroy(this.dom);}}class WidgetBufferView extends ContentView{constructor(side){super();this.side=side;}get length(){return 0;}merge(){return false;}become(other){return other instanceof WidgetBufferView&&other.side==this.side;}split(){return new WidgetBufferView(this.side);}sync(){if(!this.dom){let dom=document.createElement(\\\"img\\\");dom.className=\\\"cm-widgetBuffer\\\";dom.setAttribute(\\\"aria-hidden\\\",\\\"true\\\");this.setDOM(dom);}}getSide(){return this.side;}domAtPos(pos){return this.side>0?DOMPos.before(this.dom):DOMPos.after(this.dom);}localPosFromDOM(){return 0;}domBoundsAround(){return null;}coordsAt(pos){return this.dom.getBoundingClientRect();}get overrideDOMText(){return Text$1.empty;}get isHidden(){return true;}}TextView.prototype.children=WidgetView.prototype.children=WidgetBufferView.prototype.children=noChildren;function inlineDOMAtPos(parent,pos){let dom=parent.dom,{children}=parent,i=0;for(let off=0;i\u003Cchildren.length;i++){let child=children[i],end=off+child.length;if(end==off&&child.getSide()\u003C=0)continue;if(pos>off&&pos\u003Cend&&child.dom.parentNode==dom)return child.domAtPos(pos-off);if(pos\u003C=off)break;off=end;}for(let j=i;j>0;j--){let prev=children[j-1];if(prev.dom.parentNode==dom)return prev.domAtPos(prev.length);}for(let j=i;j\u003Cchildren.length;j++){let next=children[j];if(next.dom.parentNode==dom)return next.domAtPos(0);}return new DOMPos(dom,0);}function joinInlineInto(parent,view,open){let last,{children}=parent;if(open>0&&view instanceof MarkView&&children.length&&(last=children[children.length-1])instanceof MarkView&&last.mark.eq(view.mark)){joinInlineInto(last,view.children[0],open-1);}else{children.push(view);view.setParent(parent);}parent.length+=view.length;}function coordsInChildren(view,pos,side){let before=null,beforePos=-1,after=null,afterPos=-1;function scan(view,pos){for(let i=0,off=0;i\u003Cview.children.length&&off\u003C=pos;i++){let child=view.children[i],end=off+child.length;if(end>=pos){if(child.children.length){scan(child,pos-off);}else if((!after||after.isHidden&&side>0)&&(end>pos||off==end&&child.getSide()>0)){after=child;afterPos=pos-off;}else if(off\u003Cpos||off==end&&child.getSide()\u003C0&&!child.isHidden){before=child;beforePos=pos-off;}}off=end;}}scan(view,pos);let target=(side\u003C0?before:after)||before||after;if(target)return target.coordsAt(Math.max(0,target==before?beforePos:afterPos),side);return fallbackRect(view);}function fallbackRect(view){let last=view.dom.lastChild;if(!last)return view.dom.getBoundingClientRect();let rects=clientRectsFor(last);return rects[rects.length-1]||null;}function combineAttrs(source,target){for(let name in source){if(name==\\\"class\\\"&&target.class)target.class+=\\\" \\\"+source.class;else if(name==\\\"style\\\"&&target.style)target.style+=\\\";\\\"+source.style;else target[name]=source[name];}return target;}const noAttrs=Object.create(null);function attrsEq(a,b,ignore){if(a==b)return true;if(!a)a=noAttrs;if(!b)b=noAttrs;let keysA=Object.keys(a),keysB=Object.keys(b);if(keysA.length-(ignore&&keysA.indexOf(ignore)>-1?1:0)!=keysB.length-(ignore&&keysB.indexOf(ignore)>-1?1:0))return false;for(let _i42=0,_length42=keysA.length;_i42\u003C_length42;_i42++){let key=keysA[_i42];if(key!=ignore&&(keysB.indexOf(key)==-1||a[key]!==b[key]))return false;}return true;}function updateAttrs(dom,prev,attrs){let changed=false;if(prev)for(let name in prev)if(!(attrs&&name in attrs)){changed=true;if(name==\\\"style\\\")dom.style.cssText=\\\"\\\";else dom.removeAttribute(name);}if(attrs)for(let name in attrs)if(!(prev&&prev[name]==attrs[name])){changed=true;if(name==\\\"style\\\")dom.style.cssText=attrs[name];else dom.setAttribute(name,attrs[name]);}return changed;}function getAttrs$1(dom){let attrs=Object.create(null);for(let i=0;i\u003Cdom.attributes.length;i++){let attr=dom.attributes[i];attrs[attr.name]=attr.value;}return attrs;}class LineView extends ContentView{constructor(){super(...arguments);this.children=[];this.length=0;this.prevAttrs=undefined;this.attrs=null;this.breakAfter=0;}merge(from,to,source,hasStart,openStart,openEnd){if(source){if(!(source instanceof LineView))return false;if(!this.dom)source.transferDOM(this);}if(hasStart)this.setDeco(source?source.attrs:null);mergeChildrenInto(this,from,to,source?source.children.slice():[],openStart,openEnd);return true;}split(at){let end=new LineView();end.breakAfter=this.breakAfter;if(this.length==0)return end;let{i,off}=this.childPos(at);if(off){end.append(this.children[i].split(off),0);this.children[i].merge(off,this.children[i].length,null,false,0,0);i++;}for(let j=i;j\u003Cthis.children.length;j++)end.append(this.children[j],0);while(i>0&&this.children[i-1].length==0)this.children[--i].destroy();this.children.length=i;this.markDirty();this.length=at;return end;}transferDOM(other){if(!this.dom)return;this.markDirty();other.setDOM(this.dom);other.prevAttrs=this.prevAttrs===undefined?this.attrs:this.prevAttrs;this.prevAttrs=undefined;this.dom=null;}setDeco(attrs){if(!attrsEq(this.attrs,attrs)){if(this.dom){this.prevAttrs=this.attrs;this.markDirty();}this.attrs=attrs;}}append(child,openStart){joinInlineInto(this,child,openStart);}addLineDeco(deco){let attrs=deco.spec.attributes,cls=deco.spec.class;if(attrs)this.attrs=combineAttrs(attrs,this.attrs||{});if(cls)this.attrs=combineAttrs({class:cls},this.attrs||{});}domAtPos(pos){return inlineDOMAtPos(this,pos);}reuseDOM(node){if(node.nodeName==\\\"DIV\\\"){this.setDOM(node);this.flags|=4|2;}}sync(view,track){var _a;if(!this.dom){this.setDOM(document.createElement(\\\"div\\\"));this.dom.className=\\\"cm-line\\\";this.prevAttrs=this.attrs?null:undefined;}else if(this.flags&4){clearAttributes(this.dom);this.dom.className=\\\"cm-line\\\";this.prevAttrs=this.attrs?null:undefined;}if(this.prevAttrs!==undefined){updateAttrs(this.dom,this.prevAttrs,this.attrs);this.dom.classList.add(\\\"cm-line\\\");this.prevAttrs=undefined;}super.sync(view,track);let last=this.dom.lastChild;while(last&&ContentView.get(last)instanceof MarkView)last=last.lastChild;if(!last||!this.length||last.nodeName!=\\\"BR\\\"&&((_a=ContentView.get(last))===null||_a===void 0?void 0:_a.isEditable)==false&&(!browser.ios||!this.children.some(ch=>ch instanceof TextView))){let hack=document.createElement(\\\"BR\\\");hack.cmIgnore=true;this.dom.appendChild(hack);}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let totalWidth=0,textHeight;for(let _i43=0,_this$children7=this.children,_length43=_this$children7.length;_i43\u003C_length43;_i43++){let child=_this$children7[_i43];if(!(child instanceof TextView)||/[^ -~]/.test(child.text))return null;let rects=clientRectsFor(child.dom);if(rects.length!=1)return null;totalWidth+=rects[0].width;textHeight=rects[0].height;}return!totalWidth?null:{lineHeight:this.dom.getBoundingClientRect().height,charWidth:totalWidth/this.length,textHeight};}coordsAt(pos,side){let rect=coordsInChildren(this,pos,side);if(!this.children.length&&rect&&this.parent){let{heightOracle}=this.parent.view.viewState,height=rect.bottom-rect.top;if(Math.abs(height-heightOracle.lineHeight)\u003C2&&heightOracle.textHeight\u003Cheight){let dist=(height-heightOracle.textHeight)/2;return{top:rect.top+dist,bottom:rect.bottom-dist,left:rect.left,right:rect.left};}}return rect;}become(_other){return false;}covers(){return true;}static find(docView,pos){for(let i=0,off=0;i\u003CdocView.children.length;i++){let block=docView.children[i],end=off+block.length;if(end>=pos){if(block instanceof LineView)return block;if(end>pos)break;}off=end+block.breakAfter;}return null;}}class BlockWidgetView extends ContentView{constructor(widget,length,deco){super();this.widget=widget;this.length=length;this.deco=deco;this.breakAfter=0;this.prevWidget=null;}merge(from,to,source,_takeDeco,openStart,openEnd){if(source&&(!(source instanceof BlockWidgetView)||!this.widget.compare(source.widget)||from>0&&openStart\u003C=0||to\u003Cthis.length&&openEnd\u003C=0))return false;this.length=from+(source?source.length:0)+(this.length-to);return true;}domAtPos(pos){return pos==0?DOMPos.before(this.dom):DOMPos.after(this.dom,pos==this.length);}split(at){let len=this.length-at;this.length=at;let end=new BlockWidgetView(this.widget,len,this.deco);end.breakAfter=this.breakAfter;return end;}get children(){return noChildren;}sync(view){if(!this.dom||!this.widget.updateDOM(this.dom,view)){if(this.dom&&this.prevWidget)this.prevWidget.destroy(this.dom);this.prevWidget=null;this.setDOM(this.widget.toDOM(view));if(!this.widget.editable)this.dom.contentEditable=\\\"false\\\";}}get overrideDOMText(){return this.parent?this.parent.view.state.doc.slice(this.posAtStart,this.posAtEnd):Text$1.empty;}domBoundsAround(){return null;}become(other){if(other instanceof BlockWidgetView&&other.widget.constructor==this.widget.constructor){if(!other.widget.compare(this.widget))this.markDirty(true);if(this.dom&&!this.prevWidget)this.prevWidget=this.widget;this.widget=other.widget;this.length=other.length;this.deco=other.deco;this.breakAfter=other.breakAfter;return true;}return false;}ignoreMutation(){return true;}ignoreEvent(event){return this.widget.ignoreEvent(event);}get isEditable(){return false;}get isWidget(){return true;}coordsAt(pos,side){return this.widget.coordsAt(this.dom,pos,side);}destroy(){super.destroy();if(this.dom)this.widget.destroy(this.dom);}covers(side){let{startSide,endSide}=this.deco;return startSide==endSide?false:side\u003C0?startSide\u003C0:endSide>0;}}class WidgetType{eq(widget){return false;}updateDOM(dom,view){return false;}compare(other){return this==other||this.constructor==other.constructor&&this.eq(other);}get estimatedHeight(){return-1;}get lineBreaks(){return 0;}ignoreEvent(event){return true;}coordsAt(dom,pos,side){return null;}get isHidden(){return false;}get editable(){return false;}destroy(dom){}}var BlockType=function(BlockType){BlockType[BlockType[\\\"Text\\\"]=0]=\\\"Text\\\";BlockType[BlockType[\\\"WidgetBefore\\\"]=1]=\\\"WidgetBefore\\\";BlockType[BlockType[\\\"WidgetAfter\\\"]=2]=\\\"WidgetAfter\\\";BlockType[BlockType[\\\"WidgetRange\\\"]=3]=\\\"WidgetRange\\\";return BlockType;}(BlockType||(BlockType={}));class Decoration extends RangeValue{constructor(startSide,endSide,widget,spec){super();this.startSide=startSide;this.endSide=endSide;this.widget=widget;this.spec=spec;}get heightRelevant(){return false;}static mark(spec){return new MarkDecoration(spec);}static widget(spec){let side=Math.max(-10000,Math.min(10000,spec.side||0)),block=!!spec.block;side+=block&&!spec.inlineOrder?side>0?300000000:-400000000:side>0?100000000:-100000000;return new PointDecoration(spec,side,side,block,spec.widget||null,false);}static replace(spec){let block=!!spec.block,startSide,endSide;if(spec.isBlockGap){startSide=-500000000;endSide=400000000;}else{let{start,end}=getInclusive(spec,block);startSide=(start?block?-300000000:-1:500000000)-1;endSide=(end?block?200000000:1:-600000000)+1;}return new PointDecoration(spec,startSide,endSide,block,spec.widget||null,true);}static line(spec){return new LineDecoration(spec);}static set(of,sort=false){return RangeSet.of(of,sort);}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:false;}}Decoration.none=RangeSet.empty;class MarkDecoration extends Decoration{constructor(spec){let{start,end}=getInclusive(spec);super(start?-1:500000000,end?1:-600000000,null,spec);this.tagName=spec.tagName||\\\"span\\\";this.class=spec.class||\\\"\\\";this.attrs=spec.attributes||null;}eq(other){var _a,_b;return this==other||other instanceof MarkDecoration&&this.tagName==other.tagName&&(this.class||((_a=this.attrs)===null||_a===void 0?void 0:_a.class))==(other.class||((_b=other.attrs)===null||_b===void 0?void 0:_b.class))&&attrsEq(this.attrs,other.attrs,\\\"class\\\");}range(from,to=from){if(from>=to)throw new RangeError(\\\"Mark decorations may not be empty\\\");return super.range(from,to);}}MarkDecoration.prototype.point=false;class LineDecoration extends Decoration{constructor(spec){super(-200000000,-200000000,null,spec);}eq(other){return other instanceof LineDecoration&&this.spec.class==other.spec.class&&attrsEq(this.spec.attributes,other.spec.attributes);}range(from,to=from){if(to!=from)throw new RangeError(\\\"Line decoration ranges must be zero-length\\\");return super.range(from,to);}}LineDecoration.prototype.mapMode=MapMode.TrackBefore;LineDecoration.prototype.point=true;class PointDecoration extends Decoration{constructor(spec,startSide,endSide,block,widget,isReplace){super(startSide,endSide,widget,spec);this.block=block;this.isReplace=isReplace;this.mapMode=!block?MapMode.TrackDel:startSide\u003C=0?MapMode.TrackBefore:MapMode.TrackAfter;}get type(){return this.startSide!=this.endSide?BlockType.WidgetRange:this.startSide\u003C=0?BlockType.WidgetBefore:BlockType.WidgetAfter;}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0);}eq(other){return other instanceof PointDecoration&&widgetsEq(this.widget,other.widget)&&this.block==other.block&&this.startSide==other.startSide&&this.endSide==other.endSide;}range(from,to=from){if(this.isReplace&&(from>to||from==to&&this.startSide>0&&this.endSide\u003C=0))throw new RangeError(\\\"Invalid range for replacement decoration\\\");if(!this.isReplace&&to!=from)throw new RangeError(\\\"Widget decorations can only have zero-length ranges\\\");return super.range(from,to);}}PointDecoration.prototype.point=true;function getInclusive(spec,block=false){let{inclusiveStart:start,inclusiveEnd:end}=spec;if(start==null)start=spec.inclusive;if(end==null)end=spec.inclusive;return{start:start!==null&&start!==void 0?start:block,end:end!==null&&end!==void 0?end:block};}function widgetsEq(a,b){return a==b||!!(a&&b&&a.compare(b));}function addRange(from,to,ranges,margin=0){let last=ranges.length-1;if(last>=0&&ranges[last]+margin>=from)ranges[last]=Math.max(ranges[last],to);else ranges.push(from,to);}class ContentBuilder{constructor(doc,pos,end,disallowBlockEffectsFor){this.doc=doc;this.pos=pos;this.end=end;this.disallowBlockEffectsFor=disallowBlockEffectsFor;this.content=[];this.curLine=null;this.breakAtStart=0;this.pendingBuffer=0;this.bufferMarks=[];this.atCursorPos=true;this.openStart=-1;this.openEnd=-1;this.text=\\\"\\\";this.textOff=0;this.cursor=doc.iter();this.skip=pos;}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let last=this.content[this.content.length-1];return!(last.breakAfter||last instanceof BlockWidgetView&&last.deco.endSide\u003C0);}getLine(){if(!this.curLine){this.content.push(this.curLine=new LineView());this.atCursorPos=true;}return this.curLine;}flushBuffer(active=this.bufferMarks){if(this.pendingBuffer){this.curLine.append(wrapMarks(new WidgetBufferView(-1),active),active.length);this.pendingBuffer=0;}}addBlockWidget(view){this.flushBuffer();this.curLine=null;this.content.push(view);}finish(openEnd){if(this.pendingBuffer&&openEnd\u003C=this.bufferMarks.length)this.flushBuffer();else this.pendingBuffer=0;if(!this.posCovered()&&!(openEnd&&this.content.length&&this.content[this.content.length-1]instanceof BlockWidgetView))this.getLine();}buildText(length,active,openStart){while(length>0){if(this.textOff==this.text.length){let{value,lineBreak,done}=this.cursor.next(this.skip);this.skip=0;if(done)throw new Error(\\\"Ran out of text content when drawing inline views\\\");if(lineBreak){if(!this.posCovered())this.getLine();if(this.content.length)this.content[this.content.length-1].breakAfter=1;else this.breakAtStart=1;this.flushBuffer();this.curLine=null;this.atCursorPos=true;length--;continue;}else{this.text=value;this.textOff=0;}}let take=Math.min(this.text.length-this.textOff,length,512);this.flushBuffer(active.slice(active.length-openStart));this.getLine().append(wrapMarks(new TextView(this.text.slice(this.textOff,this.textOff+take)),active),openStart);this.atCursorPos=true;this.textOff+=take;length-=take;openStart=0;}}span(from,to,active,openStart){this.buildText(to-from,active,openStart);this.pos=to;if(this.openStart\u003C0)this.openStart=openStart;}point(from,to,deco,active,openStart,index){if(this.disallowBlockEffectsFor[index]&&deco instanceof PointDecoration){if(deco.block)throw new RangeError(\\\"Block decorations may not be specified via plugins\\\");if(to>this.doc.lineAt(this.pos).to)throw new RangeError(\\\"Decorations that replace line breaks may not be specified via plugins\\\");}let len=to-from;if(deco instanceof PointDecoration){if(deco.block){if(deco.startSide>0&&!this.posCovered())this.getLine();this.addBlockWidget(new BlockWidgetView(deco.widget||NullWidget.block,len,deco));}else{let view=WidgetView.create(deco.widget||NullWidget.inline,len,len?0:deco.startSide);let cursorBefore=this.atCursorPos&&!view.isEditable&&openStart\u003C=active.length&&(from\u003Cto||deco.startSide>0);let cursorAfter=!view.isEditable&&(from\u003Cto||openStart>active.length||deco.startSide\u003C=0);let line=this.getLine();if(this.pendingBuffer==2&&!cursorBefore&&!view.isEditable)this.pendingBuffer=0;this.flushBuffer(active);if(cursorBefore){line.append(wrapMarks(new WidgetBufferView(1),active),openStart);openStart=active.length+Math.max(0,openStart-active.length);}line.append(wrapMarks(view,active),openStart);this.atCursorPos=cursorAfter;this.pendingBuffer=!cursorAfter?0:from\u003Cto||openStart>active.length?1:2;if(this.pendingBuffer)this.bufferMarks=active.slice();}}else if(this.doc.lineAt(this.pos).from==this.pos){this.getLine().addLineDeco(deco);}if(len){if(this.textOff+len\u003C=this.text.length){this.textOff+=len;}else{this.skip+=len-(this.text.length-this.textOff);this.text=\\\"\\\";this.textOff=0;}this.pos=to;}if(this.openStart\u003C0)this.openStart=openStart;}static build(text,from,to,decorations,dynamicDecorationMap){let builder=new ContentBuilder(text,from,to,dynamicDecorationMap);builder.openEnd=RangeSet.spans(decorations,from,to,builder);if(builder.openStart\u003C0)builder.openStart=builder.openEnd;builder.finish(builder.openEnd);return builder;}}function wrapMarks(view,active){for(let _i44=0,_length44=active.length;_i44\u003C_length44;_i44++){let mark=active[_i44];view=new MarkView(mark,[view],view.length);}return view;}class NullWidget extends WidgetType{constructor(tag){super();this.tag=tag;}eq(other){return other.tag==this.tag;}toDOM(){return document.createElement(this.tag);}updateDOM(elt){return elt.nodeName.toLowerCase()==this.tag;}get isHidden(){return true;}}NullWidget.inline=new NullWidget(\\\"span\\\");NullWidget.block=new NullWidget(\\\"div\\\");var Direction=function(Direction){Direction[Direction[\\\"LTR\\\"]=0]=\\\"LTR\\\";Direction[Direction[\\\"RTL\\\"]=1]=\\\"RTL\\\";return Direction;}(Direction||(Direction={}));const LTR=Direction.LTR,RTL=Direction.RTL;function dec(str){let result=[];for(let i=0;i\u003Cstr.length;i++)result.push(1\u003C\u003C+str[i]);return result;}const LowTypes=dec(\\\"88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008\\\");const ArabicTypes=dec(\\\"4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333\\\");const Brackets=Object.create(null),BracketStack=[];for(let _i45=0,_ref2=[\\\"()\\\",\\\"[]\\\",\\\"{}\\\"],_length45=_ref2.length;_i45\u003C_length45;_i45++){let p=_ref2[_i45];let l=p.charCodeAt(0),r=p.charCodeAt(1);Brackets[l]=r;Brackets[r]=-l;}function charType(ch){return ch\u003C=0xf7?LowTypes[ch]:0x590\u003C=ch&&ch\u003C=0x5f4?2:0x600\u003C=ch&&ch\u003C=0x6f9?ArabicTypes[ch-0x600]:0x6ee\u003C=ch&&ch\u003C=0x8ac?4:0x2000\u003C=ch&&ch\u003C=0x200c?256:0xfb50\u003C=ch&&ch\u003C=0xfdff?4:1;}const BidiRE=/[\\\\u0590-\\\\u05f4\\\\u0600-\\\\u06ff\\\\u0700-\\\\u08ac\\\\ufb50-\\\\ufdff]/;class BidiSpan{get dir(){return this.level%2?RTL:LTR;}constructor(from,to,level){this.from=from;this.to=to;this.level=level;}side(end,dir){return this.dir==dir==end?this.to:this.from;}forward(forward,dir){return forward==(this.dir==dir);}static find(order,index,level,assoc){let maybe=-1;for(let i=0;i\u003Corder.length;i++){let span=order[i];if(span.from\u003C=index&&span.to>=index){if(span.level==level)return i;if(maybe\u003C0||(assoc!=0?assoc\u003C0?span.from\u003Cindex:span.to>index:order[maybe].level>span.level))maybe=i;}}if(maybe\u003C0)throw new RangeError(\\\"Index out of range\\\");return maybe;}}function isolatesEq(a,b){if(a.length!=b.length)return false;for(let i=0;i\u003Ca.length;i++){let iA=a[i],iB=b[i];if(iA.from!=iB.from||iA.to!=iB.to||iA.direction!=iB.direction||!isolatesEq(iA.inner,iB.inner))return false;}return true;}const types=[];function computeCharTypes(line,rFrom,rTo,isolates,outerType){for(let iI=0;iI\u003C=isolates.length;iI++){let from=iI?isolates[iI-1].to:rFrom,to=iI\u003Cisolates.length?isolates[iI].from:rTo;let prevType=iI?256:outerType;for(let i=from,prev=prevType,prevStrong=prevType;i\u003Cto;i++){let type=charType(line.charCodeAt(i));if(type==512)type=prev;else if(type==8&&prevStrong==4)type=16;types[i]=type==4?2:type;if(type&7)prevStrong=type;prev=type;}for(let i=from,prev=prevType,prevStrong=prevType;i\u003Cto;i++){let type=types[i];if(type==128){if(i\u003Cto-1&&prev==types[i+1]&&prev&24)type=types[i]=prev;else types[i]=256;}else if(type==64){let end=i+1;while(end\u003Cto&&types[end]==64)end++;let replace=i&&prev==8||end\u003CrTo&&types[end]==8?prevStrong==1?1:8:256;for(let j=i;j\u003Cend;j++)types[j]=replace;i=end-1;}else if(type==8&&prevStrong==1){types[i]=1;}prev=type;if(type&7)prevStrong=type;}}}function processBracketPairs(line,rFrom,rTo,isolates,outerType){let oppositeType=outerType==1?2:1;for(let iI=0,sI=0,context=0;iI\u003C=isolates.length;iI++){let from=iI?isolates[iI-1].to:rFrom,to=iI\u003Cisolates.length?isolates[iI].from:rTo;for(let i=from,ch,br,type;i\u003Cto;i++){if(br=Brackets[ch=line.charCodeAt(i)]){if(br\u003C0){for(let sJ=sI-3;sJ>=0;sJ-=3){if(BracketStack[sJ+1]==-br){let flags=BracketStack[sJ+2];let type=flags&2?outerType:!(flags&4)?0:flags&1?oppositeType:outerType;if(type)types[i]=types[BracketStack[sJ]]=type;sI=sJ;break;}}}else if(BracketStack.length==189){break;}else{BracketStack[sI++]=i;BracketStack[sI++]=ch;BracketStack[sI++]=context;}}else if((type=types[i])==2||type==1){let embed=type==outerType;context=embed?0:1;for(let sJ=sI-3;sJ>=0;sJ-=3){let cur=BracketStack[sJ+2];if(cur&2)break;if(embed){BracketStack[sJ+2]|=2;}else{if(cur&4)break;BracketStack[sJ+2]|=4;}}}}}}function processNeutrals(rFrom,rTo,isolates,outerType){for(let iI=0,prev=outerType;iI\u003C=isolates.length;iI++){let from=iI?isolates[iI-1].to:rFrom,to=iI\u003Cisolates.length?isolates[iI].from:rTo;for(let i=from;i\u003Cto;){let type=types[i];if(type==256){let end=i+1;for(;;){if(end==to){if(iI==isolates.length)break;end=isolates[iI++].to;to=iI\u003Cisolates.length?isolates[iI].from:rTo;}else if(types[end]==256){end++;}else{break;}}let beforeL=prev==1;let afterL=(end\u003CrTo?types[end]:outerType)==1;let replace=beforeL==afterL?beforeL?1:2:outerType;for(let j=end,jI=iI,fromJ=jI?isolates[jI-1].to:rFrom;j>i;){if(j==fromJ){j=isolates[--jI].from;fromJ=jI?isolates[jI-1].to:rFrom;}types[--j]=replace;}i=end;}else{prev=type;i++;}}}}function emitSpans(line,from,to,level,baseLevel,isolates,order){let ourType=level%2?2:1;if(level%2==baseLevel%2){for(let iCh=from,iI=0;iCh\u003Cto;){let sameDir=true,isNum=false;if(iI==isolates.length||iCh\u003Cisolates[iI].from){let next=types[iCh];if(next!=ourType){sameDir=false;isNum=next==16;}}let recurse=!sameDir&&ourType==1?[]:null;let localLevel=sameDir?level:level+1;let iScan=iCh;run:for(;;){if(iI\u003Cisolates.length&&iScan==isolates[iI].from){if(isNum)break run;let iso=isolates[iI];if(!sameDir)for(let upto=iso.to,jI=iI+1;;){if(upto==to)break run;if(jI\u003Cisolates.length&&isolates[jI].from==upto)upto=isolates[jI++].to;else if(types[upto]==ourType)break run;else break;}iI++;if(recurse){recurse.push(iso);}else{if(iso.from>iCh)order.push(new BidiSpan(iCh,iso.from,localLevel));let dirSwap=iso.direction==LTR!=!(localLevel%2);computeSectionOrder(line,dirSwap?level+1:level,baseLevel,iso.inner,iso.from,iso.to,order);iCh=iso.to;}iScan=iso.to;}else if(iScan==to||(sameDir?types[iScan]!=ourType:types[iScan]==ourType)){break;}else{iScan++;}}if(recurse)emitSpans(line,iCh,iScan,level+1,baseLevel,recurse,order);else if(iCh\u003CiScan)order.push(new BidiSpan(iCh,iScan,localLevel));iCh=iScan;}}else{for(let iCh=to,iI=isolates.length;iCh>from;){let sameDir=true,isNum=false;if(!iI||iCh>isolates[iI-1].to){let next=types[iCh-1];if(next!=ourType){sameDir=false;isNum=next==16;}}let recurse=!sameDir&&ourType==1?[]:null;let localLevel=sameDir?level:level+1;let iScan=iCh;run:for(;;){if(iI&&iScan==isolates[iI-1].to){if(isNum)break run;let iso=isolates[--iI];if(!sameDir)for(let upto=iso.from,jI=iI;;){if(upto==from)break run;if(jI&&isolates[jI-1].to==upto)upto=isolates[--jI].from;else if(types[upto-1]==ourType)break run;else break;}if(recurse){recurse.push(iso);}else{if(iso.to\u003CiCh)order.push(new BidiSpan(iso.to,iCh,localLevel));let dirSwap=iso.direction==LTR!=!(localLevel%2);computeSectionOrder(line,dirSwap?level+1:level,baseLevel,iso.inner,iso.from,iso.to,order);iCh=iso.from;}iScan=iso.from;}else if(iScan==from||(sameDir?types[iScan-1]!=ourType:types[iScan-1]==ourType)){break;}else{iScan--;}}if(recurse)emitSpans(line,iScan,iCh,level+1,baseLevel,recurse,order);else if(iScan\u003CiCh)order.push(new BidiSpan(iScan,iCh,localLevel));iCh=iScan;}}}function computeSectionOrder(line,level,baseLevel,isolates,from,to,order){let outerType=level%2?2:1;computeCharTypes(line,from,to,isolates,outerType);processBracketPairs(line,from,to,isolates,outerType);processNeutrals(from,to,isolates,outerType);emitSpans(line,from,to,level,baseLevel,isolates,order);}function computeOrder(line,direction,isolates){if(!line)return[new BidiSpan(0,0,direction==RTL?1:0)];if(direction==LTR&&!isolates.length&&!BidiRE.test(line))return trivialOrder(line.length);if(isolates.length)while(line.length>types.length)types[types.length]=256;let order=[],level=direction==LTR?0:1;computeSectionOrder(line,level,level,isolates,0,line.length,order);return order;}function trivialOrder(length){return[new BidiSpan(0,length,0)];}let movedOver=\\\"\\\";function moveVisually(line,order,dir,start,forward){var _a;let startIndex=start.head-line.from;let spanI=BidiSpan.find(order,startIndex,(_a=start.bidiLevel)!==null&&_a!==void 0?_a:-1,start.assoc);let span=order[spanI],spanEnd=span.side(forward,dir);if(startIndex==spanEnd){let nextI=spanI+=forward?1:-1;if(nextI\u003C0||nextI>=order.length)return null;span=order[spanI=nextI];startIndex=span.side(!forward,dir);spanEnd=span.side(forward,dir);}let nextIndex=findClusterBreak(line.text,startIndex,span.forward(forward,dir));if(nextIndex\u003Cspan.from||nextIndex>span.to)nextIndex=spanEnd;movedOver=line.text.slice(Math.min(startIndex,nextIndex),Math.max(startIndex,nextIndex));let nextSpan=spanI==(forward?order.length-1:0)?null:order[spanI+(forward?1:-1)];if(nextSpan&&nextIndex==spanEnd&&nextSpan.level+(forward?0:1)\u003Cspan.level)return EditorSelection.cursor(nextSpan.side(!forward,dir)+line.from,nextSpan.forward(forward,dir)?1:-1,nextSpan.level);return EditorSelection.cursor(nextIndex+line.from,span.forward(forward,dir)?-1:1,span.level);}function autoDirection(text,from,to){for(let i=from;i\u003Cto;i++){let type=charType(text.charCodeAt(i));if(type==1)return LTR;if(type==2||type==4)return RTL;}return LTR;}const clickAddsSelectionRange=Facet.define();const dragMovesSelection$1=Facet.define();const mouseSelectionStyle=Facet.define();const exceptionSink=Facet.define();const updateListener=Facet.define();const inputHandler$1=Facet.define();const focusChangeEffect=Facet.define();const perLineTextDirection=Facet.define({combine:values=>values.some(x=>x)});const nativeSelectionHidden=Facet.define({combine:values=>values.some(x=>x)});class ScrollTarget{constructor(range,y=\\\"nearest\\\",x=\\\"nearest\\\",yMargin=5,xMargin=5,isSnapshot=false){this.range=range;this.y=y;this.x=x;this.yMargin=yMargin;this.xMargin=xMargin;this.isSnapshot=isSnapshot;}map(changes){return changes.empty?this:new ScrollTarget(this.range.map(changes),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot);}clip(state){return this.range.to\u003C=state.doc.length?this:new ScrollTarget(EditorSelection.cursor(state.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot);}}const scrollIntoView$1=StateEffect.define({map:(t,ch)=>t.map(ch)});function logException(state,exception,context){let handler=state.facet(exceptionSink);if(handler.length)handler[0](exception);else if(window.onerror)window.onerror(String(exception),context,undefined,undefined,exception);else if(context)console.error(context+\\\":\\\",exception);else console.error(exception);}const editable=Facet.define({combine:values=>values.length?values[0]:true});let nextPluginID=0;const viewPlugin=Facet.define();class ViewPlugin{constructor(id,create,domEventHandlers,domEventObservers,buildExtensions){this.id=id;this.create=create;this.domEventHandlers=domEventHandlers;this.domEventObservers=domEventObservers;this.extension=buildExtensions(this);}static define(create,spec){const{eventHandlers,eventObservers,provide,decorations:deco}=spec||{};return new ViewPlugin(nextPluginID++,create,eventHandlers,eventObservers,plugin=>{let ext=[viewPlugin.of(plugin)];if(deco)ext.push(decorations.of(view=>{let pluginInst=view.plugin(plugin);return pluginInst?deco(pluginInst):Decoration.none;}));if(provide)ext.push(provide(plugin));return ext;});}static fromClass(cls,spec){return ViewPlugin.define(view=>new cls(view),spec);}}class PluginInstance{constructor(spec){this.spec=spec;this.mustUpdate=null;this.value=null;}update(view){if(!this.value){if(this.spec){try{this.value=this.spec.create(view);}catch(e){logException(view.state,e,\\\"CodeMirror plugin crashed\\\");this.deactivate();}}}else if(this.mustUpdate){let update=this.mustUpdate;this.mustUpdate=null;if(this.value.update){try{this.value.update(update);}catch(e){logException(update.state,e,\\\"CodeMirror plugin crashed\\\");if(this.value.destroy)try{this.value.destroy();}catch(_){}this.deactivate();}}}return this;}destroy(view){var _a;if((_a=this.value)===null||_a===void 0?void 0:_a.destroy){try{this.value.destroy();}catch(e){logException(view.state,e,\\\"CodeMirror plugin crashed\\\");}}}deactivate(){this.spec=this.value=null;}}const editorAttributes=Facet.define();const contentAttributes=Facet.define();const decorations=Facet.define();const outerDecorations=Facet.define();const atomicRanges=Facet.define();const bidiIsolatedRanges=Facet.define();function getIsolatedRanges(view,line){let isolates=view.state.facet(bidiIsolatedRanges);if(!isolates.length)return isolates;let sets=isolates.map(i=>i instanceof Function?i(view):i);let result=[];RangeSet.spans(sets,line.from,line.to,{point(){},span(fromDoc,toDoc,active,open){let from=fromDoc-line.from,to=toDoc-line.from;let level=result;for(let i=active.length-1;i>=0;i--,open--){let direction=active[i].spec.bidiIsolate,update;if(direction==null)direction=autoDirection(line.text,from,to);if(open>0&&level.length&&(update=level[level.length-1]).to==from&&update.direction==direction){update.to=to;level=update.inner;}else{let add={from,to,direction,inner:[]};level.push(add);level=add.inner;}}}});return result;}const scrollMargins=Facet.define();function getScrollMargins(view){let left=0,right=0,top=0,bottom=0;for(let _i46=0,_view$state$facet=view.state.facet(scrollMargins),_length46=_view$state$facet.length;_i46\u003C_length46;_i46++){let source=_view$state$facet[_i46];let m=source(view);if(m){if(m.left!=null)left=Math.max(left,m.left);if(m.right!=null)right=Math.max(right,m.right);if(m.top!=null)top=Math.max(top,m.top);if(m.bottom!=null)bottom=Math.max(bottom,m.bottom);}}return{left,right,top,bottom};}const styleModule=Facet.define();class ChangedRange{constructor(fromA,toA,fromB,toB){this.fromA=fromA;this.toA=toA;this.fromB=fromB;this.toB=toB;}join(other){return new ChangedRange(Math.min(this.fromA,other.fromA),Math.max(this.toA,other.toA),Math.min(this.fromB,other.fromB),Math.max(this.toB,other.toB));}addToSet(set){let i=set.length,me=this;for(;i>0;i--){let range=set[i-1];if(range.fromA>me.toA)continue;if(range.toA\u003Cme.fromA)break;me=me.join(range);set.splice(i-1,1);}set.splice(i,0,me);return set;}static extendWithRanges(diff,ranges){if(ranges.length==0)return diff;let result=[];for(let dI=0,rI=0,posA=0,posB=0;;dI++){let next=dI==diff.length?null:diff[dI],off=posA-posB;let end=next?next.fromB:1e9;while(rI\u003Cranges.length&&ranges[rI]\u003Cend){let from=ranges[rI],to=ranges[rI+1];let fromB=Math.max(posB,from),toB=Math.min(end,to);if(fromB\u003C=toB)new ChangedRange(fromB+off,toB+off,fromB,toB).addToSet(result);if(to>end)break;else rI+=2;}if(!next)return result;new ChangedRange(next.fromA,next.toA,next.fromB,next.toB).addToSet(result);posA=next.toA;posB=next.toB;}}}class ViewUpdate{constructor(view,state,transactions){this.view=view;this.state=state;this.transactions=transactions;this.flags=0;this.startState=view.state;this.changes=ChangeSet.empty(this.startState.doc.length);for(let _i47=0,_length47=transactions.length;_i47\u003C_length47;_i47++){let tr=transactions[_i47];this.changes=this.changes.compose(tr.changes);}let changedRanges=[];this.changes.iterChangedRanges((fromA,toA,fromB,toB)=>changedRanges.push(new ChangedRange(fromA,toA,fromB,toB)));this.changedRanges=changedRanges;}static create(view,state,transactions){return new ViewUpdate(view,state,transactions);}get viewportChanged(){return(this.flags&4)>0;}get heightChanged(){return(this.flags&2)>0;}get geometryChanged(){return this.docChanged||(this.flags&(8|2))>0;}get focusChanged(){return(this.flags&1)>0;}get docChanged(){return!this.changes.empty;}get selectionSet(){return this.transactions.some(tr=>tr.selection);}get empty(){return this.flags==0&&this.transactions.length==0;}}class DocView extends ContentView{get length(){return this.view.state.doc.length;}constructor(view){super();this.view=view;this.decorations=[];this.dynamicDecorationMap=[false];this.domChanged=null;this.hasComposition=null;this.markedForComposition=new Set();this.compositionBarrier=Decoration.none;this.minWidth=0;this.minWidthFrom=0;this.minWidthTo=0;this.impreciseAnchor=null;this.impreciseHead=null;this.forceSelection=false;this.lastUpdate=Date.now();this.setDOM(view.contentDOM);this.children=[new LineView()];this.children[0].setParent(this);this.updateDeco();this.updateInner([new ChangedRange(0,0,0,view.state.doc.length)],0,null);}update(update){var _a;let changedRanges=update.changedRanges;if(this.minWidth>0&&changedRanges.length){if(!changedRanges.every(({fromA,toA})=>toA\u003Cthis.minWidthFrom||fromA>this.minWidthTo)){this.minWidth=this.minWidthFrom=this.minWidthTo=0;}else{this.minWidthFrom=update.changes.mapPos(this.minWidthFrom,1);this.minWidthTo=update.changes.mapPos(this.minWidthTo,1);}}let readCompositionAt=-1;if(this.view.inputState.composing>=0){if((_a=this.domChanged)===null||_a===void 0?void 0:_a.newSel)readCompositionAt=this.domChanged.newSel.head;else if(!touchesComposition(update.changes,this.hasComposition)&&!update.selectionSet)readCompositionAt=update.state.selection.main.head;}let composition=readCompositionAt>-1?findCompositionRange(this.view,update.changes,readCompositionAt):null;this.domChanged=null;if(this.hasComposition){this.markedForComposition.clear();let{from,to}=this.hasComposition;changedRanges=new ChangedRange(from,to,update.changes.mapPos(from,-1),update.changes.mapPos(to,1)).addToSet(changedRanges.slice());}this.hasComposition=composition?{from:composition.range.fromB,to:composition.range.toB}:null;if((browser.ie||browser.chrome)&&!composition&&update&&update.state.doc.lines!=update.startState.doc.lines)this.forceSelection=true;let prevDeco=this.decorations,deco=this.updateDeco();let decoDiff=findChangedDeco(prevDeco,deco,update.changes);changedRanges=ChangedRange.extendWithRanges(changedRanges,decoDiff);if(!(this.flags&7)&&changedRanges.length==0){return false;}else{this.updateInner(changedRanges,update.startState.doc.length,composition);if(update.transactions.length)this.lastUpdate=Date.now();return true;}}updateInner(changes,oldLength,composition){this.view.viewState.mustMeasureContent=true;this.updateChildren(changes,oldLength,composition);let{observer}=this.view;observer.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+\\\"px\\\";this.dom.style.flexBasis=this.minWidth?this.minWidth+\\\"px\\\":\\\"\\\";let track=browser.chrome||browser.ios?{node:observer.selectionRange.focusNode,written:false}:undefined;this.sync(this.view,track);this.flags&=~7;if(track&&(track.written||observer.selectionRange.focusNode!=track.node))this.forceSelection=true;this.dom.style.height=\\\"\\\";});this.markedForComposition.forEach(cView=>cView.flags&=~8);let gaps=[];if(this.view.viewport.from||this.view.viewport.to\u003Cthis.view.state.doc.length)for(let _i48=0,_this$children8=this.children,_length48=_this$children8.length;_i48\u003C_length48;_i48++){let child=_this$children8[_i48];if(child instanceof BlockWidgetView&&child.widget instanceof BlockGapWidget)gaps.push(child.dom);}observer.updateGaps(gaps);}updateChildren(changes,oldLength,composition){let ranges=composition?composition.range.addToSet(changes.slice()):changes;let cursor=this.childCursor(oldLength);for(let i=ranges.length-1;;i--){let next=i>=0?ranges[i]:null;if(!next)break;let{fromA,toA,fromB,toB}=next,content,breakAtStart,openStart,openEnd;if(composition&&composition.range.fromB\u003CtoB&&composition.range.toB>fromB){let before=ContentBuilder.build(this.view.state.doc,fromB,composition.range.fromB,this.decorations,this.dynamicDecorationMap);let after=ContentBuilder.build(this.view.state.doc,composition.range.toB,toB,this.decorations,this.dynamicDecorationMap);breakAtStart=before.breakAtStart;openStart=before.openStart;openEnd=after.openEnd;let compLine=this.compositionView(composition);if(after.breakAtStart){compLine.breakAfter=1;}else if(after.content.length&&compLine.merge(compLine.length,compLine.length,after.content[0],false,after.openStart,0)){compLine.breakAfter=after.content[0].breakAfter;after.content.shift();}if(before.content.length&&compLine.merge(0,0,before.content[before.content.length-1],true,0,before.openEnd)){before.content.pop();}content=before.content.concat(compLine).concat(after.content);}else{({content,breakAtStart,openStart,openEnd}=ContentBuilder.build(this.view.state.doc,fromB,toB,this.decorations,this.dynamicDecorationMap));}let{i:toI,off:toOff}=cursor.findPos(toA,1);let{i:fromI,off:fromOff}=cursor.findPos(fromA,-1);replaceRange(this,fromI,fromOff,toI,toOff,content,breakAtStart,openStart,openEnd);}if(composition)this.fixCompositionDOM(composition);}compositionView(composition){let cur=new TextView(composition.text.nodeValue);cur.flags|=8;for(let _i49=0,_composition$marks=composition.marks,_length49=_composition$marks.length;_i49\u003C_length49;_i49++){let{deco}=_composition$marks[_i49];cur=new MarkView(deco,[cur],cur.length);}let line=new LineView();line.append(cur,0);return line;}fixCompositionDOM(composition){let fix=(dom,cView)=>{cView.flags|=8|(cView.children.some(c=>c.flags&7)?1:0);this.markedForComposition.add(cView);let prev=ContentView.get(dom);if(prev&&prev!=cView)prev.dom=null;cView.setDOM(dom);};let pos=this.childPos(composition.range.fromB,1);let cView=this.children[pos.i];fix(composition.line,cView);for(let i=composition.marks.length-1;i>=-1;i--){pos=cView.childPos(pos.off,1);cView=cView.children[pos.i];fix(i>=0?composition.marks[i].node:composition.text,cView);}}updateSelection(mustRead=false,fromPointer=false){if(mustRead||!this.view.observer.selectionRange.focusNode)this.view.observer.readSelectionRange();let activeElt=this.view.root.activeElement,focused=activeElt==this.dom;let selectionNotFocus=!focused&&hasSelection(this.dom,this.view.observer.selectionRange)&&!(activeElt&&this.dom.contains(activeElt));if(!(focused||fromPointer||selectionNotFocus))return;let force=this.forceSelection;this.forceSelection=false;let main=this.view.state.selection.main;let anchor=this.moveToLine(this.domAtPos(main.anchor));let head=main.empty?anchor:this.moveToLine(this.domAtPos(main.head));if(browser.gecko&&main.empty&&!this.hasComposition&&betweenUneditable(anchor)){let dummy=document.createTextNode(\\\"\\\");this.view.observer.ignore(()=>anchor.node.insertBefore(dummy,anchor.node.childNodes[anchor.offset]||null));anchor=head=new DOMPos(dummy,0);force=true;}let domSel=this.view.observer.selectionRange;if(force||!domSel.focusNode||(!isEquivalentPosition(anchor.node,anchor.offset,domSel.anchorNode,domSel.anchorOffset)||!isEquivalentPosition(head.node,head.offset,domSel.focusNode,domSel.focusOffset))&&!this.suppressWidgetCursorChange(domSel,main)){this.view.observer.ignore(()=>{if(browser.android&&browser.chrome&&this.dom.contains(domSel.focusNode)&&inUneditable(domSel.focusNode,this.dom)){this.dom.blur();this.dom.focus({preventScroll:true});}let rawSel=getSelection(this.view.root);if(!rawSel);else if(main.empty){if(browser.gecko){let nextTo=nextToUneditable(anchor.node,anchor.offset);if(nextTo&&nextTo!=(1|2)){let text=nearbyTextNode(anchor.node,anchor.offset,nextTo==1?1:-1);if(text)anchor=new DOMPos(text.node,text.offset);}}rawSel.collapse(anchor.node,anchor.offset);if(main.bidiLevel!=null&&rawSel.caretBidiLevel!==undefined)rawSel.caretBidiLevel=main.bidiLevel;}else if(rawSel.extend){rawSel.collapse(anchor.node,anchor.offset);try{rawSel.extend(head.node,head.offset);}catch(_){}}else{let range=document.createRange();if(main.anchor>main.head)[anchor,head]=[head,anchor];range.setEnd(head.node,head.offset);range.setStart(anchor.node,anchor.offset);rawSel.removeAllRanges();rawSel.addRange(range);}if(selectionNotFocus&&this.view.root.activeElement==this.dom){this.dom.blur();if(activeElt)activeElt.focus();}});this.view.observer.setSelectionRange(anchor,head);}this.impreciseAnchor=anchor.precise?null:new DOMPos(domSel.anchorNode,domSel.anchorOffset);this.impreciseHead=head.precise?null:new DOMPos(domSel.focusNode,domSel.focusOffset);}suppressWidgetCursorChange(sel,cursor){return this.hasComposition&&cursor.empty&&!this.compositionBarrier.size&&isEquivalentPosition(sel.focusNode,sel.focusOffset,sel.anchorNode,sel.anchorOffset)&&this.posFromDOM(sel.focusNode,sel.focusOffset)==cursor.head;}enforceCursorAssoc(){if(this.hasComposition)return;let{view}=this,cursor=view.state.selection.main;let sel=getSelection(view.root);let{anchorNode,anchorOffset}=view.observer.selectionRange;if(!sel||!cursor.empty||!cursor.assoc||!sel.modify)return;let line=LineView.find(this,cursor.head);if(!line)return;let lineStart=line.posAtStart;if(cursor.head==lineStart||cursor.head==lineStart+line.length)return;let before=this.coordsAt(cursor.head,-1),after=this.coordsAt(cursor.head,1);if(!before||!after||before.bottom>after.top)return;let dom=this.domAtPos(cursor.head+cursor.assoc);sel.collapse(dom.node,dom.offset);sel.modify(\\\"move\\\",cursor.assoc\u003C0?\\\"forward\\\":\\\"backward\\\",\\\"lineboundary\\\");view.observer.readSelectionRange();let newRange=view.observer.selectionRange;if(view.docView.posFromDOM(newRange.anchorNode,newRange.anchorOffset)!=cursor.from)sel.collapse(anchorNode,anchorOffset);}moveToLine(pos){let dom=this.dom,newPos;if(pos.node!=dom)return pos;for(let i=pos.offset;!newPos&&i\u003Cdom.childNodes.length;i++){let view=ContentView.get(dom.childNodes[i]);if(view instanceof LineView)newPos=view.domAtPos(0);}for(let i=pos.offset-1;!newPos&&i>=0;i--){let view=ContentView.get(dom.childNodes[i]);if(view instanceof LineView)newPos=view.domAtPos(view.length);}return newPos?new DOMPos(newPos.node,newPos.offset,true):pos;}nearest(dom){for(let cur=dom;cur;){let domView=ContentView.get(cur);if(domView&&domView.rootView==this)return domView;cur=cur.parentNode;}return null;}posFromDOM(node,offset){let view=this.nearest(node);if(!view)throw new RangeError(\\\"Trying to find position for a DOM position outside of the document\\\");return view.localPosFromDOM(node,offset)+view.posAtStart;}domAtPos(pos){let{i,off}=this.childCursor().findPos(pos,-1);for(;i\u003Cthis.children.length-1;){let child=this.children[i];if(off\u003Cchild.length||child instanceof LineView)break;i++;off=0;}return this.children[i].domAtPos(off);}coordsAt(pos,side){let best=null,bestPos=0;for(let off=this.length,i=this.children.length-1;i>=0;i--){let child=this.children[i],end=off-child.breakAfter,start=end-child.length;if(end\u003Cpos)break;if(start\u003C=pos&&(start\u003Cpos||child.covers(-1))&&(end>pos||child.covers(1))&&(!best||child instanceof LineView&&!(best instanceof LineView&&side>=0))){best=child;bestPos=start;}off=start;}return best?best.coordsAt(pos-bestPos,side):null;}coordsForChar(pos){let{i,off}=this.childPos(pos,1),child=this.children[i];if(!(child instanceof LineView))return null;while(child.children.length){let{i,off:childOff}=child.childPos(off,1);for(;;i++){if(i==child.children.length)return null;if((child=child.children[i]).length)break;}off=childOff;}if(!(child instanceof TextView))return null;let end=findClusterBreak(child.text,off);if(end==off)return null;let rects=textRange(child.dom,off,end).getClientRects();for(let i=0;i\u003Crects.length;i++){let rect=rects[i];if(i==rects.length-1||rect.top\u003Crect.bottom&&rect.left\u003Crect.right)return rect;}return null;}measureVisibleLineHeights(viewport){let result=[],{from,to}=viewport;let contentWidth=this.view.contentDOM.clientWidth;let isWider=contentWidth>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1;let widest=-1,ltr=this.view.textDirection==Direction.LTR;for(let pos=0,i=0;i\u003Cthis.children.length;i++){let child=this.children[i],end=pos+child.length;if(end>to)break;if(pos>=from){let childRect=child.dom.getBoundingClientRect();result.push(childRect.height);if(isWider){let last=child.dom.lastChild;let rects=last?clientRectsFor(last):[];if(rects.length){let rect=rects[rects.length-1];let width=ltr?rect.right-childRect.left:childRect.right-rect.left;if(width>widest){widest=width;this.minWidth=contentWidth;this.minWidthFrom=pos;this.minWidthTo=end;}}}}pos=end+child.breakAfter;}return result;}textDirectionAt(pos){let{i}=this.childPos(pos,1);return getComputedStyle(this.children[i].dom).direction==\\\"rtl\\\"?Direction.RTL:Direction.LTR;}measureTextSize(){for(let _i50=0,_this$children9=this.children,_length50=_this$children9.length;_i50\u003C_length50;_i50++){let child=_this$children9[_i50];if(child instanceof LineView){let measure=child.measureTextSize();if(measure)return measure;}}let dummy=document.createElement(\\\"div\\\"),lineHeight,charWidth,textHeight;dummy.className=\\\"cm-line\\\";dummy.style.width=\\\"99999px\\\";dummy.style.position=\\\"absolute\\\";dummy.textContent=\\\"abc def ghi jkl mno pqr stu\\\";this.view.observer.ignore(()=>{this.dom.appendChild(dummy);let rect=clientRectsFor(dummy.firstChild)[0];lineHeight=dummy.getBoundingClientRect().height;charWidth=rect?rect.width/27:7;textHeight=rect?rect.height:lineHeight;dummy.remove();});return{lineHeight,charWidth,textHeight};}childCursor(pos=this.length){let i=this.children.length;if(i)pos-=this.children[--i].length;return new ChildCursor(this.children,pos,i);}computeBlockGapDeco(){let deco=[],vs=this.view.viewState;for(let pos=0,i=0;;i++){let next=i==vs.viewports.length?null:vs.viewports[i];let end=next?next.from-1:this.length;if(end>pos){let height=(vs.lineBlockAt(end).bottom-vs.lineBlockAt(pos).top)/this.view.scaleY;deco.push(Decoration.replace({widget:new BlockGapWidget(height),block:true,inclusive:true,isBlockGap:true}).range(pos,end));}if(!next)break;pos=next.to+1;}return Decoration.set(deco);}updateDeco(){let i=1;let allDeco=this.view.state.facet(decorations).map(d=>{let dynamic=this.dynamicDecorationMap[i++]=typeof d==\\\"function\\\";return dynamic?d(this.view):d;});let dynamicOuter=false,outerDeco=this.view.state.facet(outerDecorations).map((d,i)=>{let dynamic=typeof d==\\\"function\\\";if(dynamic)dynamicOuter=true;return dynamic?d(this.view):d;});if(outerDeco.length){this.dynamicDecorationMap[i++]=dynamicOuter;allDeco.push(RangeSet.join(outerDeco));}this.decorations=[this.compositionBarrier,...allDeco,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];while(i\u003Cthis.decorations.length)this.dynamicDecorationMap[i++]=false;return this.decorations;}maybeCreateCompositionBarrier(){let{main:{head,empty}}=this.view.state.selection;if(!empty)return false;let found=null;for(let _i51=0,_this$decorations=this.decorations,_length51=_this$decorations.length;_i51\u003C_length51;_i51++){let set=_this$decorations[_i51];set.between(head,head,(from,to,value)=>{if(value.point)found=false;else if(value.endSide\u003C0&&from\u003Chead&&to==head)found=true;});if(found===false)break;}this.compositionBarrier=found?Decoration.set(compositionBarrierWidget.range(head)):Decoration.none;return!!found;}clearCompositionBarrier(){this.compositionBarrier=Decoration.none;}scrollIntoView(target){if(target.isSnapshot){let ref=this.view.viewState.lineBlockAt(target.range.head);this.view.scrollDOM.scrollTop=ref.top-target.yMargin;this.view.scrollDOM.scrollLeft=target.xMargin;return;}let{range}=target;let rect=this.coordsAt(range.head,range.empty?range.assoc:range.head>range.anchor?-1:1),other;if(!rect)return;if(!range.empty&&(other=this.coordsAt(range.anchor,range.anchor>range.head?-1:1)))rect={left:Math.min(rect.left,other.left),top:Math.min(rect.top,other.top),right:Math.max(rect.right,other.right),bottom:Math.max(rect.bottom,other.bottom)};let margins=getScrollMargins(this.view);let targetRect={left:rect.left-margins.left,top:rect.top-margins.top,right:rect.right+margins.right,bottom:rect.bottom+margins.bottom};let{offsetWidth,offsetHeight}=this.view.scrollDOM;scrollRectIntoView(this.view.scrollDOM,targetRect,range.head\u003Crange.anchor?-1:1,target.x,target.y,Math.max(Math.min(target.xMargin,offsetWidth),-offsetWidth),Math.max(Math.min(target.yMargin,offsetHeight),-offsetHeight),this.view.textDirection==Direction.LTR);}}const compositionBarrierWidget=Decoration.widget({side:-1,widget:NullWidget.inline});function betweenUneditable(pos){return pos.node.nodeType==1&&pos.node.firstChild&&(pos.offset==0||pos.node.childNodes[pos.offset-1].contentEditable==\\\"false\\\")&&(pos.offset==pos.node.childNodes.length||pos.node.childNodes[pos.offset].contentEditable==\\\"false\\\");}class BlockGapWidget extends WidgetType{constructor(height){super();this.height=height;}toDOM(){let elt=document.createElement(\\\"div\\\");elt.className=\\\"cm-gap\\\";this.updateDOM(elt);return elt;}eq(other){return other.height==this.height;}updateDOM(elt){elt.style.height=this.height+\\\"px\\\";return true;}get editable(){return true;}get estimatedHeight(){return this.height;}ignoreEvent(){return false;}}function findCompositionNode(view,headPos){let sel=view.observer.selectionRange;let textNode=sel.focusNode&&nearbyTextNode(sel.focusNode,sel.focusOffset,0);if(!textNode)return null;let from=headPos-textNode.offset;return{from,to:from+textNode.node.nodeValue.length,node:textNode.node};}function findCompositionRange(view,changes,headPos){let found=findCompositionNode(view,headPos);if(!found)return null;let{node:textNode,from,to}=found,text=textNode.nodeValue;if(/[\\\\n\\\\r]/.test(text))return null;if(view.state.doc.sliceString(found.from,found.to)!=text)return null;let inv=changes.invertedDesc;let range=new ChangedRange(inv.mapPos(from),inv.mapPos(to),from,to);let marks=[];for(let parent=textNode.parentNode;;parent=parent.parentNode){let parentView=ContentView.get(parent);if(parentView instanceof MarkView)marks.push({node:parent,deco:parentView.mark});else if(parentView instanceof LineView||parent.nodeName==\\\"DIV\\\"&&parent.parentNode==view.contentDOM)return{range,text:textNode,marks,line:parent};else if(parent!=view.contentDOM)marks.push({node:parent,deco:new MarkDecoration({inclusive:true,attributes:getAttrs$1(parent),tagName:parent.tagName.toLowerCase()})});else return null;}}function nearbyTextNode(startNode,startOffset,side){if(side\u003C=0)for(let node=startNode,offset=startOffset;;){if(node.nodeType==3)return{node:node,offset:offset};if(node.nodeType==1&&offset>0){node=node.childNodes[offset-1];offset=maxOffset(node);}else{break;}}if(side>=0)for(let node=startNode,offset=startOffset;;){if(node.nodeType==3)return{node:node,offset:offset};if(node.nodeType==1&&offset\u003Cnode.childNodes.length&&side>=0){node=node.childNodes[offset];offset=0;}else{break;}}return null;}function nextToUneditable(node,offset){if(node.nodeType!=1)return 0;return(offset&&node.childNodes[offset-1].contentEditable==\\\"false\\\"?1:0)|(offset\u003Cnode.childNodes.length&&node.childNodes[offset].contentEditable==\\\"false\\\"?2:0);}let DecorationComparator$1=class DecorationComparator{constructor(){this.changes=[];}compareRange(from,to){addRange(from,to,this.changes);}comparePoint(from,to){addRange(from,to,this.changes);}};function findChangedDeco(a,b,diff){let comp=new DecorationComparator$1();RangeSet.compare(a,b,diff,comp);return comp.changes;}function inUneditable(node,inside){for(let cur=node;cur&&cur!=inside;cur=cur.assignedSlot||cur.parentNode){if(cur.nodeType==1&&cur.contentEditable=='false'){return true;}}return false;}function touchesComposition(changes,composition){let touched=false;if(composition)changes.iterChangedRanges((from,to)=>{if(from\u003Ccomposition.to&&to>composition.from)touched=true;});return touched;}function groupAt(state,pos,bias=1){let categorize=state.charCategorizer(pos);let line=state.doc.lineAt(pos),linePos=pos-line.from;if(line.length==0)return EditorSelection.cursor(pos);if(linePos==0)bias=1;else if(linePos==line.length)bias=-1;let from=linePos,to=linePos;if(bias\u003C0)from=findClusterBreak(line.text,linePos,false);else to=findClusterBreak(line.text,linePos);let cat=categorize(line.text.slice(from,to));while(from>0){let prev=findClusterBreak(line.text,from,false);if(categorize(line.text.slice(prev,from))!=cat)break;from=prev;}while(to\u003Cline.length){let next=findClusterBreak(line.text,to);if(categorize(line.text.slice(to,next))!=cat)break;to=next;}return EditorSelection.range(from+line.from,to+line.from);}function getdx(x,rect){return rect.left>x?rect.left-x:Math.max(0,x-rect.right);}function getdy(y,rect){return rect.top>y?rect.top-y:Math.max(0,y-rect.bottom);}function yOverlap(a,b){return a.top\u003Cb.bottom-1&&a.bottom>b.top+1;}function upTop(rect,top){return top\u003Crect.top?{top,left:rect.left,right:rect.right,bottom:rect.bottom}:rect;}function upBot(rect,bottom){return bottom>rect.bottom?{top:rect.top,left:rect.left,right:rect.right,bottom}:rect;}function domPosAtCoords(parent,x,y){let closest,closestRect,closestX,closestY,closestOverlap=false;let above,below,aboveRect,belowRect;for(let child=parent.firstChild;child;child=child.nextSibling){let rects=clientRectsFor(child);for(let i=0;i\u003Crects.length;i++){let rect=rects[i];if(closestRect&&yOverlap(closestRect,rect))rect=upTop(upBot(rect,closestRect.bottom),closestRect.top);let dx=getdx(x,rect),dy=getdy(y,rect);if(dx==0&&dy==0)return child.nodeType==3?domPosInText(child,x,y):domPosAtCoords(child,x,y);if(!closest||closestY>dy||closestY==dy&&closestX>dx){closest=child;closestRect=rect;closestX=dx;closestY=dy;let side=dy?y\u003Crect.top?-1:1:dx?x\u003Crect.left?-1:1:0;closestOverlap=!side||(side>0?i\u003Crects.length-1:i>0);}if(dx==0){if(y>rect.bottom&&(!aboveRect||aboveRect.bottom\u003Crect.bottom)){above=child;aboveRect=rect;}else if(y\u003Crect.top&&(!belowRect||belowRect.top>rect.top)){below=child;belowRect=rect;}}else if(aboveRect&&yOverlap(aboveRect,rect)){aboveRect=upBot(aboveRect,rect.bottom);}else if(belowRect&&yOverlap(belowRect,rect)){belowRect=upTop(belowRect,rect.top);}}}if(aboveRect&&aboveRect.bottom>=y){closest=above;closestRect=aboveRect;}else if(belowRect&&belowRect.top\u003C=y){closest=below;closestRect=belowRect;}if(!closest)return{node:parent,offset:0};let clipX=Math.max(closestRect.left,Math.min(closestRect.right,x));if(closest.nodeType==3)return domPosInText(closest,clipX,y);if(closestOverlap&&closest.contentEditable!=\\\"false\\\")return domPosAtCoords(closest,clipX,y);let offset=Array.prototype.indexOf.call(parent.childNodes,closest)+(x>=(closestRect.left+closestRect.right)/2?1:0);return{node:parent,offset};}function domPosInText(node,x,y){let len=node.nodeValue.length;let closestOffset=-1,closestDY=1e9,generalSide=0;for(let i=0;i\u003Clen;i++){let rects=textRange(node,i,i+1).getClientRects();for(let j=0;j\u003Crects.length;j++){let rect=rects[j];if(rect.top==rect.bottom)continue;if(!generalSide)generalSide=x-rect.left;let dy=(rect.top>y?rect.top-y:y-rect.bottom)-1;if(rect.left-1\u003C=x&&rect.right+1>=x&&dy\u003CclosestDY){let right=x>=(rect.left+rect.right)/2,after=right;if(browser.chrome||browser.gecko){let rectBefore=textRange(node,i).getBoundingClientRect();if(rectBefore.left==rect.right)after=!right;}if(dy\u003C=0)return{node,offset:i+(after?1:0)};closestOffset=i+(after?1:0);closestDY=dy;}}}return{node,offset:closestOffset>-1?closestOffset:generalSide>0?node.nodeValue.length:0};}function posAtCoords(view,coords,precise,bias=-1){var _a,_b;let content=view.contentDOM.getBoundingClientRect(),docTop=content.top+view.viewState.paddingTop;let block,{docHeight}=view.viewState;let{x,y}=coords,yOffset=y-docTop;if(yOffset\u003C0)return 0;if(yOffset>docHeight)return view.state.doc.length;for(let halfLine=view.viewState.heightOracle.textHeight/2,bounced=false;;){block=view.elementAtHeight(yOffset);if(block.type==BlockType.Text)break;for(;;){yOffset=bias>0?block.bottom+halfLine:block.top-halfLine;if(yOffset>=0&&yOffset\u003C=docHeight)break;if(bounced)return precise?null:0;bounced=true;bias=-bias;}}y=docTop+yOffset;let lineStart=block.from;if(lineStart\u003Cview.viewport.from)return view.viewport.from==0?0:precise?null:posAtCoordsImprecise(view,content,block,x,y);if(lineStart>view.viewport.to)return view.viewport.to==view.state.doc.length?view.state.doc.length:precise?null:posAtCoordsImprecise(view,content,block,x,y);let doc=view.dom.ownerDocument;let root=view.root.elementFromPoint?view.root:doc;let element=root.elementFromPoint(x,y);if(element&&!view.contentDOM.contains(element))element=null;if(!element){x=Math.max(content.left+1,Math.min(content.right-1,x));element=root.elementFromPoint(x,y);if(element&&!view.contentDOM.contains(element))element=null;}let node,offset=-1;if(element&&((_a=view.docView.nearest(element))===null||_a===void 0?void 0:_a.isEditable)!=false){if(doc.caretPositionFromPoint){let pos=doc.caretPositionFromPoint(x,y);if(pos)({offsetNode:node,offset}=pos);}else if(doc.caretRangeFromPoint){let range=doc.caretRangeFromPoint(x,y);if(range){({startContainer:node,startOffset:offset}=range);if(!view.contentDOM.contains(node)||browser.safari&&isSuspiciousSafariCaretResult(node,offset,x)||browser.chrome&&isSuspiciousChromeCaretResult(node,offset,x))node=undefined;}}}if(!node||!view.docView.dom.contains(node)){let line=LineView.find(view.docView,lineStart);if(!line)return yOffset>block.top+block.height/2?block.to:block.from;({node,offset}=domPosAtCoords(line.dom,x,y));}let nearest=view.docView.nearest(node);if(!nearest)return null;if(nearest.isWidget&&((_b=nearest.dom)===null||_b===void 0?void 0:_b.nodeType)==1){let rect=nearest.dom.getBoundingClientRect();return coords.y\u003Crect.top||coords.y\u003C=rect.bottom&&coords.x\u003C=(rect.left+rect.right)/2?nearest.posAtStart:nearest.posAtEnd;}else{return nearest.localPosFromDOM(node,offset)+nearest.posAtStart;}}function posAtCoordsImprecise(view,contentRect,block,x,y){let into=Math.round((x-contentRect.left)*view.defaultCharacterWidth);if(view.lineWrapping&&block.height>view.defaultLineHeight*1.5){let textHeight=view.viewState.heightOracle.textHeight;let line=Math.floor((y-block.top-(view.defaultLineHeight-textHeight)*0.5)/textHeight);into+=line*view.viewState.heightOracle.lineLength;}let content=view.state.sliceDoc(block.from,block.to);return block.from+findColumn(content,into,view.state.tabSize);}function isSuspiciousSafariCaretResult(node,offset,x){let len;if(node.nodeType!=3||offset!=(len=node.nodeValue.length))return false;for(let next=node.nextSibling;next;next=next.nextSibling)if(next.nodeType!=1||next.nodeName!=\\\"BR\\\")return false;return textRange(node,len-1,len).getBoundingClientRect().left>x;}function isSuspiciousChromeCaretResult(node,offset,x){if(offset!=0)return false;for(let cur=node;;){let parent=cur.parentNode;if(!parent||parent.nodeType!=1||parent.firstChild!=cur)return false;if(parent.classList.contains(\\\"cm-line\\\"))break;cur=parent;}let rect=node.nodeType==1?node.getBoundingClientRect():textRange(node,0,Math.max(node.nodeValue.length,1)).getBoundingClientRect();return x-rect.left>5;}function blockAt(view,pos){let line=view.lineBlockAt(pos);if(Array.isArray(line.type))for(let _i52=0,_line$type=line.type,_length52=_line$type.length;_i52\u003C_length52;_i52++){let l=_line$type[_i52];if(l.to>pos||l.to==pos&&(l.to==line.to||l.type==BlockType.Text))return l;}return line;}function moveToLineBoundary(view,start,forward,includeWrap){let line=blockAt(view,start.head);let coords=!includeWrap||line.type!=BlockType.Text||!(view.lineWrapping||line.widgetLineBreaks)?null:view.coordsAtPos(start.assoc\u003C0&&start.head>line.from?start.head-1:start.head);if(coords){let editorRect=view.dom.getBoundingClientRect();let direction=view.textDirectionAt(line.from);let pos=view.posAtCoords({x:forward==(direction==Direction.LTR)?editorRect.right-1:editorRect.left+1,y:(coords.top+coords.bottom)/2});if(pos!=null)return EditorSelection.cursor(pos,forward?-1:1);}return EditorSelection.cursor(forward?line.to:line.from,forward?-1:1);}function moveByChar(view,start,forward,by){let line=view.state.doc.lineAt(start.head),spans=view.bidiSpans(line);let direction=view.textDirectionAt(line.from);for(let cur=start,check=null;;){let next=moveVisually(line,spans,direction,cur,forward),char=movedOver;if(!next){if(line.number==(forward?view.state.doc.lines:1))return cur;char=\\\"\\\\n\\\";line=view.state.doc.line(line.number+(forward?1:-1));spans=view.bidiSpans(line);next=view.visualLineSide(line,!forward);}if(!check){if(!by)return next;check=by(char);}else if(!check(char)){return cur;}cur=next;}}function byGroup(view,pos,start){let categorize=view.state.charCategorizer(pos);let cat=categorize(start);return next=>{let nextCat=categorize(next);if(cat==CharCategory.Space)cat=nextCat;return cat==nextCat;};}function moveVertically(view,start,forward,distance){let startPos=start.head,dir=forward?1:-1;if(startPos==(forward?view.state.doc.length:0))return EditorSelection.cursor(startPos,start.assoc);let goal=start.goalColumn,startY;let rect=view.contentDOM.getBoundingClientRect();let startCoords=view.coordsAtPos(startPos,start.assoc||-1),docTop=view.documentTop;if(startCoords){if(goal==null)goal=startCoords.left-rect.left;startY=dir\u003C0?startCoords.top:startCoords.bottom;}else{let line=view.viewState.lineBlockAt(startPos);if(goal==null)goal=Math.min(rect.right-rect.left,view.defaultCharacterWidth*(startPos-line.from));startY=(dir\u003C0?line.top:line.bottom)+docTop;}let resolvedGoal=rect.left+goal;let dist=distance!==null&&distance!==void 0?distance:view.viewState.heightOracle.textHeight>>1;for(let extra=0;;extra+=10){let curY=startY+(dist+extra)*dir;let pos=posAtCoords(view,{x:resolvedGoal,y:curY},false,dir);if(curY\u003Crect.top||curY>rect.bottom||(dir\u003C0?pos\u003CstartPos:pos>startPos)){let charRect=view.docView.coordsForChar(pos);let assoc=!charRect||curY\u003CcharRect.top?-1:1;return EditorSelection.cursor(pos,assoc,undefined,goal);}}}function skipAtomicRanges(atoms,pos,bias){for(;;){let moved=0;for(let _i53=0,_length53=atoms.length;_i53\u003C_length53;_i53++){let set=atoms[_i53];set.between(pos-1,pos+1,(from,to,value)=>{if(pos>from&&pos\u003Cto){let side=moved||bias||(pos-from\u003Cto-pos?-1:1);pos=side\u003C0?from:to;moved=side;}});}if(!moved)return pos;}}function skipAtoms(view,oldPos,pos){let newPos=skipAtomicRanges(view.state.facet(atomicRanges).map(f=>f(view)),pos.from,oldPos.head>pos.from?-1:1);return newPos==pos.from?pos:EditorSelection.cursor(newPos,newPos\u003Cpos.from?1:-1);}class InputState{setSelectionOrigin(origin){this.lastSelectionOrigin=origin;this.lastSelectionTime=Date.now();}constructor(view){this.view=view;this.lastKeyCode=0;this.lastKeyTime=0;this.lastTouchTime=0;this.lastFocusTime=0;this.lastScrollTop=0;this.lastScrollLeft=0;this.pendingIOSKey=undefined;this.lastSelectionOrigin=null;this.lastSelectionTime=0;this.lastEscPress=0;this.lastContextMenu=0;this.scrollHandlers=[];this.handlers=Object.create(null);this.composing=-1;this.compositionFirstChange=null;this.compositionEndedAt=0;this.compositionPendingKey=false;this.compositionPendingChange=false;this.mouseSelection=null;this.draggedContent=null;this.handleEvent=this.handleEvent.bind(this);this.notifiedFocused=view.hasFocus;if(browser.safari)view.contentDOM.addEventListener(\\\"input\\\",()=>null);if(browser.gecko)firefoxCopyCutHack(view.contentDOM.ownerDocument);}handleEvent(event){if(!eventBelongsToEditor(this.view,event)||this.ignoreDuringComposition(event))return;if(event.type==\\\"keydown\\\"&&this.keydown(event))return;this.runHandlers(event.type,event);}runHandlers(type,event){let handlers=this.handlers[type];if(handlers){for(let _i54=0,_handlers$observers=handlers.observers,_length54=_handlers$observers.length;_i54\u003C_length54;_i54++){let observer=_handlers$observers[_i54];observer(this.view,event);}for(let _i55=0,_handlers$handlers=handlers.handlers,_length55=_handlers$handlers.length;_i55\u003C_length55;_i55++){let handler=_handlers$handlers[_i55];if(event.defaultPrevented)break;if(handler(this.view,event)){event.preventDefault();break;}}}}ensureHandlers(plugins){let handlers=computeHandlers(plugins),prev=this.handlers,dom=this.view.contentDOM;for(let type in handlers)if(type!=\\\"scroll\\\"){let passive=!handlers[type].handlers.length;let exists=prev[type];if(exists&&passive!=!exists.handlers.length){dom.removeEventListener(type,this.handleEvent);exists=null;}if(!exists)dom.addEventListener(type,this.handleEvent,{passive});}for(let type in prev)if(type!=\\\"scroll\\\"&&!handlers[type])dom.removeEventListener(type,this.handleEvent);this.handlers=handlers;}keydown(event){this.lastKeyCode=event.keyCode;this.lastKeyTime=Date.now();if(event.keyCode==9&&Date.now()\u003Cthis.lastEscPress+2000)return true;if(event.keyCode!=27&&modifierCodes.indexOf(event.keyCode)\u003C0)this.view.inputState.lastEscPress=0;if(browser.android&&browser.chrome&&!event.synthetic&&(event.keyCode==13||event.keyCode==8)){this.view.observer.delayAndroidKey(event.key,event.keyCode);return true;}let pending;if(browser.ios&&!event.synthetic&&!event.altKey&&!event.metaKey&&((pending=PendingKeys.find(key=>key.keyCode==event.keyCode))&&!event.ctrlKey||EmacsyPendingKeys.indexOf(event.key)>-1&&event.ctrlKey&&!event.shiftKey)){this.pendingIOSKey=pending||event;setTimeout(()=>this.flushIOSKey(),250);return true;}if(event.keyCode!=229)this.view.observer.forceFlush();return false;}flushIOSKey(){let key=this.pendingIOSKey;if(!key)return false;this.pendingIOSKey=undefined;return dispatchKey(this.view.contentDOM,key.key,key.keyCode);}ignoreDuringComposition(event){if(!/^key/.test(event.type))return false;if(this.composing>0)return true;if(browser.safari&&!browser.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt\u003C100){this.compositionPendingKey=false;return true;}return false;}startMouseSelection(mouseSelection){if(this.mouseSelection)this.mouseSelection.destroy();this.mouseSelection=mouseSelection;}update(update){if(this.mouseSelection)this.mouseSelection.update(update);if(this.draggedContent&&update.docChanged)this.draggedContent=this.draggedContent.map(update.changes);if(update.transactions.length)this.lastKeyCode=this.lastSelectionTime=0;}destroy(){if(this.mouseSelection)this.mouseSelection.destroy();}}function bindHandler(plugin,handler){return(view,event)=>{try{return handler.call(plugin,event,view);}catch(e){logException(view.state,e);}};}function computeHandlers(plugins){let result=Object.create(null);function record(type){return result[type]||(result[type]={observers:[],handlers:[]});}for(let _i56=0,_length56=plugins.length;_i56\u003C_length56;_i56++){let plugin=plugins[_i56];let spec=plugin.spec;if(spec&&spec.domEventHandlers)for(let type in spec.domEventHandlers){let f=spec.domEventHandlers[type];if(f)record(type).handlers.push(bindHandler(plugin.value,f));}if(spec&&spec.domEventObservers)for(let type in spec.domEventObservers){let f=spec.domEventObservers[type];if(f)record(type).observers.push(bindHandler(plugin.value,f));}}for(let type in handlers)record(type).handlers.push(handlers[type]);for(let type in observers)record(type).observers.push(observers[type]);return result;}const PendingKeys=[{key:\\\"Backspace\\\",keyCode:8,inputType:\\\"deleteContentBackward\\\"},{key:\\\"Enter\\\",keyCode:13,inputType:\\\"insertParagraph\\\"},{key:\\\"Enter\\\",keyCode:13,inputType:\\\"insertLineBreak\\\"},{key:\\\"Delete\\\",keyCode:46,inputType:\\\"deleteContentForward\\\"}];const EmacsyPendingKeys=\\\"dthko\\\";const modifierCodes=[16,17,18,20,91,92,224,225];const dragScrollMargin=6;function dragScrollSpeed(dist){return Math.max(0,dist)*0.7+8;}function dist(a,b){return Math.max(Math.abs(a.clientX-b.clientX),Math.abs(a.clientY-b.clientY));}class MouseSelection{constructor(view,startEvent,style,mustSelect){this.view=view;this.startEvent=startEvent;this.style=style;this.mustSelect=mustSelect;this.scrollSpeed={x:0,y:0};this.scrolling=-1;this.lastEvent=startEvent;this.scrollParent=scrollableParent(view.contentDOM);this.atoms=view.state.facet(atomicRanges).map(f=>f(view));let doc=view.contentDOM.ownerDocument;doc.addEventListener(\\\"mousemove\\\",this.move=this.move.bind(this));doc.addEventListener(\\\"mouseup\\\",this.up=this.up.bind(this));this.extend=startEvent.shiftKey;this.multiple=view.state.facet(EditorState.allowMultipleSelections)&&addsSelectionRange(view,startEvent);this.dragging=isInPrimarySelection(view,startEvent)&&getClickType(startEvent)==1?null:false;}start(event){if(this.dragging===false)this.select(event);}move(event){var _a;if(event.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&dist(this.startEvent,event)\u003C10)return;this.select(this.lastEvent=event);let sx=0,sy=0;let rect=((_a=this.scrollParent)===null||_a===void 0?void 0:_a.getBoundingClientRect())||{left:0,top:0,right:this.view.win.innerWidth,bottom:this.view.win.innerHeight};let margins=getScrollMargins(this.view);if(event.clientX-margins.left\u003C=rect.left+dragScrollMargin)sx=-dragScrollSpeed(rect.left-event.clientX);else if(event.clientX+margins.right>=rect.right-dragScrollMargin)sx=dragScrollSpeed(event.clientX-rect.right);if(event.clientY-margins.top\u003C=rect.top+dragScrollMargin)sy=-dragScrollSpeed(rect.top-event.clientY);else if(event.clientY+margins.bottom>=rect.bottom-dragScrollMargin)sy=dragScrollSpeed(event.clientY-rect.bottom);this.setScrollSpeed(sx,sy);}up(event){if(this.dragging==null)this.select(this.lastEvent);if(!this.dragging)event.preventDefault();this.destroy();}destroy(){this.setScrollSpeed(0,0);let doc=this.view.contentDOM.ownerDocument;doc.removeEventListener(\\\"mousemove\\\",this.move);doc.removeEventListener(\\\"mouseup\\\",this.up);this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null;}setScrollSpeed(sx,sy){this.scrollSpeed={x:sx,y:sy};if(sx||sy){if(this.scrolling\u003C0)this.scrolling=setInterval(()=>this.scroll(),50);}else if(this.scrolling>-1){clearInterval(this.scrolling);this.scrolling=-1;}}scroll(){if(this.scrollParent){this.scrollParent.scrollLeft+=this.scrollSpeed.x;this.scrollParent.scrollTop+=this.scrollSpeed.y;}else{this.view.win.scrollBy(this.scrollSpeed.x,this.scrollSpeed.y);}if(this.dragging===false)this.select(this.lastEvent);}skipAtoms(sel){let ranges=null;for(let i=0;i\u003Csel.ranges.length;i++){let range=sel.ranges[i],updated=null;if(range.empty){let pos=skipAtomicRanges(this.atoms,range.from,0);if(pos!=range.from)updated=EditorSelection.cursor(pos,-1);}else{let from=skipAtomicRanges(this.atoms,range.from,-1);let to=skipAtomicRanges(this.atoms,range.to,1);if(from!=range.from||to!=range.to)updated=EditorSelection.range(range.from==range.anchor?from:to,range.from==range.head?from:to);}if(updated){if(!ranges)ranges=sel.ranges.slice();ranges[i]=updated;}}return ranges?EditorSelection.create(ranges,sel.mainIndex):sel;}select(event){let{view}=this,selection=this.skipAtoms(this.style.get(event,this.extend,this.multiple));if(this.mustSelect||!selection.eq(view.state.selection,this.dragging===false))this.view.dispatch({selection,userEvent:\\\"select.pointer\\\"});this.mustSelect=false;}update(update){if(this.style.update(update))setTimeout(()=>this.select(this.lastEvent),20);}}function addsSelectionRange(view,event){let facet=view.state.facet(clickAddsSelectionRange);return facet.length?facet[0](event):browser.mac?event.metaKey:event.ctrlKey;}function dragMovesSelection(view,event){let facet=view.state.facet(dragMovesSelection$1);return facet.length?facet[0](event):browser.mac?!event.altKey:!event.ctrlKey;}function isInPrimarySelection(view,event){let{main}=view.state.selection;if(main.empty)return false;let sel=getSelection(view.root);if(!sel||sel.rangeCount==0)return true;let rects=sel.getRangeAt(0).getClientRects();for(let i=0;i\u003Crects.length;i++){let rect=rects[i];if(rect.left\u003C=event.clientX&&rect.right>=event.clientX&&rect.top\u003C=event.clientY&&rect.bottom>=event.clientY)return true;}return false;}function eventBelongsToEditor(view,event){if(!event.bubbles)return true;if(event.defaultPrevented)return false;for(let node=event.target,cView;node!=view.contentDOM;node=node.parentNode)if(!node||node.nodeType==11||(cView=ContentView.get(node))&&cView.ignoreEvent(event))return false;return true;}const handlers=Object.create(null);const observers=Object.create(null);const brokenClipboardAPI=browser.ie&&browser.ie_version\u003C15||browser.ios&&browser.webkit_version\u003C604;function capturePaste(view){let parent=view.dom.parentNode;if(!parent)return;let target=parent.appendChild(document.createElement(\\\"textarea\\\"));target.style.cssText=\\\"position: fixed; left: -10000px; top: 10px\\\";target.focus();setTimeout(()=>{view.focus();target.remove();doPaste(view,target.value);},50);}function doPaste(view,input){let{state}=view,changes,i=1,text=state.toText(input);let byLine=text.lines==state.selection.ranges.length;let linewise=lastLinewiseCopy!=null&&state.selection.ranges.every(r=>r.empty)&&lastLinewiseCopy==text.toString();if(linewise){let lastLine=-1;changes=state.changeByRange(range=>{let line=state.doc.lineAt(range.from);if(line.from==lastLine)return{range};lastLine=line.from;let insert=state.toText((byLine?text.line(i++).text:input)+state.lineBreak);return{changes:{from:line.from,insert},range:EditorSelection.cursor(range.from+insert.length)};});}else if(byLine){changes=state.changeByRange(range=>{let line=text.line(i++);return{changes:{from:range.from,to:range.to,insert:line.text},range:EditorSelection.cursor(range.from+line.length)};});}else{changes=state.replaceSelection(text);}view.dispatch(changes,{userEvent:\\\"input.paste\\\",scrollIntoView:true});}observers.scroll=view=>{view.inputState.lastScrollTop=view.scrollDOM.scrollTop;view.inputState.lastScrollLeft=view.scrollDOM.scrollLeft;};handlers.keydown=(view,event)=>{view.inputState.setSelectionOrigin(\\\"select\\\");if(event.keyCode==27)view.inputState.lastEscPress=Date.now();return false;};observers.touchstart=(view,e)=>{view.inputState.lastTouchTime=Date.now();view.inputState.setSelectionOrigin(\\\"select.pointer\\\");};observers.touchmove=view=>{view.inputState.setSelectionOrigin(\\\"select.pointer\\\");};handlers.mousedown=(view,event)=>{view.observer.flush();if(view.inputState.lastTouchTime>Date.now()-2000)return false;let style=null;for(let _i57=0,_view$state$facet2=view.state.facet(mouseSelectionStyle),_length57=_view$state$facet2.length;_i57\u003C_length57;_i57++){let makeStyle=_view$state$facet2[_i57];style=makeStyle(view,event);if(style)break;}if(!style&&event.button==0)style=basicMouseSelection(view,event);if(style){let mustFocus=!view.hasFocus;view.inputState.startMouseSelection(new MouseSelection(view,event,style,mustFocus));if(mustFocus)view.observer.ignore(()=>focusPreventScroll(view.contentDOM));let mouseSel=view.inputState.mouseSelection;if(mouseSel){mouseSel.start(event);return mouseSel.dragging===false;}}return false;};function rangeForClick(view,pos,bias,type){if(type==1){return EditorSelection.cursor(pos,bias);}else if(type==2){return groupAt(view.state,pos,bias);}else{let visual=LineView.find(view.docView,pos),line=view.state.doc.lineAt(visual?visual.posAtEnd:pos);let from=visual?visual.posAtStart:line.from,to=visual?visual.posAtEnd:line.to;if(to\u003Cview.state.doc.length&&to==line.to)to++;return EditorSelection.range(from,to);}}let insideY=(y,rect)=>y>=rect.top&&y\u003C=rect.bottom;let inside=(x,y,rect)=>insideY(y,rect)&&x>=rect.left&&x\u003C=rect.right;function findPositionSide(view,pos,x,y){let line=LineView.find(view.docView,pos);if(!line)return 1;let off=pos-line.posAtStart;if(off==0)return 1;if(off==line.length)return-1;let before=line.coordsAt(off,-1);if(before&&inside(x,y,before))return-1;let after=line.coordsAt(off,1);if(after&&inside(x,y,after))return 1;return before&&insideY(y,before)?-1:1;}function queryPos(view,event){let pos=view.posAtCoords({x:event.clientX,y:event.clientY},false);return{pos,bias:findPositionSide(view,pos,event.clientX,event.clientY)};}const BadMouseDetail=browser.ie&&browser.ie_version\u003C=11;let lastMouseDown=null,lastMouseDownCount=0,lastMouseDownTime=0;function getClickType(event){if(!BadMouseDetail)return event.detail;let last=lastMouseDown,lastTime=lastMouseDownTime;lastMouseDown=event;lastMouseDownTime=Date.now();return lastMouseDownCount=!last||lastTime>Date.now()-400&&Math.abs(last.clientX-event.clientX)\u003C2&&Math.abs(last.clientY-event.clientY)\u003C2?(lastMouseDownCount+1)%3:1;}function basicMouseSelection(view,event){let start=queryPos(view,event),type=getClickType(event);let startSel=view.state.selection;return{update(update){if(update.docChanged){start.pos=update.changes.mapPos(start.pos);startSel=startSel.map(update.changes);}},get(event,extend,multiple){let cur=queryPos(view,event),removed;let range=rangeForClick(view,cur.pos,cur.bias,type);if(start.pos!=cur.pos&&!extend){let startRange=rangeForClick(view,start.pos,start.bias,type);let from=Math.min(startRange.from,range.from),to=Math.max(startRange.to,range.to);range=from\u003Crange.from?EditorSelection.range(from,to):EditorSelection.range(to,from);}if(extend)return startSel.replaceRange(startSel.main.extend(range.from,range.to));else if(multiple&&type==1&&startSel.ranges.length>1&&(removed=removeRangeAround(startSel,cur.pos)))return removed;else if(multiple)return startSel.addRange(range);else return EditorSelection.create([range]);}};}function removeRangeAround(sel,pos){for(let i=0;i\u003Csel.ranges.length;i++){let{from,to}=sel.ranges[i];if(from\u003C=pos&&to>=pos)return EditorSelection.create(sel.ranges.slice(0,i).concat(sel.ranges.slice(i+1)),sel.mainIndex==i?0:sel.mainIndex-(sel.mainIndex>i?1:0));}return null;}handlers.dragstart=(view,event)=>{let{selection:{main:range}}=view.state;if(event.target.draggable){let cView=view.docView.nearest(event.target);if(cView&&cView.isWidget){let from=cView.posAtStart,to=from+cView.length;if(from>=range.to||to\u003C=range.from)range=EditorSelection.range(from,to);}}let{inputState}=view;if(inputState.mouseSelection)inputState.mouseSelection.dragging=true;inputState.draggedContent=range;if(event.dataTransfer){event.dataTransfer.setData(\\\"Text\\\",view.state.sliceDoc(range.from,range.to));event.dataTransfer.effectAllowed=\\\"copyMove\\\";}return false;};handlers.dragend=view=>{view.inputState.draggedContent=null;return false;};function dropText(view,event,text,direct){if(!text)return;let dropPos=view.posAtCoords({x:event.clientX,y:event.clientY},false);let{draggedContent}=view.inputState;let del=direct&&draggedContent&&dragMovesSelection(view,event)?{from:draggedContent.from,to:draggedContent.to}:null;let ins={from:dropPos,insert:text};let changes=view.state.changes(del?[del,ins]:ins);view.focus();view.dispatch({changes,selection:{anchor:changes.mapPos(dropPos,-1),head:changes.mapPos(dropPos,1)},userEvent:del?\\\"move.drop\\\":\\\"input.drop\\\"});view.inputState.draggedContent=null;}handlers.drop=(view,event)=>{if(!event.dataTransfer)return false;if(view.state.readOnly)return true;let files=event.dataTransfer.files;if(files&&files.length){let text=Array(files.length),read=0;let finishFile=()=>{if(++read==files.length)dropText(view,event,text.filter(s=>s!=null).join(view.state.lineBreak),false);};for(let i=0;i\u003Cfiles.length;i++){let reader=new FileReader();reader.onerror=finishFile;reader.onload=()=>{if(!/[\\\\x00-\\\\x08\\\\x0e-\\\\x1f]{2}/.test(reader.result))text[i]=reader.result;finishFile();};reader.readAsText(files[i]);}return true;}else{let text=event.dataTransfer.getData(\\\"Text\\\");if(text){dropText(view,event,text,true);return true;}}return false;};handlers.paste=(view,event)=>{if(view.state.readOnly)return true;view.observer.flush();let data=brokenClipboardAPI?null:event.clipboardData;if(data){doPaste(view,data.getData(\\\"text/plain\\\")||data.getData(\\\"text/uri-text\\\"));return true;}else{capturePaste(view);return false;}};function captureCopy(view,text){let parent=view.dom.parentNode;if(!parent)return;let target=parent.appendChild(document.createElement(\\\"textarea\\\"));target.style.cssText=\\\"position: fixed; left: -10000px; top: 10px\\\";target.value=text;target.focus();target.selectionEnd=text.length;target.selectionStart=0;setTimeout(()=>{target.remove();view.focus();},50);}function copiedRange(state){let content=[],ranges=[],linewise=false;for(let _i58=0,_state$selection$rang=state.selection.ranges,_length58=_state$selection$rang.length;_i58\u003C_length58;_i58++){let range=_state$selection$rang[_i58];if(!range.empty){content.push(state.sliceDoc(range.from,range.to));ranges.push(range);}}if(!content.length){let upto=-1;for(let _i59=0,_state$selection$rang2=state.selection.ranges,_length59=_state$selection$rang2.length;_i59\u003C_length59;_i59++){let{from}=_state$selection$rang2[_i59];let line=state.doc.lineAt(from);if(line.number>upto){content.push(line.text);ranges.push({from:line.from,to:Math.min(state.doc.length,line.to+1)});}upto=line.number;}linewise=true;}return{text:content.join(state.lineBreak),ranges,linewise};}let lastLinewiseCopy=null;handlers.copy=handlers.cut=(view,event)=>{let{text,ranges,linewise}=copiedRange(view.state);if(!text&&!linewise)return false;lastLinewiseCopy=linewise?text:null;if(event.type==\\\"cut\\\"&&!view.state.readOnly)view.dispatch({changes:ranges,scrollIntoView:true,userEvent:\\\"delete.cut\\\"});let data=brokenClipboardAPI?null:event.clipboardData;if(data){data.clearData();data.setData(\\\"text/plain\\\",text);return true;}else{captureCopy(view,text);return false;}};const isFocusChange=Annotation.define();function focusChangeTransaction(state,focus){let effects=[];for(let _i60=0,_state$facet2=state.facet(focusChangeEffect),_length60=_state$facet2.length;_i60\u003C_length60;_i60++){let getEffect=_state$facet2[_i60];let effect=getEffect(state,focus);if(effect)effects.push(effect);}return effects?state.update({effects,annotations:isFocusChange.of(true)}):null;}function updateForFocusChange(view){setTimeout(()=>{let focus=view.hasFocus;if(focus!=view.inputState.notifiedFocused){let tr=focusChangeTransaction(view.state,focus);if(tr)view.dispatch(tr);else view.update([]);}},10);}observers.focus=view=>{view.inputState.lastFocusTime=Date.now();if(!view.scrollDOM.scrollTop&&(view.inputState.lastScrollTop||view.inputState.lastScrollLeft)){view.scrollDOM.scrollTop=view.inputState.lastScrollTop;view.scrollDOM.scrollLeft=view.inputState.lastScrollLeft;}updateForFocusChange(view);};observers.blur=view=>{view.observer.clearSelectionRange();updateForFocusChange(view);};observers.compositionstart=observers.compositionupdate=view=>{if(view.inputState.compositionFirstChange==null)view.inputState.compositionFirstChange=true;if(view.inputState.composing\u003C0){view.inputState.composing=0;if(view.docView.maybeCreateCompositionBarrier()){view.update([]);view.docView.clearCompositionBarrier();}}};observers.compositionend=view=>{view.inputState.composing=-1;view.inputState.compositionEndedAt=Date.now();view.inputState.compositionPendingKey=true;view.inputState.compositionPendingChange=view.observer.pendingRecords().length>0;view.inputState.compositionFirstChange=null;if(browser.chrome&&browser.android){view.observer.flushSoon();}else if(view.inputState.compositionPendingChange){Promise.resolve().then(()=>view.observer.flush());}else{setTimeout(()=>{if(view.inputState.composing\u003C0&&view.docView.hasComposition)view.update([]);},50);}};observers.contextmenu=view=>{view.inputState.lastContextMenu=Date.now();};handlers.beforeinput=(view,event)=>{var _a;let pending;if(browser.chrome&&browser.android&&(pending=PendingKeys.find(key=>key.inputType==event.inputType))){view.observer.delayAndroidKey(pending.key,pending.keyCode);if(pending.key==\\\"Backspace\\\"||pending.key==\\\"Delete\\\"){let startViewHeight=((_a=window.visualViewport)===null||_a===void 0?void 0:_a.height)||0;setTimeout(()=>{var _a;if((((_a=window.visualViewport)===null||_a===void 0?void 0:_a.height)||0)>startViewHeight+10&&view.hasFocus){view.contentDOM.blur();view.focus();}},100);}}return false;};const appliedFirefoxHack=new Set();function firefoxCopyCutHack(doc){if(!appliedFirefoxHack.has(doc)){appliedFirefoxHack.add(doc);doc.addEventListener(\\\"copy\\\",()=>{});doc.addEventListener(\\\"cut\\\",()=>{});}}const wrappingWhiteSpace=[\\\"pre-wrap\\\",\\\"normal\\\",\\\"pre-line\\\",\\\"break-spaces\\\"];class HeightOracle{constructor(lineWrapping){this.lineWrapping=lineWrapping;this.doc=Text$1.empty;this.heightSamples={};this.lineHeight=14;this.charWidth=7;this.textHeight=14;this.lineLength=30;this.heightChanged=false;}heightForGap(from,to){let lines=this.doc.lineAt(to).number-this.doc.lineAt(from).number+1;if(this.lineWrapping)lines+=Math.max(0,Math.ceil((to-from-lines*this.lineLength*0.5)/this.lineLength));return this.lineHeight*lines;}heightForLine(length){if(!this.lineWrapping)return this.lineHeight;let lines=1+Math.max(0,Math.ceil((length-this.lineLength)/(this.lineLength-5)));return lines*this.lineHeight;}setDoc(doc){this.doc=doc;return this;}mustRefreshForWrapping(whiteSpace){return wrappingWhiteSpace.indexOf(whiteSpace)>-1!=this.lineWrapping;}mustRefreshForHeights(lineHeights){let newHeight=false;for(let i=0;i\u003ClineHeights.length;i++){let h=lineHeights[i];if(h\u003C0){i++;}else if(!this.heightSamples[Math.floor(h*10)]){newHeight=true;this.heightSamples[Math.floor(h*10)]=true;}}return newHeight;}refresh(whiteSpace,lineHeight,charWidth,textHeight,lineLength,knownHeights){let lineWrapping=wrappingWhiteSpace.indexOf(whiteSpace)>-1;let changed=Math.round(lineHeight)!=Math.round(this.lineHeight)||this.lineWrapping!=lineWrapping;this.lineWrapping=lineWrapping;this.lineHeight=lineHeight;this.charWidth=charWidth;this.textHeight=textHeight;this.lineLength=lineLength;if(changed){this.heightSamples={};for(let i=0;i\u003CknownHeights.length;i++){let h=knownHeights[i];if(h\u003C0)i++;else this.heightSamples[Math.floor(h*10)]=true;}}return changed;}}class MeasuredHeights{constructor(from,heights){this.from=from;this.heights=heights;this.index=0;}get more(){return this.index\u003Cthis.heights.length;}}class BlockInfo{constructor(from,length,top,height,_content){this.from=from;this.length=length;this.top=top;this.height=height;this._content=_content;}get type(){return typeof this._content==\\\"number\\\"?BlockType.Text:Array.isArray(this._content)?this._content:this._content.type;}get to(){return this.from+this.length;}get bottom(){return this.top+this.height;}get widget(){return this._content instanceof PointDecoration?this._content.widget:null;}get widgetLineBreaks(){return typeof this._content==\\\"number\\\"?this._content:0;}join(other){let content=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(other._content)?other._content:[other]);return new BlockInfo(this.from,this.length+other.length,this.top,this.height+other.height,content);}}var QueryType$1=function(QueryType){QueryType[QueryType[\\\"ByPos\\\"]=0]=\\\"ByPos\\\";QueryType[QueryType[\\\"ByHeight\\\"]=1]=\\\"ByHeight\\\";QueryType[QueryType[\\\"ByPosNoHeight\\\"]=2]=\\\"ByPosNoHeight\\\";return QueryType;}(QueryType$1||(QueryType$1={}));const Epsilon=1e-3;class HeightMap{constructor(length,height,flags=2){this.length=length;this.height=height;this.flags=flags;}get outdated(){return(this.flags&2)>0;}set outdated(value){this.flags=(value?2:0)|this.flags&~2;}setHeight(oracle,height){if(this.height!=height){if(Math.abs(this.height-height)>Epsilon)oracle.heightChanged=true;this.height=height;}}replace(_from,_to,nodes){return HeightMap.of(nodes);}decomposeLeft(_to,result){result.push(this);}decomposeRight(_from,result){result.push(this);}applyChanges(decorations,oldDoc,oracle,changes){let me=this,doc=oracle.doc;for(let i=changes.length-1;i>=0;i--){let{fromA,toA,fromB,toB}=changes[i];let start=me.lineAt(fromA,QueryType$1.ByPosNoHeight,oracle.setDoc(oldDoc),0,0);let end=start.to>=toA?start:me.lineAt(toA,QueryType$1.ByPosNoHeight,oracle,0,0);toB+=end.to-toA;toA=end.to;while(i>0&&start.from\u003C=changes[i-1].toA){fromA=changes[i-1].fromA;fromB=changes[i-1].fromB;i--;if(fromA\u003Cstart.from)start=me.lineAt(fromA,QueryType$1.ByPosNoHeight,oracle,0,0);}fromB+=start.from-fromA;fromA=start.from;let nodes=NodeBuilder.build(oracle.setDoc(doc),decorations,fromB,toB);me=me.replace(fromA,toA,nodes);}return me.updateHeight(oracle,0);}static empty(){return new HeightMapText(0,0);}static of(nodes){if(nodes.length==1)return nodes[0];let i=0,j=nodes.length,before=0,after=0;for(;;){if(i==j){if(before>after*2){let split=nodes[i-1];if(split.break)nodes.splice(--i,1,split.left,null,split.right);else nodes.splice(--i,1,split.left,split.right);j+=1+split.break;before-=split.size;}else if(after>before*2){let split=nodes[j];if(split.break)nodes.splice(j,1,split.left,null,split.right);else nodes.splice(j,1,split.left,split.right);j+=2+split.break;after-=split.size;}else{break;}}else if(before\u003Cafter){let next=nodes[i++];if(next)before+=next.size;}else{let next=nodes[--j];if(next)after+=next.size;}}let brk=0;if(nodes[i-1]==null){brk=1;i--;}else if(nodes[i]==null){brk=1;j++;}return new HeightMapBranch(HeightMap.of(nodes.slice(0,i)),brk,HeightMap.of(nodes.slice(j)));}}HeightMap.prototype.size=1;class HeightMapBlock extends HeightMap{constructor(length,height,deco){super(length,height);this.deco=deco;}blockAt(_height,_oracle,top,offset){return new BlockInfo(offset,this.length,top,this.height,this.deco||0);}lineAt(_value,_type,oracle,top,offset){return this.blockAt(0,oracle,top,offset);}forEachLine(from,to,oracle,top,offset,f){if(from\u003C=offset+this.length&&to>=offset)f(this.blockAt(0,oracle,top,offset));}updateHeight(oracle,offset=0,_force=false,measured){if(measured&&measured.from\u003C=offset&&measured.more)this.setHeight(oracle,measured.heights[measured.index++]);this.outdated=false;return this;}toString(){return`block(${this.length})`;}}class HeightMapText extends HeightMapBlock{constructor(length,height){super(length,height,null);this.collapsed=0;this.widgetHeight=0;this.breaks=0;}blockAt(_height,_oracle,top,offset){return new BlockInfo(offset,this.length,top,this.height,this.breaks);}replace(_from,_to,nodes){let node=nodes[0];if(nodes.length==1&&(node instanceof HeightMapText||node instanceof HeightMapGap&&node.flags&4)&&Math.abs(this.length-node.length)\u003C10){if(node instanceof HeightMapGap)node=new HeightMapText(node.length,this.height);else node.height=this.height;if(!this.outdated)node.outdated=false;return node;}else{return HeightMap.of(nodes);}}updateHeight(oracle,offset=0,force=false,measured){if(measured&&measured.from\u003C=offset&&measured.more)this.setHeight(oracle,measured.heights[measured.index++]);else if(force||this.outdated)this.setHeight(oracle,Math.max(this.widgetHeight,oracle.heightForLine(this.length-this.collapsed))+this.breaks*oracle.lineHeight);this.outdated=false;return this;}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:\\\"\\\"}${this.widgetHeight?\\\":\\\"+this.widgetHeight:\\\"\\\"})`;}}class HeightMapGap extends HeightMap{constructor(length){super(length,0);}heightMetrics(oracle,offset){let firstLine=oracle.doc.lineAt(offset).number,lastLine=oracle.doc.lineAt(offset+this.length).number;let lines=lastLine-firstLine+1;let perLine,perChar=0;if(oracle.lineWrapping){let totalPerLine=Math.min(this.height,oracle.lineHeight*lines);perLine=totalPerLine/lines;if(this.length>lines+1)perChar=(this.height-totalPerLine)/(this.length-lines-1);}else{perLine=this.height/lines;}return{firstLine,lastLine,perLine,perChar};}blockAt(height,oracle,top,offset){let{firstLine,lastLine,perLine,perChar}=this.heightMetrics(oracle,offset);if(oracle.lineWrapping){let guess=offset+Math.round(Math.max(0,Math.min(1,(height-top)/this.height))*this.length);let line=oracle.doc.lineAt(guess),lineHeight=perLine+line.length*perChar;let lineTop=Math.max(top,height-lineHeight/2);return new BlockInfo(line.from,line.length,lineTop,lineHeight,0);}else{let line=Math.max(0,Math.min(lastLine-firstLine,Math.floor((height-top)/perLine)));let{from,length}=oracle.doc.line(firstLine+line);return new BlockInfo(from,length,top+perLine*line,perLine,0);}}lineAt(value,type,oracle,top,offset){if(type==QueryType$1.ByHeight)return this.blockAt(value,oracle,top,offset);if(type==QueryType$1.ByPosNoHeight){let{from,to}=oracle.doc.lineAt(value);return new BlockInfo(from,to-from,0,0,0);}let{firstLine,perLine,perChar}=this.heightMetrics(oracle,offset);let line=oracle.doc.lineAt(value),lineHeight=perLine+line.length*perChar;let linesAbove=line.number-firstLine;let lineTop=top+perLine*linesAbove+perChar*(line.from-offset-linesAbove);return new BlockInfo(line.from,line.length,Math.max(top,Math.min(lineTop,top+this.height-lineHeight)),lineHeight,0);}forEachLine(from,to,oracle,top,offset,f){from=Math.max(from,offset);to=Math.min(to,offset+this.length);let{firstLine,perLine,perChar}=this.heightMetrics(oracle,offset);for(let pos=from,lineTop=top;pos\u003C=to;){let line=oracle.doc.lineAt(pos);if(pos==from){let linesAbove=line.number-firstLine;lineTop+=perLine*linesAbove+perChar*(from-offset-linesAbove);}let lineHeight=perLine+perChar*line.length;f(new BlockInfo(line.from,line.length,lineTop,lineHeight,0));lineTop+=lineHeight;pos=line.to+1;}}replace(from,to,nodes){let after=this.length-to;if(after>0){let last=nodes[nodes.length-1];if(last instanceof HeightMapGap)nodes[nodes.length-1]=new HeightMapGap(last.length+after);else nodes.push(null,new HeightMapGap(after-1));}if(from>0){let first=nodes[0];if(first instanceof HeightMapGap)nodes[0]=new HeightMapGap(from+first.length);else nodes.unshift(new HeightMapGap(from-1),null);}return HeightMap.of(nodes);}decomposeLeft(to,result){result.push(new HeightMapGap(to-1),null);}decomposeRight(from,result){result.push(null,new HeightMapGap(this.length-from-1));}updateHeight(oracle,offset=0,force=false,measured){let end=offset+this.length;if(measured&&measured.from\u003C=offset+this.length&&measured.more){let nodes=[],pos=Math.max(offset,measured.from),singleHeight=-1;if(measured.from>offset)nodes.push(new HeightMapGap(measured.from-offset-1).updateHeight(oracle,offset));while(pos\u003C=end&&measured.more){let len=oracle.doc.lineAt(pos).length;if(nodes.length)nodes.push(null);let height=measured.heights[measured.index++];if(singleHeight==-1)singleHeight=height;else if(Math.abs(height-singleHeight)>=Epsilon)singleHeight=-2;let line=new HeightMapText(len,height);line.outdated=false;nodes.push(line);pos+=len+1;}if(pos\u003C=end)nodes.push(null,new HeightMapGap(end-pos).updateHeight(oracle,pos));let result=HeightMap.of(nodes);if(singleHeight\u003C0||Math.abs(result.height-this.height)>=Epsilon||Math.abs(singleHeight-this.heightMetrics(oracle,offset).perLine)>=Epsilon)oracle.heightChanged=true;return result;}else if(force||this.outdated){this.setHeight(oracle,oracle.heightForGap(offset,offset+this.length));this.outdated=false;}return this;}toString(){return`gap(${this.length})`;}}class HeightMapBranch extends HeightMap{constructor(left,brk,right){super(left.length+brk+right.length,left.height+right.height,brk|(left.outdated||right.outdated?2:0));this.left=left;this.right=right;this.size=left.size+right.size;}get break(){return this.flags&1;}blockAt(height,oracle,top,offset){let mid=top+this.left.height;return height\u003Cmid?this.left.blockAt(height,oracle,top,offset):this.right.blockAt(height,oracle,mid,offset+this.left.length+this.break);}lineAt(value,type,oracle,top,offset){let rightTop=top+this.left.height,rightOffset=offset+this.left.length+this.break;let left=type==QueryType$1.ByHeight?value\u003CrightTop:value\u003CrightOffset;let base=left?this.left.lineAt(value,type,oracle,top,offset):this.right.lineAt(value,type,oracle,rightTop,rightOffset);if(this.break||(left?base.to\u003CrightOffset:base.from>rightOffset))return base;let subQuery=type==QueryType$1.ByPosNoHeight?QueryType$1.ByPosNoHeight:QueryType$1.ByPos;if(left)return base.join(this.right.lineAt(rightOffset,subQuery,oracle,rightTop,rightOffset));else return this.left.lineAt(rightOffset,subQuery,oracle,top,offset).join(base);}forEachLine(from,to,oracle,top,offset,f){let rightTop=top+this.left.height,rightOffset=offset+this.left.length+this.break;if(this.break){if(from\u003CrightOffset)this.left.forEachLine(from,to,oracle,top,offset,f);if(to>=rightOffset)this.right.forEachLine(from,to,oracle,rightTop,rightOffset,f);}else{let mid=this.lineAt(rightOffset,QueryType$1.ByPos,oracle,top,offset);if(from\u003Cmid.from)this.left.forEachLine(from,mid.from-1,oracle,top,offset,f);if(mid.to>=from&&mid.from\u003C=to)f(mid);if(to>mid.to)this.right.forEachLine(mid.to+1,to,oracle,rightTop,rightOffset,f);}}replace(from,to,nodes){let rightStart=this.left.length+this.break;if(to\u003CrightStart)return this.balanced(this.left.replace(from,to,nodes),this.right);if(from>this.left.length)return this.balanced(this.left,this.right.replace(from-rightStart,to-rightStart,nodes));let result=[];if(from>0)this.decomposeLeft(from,result);let left=result.length;for(let _i61=0,_length61=nodes.length;_i61\u003C_length61;_i61++){let node=nodes[_i61];result.push(node);}if(from>0)mergeGaps(result,left-1);if(to\u003Cthis.length){let right=result.length;this.decomposeRight(to,result);mergeGaps(result,right);}return HeightMap.of(result);}decomposeLeft(to,result){let left=this.left.length;if(to\u003C=left)return this.left.decomposeLeft(to,result);result.push(this.left);if(this.break){left++;if(to>=left)result.push(null);}if(to>left)this.right.decomposeLeft(to-left,result);}decomposeRight(from,result){let left=this.left.length,right=left+this.break;if(from>=right)return this.right.decomposeRight(from-right,result);if(from\u003Cleft)this.left.decomposeRight(from,result);if(this.break&&from\u003Cright)result.push(null);result.push(this.right);}balanced(left,right){if(left.size>2*right.size||right.size>2*left.size)return HeightMap.of(this.break?[left,null,right]:[left,right]);this.left=left;this.right=right;this.height=left.height+right.height;this.outdated=left.outdated||right.outdated;this.size=left.size+right.size;this.length=left.length+this.break+right.length;return this;}updateHeight(oracle,offset=0,force=false,measured){let{left,right}=this,rightStart=offset+left.length+this.break,rebalance=null;if(measured&&measured.from\u003C=offset+left.length&&measured.more)rebalance=left=left.updateHeight(oracle,offset,force,measured);else left.updateHeight(oracle,offset,force);if(measured&&measured.from\u003C=rightStart+right.length&&measured.more)rebalance=right=right.updateHeight(oracle,rightStart,force,measured);else right.updateHeight(oracle,rightStart,force);if(rebalance)return this.balanced(left,right);this.height=this.left.height+this.right.height;this.outdated=false;return this;}toString(){return this.left+(this.break?\\\" \\\":\\\"-\\\")+this.right;}}function mergeGaps(nodes,around){let before,after;if(nodes[around]==null&&(before=nodes[around-1])instanceof HeightMapGap&&(after=nodes[around+1])instanceof HeightMapGap)nodes.splice(around-1,3,new HeightMapGap(before.length+1+after.length));}const relevantWidgetHeight=5;class NodeBuilder{constructor(pos,oracle){this.pos=pos;this.oracle=oracle;this.nodes=[];this.lineStart=-1;this.lineEnd=-1;this.covering=null;this.writtenTo=pos;}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering;}span(_from,to){if(this.lineStart>-1){let end=Math.min(to,this.lineEnd),last=this.nodes[this.nodes.length-1];if(last instanceof HeightMapText)last.length+=end-this.pos;else if(end>this.pos||!this.isCovered)this.nodes.push(new HeightMapText(end-this.pos,-1));this.writtenTo=end;if(to>end){this.nodes.push(null);this.writtenTo++;this.lineStart=-1;}}this.pos=to;}point(from,to,deco){if(from\u003Cto||deco.heightRelevant){let height=deco.widget?deco.widget.estimatedHeight:0;let breaks=deco.widget?deco.widget.lineBreaks:0;if(height\u003C0)height=this.oracle.lineHeight;let len=to-from;if(deco.block){this.addBlock(new HeightMapBlock(len,height,deco));}else if(len||breaks||height>=relevantWidgetHeight){this.addLineDeco(height,breaks,len);}}else if(to>from){this.span(from,to);}if(this.lineEnd>-1&&this.lineEnd\u003Cthis.pos)this.lineEnd=this.oracle.doc.lineAt(this.pos).to;}enterLine(){if(this.lineStart>-1)return;let{from,to}=this.oracle.doc.lineAt(this.pos);this.lineStart=from;this.lineEnd=to;if(this.writtenTo\u003Cfrom){if(this.writtenTo\u003Cfrom-1||this.nodes[this.nodes.length-1]==null)this.nodes.push(this.blankContent(this.writtenTo,from-1));this.nodes.push(null);}if(this.pos>from)this.nodes.push(new HeightMapText(this.pos-from,-1));this.writtenTo=this.pos;}blankContent(from,to){let gap=new HeightMapGap(to-from);if(this.oracle.doc.lineAt(from).to==to)gap.flags|=4;return gap;}ensureLine(){this.enterLine();let last=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(last instanceof HeightMapText)return last;let line=new HeightMapText(0,-1);this.nodes.push(line);return line;}addBlock(block){this.enterLine();let deco=block.deco;if(deco&&deco.startSide>0&&!this.isCovered)this.ensureLine();this.nodes.push(block);this.writtenTo=this.pos=this.pos+block.length;if(deco&&deco.endSide>0)this.covering=block;}addLineDeco(height,breaks,length){let line=this.ensureLine();line.length+=length;line.collapsed+=length;line.widgetHeight=Math.max(line.widgetHeight,height);line.breaks+=breaks;this.writtenTo=this.pos=this.pos+length;}finish(from){let last=this.nodes.length==0?null:this.nodes[this.nodes.length-1];if(this.lineStart>-1&&!(last instanceof HeightMapText)&&!this.isCovered)this.nodes.push(new HeightMapText(0,-1));else if(this.writtenTo\u003Cthis.pos||last==null)this.nodes.push(this.blankContent(this.writtenTo,this.pos));let pos=from;for(let _i62=0,_this$nodes=this.nodes,_length62=_this$nodes.length;_i62\u003C_length62;_i62++){let node=_this$nodes[_i62];if(node instanceof HeightMapText)node.updateHeight(this.oracle,pos);pos+=node?node.length:1;}return this.nodes;}static build(oracle,decorations,from,to){let builder=new NodeBuilder(from,oracle);RangeSet.spans(decorations,from,to,builder,0);return builder.finish(from);}}function heightRelevantDecoChanges(a,b,diff){let comp=new DecorationComparator();RangeSet.compare(a,b,diff,comp,0);return comp.changes;}class DecorationComparator{constructor(){this.changes=[];}compareRange(){}comparePoint(from,to,a,b){if(from\u003Cto||a&&a.heightRelevant||b&&b.heightRelevant)addRange(from,to,this.changes,5);}}function visiblePixelRange(dom,paddingTop){let rect=dom.getBoundingClientRect();let doc=dom.ownerDocument,win=doc.defaultView||window;let left=Math.max(0,rect.left),right=Math.min(win.innerWidth,rect.right);let top=Math.max(0,rect.top),bottom=Math.min(win.innerHeight,rect.bottom);for(let parent=dom.parentNode;parent&&parent!=doc.body;){if(parent.nodeType==1){let elt=parent;let style=window.getComputedStyle(elt);if((elt.scrollHeight>elt.clientHeight||elt.scrollWidth>elt.clientWidth)&&style.overflow!=\\\"visible\\\"){let parentRect=elt.getBoundingClientRect();left=Math.max(left,parentRect.left);right=Math.min(right,parentRect.right);top=Math.max(top,parentRect.top);bottom=parent==dom.parentNode?parentRect.bottom:Math.min(bottom,parentRect.bottom);}parent=style.position==\\\"absolute\\\"||style.position==\\\"fixed\\\"?elt.offsetParent:elt.parentNode;}else if(parent.nodeType==11){parent=parent.host;}else{break;}}return{left:left-rect.left,right:Math.max(left,right)-rect.left,top:top-(rect.top+paddingTop),bottom:Math.max(top,bottom)-(rect.top+paddingTop)};}function fullPixelRange(dom,paddingTop){let rect=dom.getBoundingClientRect();return{left:0,right:rect.right-rect.left,top:paddingTop,bottom:rect.bottom-(rect.top+paddingTop)};}class LineGap{constructor(from,to,size){this.from=from;this.to=to;this.size=size;}static same(a,b){if(a.length!=b.length)return false;for(let i=0;i\u003Ca.length;i++){let gA=a[i],gB=b[i];if(gA.from!=gB.from||gA.to!=gB.to||gA.size!=gB.size)return false;}return true;}draw(viewState,wrapping){return Decoration.replace({widget:new LineGapWidget(this.size*(wrapping?viewState.scaleY:viewState.scaleX),wrapping)}).range(this.from,this.to);}}class LineGapWidget extends WidgetType{constructor(size,vertical){super();this.size=size;this.vertical=vertical;}eq(other){return other.size==this.size&&other.vertical==this.vertical;}toDOM(){let elt=document.createElement(\\\"div\\\");if(this.vertical){elt.style.height=this.size+\\\"px\\\";}else{elt.style.width=this.size+\\\"px\\\";elt.style.height=\\\"2px\\\";elt.style.display=\\\"inline-block\\\";}return elt;}get estimatedHeight(){return this.vertical?this.size:-1;}}class ViewState{constructor(state){this.state=state;this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0};this.inView=true;this.paddingTop=0;this.paddingBottom=0;this.contentDOMWidth=0;this.contentDOMHeight=0;this.editorHeight=0;this.editorWidth=0;this.scrollTop=0;this.scrolledToBottom=true;this.scaleX=1;this.scaleY=1;this.scrollAnchorPos=0;this.scrollAnchorHeight=-1;this.scaler=IdScaler;this.scrollTarget=null;this.printing=false;this.mustMeasureContent=true;this.defaultTextDirection=Direction.LTR;this.visibleRanges=[];this.mustEnforceCursorAssoc=false;let guessWrapping=state.facet(contentAttributes).some(v=>typeof v!=\\\"function\\\"&&v.class==\\\"cm-lineWrapping\\\");this.heightOracle=new HeightOracle(guessWrapping);this.stateDeco=state.facet(decorations).filter(d=>typeof d!=\\\"function\\\");this.heightMap=HeightMap.empty().applyChanges(this.stateDeco,Text$1.empty,this.heightOracle.setDoc(state.doc),[new ChangedRange(0,0,0,state.doc.length)]);this.viewport=this.getViewport(0,null);this.updateViewportLines();this.updateForViewport();this.lineGaps=this.ensureLineGaps([]);this.lineGapDeco=Decoration.set(this.lineGaps.map(gap=>gap.draw(this,false)));this.computeVisibleRanges();}updateForViewport(){let viewports=[this.viewport],{main}=this.state.selection;for(let i=0;i\u003C=1;i++){let pos=i?main.head:main.anchor;if(!viewports.some(({from,to})=>pos>=from&&pos\u003C=to)){let{from,to}=this.lineBlockAt(pos);viewports.push(new Viewport(from,to));}}this.viewports=viewports.sort((a,b)=>a.from-b.from);this.scaler=this.heightMap.height\u003C=7000000?IdScaler:new BigScaler(this.heightOracle,this.heightMap,this.viewports);}updateViewportLines(){this.viewportLines=[];this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,block=>{this.viewportLines.push(this.scaler.scale==1?block:scaleBlock(block,this.scaler));});}update(update,scrollTarget=null){this.state=update.state;let prevDeco=this.stateDeco;this.stateDeco=this.state.facet(decorations).filter(d=>typeof d!=\\\"function\\\");let contentChanges=update.changedRanges;let heightChanges=ChangedRange.extendWithRanges(contentChanges,heightRelevantDecoChanges(prevDeco,this.stateDeco,update?update.changes:ChangeSet.empty(this.state.doc.length)));let prevHeight=this.heightMap.height;let scrollAnchor=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);this.heightMap=this.heightMap.applyChanges(this.stateDeco,update.startState.doc,this.heightOracle.setDoc(this.state.doc),heightChanges);if(this.heightMap.height!=prevHeight)update.flags|=2;if(scrollAnchor){this.scrollAnchorPos=update.changes.mapPos(scrollAnchor.from,-1);this.scrollAnchorHeight=scrollAnchor.top;}else{this.scrollAnchorPos=-1;this.scrollAnchorHeight=this.heightMap.height;}let viewport=heightChanges.length?this.mapViewport(this.viewport,update.changes):this.viewport;if(scrollTarget&&(scrollTarget.range.head\u003Cviewport.from||scrollTarget.range.head>viewport.to)||!this.viewportIsAppropriate(viewport))viewport=this.getViewport(0,scrollTarget);let updateLines=!update.changes.empty||update.flags&2||viewport.from!=this.viewport.from||viewport.to!=this.viewport.to;this.viewport=viewport;this.updateForViewport();if(updateLines)this.updateViewportLines();if(this.lineGaps.length||this.viewport.to-this.viewport.from>2000\u003C\u003C1)this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,update.changes)));update.flags|=this.computeVisibleRanges();if(scrollTarget)this.scrollTarget=scrollTarget;if(!this.mustEnforceCursorAssoc&&update.selectionSet&&update.view.lineWrapping&&update.state.selection.main.empty&&update.state.selection.main.assoc&&!update.state.facet(nativeSelectionHidden))this.mustEnforceCursorAssoc=true;}measure(view){let dom=view.contentDOM,style=window.getComputedStyle(dom);let oracle=this.heightOracle;let whiteSpace=style.whiteSpace;this.defaultTextDirection=style.direction==\\\"rtl\\\"?Direction.RTL:Direction.LTR;let refresh=this.heightOracle.mustRefreshForWrapping(whiteSpace);let domRect=dom.getBoundingClientRect();let measureContent=refresh||this.mustMeasureContent||this.contentDOMHeight!=domRect.height;this.contentDOMHeight=domRect.height;this.mustMeasureContent=false;let result=0,bias=0;if(domRect.width&&domRect.height){let{scaleX,scaleY}=getScale(dom,domRect);if(this.scaleX!=scaleX||this.scaleY!=scaleY){this.scaleX=scaleX;this.scaleY=scaleY;result|=8;refresh=measureContent=true;}}let paddingTop=(parseInt(style.paddingTop)||0)*this.scaleY;let paddingBottom=(parseInt(style.paddingBottom)||0)*this.scaleY;if(this.paddingTop!=paddingTop||this.paddingBottom!=paddingBottom){this.paddingTop=paddingTop;this.paddingBottom=paddingBottom;result|=8|2;}if(this.editorWidth!=view.scrollDOM.clientWidth){if(oracle.lineWrapping)measureContent=true;this.editorWidth=view.scrollDOM.clientWidth;result|=8;}let scrollTop=view.scrollDOM.scrollTop*this.scaleY;if(this.scrollTop!=scrollTop){this.scrollAnchorHeight=-1;this.scrollTop=scrollTop;}this.scrolledToBottom=isScrolledToBottom(view.scrollDOM);let pixelViewport=(this.printing?fullPixelRange:visiblePixelRange)(dom,this.paddingTop);let dTop=pixelViewport.top-this.pixelViewport.top,dBottom=pixelViewport.bottom-this.pixelViewport.bottom;this.pixelViewport=pixelViewport;let inView=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(inView!=this.inView){this.inView=inView;if(inView)measureContent=true;}if(!this.inView&&!this.scrollTarget)return 0;let contentWidth=domRect.width;if(this.contentDOMWidth!=contentWidth||this.editorHeight!=view.scrollDOM.clientHeight){this.contentDOMWidth=domRect.width;this.editorHeight=view.scrollDOM.clientHeight;result|=8;}if(measureContent){let lineHeights=view.docView.measureVisibleLineHeights(this.viewport);if(oracle.mustRefreshForHeights(lineHeights))refresh=true;if(refresh||oracle.lineWrapping&&Math.abs(contentWidth-this.contentDOMWidth)>oracle.charWidth){let{lineHeight,charWidth,textHeight}=view.docView.measureTextSize();refresh=lineHeight>0&&oracle.refresh(whiteSpace,lineHeight,charWidth,textHeight,contentWidth/charWidth,lineHeights);if(refresh){view.docView.minWidth=0;result|=8;}}if(dTop>0&&dBottom>0)bias=Math.max(dTop,dBottom);else if(dTop\u003C0&&dBottom\u003C0)bias=Math.min(dTop,dBottom);oracle.heightChanged=false;for(let _i63=0,_this$viewports=this.viewports,_length63=_this$viewports.length;_i63\u003C_length63;_i63++){let vp=_this$viewports[_i63];let heights=vp.from==this.viewport.from?lineHeights:view.docView.measureVisibleLineHeights(vp);this.heightMap=(refresh?HeightMap.empty().applyChanges(this.stateDeco,Text$1.empty,this.heightOracle,[new ChangedRange(0,0,0,view.state.doc.length)]):this.heightMap).updateHeight(oracle,0,refresh,new MeasuredHeights(vp.from,heights));}if(oracle.heightChanged)result|=2;}let viewportChange=!this.viewportIsAppropriate(this.viewport,bias)||this.scrollTarget&&(this.scrollTarget.range.head\u003Cthis.viewport.from||this.scrollTarget.range.head>this.viewport.to);if(viewportChange)this.viewport=this.getViewport(bias,this.scrollTarget);this.updateForViewport();if(result&2||viewportChange)this.updateViewportLines();if(this.lineGaps.length||this.viewport.to-this.viewport.from>2000\u003C\u003C1)this.updateLineGaps(this.ensureLineGaps(refresh?[]:this.lineGaps,view));result|=this.computeVisibleRanges();if(this.mustEnforceCursorAssoc){this.mustEnforceCursorAssoc=false;view.docView.enforceCursorAssoc();}return result;}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top);}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom);}getViewport(bias,scrollTarget){let marginTop=0.5-Math.max(-0.5,Math.min(0.5,bias/1000/2));let map=this.heightMap,oracle=this.heightOracle;let{visibleTop,visibleBottom}=this;let viewport=new Viewport(map.lineAt(visibleTop-marginTop*1000,QueryType$1.ByHeight,oracle,0,0).from,map.lineAt(visibleBottom+(1-marginTop)*1000,QueryType$1.ByHeight,oracle,0,0).to);if(scrollTarget){let{head}=scrollTarget.range;if(head\u003Cviewport.from||head>viewport.to){let viewHeight=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top);let block=map.lineAt(head,QueryType$1.ByPos,oracle,0,0),topPos;if(scrollTarget.y==\\\"center\\\")topPos=(block.top+block.bottom)/2-viewHeight/2;else if(scrollTarget.y==\\\"start\\\"||scrollTarget.y==\\\"nearest\\\"&&head\u003Cviewport.from)topPos=block.top;else topPos=block.bottom-viewHeight;viewport=new Viewport(map.lineAt(topPos-1000/2,QueryType$1.ByHeight,oracle,0,0).from,map.lineAt(topPos+viewHeight+1000/2,QueryType$1.ByHeight,oracle,0,0).to);}}return viewport;}mapViewport(viewport,changes){let from=changes.mapPos(viewport.from,-1),to=changes.mapPos(viewport.to,1);return new Viewport(this.heightMap.lineAt(from,QueryType$1.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(to,QueryType$1.ByPos,this.heightOracle,0,0).to);}viewportIsAppropriate({from,to},bias=0){if(!this.inView)return true;let{top}=this.heightMap.lineAt(from,QueryType$1.ByPos,this.heightOracle,0,0);let{bottom}=this.heightMap.lineAt(to,QueryType$1.ByPos,this.heightOracle,0,0);let{visibleTop,visibleBottom}=this;return(from==0||top\u003C=visibleTop-Math.max(10,Math.min(-bias,250)))&&(to==this.state.doc.length||bottom>=visibleBottom+Math.max(10,Math.min(bias,250)))&&top>visibleTop-2*1000&&bottom\u003CvisibleBottom+2*1000;}mapLineGaps(gaps,changes){if(!gaps.length||changes.empty)return gaps;let mapped=[];for(let _i64=0,_length64=gaps.length;_i64\u003C_length64;_i64++){let gap=gaps[_i64];if(!changes.touchesRange(gap.from,gap.to))mapped.push(new LineGap(changes.mapPos(gap.from),changes.mapPos(gap.to),gap.size));}return mapped;}ensureLineGaps(current,mayMeasure){let wrapping=this.heightOracle.lineWrapping;let margin=wrapping?10000:2000,halfMargin=margin>>1,doubleMargin=margin\u003C\u003C1;if(this.defaultTextDirection!=Direction.LTR&&!wrapping)return[];let gaps=[];let addGap=(from,to,line,structure)=>{if(to-from\u003ChalfMargin)return;let sel=this.state.selection.main,avoid=[sel.from];if(!sel.empty)avoid.push(sel.to);for(let _i65=0,_length65=avoid.length;_i65\u003C_length65;_i65++){let pos=avoid[_i65];if(pos>from&&pos\u003Cto){addGap(from,pos-10,line,structure);addGap(pos+10,to,line,structure);return;}}let gap=find(current,gap=>gap.from>=line.from&&gap.to\u003C=line.to&&Math.abs(gap.from-from)\u003ChalfMargin&&Math.abs(gap.to-to)\u003ChalfMargin&&!avoid.some(pos=>gap.from\u003Cpos&&gap.to>pos));if(!gap){if(to\u003Cline.to&&mayMeasure&&wrapping&&mayMeasure.visibleRanges.some(r=>r.from\u003C=to&&r.to>=to)){let lineStart=mayMeasure.moveToLineBoundary(EditorSelection.cursor(to),false,true).head;if(lineStart>from)to=lineStart;}gap=new LineGap(from,to,this.gapSize(line,from,to,structure));}gaps.push(gap);};for(let _i66=0,_this$viewportLines=this.viewportLines,_length66=_this$viewportLines.length;_i66\u003C_length66;_i66++){let line=_this$viewportLines[_i66];if(line.length\u003CdoubleMargin)continue;let structure=lineStructure(line.from,line.to,this.stateDeco);if(structure.total\u003CdoubleMargin)continue;let target=this.scrollTarget?this.scrollTarget.range.head:null;let viewFrom,viewTo;if(wrapping){let marginHeight=margin/this.heightOracle.lineLength*this.heightOracle.lineHeight;let top,bot;if(target!=null){let targetFrac=findFraction(structure,target);let spaceFrac=((this.visibleBottom-this.visibleTop)/2+marginHeight)/line.height;top=targetFrac-spaceFrac;bot=targetFrac+spaceFrac;}else{top=(this.visibleTop-line.top-marginHeight)/line.height;bot=(this.visibleBottom-line.top+marginHeight)/line.height;}viewFrom=findPosition(structure,top);viewTo=findPosition(structure,bot);}else{let totalWidth=structure.total*this.heightOracle.charWidth;let marginWidth=margin*this.heightOracle.charWidth;let left,right;if(target!=null){let targetFrac=findFraction(structure,target);let spaceFrac=((this.pixelViewport.right-this.pixelViewport.left)/2+marginWidth)/totalWidth;left=targetFrac-spaceFrac;right=targetFrac+spaceFrac;}else{left=(this.pixelViewport.left-marginWidth)/totalWidth;right=(this.pixelViewport.right+marginWidth)/totalWidth;}viewFrom=findPosition(structure,left);viewTo=findPosition(structure,right);}if(viewFrom>line.from)addGap(line.from,viewFrom,line,structure);if(viewTo\u003Cline.to)addGap(viewTo,line.to,line,structure);}return gaps;}gapSize(line,from,to,structure){let fraction=findFraction(structure,to)-findFraction(structure,from);if(this.heightOracle.lineWrapping){return line.height*fraction;}else{return structure.total*this.heightOracle.charWidth*fraction;}}updateLineGaps(gaps){if(!LineGap.same(gaps,this.lineGaps)){this.lineGaps=gaps;this.lineGapDeco=Decoration.set(gaps.map(gap=>gap.draw(this,this.heightOracle.lineWrapping)));}}computeVisibleRanges(){let deco=this.stateDeco;if(this.lineGaps.length)deco=deco.concat(this.lineGapDeco);let ranges=[];RangeSet.spans(deco,this.viewport.from,this.viewport.to,{span(from,to){ranges.push({from,to});},point(){}},20);let changed=ranges.length!=this.visibleRanges.length||this.visibleRanges.some((r,i)=>r.from!=ranges[i].from||r.to!=ranges[i].to);this.visibleRanges=ranges;return changed?4:0;}lineBlockAt(pos){return pos>=this.viewport.from&&pos\u003C=this.viewport.to&&this.viewportLines.find(b=>b.from\u003C=pos&&b.to>=pos)||scaleBlock(this.heightMap.lineAt(pos,QueryType$1.ByPos,this.heightOracle,0,0),this.scaler);}lineBlockAtHeight(height){return scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(height),QueryType$1.ByHeight,this.heightOracle,0,0),this.scaler);}scrollAnchorAt(scrollTop){let block=this.lineBlockAtHeight(scrollTop+8);return block.from>=this.viewport.from||this.viewportLines[0].top-scrollTop>200?block:this.viewportLines[0];}elementAtHeight(height){return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(height),this.heightOracle,0,0),this.scaler);}get docHeight(){return this.scaler.toDOM(this.heightMap.height);}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom;}}class Viewport{constructor(from,to){this.from=from;this.to=to;}}function lineStructure(from,to,stateDeco){let ranges=[],pos=from,total=0;RangeSet.spans(stateDeco,from,to,{span(){},point(from,to){if(from>pos){ranges.push({from:pos,to:from});total+=from-pos;}pos=to;}},20);if(pos\u003Cto){ranges.push({from:pos,to});total+=to-pos;}return{total,ranges};}function findPosition({total,ranges},ratio){if(ratio\u003C=0)return ranges[0].from;if(ratio>=1)return ranges[ranges.length-1].to;let dist=Math.floor(total*ratio);for(let i=0;;i++){let{from,to}=ranges[i],size=to-from;if(dist\u003C=size)return from+dist;dist-=size;}}function findFraction(structure,pos){let counted=0;for(let _i67=0,_structure$ranges=structure.ranges,_length67=_structure$ranges.length;_i67\u003C_length67;_i67++){let{from,to}=_structure$ranges[_i67];if(pos\u003C=to){counted+=pos-from;break;}counted+=to-from;}return counted/structure.total;}function find(array,f){for(let _i68=0,_length68=array.length;_i68\u003C_length68;_i68++){let val=array[_i68];if(f(val))return val;}return undefined;}const IdScaler={toDOM(n){return n;},fromDOM(n){return n;},scale:1};class BigScaler{constructor(oracle,heightMap,viewports){let vpHeight=0,base=0,domBase=0;this.viewports=viewports.map(({from,to})=>{let top=heightMap.lineAt(from,QueryType$1.ByPos,oracle,0,0).top;let bottom=heightMap.lineAt(to,QueryType$1.ByPos,oracle,0,0).bottom;vpHeight+=bottom-top;return{from,to,top,bottom,domTop:0,domBottom:0};});this.scale=(7000000-vpHeight)/(heightMap.height-vpHeight);for(let _i69=0,_this$viewports2=this.viewports,_length69=_this$viewports2.length;_i69\u003C_length69;_i69++){let obj=_this$viewports2[_i69];obj.domTop=domBase+(obj.top-base)*this.scale;domBase=obj.domBottom=obj.domTop+(obj.bottom-obj.top);base=obj.bottom;}}toDOM(n){for(let i=0,base=0,domBase=0;;i++){let vp=i\u003Cthis.viewports.length?this.viewports[i]:null;if(!vp||n\u003Cvp.top)return domBase+(n-base)*this.scale;if(n\u003C=vp.bottom)return vp.domTop+(n-vp.top);base=vp.bottom;domBase=vp.domBottom;}}fromDOM(n){for(let i=0,base=0,domBase=0;;i++){let vp=i\u003Cthis.viewports.length?this.viewports[i]:null;if(!vp||n\u003Cvp.domTop)return base+(n-domBase)/this.scale;if(n\u003C=vp.domBottom)return vp.top+(n-vp.domTop);base=vp.bottom;domBase=vp.domBottom;}}}function scaleBlock(block,scaler){if(scaler.scale==1)return block;let bTop=scaler.toDOM(block.top),bBottom=scaler.toDOM(block.bottom);return new BlockInfo(block.from,block.length,bTop,bBottom-bTop,Array.isArray(block._content)?block._content.map(b=>scaleBlock(b,scaler)):block._content);}const theme=Facet.define({combine:strs=>strs.join(\\\" \\\")});const darkTheme=Facet.define({combine:values=>values.indexOf(true)>-1});const baseThemeID=StyleModule.newName(),baseLightID=StyleModule.newName(),baseDarkID=StyleModule.newName();const lightDarkIDs={\\\"&light\\\":\\\".\\\"+baseLightID,\\\"&dark\\\":\\\".\\\"+baseDarkID};function buildTheme(main,spec,scopes){return new StyleModule(spec,{finish(sel){return /&/.test(sel)?sel.replace(/&\\\\w*/,m=>{if(m==\\\"&\\\")return main;if(!scopes||!scopes[m])throw new RangeError(`Unsupported selector: ${m}`);return scopes[m];}):main+\\\" \\\"+sel;}});}const baseTheme$1$3=buildTheme(\\\".\\\"+baseThemeID,{\\\"&\\\":{position:\\\"relative !important\\\",boxSizing:\\\"border-box\\\",\\\"&.cm-focused\\\":{outline:\\\"1px dotted #212121\\\"},display:\\\"flex !important\\\",flexDirection:\\\"column\\\"},\\\".cm-scroller\\\":{display:\\\"flex !important\\\",alignItems:\\\"flex-start !important\\\",fontFamily:\\\"monospace\\\",lineHeight:1.4,height:\\\"100%\\\",overflowX:\\\"auto\\\",position:\\\"relative\\\",zIndex:0},\\\".cm-content\\\":{margin:0,flexGrow:2,flexShrink:0,display:\\\"block\\\",whiteSpace:\\\"pre\\\",wordWrap:\\\"normal\\\",boxSizing:\\\"border-box\\\",minHeight:\\\"100%\\\",padding:\\\"4px 0\\\",outline:\\\"none\\\",\\\"&[contenteditable=true]\\\":{WebkitUserModify:\\\"read-write-plaintext-only\\\"}},\\\".cm-lineWrapping\\\":{whiteSpace_fallback:\\\"pre-wrap\\\",whiteSpace:\\\"break-spaces\\\",wordBreak:\\\"break-word\\\",overflowWrap:\\\"anywhere\\\",flexShrink:1},\\\"&light .cm-content\\\":{caretColor:\\\"black\\\"},\\\"&dark .cm-content\\\":{caretColor:\\\"white\\\"},\\\".cm-line\\\":{display:\\\"block\\\",padding:\\\"0 2px 0 6px\\\"},\\\".cm-layer\\\":{position:\\\"absolute\\\",left:0,top:0,contain:\\\"size style\\\",\\\"& > *\\\":{position:\\\"absolute\\\"}},\\\"&light .cm-selectionBackground\\\":{background:\\\"#d9d9d9\\\"},\\\"&dark .cm-selectionBackground\\\":{background:\\\"#222\\\"},\\\"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground\\\":{background:\\\"#d7d4f0\\\"},\\\"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground\\\":{background:\\\"#233\\\"},\\\".cm-cursorLayer\\\":{pointerEvents:\\\"none\\\"},\\\"&.cm-focused > .cm-scroller > .cm-cursorLayer\\\":{animation:\\\"steps(1) cm-blink 1.2s infinite\\\"},\\\"@keyframes cm-blink\\\":{\\\"0%\\\":{},\\\"50%\\\":{opacity:0},\\\"100%\\\":{}},\\\"@keyframes cm-blink2\\\":{\\\"0%\\\":{},\\\"50%\\\":{opacity:0},\\\"100%\\\":{}},\\\".cm-cursor, .cm-dropCursor\\\":{borderLeft:\\\"1.2px solid black\\\",marginLeft:\\\"-0.6px\\\",pointerEvents:\\\"none\\\"},\\\".cm-cursor\\\":{display:\\\"none\\\"},\\\"&dark .cm-cursor\\\":{borderLeftColor:\\\"#444\\\"},\\\".cm-dropCursor\\\":{position:\\\"absolute\\\"},\\\"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor\\\":{display:\\\"block\\\"},\\\".cm-iso\\\":{unicodeBidi:\\\"isolate\\\"},\\\".cm-announced\\\":{position:\\\"fixed\\\",top:\\\"-10000px\\\"},\\\"@media print\\\":{\\\".cm-announced\\\":{display:\\\"none\\\"}},\\\"&light .cm-activeLine\\\":{backgroundColor:\\\"#cceeff44\\\"},\\\"&dark .cm-activeLine\\\":{backgroundColor:\\\"#99eeff33\\\"},\\\"&light .cm-specialChar\\\":{color:\\\"red\\\"},\\\"&dark .cm-specialChar\\\":{color:\\\"#f78\\\"},\\\".cm-gutters\\\":{flexShrink:0,display:\\\"flex\\\",height:\\\"100%\\\",boxSizing:\\\"border-box\\\",insetInlineStart:0,zIndex:200},\\\"&light .cm-gutters\\\":{backgroundColor:\\\"#f5f5f5\\\",color:\\\"#6c6c6c\\\",borderRight:\\\"1px solid #ddd\\\"},\\\"&dark .cm-gutters\\\":{backgroundColor:\\\"#333338\\\",color:\\\"#ccc\\\"},\\\".cm-gutter\\\":{display:\\\"flex !important\\\",flexDirection:\\\"column\\\",flexShrink:0,boxSizing:\\\"border-box\\\",minHeight:\\\"100%\\\",overflow:\\\"hidden\\\"},\\\".cm-gutterElement\\\":{boxSizing:\\\"border-box\\\"},\\\".cm-lineNumbers .cm-gutterElement\\\":{padding:\\\"0 3px 0 5px\\\",minWidth:\\\"20px\\\",textAlign:\\\"right\\\",whiteSpace:\\\"nowrap\\\"},\\\"&light .cm-activeLineGutter\\\":{backgroundColor:\\\"#e2f2ff\\\"},\\\"&dark .cm-activeLineGutter\\\":{backgroundColor:\\\"#222227\\\"},\\\".cm-panels\\\":{boxSizing:\\\"border-box\\\",position:\\\"sticky\\\",left:0,right:0},\\\"&light .cm-panels\\\":{backgroundColor:\\\"#f5f5f5\\\",color:\\\"black\\\"},\\\"&light .cm-panels-top\\\":{borderBottom:\\\"1px solid #ddd\\\"},\\\"&light .cm-panels-bottom\\\":{borderTop:\\\"1px solid #ddd\\\"},\\\"&dark .cm-panels\\\":{backgroundColor:\\\"#333338\\\",color:\\\"white\\\"},\\\".cm-tab\\\":{display:\\\"inline-block\\\",overflow:\\\"hidden\\\",verticalAlign:\\\"bottom\\\"},\\\".cm-widgetBuffer\\\":{verticalAlign:\\\"text-top\\\",height:\\\"1em\\\",width:0,display:\\\"inline\\\"},\\\".cm-placeholder\\\":{color:\\\"#888\\\",display:\\\"inline-block\\\",verticalAlign:\\\"top\\\"},\\\".cm-highlightSpace:before\\\":{content:\\\"attr(data-display)\\\",position:\\\"absolute\\\",pointerEvents:\\\"none\\\",color:\\\"#888\\\"},\\\".cm-highlightTab\\\":{backgroundImage:`url('data:image/svg+xml,\u003Csvg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"200\\\" height=\\\"20\\\">\u003Cpath stroke=\\\"%23888\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" d=\\\"M1 10H196L190 5M190 15L196 10M197 4L197 16\\\"/>\u003C/svg>')`,backgroundSize:\\\"auto 100%\\\",backgroundPosition:\\\"right 90%\\\",backgroundRepeat:\\\"no-repeat\\\"},\\\".cm-trailingSpace\\\":{backgroundColor:\\\"#ff332255\\\"},\\\".cm-button\\\":{verticalAlign:\\\"middle\\\",color:\\\"inherit\\\",fontSize:\\\"70%\\\",padding:\\\".2em 1em\\\",borderRadius:\\\"1px\\\"},\\\"&light .cm-button\\\":{backgroundImage:\\\"linear-gradient(#eff1f5, #d9d9df)\\\",border:\\\"1px solid #888\\\",\\\"&:active\\\":{backgroundImage:\\\"linear-gradient(#b4b4b4, #d0d3d6)\\\"}},\\\"&dark .cm-button\\\":{backgroundImage:\\\"linear-gradient(#393939, #111)\\\",border:\\\"1px solid #888\\\",\\\"&:active\\\":{backgroundImage:\\\"linear-gradient(#111, #333)\\\"}},\\\".cm-textfield\\\":{verticalAlign:\\\"middle\\\",color:\\\"inherit\\\",fontSize:\\\"70%\\\",border:\\\"1px solid silver\\\",padding:\\\".2em .5em\\\"},\\\"&light .cm-textfield\\\":{backgroundColor:\\\"white\\\"},\\\"&dark .cm-textfield\\\":{border:\\\"1px solid #555\\\",backgroundColor:\\\"inherit\\\"}},lightDarkIDs);const LineBreakPlaceholder=\\\"\\\\uffff\\\";class DOMReader{constructor(points,state){this.points=points;this.text=\\\"\\\";this.lineSeparator=state.facet(EditorState.lineSeparator);}append(text){this.text+=text;}lineBreak(){this.text+=LineBreakPlaceholder;}readRange(start,end){if(!start)return this;let parent=start.parentNode;for(let cur=start;;){this.findPointBefore(parent,cur);let oldLen=this.text.length;this.readNode(cur);let next=cur.nextSibling;if(next==end)break;let view=ContentView.get(cur),nextView=ContentView.get(next);if(view&&nextView?view.breakAfter:(view?view.breakAfter:isBlockElement(cur))||isBlockElement(next)&&(cur.nodeName!=\\\"BR\\\"||cur.cmIgnore)&&this.text.length>oldLen)this.lineBreak();cur=next;}this.findPointBefore(parent,end);return this;}readTextNode(node){let text=node.nodeValue;for(let _i70=0,_this$points=this.points,_length70=_this$points.length;_i70\u003C_length70;_i70++){let point=_this$points[_i70];if(point.node==node)point.pos=this.text.length+Math.min(point.offset,text.length);}for(let off=0,re=this.lineSeparator?null:/\\\\r\\\\n?|\\\\n/g;;){let nextBreak=-1,breakSize=1,m;if(this.lineSeparator){nextBreak=text.indexOf(this.lineSeparator,off);breakSize=this.lineSeparator.length;}else if(m=re.exec(text)){nextBreak=m.index;breakSize=m[0].length;}this.append(text.slice(off,nextBreak\u003C0?text.length:nextBreak));if(nextBreak\u003C0)break;this.lineBreak();if(breakSize>1)for(let _i71=0,_this$points2=this.points,_length71=_this$points2.length;_i71\u003C_length71;_i71++){let point=_this$points2[_i71];if(point.node==node&&point.pos>this.text.length)point.pos-=breakSize-1;}off=nextBreak+breakSize;}}readNode(node){if(node.cmIgnore)return;let view=ContentView.get(node);let fromView=view&&view.overrideDOMText;if(fromView!=null){this.findPointInside(node,fromView.length);for(let i=fromView.iter();!i.next().done;){if(i.lineBreak)this.lineBreak();else this.append(i.value);}}else if(node.nodeType==3){this.readTextNode(node);}else if(node.nodeName==\\\"BR\\\"){if(node.nextSibling)this.lineBreak();}else if(node.nodeType==1){this.readRange(node.firstChild,null);}}findPointBefore(node,next){for(let _i72=0,_this$points3=this.points,_length72=_this$points3.length;_i72\u003C_length72;_i72++){let point=_this$points3[_i72];if(point.node==node&&node.childNodes[point.offset]==next)point.pos=this.text.length;}}findPointInside(node,length){for(let _i73=0,_this$points4=this.points,_length73=_this$points4.length;_i73\u003C_length73;_i73++){let point=_this$points4[_i73];if(node.nodeType==3?point.node==node:node.contains(point.node))point.pos=this.text.length+(isAtEnd(node,point.node,point.offset)?length:0);}}}function isAtEnd(parent,node,offset){for(;;){if(!node||offset\u003CmaxOffset(node))return false;if(node==parent)return true;offset=domIndex(node)+1;node=node.parentNode;}}function isBlockElement(node){return node.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\\\\d|SECTION|PRE)$/.test(node.nodeName);}class DOMPoint{constructor(node,offset){this.node=node;this.offset=offset;this.pos=-1;}}class DOMChange{constructor(view,start,end,typeOver){this.typeOver=typeOver;this.bounds=null;this.text=\\\"\\\";let{impreciseHead:iHead,impreciseAnchor:iAnchor}=view.docView;if(view.state.readOnly&&start>-1){this.newSel=null;}else if(start>-1&&(this.bounds=view.docView.domBoundsAround(start,end,0))){let selPoints=iHead||iAnchor?[]:selectionPoints(view);let reader=new DOMReader(selPoints,view.state);reader.readRange(this.bounds.startDOM,this.bounds.endDOM);this.text=reader.text;this.newSel=selectionFromPoints(selPoints,this.bounds.from);}else{let domSel=view.observer.selectionRange;let head=iHead&&iHead.node==domSel.focusNode&&iHead.offset==domSel.focusOffset||!contains(view.contentDOM,domSel.focusNode)?view.state.selection.main.head:view.docView.posFromDOM(domSel.focusNode,domSel.focusOffset);let anchor=iAnchor&&iAnchor.node==domSel.anchorNode&&iAnchor.offset==domSel.anchorOffset||!contains(view.contentDOM,domSel.anchorNode)?view.state.selection.main.anchor:view.docView.posFromDOM(domSel.anchorNode,domSel.anchorOffset);let vp=view.viewport;if((browser.ios||browser.chrome)&&view.state.selection.main.empty&&head!=anchor&&(vp.from>0||vp.to\u003Cview.state.doc.length)){let from=Math.min(head,anchor),to=Math.max(head,anchor);let offFrom=vp.from-from,offTo=vp.to-to;if((offFrom==0||offFrom==1||from==0)&&(offTo==0||offTo==-1||to==view.state.doc.length)){head=0;anchor=view.state.doc.length;}}this.newSel=EditorSelection.single(anchor,head);}}}function applyDOMChange(view,domChange){let change;let{newSel}=domChange,sel=view.state.selection.main;let lastKey=view.inputState.lastKeyTime>Date.now()-100?view.inputState.lastKeyCode:-1;if(domChange.bounds){let{from,to}=domChange.bounds;let preferredPos=sel.from,preferredSide=null;if(lastKey===8||browser.android&&domChange.text.length\u003Cto-from){preferredPos=sel.to;preferredSide=\\\"end\\\";}let diff=findDiff$1(view.state.doc.sliceString(from,to,LineBreakPlaceholder),domChange.text,preferredPos-from,preferredSide);if(diff){if(browser.chrome&&lastKey==13&&diff.toB==diff.from+2&&domChange.text.slice(diff.from,diff.toB)==LineBreakPlaceholder+LineBreakPlaceholder)diff.toB--;change={from:from+diff.from,to:from+diff.toA,insert:Text$1.of(domChange.text.slice(diff.from,diff.toB).split(LineBreakPlaceholder))};}}else if(newSel&&(!view.hasFocus&&view.state.facet(editable)||newSel.main.eq(sel))){newSel=null;}if(!change&&!newSel)return false;if(!change&&domChange.typeOver&&!sel.empty&&newSel&&newSel.main.empty){change={from:sel.from,to:sel.to,insert:view.state.doc.slice(sel.from,sel.to)};}else if(change&&change.from>=sel.from&&change.to\u003C=sel.to&&(change.from!=sel.from||change.to!=sel.to)&&sel.to-sel.from-(change.to-change.from)\u003C=4){change={from:sel.from,to:sel.to,insert:view.state.doc.slice(sel.from,change.from).append(change.insert).append(view.state.doc.slice(change.to,sel.to))};}else if((browser.mac||browser.android)&&change&&change.from==change.to&&change.from==sel.head-1&&/^\\\\. ?$/.test(change.insert.toString())&&view.contentDOM.getAttribute(\\\"autocorrect\\\")==\\\"off\\\"){if(newSel&&change.insert.length==2)newSel=EditorSelection.single(newSel.main.anchor-1,newSel.main.head-1);change={from:sel.from,to:sel.to,insert:Text$1.of([\\\" \\\"])};}else if(browser.chrome&&change&&change.from==change.to&&change.from==sel.head&&change.insert.toString()==\\\"\\\\n \\\"&&view.lineWrapping){if(newSel)newSel=EditorSelection.single(newSel.main.anchor-1,newSel.main.head-1);change={from:sel.from,to:sel.to,insert:Text$1.of([\\\" \\\"])};}if(change){if(browser.ios&&view.inputState.flushIOSKey())return true;if(browser.android&&(change.to==sel.to&&(change.from==sel.from||change.from==sel.from-1&&view.state.sliceDoc(change.from,sel.from)==\\\" \\\")&&change.insert.length==1&&change.insert.lines==2&&dispatchKey(view.contentDOM,\\\"Enter\\\",13)||(change.from==sel.from-1&&change.to==sel.to&&change.insert.length==0||lastKey==8&&change.insert.length\u003Cchange.to-change.from&&change.to>sel.head)&&dispatchKey(view.contentDOM,\\\"Backspace\\\",8)||change.from==sel.from&&change.to==sel.to+1&&change.insert.length==0&&dispatchKey(view.contentDOM,\\\"Delete\\\",46)))return true;let text=change.insert.toString();if(view.inputState.composing>=0)view.inputState.composing++;let defaultTr;let defaultInsert=()=>defaultTr||(defaultTr=applyDefaultInsert(view,change,newSel));if(!view.state.facet(inputHandler$1).some(h=>h(view,change.from,change.to,text,defaultInsert)))view.dispatch(defaultInsert());return true;}else if(newSel&&!newSel.main.eq(sel)){let scrollIntoView=false,userEvent=\\\"select\\\";if(view.inputState.lastSelectionTime>Date.now()-50){if(view.inputState.lastSelectionOrigin==\\\"select\\\")scrollIntoView=true;userEvent=view.inputState.lastSelectionOrigin;}view.dispatch({selection:newSel,scrollIntoView,userEvent});return true;}else{return false;}}function applyDefaultInsert(view,change,newSel){let tr,startState=view.state,sel=startState.selection.main;if(change.from>=sel.from&&change.to\u003C=sel.to&&change.to-change.from>=(sel.to-sel.from)/3&&(!newSel||newSel.main.empty&&newSel.main.from==change.from+change.insert.length)&&view.inputState.composing\u003C0){let before=sel.from\u003Cchange.from?startState.sliceDoc(sel.from,change.from):\\\"\\\";let after=sel.to>change.to?startState.sliceDoc(change.to,sel.to):\\\"\\\";tr=startState.replaceSelection(view.state.toText(before+change.insert.sliceString(0,undefined,view.state.lineBreak)+after));}else{let changes=startState.changes(change);let mainSel=newSel&&newSel.main.to\u003C=changes.newLength?newSel.main:undefined;if(startState.selection.ranges.length>1&&view.inputState.composing>=0&&change.to\u003C=sel.to&&change.to>=sel.to-10){let replaced=view.state.sliceDoc(change.from,change.to);let compositionRange,composition=newSel&&findCompositionNode(view,newSel.main.head);if(composition){let dLen=change.insert.length-(change.to-change.from);compositionRange={from:composition.from,to:composition.to-dLen};}else{compositionRange=view.state.doc.lineAt(sel.head);}let offset=sel.to-change.to,size=sel.to-sel.from;tr=startState.changeByRange(range=>{if(range.from==sel.from&&range.to==sel.to)return{changes,range:mainSel||range.map(changes)};let to=range.to-offset,from=to-replaced.length;if(range.to-range.from!=size||view.state.sliceDoc(from,to)!=replaced||range.to>=compositionRange.from&&range.from\u003C=compositionRange.to)return{range};let rangeChanges=startState.changes({from,to,insert:change.insert}),selOff=range.to-sel.to;return{changes:rangeChanges,range:!mainSel?range.map(rangeChanges):EditorSelection.range(Math.max(0,mainSel.anchor+selOff),Math.max(0,mainSel.head+selOff))};});}else{tr={changes,selection:mainSel&&startState.selection.replaceRange(mainSel)};}}let userEvent=\\\"input.type\\\";if(view.composing||view.inputState.compositionPendingChange&&view.inputState.compositionEndedAt>Date.now()-50){view.inputState.compositionPendingChange=false;userEvent+=\\\".compose\\\";if(view.inputState.compositionFirstChange){userEvent+=\\\".start\\\";view.inputState.compositionFirstChange=false;}}return startState.update(tr,{userEvent,scrollIntoView:true});}function findDiff$1(a,b,preferredPos,preferredSide){let minLen=Math.min(a.length,b.length);let from=0;while(from\u003CminLen&&a.charCodeAt(from)==b.charCodeAt(from))from++;if(from==minLen&&a.length==b.length)return null;let toA=a.length,toB=b.length;while(toA>0&&toB>0&&a.charCodeAt(toA-1)==b.charCodeAt(toB-1)){toA--;toB--;}if(preferredSide==\\\"end\\\"){let adjust=Math.max(0,from-Math.min(toA,toB));preferredPos-=toA+adjust-from;}if(toA\u003Cfrom&&a.length\u003Cb.length){let move=preferredPos\u003C=from&&preferredPos>=toA?from-preferredPos:0;from-=move;toB=from+(toB-toA);toA=from;}else if(toB\u003Cfrom){let move=preferredPos\u003C=from&&preferredPos>=toB?from-preferredPos:0;from-=move;toA=from+(toA-toB);toB=from;}return{from,toA,toB};}function selectionPoints(view){let result=[];if(view.root.activeElement!=view.contentDOM)return result;let{anchorNode,anchorOffset,focusNode,focusOffset}=view.observer.selectionRange;if(anchorNode){result.push(new DOMPoint(anchorNode,anchorOffset));if(focusNode!=anchorNode||focusOffset!=anchorOffset)result.push(new DOMPoint(focusNode,focusOffset));}return result;}function selectionFromPoints(points,base){if(points.length==0)return null;let anchor=points[0].pos,head=points.length==2?points[1].pos:anchor;return anchor>-1&&head>-1?EditorSelection.single(anchor+base,head+base):null;}const observeOptions={childList:true,characterData:true,subtree:true,attributes:true,characterDataOldValue:true};const useCharData=browser.ie&&browser.ie_version\u003C=11;class DOMObserver{constructor(view){this.view=view;this.active=false;this.selectionRange=new DOMSelectionState();this.selectionChanged=false;this.delayedFlush=-1;this.resizeTimeout=-1;this.queue=[];this.delayedAndroidKey=null;this.flushingAndroidKey=-1;this.lastChange=0;this.scrollTargets=[];this.intersection=null;this.resizeScroll=null;this.intersecting=false;this.gapIntersection=null;this.gaps=[];this.parentCheck=-1;this.dom=view.contentDOM;this.observer=new MutationObserver(mutations=>{for(let _i74=0,_length74=mutations.length;_i74\u003C_length74;_i74++){let mut=mutations[_i74];this.queue.push(mut);}if((browser.ie&&browser.ie_version\u003C=11||browser.ios&&view.composing)&&mutations.some(m=>m.type==\\\"childList\\\"&&m.removedNodes.length||m.type==\\\"characterData\\\"&&m.oldValue.length>m.target.nodeValue.length))this.flushSoon();else this.flush();});if(useCharData)this.onCharData=event=>{this.queue.push({target:event.target,type:\\\"characterData\\\",oldValue:event.prevValue});this.flushSoon();};this.onSelectionChange=this.onSelectionChange.bind(this);this.onResize=this.onResize.bind(this);this.onPrint=this.onPrint.bind(this);this.onScroll=this.onScroll.bind(this);if(typeof ResizeObserver==\\\"function\\\"){this.resizeScroll=new ResizeObserver(()=>{var _a;if(((_a=this.view.docView)===null||_a===void 0?void 0:_a.lastUpdate)\u003CDate.now()-75)this.onResize();});this.resizeScroll.observe(view.scrollDOM);}this.addWindowListeners(this.win=view.win);this.start();if(typeof IntersectionObserver==\\\"function\\\"){this.intersection=new IntersectionObserver(entries=>{if(this.parentCheck\u003C0)this.parentCheck=setTimeout(this.listenForScroll.bind(this),1000);if(entries.length>0&&entries[entries.length-1].intersectionRatio>0!=this.intersecting){this.intersecting=!this.intersecting;if(this.intersecting!=this.view.inView)this.onScrollChanged(document.createEvent(\\\"Event\\\"));}},{threshold:[0,.001]});this.intersection.observe(this.dom);this.gapIntersection=new IntersectionObserver(entries=>{if(entries.length>0&&entries[entries.length-1].intersectionRatio>0)this.onScrollChanged(document.createEvent(\\\"Event\\\"));},{});}this.listenForScroll();this.readSelectionRange();}onScrollChanged(e){this.view.inputState.runHandlers(\\\"scroll\\\",e);if(this.intersecting)this.view.measure();}onScroll(e){if(this.intersecting)this.flush(false);this.onScrollChanged(e);}onResize(){if(this.resizeTimeout\u003C0)this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1;this.view.requestMeasure();},50);}onPrint(){this.view.viewState.printing=true;this.view.measure();setTimeout(()=>{this.view.viewState.printing=false;this.view.requestMeasure();},500);}updateGaps(gaps){if(this.gapIntersection&&(gaps.length!=this.gaps.length||this.gaps.some((g,i)=>g!=gaps[i]))){this.gapIntersection.disconnect();for(let _i75=0,_length75=gaps.length;_i75\u003C_length75;_i75++){let gap=gaps[_i75];this.gapIntersection.observe(gap);}this.gaps=gaps;}}onSelectionChange(event){let wasChanged=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view}=this,sel=this.selectionRange;if(view.state.facet(editable)?view.root.activeElement!=this.dom:!hasSelection(view.dom,sel))return;let context=sel.anchorNode&&view.docView.nearest(sel.anchorNode);if(context&&context.ignoreEvent(event)){if(!wasChanged)this.selectionChanged=false;return;}if((browser.ie&&browser.ie_version\u003C=11||browser.android&&browser.chrome)&&!view.state.selection.main.empty&&sel.focusNode&&isEquivalentPosition(sel.focusNode,sel.focusOffset,sel.anchorNode,sel.anchorOffset))this.flushSoon();else this.flush(false);}readSelectionRange(){let{view}=this;let range=browser.safari&&view.root.nodeType==11&&deepActiveElement(this.dom.ownerDocument)==this.dom&&safariSelectionRangeHack(this.view)||getSelection(view.root);if(!range||this.selectionRange.eq(range))return false;let local=hasSelection(this.dom,range);if(local&&!this.selectionChanged&&view.inputState.lastFocusTime>Date.now()-200&&view.inputState.lastTouchTime\u003CDate.now()-300&&atElementStart(this.dom,range)){this.view.inputState.lastFocusTime=0;view.docView.updateSelection();return false;}this.selectionRange.setRange(range);if(local)this.selectionChanged=true;return true;}setSelectionRange(anchor,head){this.selectionRange.set(anchor.node,anchor.offset,head.node,head.offset);this.selectionChanged=false;}clearSelectionRange(){this.selectionRange.set(null,0,null,0);}listenForScroll(){this.parentCheck=-1;let i=0,changed=null;for(let dom=this.dom;dom;){if(dom.nodeType==1){if(!changed&&i\u003Cthis.scrollTargets.length&&this.scrollTargets[i]==dom)i++;else if(!changed)changed=this.scrollTargets.slice(0,i);if(changed)changed.push(dom);dom=dom.assignedSlot||dom.parentNode;}else if(dom.nodeType==11){dom=dom.host;}else{break;}}if(i\u003Cthis.scrollTargets.length&&!changed)changed=this.scrollTargets.slice(0,i);if(changed){for(let _i76=0,_this$scrollTargets=this.scrollTargets,_length76=_this$scrollTargets.length;_i76\u003C_length76;_i76++){let dom=_this$scrollTargets[_i76];dom.removeEventListener(\\\"scroll\\\",this.onScroll);}for(let _i77=0,_this$scrollTargets2=this.scrollTargets=changed,_length77=_this$scrollTargets2.length;_i77\u003C_length77;_i77++){let dom=_this$scrollTargets2[_i77];dom.addEventListener(\\\"scroll\\\",this.onScroll);}}}ignore(f){if(!this.active)return f();try{this.stop();return f();}finally{this.start();this.clear();}}start(){if(this.active)return;this.observer.observe(this.dom,observeOptions);if(useCharData)this.dom.addEventListener(\\\"DOMCharacterDataModified\\\",this.onCharData);this.active=true;}stop(){if(!this.active)return;this.active=false;this.observer.disconnect();if(useCharData)this.dom.removeEventListener(\\\"DOMCharacterDataModified\\\",this.onCharData);}clear(){this.processRecords();this.queue.length=0;this.selectionChanged=false;}delayAndroidKey(key,keyCode){var _a;if(!this.delayedAndroidKey){let flush=()=>{let key=this.delayedAndroidKey;if(key){this.clearDelayedAndroidKey();this.view.inputState.lastKeyCode=key.keyCode;this.view.inputState.lastKeyTime=Date.now();let flushed=this.flush();if(!flushed&&key.force)dispatchKey(this.dom,key.key,key.keyCode);}};this.flushingAndroidKey=this.view.win.requestAnimationFrame(flush);}if(!this.delayedAndroidKey||key==\\\"Enter\\\")this.delayedAndroidKey={key,keyCode,force:this.lastChange\u003CDate.now()-50||!!((_a=this.delayedAndroidKey)===null||_a===void 0?void 0:_a.force)};}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey);this.delayedAndroidKey=null;this.flushingAndroidKey=-1;}flushSoon(){if(this.delayedFlush\u003C0)this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1;this.flush();});}forceFlush(){if(this.delayedFlush>=0){this.view.win.cancelAnimationFrame(this.delayedFlush);this.delayedFlush=-1;}this.flush();}pendingRecords(){for(let _i78=0,_this$observer$takeRe=this.observer.takeRecords(),_length78=_this$observer$takeRe.length;_i78\u003C_length78;_i78++){let mut=_this$observer$takeRe[_i78];this.queue.push(mut);}return this.queue;}processRecords(){let records=this.pendingRecords();if(records.length)this.queue=[];let from=-1,to=-1,typeOver=false;for(let _i79=0,_length79=records.length;_i79\u003C_length79;_i79++){let record=records[_i79];let range=this.readMutation(record);if(!range)continue;if(range.typeOver)typeOver=true;if(from==-1){({from,to}=range);}else{from=Math.min(range.from,from);to=Math.max(range.to,to);}}return{from,to,typeOver};}readChange(){let{from,to,typeOver}=this.processRecords();let newSel=this.selectionChanged&&hasSelection(this.dom,this.selectionRange);if(from\u003C0&&!newSel)return null;if(from>-1)this.lastChange=Date.now();this.view.inputState.lastFocusTime=0;this.selectionChanged=false;let change=new DOMChange(this.view,from,to,typeOver);this.view.docView.domChanged={newSel:change.newSel?change.newSel.main:null};return change;}flush(readSelection=true){if(this.delayedFlush>=0||this.delayedAndroidKey)return false;if(readSelection)this.readSelectionRange();let domChange=this.readChange();if(!domChange){this.view.requestMeasure();return false;}let startState=this.view.state;let handled=applyDOMChange(this.view,domChange);if(this.view.state==startState)this.view.update([]);return handled;}readMutation(rec){let cView=this.view.docView.nearest(rec.target);if(!cView||cView.ignoreMutation(rec))return null;cView.markDirty(rec.type==\\\"attributes\\\");if(rec.type==\\\"attributes\\\")cView.flags|=4;if(rec.type==\\\"childList\\\"){let childBefore=findChild(cView,rec.previousSibling||rec.target.previousSibling,-1);let childAfter=findChild(cView,rec.nextSibling||rec.target.nextSibling,1);return{from:childBefore?cView.posAfter(childBefore):cView.posAtStart,to:childAfter?cView.posBefore(childAfter):cView.posAtEnd,typeOver:false};}else if(rec.type==\\\"characterData\\\"){return{from:cView.posAtStart,to:cView.posAtEnd,typeOver:rec.target.nodeValue==rec.oldValue};}else{return null;}}setWindow(win){if(win!=this.win){this.removeWindowListeners(this.win);this.win=win;this.addWindowListeners(this.win);}}addWindowListeners(win){win.addEventListener(\\\"resize\\\",this.onResize);win.addEventListener(\\\"beforeprint\\\",this.onPrint);win.addEventListener(\\\"scroll\\\",this.onScroll);win.document.addEventListener(\\\"selectionchange\\\",this.onSelectionChange);}removeWindowListeners(win){win.removeEventListener(\\\"scroll\\\",this.onScroll);win.removeEventListener(\\\"resize\\\",this.onResize);win.removeEventListener(\\\"beforeprint\\\",this.onPrint);win.document.removeEventListener(\\\"selectionchange\\\",this.onSelectionChange);}destroy(){var _a,_b,_c;this.stop();(_a=this.intersection)===null||_a===void 0?void 0:_a.disconnect();(_b=this.gapIntersection)===null||_b===void 0?void 0:_b.disconnect();(_c=this.resizeScroll)===null||_c===void 0?void 0:_c.disconnect();for(let _i80=0,_this$scrollTargets3=this.scrollTargets,_length80=_this$scrollTargets3.length;_i80\u003C_length80;_i80++){let dom=_this$scrollTargets3[_i80];dom.removeEventListener(\\\"scroll\\\",this.onScroll);}this.removeWindowListeners(this.win);clearTimeout(this.parentCheck);clearTimeout(this.resizeTimeout);this.win.cancelAnimationFrame(this.delayedFlush);this.win.cancelAnimationFrame(this.flushingAndroidKey);}}function findChild(cView,dom,dir){while(dom){let curView=ContentView.get(dom);if(curView&&curView.parent==cView)return curView;let parent=dom.parentNode;dom=parent!=cView.dom?parent:dir>0?dom.nextSibling:dom.previousSibling;}return null;}function safariSelectionRangeHack(view){let found=null;function read(event){event.preventDefault();event.stopImmediatePropagation();found=event.getTargetRanges()[0];}view.contentDOM.addEventListener(\\\"beforeinput\\\",read,true);view.dom.ownerDocument.execCommand(\\\"indent\\\");view.contentDOM.removeEventListener(\\\"beforeinput\\\",read,true);if(!found)return null;let anchorNode=found.startContainer,anchorOffset=found.startOffset;let focusNode=found.endContainer,focusOffset=found.endOffset;let curAnchor=view.docView.domAtPos(view.state.selection.main.anchor);if(isEquivalentPosition(curAnchor.node,curAnchor.offset,focusNode,focusOffset))[anchorNode,anchorOffset,focusNode,focusOffset]=[focusNode,focusOffset,anchorNode,anchorOffset];return{anchorNode,anchorOffset,focusNode,focusOffset};}class EditorView{get state(){return this.viewState.state;}get viewport(){return this.viewState.viewport;}get visibleRanges(){return this.viewState.visibleRanges;}get inView(){return this.viewState.inView;}get composing(){return this.inputState.composing>0;}get compositionStarted(){return this.inputState.composing>=0;}get root(){return this._root;}get win(){return this.dom.ownerDocument.defaultView||window;}constructor(config={}){this.plugins=[];this.pluginMap=new Map();this.editorAttrs={};this.contentAttrs={};this.bidiCache=[];this.destroyed=false;this.updateState=2;this.measureScheduled=-1;this.measureRequests=[];this.contentDOM=document.createElement(\\\"div\\\");this.scrollDOM=document.createElement(\\\"div\\\");this.scrollDOM.tabIndex=-1;this.scrollDOM.className=\\\"cm-scroller\\\";this.scrollDOM.appendChild(this.contentDOM);this.announceDOM=document.createElement(\\\"div\\\");this.announceDOM.className=\\\"cm-announced\\\";this.announceDOM.setAttribute(\\\"aria-live\\\",\\\"polite\\\");this.dom=document.createElement(\\\"div\\\");this.dom.appendChild(this.announceDOM);this.dom.appendChild(this.scrollDOM);if(config.parent)config.parent.appendChild(this.dom);let{dispatch}=config;this.dispatchTransactions=config.dispatchTransactions||dispatch&&(trs=>trs.forEach(tr=>dispatch(tr,this)))||(trs=>this.update(trs));this.dispatch=this.dispatch.bind(this);this._root=config.root||getRoot(config.parent)||document;this.viewState=new ViewState(config.state||EditorState.create(config));if(config.scrollTo&&config.scrollTo.is(scrollIntoView$1))this.viewState.scrollTarget=config.scrollTo.value.clip(this.viewState.state);this.plugins=this.state.facet(viewPlugin).map(spec=>new PluginInstance(spec));for(let _i81=0,_this$plugins=this.plugins,_length81=_this$plugins.length;_i81\u003C_length81;_i81++){let plugin=_this$plugins[_i81];plugin.update(this);}this.observer=new DOMObserver(this);this.inputState=new InputState(this);this.inputState.ensureHandlers(this.plugins);this.docView=new DocView(this);this.mountStyles();this.updateAttrs();this.updateState=0;this.requestMeasure();}dispatch(...input){let trs=input.length==1&&input[0]instanceof Transaction?input:input.length==1&&Array.isArray(input[0])?input[0]:[this.state.update(...input)];this.dispatchTransactions(trs,this);}update(transactions){if(this.updateState!=0)throw new Error(\\\"Calls to EditorView.update are not allowed while an update is in progress\\\");let redrawn=false,attrsChanged=false,update;let state=this.state;for(let _i82=0,_length82=transactions.length;_i82\u003C_length82;_i82++){let tr=transactions[_i82];if(tr.startState!=state)throw new RangeError(\\\"Trying to update state with a transaction that doesn't start from the previous state.\\\");state=tr.state;}if(this.destroyed){this.viewState.state=state;return;}let focus=this.hasFocus,focusFlag=0,dispatchFocus=null;if(transactions.some(tr=>tr.annotation(isFocusChange))){this.inputState.notifiedFocused=focus;focusFlag=1;}else if(focus!=this.inputState.notifiedFocused){this.inputState.notifiedFocused=focus;dispatchFocus=focusChangeTransaction(state,focus);if(!dispatchFocus)focusFlag=1;}let pendingKey=this.observer.delayedAndroidKey,domChange=null;if(pendingKey){this.observer.clearDelayedAndroidKey();domChange=this.observer.readChange();if(domChange&&!this.state.doc.eq(state.doc)||!this.state.selection.eq(state.selection))domChange=null;}else{this.observer.clear();}if(state.facet(EditorState.phrases)!=this.state.facet(EditorState.phrases))return this.setState(state);update=ViewUpdate.create(this,state,transactions);update.flags|=focusFlag;let scrollTarget=this.viewState.scrollTarget;try{this.updateState=2;for(let _i83=0,_length83=transactions.length;_i83\u003C_length83;_i83++){let tr=transactions[_i83];if(scrollTarget)scrollTarget=scrollTarget.map(tr.changes);if(tr.scrollIntoView){let{main}=tr.state.selection;scrollTarget=new ScrollTarget(main.empty?main:EditorSelection.cursor(main.head,main.head>main.anchor?-1:1));}for(let _i84=0,_tr$effects2=tr.effects,_length84=_tr$effects2.length;_i84\u003C_length84;_i84++){let e=_tr$effects2[_i84];if(e.is(scrollIntoView$1))scrollTarget=e.value.clip(this.state);}}this.viewState.update(update,scrollTarget);this.bidiCache=CachedOrder.update(this.bidiCache,update.changes);if(!update.empty){this.updatePlugins(update);this.inputState.update(update);}redrawn=this.docView.update(update);if(this.state.facet(styleModule)!=this.styleModules)this.mountStyles();attrsChanged=this.updateAttrs();this.showAnnouncements(transactions);this.docView.updateSelection(redrawn,transactions.some(tr=>tr.isUserEvent(\\\"select.pointer\\\")));}finally{this.updateState=0;}if(update.startState.facet(theme)!=update.state.facet(theme))this.viewState.mustMeasureContent=true;if(redrawn||attrsChanged||scrollTarget||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)this.requestMeasure();if(redrawn)this.docViewUpdate();if(!update.empty)for(let _i85=0,_this$state$facet=this.state.facet(updateListener),_length85=_this$state$facet.length;_i85\u003C_length85;_i85++){let listener=_this$state$facet[_i85];try{listener(update);}catch(e){logException(this.state,e,\\\"update listener\\\");}}if(dispatchFocus||domChange)Promise.resolve().then(()=>{if(dispatchFocus&&this.state==dispatchFocus.startState)this.dispatch(dispatchFocus);if(domChange){if(!applyDOMChange(this,domChange)&&pendingKey.force)dispatchKey(this.contentDOM,pendingKey.key,pendingKey.keyCode);}});}setState(newState){if(this.updateState!=0)throw new Error(\\\"Calls to EditorView.setState are not allowed while an update is in progress\\\");if(this.destroyed){this.viewState.state=newState;return;}this.updateState=2;let hadFocus=this.hasFocus;try{for(let _i86=0,_this$plugins2=this.plugins,_length86=_this$plugins2.length;_i86\u003C_length86;_i86++){let plugin=_this$plugins2[_i86];plugin.destroy(this);}this.viewState=new ViewState(newState);this.plugins=newState.facet(viewPlugin).map(spec=>new PluginInstance(spec));this.pluginMap.clear();for(let _i87=0,_this$plugins3=this.plugins,_length87=_this$plugins3.length;_i87\u003C_length87;_i87++){let plugin=_this$plugins3[_i87];plugin.update(this);}this.docView.destroy();this.docView=new DocView(this);this.inputState.ensureHandlers(this.plugins);this.mountStyles();this.updateAttrs();this.bidiCache=[];}finally{this.updateState=0;}if(hadFocus)this.focus();this.requestMeasure();}updatePlugins(update){let prevSpecs=update.startState.facet(viewPlugin),specs=update.state.facet(viewPlugin);if(prevSpecs!=specs){let newPlugins=[];for(let _i88=0,_length88=specs.length;_i88\u003C_length88;_i88++){let spec=specs[_i88];let found=prevSpecs.indexOf(spec);if(found\u003C0){newPlugins.push(new PluginInstance(spec));}else{let plugin=this.plugins[found];plugin.mustUpdate=update;newPlugins.push(plugin);}}for(let _i89=0,_this$plugins4=this.plugins,_length89=_this$plugins4.length;_i89\u003C_length89;_i89++){let plugin=_this$plugins4[_i89];if(plugin.mustUpdate!=update)plugin.destroy(this);}this.plugins=newPlugins;this.pluginMap.clear();}else{for(let _i90=0,_this$plugins5=this.plugins,_length90=_this$plugins5.length;_i90\u003C_length90;_i90++){let p=_this$plugins5[_i90];p.mustUpdate=update;}}for(let i=0;i\u003Cthis.plugins.length;i++)this.plugins[i].update(this);if(prevSpecs!=specs)this.inputState.ensureHandlers(this.plugins);}docViewUpdate(){for(let _i91=0,_this$plugins6=this.plugins,_length91=_this$plugins6.length;_i91\u003C_length91;_i91++){let plugin=_this$plugins6[_i91];let val=plugin.value;if(val&&val.docViewUpdate){try{val.docViewUpdate(this);}catch(e){logException(this.state,e,\\\"doc view update listener\\\");}}}}measure(flush=true){if(this.destroyed)return;if(this.measureScheduled>-1)this.win.cancelAnimationFrame(this.measureScheduled);if(this.observer.delayedAndroidKey){this.measureScheduled=-1;this.requestMeasure();return;}this.measureScheduled=0;if(flush)this.observer.forceFlush();let updated=null;let sDOM=this.scrollDOM,scrollTop=sDOM.scrollTop*this.scaleY;let{scrollAnchorPos,scrollAnchorHeight}=this.viewState;if(Math.abs(scrollTop-this.viewState.scrollTop)>1)scrollAnchorHeight=-1;this.viewState.scrollAnchorHeight=-1;try{for(let i=0;;i++){if(scrollAnchorHeight\u003C0){if(isScrolledToBottom(sDOM)){scrollAnchorPos=-1;scrollAnchorHeight=this.viewState.heightMap.height;}else{let block=this.viewState.scrollAnchorAt(scrollTop);scrollAnchorPos=block.from;scrollAnchorHeight=block.top;}}this.updateState=1;let changed=this.viewState.measure(this);if(!changed&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(i>5){console.warn(this.measureRequests.length?\\\"Measure loop restarted more than 5 times\\\":\\\"Viewport failed to stabilize\\\");break;}let measuring=[];if(!(changed&4))[this.measureRequests,measuring]=[measuring,this.measureRequests];let measured=measuring.map(m=>{try{return m.read(this);}catch(e){logException(this.state,e);return BadMeasure;}});let update=ViewUpdate.create(this,this.state,[]),redrawn=false;update.flags|=changed;if(!updated)updated=update;else updated.flags|=changed;this.updateState=2;if(!update.empty){this.updatePlugins(update);this.inputState.update(update);this.updateAttrs();redrawn=this.docView.update(update);if(redrawn)this.docViewUpdate();}for(let i=0;i\u003Cmeasuring.length;i++)if(measured[i]!=BadMeasure){try{let m=measuring[i];if(m.write)m.write(measured[i],this);}catch(e){logException(this.state,e);}}if(redrawn)this.docView.updateSelection(true);if(!update.viewportChanged&&this.measureRequests.length==0){if(this.viewState.editorHeight){if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget);this.viewState.scrollTarget=null;scrollAnchorHeight=-1;continue;}else{let newAnchorHeight=scrollAnchorPos\u003C0?this.viewState.heightMap.height:this.viewState.lineBlockAt(scrollAnchorPos).top;let diff=newAnchorHeight-scrollAnchorHeight;if(diff>1||diff\u003C-1){scrollTop=scrollTop+diff;sDOM.scrollTop=scrollTop/this.scaleY;scrollAnchorHeight=-1;continue;}}}break;}}}finally{this.updateState=0;this.measureScheduled=-1;}if(updated&&!updated.empty)for(let _i92=0,_this$state$facet2=this.state.facet(updateListener),_length92=_this$state$facet2.length;_i92\u003C_length92;_i92++){let listener=_this$state$facet2[_i92];listener(updated);}}get themeClasses(){return baseThemeID+\\\" \\\"+(this.state.facet(darkTheme)?baseDarkID:baseLightID)+\\\" \\\"+this.state.facet(theme);}updateAttrs(){let editorAttrs=attrsFromFacet(this,editorAttributes,{class:\\\"cm-editor\\\"+(this.hasFocus?\\\" cm-focused \\\":\\\" \\\")+this.themeClasses});let contentAttrs={spellcheck:\\\"false\\\",autocorrect:\\\"off\\\",autocapitalize:\\\"off\\\",translate:\\\"no\\\",contenteditable:!this.state.facet(editable)?\\\"false\\\":\\\"true\\\",class:\\\"cm-content\\\",style:`${browser.tabSize}: ${this.state.tabSize}`,role:\\\"textbox\\\",\\\"aria-multiline\\\":\\\"true\\\"};if(this.state.readOnly)contentAttrs[\\\"aria-readonly\\\"]=\\\"true\\\";attrsFromFacet(this,contentAttributes,contentAttrs);let changed=this.observer.ignore(()=>{let changedContent=updateAttrs(this.contentDOM,this.contentAttrs,contentAttrs);let changedEditor=updateAttrs(this.dom,this.editorAttrs,editorAttrs);return changedContent||changedEditor;});this.editorAttrs=editorAttrs;this.contentAttrs=contentAttrs;return changed;}showAnnouncements(trs){let first=true;for(let _i93=0,_length93=trs.length;_i93\u003C_length93;_i93++){let tr=trs[_i93];for(let _i94=0,_tr$effects3=tr.effects,_length94=_tr$effects3.length;_i94\u003C_length94;_i94++){let effect=_tr$effects3[_i94];if(effect.is(EditorView.announce)){if(first)this.announceDOM.textContent=\\\"\\\";first=false;let div=this.announceDOM.appendChild(document.createElement(\\\"div\\\"));div.textContent=effect.value;}}}}mountStyles(){this.styleModules=this.state.facet(styleModule);let nonce=this.state.facet(EditorView.cspNonce);StyleModule.mount(this.root,this.styleModules.concat(baseTheme$1$3).reverse(),nonce?{nonce}:undefined);}readMeasured(){if(this.updateState==2)throw new Error(\\\"Reading the editor layout isn't allowed during an update\\\");if(this.updateState==0&&this.measureScheduled>-1)this.measure(false);}requestMeasure(request){if(this.measureScheduled\u003C0)this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure());if(request){if(this.measureRequests.indexOf(request)>-1)return;if(request.key!=null)for(let i=0;i\u003Cthis.measureRequests.length;i++){if(this.measureRequests[i].key===request.key){this.measureRequests[i]=request;return;}}this.measureRequests.push(request);}}plugin(plugin){let known=this.pluginMap.get(plugin);if(known===undefined||known&&known.spec!=plugin)this.pluginMap.set(plugin,known=this.plugins.find(p=>p.spec==plugin)||null);return known&&known.update(this).value;}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop;}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom};}get scaleX(){return this.viewState.scaleX;}get scaleY(){return this.viewState.scaleY;}elementAtHeight(height){this.readMeasured();return this.viewState.elementAtHeight(height);}lineBlockAtHeight(height){this.readMeasured();return this.viewState.lineBlockAtHeight(height);}get viewportLineBlocks(){return this.viewState.viewportLines;}lineBlockAt(pos){return this.viewState.lineBlockAt(pos);}get contentHeight(){return this.viewState.contentHeight;}moveByChar(start,forward,by){return skipAtoms(this,start,moveByChar(this,start,forward,by));}moveByGroup(start,forward){return skipAtoms(this,start,moveByChar(this,start,forward,initial=>byGroup(this,start.head,initial)));}visualLineSide(line,end){let order=this.bidiSpans(line),dir=this.textDirectionAt(line.from);let span=order[end?order.length-1:0];return EditorSelection.cursor(span.side(end,dir)+line.from,span.forward(!end,dir)?1:-1);}moveToLineBoundary(start,forward,includeWrap=true){return moveToLineBoundary(this,start,forward,includeWrap);}moveVertically(start,forward,distance){return skipAtoms(this,start,moveVertically(this,start,forward,distance));}domAtPos(pos){return this.docView.domAtPos(pos);}posAtDOM(node,offset=0){return this.docView.posFromDOM(node,offset);}posAtCoords(coords,precise=true){this.readMeasured();return posAtCoords(this,coords,precise);}coordsAtPos(pos,side=1){this.readMeasured();let rect=this.docView.coordsAt(pos,side);if(!rect||rect.left==rect.right)return rect;let line=this.state.doc.lineAt(pos),order=this.bidiSpans(line);let span=order[BidiSpan.find(order,pos-line.from,-1,side)];return flattenRect(rect,span.dir==Direction.LTR==side>0);}coordsForChar(pos){this.readMeasured();return this.docView.coordsForChar(pos);}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth;}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight;}get textDirection(){return this.viewState.defaultTextDirection;}textDirectionAt(pos){let perLine=this.state.facet(perLineTextDirection);if(!perLine||pos\u003Cthis.viewport.from||pos>this.viewport.to)return this.textDirection;this.readMeasured();return this.docView.textDirectionAt(pos);}get lineWrapping(){return this.viewState.heightOracle.lineWrapping;}bidiSpans(line){if(line.length>MaxBidiLine)return trivialOrder(line.length);let dir=this.textDirectionAt(line.from),isolates;for(let _i95=0,_this$bidiCache=this.bidiCache,_length95=_this$bidiCache.length;_i95\u003C_length95;_i95++){let entry=_this$bidiCache[_i95];if(entry.from==line.from&&entry.dir==dir&&(entry.fresh||isolatesEq(entry.isolates,isolates=getIsolatedRanges(this,line))))return entry.order;}if(!isolates)isolates=getIsolatedRanges(this,line);let order=computeOrder(line.text,dir,isolates);this.bidiCache.push(new CachedOrder(line.from,line.to,dir,isolates,true,order));return order;}get hasFocus(){var _a;return(this.dom.ownerDocument.hasFocus()||browser.safari&&((_a=this.inputState)===null||_a===void 0?void 0:_a.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM;}focus(){this.observer.ignore(()=>{focusPreventScroll(this.contentDOM);this.docView.updateSelection();});}setRoot(root){if(this._root!=root){this._root=root;this.observer.setWindow((root.nodeType==9?root:root.ownerDocument).defaultView||window);this.mountStyles();}}destroy(){for(let _i96=0,_this$plugins7=this.plugins,_length96=_this$plugins7.length;_i96\u003C_length96;_i96++){let plugin=_this$plugins7[_i96];plugin.destroy(this);}this.plugins=[];this.inputState.destroy();this.docView.destroy();this.dom.remove();this.observer.destroy();if(this.measureScheduled>-1)this.win.cancelAnimationFrame(this.measureScheduled);this.destroyed=true;}static scrollIntoView(pos,options={}){return scrollIntoView$1.of(new ScrollTarget(typeof pos==\\\"number\\\"?EditorSelection.cursor(pos):pos,options.y,options.x,options.yMargin,options.xMargin));}scrollSnapshot(){let{scrollTop,scrollLeft}=this.scrollDOM;let ref=this.viewState.scrollAnchorAt(scrollTop);return scrollIntoView$1.of(new ScrollTarget(EditorSelection.cursor(ref.from),\\\"start\\\",\\\"start\\\",ref.top-scrollTop,scrollLeft,true));}static domEventHandlers(handlers){return ViewPlugin.define(()=>({}),{eventHandlers:handlers});}static domEventObservers(observers){return ViewPlugin.define(()=>({}),{eventObservers:observers});}static theme(spec,options){let prefix=StyleModule.newName();let result=[theme.of(prefix),styleModule.of(buildTheme(`.${prefix}`,spec))];if(options&&options.dark)result.push(darkTheme.of(true));return result;}static baseTheme(spec){return Prec.lowest(styleModule.of(buildTheme(\\\".\\\"+baseThemeID,spec,lightDarkIDs)));}static findFromDOM(dom){var _a;let content=dom.querySelector(\\\".cm-content\\\");let cView=content&&ContentView.get(content)||ContentView.get(dom);return((_a=cView===null||cView===void 0?void 0:cView.rootView)===null||_a===void 0?void 0:_a.view)||null;}}EditorView.styleModule=styleModule;EditorView.inputHandler=inputHandler$1;EditorView.focusChangeEffect=focusChangeEffect;EditorView.perLineTextDirection=perLineTextDirection;EditorView.exceptionSink=exceptionSink;EditorView.updateListener=updateListener;EditorView.editable=editable;EditorView.mouseSelectionStyle=mouseSelectionStyle;EditorView.dragMovesSelection=dragMovesSelection$1;EditorView.clickAddsSelectionRange=clickAddsSelectionRange;EditorView.decorations=decorations;EditorView.outerDecorations=outerDecorations;EditorView.atomicRanges=atomicRanges;EditorView.bidiIsolatedRanges=bidiIsolatedRanges;EditorView.scrollMargins=scrollMargins;EditorView.darkTheme=darkTheme;EditorView.cspNonce=Facet.define({combine:values=>values.length?values[0]:\\\"\\\"});EditorView.contentAttributes=contentAttributes;EditorView.editorAttributes=editorAttributes;EditorView.lineWrapping=EditorView.contentAttributes.of({\\\"class\\\":\\\"cm-lineWrapping\\\"});EditorView.announce=StateEffect.define();const MaxBidiLine=4096;const BadMeasure={};class CachedOrder{constructor(from,to,dir,isolates,fresh,order){this.from=from;this.to=to;this.dir=dir;this.isolates=isolates;this.fresh=fresh;this.order=order;}static update(cache,changes){if(changes.empty&&!cache.some(c=>c.fresh))return cache;let result=[],lastDir=cache.length?cache[cache.length-1].dir:Direction.LTR;for(let i=Math.max(0,cache.length-10);i\u003Ccache.length;i++){let entry=cache[i];if(entry.dir==lastDir&&!changes.touchesRange(entry.from,entry.to))result.push(new CachedOrder(changes.mapPos(entry.from,1),changes.mapPos(entry.to,-1),entry.dir,entry.isolates,false,entry.order));}return result;}}function attrsFromFacet(view,facet,base){for(let sources=view.state.facet(facet),i=sources.length-1;i>=0;i--){let source=sources[i],value=typeof source==\\\"function\\\"?source(view):source;if(value)combineAttrs(value,base);}return base;}const currentPlatform=browser.mac?\\\"mac\\\":browser.windows?\\\"win\\\":browser.linux?\\\"linux\\\":\\\"key\\\";function normalizeKeyName(name,platform){const parts=name.split(/-(?!$)/);let result=parts[parts.length-1];if(result==\\\"Space\\\")result=\\\" \\\";let alt,ctrl,shift,meta;for(let i=0;i\u003Cparts.length-1;++i){const mod=parts[i];if(/^(cmd|meta|m)$/i.test(mod))meta=true;else if(/^a(lt)?$/i.test(mod))alt=true;else if(/^(c|ctrl|control)$/i.test(mod))ctrl=true;else if(/^s(hift)?$/i.test(mod))shift=true;else if(/^mod$/i.test(mod)){if(platform==\\\"mac\\\")meta=true;else ctrl=true;}else throw new Error(\\\"Unrecognized modifier name: \\\"+mod);}if(alt)result=\\\"Alt-\\\"+result;if(ctrl)result=\\\"Ctrl-\\\"+result;if(meta)result=\\\"Meta-\\\"+result;if(shift)result=\\\"Shift-\\\"+result;return result;}function modifiers(name,event,shift){if(event.altKey)name=\\\"Alt-\\\"+name;if(event.ctrlKey)name=\\\"Ctrl-\\\"+name;if(event.metaKey)name=\\\"Meta-\\\"+name;if(shift!==false&&event.shiftKey)name=\\\"Shift-\\\"+name;return name;}const handleKeyEvents=Prec.default(EditorView.domEventHandlers({keydown(event,view){return runHandlers(getKeymap(view.state),event,view,\\\"editor\\\");}}));const keymap=Facet.define({enables:handleKeyEvents});const Keymaps=new WeakMap();function getKeymap(state){let bindings=state.facet(keymap);let map=Keymaps.get(bindings);if(!map)Keymaps.set(bindings,map=buildKeymap(bindings.reduce((a,b)=>a.concat(b),[])));return map;}function runScopeHandlers(view,event,scope){return runHandlers(getKeymap(view.state),event,view,scope);}let storedPrefix=null;const PrefixTimeout=4000;function buildKeymap(bindings,platform=currentPlatform){let bound=Object.create(null);let isPrefix=Object.create(null);let checkPrefix=(name,is)=>{let current=isPrefix[name];if(current==null)isPrefix[name]=is;else if(current!=is)throw new Error(\\\"Key binding \\\"+name+\\\" is used both as a regular binding and as a multi-stroke prefix\\\");};let add=(scope,key,command,preventDefault,stopPropagation)=>{var _a,_b;let scopeObj=bound[scope]||(bound[scope]=Object.create(null));let parts=key.split(/ (?!$)/).map(k=>normalizeKeyName(k,platform));for(let i=1;i\u003Cparts.length;i++){let prefix=parts.slice(0,i).join(\\\" \\\");checkPrefix(prefix,true);if(!scopeObj[prefix])scopeObj[prefix]={preventDefault:true,stopPropagation:false,run:[view=>{let ourObj=storedPrefix={view,prefix,scope};setTimeout(()=>{if(storedPrefix==ourObj)storedPrefix=null;},PrefixTimeout);return true;}]};}let full=parts.join(\\\" \\\");checkPrefix(full,false);let binding=scopeObj[full]||(scopeObj[full]={preventDefault:false,stopPropagation:false,run:((_b=(_a=scopeObj._any)===null||_a===void 0?void 0:_a.run)===null||_b===void 0?void 0:_b.slice())||[]});if(command)binding.run.push(command);if(preventDefault)binding.preventDefault=true;if(stopPropagation)binding.stopPropagation=true;};for(let _i97=0,_length97=bindings.length;_i97\u003C_length97;_i97++){let b=bindings[_i97];let scopes=b.scope?b.scope.split(\\\" \\\"):[\\\"editor\\\"];if(b.any)for(let _i98=0,_length98=scopes.length;_i98\u003C_length98;_i98++){let scope=scopes[_i98];let scopeObj=bound[scope]||(bound[scope]=Object.create(null));if(!scopeObj._any)scopeObj._any={preventDefault:false,stopPropagation:false,run:[]};for(let key in scopeObj)scopeObj[key].run.push(b.any);}let name=b[platform]||b.key;if(!name)continue;for(let _i99=0,_length99=scopes.length;_i99\u003C_length99;_i99++){let scope=scopes[_i99];add(scope,name,b.run,b.preventDefault,b.stopPropagation);if(b.shift)add(scope,\\\"Shift-\\\"+name,b.shift,b.preventDefault,b.stopPropagation);}}return bound;}function runHandlers(map,event,view,scope){let name=keyName(event);let charCode=codePointAt(name,0),isChar=codePointSize(charCode)==name.length&&name!=\\\" \\\";let prefix=\\\"\\\",handled=false,prevented=false,stopPropagation=false;if(storedPrefix&&storedPrefix.view==view&&storedPrefix.scope==scope){prefix=storedPrefix.prefix+\\\" \\\";if(modifierCodes.indexOf(event.keyCode)\u003C0){prevented=true;storedPrefix=null;}}let ran=new Set();let runFor=binding=>{if(binding){for(let _i100=0,_binding$run=binding.run,_length100=_binding$run.length;_i100\u003C_length100;_i100++){let cmd=_binding$run[_i100];if(!ran.has(cmd)){ran.add(cmd);if(cmd(view,event)){if(binding.stopPropagation)stopPropagation=true;return true;}}}if(binding.preventDefault){if(binding.stopPropagation)stopPropagation=true;prevented=true;}}return false;};let scopeObj=map[scope],baseName,shiftName;if(scopeObj){if(runFor(scopeObj[prefix+modifiers(name,event,!isChar)])){handled=true;}else if(isChar&&(event.altKey||event.metaKey||event.ctrlKey)&&!(browser.windows&&event.ctrlKey&&event.altKey)&&(baseName=base$1[event.keyCode])&&baseName!=name){if(runFor(scopeObj[prefix+modifiers(baseName,event,true)])){handled=true;}else if(event.shiftKey&&(shiftName=shift[event.keyCode])!=name&&shiftName!=baseName&&runFor(scopeObj[prefix+modifiers(shiftName,event,false)])){handled=true;}}else if(isChar&&event.shiftKey&&runFor(scopeObj[prefix+modifiers(name,event,true)])){handled=true;}if(!handled&&runFor(scopeObj._any))handled=true;}if(prevented)handled=true;if(handled&&stopPropagation)event.stopPropagation();return handled;}class RectangleMarker{constructor(className,left,top,width,height){this.className=className;this.left=left;this.top=top;this.width=width;this.height=height;}draw(){let elt=document.createElement(\\\"div\\\");elt.className=this.className;this.adjust(elt);return elt;}update(elt,prev){if(prev.className!=this.className)return false;this.adjust(elt);return true;}adjust(elt){elt.style.left=this.left+\\\"px\\\";elt.style.top=this.top+\\\"px\\\";if(this.width!=null)elt.style.width=this.width+\\\"px\\\";elt.style.height=this.height+\\\"px\\\";}eq(p){return this.left==p.left&&this.top==p.top&&this.width==p.width&&this.height==p.height&&this.className==p.className;}static forRange(view,className,range){if(range.empty){let pos=view.coordsAtPos(range.head,range.assoc||1);if(!pos)return[];let base=getBase(view);return[new RectangleMarker(className,pos.left-base.left,pos.top-base.top,null,pos.bottom-pos.top)];}else{return rectanglesForRange(view,className,range);}}}function getBase(view){let rect=view.scrollDOM.getBoundingClientRect();let left=view.textDirection==Direction.LTR?rect.left:rect.right-view.scrollDOM.clientWidth*view.scaleX;return{left:left-view.scrollDOM.scrollLeft*view.scaleX,top:rect.top-view.scrollDOM.scrollTop*view.scaleY};}function wrappedLine(view,pos,inside){let range=EditorSelection.cursor(pos);return{from:Math.max(inside.from,view.moveToLineBoundary(range,false,true).from),to:Math.min(inside.to,view.moveToLineBoundary(range,true,true).from),type:BlockType.Text};}function rectanglesForRange(view,className,range){if(range.to\u003C=view.viewport.from||range.from>=view.viewport.to)return[];let from=Math.max(range.from,view.viewport.from),to=Math.min(range.to,view.viewport.to);let ltr=view.textDirection==Direction.LTR;let content=view.contentDOM,contentRect=content.getBoundingClientRect(),base=getBase(view);let lineElt=content.querySelector(\\\".cm-line\\\"),lineStyle=lineElt&&window.getComputedStyle(lineElt);let leftSide=contentRect.left+(lineStyle?parseInt(lineStyle.paddingLeft)+Math.min(0,parseInt(lineStyle.textIndent)):0);let rightSide=contentRect.right-(lineStyle?parseInt(lineStyle.paddingRight):0);let startBlock=blockAt(view,from),endBlock=blockAt(view,to);let visualStart=startBlock.type==BlockType.Text?startBlock:null;let visualEnd=endBlock.type==BlockType.Text?endBlock:null;if(visualStart&&(view.lineWrapping||startBlock.widgetLineBreaks))visualStart=wrappedLine(view,from,visualStart);if(visualEnd&&(view.lineWrapping||endBlock.widgetLineBreaks))visualEnd=wrappedLine(view,to,visualEnd);if(visualStart&&visualEnd&&visualStart.from==visualEnd.from){return pieces(drawForLine(range.from,range.to,visualStart));}else{let top=visualStart?drawForLine(range.from,null,visualStart):drawForWidget(startBlock,false);let bottom=visualEnd?drawForLine(null,range.to,visualEnd):drawForWidget(endBlock,true);let between=[];if((visualStart||startBlock).to\u003C(visualEnd||endBlock).from-(visualStart&&visualEnd?1:0)||startBlock.widgetLineBreaks>1&&top.bottom+view.defaultLineHeight/2\u003Cbottom.top)between.push(piece(leftSide,top.bottom,rightSide,bottom.top));else if(top.bottom\u003Cbottom.top&&view.elementAtHeight((top.bottom+bottom.top)/2).type==BlockType.Text)top.bottom=bottom.top=(top.bottom+bottom.top)/2;return pieces(top).concat(between).concat(pieces(bottom));}function piece(left,top,right,bottom){return new RectangleMarker(className,left-base.left,top-base.top-0.01,right-left,bottom-top+0.01);}function pieces({top,bottom,horizontal}){let pieces=[];for(let i=0;i\u003Chorizontal.length;i+=2)pieces.push(piece(horizontal[i],top,horizontal[i+1],bottom));return pieces;}function drawForLine(from,to,line){let top=1e9,bottom=-1e9,horizontal=[];function addSpan(from,fromOpen,to,toOpen,dir){let fromCoords=view.coordsAtPos(from,from==line.to?-2:2);let toCoords=view.coordsAtPos(to,to==line.from?2:-2);if(!fromCoords||!toCoords)return;top=Math.min(fromCoords.top,toCoords.top,top);bottom=Math.max(fromCoords.bottom,toCoords.bottom,bottom);if(dir==Direction.LTR)horizontal.push(ltr&&fromOpen?leftSide:fromCoords.left,ltr&&toOpen?rightSide:toCoords.right);else horizontal.push(!ltr&&toOpen?leftSide:toCoords.left,!ltr&&fromOpen?rightSide:fromCoords.right);}let start=from!==null&&from!==void 0?from:line.from,end=to!==null&&to!==void 0?to:line.to;for(let _i101=0,_view$visibleRanges=view.visibleRanges,_length101=_view$visibleRanges.length;_i101\u003C_length101;_i101++){let r=_view$visibleRanges[_i101];if(r.to>start&&r.from\u003Cend){for(let pos=Math.max(r.from,start),endPos=Math.min(r.to,end);;){let docLine=view.state.doc.lineAt(pos);for(let _i102=0,_view$bidiSpans=view.bidiSpans(docLine),_length102=_view$bidiSpans.length;_i102\u003C_length102;_i102++){let span=_view$bidiSpans[_i102];let spanFrom=span.from+docLine.from,spanTo=span.to+docLine.from;if(spanFrom>=endPos)break;if(spanTo>pos)addSpan(Math.max(spanFrom,pos),from==null&&spanFrom\u003C=start,Math.min(spanTo,endPos),to==null&&spanTo>=end,span.dir);}pos=docLine.to+1;if(pos>=endPos)break;}}}if(horizontal.length==0)addSpan(start,from==null,end,to==null,view.textDirection);return{top,bottom,horizontal};}function drawForWidget(block,top){let y=contentRect.top+(top?block.top:block.bottom);return{top:y,bottom:y,horizontal:[]};}}function sameMarker(a,b){return a.constructor==b.constructor&&a.eq(b);}class LayerView{constructor(view,layer){this.view=view;this.layer=layer;this.drawn=[];this.scaleX=1;this.scaleY=1;this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)};this.dom=view.scrollDOM.appendChild(document.createElement(\\\"div\\\"));this.dom.classList.add(\\\"cm-layer\\\");if(layer.above)this.dom.classList.add(\\\"cm-layer-above\\\");if(layer.class)this.dom.classList.add(layer.class);this.scale();this.dom.setAttribute(\\\"aria-hidden\\\",\\\"true\\\");this.setOrder(view.state);view.requestMeasure(this.measureReq);if(layer.mount)layer.mount(this.dom,view);}update(update){if(update.startState.facet(layerOrder)!=update.state.facet(layerOrder))this.setOrder(update.state);if(this.layer.update(update,this.dom)||update.geometryChanged){this.scale();update.view.requestMeasure(this.measureReq);}}docViewUpdate(view){if(this.layer.updateOnDocViewUpdate!==false)view.requestMeasure(this.measureReq);}setOrder(state){let pos=0,order=state.facet(layerOrder);while(pos\u003Corder.length&&order[pos]!=this.layer)pos++;this.dom.style.zIndex=String((this.layer.above?150:-1)-pos);}measure(){return this.layer.markers(this.view);}scale(){let{scaleX,scaleY}=this.view;if(scaleX!=this.scaleX||scaleY!=this.scaleY){this.scaleX=scaleX;this.scaleY=scaleY;this.dom.style.transform=`scale(${1/scaleX}, ${1/scaleY})`;}}draw(markers){if(markers.length!=this.drawn.length||markers.some((p,i)=>!sameMarker(p,this.drawn[i]))){let old=this.dom.firstChild,oldI=0;for(let _i103=0,_length103=markers.length;_i103\u003C_length103;_i103++){let marker=markers[_i103];if(marker.update&&old&&marker.constructor&&this.drawn[oldI].constructor&&marker.update(old,this.drawn[oldI])){old=old.nextSibling;oldI++;}else{this.dom.insertBefore(marker.draw(),old);}}while(old){let next=old.nextSibling;old.remove();old=next;}this.drawn=markers;}}destroy(){if(this.layer.destroy)this.layer.destroy(this.dom,this.view);this.dom.remove();}}const layerOrder=Facet.define();function layer(config){return[ViewPlugin.define(v=>new LayerView(v,config)),layerOrder.of(config)];}const CanHidePrimary=!browser.ios;const selectionConfig=Facet.define({combine(configs){return combineConfig(configs,{cursorBlinkRate:1200,drawRangeCursor:true},{cursorBlinkRate:(a,b)=>Math.min(a,b),drawRangeCursor:(a,b)=>a||b});}});function drawSelection(config={}){return[selectionConfig.of(config),cursorLayer,selectionLayer,hideNativeSelection,nativeSelectionHidden.of(true)];}function getDrawSelectionConfig(state){return state.facet(selectionConfig);}function configChanged$1(update){return update.startState.facet(selectionConfig)!=update.state.facet(selectionConfig);}const cursorLayer=layer({above:true,markers(view){let{state}=view,conf=state.facet(selectionConfig);let cursors=[];for(let _i104=0,_state$selection$rang3=state.selection.ranges,_length104=_state$selection$rang3.length;_i104\u003C_length104;_i104++){let r=_state$selection$rang3[_i104];let prim=r==state.selection.main;if(r.empty?!prim||CanHidePrimary:conf.drawRangeCursor){let className=prim?\\\"cm-cursor cm-cursor-primary\\\":\\\"cm-cursor cm-cursor-secondary\\\";let cursor=r.empty?r:EditorSelection.cursor(r.head,r.head>r.anchor?-1:1);for(let _i105=0,_RectangleMarker$forR=RectangleMarker.forRange(view,className,cursor),_length105=_RectangleMarker$forR.length;_i105\u003C_length105;_i105++){let piece=_RectangleMarker$forR[_i105];cursors.push(piece);}}}return cursors;},update(update,dom){if(update.transactions.some(tr=>tr.selection))dom.style.animationName=dom.style.animationName==\\\"cm-blink\\\"?\\\"cm-blink2\\\":\\\"cm-blink\\\";let confChange=configChanged$1(update);if(confChange)setBlinkRate(update.state,dom);return update.docChanged||update.selectionSet||confChange;},mount(dom,view){setBlinkRate(view.state,dom);},class:\\\"cm-cursorLayer\\\"});function setBlinkRate(state,dom){dom.style.animationDuration=state.facet(selectionConfig).cursorBlinkRate+\\\"ms\\\";}const selectionLayer=layer({above:false,markers(view){return view.state.selection.ranges.map(r=>r.empty?[]:RectangleMarker.forRange(view,\\\"cm-selectionBackground\\\",r)).reduce((a,b)=>a.concat(b));},update(update,dom){return update.docChanged||update.selectionSet||update.viewportChanged||configChanged$1(update);},class:\\\"cm-selectionLayer\\\"});const themeSpec={\\\".cm-line\\\":{\\\"& ::selection\\\":{backgroundColor:\\\"transparent !important\\\"},\\\"&::selection\\\":{backgroundColor:\\\"transparent !important\\\"}}};if(CanHidePrimary){themeSpec[\\\".cm-line\\\"].caretColor=\\\"transparent !important\\\";themeSpec[\\\".cm-content\\\"]={caretColor:\\\"transparent !important\\\"};}const hideNativeSelection=Prec.highest(EditorView.theme(themeSpec));const setDropCursorPos=StateEffect.define({map(pos,mapping){return pos==null?null:mapping.mapPos(pos);}});const dropCursorPos=StateField.define({create(){return null;},update(pos,tr){if(pos!=null)pos=tr.changes.mapPos(pos);return tr.effects.reduce((pos,e)=>e.is(setDropCursorPos)?e.value:pos,pos);}});const drawDropCursor=ViewPlugin.fromClass(class{constructor(view){this.view=view;this.cursor=null;this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)};}update(update){var _a;let cursorPos=update.state.field(dropCursorPos);if(cursorPos==null){if(this.cursor!=null){(_a=this.cursor)===null||_a===void 0?void 0:_a.remove();this.cursor=null;}}else{if(!this.cursor){this.cursor=this.view.scrollDOM.appendChild(document.createElement(\\\"div\\\"));this.cursor.className=\\\"cm-dropCursor\\\";}if(update.startState.field(dropCursorPos)!=cursorPos||update.docChanged||update.geometryChanged)this.view.requestMeasure(this.measureReq);}}readPos(){let{view}=this;let pos=view.state.field(dropCursorPos);let rect=pos!=null&&view.coordsAtPos(pos);if(!rect)return null;let outer=view.scrollDOM.getBoundingClientRect();return{left:rect.left-outer.left+view.scrollDOM.scrollLeft*view.scaleX,top:rect.top-outer.top+view.scrollDOM.scrollTop*view.scaleY,height:rect.bottom-rect.top};}drawCursor(pos){if(this.cursor){let{scaleX,scaleY}=this.view;if(pos){this.cursor.style.left=pos.left/scaleX+\\\"px\\\";this.cursor.style.top=pos.top/scaleY+\\\"px\\\";this.cursor.style.height=pos.height/scaleY+\\\"px\\\";}else{this.cursor.style.left=\\\"-100000px\\\";}}}destroy(){if(this.cursor)this.cursor.remove();}setDropPos(pos){if(this.view.state.field(dropCursorPos)!=pos)this.view.dispatch({effects:setDropCursorPos.of(pos)});}},{eventObservers:{dragover(event){this.setDropPos(this.view.posAtCoords({x:event.clientX,y:event.clientY}));},dragleave(event){if(event.target==this.view.contentDOM||!this.view.contentDOM.contains(event.relatedTarget))this.setDropPos(null);},dragend(){this.setDropPos(null);},drop(){this.setDropPos(null);}}});function dropCursor(){return[dropCursorPos,drawDropCursor];}function iterMatches(doc,re,from,to,f){re.lastIndex=0;for(let cursor=doc.iterRange(from,to),pos=from,m;!cursor.next().done;pos+=cursor.value.length){if(!cursor.lineBreak)while(m=re.exec(cursor.value))f(pos+m.index,m);}}function matchRanges(view,maxLength){let visible=view.visibleRanges;if(visible.length==1&&visible[0].from==view.viewport.from&&visible[0].to==view.viewport.to)return visible;let result=[];for(let _i106=0,_length106=visible.length;_i106\u003C_length106;_i106++){let{from,to}=visible[_i106];from=Math.max(view.state.doc.lineAt(from).from,from-maxLength);to=Math.min(view.state.doc.lineAt(to).to,to+maxLength);if(result.length&&result[result.length-1].to>=from)result[result.length-1].to=to;else result.push({from,to});}return result;}class MatchDecorator{constructor(config){const{regexp,decoration,decorate,boundary,maxLength=1000}=config;if(!regexp.global)throw new RangeError(\\\"The regular expression given to MatchDecorator should have its 'g' flag set\\\");this.regexp=regexp;if(decorate){this.addMatch=(match,view,from,add)=>decorate(add,from,from+match[0].length,match,view);}else if(typeof decoration==\\\"function\\\"){this.addMatch=(match,view,from,add)=>{let deco=decoration(match,view,from);if(deco)add(from,from+match[0].length,deco);};}else if(decoration){this.addMatch=(match,_view,from,add)=>add(from,from+match[0].length,decoration);}else{throw new RangeError(\\\"Either 'decorate' or 'decoration' should be provided to MatchDecorator\\\");}this.boundary=boundary;this.maxLength=maxLength;}createDeco(view){let build=new RangeSetBuilder(),add=build.add.bind(build);for(let _i107=0,_matchRanges=matchRanges(view,this.maxLength),_length107=_matchRanges.length;_i107\u003C_length107;_i107++){let{from,to}=_matchRanges[_i107];iterMatches(view.state.doc,this.regexp,from,to,(from,m)=>this.addMatch(m,view,from,add));}return build.finish();}updateDeco(update,deco){let changeFrom=1e9,changeTo=-1;if(update.docChanged)update.changes.iterChanges((_f,_t,from,to)=>{if(to>update.view.viewport.from&&from\u003Cupdate.view.viewport.to){changeFrom=Math.min(from,changeFrom);changeTo=Math.max(to,changeTo);}});if(update.viewportChanged||changeTo-changeFrom>1000)return this.createDeco(update.view);if(changeTo>-1)return this.updateRange(update.view,deco.map(update.changes),changeFrom,changeTo);return deco;}updateRange(view,deco,updateFrom,updateTo){for(let _i108=0,_view$visibleRanges2=view.visibleRanges,_length108=_view$visibleRanges2.length;_i108\u003C_length108;_i108++){let r=_view$visibleRanges2[_i108];let from=Math.max(r.from,updateFrom),to=Math.min(r.to,updateTo);if(to>from){let fromLine=view.state.doc.lineAt(from),toLine=fromLine.to\u003Cto?view.state.doc.lineAt(to):fromLine;let start=Math.max(r.from,fromLine.from),end=Math.min(r.to,toLine.to);if(this.boundary){for(;from>fromLine.from;from--)if(this.boundary.test(fromLine.text[from-1-fromLine.from])){start=from;break;}for(;to\u003CtoLine.to;to++)if(this.boundary.test(toLine.text[to-toLine.from])){end=to;break;}}let ranges=[],m;let add=(from,to,deco)=>ranges.push(deco.range(from,to));if(fromLine==toLine){this.regexp.lastIndex=start-fromLine.from;while((m=this.regexp.exec(fromLine.text))&&m.index\u003Cend-fromLine.from)this.addMatch(m,view,m.index+fromLine.from,add);}else{iterMatches(view.state.doc,this.regexp,start,end,(from,m)=>this.addMatch(m,view,from,add));}deco=deco.update({filterFrom:start,filterTo:end,filter:(from,to)=>from\u003Cstart||to>end,add:ranges});}}return deco;}}const UnicodeRegexpSupport=/x/.unicode!=null?\\\"gu\\\":\\\"g\\\";const Specials=new RegExp(\\\"[\\\\u0000-\\\\u0008\\\\u000a-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u061c\\\\u200b\\\\u200e\\\\u200f\\\\u2028\\\\u2029\\\\u202d\\\\u202e\\\\u2066\\\\u2067\\\\u2069\\\\ufeff\\\\ufff9-\\\\ufffc]\\\",UnicodeRegexpSupport);const Names={0:\\\"null\\\",7:\\\"bell\\\",8:\\\"backspace\\\",10:\\\"newline\\\",11:\\\"vertical tab\\\",13:\\\"carriage return\\\",27:\\\"escape\\\",8203:\\\"zero width space\\\",8204:\\\"zero width non-joiner\\\",8205:\\\"zero width joiner\\\",8206:\\\"left-to-right mark\\\",8207:\\\"right-to-left mark\\\",8232:\\\"line separator\\\",8237:\\\"left-to-right override\\\",8238:\\\"right-to-left override\\\",8294:\\\"left-to-right isolate\\\",8295:\\\"right-to-left isolate\\\",8297:\\\"pop directional isolate\\\",8233:\\\"paragraph separator\\\",65279:\\\"zero width no-break space\\\",65532:\\\"object replacement\\\"};let _supportsTabSize=null;function supportsTabSize(){var _a;if(_supportsTabSize==null&&typeof document!=\\\"undefined\\\"&&document.body){let styles=document.body.style;_supportsTabSize=((_a=styles.tabSize)!==null&&_a!==void 0?_a:styles.MozTabSize)!=null;}return _supportsTabSize||false;}const specialCharConfig=Facet.define({combine(configs){let config=combineConfig(configs,{render:null,specialChars:Specials,addSpecialChars:null});if(config.replaceTabs=!supportsTabSize())config.specialChars=new RegExp(\\\"\\\\t|\\\"+config.specialChars.source,UnicodeRegexpSupport);if(config.addSpecialChars)config.specialChars=new RegExp(config.specialChars.source+\\\"|\\\"+config.addSpecialChars.source,UnicodeRegexpSupport);return config;}});function highlightSpecialChars(config={}){return[specialCharConfig.of(config),specialCharPlugin()];}let _plugin=null;function specialCharPlugin(){return _plugin||(_plugin=ViewPlugin.fromClass(class{constructor(view){this.view=view;this.decorations=Decoration.none;this.decorationCache=Object.create(null);this.decorator=this.makeDecorator(view.state.facet(specialCharConfig));this.decorations=this.decorator.createDeco(view);}makeDecorator(conf){return new MatchDecorator({regexp:conf.specialChars,decoration:(m,view,pos)=>{let{doc}=view.state;let code=codePointAt(m[0],0);if(code==9){let line=doc.lineAt(pos);let size=view.state.tabSize,col=countColumn(line.text,size,pos-line.from);return Decoration.replace({widget:new TabWidget((size-col%size)*this.view.defaultCharacterWidth/this.view.scaleX)});}return this.decorationCache[code]||(this.decorationCache[code]=Decoration.replace({widget:new SpecialCharWidget(conf,code)}));},boundary:conf.replaceTabs?undefined:/[^]/});}update(update){let conf=update.state.facet(specialCharConfig);if(update.startState.facet(specialCharConfig)!=conf){this.decorator=this.makeDecorator(conf);this.decorations=this.decorator.createDeco(update.view);}else{this.decorations=this.decorator.updateDeco(update,this.decorations);}}},{decorations:v=>v.decorations}));}const DefaultPlaceholder=\\\"\\\\u2022\\\";function placeholder$1(code){if(code>=32)return DefaultPlaceholder;if(code==10)return\\\"\\\\u2424\\\";return String.fromCharCode(9216+code);}class SpecialCharWidget extends WidgetType{constructor(options,code){super();this.options=options;this.code=code;}eq(other){return other.code==this.code;}toDOM(view){let ph=placeholder$1(this.code);let desc=view.state.phrase(\\\"Control character\\\")+\\\" \\\"+(Names[this.code]||\\\"0x\\\"+this.code.toString(16));let custom=this.options.render&&this.options.render(this.code,desc,ph);if(custom)return custom;let span=document.createElement(\\\"span\\\");span.textContent=ph;span.title=desc;span.setAttribute(\\\"aria-label\\\",desc);span.className=\\\"cm-specialChar\\\";return span;}ignoreEvent(){return false;}}class TabWidget extends WidgetType{constructor(width){super();this.width=width;}eq(other){return other.width==this.width;}toDOM(){let span=document.createElement(\\\"span\\\");span.textContent=\\\"\\\\t\\\";span.className=\\\"cm-tab\\\";span.style.width=this.width+\\\"px\\\";return span;}ignoreEvent(){return false;}}const plugin=ViewPlugin.fromClass(class{constructor(){this.height=1000;this.attrs={style:\\\"padding-bottom: 1000px\\\"};}update(update){let{view}=update;let height=view.viewState.editorHeight*view.scaleY-view.defaultLineHeight-view.documentPadding.top-0.5;if(height>=0&&height!=this.height){this.height=height;this.attrs={style:`padding-bottom: ${height}px`};}}});function scrollPastEnd(){return[plugin,contentAttributes.of(view=>{var _a;return((_a=view.plugin(plugin))===null||_a===void 0?void 0:_a.attrs)||null;})];}function highlightActiveLine(){return activeLineHighlighter;}const lineDeco=Decoration.line({class:\\\"cm-activeLine\\\"});const activeLineHighlighter=ViewPlugin.fromClass(class{constructor(view){this.decorations=this.getDeco(view);}update(update){if(update.docChanged||update.selectionSet)this.decorations=this.getDeco(update.view);}getDeco(view){let lastLineStart=-1,deco=[];for(let _i109=0,_view$state$selection=view.state.selection.ranges,_length109=_view$state$selection.length;_i109\u003C_length109;_i109++){let r=_view$state$selection[_i109];let line=view.lineBlockAt(r.head);if(line.from>lastLineStart){deco.push(lineDeco.range(line.from));lastLineStart=line.from;}}return Decoration.set(deco);}},{decorations:v=>v.decorations});class Placeholder extends WidgetType{constructor(content){super();this.content=content;}toDOM(){let wrap=document.createElement(\\\"span\\\");wrap.className=\\\"cm-placeholder\\\";wrap.style.pointerEvents=\\\"none\\\";wrap.appendChild(typeof this.content==\\\"string\\\"?document.createTextNode(this.content):this.content);if(typeof this.content==\\\"string\\\")wrap.setAttribute(\\\"aria-label\\\",\\\"placeholder \\\"+this.content);else wrap.setAttribute(\\\"aria-hidden\\\",\\\"true\\\");return wrap;}coordsAt(dom){let rects=dom.firstChild?clientRectsFor(dom.firstChild):[];if(!rects.length)return null;let style=window.getComputedStyle(dom.parentNode);let rect=flattenRect(rects[0],style.direction!=\\\"rtl\\\");let lineHeight=parseInt(style.lineHeight);if(rect.bottom-rect.top>lineHeight*1.5)return{left:rect.left,right:rect.right,top:rect.top,bottom:rect.top+lineHeight};return rect;}ignoreEvent(){return false;}}function placeholder(content){return ViewPlugin.fromClass(class{constructor(view){this.view=view;this.placeholder=content?Decoration.set([Decoration.widget({widget:new Placeholder(content),side:1}).range(0)]):Decoration.none;}get decorations(){return this.view.state.doc.length?Decoration.none:this.placeholder;}},{decorations:v=>v.decorations});}const MaxOff=2000;function rectangleFor(state,a,b){let startLine=Math.min(a.line,b.line),endLine=Math.max(a.line,b.line);let ranges=[];if(a.off>MaxOff||b.off>MaxOff||a.col\u003C0||b.col\u003C0){let startOff=Math.min(a.off,b.off),endOff=Math.max(a.off,b.off);for(let i=startLine;i\u003C=endLine;i++){let line=state.doc.line(i);if(line.length\u003C=endOff)ranges.push(EditorSelection.range(line.from+startOff,line.to+endOff));}}else{let startCol=Math.min(a.col,b.col),endCol=Math.max(a.col,b.col);for(let i=startLine;i\u003C=endLine;i++){let line=state.doc.line(i);let start=findColumn(line.text,startCol,state.tabSize,true);if(start\u003C0){ranges.push(EditorSelection.cursor(line.to));}else{let end=findColumn(line.text,endCol,state.tabSize);ranges.push(EditorSelection.range(line.from+start,line.from+end));}}}return ranges;}function absoluteColumn(view,x){let ref=view.coordsAtPos(view.viewport.from);return ref?Math.round(Math.abs((ref.left-x)/view.defaultCharacterWidth)):-1;}function getPos(view,event){let offset=view.posAtCoords({x:event.clientX,y:event.clientY},false);let line=view.state.doc.lineAt(offset),off=offset-line.from;let col=off>MaxOff?-1:off==line.length?absoluteColumn(view,event.clientX):countColumn(line.text,view.state.tabSize,offset-line.from);return{line:line.number,col,off};}function rectangleSelectionStyle(view,event){let start=getPos(view,event),startSel=view.state.selection;if(!start)return null;return{update(update){if(update.docChanged){let newStart=update.changes.mapPos(update.startState.doc.line(start.line).from);let newLine=update.state.doc.lineAt(newStart);start={line:newLine.number,col:start.col,off:Math.min(start.off,newLine.length)};startSel=startSel.map(update.changes);}},get(event,_extend,multiple){let cur=getPos(view,event);if(!cur)return startSel;let ranges=rectangleFor(view.state,start,cur);if(!ranges.length)return startSel;if(multiple)return EditorSelection.create(ranges.concat(startSel.ranges));else return EditorSelection.create(ranges);}};}function rectangularSelection(options){let filter=(options===null||options===void 0?void 0:options.eventFilter)||(e=>e.altKey&&e.button==0);return EditorView.mouseSelectionStyle.of((view,event)=>filter(event)?rectangleSelectionStyle(view,event):null);}const keys={Alt:[18,e=>!!e.altKey],Control:[17,e=>!!e.ctrlKey],Shift:[16,e=>!!e.shiftKey],Meta:[91,e=>!!e.metaKey]};const showCrosshair={style:\\\"cursor: crosshair\\\"};function crosshairCursor(options={}){let[code,getter]=keys[options.key||\\\"Alt\\\"];let plugin=ViewPlugin.fromClass(class{constructor(view){this.view=view;this.isDown=false;}set(isDown){if(this.isDown!=isDown){this.isDown=isDown;this.view.update([]);}}},{eventObservers:{keydown(e){this.set(e.keyCode==code||getter(e));},keyup(e){if(e.keyCode==code||!getter(e))this.set(false);},mousemove(e){this.set(getter(e));}}});return[plugin,EditorView.contentAttributes.of(view=>{var _a;return((_a=view.plugin(plugin))===null||_a===void 0?void 0:_a.isDown)?showCrosshair:null;})];}const Outside=\\\"-10000px\\\";class TooltipViewManager{constructor(view,facet,createTooltipView,removeTooltipView){this.facet=facet;this.createTooltipView=createTooltipView;this.removeTooltipView=removeTooltipView;this.input=view.state.facet(facet);this.tooltips=this.input.filter(t=>t);let prev=null;this.tooltipViews=this.tooltips.map(t=>prev=createTooltipView(t,prev));}update(update,above){var _a;let input=update.state.facet(this.facet);let tooltips=input.filter(x=>x);if(input===this.input){for(let _i110=0,_this$tooltipViews=this.tooltipViews,_length110=_this$tooltipViews.length;_i110\u003C_length110;_i110++){let t=_this$tooltipViews[_i110];if(t.update)t.update(update);}return false;}let tooltipViews=[],newAbove=above?[]:null;for(let i=0;i\u003Ctooltips.length;i++){let tip=tooltips[i],known=-1;if(!tip)continue;for(let i=0;i\u003Cthis.tooltips.length;i++){let other=this.tooltips[i];if(other&&other.create==tip.create)known=i;}if(known\u003C0){tooltipViews[i]=this.createTooltipView(tip,i?tooltipViews[i-1]:null);if(newAbove)newAbove[i]=!!tip.above;}else{let tooltipView=tooltipViews[i]=this.tooltipViews[known];if(newAbove)newAbove[i]=above[known];if(tooltipView.update)tooltipView.update(update);}}for(let _i111=0,_this$tooltipViews2=this.tooltipViews,_length111=_this$tooltipViews2.length;_i111\u003C_length111;_i111++){let t=_this$tooltipViews2[_i111];if(tooltipViews.indexOf(t)\u003C0){this.removeTooltipView(t);(_a=t.destroy)===null||_a===void 0?void 0:_a.call(t);}}if(above){newAbove.forEach((val,i)=>above[i]=val);above.length=newAbove.length;}this.input=input;this.tooltips=tooltips;this.tooltipViews=tooltipViews;return true;}}function tooltips(config={}){return tooltipConfig.of(config);}function windowSpace(view){let{win}=view;return{top:0,left:0,bottom:win.innerHeight,right:win.innerWidth};}const tooltipConfig=Facet.define({combine:values=>{var _a,_b,_c;return{position:browser.ios?\\\"absolute\\\":((_a=values.find(conf=>conf.position))===null||_a===void 0?void 0:_a.position)||\\\"fixed\\\",parent:((_b=values.find(conf=>conf.parent))===null||_b===void 0?void 0:_b.parent)||null,tooltipSpace:((_c=values.find(conf=>conf.tooltipSpace))===null||_c===void 0?void 0:_c.tooltipSpace)||windowSpace};}});const knownHeight=new WeakMap();const tooltipPlugin=ViewPlugin.fromClass(class{constructor(view){this.view=view;this.above=[];this.inView=true;this.madeAbsolute=false;this.lastTransaction=0;this.measureTimeout=-1;let config=view.state.facet(tooltipConfig);this.position=config.position;this.parent=config.parent;this.classes=view.themeClasses;this.createContainer();this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this};this.resizeObserver=typeof ResizeObserver==\\\"function\\\"?new ResizeObserver(()=>this.measureSoon()):null;this.manager=new TooltipViewManager(view,showTooltip,(t,p)=>this.createTooltip(t,p),t=>{if(this.resizeObserver)this.resizeObserver.unobserve(t.dom);t.dom.remove();});this.above=this.manager.tooltips.map(t=>!!t.above);this.intersectionObserver=typeof IntersectionObserver==\\\"function\\\"?new IntersectionObserver(entries=>{if(Date.now()>this.lastTransaction-50&&entries.length>0&&entries[entries.length-1].intersectionRatio\u003C1)this.measureSoon();},{threshold:[1]}):null;this.observeIntersection();view.win.addEventListener(\\\"resize\\\",this.measureSoon=this.measureSoon.bind(this));this.maybeMeasure();}createContainer(){if(this.parent){this.container=document.createElement(\\\"div\\\");this.container.style.position=\\\"relative\\\";this.container.className=this.view.themeClasses;this.parent.appendChild(this.container);}else{this.container=this.view.dom;}}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let _i112=0,_this$manager$tooltip=this.manager.tooltipViews,_length112=_this$manager$tooltip.length;_i112\u003C_length112;_i112++){let tooltip=_this$manager$tooltip[_i112];this.intersectionObserver.observe(tooltip.dom);}}}measureSoon(){if(this.measureTimeout\u003C0)this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1;this.maybeMeasure();},50);}update(update){if(update.transactions.length)this.lastTransaction=Date.now();let updated=this.manager.update(update,this.above);if(updated)this.observeIntersection();let shouldMeasure=updated||update.geometryChanged;let newConfig=update.state.facet(tooltipConfig);if(newConfig.position!=this.position&&!this.madeAbsolute){this.position=newConfig.position;for(let _i113=0,_this$manager$tooltip2=this.manager.tooltipViews,_length113=_this$manager$tooltip2.length;_i113\u003C_length113;_i113++){let t=_this$manager$tooltip2[_i113];t.dom.style.position=this.position;}shouldMeasure=true;}if(newConfig.parent!=this.parent){if(this.parent)this.container.remove();this.parent=newConfig.parent;this.createContainer();for(let _i114=0,_this$manager$tooltip3=this.manager.tooltipViews,_length114=_this$manager$tooltip3.length;_i114\u003C_length114;_i114++){let t=_this$manager$tooltip3[_i114];this.container.appendChild(t.dom);}shouldMeasure=true;}else if(this.parent&&this.view.themeClasses!=this.classes){this.classes=this.container.className=this.view.themeClasses;}if(shouldMeasure)this.maybeMeasure();}createTooltip(tooltip,prev){let tooltipView=tooltip.create(this.view);let before=prev?prev.dom:null;tooltipView.dom.classList.add(\\\"cm-tooltip\\\");if(tooltip.arrow&&!tooltipView.dom.querySelector(\\\".cm-tooltip > .cm-tooltip-arrow\\\")){let arrow=document.createElement(\\\"div\\\");arrow.className=\\\"cm-tooltip-arrow\\\";tooltipView.dom.insertBefore(arrow,before);}tooltipView.dom.style.position=this.position;tooltipView.dom.style.top=Outside;tooltipView.dom.style.left=\\\"0px\\\";this.container.insertBefore(tooltipView.dom,before);if(tooltipView.mount)tooltipView.mount(this.view);if(this.resizeObserver)this.resizeObserver.observe(tooltipView.dom);return tooltipView;}destroy(){var _a,_b,_c;this.view.win.removeEventListener(\\\"resize\\\",this.measureSoon);for(let _i115=0,_this$manager$tooltip4=this.manager.tooltipViews,_length115=_this$manager$tooltip4.length;_i115\u003C_length115;_i115++){let tooltipView=_this$manager$tooltip4[_i115];tooltipView.dom.remove();(_a=tooltipView.destroy)===null||_a===void 0?void 0:_a.call(tooltipView);}if(this.parent)this.container.remove();(_b=this.resizeObserver)===null||_b===void 0?void 0:_b.disconnect();(_c=this.intersectionObserver)===null||_c===void 0?void 0:_c.disconnect();clearTimeout(this.measureTimeout);}readMeasure(){let editor=this.view.dom.getBoundingClientRect();let scaleX=1,scaleY=1,makeAbsolute=false;if(this.position==\\\"fixed\\\"&&this.manager.tooltipViews.length){let{dom}=this.manager.tooltipViews[0];if(browser.gecko){makeAbsolute=dom.offsetParent!=this.container.ownerDocument.body;}else if(dom.style.top==Outside&&dom.style.left==\\\"0px\\\"){let rect=dom.getBoundingClientRect();makeAbsolute=Math.abs(rect.top+10000)>1||Math.abs(rect.left)>1;}}if(makeAbsolute||this.position==\\\"absolute\\\"){if(this.parent){let rect=this.parent.getBoundingClientRect();if(rect.width&&rect.height){scaleX=rect.width/this.parent.offsetWidth;scaleY=rect.height/this.parent.offsetHeight;}}else{({scaleX,scaleY}=this.view.viewState);}}return{editor,parent:this.parent?this.container.getBoundingClientRect():editor,pos:this.manager.tooltips.map((t,i)=>{let tv=this.manager.tooltipViews[i];return tv.getCoords?tv.getCoords(t.pos):this.view.coordsAtPos(t.pos);}),size:this.manager.tooltipViews.map(({dom})=>dom.getBoundingClientRect()),space:this.view.state.facet(tooltipConfig).tooltipSpace(this.view),scaleX,scaleY,makeAbsolute};}writeMeasure(measured){var _a;if(measured.makeAbsolute){this.madeAbsolute=true;this.position=\\\"absolute\\\";for(let _i116=0,_this$manager$tooltip5=this.manager.tooltipViews,_length116=_this$manager$tooltip5.length;_i116\u003C_length116;_i116++){let t=_this$manager$tooltip5[_i116];t.dom.style.position=\\\"absolute\\\";}}let{editor,space,scaleX,scaleY}=measured;let others=[];for(let i=0;i\u003Cthis.manager.tooltips.length;i++){let tooltip=this.manager.tooltips[i],tView=this.manager.tooltipViews[i],{dom}=tView;let pos=measured.pos[i],size=measured.size[i];if(!pos||pos.bottom\u003C=Math.max(editor.top,space.top)||pos.top>=Math.min(editor.bottom,space.bottom)||pos.right\u003CMath.max(editor.left,space.left)-.1||pos.left>Math.min(editor.right,space.right)+.1){dom.style.top=Outside;continue;}let arrow=tooltip.arrow?tView.dom.querySelector(\\\".cm-tooltip-arrow\\\"):null;let arrowHeight=arrow?7:0;let width=size.right-size.left,height=(_a=knownHeight.get(tView))!==null&&_a!==void 0?_a:size.bottom-size.top;let offset=tView.offset||noOffset,ltr=this.view.textDirection==Direction.LTR;let left=size.width>space.right-space.left?ltr?space.left:space.right-size.width:ltr?Math.min(pos.left-(arrow?14:0)+offset.x,space.right-width):Math.max(space.left,pos.left-width+(arrow?14:0)-offset.x);let above=this.above[i];if(!tooltip.strictSide&&(above?pos.top-(size.bottom-size.top)-offset.y\u003Cspace.top:pos.bottom+(size.bottom-size.top)+offset.y>space.bottom)&&above==space.bottom-pos.bottom>pos.top-space.top)above=this.above[i]=!above;let spaceVert=(above?pos.top-space.top:space.bottom-pos.bottom)-arrowHeight;if(spaceVert\u003Cheight&&tView.resize!==false){if(spaceVert\u003Cthis.view.defaultLineHeight){dom.style.top=Outside;continue;}knownHeight.set(tView,height);dom.style.height=(height=spaceVert)/scaleY+\\\"px\\\";}else if(dom.style.height){dom.style.height=\\\"\\\";}let top=above?pos.top-height-arrowHeight-offset.y:pos.bottom+arrowHeight+offset.y;let right=left+width;if(tView.overlap!==true)for(let _i117=0,_length117=others.length;_i117\u003C_length117;_i117++){let r=others[_i117];if(r.left\u003Cright&&r.right>left&&r.top\u003Ctop+height&&r.bottom>top)top=above?r.top-height-2-arrowHeight:r.bottom+arrowHeight+2;}if(this.position==\\\"absolute\\\"){dom.style.top=(top-measured.parent.top)/scaleY+\\\"px\\\";dom.style.left=(left-measured.parent.left)/scaleX+\\\"px\\\";}else{dom.style.top=top/scaleY+\\\"px\\\";dom.style.left=left/scaleX+\\\"px\\\";}if(arrow){let arrowLeft=pos.left+(ltr?offset.x:-offset.x)-(left+14-7);arrow.style.left=arrowLeft/scaleX+\\\"px\\\";}if(tView.overlap!==true)others.push({left,top,right,bottom:top+height});dom.classList.toggle(\\\"cm-tooltip-above\\\",above);dom.classList.toggle(\\\"cm-tooltip-below\\\",!above);if(tView.positioned)tView.positioned(measured.space);}}maybeMeasure(){if(this.manager.tooltips.length){if(this.view.inView)this.view.requestMeasure(this.measureReq);if(this.inView!=this.view.inView){this.inView=this.view.inView;if(!this.inView)for(let _i118=0,_this$manager$tooltip6=this.manager.tooltipViews,_length118=_this$manager$tooltip6.length;_i118\u003C_length118;_i118++){let tv=_this$manager$tooltip6[_i118];tv.dom.style.top=Outside;}}}}},{eventObservers:{scroll(){this.maybeMeasure();}}});const baseTheme$5=EditorView.baseTheme({\\\".cm-tooltip\\\":{zIndex:100,boxSizing:\\\"border-box\\\"},\\\"&light .cm-tooltip\\\":{border:\\\"1px solid #bbb\\\",backgroundColor:\\\"#f5f5f5\\\"},\\\"&light .cm-tooltip-section:not(:first-child)\\\":{borderTop:\\\"1px solid #bbb\\\"},\\\"&dark .cm-tooltip\\\":{backgroundColor:\\\"#333338\\\",color:\\\"white\\\"},\\\".cm-tooltip-arrow\\\":{height:`${7}px`,width:`${7*2}px`,position:\\\"absolute\\\",zIndex:-1,overflow:\\\"hidden\\\",\\\"&:before, &:after\\\":{content:\\\"''\\\",position:\\\"absolute\\\",width:0,height:0,borderLeft:`${7}px solid transparent`,borderRight:`${7}px solid transparent`},\\\".cm-tooltip-above &\\\":{bottom:`-${7}px`,\\\"&:before\\\":{borderTop:`${7}px solid #bbb`},\\\"&:after\\\":{borderTop:`${7}px solid #f5f5f5`,bottom:\\\"1px\\\"}},\\\".cm-tooltip-below &\\\":{top:`-${7}px`,\\\"&:before\\\":{borderBottom:`${7}px solid #bbb`},\\\"&:after\\\":{borderBottom:`${7}px solid #f5f5f5`,top:\\\"1px\\\"}}},\\\"&dark .cm-tooltip .cm-tooltip-arrow\\\":{\\\"&:before\\\":{borderTopColor:\\\"#333338\\\",borderBottomColor:\\\"#333338\\\"},\\\"&:after\\\":{borderTopColor:\\\"transparent\\\",borderBottomColor:\\\"transparent\\\"}}});const noOffset={x:0,y:0};const showTooltip=Facet.define({enables:[tooltipPlugin,baseTheme$5]});const showHoverTooltip=Facet.define({combine:inputs=>inputs.reduce((a,i)=>a.concat(i),[])});class HoverTooltipHost{static create(view){return new HoverTooltipHost(view);}constructor(view){this.view=view;this.mounted=false;this.dom=document.createElement(\\\"div\\\");this.dom.classList.add(\\\"cm-tooltip-hover\\\");this.manager=new TooltipViewManager(view,showHoverTooltip,(t,p)=>this.createHostedView(t,p),t=>t.dom.remove());}createHostedView(tooltip,prev){let hostedView=tooltip.create(this.view);hostedView.dom.classList.add(\\\"cm-tooltip-section\\\");this.dom.insertBefore(hostedView.dom,prev?prev.dom.nextSibling:this.dom.firstChild);if(this.mounted&&hostedView.mount)hostedView.mount(this.view);return hostedView;}mount(view){for(let _i119=0,_this$manager$tooltip7=this.manager.tooltipViews,_length119=_this$manager$tooltip7.length;_i119\u003C_length119;_i119++){let hostedView=_this$manager$tooltip7[_i119];if(hostedView.mount)hostedView.mount(view);}this.mounted=true;}positioned(space){for(let _i120=0,_this$manager$tooltip8=this.manager.tooltipViews,_length120=_this$manager$tooltip8.length;_i120\u003C_length120;_i120++){let hostedView=_this$manager$tooltip8[_i120];if(hostedView.positioned)hostedView.positioned(space);}}update(update){this.manager.update(update);}destroy(){var _a;for(let _i121=0,_this$manager$tooltip9=this.manager.tooltipViews,_length121=_this$manager$tooltip9.length;_i121\u003C_length121;_i121++){let t=_this$manager$tooltip9[_i121];(_a=t.destroy)===null||_a===void 0?void 0:_a.call(t);}}passProp(name){let value=undefined;for(let _i122=0,_this$manager$tooltip10=this.manager.tooltipViews,_length122=_this$manager$tooltip10.length;_i122\u003C_length122;_i122++){let view=_this$manager$tooltip10[_i122];let given=view[name];if(given!==undefined){if(value===undefined)value=given;else if(value!==given)return undefined;}}return value;}get offset(){return this.passProp(\\\"offset\\\");}get getCoords(){return this.passProp(\\\"getCoords\\\");}get overlap(){return this.passProp(\\\"overlap\\\");}get resize(){return this.passProp(\\\"resize\\\");}}const showHoverTooltipHost=showTooltip.compute([showHoverTooltip],state=>{let tooltips=state.facet(showHoverTooltip);if(tooltips.length===0)return null;return{pos:Math.min(...tooltips.map(t=>t.pos)),end:Math.max(...tooltips.map(t=>{var _a;return(_a=t.end)!==null&&_a!==void 0?_a:t.pos;})),create:HoverTooltipHost.create,above:tooltips[0].above,arrow:tooltips.some(t=>t.arrow)};});class HoverPlugin{constructor(view,source,field,setHover,hoverTime){this.view=view;this.source=source;this.field=field;this.setHover=setHover;this.hoverTime=hoverTime;this.hoverTimeout=-1;this.restartTimeout=-1;this.pending=null;this.lastMove={x:0,y:0,target:view.dom,time:0};this.checkHover=this.checkHover.bind(this);view.dom.addEventListener(\\\"mouseleave\\\",this.mouseleave=this.mouseleave.bind(this));view.dom.addEventListener(\\\"mousemove\\\",this.mousemove=this.mousemove.bind(this));}update(){if(this.pending){this.pending=null;clearTimeout(this.restartTimeout);this.restartTimeout=setTimeout(()=>this.startHover(),20);}}get active(){return this.view.state.field(this.field);}checkHover(){this.hoverTimeout=-1;if(this.active.length)return;let hovered=Date.now()-this.lastMove.time;if(hovered\u003Cthis.hoverTime)this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime-hovered);else this.startHover();}startHover(){clearTimeout(this.restartTimeout);let{view,lastMove}=this;let desc=view.docView.nearest(lastMove.target);if(!desc)return;let pos,side=1;if(desc instanceof WidgetView){pos=desc.posAtStart;}else{pos=view.posAtCoords(lastMove);if(pos==null)return;let posCoords=view.coordsAtPos(pos);if(!posCoords||lastMove.y\u003CposCoords.top||lastMove.y>posCoords.bottom||lastMove.x\u003CposCoords.left-view.defaultCharacterWidth||lastMove.x>posCoords.right+view.defaultCharacterWidth)return;let bidi=view.bidiSpans(view.state.doc.lineAt(pos)).find(s=>s.from\u003C=pos&&s.to>=pos);let rtl=bidi&&bidi.dir==Direction.RTL?-1:1;side=lastMove.x\u003CposCoords.left?-rtl:rtl;}let open=this.source(view,pos,side);if(open===null||open===void 0?void 0:open.then){let pending=this.pending={pos};open.then(result=>{if(this.pending==pending){this.pending=null;if(result&&!(Array.isArray(result)&&!result.length))view.dispatch({effects:this.setHover.of(Array.isArray(result)?result:[result])});}},e=>logException(view.state,e,\\\"hover tooltip\\\"));}else if(open&&!(Array.isArray(open)&&!open.length)){view.dispatch({effects:this.setHover.of(Array.isArray(open)?open:[open])});}}get tooltip(){let plugin=this.view.plugin(tooltipPlugin);let index=plugin?plugin.manager.tooltips.findIndex(t=>t.create==HoverTooltipHost.create):-1;return index>-1?plugin.manager.tooltipViews[index]:null;}mousemove(event){var _a,_b;this.lastMove={x:event.clientX,y:event.clientY,target:event.target,time:Date.now()};if(this.hoverTimeout\u003C0)this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime);let{active,tooltip}=this;if(active.length&&tooltip&&!isInTooltip(tooltip.dom,event)||this.pending){let{pos}=active[0]||this.pending,end=(_b=(_a=active[0])===null||_a===void 0?void 0:_a.end)!==null&&_b!==void 0?_b:pos;if(pos==end?this.view.posAtCoords(this.lastMove)!=pos:!isOverRange(this.view,pos,end,event.clientX,event.clientY)){this.view.dispatch({effects:this.setHover.of([])});this.pending=null;}}}mouseleave(event){clearTimeout(this.hoverTimeout);this.hoverTimeout=-1;let{active}=this;if(active.length){let{tooltip}=this;let inTooltip=tooltip&&tooltip.dom.contains(event.relatedTarget);if(!inTooltip)this.view.dispatch({effects:this.setHover.of([])});else this.watchTooltipLeave(tooltip.dom);}}watchTooltipLeave(tooltip){let watch=event=>{tooltip.removeEventListener(\\\"mouseleave\\\",watch);if(this.active.length&&!this.view.dom.contains(event.relatedTarget))this.view.dispatch({effects:this.setHover.of([])});};tooltip.addEventListener(\\\"mouseleave\\\",watch);}destroy(){clearTimeout(this.hoverTimeout);this.view.dom.removeEventListener(\\\"mouseleave\\\",this.mouseleave);this.view.dom.removeEventListener(\\\"mousemove\\\",this.mousemove);}}const tooltipMargin=4;function isInTooltip(tooltip,event){let rect=tooltip.getBoundingClientRect();return event.clientX>=rect.left-tooltipMargin&&event.clientX\u003C=rect.right+tooltipMargin&&event.clientY>=rect.top-tooltipMargin&&event.clientY\u003C=rect.bottom+tooltipMargin;}function isOverRange(view,from,to,x,y,margin){let rect=view.scrollDOM.getBoundingClientRect();let docBottom=view.documentTop+view.documentPadding.top+view.contentHeight;if(rect.left>x||rect.right\u003Cx||rect.top>y||Math.min(rect.bottom,docBottom)\u003Cy)return false;let pos=view.posAtCoords({x,y},false);return pos>=from&&pos\u003C=to;}function hoverTooltip(source,options={}){let setHover=StateEffect.define();let hoverState=StateField.define({create(){return[];},update(value,tr){if(value.length){if(options.hideOnChange&&(tr.docChanged||tr.selection))value=[];else if(options.hideOn)value=value.filter(v=>!options.hideOn(tr,v));if(tr.docChanged){let mapped=[];for(let _i123=0,_value2=value,_length123=_value2.length;_i123\u003C_length123;_i123++){let tooltip=_value2[_i123];let newPos=tr.changes.mapPos(tooltip.pos,-1,MapMode.TrackDel);if(newPos!=null){let copy=Object.assign(Object.create(null),tooltip);copy.pos=newPos;if(copy.end!=null)copy.end=tr.changes.mapPos(copy.end);mapped.push(copy);}}value=mapped;}}for(let _i124=0,_tr$effects4=tr.effects,_length124=_tr$effects4.length;_i124\u003C_length124;_i124++){let effect=_tr$effects4[_i124];if(effect.is(setHover))value=effect.value;if(effect.is(closeHoverTooltipEffect))value=[];}return value;},provide:f=>showHoverTooltip.from(f)});return[hoverState,ViewPlugin.define(view=>new HoverPlugin(view,source,hoverState,setHover,options.hoverTime||300)),showHoverTooltipHost];}function getTooltip(view,tooltip){let plugin=view.plugin(tooltipPlugin);if(!plugin)return null;let found=plugin.manager.tooltips.indexOf(tooltip);return found\u003C0?null:plugin.manager.tooltipViews[found];}function hasHoverTooltips(state){return state.facet(showHoverTooltip).some(x=>x);}const closeHoverTooltipEffect=StateEffect.define();const closeHoverTooltips=closeHoverTooltipEffect.of(null);function repositionTooltips(view){let plugin=view.plugin(tooltipPlugin);if(plugin)plugin.maybeMeasure();}const panelConfig=Facet.define({combine(configs){let topContainer,bottomContainer;for(let _i125=0,_length125=configs.length;_i125\u003C_length125;_i125++){let c=configs[_i125];topContainer=topContainer||c.topContainer;bottomContainer=bottomContainer||c.bottomContainer;}return{topContainer,bottomContainer};}});function panels(config){return config?[panelConfig.of(config)]:[];}function getPanel(view,panel){let plugin=view.plugin(panelPlugin);let index=plugin?plugin.specs.indexOf(panel):-1;return index>-1?plugin.panels[index]:null;}const panelPlugin=ViewPlugin.fromClass(class{constructor(view){this.input=view.state.facet(showPanel);this.specs=this.input.filter(s=>s);this.panels=this.specs.map(spec=>spec(view));let conf=view.state.facet(panelConfig);this.top=new PanelGroup(view,true,conf.topContainer);this.bottom=new PanelGroup(view,false,conf.bottomContainer);this.top.sync(this.panels.filter(p=>p.top));this.bottom.sync(this.panels.filter(p=>!p.top));for(let _i126=0,_this$panels=this.panels,_length126=_this$panels.length;_i126\u003C_length126;_i126++){let p=_this$panels[_i126];p.dom.classList.add(\\\"cm-panel\\\");if(p.mount)p.mount();}}update(update){let conf=update.state.facet(panelConfig);if(this.top.container!=conf.topContainer){this.top.sync([]);this.top=new PanelGroup(update.view,true,conf.topContainer);}if(this.bottom.container!=conf.bottomContainer){this.bottom.sync([]);this.bottom=new PanelGroup(update.view,false,conf.bottomContainer);}this.top.syncClasses();this.bottom.syncClasses();let input=update.state.facet(showPanel);if(input!=this.input){let specs=input.filter(x=>x);let panels=[],top=[],bottom=[],mount=[];for(let _i127=0,_length127=specs.length;_i127\u003C_length127;_i127++){let spec=specs[_i127];let known=this.specs.indexOf(spec),panel;if(known\u003C0){panel=spec(update.view);mount.push(panel);}else{panel=this.panels[known];if(panel.update)panel.update(update);}panels.push(panel);(panel.top?top:bottom).push(panel);}this.specs=specs;this.panels=panels;this.top.sync(top);this.bottom.sync(bottom);for(let _i128=0,_length128=mount.length;_i128\u003C_length128;_i128++){let p=mount[_i128];p.dom.classList.add(\\\"cm-panel\\\");if(p.mount)p.mount();}}else{for(let _i129=0,_this$panels2=this.panels,_length129=_this$panels2.length;_i129\u003C_length129;_i129++){let p=_this$panels2[_i129];if(p.update)p.update(update);}}}destroy(){this.top.sync([]);this.bottom.sync([]);}},{provide:plugin=>EditorView.scrollMargins.of(view=>{let value=view.plugin(plugin);return value&&{top:value.top.scrollMargin(),bottom:value.bottom.scrollMargin()};})});class PanelGroup{constructor(view,top,container){this.view=view;this.top=top;this.container=container;this.dom=undefined;this.classes=\\\"\\\";this.panels=[];this.syncClasses();}sync(panels){for(let _i130=0,_this$panels3=this.panels,_length130=_this$panels3.length;_i130\u003C_length130;_i130++){let p=_this$panels3[_i130];if(p.destroy&&panels.indexOf(p)\u003C0)p.destroy();}this.panels=panels;this.syncDOM();}syncDOM(){if(this.panels.length==0){if(this.dom){this.dom.remove();this.dom=undefined;}return;}if(!this.dom){this.dom=document.createElement(\\\"div\\\");this.dom.className=this.top?\\\"cm-panels cm-panels-top\\\":\\\"cm-panels cm-panels-bottom\\\";this.dom.style[this.top?\\\"top\\\":\\\"bottom\\\"]=\\\"0\\\";let parent=this.container||this.view.dom;parent.insertBefore(this.dom,this.top?parent.firstChild:null);}let curDOM=this.dom.firstChild;for(let _i131=0,_this$panels4=this.panels,_length131=_this$panels4.length;_i131\u003C_length131;_i131++){let panel=_this$panels4[_i131];if(panel.dom.parentNode==this.dom){while(curDOM!=panel.dom)curDOM=rm$2(curDOM);curDOM=curDOM.nextSibling;}else{this.dom.insertBefore(panel.dom,curDOM);}}while(curDOM)curDOM=rm$2(curDOM);}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top);}syncClasses(){if(!this.container||this.classes==this.view.themeClasses)return;for(let _i132=0,_this$classes$split=this.classes.split(\\\" \\\"),_length132=_this$classes$split.length;_i132\u003C_length132;_i132++){let cls=_this$classes$split[_i132];if(cls)this.container.classList.remove(cls);}for(let _i133=0,_this$classes$split2=(this.classes=this.view.themeClasses).split(\\\" \\\"),_length133=_this$classes$split2.length;_i133\u003C_length133;_i133++){let cls=_this$classes$split2[_i133];if(cls)this.container.classList.add(cls);}}}function rm$2(node){let next=node.nextSibling;node.remove();return next;}const showPanel=Facet.define({enables:panelPlugin});class GutterMarker extends RangeValue{compare(other){return this==other||this.constructor==other.constructor&&this.eq(other);}eq(other){return false;}destroy(dom){}}GutterMarker.prototype.elementClass=\\\"\\\";GutterMarker.prototype.toDOM=undefined;GutterMarker.prototype.mapMode=MapMode.TrackBefore;GutterMarker.prototype.startSide=GutterMarker.prototype.endSide=-1;GutterMarker.prototype.point=true;const gutterLineClass=Facet.define();const defaults$2={class:\\\"\\\",renderEmptyElements:false,elementStyle:\\\"\\\",markers:()=>RangeSet.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}};const activeGutters=Facet.define();function gutter(config){return[gutters(),activeGutters.of(Object.assign(Object.assign({},defaults$2),config))];}const unfixGutters=Facet.define({combine:values=>values.some(x=>x)});function gutters(config){let result=[gutterView];if(config&&config.fixed===false)result.push(unfixGutters.of(true));return result;}const gutterView=ViewPlugin.fromClass(class{constructor(view){this.view=view;this.prevViewport=view.viewport;this.dom=document.createElement(\\\"div\\\");this.dom.className=\\\"cm-gutters\\\";this.dom.setAttribute(\\\"aria-hidden\\\",\\\"true\\\");this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+\\\"px\\\";this.gutters=view.state.facet(activeGutters).map(conf=>new SingleGutterView(view,conf));for(let _i134=0,_this$gutters=this.gutters,_length134=_this$gutters.length;_i134\u003C_length134;_i134++){let gutter=_this$gutters[_i134];this.dom.appendChild(gutter.dom);}this.fixed=!view.state.facet(unfixGutters);if(this.fixed){this.dom.style.position=\\\"sticky\\\";}this.syncGutters(false);view.scrollDOM.insertBefore(this.dom,view.contentDOM);}update(update){if(this.updateGutters(update)){let vpA=this.prevViewport,vpB=update.view.viewport;let vpOverlap=Math.min(vpA.to,vpB.to)-Math.max(vpA.from,vpB.from);this.syncGutters(vpOverlap\u003C(vpB.to-vpB.from)*0.8);}if(update.geometryChanged){this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+\\\"px\\\";}if(this.view.state.facet(unfixGutters)!=!this.fixed){this.fixed=!this.fixed;this.dom.style.position=this.fixed?\\\"sticky\\\":\\\"\\\";}this.prevViewport=update.view.viewport;}syncGutters(detach){let after=this.dom.nextSibling;if(detach)this.dom.remove();let lineClasses=RangeSet.iter(this.view.state.facet(gutterLineClass),this.view.viewport.from);let classSet=[];let contexts=this.gutters.map(gutter=>new UpdateContext(gutter,this.view.viewport,-this.view.documentPadding.top));for(let _i135=0,_this$view$viewportLi=this.view.viewportLineBlocks,_length135=_this$view$viewportLi.length;_i135\u003C_length135;_i135++){let line=_this$view$viewportLi[_i135];if(classSet.length)classSet=[];if(Array.isArray(line.type)){let first=true;for(let _i136=0,_line$type2=line.type,_length136=_line$type2.length;_i136\u003C_length136;_i136++){let b=_line$type2[_i136];if(b.type==BlockType.Text&&first){advanceCursor(lineClasses,classSet,b.from);for(let _i137=0,_length137=contexts.length;_i137\u003C_length137;_i137++){let cx=contexts[_i137];cx.line(this.view,b,classSet);}first=false;}else if(b.widget){for(let _i138=0,_length138=contexts.length;_i138\u003C_length138;_i138++){let cx=contexts[_i138];cx.widget(this.view,b);}}}}else if(line.type==BlockType.Text){advanceCursor(lineClasses,classSet,line.from);for(let _i139=0,_length139=contexts.length;_i139\u003C_length139;_i139++){let cx=contexts[_i139];cx.line(this.view,line,classSet);}}else if(line.widget){for(let _i140=0,_length140=contexts.length;_i140\u003C_length140;_i140++){let cx=contexts[_i140];cx.widget(this.view,line);}}}for(let _i141=0,_length141=contexts.length;_i141\u003C_length141;_i141++){let cx=contexts[_i141];cx.finish();}if(detach)this.view.scrollDOM.insertBefore(this.dom,after);}updateGutters(update){let prev=update.startState.facet(activeGutters),cur=update.state.facet(activeGutters);let change=update.docChanged||update.heightChanged||update.viewportChanged||!RangeSet.eq(update.startState.facet(gutterLineClass),update.state.facet(gutterLineClass),update.view.viewport.from,update.view.viewport.to);if(prev==cur){for(let _i142=0,_this$gutters2=this.gutters,_length142=_this$gutters2.length;_i142\u003C_length142;_i142++){let gutter=_this$gutters2[_i142];if(gutter.update(update))change=true;}}else{change=true;let gutters=[];for(let _i143=0,_length143=cur.length;_i143\u003C_length143;_i143++){let conf=cur[_i143];let known=prev.indexOf(conf);if(known\u003C0){gutters.push(new SingleGutterView(this.view,conf));}else{this.gutters[known].update(update);gutters.push(this.gutters[known]);}}for(let _i144=0,_this$gutters3=this.gutters,_length144=_this$gutters3.length;_i144\u003C_length144;_i144++){let g=_this$gutters3[_i144];g.dom.remove();if(gutters.indexOf(g)\u003C0)g.destroy();}for(let _i145=0,_length145=gutters.length;_i145\u003C_length145;_i145++){let g=gutters[_i145];this.dom.appendChild(g.dom);}this.gutters=gutters;}return change;}destroy(){for(let _i146=0,_this$gutters4=this.gutters,_length146=_this$gutters4.length;_i146\u003C_length146;_i146++){let view=_this$gutters4[_i146];view.destroy();}this.dom.remove();}},{provide:plugin=>EditorView.scrollMargins.of(view=>{let value=view.plugin(plugin);if(!value||value.gutters.length==0||!value.fixed)return null;return view.textDirection==Direction.LTR?{left:value.dom.offsetWidth*view.scaleX}:{right:value.dom.offsetWidth*view.scaleX};})});function asArray(val){return Array.isArray(val)?val:[val];}function advanceCursor(cursor,collect,pos){while(cursor.value&&cursor.from\u003C=pos){if(cursor.from==pos)collect.push(cursor.value);cursor.next();}}class UpdateContext{constructor(gutter,viewport,height){this.gutter=gutter;this.height=height;this.i=0;this.cursor=RangeSet.iter(gutter.markers,viewport.from);}addElement(view,block,markers){let{gutter}=this,above=(block.top-this.height)/view.scaleY,height=block.height/view.scaleY;if(this.i==gutter.elements.length){let newElt=new GutterElement(view,height,above,markers);gutter.elements.push(newElt);gutter.dom.appendChild(newElt.dom);}else{gutter.elements[this.i].update(view,height,above,markers);}this.height=block.bottom;this.i++;}line(view,line,extraMarkers){let localMarkers=[];advanceCursor(this.cursor,localMarkers,line.from);if(extraMarkers.length)localMarkers=localMarkers.concat(extraMarkers);let forLine=this.gutter.config.lineMarker(view,line,localMarkers);if(forLine)localMarkers.unshift(forLine);let gutter=this.gutter;if(localMarkers.length==0&&!gutter.config.renderEmptyElements)return;this.addElement(view,line,localMarkers);}widget(view,block){let marker=this.gutter.config.widgetMarker(view,block.widget,block);if(marker)this.addElement(view,block,[marker]);}finish(){let gutter=this.gutter;while(gutter.elements.length>this.i){let last=gutter.elements.pop();gutter.dom.removeChild(last.dom);last.destroy();}}}class SingleGutterView{constructor(view,config){this.view=view;this.config=config;this.elements=[];this.spacer=null;this.dom=document.createElement(\\\"div\\\");this.dom.className=\\\"cm-gutter\\\"+(this.config.class?\\\" \\\"+this.config.class:\\\"\\\");for(let prop in config.domEventHandlers){this.dom.addEventListener(prop,event=>{let target=event.target,y;if(target!=this.dom&&this.dom.contains(target)){while(target.parentNode!=this.dom)target=target.parentNode;let rect=target.getBoundingClientRect();y=(rect.top+rect.bottom)/2;}else{y=event.clientY;}let line=view.lineBlockAtHeight(y-view.documentTop);if(config.domEventHandlers[prop](view,line,event))event.preventDefault();});}this.markers=asArray(config.markers(view));if(config.initialSpacer){this.spacer=new GutterElement(view,0,0,[config.initialSpacer(view)]);this.dom.appendChild(this.spacer.dom);this.spacer.dom.style.cssText+=\\\"visibility: hidden; pointer-events: none\\\";}}update(update){let prevMarkers=this.markers;this.markers=asArray(this.config.markers(update.view));if(this.spacer&&this.config.updateSpacer){let updated=this.config.updateSpacer(this.spacer.markers[0],update);if(updated!=this.spacer.markers[0])this.spacer.update(update.view,0,0,[updated]);}let vp=update.view.viewport;return!RangeSet.eq(this.markers,prevMarkers,vp.from,vp.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(update):false);}destroy(){for(let _i147=0,_this$elements=this.elements,_length147=_this$elements.length;_i147\u003C_length147;_i147++){let elt=_this$elements[_i147];elt.destroy();}}}class GutterElement{constructor(view,height,above,markers){this.height=-1;this.above=0;this.markers=[];this.dom=document.createElement(\\\"div\\\");this.dom.className=\\\"cm-gutterElement\\\";this.update(view,height,above,markers);}update(view,height,above,markers){if(this.height!=height){this.height=height;this.dom.style.height=height+\\\"px\\\";}if(this.above!=above)this.dom.style.marginTop=(this.above=above)?above+\\\"px\\\":\\\"\\\";if(!sameMarkers(this.markers,markers))this.setMarkers(view,markers);}setMarkers(view,markers){let cls=\\\"cm-gutterElement\\\",domPos=this.dom.firstChild;for(let iNew=0,iOld=0;;){let skipTo=iOld,marker=iNew\u003Cmarkers.length?markers[iNew++]:null,matched=false;if(marker){let c=marker.elementClass;if(c)cls+=\\\" \\\"+c;for(let i=iOld;i\u003Cthis.markers.length;i++)if(this.markers[i].compare(marker)){skipTo=i;matched=true;break;}}else{skipTo=this.markers.length;}while(iOld\u003CskipTo){let next=this.markers[iOld++];if(next.toDOM){next.destroy(domPos);let after=domPos.nextSibling;domPos.remove();domPos=after;}}if(!marker)break;if(marker.toDOM){if(matched)domPos=domPos.nextSibling;else this.dom.insertBefore(marker.toDOM(view),domPos);}if(matched)iOld++;}this.dom.className=cls;this.markers=markers;}destroy(){this.setMarkers(null,[]);}}function sameMarkers(a,b){if(a.length!=b.length)return false;for(let i=0;i\u003Ca.length;i++)if(!a[i].compare(b[i]))return false;return true;}const lineNumberMarkers=Facet.define();const lineNumberConfig=Facet.define({combine(values){return combineConfig(values,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(a,b){let result=Object.assign({},a);for(let event in b){let exists=result[event],add=b[event];result[event]=exists?(view,line,event)=>exists(view,line,event)||add(view,line,event):add;}return result;}});}});class NumberMarker extends GutterMarker{constructor(number){super();this.number=number;}eq(other){return this.number==other.number;}toDOM(){return document.createTextNode(this.number);}}function formatNumber(view,number){return view.state.facet(lineNumberConfig).formatNumber(number,view.state);}const lineNumberGutter=activeGutters.compute([lineNumberConfig],state=>({class:\\\"cm-lineNumbers\\\",renderEmptyElements:false,markers(view){return view.state.facet(lineNumberMarkers);},lineMarker(view,line,others){if(others.some(m=>m.toDOM))return null;return new NumberMarker(formatNumber(view,view.state.doc.lineAt(line.from).number));},widgetMarker:()=>null,lineMarkerChange:update=>update.startState.facet(lineNumberConfig)!=update.state.facet(lineNumberConfig),initialSpacer(view){return new NumberMarker(formatNumber(view,maxLineNumber(view.state.doc.lines)));},updateSpacer(spacer,update){let max=formatNumber(update.view,maxLineNumber(update.view.state.doc.lines));return max==spacer.number?spacer:new NumberMarker(max);},domEventHandlers:state.facet(lineNumberConfig).domEventHandlers}));function lineNumbers(config={}){return[lineNumberConfig.of(config),gutters(),lineNumberGutter];}function maxLineNumber(lines){let last=9;while(last\u003Clines)last=last*10+9;return last;}const activeLineGutterMarker=new class extends GutterMarker{constructor(){super(...arguments);this.elementClass=\\\"cm-activeLineGutter\\\";}}();const activeLineGutterHighlighter=gutterLineClass.compute([\\\"selection\\\"],state=>{let marks=[],last=-1;for(let _i148=0,_state$selection$rang4=state.selection.ranges,_length148=_state$selection$rang4.length;_i148\u003C_length148;_i148++){let range=_state$selection$rang4[_i148];let linePos=state.doc.lineAt(range.head).from;if(linePos>last){last=linePos;marks.push(activeLineGutterMarker.range(linePos));}}return RangeSet.of(marks);});function highlightActiveLineGutter(){return activeLineGutterHighlighter;}const WhitespaceDeco=new Map();function getWhitespaceDeco(space){let deco=WhitespaceDeco.get(space);if(!deco)WhitespaceDeco.set(space,deco=Decoration.mark({attributes:space===\\\"\\\\t\\\"?{class:\\\"cm-highlightTab\\\"}:{class:\\\"cm-highlightSpace\\\",\\\"data-display\\\":space.replace(/ /g,\\\"·\\\")}}));return deco;}function matcher(decorator){return ViewPlugin.define(view=>({decorations:decorator.createDeco(view),update(u){this.decorations=decorator.updateDeco(u,this.decorations);}}),{decorations:v=>v.decorations});}const whitespaceHighlighter=matcher(new MatchDecorator({regexp:/\\\\t| +/g,decoration:match=>getWhitespaceDeco(match[0]),boundary:/\\\\S/}));function highlightWhitespace(){return whitespaceHighlighter;}const trailingHighlighter=matcher(new MatchDecorator({regexp:/\\\\s+$/g,decoration:Decoration.mark({class:\\\"cm-trailingSpace\\\"}),boundary:/\\\\S/}));function highlightTrailingWhitespace(){return trailingHighlighter;}const __test={HeightMap,HeightOracle,MeasuredHeights,QueryType:QueryType$1,ChangedRange,computeOrder,moveVisually};var _m1=Object.freeze({__proto__:null,BidiSpan:BidiSpan,BlockInfo:BlockInfo,get BlockType(){return BlockType;},Decoration:Decoration,get Direction(){return Direction;},EditorView:EditorView,GutterMarker:GutterMarker,MatchDecorator:MatchDecorator,RectangleMarker:RectangleMarker,ViewPlugin:ViewPlugin,ViewUpdate:ViewUpdate,WidgetType:WidgetType,__test:__test,closeHoverTooltips:closeHoverTooltips,crosshairCursor:crosshairCursor,drawSelection:drawSelection,dropCursor:dropCursor,getDrawSelectionConfig:getDrawSelectionConfig,getPanel:getPanel,getTooltip:getTooltip,gutter:gutter,gutterLineClass:gutterLineClass,gutters:gutters,hasHoverTooltips:hasHoverTooltips,highlightActiveLine:highlightActiveLine,highlightActiveLineGutter:highlightActiveLineGutter,highlightSpecialChars:highlightSpecialChars,highlightTrailingWhitespace:highlightTrailingWhitespace,highlightWhitespace:highlightWhitespace,hoverTooltip:hoverTooltip,keymap:keymap,layer:layer,lineNumberMarkers:lineNumberMarkers,lineNumbers:lineNumbers,logException:logException,panels:panels,placeholder:placeholder,rectangularSelection:rectangularSelection,repositionTooltips:repositionTooltips,runScopeHandlers:runScopeHandlers,scrollPastEnd:scrollPastEnd,showPanel:showPanel,showTooltip:showTooltip,tooltips:tooltips});const DefaultBufferLength=1024;let nextPropID=0;class Range{constructor(from,to){this.from=from;this.to=to;}}class NodeProp{constructor(config={}){this.id=nextPropID++;this.perNode=!!config.perNode;this.deserialize=config.deserialize||(()=>{throw new Error(\\\"This node type doesn't define a deserialize function\\\");});}add(match){if(this.perNode)throw new RangeError(\\\"Can't add per-node props to node types\\\");if(typeof match!=\\\"function\\\")match=NodeType.match(match);return type=>{let result=match(type);return result===undefined?null:[this,result];};}}NodeProp.closedBy=new NodeProp({deserialize:str=>str.split(\\\" \\\")});NodeProp.openedBy=new NodeProp({deserialize:str=>str.split(\\\" \\\")});NodeProp.group=new NodeProp({deserialize:str=>str.split(\\\" \\\")});NodeProp.isolate=new NodeProp({deserialize:value=>{if(value&&value!=\\\"rtl\\\"&&value!=\\\"ltr\\\"&&value!=\\\"auto\\\")throw new RangeError(\\\"Invalid value for isolate: \\\"+value);return value||\\\"auto\\\";}});NodeProp.contextHash=new NodeProp({perNode:true});NodeProp.lookAhead=new NodeProp({perNode:true});NodeProp.mounted=new NodeProp({perNode:true});class MountedTree{constructor(tree,overlay,parser){this.tree=tree;this.overlay=overlay;this.parser=parser;}static get(tree){return tree&&tree.props&&tree.props[NodeProp.mounted.id];}}const noProps=Object.create(null);class NodeType{constructor(name,props,id,flags=0){this.name=name;this.props=props;this.id=id;this.flags=flags;}static define(spec){let props=spec.props&&spec.props.length?Object.create(null):noProps;let flags=(spec.top?1:0)|(spec.skipped?2:0)|(spec.error?4:0)|(spec.name==null?8:0);let type=new NodeType(spec.name||\\\"\\\",props,spec.id,flags);if(spec.props)for(let _i149=0,_spec$props=spec.props,_length149=_spec$props.length;_i149\u003C_length149;_i149++){let src=_spec$props[_i149];if(!Array.isArray(src))src=src(type);if(src){if(src[0].perNode)throw new RangeError(\\\"Can't store a per-node prop on a node type\\\");props[src[0].id]=src[1];}}return type;}prop(prop){return this.props[prop.id];}get isTop(){return(this.flags&1)>0;}get isSkipped(){return(this.flags&2)>0;}get isError(){return(this.flags&4)>0;}get isAnonymous(){return(this.flags&8)>0;}is(name){if(typeof name=='string'){if(this.name==name)return true;let group=this.prop(NodeProp.group);return group?group.indexOf(name)>-1:false;}return this.id==name;}static match(map){let direct=Object.create(null);for(let prop in map)for(let _i150=0,_prop$split=prop.split(\\\" \\\"),_length150=_prop$split.length;_i150\u003C_length150;_i150++){let name=_prop$split[_i150];direct[name]=map[prop];}return node=>{for(let groups=node.prop(NodeProp.group),i=-1;i\u003C(groups?groups.length:0);i++){let found=direct[i\u003C0?node.name:groups[i]];if(found)return found;}};}}NodeType.none=new NodeType(\\\"\\\",Object.create(null),0,8);class NodeSet{constructor(types){this.types=types;for(let i=0;i\u003Ctypes.length;i++)if(types[i].id!=i)throw new RangeError(\\\"Node type ids should correspond to array positions when creating a node set\\\");}extend(...props){let newTypes=[];for(let _i151=0,_this$types=this.types,_length151=_this$types.length;_i151\u003C_length151;_i151++){let type=_this$types[_i151];let newProps=null;for(let _i152=0,_length152=props.length;_i152\u003C_length152;_i152++){let source=props[_i152];let add=source(type);if(add){if(!newProps)newProps=Object.assign({},type.props);newProps[add[0].id]=add[1];}}newTypes.push(newProps?new NodeType(type.name,newProps,type.id,type.flags):type);}return new NodeSet(newTypes);}}const CachedNode=new WeakMap(),CachedInnerNode=new WeakMap();var IterMode;(function(IterMode){IterMode[IterMode[\\\"ExcludeBuffers\\\"]=1]=\\\"ExcludeBuffers\\\";IterMode[IterMode[\\\"IncludeAnonymous\\\"]=2]=\\\"IncludeAnonymous\\\";IterMode[IterMode[\\\"IgnoreMounts\\\"]=4]=\\\"IgnoreMounts\\\";IterMode[IterMode[\\\"IgnoreOverlays\\\"]=8]=\\\"IgnoreOverlays\\\";})(IterMode||(IterMode={}));class Tree{constructor(type,children,positions,length,props){this.type=type;this.children=children;this.positions=positions;this.length=length;this.props=null;if(props&&props.length){this.props=Object.create(null);for(let _i153=0,_length153=props.length;_i153\u003C_length153;_i153++){let[prop,value]=props[_i153];this.props[typeof prop==\\\"number\\\"?prop:prop.id]=value;}}}toString(){let mounted=MountedTree.get(this);if(mounted&&!mounted.overlay)return mounted.tree.toString();let children=\\\"\\\";for(let _i154=0,_this$children10=this.children,_length154=_this$children10.length;_i154\u003C_length154;_i154++){let ch=_this$children10[_i154];let str=ch.toString();if(str){if(children)children+=\\\",\\\";children+=str;}}return!this.type.name?children:(/\\\\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(children.length?\\\"(\\\"+children+\\\")\\\":\\\"\\\");}cursor(mode=0){return new TreeCursor(this.topNode,mode);}cursorAt(pos,side=0,mode=0){let scope=CachedNode.get(this)||this.topNode;let cursor=new TreeCursor(scope);cursor.moveTo(pos,side);CachedNode.set(this,cursor._tree);return cursor;}get topNode(){return new TreeNode(this,0,0,null);}resolve(pos,side=0){let node=resolveNode(CachedNode.get(this)||this.topNode,pos,side,false);CachedNode.set(this,node);return node;}resolveInner(pos,side=0){let node=resolveNode(CachedInnerNode.get(this)||this.topNode,pos,side,true);CachedInnerNode.set(this,node);return node;}resolveStack(pos,side=0){return stackIterator(this,pos,side);}iterate(spec){let{enter,leave,from=0,to=this.length}=spec;let mode=spec.mode||0,anon=(mode&IterMode.IncludeAnonymous)>0;for(let c=this.cursor(mode|IterMode.IncludeAnonymous);;){let entered=false;if(c.from\u003C=to&&c.to>=from&&(!anon&&c.type.isAnonymous||enter(c)!==false)){if(c.firstChild())continue;entered=true;}for(;;){if(entered&&leave&&(anon||!c.type.isAnonymous))leave(c);if(c.nextSibling())break;if(!c.parent())return;entered=true;}}}prop(prop){return!prop.perNode?this.type.prop(prop):this.props?this.props[prop.id]:undefined;}get propValues(){let result=[];if(this.props)for(let id in this.props)result.push([+id,this.props[id]]);return result;}balance(config={}){return this.children.length\u003C=8?this:balanceRange(NodeType.none,this.children,this.positions,0,this.children.length,0,this.length,(children,positions,length)=>new Tree(this.type,children,positions,length,this.propValues),config.makeTree||((children,positions,length)=>new Tree(NodeType.none,children,positions,length)));}static build(data){return buildTree(data);}}Tree.empty=new Tree(NodeType.none,[],[],0);class FlatBufferCursor{constructor(buffer,index){this.buffer=buffer;this.index=index;}get id(){return this.buffer[this.index-4];}get start(){return this.buffer[this.index-3];}get end(){return this.buffer[this.index-2];}get size(){return this.buffer[this.index-1];}get pos(){return this.index;}next(){this.index-=4;}fork(){return new FlatBufferCursor(this.buffer,this.index);}}class TreeBuffer{constructor(buffer,length,set){this.buffer=buffer;this.length=length;this.set=set;}get type(){return NodeType.none;}toString(){let result=[];for(let index=0;index\u003Cthis.buffer.length;){result.push(this.childString(index));index=this.buffer[index+3];}return result.join(\\\",\\\");}childString(index){let id=this.buffer[index],endIndex=this.buffer[index+3];let type=this.set.types[id],result=type.name;if(/\\\\W/.test(result)&&!type.isError)result=JSON.stringify(result);index+=4;if(endIndex==index)return result;let children=[];while(index\u003CendIndex){children.push(this.childString(index));index=this.buffer[index+3];}return result+\\\"(\\\"+children.join(\\\",\\\")+\\\")\\\";}findChild(startIndex,endIndex,dir,pos,side){let{buffer}=this,pick=-1;for(let i=startIndex;i!=endIndex;i=buffer[i+3]){if(checkSide(side,pos,buffer[i+1],buffer[i+2])){pick=i;if(dir>0)break;}}return pick;}slice(startI,endI,from){let b=this.buffer;let copy=new Uint16Array(endI-startI),len=0;for(let i=startI,j=0;i\u003CendI;){copy[j++]=b[i++];copy[j++]=b[i++]-from;let to=copy[j++]=b[i++]-from;copy[j++]=b[i++]-startI;len=Math.max(len,to);}return new TreeBuffer(copy,len,this.set);}}function checkSide(side,pos,from,to){switch(side){case-2:return from\u003Cpos;case-1:return to>=pos&&from\u003Cpos;case 0:return from\u003Cpos&&to>pos;case 1:return from\u003C=pos&&to>pos;case 2:return to>pos;case 4:return true;}}function resolveNode(node,pos,side,overlays){var _a;while(node.from==node.to||(side\u003C1?node.from>=pos:node.from>pos)||(side>-1?node.to\u003C=pos:node.to\u003Cpos)){let parent=!overlays&&node instanceof TreeNode&&node.index\u003C0?null:node.parent;if(!parent)return node;node=parent;}let mode=overlays?0:IterMode.IgnoreOverlays;if(overlays)for(let scan=node,parent=scan.parent;parent;scan=parent,parent=scan.parent){if(scan instanceof TreeNode&&scan.index\u003C0&&((_a=parent.enter(pos,side,mode))===null||_a===void 0?void 0:_a.from)!=scan.from)node=parent;}for(;;){let inner=node.enter(pos,side,mode);if(!inner)return node;node=inner;}}class BaseNode{cursor(mode=0){return new TreeCursor(this,mode);}getChild(type,before=null,after=null){let r=getChildren(this,type,before,after);return r.length?r[0]:null;}getChildren(type,before=null,after=null){return getChildren(this,type,before,after);}resolve(pos,side=0){return resolveNode(this,pos,side,false);}resolveInner(pos,side=0){return resolveNode(this,pos,side,true);}matchContext(context){return matchNodeContext(this,context);}enterUnfinishedNodesBefore(pos){let scan=this.childBefore(pos),node=this;while(scan){let last=scan.lastChild;if(!last||last.to!=scan.to)break;if(last.type.isError&&last.from==last.to){node=scan;scan=last.prevSibling;}else{scan=last;}}return node;}get node(){return this;}get next(){return this.parent;}}class TreeNode extends BaseNode{constructor(_tree,from,index,_parent){super();this._tree=_tree;this.from=from;this.index=index;this._parent=_parent;}get type(){return this._tree.type;}get name(){return this._tree.type.name;}get to(){return this.from+this._tree.length;}nextChild(i,dir,pos,side,mode=0){for(let parent=this;;){for(let{children,positions}=parent._tree,e=dir>0?children.length:-1;i!=e;i+=dir){let next=children[i],start=positions[i]+parent.from;if(!checkSide(side,pos,start,start+next.length))continue;if(next instanceof TreeBuffer){if(mode&IterMode.ExcludeBuffers)continue;let index=next.findChild(0,next.buffer.length,dir,pos-start,side);if(index>-1)return new BufferNode(new BufferContext(parent,next,i,start),null,index);}else if(mode&IterMode.IncludeAnonymous||!next.type.isAnonymous||hasChild(next)){let mounted;if(!(mode&IterMode.IgnoreMounts)&&(mounted=MountedTree.get(next))&&!mounted.overlay)return new TreeNode(mounted.tree,start,i,parent);let inner=new TreeNode(next,start,i,parent);return mode&IterMode.IncludeAnonymous||!inner.type.isAnonymous?inner:inner.nextChild(dir\u003C0?next.children.length-1:0,dir,pos,side);}}if(mode&IterMode.IncludeAnonymous||!parent.type.isAnonymous)return null;if(parent.index>=0)i=parent.index+dir;else i=dir\u003C0?-1:parent._parent._tree.children.length;parent=parent._parent;if(!parent)return null;}}get firstChild(){return this.nextChild(0,1,0,4);}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4);}childAfter(pos){return this.nextChild(0,1,pos,2);}childBefore(pos){return this.nextChild(this._tree.children.length-1,-1,pos,-2);}enter(pos,side,mode=0){let mounted;if(!(mode&IterMode.IgnoreOverlays)&&(mounted=MountedTree.get(this._tree))&&mounted.overlay){let rPos=pos-this.from;for(let _i155=0,_mounted$overlay=mounted.overlay,_length155=_mounted$overlay.length;_i155\u003C_length155;_i155++){let{from,to}=_mounted$overlay[_i155];if((side>0?from\u003C=rPos:from\u003CrPos)&&(side\u003C0?to>=rPos:to>rPos))return new TreeNode(mounted.tree,mounted.overlay[0].from+this.from,-1,this);}}return this.nextChild(0,1,pos,side,mode);}nextSignificantParent(){let val=this;while(val.type.isAnonymous&&val._parent)val=val._parent;return val;}get parent(){return this._parent?this._parent.nextSignificantParent():null;}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null;}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null;}get tree(){return this._tree;}toTree(){return this._tree;}toString(){return this._tree.toString();}}function getChildren(node,type,before,after){let cur=node.cursor(),result=[];if(!cur.firstChild())return result;if(before!=null)for(let found=false;!found;){found=cur.type.is(before);if(!cur.nextSibling())return result;}for(;;){if(after!=null&&cur.type.is(after))return result;if(cur.type.is(type))result.push(cur.node);if(!cur.nextSibling())return after==null?result:[];}}function matchNodeContext(node,context,i=context.length-1){for(let p=node.parent;i>=0;p=p.parent){if(!p)return false;if(!p.type.isAnonymous){if(context[i]&&context[i]!=p.name)return false;i--;}}return true;}class BufferContext{constructor(parent,buffer,index,start){this.parent=parent;this.buffer=buffer;this.index=index;this.start=start;}}class BufferNode extends BaseNode{get name(){return this.type.name;}get from(){return this.context.start+this.context.buffer.buffer[this.index+1];}get to(){return this.context.start+this.context.buffer.buffer[this.index+2];}constructor(context,_parent,index){super();this.context=context;this._parent=_parent;this.index=index;this.type=context.buffer.set.types[context.buffer.buffer[index]];}child(dir,pos,side){let{buffer}=this.context;let index=buffer.findChild(this.index+4,buffer.buffer[this.index+3],dir,pos-this.context.start,side);return index\u003C0?null:new BufferNode(this.context,this,index);}get firstChild(){return this.child(1,0,4);}get lastChild(){return this.child(-1,0,4);}childAfter(pos){return this.child(1,pos,2);}childBefore(pos){return this.child(-1,pos,-2);}enter(pos,side,mode=0){if(mode&IterMode.ExcludeBuffers)return null;let{buffer}=this.context;let index=buffer.findChild(this.index+4,buffer.buffer[this.index+3],side>0?1:-1,pos-this.context.start,side);return index\u003C0?null:new BufferNode(this.context,this,index);}get parent(){return this._parent||this.context.parent.nextSignificantParent();}externalSibling(dir){return this._parent?null:this.context.parent.nextChild(this.context.index+dir,dir,0,4);}get nextSibling(){let{buffer}=this.context;let after=buffer.buffer[this.index+3];if(after\u003C(this._parent?buffer.buffer[this._parent.index+3]:buffer.buffer.length))return new BufferNode(this.context,this._parent,after);return this.externalSibling(1);}get prevSibling(){let{buffer}=this.context;let parentStart=this._parent?this._parent.index+4:0;if(this.index==parentStart)return this.externalSibling(-1);return new BufferNode(this.context,this._parent,buffer.findChild(parentStart,this.index,-1,0,4));}get tree(){return null;}toTree(){let children=[],positions=[];let{buffer}=this.context;let startI=this.index+4,endI=buffer.buffer[this.index+3];if(endI>startI){let from=buffer.buffer[this.index+1];children.push(buffer.slice(startI,endI,from));positions.push(0);}return new Tree(this.type,children,positions,this.to-this.from);}toString(){return this.context.buffer.childString(this.index);}}function iterStack(heads){if(!heads.length)return null;let pick=0,picked=heads[0];for(let i=1;i\u003Cheads.length;i++){let node=heads[i];if(node.from>picked.from||node.to\u003Cpicked.to){picked=node;pick=i;}}let next=picked instanceof TreeNode&&picked.index\u003C0?null:picked.parent;let newHeads=heads.slice();if(next)newHeads[pick]=next;else newHeads.splice(pick,1);return new StackIterator(newHeads,picked);}class StackIterator{constructor(heads,node){this.heads=heads;this.node=node;}get next(){return iterStack(this.heads);}}function stackIterator(tree,pos,side){let inner=tree.resolveInner(pos,side),layers=null;for(let scan=inner instanceof TreeNode?inner:inner.context.parent;scan;scan=scan.parent){if(scan.index\u003C0){let parent=scan.parent;(layers||(layers=[inner])).push(parent.resolve(pos,side));scan=parent;}else{let mount=MountedTree.get(scan.tree);if(mount&&mount.overlay&&mount.overlay[0].from\u003C=pos&&mount.overlay[mount.overlay.length-1].to>=pos){let root=new TreeNode(mount.tree,mount.overlay[0].from+scan.from,-1,scan);(layers||(layers=[inner])).push(resolveNode(root,pos,side,false));}}}return layers?iterStack(layers):inner;}class TreeCursor{get name(){return this.type.name;}constructor(node,mode=0){this.mode=mode;this.buffer=null;this.stack=[];this.index=0;this.bufferNode=null;if(node instanceof TreeNode){this.yieldNode(node);}else{this._tree=node.context.parent;this.buffer=node.context;for(let n=node._parent;n;n=n._parent)this.stack.unshift(n.index);this.bufferNode=node;this.yieldBuf(node.index);}}yieldNode(node){if(!node)return false;this._tree=node;this.type=node.type;this.from=node.from;this.to=node.to;return true;}yieldBuf(index,type){this.index=index;let{start,buffer}=this.buffer;this.type=type||buffer.set.types[buffer.buffer[index]];this.from=start+buffer.buffer[index+1];this.to=start+buffer.buffer[index+2];return true;}yield(node){if(!node)return false;if(node instanceof TreeNode){this.buffer=null;return this.yieldNode(node);}this.buffer=node.context;return this.yieldBuf(node.index,node.type);}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString();}enterChild(dir,pos,side){if(!this.buffer)return this.yield(this._tree.nextChild(dir\u003C0?this._tree._tree.children.length-1:0,dir,pos,side,this.mode));let{buffer}=this.buffer;let index=buffer.findChild(this.index+4,buffer.buffer[this.index+3],dir,pos-this.buffer.start,side);if(index\u003C0)return false;this.stack.push(this.index);return this.yieldBuf(index);}firstChild(){return this.enterChild(1,0,4);}lastChild(){return this.enterChild(-1,0,4);}childAfter(pos){return this.enterChild(1,pos,2);}childBefore(pos){return this.enterChild(-1,pos,-2);}enter(pos,side,mode=this.mode){if(!this.buffer)return this.yield(this._tree.enter(pos,side,mode));return mode&IterMode.ExcludeBuffers?false:this.enterChild(1,pos,side);}parent(){if(!this.buffer)return this.yieldNode(this.mode&IterMode.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let parent=this.mode&IterMode.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();this.buffer=null;return this.yieldNode(parent);}sibling(dir){if(!this.buffer)return!this._tree._parent?false:this.yield(this._tree.index\u003C0?null:this._tree._parent.nextChild(this._tree.index+dir,dir,0,4,this.mode));let{buffer}=this.buffer,d=this.stack.length-1;if(dir\u003C0){let parentStart=d\u003C0?0:this.stack[d]+4;if(this.index!=parentStart)return this.yieldBuf(buffer.findChild(parentStart,this.index,-1,0,4));}else{let after=buffer.buffer[this.index+3];if(after\u003C(d\u003C0?buffer.buffer.length:buffer.buffer[this.stack[d]+3]))return this.yieldBuf(after);}return d\u003C0?this.yield(this.buffer.parent.nextChild(this.buffer.index+dir,dir,0,4,this.mode)):false;}nextSibling(){return this.sibling(1);}prevSibling(){return this.sibling(-1);}atLastNode(dir){let index,parent,{buffer}=this;if(buffer){if(dir>0){if(this.index\u003Cbuffer.buffer.buffer.length)return false;}else{for(let i=0;i\u003Cthis.index;i++)if(buffer.buffer.buffer[i+3]\u003Cthis.index)return false;}({index,parent}=buffer);}else{({index,_parent:parent}=this._tree);}for(;parent;({index,_parent:parent}=parent)){if(index>-1)for(let i=index+dir,e=dir\u003C0?-1:parent._tree.children.length;i!=e;i+=dir){let child=parent._tree.children[i];if(this.mode&IterMode.IncludeAnonymous||child instanceof TreeBuffer||!child.type.isAnonymous||hasChild(child))return false;}}return true;}move(dir,enter){if(enter&&this.enterChild(dir,0,4))return true;for(;;){if(this.sibling(dir))return true;if(this.atLastNode(dir)||!this.parent())return false;}}next(enter=true){return this.move(1,enter);}prev(enter=true){return this.move(-1,enter);}moveTo(pos,side=0){while(this.from==this.to||(side\u003C1?this.from>=pos:this.from>pos)||(side>-1?this.to\u003C=pos:this.to\u003Cpos))if(!this.parent())break;while(this.enterChild(1,pos,side)){}return this;}get node(){if(!this.buffer)return this._tree;let cache=this.bufferNode,result=null,depth=0;if(cache&&cache.context==this.buffer){scan:for(let index=this.index,d=this.stack.length;d>=0;){for(let c=cache;c;c=c._parent)if(c.index==index){if(index==this.index)return c;result=c;depth=d+1;break scan;}index=this.stack[--d];}}for(let i=depth;i\u003Cthis.stack.length;i++)result=new BufferNode(this.buffer,result,this.stack[i]);return this.bufferNode=new BufferNode(this.buffer,result,this.index);}get tree(){return this.buffer?null:this._tree._tree;}iterate(enter,leave){for(let depth=0;;){let mustLeave=false;if(this.type.isAnonymous||enter(this)!==false){if(this.firstChild()){depth++;continue;}if(!this.type.isAnonymous)mustLeave=true;}for(;;){if(mustLeave&&leave)leave(this);mustLeave=this.type.isAnonymous;if(this.nextSibling())break;if(!depth)return;this.parent();depth--;mustLeave=true;}}}matchContext(context){if(!this.buffer)return matchNodeContext(this.node,context);let{buffer}=this.buffer,{types}=buffer.set;for(let i=context.length-1,d=this.stack.length-1;i>=0;d--){if(d\u003C0)return matchNodeContext(this.node,context,i);let type=types[buffer.buffer[this.stack[d]]];if(!type.isAnonymous){if(context[i]&&context[i]!=type.name)return false;i--;}}return true;}}function hasChild(tree){return tree.children.some(ch=>ch instanceof TreeBuffer||!ch.type.isAnonymous||hasChild(ch));}function buildTree(data){var _a;let{buffer,nodeSet,maxBufferLength=DefaultBufferLength,reused=[],minRepeatType=nodeSet.types.length}=data;let cursor=Array.isArray(buffer)?new FlatBufferCursor(buffer,buffer.length):buffer;let types=nodeSet.types;let contextHash=0,lookAhead=0;function takeNode(parentStart,minPos,children,positions,inRepeat,depth){let{id,start,end,size}=cursor;let lookAheadAtStart=lookAhead;while(size\u003C0){cursor.next();if(size==-1){let node=reused[id];children.push(node);positions.push(start-parentStart);return;}else if(size==-3){contextHash=id;return;}else if(size==-4){lookAhead=id;return;}else{throw new RangeError(`Unrecognized record size: ${size}`);}}let type=types[id],node,buffer;let startPos=start-parentStart;if(end-start\u003C=maxBufferLength&&(buffer=findBufferSize(cursor.pos-minPos,inRepeat))){let data=new Uint16Array(buffer.size-buffer.skip);let endPos=cursor.pos-buffer.size,index=data.length;while(cursor.pos>endPos)index=copyToBuffer(buffer.start,data,index);node=new TreeBuffer(data,end-buffer.start,nodeSet);startPos=buffer.start-parentStart;}else{let endPos=cursor.pos-size;cursor.next();let localChildren=[],localPositions=[];let localInRepeat=id>=minRepeatType?id:-1;let lastGroup=0,lastEnd=end;while(cursor.pos>endPos){if(localInRepeat>=0&&cursor.id==localInRepeat&&cursor.size>=0){if(cursor.end\u003C=lastEnd-maxBufferLength){makeRepeatLeaf(localChildren,localPositions,start,lastGroup,cursor.end,lastEnd,localInRepeat,lookAheadAtStart);lastGroup=localChildren.length;lastEnd=cursor.end;}cursor.next();}else if(depth>2500){takeFlatNode(start,endPos,localChildren,localPositions);}else{takeNode(start,endPos,localChildren,localPositions,localInRepeat,depth+1);}}if(localInRepeat>=0&&lastGroup>0&&lastGroup\u003ClocalChildren.length)makeRepeatLeaf(localChildren,localPositions,start,lastGroup,start,lastEnd,localInRepeat,lookAheadAtStart);localChildren.reverse();localPositions.reverse();if(localInRepeat>-1&&lastGroup>0){let make=makeBalanced(type);node=balanceRange(type,localChildren,localPositions,0,localChildren.length,0,end-start,make,make);}else{node=makeTree(type,localChildren,localPositions,end-start,lookAheadAtStart-end);}}children.push(node);positions.push(startPos);}function takeFlatNode(parentStart,minPos,children,positions){let nodes=[];let nodeCount=0,stopAt=-1;while(cursor.pos>minPos){let{id,start,end,size}=cursor;if(size>4){cursor.next();}else if(stopAt>-1&&start\u003CstopAt){break;}else{if(stopAt\u003C0)stopAt=end-maxBufferLength;nodes.push(id,start,end);nodeCount++;cursor.next();}}if(nodeCount){let buffer=new Uint16Array(nodeCount*4);let start=nodes[nodes.length-2];for(let i=nodes.length-3,j=0;i>=0;i-=3){buffer[j++]=nodes[i];buffer[j++]=nodes[i+1]-start;buffer[j++]=nodes[i+2]-start;buffer[j++]=j;}children.push(new TreeBuffer(buffer,nodes[2]-start,nodeSet));positions.push(start-parentStart);}}function makeBalanced(type){return(children,positions,length)=>{let lookAhead=0,lastI=children.length-1,last,lookAheadProp;if(lastI>=0&&(last=children[lastI])instanceof Tree){if(!lastI&&last.type==type&&last.length==length)return last;if(lookAheadProp=last.prop(NodeProp.lookAhead))lookAhead=positions[lastI]+last.length+lookAheadProp;}return makeTree(type,children,positions,length,lookAhead);};}function makeRepeatLeaf(children,positions,base,i,from,to,type,lookAhead){let localChildren=[],localPositions=[];while(children.length>i){localChildren.push(children.pop());localPositions.push(positions.pop()+base-from);}children.push(makeTree(nodeSet.types[type],localChildren,localPositions,to-from,lookAhead-to));positions.push(from-base);}function makeTree(type,children,positions,length,lookAhead=0,props){if(contextHash){let pair=[NodeProp.contextHash,contextHash];props=props?[pair].concat(props):[pair];}if(lookAhead>25){let pair=[NodeProp.lookAhead,lookAhead];props=props?[pair].concat(props):[pair];}return new Tree(type,children,positions,length,props);}function findBufferSize(maxSize,inRepeat){let fork=cursor.fork();let size=0,start=0,skip=0,minStart=fork.end-maxBufferLength;let result={size:0,start:0,skip:0};scan:for(let minPos=fork.pos-maxSize;fork.pos>minPos;){let nodeSize=fork.size;if(fork.id==inRepeat&&nodeSize>=0){result.size=size;result.start=start;result.skip=skip;skip+=4;size+=4;fork.next();continue;}let startPos=fork.pos-nodeSize;if(nodeSize\u003C0||startPos\u003CminPos||fork.start\u003CminStart)break;let localSkipped=fork.id>=minRepeatType?4:0;let nodeStart=fork.start;fork.next();while(fork.pos>startPos){if(fork.size\u003C0){if(fork.size==-3)localSkipped+=4;else break scan;}else if(fork.id>=minRepeatType){localSkipped+=4;}fork.next();}start=nodeStart;size+=nodeSize;skip+=localSkipped;}if(inRepeat\u003C0||size==maxSize){result.size=size;result.start=start;result.skip=skip;}return result.size>4?result:undefined;}function copyToBuffer(bufferStart,buffer,index){let{id,start,end,size}=cursor;cursor.next();if(size>=0&&id\u003CminRepeatType){let startIndex=index;if(size>4){let endPos=cursor.pos-(size-4);while(cursor.pos>endPos)index=copyToBuffer(bufferStart,buffer,index);}buffer[--index]=startIndex;buffer[--index]=end-bufferStart;buffer[--index]=start-bufferStart;buffer[--index]=id;}else if(size==-3){contextHash=id;}else if(size==-4){lookAhead=id;}return index;}let children=[],positions=[];while(cursor.pos>0)takeNode(data.start||0,data.bufferStart||0,children,positions,-1,0);let length=(_a=data.length)!==null&&_a!==void 0?_a:children.length?positions[0]+children[0].length:0;return new Tree(types[data.topID],children.reverse(),positions.reverse(),length);}const nodeSizeCache=new WeakMap();function nodeSize(balanceType,node){if(!balanceType.isAnonymous||node instanceof TreeBuffer||node.type!=balanceType)return 1;let size=nodeSizeCache.get(node);if(size==null){size=1;for(let _i156=0,_node$children=node.children,_length156=_node$children.length;_i156\u003C_length156;_i156++){let child=_node$children[_i156];if(child.type!=balanceType||!(child instanceof Tree)){size=1;break;}size+=nodeSize(balanceType,child);}nodeSizeCache.set(node,size);}return size;}function balanceRange(balanceType,children,positions,from,to,start,length,mkTop,mkTree){let total=0;for(let i=from;i\u003Cto;i++)total+=nodeSize(balanceType,children[i]);let maxChild=Math.ceil(total*1.5/8);let localChildren=[],localPositions=[];function divide(children,positions,from,to,offset){for(let i=from;i\u003Cto;){let groupFrom=i,groupStart=positions[i],groupSize=nodeSize(balanceType,children[i]);i++;for(;i\u003Cto;i++){let nextSize=nodeSize(balanceType,children[i]);if(groupSize+nextSize>=maxChild)break;groupSize+=nextSize;}if(i==groupFrom+1){if(groupSize>maxChild){let only=children[groupFrom];divide(only.children,only.positions,0,only.children.length,positions[groupFrom]+offset);continue;}localChildren.push(children[groupFrom]);}else{let length=positions[i-1]+children[i-1].length-groupStart;localChildren.push(balanceRange(balanceType,children,positions,groupFrom,i,groupStart,length,null,mkTree));}localPositions.push(groupStart+offset-start);}}divide(children,positions,from,to,0);return(mkTop||mkTree)(localChildren,localPositions,length);}class NodeWeakMap{constructor(){this.map=new WeakMap();}setBuffer(buffer,index,value){let inner=this.map.get(buffer);if(!inner)this.map.set(buffer,inner=new Map());inner.set(index,value);}getBuffer(buffer,index){let inner=this.map.get(buffer);return inner&&inner.get(index);}set(node,value){if(node instanceof BufferNode)this.setBuffer(node.context.buffer,node.index,value);else if(node instanceof TreeNode)this.map.set(node.tree,value);}get(node){return node instanceof BufferNode?this.getBuffer(node.context.buffer,node.index):node instanceof TreeNode?this.map.get(node.tree):undefined;}cursorSet(cursor,value){if(cursor.buffer)this.setBuffer(cursor.buffer.buffer,cursor.index,value);else this.map.set(cursor.tree,value);}cursorGet(cursor){return cursor.buffer?this.getBuffer(cursor.buffer.buffer,cursor.index):this.map.get(cursor.tree);}}class TreeFragment{constructor(from,to,tree,offset,openStart=false,openEnd=false){this.from=from;this.to=to;this.tree=tree;this.offset=offset;this.open=(openStart?1:0)|(openEnd?2:0);}get openStart(){return(this.open&1)>0;}get openEnd(){return(this.open&2)>0;}static addTree(tree,fragments=[],partial=false){let result=[new TreeFragment(0,tree.length,tree,0,false,partial)];for(let _i157=0,_length157=fragments.length;_i157\u003C_length157;_i157++){let f=fragments[_i157];if(f.to>tree.length)result.push(f);}return result;}static applyChanges(fragments,changes,minGap=128){if(!changes.length)return fragments;let result=[];let fI=1,nextF=fragments.length?fragments[0]:null;for(let cI=0,pos=0,off=0;;cI++){let nextC=cI\u003Cchanges.length?changes[cI]:null;let nextPos=nextC?nextC.fromA:1e9;if(nextPos-pos>=minGap)while(nextF&&nextF.from\u003CnextPos){let cut=nextF;if(pos>=cut.from||nextPos\u003C=cut.to||off){let fFrom=Math.max(cut.from,pos)-off,fTo=Math.min(cut.to,nextPos)-off;cut=fFrom>=fTo?null:new TreeFragment(fFrom,fTo,cut.tree,cut.offset+off,cI>0,!!nextC);}if(cut)result.push(cut);if(nextF.to>nextPos)break;nextF=fI\u003Cfragments.length?fragments[fI++]:null;}if(!nextC)break;pos=nextC.toA;off=nextC.toA-nextC.toB;}return result;}}class Parser{startParse(input,fragments,ranges){if(typeof input==\\\"string\\\")input=new StringInput(input);ranges=!ranges?[new Range(0,input.length)]:ranges.length?ranges.map(r=>new Range(r.from,r.to)):[new Range(0,0)];return this.createParse(input,fragments||[],ranges);}parse(input,fragments,ranges){let parse=this.startParse(input,fragments,ranges);for(;;){let done=parse.advance();if(done)return done;}}}class StringInput{constructor(string){this.string=string;}get length(){return this.string.length;}chunk(from){return this.string.slice(from);}get lineChunks(){return false;}read(from,to){return this.string.slice(from,to);}}function parseMixed(nest){return(parse,input,fragments,ranges)=>new MixedParse(parse,nest,input,fragments,ranges);}class InnerParse{constructor(parser,parse,overlay,target,from){this.parser=parser;this.parse=parse;this.overlay=overlay;this.target=target;this.from=from;}}function checkRanges(ranges){if(!ranges.length||ranges.some(r=>r.from>=r.to))throw new RangeError(\\\"Invalid inner parse ranges given: \\\"+JSON.stringify(ranges));}class ActiveOverlay{constructor(parser,predicate,mounts,index,start,target,prev){this.parser=parser;this.predicate=predicate;this.mounts=mounts;this.index=index;this.start=start;this.target=target;this.prev=prev;this.depth=0;this.ranges=[];}}const stoppedInner=new NodeProp({perNode:true});class MixedParse{constructor(base,nest,input,fragments,ranges){this.nest=nest;this.input=input;this.fragments=fragments;this.ranges=ranges;this.inner=[];this.innerDone=0;this.baseTree=null;this.stoppedAt=null;this.baseParse=base;}advance(){if(this.baseParse){let done=this.baseParse.advance();if(!done)return null;this.baseParse=null;this.baseTree=done;this.startInner();if(this.stoppedAt!=null)for(let _i158=0,_this$inner=this.inner,_length158=_this$inner.length;_i158\u003C_length158;_i158++){let inner=_this$inner[_i158];inner.parse.stopAt(this.stoppedAt);}}if(this.innerDone==this.inner.length){let result=this.baseTree;if(this.stoppedAt!=null)result=new Tree(result.type,result.children,result.positions,result.length,result.propValues.concat([[stoppedInner,this.stoppedAt]]));return result;}let inner=this.inner[this.innerDone],done=inner.parse.advance();if(done){this.innerDone++;let props=Object.assign(Object.create(null),inner.target.props);props[NodeProp.mounted.id]=new MountedTree(done,inner.overlay,inner.parser);inner.target.props=props;}return null;}get parsedPos(){if(this.baseParse)return 0;let pos=this.input.length;for(let i=this.innerDone;i\u003Cthis.inner.length;i++){if(this.inner[i].from\u003Cpos)pos=Math.min(pos,this.inner[i].parse.parsedPos);}return pos;}stopAt(pos){this.stoppedAt=pos;if(this.baseParse)this.baseParse.stopAt(pos);else for(let i=this.innerDone;i\u003Cthis.inner.length;i++)this.inner[i].parse.stopAt(pos);}startInner(){let fragmentCursor=new FragmentCursor$2(this.fragments);let overlay=null;let covered=null;let cursor=new TreeCursor(new TreeNode(this.baseTree,this.ranges[0].from,0,null),IterMode.IncludeAnonymous|IterMode.IgnoreMounts);scan:for(let nest,isCovered;;){let enter=true,range;if(this.stoppedAt!=null&&cursor.from>=this.stoppedAt){enter=false;}else if(fragmentCursor.hasNode(cursor)){if(overlay){let match=overlay.mounts.find(m=>m.frag.from\u003C=cursor.from&&m.frag.to>=cursor.to&&m.mount.overlay);if(match)for(let _i159=0,_match$mount$overlay=match.mount.overlay,_length159=_match$mount$overlay.length;_i159\u003C_length159;_i159++){let r=_match$mount$overlay[_i159];let from=r.from+match.pos,to=r.to+match.pos;if(from>=cursor.from&&to\u003C=cursor.to&&!overlay.ranges.some(r=>r.from\u003Cto&&r.to>from))overlay.ranges.push({from,to});}}enter=false;}else if(covered&&(isCovered=checkCover(covered.ranges,cursor.from,cursor.to))){enter=isCovered!=2;}else if(!cursor.type.isAnonymous&&(nest=this.nest(cursor,this.input))&&(cursor.from\u003Ccursor.to||!nest.overlay)){if(!cursor.tree)materialize(cursor);let oldMounts=fragmentCursor.findMounts(cursor.from,nest.parser);if(typeof nest.overlay==\\\"function\\\"){overlay=new ActiveOverlay(nest.parser,nest.overlay,oldMounts,this.inner.length,cursor.from,cursor.tree,overlay);}else{let ranges=punchRanges(this.ranges,nest.overlay||(cursor.from\u003Ccursor.to?[new Range(cursor.from,cursor.to)]:[]));if(ranges.length)checkRanges(ranges);if(ranges.length||!nest.overlay)this.inner.push(new InnerParse(nest.parser,ranges.length?nest.parser.startParse(this.input,enterFragments(oldMounts,ranges),ranges):nest.parser.startParse(\\\"\\\"),nest.overlay?nest.overlay.map(r=>new Range(r.from-cursor.from,r.to-cursor.from)):null,cursor.tree,ranges.length?ranges[0].from:cursor.from));if(!nest.overlay)enter=false;else if(ranges.length)covered={ranges,depth:0,prev:covered};}}else if(overlay&&(range=overlay.predicate(cursor))){if(range===true)range=new Range(cursor.from,cursor.to);if(range.from\u003Crange.to)overlay.ranges.push(range);}if(enter&&cursor.firstChild()){if(overlay)overlay.depth++;if(covered)covered.depth++;}else{for(;;){if(cursor.nextSibling())break;if(!cursor.parent())break scan;if(overlay&&! --overlay.depth){let ranges=punchRanges(this.ranges,overlay.ranges);if(ranges.length){checkRanges(ranges);this.inner.splice(overlay.index,0,new InnerParse(overlay.parser,overlay.parser.startParse(this.input,enterFragments(overlay.mounts,ranges),ranges),overlay.ranges.map(r=>new Range(r.from-overlay.start,r.to-overlay.start)),overlay.target,ranges[0].from));}overlay=overlay.prev;}if(covered&&! --covered.depth)covered=covered.prev;}}}}}function checkCover(covered,from,to){for(let _i160=0,_length160=covered.length;_i160\u003C_length160;_i160++){let range=covered[_i160];if(range.from>=to)break;if(range.to>from)return range.from\u003C=from&&range.to>=to?2:1;}return 0;}function sliceBuf(buf,startI,endI,nodes,positions,off){if(startI\u003CendI){let from=buf.buffer[startI+1];nodes.push(buf.slice(startI,endI,from));positions.push(from-off);}}function materialize(cursor){let{node}=cursor,stack=[];let buffer=node.context.buffer;do{stack.push(cursor.index);cursor.parent();}while(!cursor.tree);let base=cursor.tree,i=base.children.indexOf(buffer);let buf=base.children[i],b=buf.buffer,newStack=[i];function split(startI,endI,type,innerOffset,length,stackPos){let targetI=stack[stackPos];let children=[],positions=[];sliceBuf(buf,startI,targetI,children,positions,innerOffset);let from=b[targetI+1],to=b[targetI+2];newStack.push(children.length);let child=stackPos?split(targetI+4,b[targetI+3],buf.set.types[b[targetI]],from,to-from,stackPos-1):node.toTree();children.push(child);positions.push(from-innerOffset);sliceBuf(buf,b[targetI+3],endI,children,positions,innerOffset);return new Tree(type,children,positions,length);}base.children[i]=split(0,b.length,NodeType.none,0,buf.length,stack.length-1);for(let _i161=0,_length161=newStack.length;_i161\u003C_length161;_i161++){let index=newStack[_i161];let tree=cursor.tree.children[index],pos=cursor.tree.positions[index];cursor.yield(new TreeNode(tree,pos+cursor.from,index,cursor._tree));}}class StructureCursor{constructor(root,offset){this.offset=offset;this.done=false;this.cursor=root.cursor(IterMode.IncludeAnonymous|IterMode.IgnoreMounts);}moveTo(pos){let{cursor}=this,p=pos-this.offset;while(!this.done&&cursor.from\u003Cp){if(cursor.to>=pos&&cursor.enter(p,1,IterMode.IgnoreOverlays|IterMode.ExcludeBuffers));else if(!cursor.next(false))this.done=true;}}hasNode(cursor){this.moveTo(cursor.from);if(!this.done&&this.cursor.from+this.offset==cursor.from&&this.cursor.tree){for(let tree=this.cursor.tree;;){if(tree==cursor.tree)return true;if(tree.children.length&&tree.positions[0]==0&&tree.children[0]instanceof Tree)tree=tree.children[0];else break;}}return false;}}class FragmentCursor$2{constructor(fragments){var _a;this.fragments=fragments;this.curTo=0;this.fragI=0;if(fragments.length){let first=this.curFrag=fragments[0];this.curTo=(_a=first.tree.prop(stoppedInner))!==null&&_a!==void 0?_a:first.to;this.inner=new StructureCursor(first.tree,-first.offset);}else{this.curFrag=this.inner=null;}}hasNode(node){while(this.curFrag&&node.from>=this.curTo)this.nextFrag();return this.curFrag&&this.curFrag.from\u003C=node.from&&this.curTo>=node.to&&this.inner.hasNode(node);}nextFrag(){var _a;this.fragI++;if(this.fragI==this.fragments.length){this.curFrag=this.inner=null;}else{let frag=this.curFrag=this.fragments[this.fragI];this.curTo=(_a=frag.tree.prop(stoppedInner))!==null&&_a!==void 0?_a:frag.to;this.inner=new StructureCursor(frag.tree,-frag.offset);}}findMounts(pos,parser){var _a;let result=[];if(this.inner){this.inner.cursor.moveTo(pos,1);for(let pos=this.inner.cursor.node;pos;pos=pos.parent){let mount=(_a=pos.tree)===null||_a===void 0?void 0:_a.prop(NodeProp.mounted);if(mount&&mount.parser==parser){for(let i=this.fragI;i\u003Cthis.fragments.length;i++){let frag=this.fragments[i];if(frag.from>=pos.to)break;if(frag.tree==this.curFrag.tree)result.push({frag,pos:pos.from-frag.offset,mount});}}}}return result;}}function punchRanges(outer,ranges){let copy=null,current=ranges;for(let i=1,j=0;i\u003Couter.length;i++){let gapFrom=outer[i-1].to,gapTo=outer[i].from;for(;j\u003Ccurrent.length;j++){let r=current[j];if(r.from>=gapTo)break;if(r.to\u003C=gapFrom)continue;if(!copy)current=copy=ranges.slice();if(r.from\u003CgapFrom){copy[j]=new Range(r.from,gapFrom);if(r.to>gapTo)copy.splice(j+1,0,new Range(gapTo,r.to));}else if(r.to>gapTo){copy[j--]=new Range(gapTo,r.to);}else{copy.splice(j--,1);}}}return current;}function findCoverChanges(a,b,from,to){let iA=0,iB=0,inA=false,inB=false,pos=-1e9;let result=[];for(;;){let nextA=iA==a.length?1e9:inA?a[iA].to:a[iA].from;let nextB=iB==b.length?1e9:inB?b[iB].to:b[iB].from;if(inA!=inB){let start=Math.max(pos,from),end=Math.min(nextA,nextB,to);if(start\u003Cend)result.push(new Range(start,end));}pos=Math.min(nextA,nextB);if(pos==1e9)break;if(nextA==pos){if(!inA)inA=true;else{inA=false;iA++;}}if(nextB==pos){if(!inB)inB=true;else{inB=false;iB++;}}}return result;}function enterFragments(mounts,ranges){let result=[];for(let _i162=0,_length162=mounts.length;_i162\u003C_length162;_i162++){let{pos,mount,frag}=mounts[_i162];let startPos=pos+(mount.overlay?mount.overlay[0].from:0),endPos=startPos+mount.tree.length;let from=Math.max(frag.from,startPos),to=Math.min(frag.to,endPos);if(mount.overlay){let overlay=mount.overlay.map(r=>new Range(r.from+pos,r.to+pos));let changes=findCoverChanges(ranges,overlay,from,to);for(let i=0,pos=from;;i++){let last=i==changes.length,end=last?to:changes[i].from;if(end>pos)result.push(new TreeFragment(pos,end,mount.tree,-startPos,frag.from>=pos||frag.openStart,frag.to\u003C=end||frag.openEnd));if(last)break;pos=changes[i].to;}}else{result.push(new TreeFragment(from,to,mount.tree,-startPos,frag.from>=startPos||frag.openStart,frag.to\u003C=endPos||frag.openEnd));}}return result;}var _m32=Object.freeze({__proto__:null,DefaultBufferLength:DefaultBufferLength,get IterMode(){return IterMode;},MountedTree:MountedTree,NodeProp:NodeProp,NodeSet:NodeSet,NodeType:NodeType,NodeWeakMap:NodeWeakMap,Parser:Parser,Tree:Tree,TreeBuffer:TreeBuffer,TreeCursor:TreeCursor,TreeFragment:TreeFragment,parseMixed:parseMixed});let nextTagID=0;class Tag{constructor(set,base,modified){this.set=set;this.base=base;this.modified=modified;this.id=nextTagID++;}static define(parent){if(parent===null||parent===void 0?void 0:parent.base)throw new Error(\\\"Can not derive from a modified tag\\\");let tag=new Tag([],null,[]);tag.set.push(tag);if(parent)for(let _i163=0,_parent$set=parent.set,_length163=_parent$set.length;_i163\u003C_length163;_i163++){let t=_parent$set[_i163];tag.set.push(t);}return tag;}static defineModifier(){let mod=new Modifier();return tag=>{if(tag.modified.indexOf(mod)>-1)return tag;return Modifier.get(tag.base||tag,tag.modified.concat(mod).sort((a,b)=>a.id-b.id));};}}let nextModifierID=0;class Modifier{constructor(){this.instances=[];this.id=nextModifierID++;}static get(base,mods){if(!mods.length)return base;let exists=mods[0].instances.find(t=>t.base==base&&sameArray(mods,t.modified));if(exists)return exists;let set=[],tag=new Tag(set,base,mods);for(let _i164=0,_length164=mods.length;_i164\u003C_length164;_i164++){let m=mods[_i164];m.instances.push(tag);}let configs=powerSet(mods);for(let _i165=0,_base$set=base.set,_length165=_base$set.length;_i165\u003C_length165;_i165++){let parent=_base$set[_i165];if(!parent.modified.length)for(let _i166=0,_length166=configs.length;_i166\u003C_length166;_i166++){let config=configs[_i166];set.push(Modifier.get(parent,config));}}return tag;}}function sameArray(a,b){return a.length==b.length&&a.every((x,i)=>x==b[i]);}function powerSet(array){let sets=[[]];for(let i=0;i\u003Carray.length;i++){for(let j=0,e=sets.length;j\u003Ce;j++){sets.push(sets[j].concat(array[i]));}}return sets.sort((a,b)=>b.length-a.length);}function styleTags(spec){let byName=Object.create(null);for(let prop in spec){let tags=spec[prop];if(!Array.isArray(tags))tags=[tags];for(let _i167=0,_prop$split2=prop.split(\\\" \\\"),_length167=_prop$split2.length;_i167\u003C_length167;_i167++){let part=_prop$split2[_i167];if(part){let pieces=[],mode=2,rest=part;for(let pos=0;;){if(rest==\\\"...\\\"&&pos>0&&pos+3==part.length){mode=1;break;}let m=/^\\\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*?\\\"|[^\\\\/!]+/.exec(rest);if(!m)throw new RangeError(\\\"Invalid path: \\\"+part);pieces.push(m[0]==\\\"*\\\"?\\\"\\\":m[0][0]=='\\\"'?JSON.parse(m[0]):m[0]);pos+=m[0].length;if(pos==part.length)break;let next=part[pos++];if(pos==part.length&&next==\\\"!\\\"){mode=0;break;}if(next!=\\\"/\\\")throw new RangeError(\\\"Invalid path: \\\"+part);rest=part.slice(pos);}let last=pieces.length-1,inner=pieces[last];if(!inner)throw new RangeError(\\\"Invalid path: \\\"+part);let rule=new Rule(tags,mode,last>0?pieces.slice(0,last):null);byName[inner]=rule.sort(byName[inner]);}}}return ruleNodeProp.add(byName);}const ruleNodeProp=new NodeProp();class Rule{constructor(tags,mode,context,next){this.tags=tags;this.mode=mode;this.context=context;this.next=next;}get opaque(){return this.mode==0;}get inherit(){return this.mode==1;}sort(other){if(!other||other.depth\u003Cthis.depth){this.next=other;return this;}other.next=this.sort(other.next);return other;}get depth(){return this.context?this.context.length:0;}}Rule.empty=new Rule([],2,null);function tagHighlighter(tags,options){let map=Object.create(null);for(let _i168=0,_length168=tags.length;_i168\u003C_length168;_i168++){let style=tags[_i168];if(!Array.isArray(style.tag))map[style.tag.id]=style.class;else for(let _i169=0,_style$tag=style.tag,_length169=_style$tag.length;_i169\u003C_length169;_i169++){let tag=_style$tag[_i169];map[tag.id]=style.class;}}let{scope,all=null}=options||{};return{style:tags=>{let cls=all;for(let _i170=0,_length170=tags.length;_i170\u003C_length170;_i170++){let tag=tags[_i170];for(let _i171=0,_tag$set=tag.set,_length171=_tag$set.length;_i171\u003C_length171;_i171++){let sub=_tag$set[_i171];let tagClass=map[sub.id];if(tagClass){cls=cls?cls+\\\" \\\"+tagClass:tagClass;break;}}}return cls;},scope};}function highlightTags(highlighters,tags){let result=null;for(let _i172=0,_length172=highlighters.length;_i172\u003C_length172;_i172++){let highlighter=highlighters[_i172];let value=highlighter.style(tags);if(value)result=result?result+\\\" \\\"+value:value;}return result;}function highlightTree(tree,highlighter,putStyle,from=0,to=tree.length){let builder=new HighlightBuilder(from,Array.isArray(highlighter)?highlighter:[highlighter],putStyle);builder.highlightRange(tree.cursor(),from,to,\\\"\\\",builder.highlighters);builder.flush(to);}function highlightCode(code,tree,highlighter,putText,putBreak,from=0,to=code.length){let pos=from;function writeTo(p,classes){if(p\u003C=pos)return;for(let text=code.slice(pos,p),i=0;;){let nextBreak=text.indexOf(\\\"\\\\n\\\",i);let upto=nextBreak\u003C0?text.length:nextBreak;if(upto>i)putText(text.slice(i,upto),classes);if(nextBreak\u003C0)break;putBreak();i=nextBreak+1;}pos=p;}highlightTree(tree,highlighter,(from,to,classes)=>{writeTo(from,\\\"\\\");writeTo(to,classes);},from,to);writeTo(to,\\\"\\\");}class HighlightBuilder{constructor(at,highlighters,span){this.at=at;this.highlighters=highlighters;this.span=span;this.class=\\\"\\\";}startSpan(at,cls){if(cls!=this.class){this.flush(at);if(at>this.at)this.at=at;this.class=cls;}}flush(to){if(to>this.at&&this.class)this.span(this.at,to,this.class);}highlightRange(cursor,from,to,inheritedClass,highlighters){let{type,from:start,to:end}=cursor;if(start>=to||end\u003C=from)return;if(type.isTop)highlighters=this.highlighters.filter(h=>!h.scope||h.scope(type));let cls=inheritedClass;let rule=getStyleTags(cursor)||Rule.empty;let tagCls=highlightTags(highlighters,rule.tags);if(tagCls){if(cls)cls+=\\\" \\\";cls+=tagCls;if(rule.mode==1)inheritedClass+=(inheritedClass?\\\" \\\":\\\"\\\")+tagCls;}this.startSpan(Math.max(from,start),cls);if(rule.opaque)return;let mounted=cursor.tree&&cursor.tree.prop(NodeProp.mounted);if(mounted&&mounted.overlay){let inner=cursor.node.enter(mounted.overlay[0].from+start,1);let innerHighlighters=this.highlighters.filter(h=>!h.scope||h.scope(mounted.tree.type));let hasChild=cursor.firstChild();for(let i=0,pos=start;;i++){let next=i\u003Cmounted.overlay.length?mounted.overlay[i]:null;let nextPos=next?next.from+start:end;let rangeFrom=Math.max(from,pos),rangeTo=Math.min(to,nextPos);if(rangeFrom\u003CrangeTo&&hasChild){while(cursor.from\u003CrangeTo){this.highlightRange(cursor,rangeFrom,rangeTo,inheritedClass,highlighters);this.startSpan(Math.min(rangeTo,cursor.to),cls);if(cursor.to>=nextPos||!cursor.nextSibling())break;}}if(!next||nextPos>to)break;pos=next.to+start;if(pos>from){this.highlightRange(inner.cursor(),Math.max(from,next.from+start),Math.min(to,pos),\\\"\\\",innerHighlighters);this.startSpan(Math.min(to,pos),cls);}}if(hasChild)cursor.parent();}else if(cursor.firstChild()){if(mounted)inheritedClass=\\\"\\\";do{if(cursor.to\u003C=from)continue;if(cursor.from>=to)break;this.highlightRange(cursor,from,to,inheritedClass,highlighters);this.startSpan(Math.min(to,cursor.to),cls);}while(cursor.nextSibling());cursor.parent();}}}function getStyleTags(node){let rule=node.type.prop(ruleNodeProp);while(rule&&rule.context&&!node.matchContext(rule.context))rule=rule.next;return rule||null;}const t=Tag.define;const comment$1=t(),name=t(),typeName=t(name),propertyName=t(name),literal=t(),string=t(literal),number=t(literal),content=t(),heading=t(content),keyword=t(),operator=t(),punctuation=t(),bracket=t(punctuation),meta=t();const tags$1={comment:comment$1,lineComment:t(comment$1),blockComment:t(comment$1),docComment:t(comment$1),name,variableName:t(name),typeName:typeName,tagName:t(typeName),propertyName:propertyName,attributeName:t(propertyName),className:t(name),labelName:t(name),namespace:t(name),macroName:t(name),literal,string,docString:t(string),character:t(string),attributeValue:t(string),number,integer:t(number),float:t(number),bool:t(literal),regexp:t(literal),escape:t(literal),color:t(literal),url:t(literal),keyword,self:t(keyword),null:t(keyword),atom:t(keyword),unit:t(keyword),modifier:t(keyword),operatorKeyword:t(keyword),controlKeyword:t(keyword),definitionKeyword:t(keyword),moduleKeyword:t(keyword),operator,derefOperator:t(operator),arithmeticOperator:t(operator),logicOperator:t(operator),bitwiseOperator:t(operator),compareOperator:t(operator),updateOperator:t(operator),definitionOperator:t(operator),typeOperator:t(operator),controlOperator:t(operator),punctuation,separator:t(punctuation),bracket,angleBracket:t(bracket),squareBracket:t(bracket),paren:t(bracket),brace:t(bracket),content,heading,heading1:t(heading),heading2:t(heading),heading3:t(heading),heading4:t(heading),heading5:t(heading),heading6:t(heading),contentSeparator:t(content),list:t(content),quote:t(content),emphasis:t(content),strong:t(content),link:t(content),monospace:t(content),strikethrough:t(content),inserted:t(),deleted:t(),changed:t(),invalid:t(),meta,documentMeta:t(meta),annotation:t(meta),processingInstruction:t(meta),definition:Tag.defineModifier(),constant:Tag.defineModifier(),function:Tag.defineModifier(),standard:Tag.defineModifier(),local:Tag.defineModifier(),special:Tag.defineModifier()};const classHighlighter=tagHighlighter([{tag:tags$1.link,class:\\\"tok-link\\\"},{tag:tags$1.heading,class:\\\"tok-heading\\\"},{tag:tags$1.emphasis,class:\\\"tok-emphasis\\\"},{tag:tags$1.strong,class:\\\"tok-strong\\\"},{tag:tags$1.keyword,class:\\\"tok-keyword\\\"},{tag:tags$1.atom,class:\\\"tok-atom\\\"},{tag:tags$1.bool,class:\\\"tok-bool\\\"},{tag:tags$1.url,class:\\\"tok-url\\\"},{tag:tags$1.labelName,class:\\\"tok-labelName\\\"},{tag:tags$1.inserted,class:\\\"tok-inserted\\\"},{tag:tags$1.deleted,class:\\\"tok-deleted\\\"},{tag:tags$1.literal,class:\\\"tok-literal\\\"},{tag:tags$1.string,class:\\\"tok-string\\\"},{tag:tags$1.number,class:\\\"tok-number\\\"},{tag:[tags$1.regexp,tags$1.escape,tags$1.special(tags$1.string)],class:\\\"tok-string2\\\"},{tag:tags$1.variableName,class:\\\"tok-variableName\\\"},{tag:tags$1.local(tags$1.variableName),class:\\\"tok-variableName tok-local\\\"},{tag:tags$1.definition(tags$1.variableName),class:\\\"tok-variableName tok-definition\\\"},{tag:tags$1.special(tags$1.variableName),class:\\\"tok-variableName2\\\"},{tag:tags$1.definition(tags$1.propertyName),class:\\\"tok-propertyName tok-definition\\\"},{tag:tags$1.typeName,class:\\\"tok-typeName\\\"},{tag:tags$1.namespace,class:\\\"tok-namespace\\\"},{tag:tags$1.className,class:\\\"tok-className\\\"},{tag:tags$1.macroName,class:\\\"tok-macroName\\\"},{tag:tags$1.propertyName,class:\\\"tok-propertyName\\\"},{tag:tags$1.operator,class:\\\"tok-operator\\\"},{tag:tags$1.comment,class:\\\"tok-comment\\\"},{tag:tags$1.meta,class:\\\"tok-meta\\\"},{tag:tags$1.invalid,class:\\\"tok-invalid\\\"},{tag:tags$1.punctuation,class:\\\"tok-punctuation\\\"}]);var _m33=Object.freeze({__proto__:null,Tag:Tag,classHighlighter:classHighlighter,getStyleTags:getStyleTags,highlightCode:highlightCode,highlightTree:highlightTree,styleTags:styleTags,tagHighlighter:tagHighlighter,tags:tags$1});var _a;const languageDataProp=new NodeProp();function defineLanguageFacet(baseData){return Facet.define({combine:baseData?values=>values.concat(baseData):undefined});}const sublanguageProp=new NodeProp();class Language{constructor(data,parser,extraExtensions=[],name=\\\"\\\"){this.data=data;this.name=name;if(!EditorState.prototype.hasOwnProperty(\\\"tree\\\"))Object.defineProperty(EditorState.prototype,\\\"tree\\\",{get(){return syntaxTree(this);}});this.parser=parser;this.extension=[language.of(this),EditorState.languageData.of((state,pos,side)=>{let top=topNodeAt(state,pos,side),data=top.type.prop(languageDataProp);if(!data)return[];let base=state.facet(data),sub=top.type.prop(sublanguageProp);if(sub){let innerNode=top.resolve(pos-top.from,side);for(let _i173=0,_length173=sub.length;_i173\u003C_length173;_i173++){let sublang=sub[_i173];if(sublang.test(innerNode,state)){let data=state.facet(sublang.facet);return sublang.type==\\\"replace\\\"?data:data.concat(base);}}}return base;})].concat(extraExtensions);}isActiveAt(state,pos,side=-1){return topNodeAt(state,pos,side).type.prop(languageDataProp)==this.data;}findRegions(state){let lang=state.facet(language);if((lang===null||lang===void 0?void 0:lang.data)==this.data)return[{from:0,to:state.doc.length}];if(!lang||!lang.allowsNesting)return[];let result=[];let explore=(tree,from)=>{if(tree.prop(languageDataProp)==this.data){result.push({from,to:from+tree.length});return;}let mount=tree.prop(NodeProp.mounted);if(mount){if(mount.tree.prop(languageDataProp)==this.data){if(mount.overlay)for(let _i174=0,_mount$overlay=mount.overlay,_length174=_mount$overlay.length;_i174\u003C_length174;_i174++){let r=_mount$overlay[_i174];result.push({from:r.from+from,to:r.to+from});}else result.push({from:from,to:from+tree.length});return;}else if(mount.overlay){let size=result.length;explore(mount.tree,mount.overlay[0].from+from);if(result.length>size)return;}}for(let i=0;i\u003Ctree.children.length;i++){let ch=tree.children[i];if(ch instanceof Tree)explore(ch,tree.positions[i]+from);}};explore(syntaxTree(state),0);return result;}get allowsNesting(){return true;}}Language.setState=StateEffect.define();function topNodeAt(state,pos,side){let topLang=state.facet(language),tree=syntaxTree(state).topNode;if(!topLang||topLang.allowsNesting){for(let node=tree;node;node=node.enter(pos,side,IterMode.ExcludeBuffers))if(node.type.isTop)tree=node;}return tree;}class LRLanguage extends Language{constructor(data,parser,name){super(data,parser,[],name);this.parser=parser;}static define(spec){let data=defineLanguageFacet(spec.languageData);return new LRLanguage(data,spec.parser.configure({props:[languageDataProp.add(type=>type.isTop?data:undefined)]}),spec.name);}configure(options,name){return new LRLanguage(this.data,this.parser.configure(options),name||this.name);}get allowsNesting(){return this.parser.hasWrappers();}}function syntaxTree(state){let field=state.field(Language.state,false);return field?field.tree:Tree.empty;}function ensureSyntaxTree(state,upto,timeout=50){var _a;let parse=(_a=state.field(Language.state,false))===null||_a===void 0?void 0:_a.context;if(!parse)return null;let oldVieport=parse.viewport;parse.updateViewport({from:0,to:upto});let result=parse.isDone(upto)||parse.work(timeout,upto)?parse.tree:null;parse.updateViewport(oldVieport);return result;}function syntaxTreeAvailable(state,upto=state.doc.length){var _a;return((_a=state.field(Language.state,false))===null||_a===void 0?void 0:_a.context.isDone(upto))||false;}function forceParsing(view,upto=view.viewport.to,timeout=100){let success=ensureSyntaxTree(view.state,upto,timeout);if(success!=syntaxTree(view.state))view.dispatch({});return!!success;}function syntaxParserRunning(view){var _a;return((_a=view.plugin(parseWorker))===null||_a===void 0?void 0:_a.isWorking())||false;}class DocInput{constructor(doc){this.doc=doc;this.cursorPos=0;this.string=\\\"\\\";this.cursor=doc.iter();}get length(){return this.doc.length;}syncTo(pos){this.string=this.cursor.next(pos-this.cursorPos).value;this.cursorPos=pos+this.string.length;return this.cursorPos-this.string.length;}chunk(pos){this.syncTo(pos);return this.string;}get lineChunks(){return true;}read(from,to){let stringStart=this.cursorPos-this.string.length;if(from\u003CstringStart||to>=this.cursorPos)return this.doc.sliceString(from,to);else return this.string.slice(from-stringStart,to-stringStart);}}let currentContext=null;class ParseContext{constructor(parser,state,fragments=[],tree,treeLen,viewport,skipped,scheduleOn){this.parser=parser;this.state=state;this.fragments=fragments;this.tree=tree;this.treeLen=treeLen;this.viewport=viewport;this.skipped=skipped;this.scheduleOn=scheduleOn;this.parse=null;this.tempSkipped=[];}static create(parser,state,viewport){return new ParseContext(parser,state,[],Tree.empty,0,viewport,[],null);}startParse(){return this.parser.startParse(new DocInput(this.state.doc),this.fragments);}work(until,upto){if(upto!=null&&upto>=this.state.doc.length)upto=undefined;if(this.tree!=Tree.empty&&this.isDone(upto!==null&&upto!==void 0?upto:this.state.doc.length)){this.takeTree();return true;}return this.withContext(()=>{var _a;if(typeof until==\\\"number\\\"){let endTime=Date.now()+until;until=()=>Date.now()>endTime;}if(!this.parse)this.parse=this.startParse();if(upto!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>upto)&&upto\u003Cthis.state.doc.length)this.parse.stopAt(upto);for(;;){let done=this.parse.advance();if(done){this.fragments=this.withoutTempSkipped(TreeFragment.addTree(done,this.fragments,this.parse.stoppedAt!=null));this.treeLen=(_a=this.parse.stoppedAt)!==null&&_a!==void 0?_a:this.state.doc.length;this.tree=done;this.parse=null;if(this.treeLen\u003C(upto!==null&&upto!==void 0?upto:this.state.doc.length))this.parse=this.startParse();else return true;}if(until())return false;}});}takeTree(){let pos,tree;if(this.parse&&(pos=this.parse.parsedPos)>=this.treeLen){if(this.parse.stoppedAt==null||this.parse.stoppedAt>pos)this.parse.stopAt(pos);this.withContext(()=>{while(!(tree=this.parse.advance())){}});this.treeLen=pos;this.tree=tree;this.fragments=this.withoutTempSkipped(TreeFragment.addTree(this.tree,this.fragments,true));this.parse=null;}}withContext(f){let prev=currentContext;currentContext=this;try{return f();}finally{currentContext=prev;}}withoutTempSkipped(fragments){for(let r;r=this.tempSkipped.pop();)fragments=cutFragments(fragments,r.from,r.to);return fragments;}changes(changes,newState){let{fragments,tree,treeLen,viewport,skipped}=this;this.takeTree();if(!changes.empty){let ranges=[];changes.iterChangedRanges((fromA,toA,fromB,toB)=>ranges.push({fromA,toA,fromB,toB}));fragments=TreeFragment.applyChanges(fragments,ranges);tree=Tree.empty;treeLen=0;viewport={from:changes.mapPos(viewport.from,-1),to:changes.mapPos(viewport.to,1)};if(this.skipped.length){skipped=[];for(let _i175=0,_this$skipped=this.skipped,_length175=_this$skipped.length;_i175\u003C_length175;_i175++){let r=_this$skipped[_i175];let from=changes.mapPos(r.from,1),to=changes.mapPos(r.to,-1);if(from\u003Cto)skipped.push({from,to});}}}return new ParseContext(this.parser,newState,fragments,tree,treeLen,viewport,skipped,this.scheduleOn);}updateViewport(viewport){if(this.viewport.from==viewport.from&&this.viewport.to==viewport.to)return false;this.viewport=viewport;let startLen=this.skipped.length;for(let i=0;i\u003Cthis.skipped.length;i++){let{from,to}=this.skipped[i];if(from\u003Cviewport.to&&to>viewport.from){this.fragments=cutFragments(this.fragments,from,to);this.skipped.splice(i--,1);}}if(this.skipped.length>=startLen)return false;this.reset();return true;}reset(){if(this.parse){this.takeTree();this.parse=null;}}skipUntilInView(from,to){this.skipped.push({from,to});}static getSkippingParser(until){return new class extends Parser{createParse(input,fragments,ranges){let from=ranges[0].from,to=ranges[ranges.length-1].to;let parser={parsedPos:from,advance(){let cx=currentContext;if(cx){for(let _i176=0,_length176=ranges.length;_i176\u003C_length176;_i176++){let r=ranges[_i176];cx.tempSkipped.push(r);}if(until)cx.scheduleOn=cx.scheduleOn?Promise.all([cx.scheduleOn,until]):until;}this.parsedPos=to;return new Tree(NodeType.none,[],[],to-from);},stoppedAt:null,stopAt(){}};return parser;}}();}isDone(upto){upto=Math.min(upto,this.state.doc.length);let frags=this.fragments;return this.treeLen>=upto&&frags.length&&frags[0].from==0&&frags[0].to>=upto;}static get(){return currentContext;}}function cutFragments(fragments,from,to){return TreeFragment.applyChanges(fragments,[{fromA:from,toA:to,fromB:from,toB:to}]);}class LanguageState{constructor(context){this.context=context;this.tree=context.tree;}apply(tr){if(!tr.docChanged&&this.tree==this.context.tree)return this;let newCx=this.context.changes(tr.changes,tr.state);let upto=this.context.treeLen==tr.startState.doc.length?undefined:Math.max(tr.changes.mapPos(this.context.treeLen),newCx.viewport.to);if(!newCx.work(20,upto))newCx.takeTree();return new LanguageState(newCx);}static init(state){let vpTo=Math.min(3000,state.doc.length);let parseState=ParseContext.create(state.facet(language).parser,state,{from:0,to:vpTo});if(!parseState.work(20,vpTo))parseState.takeTree();return new LanguageState(parseState);}}Language.state=StateField.define({create:LanguageState.init,update(value,tr){for(let _i177=0,_tr$effects5=tr.effects,_length177=_tr$effects5.length;_i177\u003C_length177;_i177++){let e=_tr$effects5[_i177];if(e.is(Language.setState))return e.value;}if(tr.startState.facet(language)!=tr.state.facet(language))return LanguageState.init(tr.state);return value.apply(tr);}});let requestIdle=callback=>{let timeout=setTimeout(()=>callback(),500);return()=>clearTimeout(timeout);};if(typeof requestIdleCallback!=\\\"undefined\\\")requestIdle=callback=>{let idle=-1,timeout=setTimeout(()=>{idle=requestIdleCallback(callback,{timeout:500-100});},100);return()=>idle\u003C0?clearTimeout(timeout):cancelIdleCallback(idle);};const isInputPending=typeof navigator!=\\\"undefined\\\"&&((_a=navigator.scheduling)===null||_a===void 0?void 0:_a.isInputPending)?()=>navigator.scheduling.isInputPending():null;const parseWorker=ViewPlugin.fromClass(class ParseWorker{constructor(view){this.view=view;this.working=null;this.workScheduled=0;this.chunkEnd=-1;this.chunkBudget=-1;this.work=this.work.bind(this);this.scheduleWork();}update(update){let cx=this.view.state.field(Language.state).context;if(cx.updateViewport(update.view.viewport)||this.view.viewport.to>cx.treeLen)this.scheduleWork();if(update.docChanged||update.selectionSet){if(this.view.hasFocus)this.chunkBudget+=50;this.scheduleWork();}this.checkAsyncSchedule(cx);}scheduleWork(){if(this.working)return;let{state}=this.view,field=state.field(Language.state);if(field.tree!=field.context.tree||!field.context.isDone(state.doc.length))this.working=requestIdle(this.work);}work(deadline){this.working=null;let now=Date.now();if(this.chunkEnd\u003Cnow&&(this.chunkEnd\u003C0||this.view.hasFocus)){this.chunkEnd=now+30000;this.chunkBudget=3000;}if(this.chunkBudget\u003C=0)return;let{state,viewport:{to:vpTo}}=this.view,field=state.field(Language.state);if(field.tree==field.context.tree&&field.context.isDone(vpTo+100000))return;let endTime=Date.now()+Math.min(this.chunkBudget,100,deadline&&!isInputPending?Math.max(25,deadline.timeRemaining()-5):1e9);let viewportFirst=field.context.treeLen\u003CvpTo&&state.doc.length>vpTo+1000;let done=field.context.work(()=>{return isInputPending&&isInputPending()||Date.now()>endTime;},vpTo+(viewportFirst?0:100000));this.chunkBudget-=Date.now()-now;if(done||this.chunkBudget\u003C=0){field.context.takeTree();this.view.dispatch({effects:Language.setState.of(new LanguageState(field.context))});}if(this.chunkBudget>0&&!(done&&!viewportFirst))this.scheduleWork();this.checkAsyncSchedule(field.context);}checkAsyncSchedule(cx){if(cx.scheduleOn){this.workScheduled++;cx.scheduleOn.then(()=>this.scheduleWork()).catch(err=>logException(this.view.state,err)).then(()=>this.workScheduled--);cx.scheduleOn=null;}}destroy(){if(this.working)this.working();}isWorking(){return!!(this.working||this.workScheduled>0);}},{eventHandlers:{focus(){this.scheduleWork();}}});const language=Facet.define({combine(languages){return languages.length?languages[0]:null;},enables:language=>[Language.state,parseWorker,EditorView.contentAttributes.compute([language],state=>{let lang=state.facet(language);return lang&&lang.name?{\\\"data-language\\\":lang.name}:{};})]});class LanguageSupport{constructor(language,support=[]){this.language=language;this.support=support;this.extension=[language,support];}}class LanguageDescription{constructor(name,alias,extensions,filename,loadFunc,support=undefined){this.name=name;this.alias=alias;this.extensions=extensions;this.filename=filename;this.loadFunc=loadFunc;this.support=support;this.loading=null;}load(){return this.loading||(this.loading=this.loadFunc().then(support=>this.support=support,err=>{this.loading=null;throw err;}));}static of(spec){let{load,support}=spec;if(!load){if(!support)throw new RangeError(\\\"Must pass either 'load' or 'support' to LanguageDescription.of\\\");load=()=>Promise.resolve(support);}return new LanguageDescription(spec.name,(spec.alias||[]).concat(spec.name).map(s=>s.toLowerCase()),spec.extensions||[],spec.filename,load,support);}static matchFilename(descs,filename){for(let _i178=0,_length178=descs.length;_i178\u003C_length178;_i178++){let d=descs[_i178];if(d.filename&&d.filename.test(filename))return d;}let ext=/\\\\.([^.]+)$/.exec(filename);if(ext)for(let _i179=0,_length179=descs.length;_i179\u003C_length179;_i179++){let d=descs[_i179];if(d.extensions.indexOf(ext[1])>-1)return d;}return null;}static matchLanguageName(descs,name,fuzzy=true){name=name.toLowerCase();for(let _i180=0,_length180=descs.length;_i180\u003C_length180;_i180++){let d=descs[_i180];if(d.alias.some(a=>a==name))return d;}if(fuzzy)for(let _i181=0,_length181=descs.length;_i181\u003C_length181;_i181++){let d=descs[_i181];for(let _i182=0,_d$alias=d.alias,_length182=_d$alias.length;_i182\u003C_length182;_i182++){let a=_d$alias[_i182];let found=name.indexOf(a);if(found>-1&&(a.length>2||!/\\\\w/.test(name[found-1])&&!/\\\\w/.test(name[found+a.length])))return d;}}return null;}}const indentService=Facet.define();const indentUnit=Facet.define({combine:values=>{if(!values.length)return\\\" \\\";let unit=values[0];if(!unit||/\\\\S/.test(unit)||Array.from(unit).some(e=>e!=unit[0]))throw new Error(\\\"Invalid indent unit: \\\"+JSON.stringify(values[0]));return unit;}});function getIndentUnit(state){let unit=state.facet(indentUnit);return unit.charCodeAt(0)==9?state.tabSize*unit.length:unit.length;}function indentString(state,cols){let result=\\\"\\\",ts=state.tabSize,ch=state.facet(indentUnit)[0];if(ch==\\\"\\\\t\\\"){while(cols>=ts){result+=\\\"\\\\t\\\";cols-=ts;}ch=\\\" \\\";}for(let i=0;i\u003Ccols;i++)result+=ch;return result;}function getIndentation(context,pos){if(context instanceof EditorState)context=new IndentContext(context);for(let _i183=0,_context$state$facet=context.state.facet(indentService),_length183=_context$state$facet.length;_i183\u003C_length183;_i183++){let service=_context$state$facet[_i183];let result=service(context,pos);if(result!==undefined)return result;}let tree=syntaxTree(context.state);return tree.length>=pos?syntaxIndentation(context,tree,pos):null;}function indentRange(state,from,to){let updated=Object.create(null);let context=new IndentContext(state,{overrideIndentation:start=>{var _a;return(_a=updated[start])!==null&&_a!==void 0?_a:-1;}});let changes=[];for(let pos=from;pos\u003C=to;){let line=state.doc.lineAt(pos);pos=line.to+1;let indent=getIndentation(context,line.from);if(indent==null)continue;if(!/\\\\S/.test(line.text))indent=0;let cur=/^\\\\s*/.exec(line.text)[0];let norm=indentString(state,indent);if(cur!=norm){updated[line.from]=indent;changes.push({from:line.from,to:line.from+cur.length,insert:norm});}}return state.changes(changes);}class IndentContext{constructor(state,options={}){this.state=state;this.options=options;this.unit=getIndentUnit(state);}lineAt(pos,bias=1){let line=this.state.doc.lineAt(pos);let{simulateBreak,simulateDoubleBreak}=this.options;if(simulateBreak!=null&&simulateBreak>=line.from&&simulateBreak\u003C=line.to){if(simulateDoubleBreak&&simulateBreak==pos)return{text:\\\"\\\",from:pos};else if(bias\u003C0?simulateBreak\u003Cpos:simulateBreak\u003C=pos)return{text:line.text.slice(simulateBreak-line.from),from:simulateBreak};else return{text:line.text.slice(0,simulateBreak-line.from),from:line.from};}return line;}textAfterPos(pos,bias=1){if(this.options.simulateDoubleBreak&&pos==this.options.simulateBreak)return\\\"\\\";let{text,from}=this.lineAt(pos,bias);return text.slice(pos-from,Math.min(text.length,pos+100-from));}column(pos,bias=1){let{text,from}=this.lineAt(pos,bias);let result=this.countColumn(text,pos-from);let override=this.options.overrideIndentation?this.options.overrideIndentation(from):-1;if(override>-1)result+=override-this.countColumn(text,text.search(/\\\\S|$/));return result;}countColumn(line,pos=line.length){return countColumn(line,this.state.tabSize,pos);}lineIndent(pos,bias=1){let{text,from}=this.lineAt(pos,bias);let override=this.options.overrideIndentation;if(override){let overriden=override(from);if(overriden>-1)return overriden;}return this.countColumn(text,text.search(/\\\\S|$/));}get simulatedBreak(){return this.options.simulateBreak||null;}}const indentNodeProp=new NodeProp();function syntaxIndentation(cx,ast,pos){let stack=ast.resolveStack(pos);let inner=stack.node.enterUnfinishedNodesBefore(pos);if(inner!=stack.node){let add=[];for(let cur=inner;cur!=stack.node;cur=cur.parent)add.push(cur);for(let i=add.length-1;i>=0;i--)stack={node:add[i],next:stack};}return indentFor(stack,cx,pos);}function indentFor(stack,cx,pos){for(let cur=stack;cur;cur=cur.next){let strategy=indentStrategy(cur.node);if(strategy)return strategy(TreeIndentContext.create(cx,pos,cur));}return 0;}function ignoreClosed(cx){return cx.pos==cx.options.simulateBreak&&cx.options.simulateDoubleBreak;}function indentStrategy(tree){let strategy=tree.type.prop(indentNodeProp);if(strategy)return strategy;let first=tree.firstChild,close;if(first&&(close=first.type.prop(NodeProp.closedBy))){let last=tree.lastChild,closed=last&&close.indexOf(last.name)>-1;return cx=>delimitedStrategy(cx,true,1,undefined,closed&&!ignoreClosed(cx)?last.from:undefined);}return tree.parent==null?topIndent$2:null;}function topIndent$2(){return 0;}class TreeIndentContext extends IndentContext{constructor(base,pos,context){super(base.state,base.options);this.base=base;this.pos=pos;this.context=context;}get node(){return this.context.node;}static create(base,pos,context){return new TreeIndentContext(base,pos,context);}get textAfter(){return this.textAfterPos(this.pos);}get baseIndent(){return this.baseIndentFor(this.node);}baseIndentFor(node){let line=this.state.doc.lineAt(node.from);for(;;){let atBreak=node.resolve(line.from);while(atBreak.parent&&atBreak.parent.from==atBreak.from)atBreak=atBreak.parent;if(isParent(atBreak,node))break;line=this.state.doc.lineAt(atBreak.from);}return this.lineIndent(line.from);}continue(){return indentFor(this.context.next,this.base,this.pos);}}function isParent(parent,of){for(let cur=of;cur;cur=cur.parent)if(parent==cur)return true;return false;}function bracketedAligned(context){let tree=context.node;let openToken=tree.childAfter(tree.from),last=tree.lastChild;if(!openToken)return null;let sim=context.options.simulateBreak;let openLine=context.state.doc.lineAt(openToken.from);let lineEnd=sim==null||sim\u003C=openLine.from?openLine.to:Math.min(openLine.to,sim);for(let pos=openToken.to;;){let next=tree.childAfter(pos);if(!next||next==last)return null;if(!next.type.isSkipped)return next.from\u003ClineEnd?openToken:null;pos=next.to;}}function delimitedIndent({closing,align=true,units=1}){return context=>delimitedStrategy(context,align,units,closing);}function delimitedStrategy(context,align,units,closing,closedAt){let after=context.textAfter,space=after.match(/^\\\\s*/)[0].length;let closed=closing&&after.slice(space,space+closing.length)==closing||closedAt==context.pos+space;let aligned=align?bracketedAligned(context):null;if(aligned)return closed?context.column(aligned.from):context.column(aligned.to);return context.baseIndent+(closed?0:context.unit*units);}const flatIndent=context=>context.baseIndent;function continuedIndent({except,units=1}={}){return context=>{let matchExcept=except&&except.test(context.textAfter);return context.baseIndent+(matchExcept?0:units*context.unit);};}const DontIndentBeyond=200;function indentOnInput(){return EditorState.transactionFilter.of(tr=>{if(!tr.docChanged||!tr.isUserEvent(\\\"input.type\\\")&&!tr.isUserEvent(\\\"input.complete\\\"))return tr;let rules=tr.startState.languageDataAt(\\\"indentOnInput\\\",tr.startState.selection.main.head);if(!rules.length)return tr;let doc=tr.newDoc,{head}=tr.newSelection.main,line=doc.lineAt(head);if(head>line.from+DontIndentBeyond)return tr;let lineStart=doc.sliceString(line.from,head);if(!rules.some(r=>r.test(lineStart)))return tr;let{state}=tr,last=-1,changes=[];for(let _i184=0,_state$selection$rang5=state.selection.ranges,_length184=_state$selection$rang5.length;_i184\u003C_length184;_i184++){let{head}=_state$selection$rang5[_i184];let line=state.doc.lineAt(head);if(line.from==last)continue;last=line.from;let indent=getIndentation(state,line.from);if(indent==null)continue;let cur=/^\\\\s*/.exec(line.text)[0];let norm=indentString(state,indent);if(cur!=norm)changes.push({from:line.from,to:line.from+cur.length,insert:norm});}return changes.length?[tr,{changes,sequential:true}]:tr;});}const foldService=Facet.define();const foldNodeProp=new NodeProp();function foldInside(node){let first=node.firstChild,last=node.lastChild;return first&&first.to\u003Clast.from?{from:first.to,to:last.type.isError?node.to:last.from}:null;}function syntaxFolding(state,start,end){let tree=syntaxTree(state);if(tree.length\u003Cend)return null;let stack=tree.resolveStack(end,1);let found=null;for(let iter=stack;iter;iter=iter.next){let cur=iter.node;if(cur.to\u003C=end||cur.from>end)continue;if(found&&cur.from\u003Cstart)break;let prop=cur.type.prop(foldNodeProp);if(prop&&(cur.to\u003Ctree.length-50||tree.length==state.doc.length||!isUnfinished(cur))){let value=prop(cur,state);if(value&&value.from\u003C=end&&value.from>=start&&value.to>end)found=value;}}return found;}function isUnfinished(node){let ch=node.lastChild;return ch&&ch.to==node.to&&ch.type.isError;}function foldable(state,lineStart,lineEnd){for(let _i185=0,_state$facet3=state.facet(foldService),_length185=_state$facet3.length;_i185\u003C_length185;_i185++){let service=_state$facet3[_i185];let result=service(state,lineStart,lineEnd);if(result)return result;}return syntaxFolding(state,lineStart,lineEnd);}function mapRange(range,mapping){let from=mapping.mapPos(range.from,1),to=mapping.mapPos(range.to,-1);return from>=to?undefined:{from,to};}const foldEffect=StateEffect.define({map:mapRange});const unfoldEffect=StateEffect.define({map:mapRange});function selectedLines(view){let lines=[];for(let _i186=0,_view$state$selection2=view.state.selection.ranges,_length186=_view$state$selection2.length;_i186\u003C_length186;_i186++){let{head}=_view$state$selection2[_i186];if(lines.some(l=>l.from\u003C=head&&l.to>=head))continue;lines.push(view.lineBlockAt(head));}return lines;}const foldState=StateField.define({create(){return Decoration.none;},update(folded,tr){folded=folded.map(tr.changes);for(let _i187=0,_tr$effects6=tr.effects,_length187=_tr$effects6.length;_i187\u003C_length187;_i187++){let e=_tr$effects6[_i187];if(e.is(foldEffect)&&!foldExists(folded,e.value.from,e.value.to)){let{preparePlaceholder}=tr.state.facet(foldConfig);let widget=!preparePlaceholder?foldWidget:Decoration.replace({widget:new PreparedFoldWidget(preparePlaceholder(tr.state,e.value))});folded=folded.update({add:[widget.range(e.value.from,e.value.to)]});}else if(e.is(unfoldEffect)){folded=folded.update({filter:(from,to)=>e.value.from!=from||e.value.to!=to,filterFrom:e.value.from,filterTo:e.value.to});}}if(tr.selection){let onSelection=false,{head}=tr.selection.main;folded.between(head,head,(a,b)=>{if(a\u003Chead&&b>head)onSelection=true;});if(onSelection)folded=folded.update({filterFrom:head,filterTo:head,filter:(a,b)=>b\u003C=head||a>=head});}return folded;},provide:f=>EditorView.decorations.from(f),toJSON(folded,state){let ranges=[];folded.between(0,state.doc.length,(from,to)=>{ranges.push(from,to);});return ranges;},fromJSON(value){if(!Array.isArray(value)||value.length%2)throw new RangeError(\\\"Invalid JSON for fold state\\\");let ranges=[];for(let i=0;i\u003Cvalue.length;){let from=value[i++],to=value[i++];if(typeof from!=\\\"number\\\"||typeof to!=\\\"number\\\")throw new RangeError(\\\"Invalid JSON for fold state\\\");ranges.push(foldWidget.range(from,to));}return Decoration.set(ranges,true);}});function foldedRanges(state){return state.field(foldState,false)||RangeSet.empty;}function findFold(state,from,to){var _a;let found=null;(_a=state.field(foldState,false))===null||_a===void 0?void 0:_a.between(from,to,(from,to)=>{if(!found||found.from>from)found={from,to};});return found;}function foldExists(folded,from,to){let found=false;folded.between(from,from,(a,b)=>{if(a==from&&b==to)found=true;});return found;}function maybeEnable(state,other){return state.field(foldState,false)?other:other.concat(StateEffect.appendConfig.of(codeFolding()));}const foldCode=view=>{for(let _i188=0,_selectedLines=selectedLines(view),_length188=_selectedLines.length;_i188\u003C_length188;_i188++){let line=_selectedLines[_i188];let range=foldable(view.state,line.from,line.to);if(range){view.dispatch({effects:maybeEnable(view.state,[foldEffect.of(range),announceFold(view,range)])});return true;}}return false;};const unfoldCode=view=>{if(!view.state.field(foldState,false))return false;let effects=[];for(let _i189=0,_selectedLines2=selectedLines(view),_length189=_selectedLines2.length;_i189\u003C_length189;_i189++){let line=_selectedLines2[_i189];let folded=findFold(view.state,line.from,line.to);if(folded)effects.push(unfoldEffect.of(folded),announceFold(view,folded,false));}if(effects.length)view.dispatch({effects});return effects.length>0;};function announceFold(view,range,fold=true){let lineFrom=view.state.doc.lineAt(range.from).number,lineTo=view.state.doc.lineAt(range.to).number;return EditorView.announce.of(`${view.state.phrase(fold?\\\"Folded lines\\\":\\\"Unfolded lines\\\")} ${lineFrom} ${view.state.phrase(\\\"to\\\")} ${lineTo}.`);}const foldAll=view=>{let{state}=view,effects=[];for(let pos=0;pos\u003Cstate.doc.length;){let line=view.lineBlockAt(pos),range=foldable(state,line.from,line.to);if(range)effects.push(foldEffect.of(range));pos=(range?view.lineBlockAt(range.to):line).to+1;}if(effects.length)view.dispatch({effects:maybeEnable(view.state,effects)});return!!effects.length;};const unfoldAll=view=>{let field=view.state.field(foldState,false);if(!field||!field.size)return false;let effects=[];field.between(0,view.state.doc.length,(from,to)=>{effects.push(unfoldEffect.of({from,to}));});view.dispatch({effects});return true;};function foldableContainer(view,lineBlock){for(let line=lineBlock;;){let foldableRegion=foldable(view.state,line.from,line.to);if(foldableRegion&&foldableRegion.to>lineBlock.from)return foldableRegion;if(!line.from)return null;line=view.lineBlockAt(line.from-1);}}const toggleFold=view=>{let effects=[];for(let _i190=0,_selectedLines3=selectedLines(view),_length190=_selectedLines3.length;_i190\u003C_length190;_i190++){let line=_selectedLines3[_i190];let folded=findFold(view.state,line.from,line.to);if(folded){effects.push(unfoldEffect.of(folded),announceFold(view,folded,false));}else{let foldRange=foldableContainer(view,line);if(foldRange)effects.push(foldEffect.of(foldRange),announceFold(view,foldRange));}}if(effects.length>0)view.dispatch({effects:maybeEnable(view.state,effects)});return!!effects.length;};const foldKeymap=[{key:\\\"Ctrl-Shift-[\\\",mac:\\\"Cmd-Alt-[\\\",run:foldCode},{key:\\\"Ctrl-Shift-]\\\",mac:\\\"Cmd-Alt-]\\\",run:unfoldCode},{key:\\\"Ctrl-Alt-[\\\",run:foldAll},{key:\\\"Ctrl-Alt-]\\\",run:unfoldAll}];const defaultConfig={placeholderDOM:null,preparePlaceholder:null,placeholderText:\\\"…\\\"};const foldConfig=Facet.define({combine(values){return combineConfig(values,defaultConfig);}});function codeFolding(config){let result=[foldState,baseTheme$1$2];if(config)result.push(foldConfig.of(config));return result;}function widgetToDOM(view,prepared){let{state}=view,conf=state.facet(foldConfig);let onclick=event=>{let line=view.lineBlockAt(view.posAtDOM(event.target));let folded=findFold(view.state,line.from,line.to);if(folded)view.dispatch({effects:unfoldEffect.of(folded)});event.preventDefault();};if(conf.placeholderDOM)return conf.placeholderDOM(view,onclick,prepared);let element=document.createElement(\\\"span\\\");element.textContent=conf.placeholderText;element.setAttribute(\\\"aria-label\\\",state.phrase(\\\"folded code\\\"));element.title=state.phrase(\\\"unfold\\\");element.className=\\\"cm-foldPlaceholder\\\";element.onclick=onclick;return element;}const foldWidget=Decoration.replace({widget:new class extends WidgetType{toDOM(view){return widgetToDOM(view,null);}}()});class PreparedFoldWidget extends WidgetType{constructor(value){super();this.value=value;}eq(other){return this.value==other.value;}toDOM(view){return widgetToDOM(view,this.value);}}const foldGutterDefaults={openText:\\\"⌄\\\",closedText:\\\"›\\\",markerDOM:null,domEventHandlers:{},foldingChanged:()=>false};class FoldMarker extends GutterMarker{constructor(config,open){super();this.config=config;this.open=open;}eq(other){return this.config==other.config&&this.open==other.open;}toDOM(view){if(this.config.markerDOM)return this.config.markerDOM(this.open);let span=document.createElement(\\\"span\\\");span.textContent=this.open?this.config.openText:this.config.closedText;span.title=view.state.phrase(this.open?\\\"Fold line\\\":\\\"Unfold line\\\");return span;}}function foldGutter(config={}){let fullConfig=Object.assign(Object.assign({},foldGutterDefaults),config);let canFold=new FoldMarker(fullConfig,true),canUnfold=new FoldMarker(fullConfig,false);let markers=ViewPlugin.fromClass(class{constructor(view){this.from=view.viewport.from;this.markers=this.buildMarkers(view);}update(update){if(update.docChanged||update.viewportChanged||update.startState.facet(language)!=update.state.facet(language)||update.startState.field(foldState,false)!=update.state.field(foldState,false)||syntaxTree(update.startState)!=syntaxTree(update.state)||fullConfig.foldingChanged(update))this.markers=this.buildMarkers(update.view);}buildMarkers(view){let builder=new RangeSetBuilder();for(let _i191=0,_view$viewportLineBlo=view.viewportLineBlocks,_length191=_view$viewportLineBlo.length;_i191\u003C_length191;_i191++){let line=_view$viewportLineBlo[_i191];let mark=findFold(view.state,line.from,line.to)?canUnfold:foldable(view.state,line.from,line.to)?canFold:null;if(mark)builder.add(line.from,line.from,mark);}return builder.finish();}});let{domEventHandlers}=fullConfig;return[markers,gutter({class:\\\"cm-foldGutter\\\",markers(view){var _a;return((_a=view.plugin(markers))===null||_a===void 0?void 0:_a.markers)||RangeSet.empty;},initialSpacer(){return new FoldMarker(fullConfig,false);},domEventHandlers:Object.assign(Object.assign({},domEventHandlers),{click:(view,line,event)=>{if(domEventHandlers.click&&domEventHandlers.click(view,line,event))return true;let folded=findFold(view.state,line.from,line.to);if(folded){view.dispatch({effects:unfoldEffect.of(folded)});return true;}let range=foldable(view.state,line.from,line.to);if(range){view.dispatch({effects:foldEffect.of(range)});return true;}return false;}})}),codeFolding()];}const baseTheme$1$2=EditorView.baseTheme({\\\".cm-foldPlaceholder\\\":{backgroundColor:\\\"#eee\\\",border:\\\"1px solid #ddd\\\",color:\\\"#888\\\",borderRadius:\\\".2em\\\",margin:\\\"0 1px\\\",padding:\\\"0 1px\\\",cursor:\\\"pointer\\\"},\\\".cm-foldGutter span\\\":{padding:\\\"0 1px\\\",cursor:\\\"pointer\\\"}});class HighlightStyle{constructor(specs,options){this.specs=specs;let modSpec;function def(spec){let cls=StyleModule.newName();(modSpec||(modSpec=Object.create(null)))[\\\".\\\"+cls]=spec;return cls;}const all=typeof options.all==\\\"string\\\"?options.all:options.all?def(options.all):undefined;const scopeOpt=options.scope;this.scope=scopeOpt instanceof Language?type=>type.prop(languageDataProp)==scopeOpt.data:scopeOpt?type=>type==scopeOpt:undefined;this.style=tagHighlighter(specs.map(style=>({tag:style.tag,class:style.class||def(Object.assign({},style,{tag:null}))})),{all}).style;this.module=modSpec?new StyleModule(modSpec):null;this.themeType=options.themeType;}static define(specs,options){return new HighlightStyle(specs,options||{});}}const highlighterFacet=Facet.define();const fallbackHighlighter=Facet.define({combine(values){return values.length?[values[0]]:null;}});function getHighlighters(state){let main=state.facet(highlighterFacet);return main.length?main:state.facet(fallbackHighlighter);}function syntaxHighlighting(highlighter,options){let ext=[treeHighlighter],themeType;if(highlighter instanceof HighlightStyle){if(highlighter.module)ext.push(EditorView.styleModule.of(highlighter.module));themeType=highlighter.themeType;}if(options===null||options===void 0?void 0:options.fallback)ext.push(fallbackHighlighter.of(highlighter));else if(themeType)ext.push(highlighterFacet.computeN([EditorView.darkTheme],state=>{return state.facet(EditorView.darkTheme)==(themeType==\\\"dark\\\")?[highlighter]:[];}));else ext.push(highlighterFacet.of(highlighter));return ext;}function highlightingFor(state,tags,scope){let highlighters=getHighlighters(state);let result=null;if(highlighters)for(let _i192=0,_length192=highlighters.length;_i192\u003C_length192;_i192++){let highlighter=highlighters[_i192];if(!highlighter.scope||scope&&highlighter.scope(scope)){let cls=highlighter.style(tags);if(cls)result=result?result+\\\" \\\"+cls:cls;}}return result;}class TreeHighlighter{constructor(view){this.markCache=Object.create(null);this.tree=syntaxTree(view.state);this.decorations=this.buildDeco(view,getHighlighters(view.state));this.decoratedTo=view.viewport.to;}update(update){let tree=syntaxTree(update.state),highlighters=getHighlighters(update.state);let styleChange=highlighters!=getHighlighters(update.startState);let{viewport}=update.view,decoratedToMapped=update.changes.mapPos(this.decoratedTo,1);if(tree.length\u003Cviewport.to&&!styleChange&&tree.type==this.tree.type&&decoratedToMapped>=viewport.to){this.decorations=this.decorations.map(update.changes);this.decoratedTo=decoratedToMapped;}else if(tree!=this.tree||update.viewportChanged||styleChange){this.tree=tree;this.decorations=this.buildDeco(update.view,highlighters);this.decoratedTo=viewport.to;}}buildDeco(view,highlighters){if(!highlighters||!this.tree.length)return Decoration.none;let builder=new RangeSetBuilder();for(let _i193=0,_view$visibleRanges3=view.visibleRanges,_length193=_view$visibleRanges3.length;_i193\u003C_length193;_i193++){let{from,to}=_view$visibleRanges3[_i193];highlightTree(this.tree,highlighters,(from,to,style)=>{builder.add(from,to,this.markCache[style]||(this.markCache[style]=Decoration.mark({class:style})));},from,to);}return builder.finish();}}const treeHighlighter=Prec.high(ViewPlugin.fromClass(TreeHighlighter,{decorations:v=>v.decorations}));const defaultHighlightStyle=HighlightStyle.define([{tag:tags$1.meta,color:\\\"#404740\\\"},{tag:tags$1.link,textDecoration:\\\"underline\\\"},{tag:tags$1.heading,textDecoration:\\\"underline\\\",fontWeight:\\\"bold\\\"},{tag:tags$1.emphasis,fontStyle:\\\"italic\\\"},{tag:tags$1.strong,fontWeight:\\\"bold\\\"},{tag:tags$1.strikethrough,textDecoration:\\\"line-through\\\"},{tag:tags$1.keyword,color:\\\"#708\\\"},{tag:[tags$1.atom,tags$1.bool,tags$1.url,tags$1.contentSeparator,tags$1.labelName],color:\\\"#219\\\"},{tag:[tags$1.literal,tags$1.inserted],color:\\\"#164\\\"},{tag:[tags$1.string,tags$1.deleted],color:\\\"#a11\\\"},{tag:[tags$1.regexp,tags$1.escape,tags$1.special(tags$1.string)],color:\\\"#e40\\\"},{tag:tags$1.definition(tags$1.variableName),color:\\\"#00f\\\"},{tag:tags$1.local(tags$1.variableName),color:\\\"#30a\\\"},{tag:[tags$1.typeName,tags$1.namespace],color:\\\"#085\\\"},{tag:tags$1.className,color:\\\"#167\\\"},{tag:[tags$1.special(tags$1.variableName),tags$1.macroName],color:\\\"#256\\\"},{tag:tags$1.definition(tags$1.propertyName),color:\\\"#00c\\\"},{tag:tags$1.comment,color:\\\"#940\\\"},{tag:tags$1.invalid,color:\\\"#f00\\\"}]);const baseTheme$4=EditorView.baseTheme({\\\"&.cm-focused .cm-matchingBracket\\\":{backgroundColor:\\\"#328c8252\\\"},\\\"&.cm-focused .cm-nonmatchingBracket\\\":{backgroundColor:\\\"#bb555544\\\"}});const DefaultScanDist=10000,DefaultBrackets=\\\"()[]{}\\\";const bracketMatchingConfig=Facet.define({combine(configs){return combineConfig(configs,{afterCursor:true,brackets:DefaultBrackets,maxScanDistance:DefaultScanDist,renderMatch:defaultRenderMatch});}});const matchingMark=Decoration.mark({class:\\\"cm-matchingBracket\\\"}),nonmatchingMark=Decoration.mark({class:\\\"cm-nonmatchingBracket\\\"});function defaultRenderMatch(match){let decorations=[];let mark=match.matched?matchingMark:nonmatchingMark;decorations.push(mark.range(match.start.from,match.start.to));if(match.end)decorations.push(mark.range(match.end.from,match.end.to));return decorations;}const bracketMatchingState=StateField.define({create(){return Decoration.none;},update(deco,tr){if(!tr.docChanged&&!tr.selection)return deco;let decorations=[];let config=tr.state.facet(bracketMatchingConfig);for(let _i194=0,_tr$state$selection$r=tr.state.selection.ranges,_length194=_tr$state$selection$r.length;_i194\u003C_length194;_i194++){let range=_tr$state$selection$r[_i194];if(!range.empty)continue;let match=matchBrackets(tr.state,range.head,-1,config)||range.head>0&&matchBrackets(tr.state,range.head-1,1,config)||config.afterCursor&&(matchBrackets(tr.state,range.head,1,config)||range.head\u003Ctr.state.doc.length&&matchBrackets(tr.state,range.head+1,-1,config));if(match)decorations=decorations.concat(config.renderMatch(match,tr.state));}return Decoration.set(decorations,true);},provide:f=>EditorView.decorations.from(f)});const bracketMatchingUnique=[bracketMatchingState,baseTheme$4];function bracketMatching(config={}){return[bracketMatchingConfig.of(config),bracketMatchingUnique];}const bracketMatchingHandle=new NodeProp();function matchingNodes(node,dir,brackets){let byProp=node.prop(dir\u003C0?NodeProp.openedBy:NodeProp.closedBy);if(byProp)return byProp;if(node.name.length==1){let index=brackets.indexOf(node.name);if(index>-1&&index%2==(dir\u003C0?1:0))return[brackets[index+dir]];}return null;}function findHandle(node){let hasHandle=node.type.prop(bracketMatchingHandle);return hasHandle?hasHandle(node.node):node;}function matchBrackets(state,pos,dir,config={}){let maxScanDistance=config.maxScanDistance||DefaultScanDist,brackets=config.brackets||DefaultBrackets;let tree=syntaxTree(state),node=tree.resolveInner(pos,dir);for(let cur=node;cur;cur=cur.parent){let matches=matchingNodes(cur.type,dir,brackets);if(matches&&cur.from\u003Ccur.to){let handle=findHandle(cur);if(handle&&(dir>0?pos>=handle.from&&pos\u003Chandle.to:pos>handle.from&&pos\u003C=handle.to))return matchMarkedBrackets(state,pos,dir,cur,handle,matches,brackets);}}return matchPlainBrackets(state,pos,dir,tree,node.type,maxScanDistance,brackets);}function matchMarkedBrackets(_state,_pos,dir,token,handle,matching,brackets){let parent=token.parent,firstToken={from:handle.from,to:handle.to};let depth=0,cursor=parent===null||parent===void 0?void 0:parent.cursor();if(cursor&&(dir\u003C0?cursor.childBefore(token.from):cursor.childAfter(token.to)))do{if(dir\u003C0?cursor.to\u003C=token.from:cursor.from>=token.to){if(depth==0&&matching.indexOf(cursor.type.name)>-1&&cursor.from\u003Ccursor.to){let endHandle=findHandle(cursor);return{start:firstToken,end:endHandle?{from:endHandle.from,to:endHandle.to}:undefined,matched:true};}else if(matchingNodes(cursor.type,dir,brackets)){depth++;}else if(matchingNodes(cursor.type,-dir,brackets)){if(depth==0){let endHandle=findHandle(cursor);return{start:firstToken,end:endHandle&&endHandle.from\u003CendHandle.to?{from:endHandle.from,to:endHandle.to}:undefined,matched:false};}depth--;}}}while(dir\u003C0?cursor.prevSibling():cursor.nextSibling());return{start:firstToken,matched:false};}function matchPlainBrackets(state,pos,dir,tree,tokenType,maxScanDistance,brackets){let startCh=dir\u003C0?state.sliceDoc(pos-1,pos):state.sliceDoc(pos,pos+1);let bracket=brackets.indexOf(startCh);if(bracket\u003C0||bracket%2==0!=dir>0)return null;let startToken={from:dir\u003C0?pos-1:pos,to:dir>0?pos+1:pos};let iter=state.doc.iterRange(pos,dir>0?state.doc.length:0),depth=0;for(let distance=0;!iter.next().done&&distance\u003C=maxScanDistance;){let text=iter.value;if(dir\u003C0)distance+=text.length;let basePos=pos+distance*dir;for(let pos=dir>0?0:text.length-1,end=dir>0?text.length:-1;pos!=end;pos+=dir){let found=brackets.indexOf(text[pos]);if(found\u003C0||tree.resolveInner(basePos+pos,1).type!=tokenType)continue;if(found%2==0==dir>0){depth++;}else if(depth==1){return{start:startToken,end:{from:basePos+pos,to:basePos+pos+1},matched:found>>1==bracket>>1};}else{depth--;}}if(dir>0)distance+=text.length;}return iter.done?{start:startToken,matched:false}:null;}function countCol(string,end,tabSize,startIndex=0,startValue=0){if(end==null){end=string.search(/[^\\\\s\\\\u00a0]/);if(end==-1)end=string.length;}let n=startValue;for(let i=startIndex;i\u003Cend;i++){if(string.charCodeAt(i)==9)n+=tabSize-n%tabSize;else n++;}return n;}class StringStream{constructor(string,tabSize,indentUnit,overrideIndent){this.string=string;this.tabSize=tabSize;this.indentUnit=indentUnit;this.overrideIndent=overrideIndent;this.pos=0;this.start=0;this.lastColumnPos=0;this.lastColumnValue=0;}eol(){return this.pos>=this.string.length;}sol(){return this.pos==0;}peek(){return this.string.charAt(this.pos)||undefined;}next(){if(this.pos\u003Cthis.string.length)return this.string.charAt(this.pos++);}eat(match){let ch=this.string.charAt(this.pos);let ok;if(typeof match==\\\"string\\\")ok=ch==match;else ok=ch&&(match instanceof RegExp?match.test(ch):match(ch));if(ok){++this.pos;return ch;}}eatWhile(match){let start=this.pos;while(this.eat(match)){}return this.pos>start;}eatSpace(){let start=this.pos;while(/[\\\\s\\\\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>start;}skipToEnd(){this.pos=this.string.length;}skipTo(ch){let found=this.string.indexOf(ch,this.pos);if(found>-1){this.pos=found;return true;}}backUp(n){this.pos-=n;}column(){if(this.lastColumnPos\u003Cthis.start){this.lastColumnValue=countCol(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue);this.lastColumnPos=this.start;}return this.lastColumnValue;}indentation(){var _a;return(_a=this.overrideIndent)!==null&&_a!==void 0?_a:countCol(this.string,null,this.tabSize);}match(pattern,consume,caseInsensitive){if(typeof pattern==\\\"string\\\"){let cased=str=>caseInsensitive?str.toLowerCase():str;let substr=this.string.substr(this.pos,pattern.length);if(cased(substr)==cased(pattern)){if(consume!==false)this.pos+=pattern.length;return true;}else return null;}else{let match=this.string.slice(this.pos).match(pattern);if(match&&match.index>0)return null;if(match&&consume!==false)this.pos+=match[0].length;return match;}}current(){return this.string.slice(this.start,this.pos);}}function fullParser(spec){return{name:spec.name||\\\"\\\",token:spec.token,blankLine:spec.blankLine||(()=>{}),startState:spec.startState||(()=>true),copyState:spec.copyState||defaultCopyState,indent:spec.indent||(()=>null),languageData:spec.languageData||{},tokenTable:spec.tokenTable||noTokens};}function defaultCopyState(state){if(typeof state!=\\\"object\\\")return state;let newState={};for(let prop in state){let val=state[prop];newState[prop]=val instanceof Array?val.slice():val;}return newState;}const IndentedFrom=new WeakMap();class StreamLanguage extends Language{constructor(parser){let data=defineLanguageFacet(parser.languageData);let p=fullParser(parser),self;let impl=new class extends Parser{createParse(input,fragments,ranges){return new Parse$1(self,input,fragments,ranges);}}();super(data,impl,[indentService.of((cx,pos)=>this.getIndent(cx,pos))],parser.name);this.topNode=docID(data);self=this;this.streamParser=p;this.stateAfter=new NodeProp({perNode:true});this.tokenTable=parser.tokenTable?new TokenTable(p.tokenTable):defaultTokenTable;}static define(spec){return new StreamLanguage(spec);}getIndent(cx,pos){let tree=syntaxTree(cx.state),at=tree.resolve(pos);while(at&&at.type!=this.topNode)at=at.parent;if(!at)return null;let from=undefined;let{overrideIndentation}=cx.options;if(overrideIndentation){from=IndentedFrom.get(cx.state);if(from!=null&&from\u003Cpos-1e4)from=undefined;}let start=findState(this,tree,0,at.from,from!==null&&from!==void 0?from:pos),statePos,state;if(start){state=start.state;statePos=start.pos+1;}else{state=this.streamParser.startState(cx.unit);statePos=0;}if(pos-statePos>10000)return null;while(statePos\u003Cpos){let line=cx.state.doc.lineAt(statePos),end=Math.min(pos,line.to);if(line.length){let indentation=overrideIndentation?overrideIndentation(line.from):-1;let stream=new StringStream(line.text,cx.state.tabSize,cx.unit,indentation\u003C0?undefined:indentation);while(stream.pos\u003Cend-line.from)readToken$1(this.streamParser.token,stream,state);}else{this.streamParser.blankLine(state,cx.unit);}if(end==pos)break;statePos=line.to+1;}let line=cx.lineAt(pos);if(overrideIndentation&&from==null)IndentedFrom.set(cx.state,line.from);return this.streamParser.indent(state,/^\\\\s*(.*)/.exec(line.text)[1],cx);}get allowsNesting(){return false;}}function findState(lang,tree,off,startPos,before){let state=off>=startPos&&off+tree.length\u003C=before&&tree.prop(lang.stateAfter);if(state)return{state:lang.streamParser.copyState(state),pos:off+tree.length};for(let i=tree.children.length-1;i>=0;i--){let child=tree.children[i],pos=off+tree.positions[i];let found=child instanceof Tree&&pos\u003Cbefore&&findState(lang,child,pos,startPos,before);if(found)return found;}return null;}function cutTree(lang,tree,from,to,inside){if(inside&&from\u003C=0&&to>=tree.length)return tree;if(!inside&&tree.type==lang.topNode)inside=true;for(let i=tree.children.length-1;i>=0;i--){let pos=tree.positions[i],child=tree.children[i],inner;if(pos\u003Cto&&child instanceof Tree){if(!(inner=cutTree(lang,child,from-pos,to-pos,inside)))break;return!inside?inner:new Tree(tree.type,tree.children.slice(0,i).concat(inner),tree.positions.slice(0,i+1),pos+inner.length);}}return null;}function findStartInFragments(lang,fragments,startPos,editorState){for(let _i195=0,_length195=fragments.length;_i195\u003C_length195;_i195++){let f=fragments[_i195];let from=f.from+(f.openStart?25:0),to=f.to-(f.openEnd?25:0);let found=from\u003C=startPos&&to>startPos&&findState(lang,f.tree,0-f.offset,startPos,to),tree;if(found&&(tree=cutTree(lang,f.tree,startPos+f.offset,found.pos+f.offset,false)))return{state:found.state,tree};}return{state:lang.streamParser.startState(editorState?getIndentUnit(editorState):4),tree:Tree.empty};}class Parse$1{constructor(lang,input,fragments,ranges){this.lang=lang;this.input=input;this.fragments=fragments;this.ranges=ranges;this.stoppedAt=null;this.chunks=[];this.chunkPos=[];this.chunk=[];this.chunkReused=undefined;this.rangeIndex=0;this.to=ranges[ranges.length-1].to;let context=ParseContext.get(),from=ranges[0].from;let{state,tree}=findStartInFragments(lang,fragments,from,context===null||context===void 0?void 0:context.state);this.state=state;this.parsedPos=this.chunkStart=from+tree.length;for(let i=0;i\u003Ctree.children.length;i++){this.chunks.push(tree.children[i]);this.chunkPos.push(tree.positions[i]);}if(context&&this.parsedPos\u003Ccontext.viewport.from-100000){this.state=this.lang.streamParser.startState(getIndentUnit(context.state));context.skipUntilInView(this.parsedPos,context.viewport.from);this.parsedPos=context.viewport.from;}this.moveRangeIndex();}advance(){let context=ParseContext.get();let parseEnd=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt);let end=Math.min(parseEnd,this.chunkStart+2048);if(context)end=Math.min(end,context.viewport.to);while(this.parsedPos\u003Cend)this.parseLine(context);if(this.chunkStart\u003Cthis.parsedPos)this.finishChunk();if(this.parsedPos>=parseEnd)return this.finish();if(context&&this.parsedPos>=context.viewport.to){context.skipUntilInView(this.parsedPos,parseEnd);return this.finish();}return null;}stopAt(pos){this.stoppedAt=pos;}lineAfter(pos){let chunk=this.input.chunk(pos);if(!this.input.lineChunks){let eol=chunk.indexOf(\\\"\\\\n\\\");if(eol>-1)chunk=chunk.slice(0,eol);}else if(chunk==\\\"\\\\n\\\"){chunk=\\\"\\\";}return pos+chunk.length\u003C=this.to?chunk:chunk.slice(0,this.to-pos);}nextLine(){let from=this.parsedPos,line=this.lineAfter(from),end=from+line.length;for(let index=this.rangeIndex;;){let rangeEnd=this.ranges[index].to;if(rangeEnd>=end)break;line=line.slice(0,rangeEnd-(end-line.length));index++;if(index==this.ranges.length)break;let rangeStart=this.ranges[index].from;let after=this.lineAfter(rangeStart);line+=after;end=rangeStart+after.length;}return{line,end};}skipGapsTo(pos,offset,side){for(;;){let end=this.ranges[this.rangeIndex].to,offPos=pos+offset;if(side>0?end>offPos:end>=offPos)break;let start=this.ranges[++this.rangeIndex].from;offset+=start-end;}return offset;}moveRangeIndex(){while(this.ranges[this.rangeIndex].to\u003Cthis.parsedPos)this.rangeIndex++;}emitToken(id,from,to,size,offset){if(this.ranges.length>1){offset=this.skipGapsTo(from,offset,1);from+=offset;let len0=this.chunk.length;offset=this.skipGapsTo(to,offset,-1);to+=offset;size+=this.chunk.length-len0;}this.chunk.push(id,from,to,size);return offset;}parseLine(context){let{line,end}=this.nextLine(),offset=0,{streamParser}=this.lang;let stream=new StringStream(line,context?context.state.tabSize:4,context?getIndentUnit(context.state):2);if(stream.eol()){streamParser.blankLine(this.state,stream.indentUnit);}else{while(!stream.eol()){let token=readToken$1(streamParser.token,stream,this.state);if(token)offset=this.emitToken(this.lang.tokenTable.resolve(token),this.parsedPos+stream.start,this.parsedPos+stream.pos,4,offset);if(stream.start>10000)break;}}this.parsedPos=end;this.moveRangeIndex();if(this.parsedPos\u003Cthis.to)this.parsedPos++;}finishChunk(){let tree=Tree.build({buffer:this.chunk,start:this.chunkStart,length:this.parsedPos-this.chunkStart,nodeSet,topID:0,maxBufferLength:2048,reused:this.chunkReused});tree=new Tree(tree.type,tree.children,tree.positions,tree.length,[[this.lang.stateAfter,this.lang.streamParser.copyState(this.state)]]);this.chunks.push(tree);this.chunkPos.push(this.chunkStart-this.ranges[0].from);this.chunk=[];this.chunkReused=undefined;this.chunkStart=this.parsedPos;}finish(){return new Tree(this.lang.topNode,this.chunks,this.chunkPos,this.parsedPos-this.ranges[0].from).balance();}}function readToken$1(token,stream,state){stream.start=stream.pos;for(let i=0;i\u003C10;i++){let result=token(stream,state);if(stream.pos>stream.start)return result;}throw new Error(\\\"Stream parser failed to advance stream.\\\");}const noTokens=Object.create(null);const typeArray=[NodeType.none];const nodeSet=new NodeSet(typeArray);const warned=[];const byTag=Object.create(null);const defaultTable=Object.create(null);for(let _i196=0,_ref3=[[\\\"variable\\\",\\\"variableName\\\"],[\\\"variable-2\\\",\\\"variableName.special\\\"],[\\\"string-2\\\",\\\"string.special\\\"],[\\\"def\\\",\\\"variableName.definition\\\"],[\\\"tag\\\",\\\"tagName\\\"],[\\\"attribute\\\",\\\"attributeName\\\"],[\\\"type\\\",\\\"typeName\\\"],[\\\"builtin\\\",\\\"variableName.standard\\\"],[\\\"qualifier\\\",\\\"modifier\\\"],[\\\"error\\\",\\\"invalid\\\"],[\\\"header\\\",\\\"heading\\\"],[\\\"property\\\",\\\"propertyName\\\"]],_length196=_ref3.length;_i196\u003C_length196;_i196++){let[legacyName,name]=_ref3[_i196];defaultTable[legacyName]=createTokenType(noTokens,name);}class TokenTable{constructor(extra){this.extra=extra;this.table=Object.assign(Object.create(null),defaultTable);}resolve(tag){return!tag?0:this.table[tag]||(this.table[tag]=createTokenType(this.extra,tag));}}const defaultTokenTable=new TokenTable(noTokens);function warnForPart(part,msg){if(warned.indexOf(part)>-1)return;warned.push(part);console.warn(msg);}function createTokenType(extra,tagStr){let tags$1$1=[];for(let _i197=0,_tagStr$split=tagStr.split(\\\" \\\"),_length197=_tagStr$split.length;_i197\u003C_length197;_i197++){let name=_tagStr$split[_i197];let found=[];for(let _i198=0,_name$split=name.split(\\\".\\\"),_length198=_name$split.length;_i198\u003C_length198;_i198++){let part=_name$split[_i198];let value=extra[part]||tags$1[part];if(!value){warnForPart(part,`Unknown highlighting tag ${part}`);}else if(typeof value==\\\"function\\\"){if(!found.length)warnForPart(part,`Modifier ${part} used at start of tag`);else found=found.map(value);}else{if(found.length)warnForPart(part,`Tag ${part} used as modifier`);else found=Array.isArray(value)?value:[value];}}for(let _i199=0,_found=found,_length199=_found.length;_i199\u003C_length199;_i199++){let tag=_found[_i199];tags$1$1.push(tag);}}if(!tags$1$1.length)return 0;let name=tagStr.replace(/ /g,\\\"_\\\"),key=name+\\\" \\\"+tags$1$1.map(t=>t.id);let known=byTag[key];if(known)return known.id;let type=byTag[key]=NodeType.define({id:typeArray.length,name,props:[styleTags({[name]:tags$1$1})]});typeArray.push(type);return type.id;}function docID(data){let type=NodeType.define({id:typeArray.length,name:\\\"Document\\\",props:[languageDataProp.add(()=>data)],top:true});typeArray.push(type);return type;}function buildForLine(line){return line.length\u003C=4096&&/[\\\\u0590-\\\\u05f4\\\\u0600-\\\\u06ff\\\\u0700-\\\\u08ac\\\\ufb50-\\\\ufdff]/.test(line);}function textHasRTL(text){for(let i=text.iter();!i.next().done;)if(buildForLine(i.value))return true;return false;}function changeAddsRTL(change){let added=false;change.iterChanges((fA,tA,fB,tB,ins)=>{if(!added&&textHasRTL(ins))added=true;});return added;}const alwaysIsolate=Facet.define({combine:values=>values.some(x=>x)});function bidiIsolates(options={}){let extensions=[isolateMarks];if(options.alwaysIsolate)extensions.push(alwaysIsolate.of(true));return extensions;}const isolateMarks=ViewPlugin.fromClass(class{constructor(view){this.always=view.state.facet(alwaysIsolate)||view.textDirection!=Direction.LTR||view.state.facet(EditorView.perLineTextDirection);this.hasRTL=!this.always&&textHasRTL(view.state.doc);this.tree=syntaxTree(view.state);this.decorations=this.always||this.hasRTL?buildDeco(view,this.tree,this.always):Decoration.none;}update(update){let always=update.state.facet(alwaysIsolate)||update.view.textDirection!=Direction.LTR||update.state.facet(EditorView.perLineTextDirection);if(!always&&!this.hasRTL&&changeAddsRTL(update.changes))this.hasRTL=true;if(!always&&!this.hasRTL)return;let tree=syntaxTree(update.state);if(always!=this.always||tree!=this.tree||update.docChanged||update.viewportChanged){this.tree=tree;this.always=always;this.decorations=buildDeco(update.view,tree,always);}}},{provide:plugin=>{function access(view){var _a,_b;return(_b=(_a=view.plugin(plugin))===null||_a===void 0?void 0:_a.decorations)!==null&&_b!==void 0?_b:Decoration.none;}return[EditorView.outerDecorations.of(access),Prec.lowest(EditorView.bidiIsolatedRanges.of(access))];}});function buildDeco(view,tree,always){let deco=new RangeSetBuilder();let ranges=view.visibleRanges;if(!always)ranges=clipRTLLines(ranges,view.state.doc);for(let _i200=0,_ranges=ranges,_length200=_ranges.length;_i200\u003C_length200;_i200++){let{from,to}=_ranges[_i200];tree.iterate({enter:node=>{let iso=node.type.prop(NodeProp.isolate);if(iso)deco.add(node.from,node.to,marks[iso]);},from,to});}return deco.finish();}function clipRTLLines(ranges,doc){let cur=doc.iter(),pos=0,result=[],last=null;for(let _i201=0,_length201=ranges.length;_i201\u003C_length201;_i201++){let{from,to}=ranges[_i201];if(from!=pos){if(pos\u003Cfrom)cur.next(from-pos);pos=from;}for(;;){let start=pos,end=pos+cur.value.length;if(!cur.lineBreak&&buildForLine(cur.value)){if(last&&last.to>start-10)last.to=Math.min(to,end);else result.push(last={from:start,to:Math.min(to,end)});}if(pos>=to)break;pos=end;cur.next();}}return result;}const marks={rtl:Decoration.mark({class:\\\"cm-iso\\\",inclusive:true,attributes:{dir:\\\"rtl\\\"},bidiIsolate:Direction.RTL}),ltr:Decoration.mark({class:\\\"cm-iso\\\",inclusive:true,attributes:{dir:\\\"ltr\\\"},bidiIsolate:Direction.LTR}),auto:Decoration.mark({class:\\\"cm-iso\\\",inclusive:true,attributes:{dir:\\\"auto\\\"},bidiIsolate:null})};var _m2=Object.freeze({__proto__:null,DocInput:DocInput,HighlightStyle:HighlightStyle,IndentContext:IndentContext,LRLanguage:LRLanguage,Language:Language,LanguageDescription:LanguageDescription,LanguageSupport:LanguageSupport,ParseContext:ParseContext,StreamLanguage:StreamLanguage,StringStream:StringStream,TreeIndentContext:TreeIndentContext,bidiIsolates:bidiIsolates,bracketMatching:bracketMatching,bracketMatchingHandle:bracketMatchingHandle,codeFolding:codeFolding,continuedIndent:continuedIndent,defaultHighlightStyle:defaultHighlightStyle,defineLanguageFacet:defineLanguageFacet,delimitedIndent:delimitedIndent,ensureSyntaxTree:ensureSyntaxTree,flatIndent:flatIndent,foldAll:foldAll,foldCode:foldCode,foldEffect:foldEffect,foldGutter:foldGutter,foldInside:foldInside,foldKeymap:foldKeymap,foldNodeProp:foldNodeProp,foldService:foldService,foldState:foldState,foldable:foldable,foldedRanges:foldedRanges,forceParsing:forceParsing,getIndentUnit:getIndentUnit,getIndentation:getIndentation,highlightingFor:highlightingFor,indentNodeProp:indentNodeProp,indentOnInput:indentOnInput,indentRange:indentRange,indentService:indentService,indentString:indentString,indentUnit:indentUnit,language:language,languageDataProp:languageDataProp,matchBrackets:matchBrackets,sublanguageProp:sublanguageProp,syntaxHighlighting:syntaxHighlighting,syntaxParserRunning:syntaxParserRunning,syntaxTree:syntaxTree,syntaxTreeAvailable:syntaxTreeAvailable,toggleFold:toggleFold,unfoldAll:unfoldAll,unfoldCode:unfoldCode,unfoldEffect:unfoldEffect});const toggleComment=target=>{let{state}=target,line=state.doc.lineAt(state.selection.main.from),config=getConfig(target.state,line.from);return config.line?toggleLineComment(target):config.block?toggleBlockCommentByLine(target):false;};function command(f,option){return({state,dispatch})=>{if(state.readOnly)return false;let tr=f(option,state);if(!tr)return false;dispatch(state.update(tr));return true;};}const toggleLineComment=command(changeLineComment,0);const lineComment=command(changeLineComment,1);const lineUncomment=command(changeLineComment,2);const toggleBlockComment=command(changeBlockComment,0);const blockComment=command(changeBlockComment,1);const blockUncomment=command(changeBlockComment,2);const toggleBlockCommentByLine=command((o,s)=>changeBlockComment(o,s,selectedLineRanges(s)),0);function getConfig(state,pos){let data=state.languageDataAt(\\\"commentTokens\\\",pos);return data.length?data[0]:{};}const SearchMargin=50;function findBlockComment(state,{open,close},from,to){let textBefore=state.sliceDoc(from-SearchMargin,from);let textAfter=state.sliceDoc(to,to+SearchMargin);let spaceBefore=/\\\\s*$/.exec(textBefore)[0].length,spaceAfter=/^\\\\s*/.exec(textAfter)[0].length;let beforeOff=textBefore.length-spaceBefore;if(textBefore.slice(beforeOff-open.length,beforeOff)==open&&textAfter.slice(spaceAfter,spaceAfter+close.length)==close){return{open:{pos:from-spaceBefore,margin:spaceBefore&&1},close:{pos:to+spaceAfter,margin:spaceAfter&&1}};}let startText,endText;if(to-from\u003C=2*SearchMargin){startText=endText=state.sliceDoc(from,to);}else{startText=state.sliceDoc(from,from+SearchMargin);endText=state.sliceDoc(to-SearchMargin,to);}let startSpace=/^\\\\s*/.exec(startText)[0].length,endSpace=/\\\\s*$/.exec(endText)[0].length;let endOff=endText.length-endSpace-close.length;if(startText.slice(startSpace,startSpace+open.length)==open&&endText.slice(endOff,endOff+close.length)==close){return{open:{pos:from+startSpace+open.length,margin:/\\\\s/.test(startText.charAt(startSpace+open.length))?1:0},close:{pos:to-endSpace-close.length,margin:/\\\\s/.test(endText.charAt(endOff-1))?1:0}};}return null;}function selectedLineRanges(state){let ranges=[];for(let _i202=0,_state$selection$rang6=state.selection.ranges,_length202=_state$selection$rang6.length;_i202\u003C_length202;_i202++){let r=_state$selection$rang6[_i202];let fromLine=state.doc.lineAt(r.from);let toLine=r.to\u003C=fromLine.to?fromLine:state.doc.lineAt(r.to);let last=ranges.length-1;if(last>=0&&ranges[last].to>fromLine.from)ranges[last].to=toLine.to;else ranges.push({from:fromLine.from+/^\\\\s*/.exec(fromLine.text)[0].length,to:toLine.to});}return ranges;}function changeBlockComment(option,state,ranges=state.selection.ranges){let tokens=ranges.map(r=>getConfig(state,r.from).block);if(!tokens.every(c=>c))return null;let comments=ranges.map((r,i)=>findBlockComment(state,tokens[i],r.from,r.to));if(option!=2&&!comments.every(c=>c)){return{changes:state.changes(ranges.map((range,i)=>{if(comments[i])return[];return[{from:range.from,insert:tokens[i].open+\\\" \\\"},{from:range.to,insert:\\\" \\\"+tokens[i].close}];}))};}else if(option!=1&&comments.some(c=>c)){let changes=[];for(let i=0,comment;i\u003Ccomments.length;i++)if(comment=comments[i]){let token=tokens[i],{open,close}=comment;changes.push({from:open.pos-token.open.length,to:open.pos+open.margin},{from:close.pos-close.margin,to:close.pos+token.close.length});}return{changes};}return null;}function changeLineComment(option,state,ranges=state.selection.ranges){let lines=[];let prevLine=-1;for(let _i203=0,_length203=ranges.length;_i203\u003C_length203;_i203++){let{from,to}=ranges[_i203];let startI=lines.length,minIndent=1e9;let token=getConfig(state,from).line;if(!token)continue;for(let pos=from;pos\u003C=to;){let line=state.doc.lineAt(pos);if(line.from>prevLine&&(from==to||to>line.from)){prevLine=line.from;let indent=/^\\\\s*/.exec(line.text)[0].length;let empty=indent==line.length;let comment=line.text.slice(indent,indent+token.length)==token?indent:-1;if(indent\u003Cline.text.length&&indent\u003CminIndent)minIndent=indent;lines.push({line,comment,token,indent,empty,single:false});}pos=line.to+1;}if(minIndent\u003C1e9)for(let i=startI;i\u003Clines.length;i++)if(lines[i].indent\u003Clines[i].line.text.length)lines[i].indent=minIndent;if(lines.length==startI+1)lines[startI].single=true;}if(option!=2&&lines.some(l=>l.comment\u003C0&&(!l.empty||l.single))){let changes=[];for(let _i204=0,_length204=lines.length;_i204\u003C_length204;_i204++){let{line,token,indent,empty,single}=lines[_i204];if(single||!empty)changes.push({from:line.from+indent,insert:token+\\\" \\\"});}let changeSet=state.changes(changes);return{changes:changeSet,selection:state.selection.map(changeSet,1)};}else if(option!=1&&lines.some(l=>l.comment>=0)){let changes=[];for(let _i205=0,_length205=lines.length;_i205\u003C_length205;_i205++){let{line,comment,token}=lines[_i205];if(comment>=0){let from=line.from+comment,to=from+token.length;if(line.text[to-line.from]==\\\" \\\")to++;changes.push({from,to});}}return{changes};}return null;}const fromHistory=Annotation.define();const isolateHistory=Annotation.define();const invertedEffects=Facet.define();const historyConfig=Facet.define({combine(configs){return combineConfig(configs,{minDepth:100,newGroupDelay:500,joinToEvent:(_t,isAdjacent)=>isAdjacent},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(a,b)=>(tr,adj)=>a(tr,adj)||b(tr,adj)});}});const historyField_=StateField.define({create(){return HistoryState.empty;},update(state,tr){let config=tr.state.facet(historyConfig);let fromHist=tr.annotation(fromHistory);if(fromHist){let item=HistEvent.fromTransaction(tr,fromHist.selection),from=fromHist.side;let other=from==0?state.undone:state.done;if(item)other=updateBranch(other,other.length,config.minDepth,item);else other=addSelection(other,tr.startState.selection);return new HistoryState(from==0?fromHist.rest:other,from==0?other:fromHist.rest);}let isolate=tr.annotation(isolateHistory);if(isolate==\\\"full\\\"||isolate==\\\"before\\\")state=state.isolate();if(tr.annotation(Transaction.addToHistory)===false)return!tr.changes.empty?state.addMapping(tr.changes.desc):state;let event=HistEvent.fromTransaction(tr);let time=tr.annotation(Transaction.time),userEvent=tr.annotation(Transaction.userEvent);if(event)state=state.addChanges(event,time,userEvent,config,tr);else if(tr.selection)state=state.addSelection(tr.startState.selection,time,userEvent,config.newGroupDelay);if(isolate==\\\"full\\\"||isolate==\\\"after\\\")state=state.isolate();return state;},toJSON(value){return{done:value.done.map(e=>e.toJSON()),undone:value.undone.map(e=>e.toJSON())};},fromJSON(json){return new HistoryState(json.done.map(HistEvent.fromJSON),json.undone.map(HistEvent.fromJSON));}});function history(config={}){return[historyField_,historyConfig.of(config),EditorView.domEventHandlers({beforeinput(e,view){let command=e.inputType==\\\"historyUndo\\\"?undo:e.inputType==\\\"historyRedo\\\"?redo:null;if(!command)return false;e.preventDefault();return command(view);}})];}const historyField=historyField_;function cmd(side,selection){return function({state,dispatch}){if(!selection&&state.readOnly)return false;let historyState=state.field(historyField_,false);if(!historyState)return false;let tr=historyState.pop(side,state,selection);if(!tr)return false;dispatch(tr);return true;};}const undo=cmd(0,false);const redo=cmd(1,false);const undoSelection=cmd(0,true);const redoSelection=cmd(1,true);function depth(side){return function(state){let histState=state.field(historyField_,false);if(!histState)return 0;let branch=side==0?histState.done:histState.undone;return branch.length-(branch.length&&!branch[0].changes?1:0);};}const undoDepth=depth(0);const redoDepth=depth(1);class HistEvent{constructor(changes,effects,mapped,startSelection,selectionsAfter){this.changes=changes;this.effects=effects;this.mapped=mapped;this.startSelection=startSelection;this.selectionsAfter=selectionsAfter;}setSelAfter(after){return new HistEvent(this.changes,this.effects,this.mapped,this.startSelection,after);}toJSON(){var _a,_b,_c;return{changes:(_a=this.changes)===null||_a===void 0?void 0:_a.toJSON(),mapped:(_b=this.mapped)===null||_b===void 0?void 0:_b.toJSON(),startSelection:(_c=this.startSelection)===null||_c===void 0?void 0:_c.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())};}static fromJSON(json){return new HistEvent(json.changes&&ChangeSet.fromJSON(json.changes),[],json.mapped&&ChangeDesc.fromJSON(json.mapped),json.startSelection&&EditorSelection.fromJSON(json.startSelection),json.selectionsAfter.map(EditorSelection.fromJSON));}static fromTransaction(tr,selection){let effects=none$2;for(let _i206=0,_tr$startState$facet=tr.startState.facet(invertedEffects),_length206=_tr$startState$facet.length;_i206\u003C_length206;_i206++){let invert=_tr$startState$facet[_i206];let result=invert(tr);if(result.length)effects=effects.concat(result);}if(!effects.length&&tr.changes.empty)return null;return new HistEvent(tr.changes.invert(tr.startState.doc),effects,undefined,selection||tr.startState.selection,none$2);}static selection(selections){return new HistEvent(undefined,none$2,undefined,undefined,selections);}}function updateBranch(branch,to,maxLen,newEvent){let start=to+1>maxLen+20?to-maxLen-1:0;let newBranch=branch.slice(start,to);newBranch.push(newEvent);return newBranch;}function isAdjacent(a,b){let ranges=[],isAdjacent=false;a.iterChangedRanges((f,t)=>ranges.push(f,t));b.iterChangedRanges((_f,_t,f,t)=>{for(let i=0;i\u003Cranges.length;){let from=ranges[i++],to=ranges[i++];if(t>=from&&f\u003C=to)isAdjacent=true;}});return isAdjacent;}function eqSelectionShape(a,b){return a.ranges.length==b.ranges.length&&a.ranges.filter((r,i)=>r.empty!=b.ranges[i].empty).length===0;}function conc(a,b){return!a.length?b:!b.length?a:a.concat(b);}const none$2=[];const MaxSelectionsPerEvent=200;function addSelection(branch,selection){if(!branch.length){return[HistEvent.selection([selection])];}else{let lastEvent=branch[branch.length-1];let sels=lastEvent.selectionsAfter.slice(Math.max(0,lastEvent.selectionsAfter.length-MaxSelectionsPerEvent));if(sels.length&&sels[sels.length-1].eq(selection))return branch;sels.push(selection);return updateBranch(branch,branch.length-1,1e9,lastEvent.setSelAfter(sels));}}function popSelection(branch){let last=branch[branch.length-1];let newBranch=branch.slice();newBranch[branch.length-1]=last.setSelAfter(last.selectionsAfter.slice(0,last.selectionsAfter.length-1));return newBranch;}function addMappingToBranch(branch,mapping){if(!branch.length)return branch;let length=branch.length,selections=none$2;while(length){let event=mapEvent(branch[length-1],mapping,selections);if(event.changes&&!event.changes.empty||event.effects.length){let result=branch.slice(0,length);result[length-1]=event;return result;}else{mapping=event.mapped;length--;selections=event.selectionsAfter;}}return selections.length?[HistEvent.selection(selections)]:none$2;}function mapEvent(event,mapping,extraSelections){let selections=conc(event.selectionsAfter.length?event.selectionsAfter.map(s=>s.map(mapping)):none$2,extraSelections);if(!event.changes)return HistEvent.selection(selections);let mappedChanges=event.changes.map(mapping),before=mapping.mapDesc(event.changes,true);let fullMapping=event.mapped?event.mapped.composeDesc(before):before;return new HistEvent(mappedChanges,StateEffect.mapEffects(event.effects,mapping),fullMapping,event.startSelection.map(before),selections);}const joinableUserEvent=/^(input\\\\.type|delete)($|\\\\.)/;class HistoryState{constructor(done,undone,prevTime=0,prevUserEvent=undefined){this.done=done;this.undone=undone;this.prevTime=prevTime;this.prevUserEvent=prevUserEvent;}isolate(){return this.prevTime?new HistoryState(this.done,this.undone):this;}addChanges(event,time,userEvent,config,tr){let done=this.done,lastEvent=done[done.length-1];if(lastEvent&&lastEvent.changes&&!lastEvent.changes.empty&&event.changes&&(!userEvent||joinableUserEvent.test(userEvent))&&(!lastEvent.selectionsAfter.length&&time-this.prevTime\u003Cconfig.newGroupDelay&&config.joinToEvent(tr,isAdjacent(lastEvent.changes,event.changes))||userEvent==\\\"input.type.compose\\\")){done=updateBranch(done,done.length-1,config.minDepth,new HistEvent(event.changes.compose(lastEvent.changes),conc(event.effects,lastEvent.effects),lastEvent.mapped,lastEvent.startSelection,none$2));}else{done=updateBranch(done,done.length,config.minDepth,event);}return new HistoryState(done,none$2,time,userEvent);}addSelection(selection,time,userEvent,newGroupDelay){let last=this.done.length?this.done[this.done.length-1].selectionsAfter:none$2;if(last.length>0&&time-this.prevTime\u003CnewGroupDelay&&userEvent==this.prevUserEvent&&userEvent&&/^select($|\\\\.)/.test(userEvent)&&eqSelectionShape(last[last.length-1],selection))return this;return new HistoryState(addSelection(this.done,selection),this.undone,time,userEvent);}addMapping(mapping){return new HistoryState(addMappingToBranch(this.done,mapping),addMappingToBranch(this.undone,mapping),this.prevTime,this.prevUserEvent);}pop(side,state,onlySelection){let branch=side==0?this.done:this.undone;if(branch.length==0)return null;let event=branch[branch.length-1],selection=event.selectionsAfter[0]||state.selection;if(onlySelection&&event.selectionsAfter.length){return state.update({selection:event.selectionsAfter[event.selectionsAfter.length-1],annotations:fromHistory.of({side,rest:popSelection(branch),selection}),userEvent:side==0?\\\"select.undo\\\":\\\"select.redo\\\",scrollIntoView:true});}else if(!event.changes){return null;}else{let rest=branch.length==1?none$2:branch.slice(0,branch.length-1);if(event.mapped)rest=addMappingToBranch(rest,event.mapped);return state.update({changes:event.changes,selection:event.startSelection,effects:event.effects,annotations:fromHistory.of({side,rest,selection}),filter:false,userEvent:side==0?\\\"undo\\\":\\\"redo\\\",scrollIntoView:true});}}}HistoryState.empty=new HistoryState(none$2,none$2);const historyKeymap=[{key:\\\"Mod-z\\\",run:undo,preventDefault:true},{key:\\\"Mod-y\\\",mac:\\\"Mod-Shift-z\\\",run:redo,preventDefault:true},{linux:\\\"Ctrl-Shift-z\\\",run:redo,preventDefault:true},{key:\\\"Mod-u\\\",run:undoSelection,preventDefault:true},{key:\\\"Alt-u\\\",mac:\\\"Mod-Shift-u\\\",run:redoSelection,preventDefault:true}];function updateSel(sel,by){return EditorSelection.create(sel.ranges.map(by),sel.mainIndex);}function setSel(state,selection){return state.update({selection,scrollIntoView:true,userEvent:\\\"select\\\"});}function moveSel({state,dispatch},how){let selection=updateSel(state.selection,how);if(selection.eq(state.selection,true))return false;dispatch(setSel(state,selection));return true;}function rangeEnd(range,forward){return EditorSelection.cursor(forward?range.to:range.from);}function cursorByChar(view,forward){return moveSel(view,range=>range.empty?view.moveByChar(range,forward):rangeEnd(range,forward));}function ltrAtCursor(view){return view.textDirectionAt(view.state.selection.main.head)==Direction.LTR;}const cursorCharLeft=view=>cursorByChar(view,!ltrAtCursor(view));const cursorCharRight=view=>cursorByChar(view,ltrAtCursor(view));const cursorCharForward=view=>cursorByChar(view,true);const cursorCharBackward=view=>cursorByChar(view,false);function cursorByGroup(view,forward){return moveSel(view,range=>range.empty?view.moveByGroup(range,forward):rangeEnd(range,forward));}const cursorGroupLeft=view=>cursorByGroup(view,!ltrAtCursor(view));const cursorGroupRight=view=>cursorByGroup(view,ltrAtCursor(view));const cursorGroupForward=view=>cursorByGroup(view,true);const cursorGroupBackward=view=>cursorByGroup(view,false);const segmenter=typeof Intl!=\\\"undefined\\\"&&Intl.Segmenter?new Intl.Segmenter(undefined,{granularity:\\\"word\\\"}):null;function moveBySubword(view,range,forward){let categorize=view.state.charCategorizer(range.from);let cat=CharCategory.Space,pos=range.from,steps=0;let done=false,sawUpper=false,sawLower=false;let step=next=>{if(done)return false;pos+=forward?next.length:-next.length;let nextCat=categorize(next),ahead;if(nextCat==CharCategory.Word&&next.charCodeAt(0)\u003C128&&/[\\\\W_]/.test(next))nextCat=-1;if(cat==CharCategory.Space)cat=nextCat;if(cat!=nextCat)return false;if(cat==CharCategory.Word){if(next.toLowerCase()==next){if(!forward&&sawUpper)return false;sawLower=true;}else if(sawLower){if(forward)return false;done=true;}else{if(sawUpper&&forward&&categorize(ahead=view.state.sliceDoc(pos,pos+1))==CharCategory.Word&&ahead.toLowerCase()==ahead)return false;sawUpper=true;}}steps++;return true;};let end=view.moveByChar(range,forward,start=>{step(start);return step;});if(segmenter&&cat==CharCategory.Word&&end.from==range.from+steps*(forward?1:-1)){let from=Math.min(range.head,end.head),to=Math.max(range.head,end.head);let skipped=view.state.sliceDoc(from,to);if(skipped.length>1&&/[\\\\u4E00-\\\\uffff]/.test(skipped)){let segments=Array.from(segmenter.segment(skipped));if(segments.length>1){if(forward)return EditorSelection.cursor(range.head+segments[1].index,-1);return EditorSelection.cursor(end.head+segments[segments.length-1].index,1);}}}return end;}function cursorBySubword(view,forward){return moveSel(view,range=>range.empty?moveBySubword(view,range,forward):rangeEnd(range,forward));}const cursorSubwordForward=view=>cursorBySubword(view,true);const cursorSubwordBackward=view=>cursorBySubword(view,false);function interestingNode(state,node,bracketProp){if(node.type.prop(bracketProp))return true;let len=node.to-node.from;return len&&(len>2||/[^\\\\s,.;:]/.test(state.sliceDoc(node.from,node.to)))||node.firstChild;}function moveBySyntax(state,start,forward){let pos=syntaxTree(state).resolveInner(start.head);let bracketProp=forward?NodeProp.closedBy:NodeProp.openedBy;for(let at=start.head;;){let next=forward?pos.childAfter(at):pos.childBefore(at);if(!next)break;if(interestingNode(state,next,bracketProp))pos=next;else at=forward?next.to:next.from;}let bracket=pos.type.prop(bracketProp),match,newPos;if(bracket&&(match=forward?matchBrackets(state,pos.from,1):matchBrackets(state,pos.to,-1))&&match.matched)newPos=forward?match.end.to:match.end.from;else newPos=forward?pos.to:pos.from;return EditorSelection.cursor(newPos,forward?-1:1);}const cursorSyntaxLeft=view=>moveSel(view,range=>moveBySyntax(view.state,range,!ltrAtCursor(view)));const cursorSyntaxRight=view=>moveSel(view,range=>moveBySyntax(view.state,range,ltrAtCursor(view)));function cursorByLine(view,forward){return moveSel(view,range=>{if(!range.empty)return rangeEnd(range,forward);let moved=view.moveVertically(range,forward);return moved.head!=range.head?moved:view.moveToLineBoundary(range,forward);});}const cursorLineUp=view=>cursorByLine(view,false);const cursorLineDown=view=>cursorByLine(view,true);function pageInfo(view){let selfScroll=view.scrollDOM.clientHeight\u003Cview.scrollDOM.scrollHeight-2;let marginTop=0,marginBottom=0,height;if(selfScroll){for(let _i207=0,_view$state$facet3=view.state.facet(EditorView.scrollMargins),_length207=_view$state$facet3.length;_i207\u003C_length207;_i207++){let source=_view$state$facet3[_i207];let margins=source(view);if(margins===null||margins===void 0?void 0:margins.top)marginTop=Math.max(margins===null||margins===void 0?void 0:margins.top,marginTop);if(margins===null||margins===void 0?void 0:margins.bottom)marginBottom=Math.max(margins===null||margins===void 0?void 0:margins.bottom,marginBottom);}height=view.scrollDOM.clientHeight-marginTop-marginBottom;}else{height=(view.dom.ownerDocument.defaultView||window).innerHeight;}return{marginTop,marginBottom,selfScroll,height:Math.max(view.defaultLineHeight,height-5)};}function cursorByPage(view,forward){let page=pageInfo(view);let{state}=view,selection=updateSel(state.selection,range=>{return range.empty?view.moveVertically(range,forward,page.height):rangeEnd(range,forward);});if(selection.eq(state.selection))return false;let effect;if(page.selfScroll){let startPos=view.coordsAtPos(state.selection.main.head);let scrollRect=view.scrollDOM.getBoundingClientRect();let scrollTop=scrollRect.top+page.marginTop,scrollBottom=scrollRect.bottom-page.marginBottom;if(startPos&&startPos.top>scrollTop&&startPos.bottom\u003CscrollBottom)effect=EditorView.scrollIntoView(selection.main.head,{y:\\\"start\\\",yMargin:startPos.top-scrollTop});}view.dispatch(setSel(state,selection),{effects:effect});return true;}const cursorPageUp=view=>cursorByPage(view,false);const cursorPageDown=view=>cursorByPage(view,true);function moveByLineBoundary(view,start,forward){let line=view.lineBlockAt(start.head),moved=view.moveToLineBoundary(start,forward);if(moved.head==start.head&&moved.head!=(forward?line.to:line.from))moved=view.moveToLineBoundary(start,forward,false);if(!forward&&moved.head==line.from&&line.length){let space=/^\\\\s*/.exec(view.state.sliceDoc(line.from,Math.min(line.from+100,line.to)))[0].length;if(space&&start.head!=line.from+space)moved=EditorSelection.cursor(line.from+space);}return moved;}const cursorLineBoundaryForward=view=>moveSel(view,range=>moveByLineBoundary(view,range,true));const cursorLineBoundaryBackward=view=>moveSel(view,range=>moveByLineBoundary(view,range,false));const cursorLineBoundaryLeft=view=>moveSel(view,range=>moveByLineBoundary(view,range,!ltrAtCursor(view)));const cursorLineBoundaryRight=view=>moveSel(view,range=>moveByLineBoundary(view,range,ltrAtCursor(view)));const cursorLineStart=view=>moveSel(view,range=>EditorSelection.cursor(view.lineBlockAt(range.head).from,1));const cursorLineEnd=view=>moveSel(view,range=>EditorSelection.cursor(view.lineBlockAt(range.head).to,-1));function toMatchingBracket(state,dispatch,extend){let found=false,selection=updateSel(state.selection,range=>{let matching=matchBrackets(state,range.head,-1)||matchBrackets(state,range.head,1)||range.head>0&&matchBrackets(state,range.head-1,1)||range.head\u003Cstate.doc.length&&matchBrackets(state,range.head+1,-1);if(!matching||!matching.end)return range;found=true;let head=matching.start.from==range.head?matching.end.to:matching.end.from;return extend?EditorSelection.range(range.anchor,head):EditorSelection.cursor(head);});if(!found)return false;dispatch(setSel(state,selection));return true;}const cursorMatchingBracket=({state,dispatch})=>toMatchingBracket(state,dispatch,false);const selectMatchingBracket=({state,dispatch})=>toMatchingBracket(state,dispatch,true);function extendSel(view,how){let selection=updateSel(view.state.selection,range=>{let head=how(range);return EditorSelection.range(range.anchor,head.head,head.goalColumn,head.bidiLevel||undefined);});if(selection.eq(view.state.selection))return false;view.dispatch(setSel(view.state,selection));return true;}function selectByChar(view,forward){return extendSel(view,range=>view.moveByChar(range,forward));}const selectCharLeft=view=>selectByChar(view,!ltrAtCursor(view));const selectCharRight=view=>selectByChar(view,ltrAtCursor(view));const selectCharForward=view=>selectByChar(view,true);const selectCharBackward=view=>selectByChar(view,false);function selectByGroup(view,forward){return extendSel(view,range=>view.moveByGroup(range,forward));}const selectGroupLeft=view=>selectByGroup(view,!ltrAtCursor(view));const selectGroupRight=view=>selectByGroup(view,ltrAtCursor(view));const selectGroupForward=view=>selectByGroup(view,true);const selectGroupBackward=view=>selectByGroup(view,false);function selectBySubword(view,forward){return extendSel(view,range=>moveBySubword(view,range,forward));}const selectSubwordForward=view=>selectBySubword(view,true);const selectSubwordBackward=view=>selectBySubword(view,false);const selectSyntaxLeft=view=>extendSel(view,range=>moveBySyntax(view.state,range,!ltrAtCursor(view)));const selectSyntaxRight=view=>extendSel(view,range=>moveBySyntax(view.state,range,ltrAtCursor(view)));function selectByLine(view,forward){return extendSel(view,range=>view.moveVertically(range,forward));}const selectLineUp=view=>selectByLine(view,false);const selectLineDown=view=>selectByLine(view,true);function selectByPage(view,forward){return extendSel(view,range=>view.moveVertically(range,forward,pageInfo(view).height));}const selectPageUp=view=>selectByPage(view,false);const selectPageDown=view=>selectByPage(view,true);const selectLineBoundaryForward=view=>extendSel(view,range=>moveByLineBoundary(view,range,true));const selectLineBoundaryBackward=view=>extendSel(view,range=>moveByLineBoundary(view,range,false));const selectLineBoundaryLeft=view=>extendSel(view,range=>moveByLineBoundary(view,range,!ltrAtCursor(view)));const selectLineBoundaryRight=view=>extendSel(view,range=>moveByLineBoundary(view,range,ltrAtCursor(view)));const selectLineStart=view=>extendSel(view,range=>EditorSelection.cursor(view.lineBlockAt(range.head).from));const selectLineEnd=view=>extendSel(view,range=>EditorSelection.cursor(view.lineBlockAt(range.head).to));const cursorDocStart=({state,dispatch})=>{dispatch(setSel(state,{anchor:0}));return true;};const cursorDocEnd=({state,dispatch})=>{dispatch(setSel(state,{anchor:state.doc.length}));return true;};const selectDocStart=({state,dispatch})=>{dispatch(setSel(state,{anchor:state.selection.main.anchor,head:0}));return true;};const selectDocEnd=({state,dispatch})=>{dispatch(setSel(state,{anchor:state.selection.main.anchor,head:state.doc.length}));return true;};const selectAll=({state,dispatch})=>{dispatch(state.update({selection:{anchor:0,head:state.doc.length},userEvent:\\\"select\\\"}));return true;};const selectLine=({state,dispatch})=>{let ranges=selectedLineBlocks(state).map(({from,to})=>EditorSelection.range(from,Math.min(to+1,state.doc.length)));dispatch(state.update({selection:EditorSelection.create(ranges),userEvent:\\\"select\\\"}));return true;};const selectParentSyntax=({state,dispatch})=>{let selection=updateSel(state.selection,range=>{var _a;let stack=syntaxTree(state).resolveStack(range.from,1);for(let cur=stack;cur;cur=cur.next){let{node}=cur;if((node.from\u003Crange.from&&node.to>=range.to||node.to>range.to&&node.from\u003C=range.from)&&((_a=node.parent)===null||_a===void 0?void 0:_a.parent))return EditorSelection.range(node.to,node.from);}return range;});dispatch(setSel(state,selection));return true;};const simplifySelection=({state,dispatch})=>{let cur=state.selection,selection=null;if(cur.ranges.length>1)selection=EditorSelection.create([cur.main]);else if(!cur.main.empty)selection=EditorSelection.create([EditorSelection.cursor(cur.main.head)]);if(!selection)return false;dispatch(setSel(state,selection));return true;};function deleteBy(target,by){if(target.state.readOnly)return false;let event=\\\"delete.selection\\\",{state}=target;let changes=state.changeByRange(range=>{let{from,to}=range;if(from==to){let towards=by(range);if(towards\u003Cfrom){event=\\\"delete.backward\\\";towards=skipAtomic(target,towards,false);}else if(towards>from){event=\\\"delete.forward\\\";towards=skipAtomic(target,towards,true);}from=Math.min(from,towards);to=Math.max(to,towards);}else{from=skipAtomic(target,from,false);to=skipAtomic(target,to,true);}return from==to?{range}:{changes:{from,to},range:EditorSelection.cursor(from,from\u003Crange.head?-1:1)};});if(changes.changes.empty)return false;target.dispatch(state.update(changes,{scrollIntoView:true,userEvent:event,effects:event==\\\"delete.selection\\\"?EditorView.announce.of(state.phrase(\\\"Selection deleted\\\")):undefined}));return true;}function skipAtomic(target,pos,forward){if(target instanceof EditorView)for(let _i208=0,_target$state$facet$m=target.state.facet(EditorView.atomicRanges).map(f=>f(target)),_length208=_target$state$facet$m.length;_i208\u003C_length208;_i208++){let ranges=_target$state$facet$m[_i208];ranges.between(pos,pos,(from,to)=>{if(from\u003Cpos&&to>pos)pos=forward?to:from;});}return pos;}const deleteByChar=(target,forward)=>deleteBy(target,range=>{let pos=range.from,{state}=target,line=state.doc.lineAt(pos),before,targetPos;if(!forward&&pos>line.from&&pos\u003Cline.from+200&&!/[^ \\\\t]/.test(before=line.text.slice(0,pos-line.from))){if(before[before.length-1]==\\\"\\\\t\\\")return pos-1;let col=countColumn(before,state.tabSize),drop=col%getIndentUnit(state)||getIndentUnit(state);for(let i=0;i\u003Cdrop&&before[before.length-1-i]==\\\" \\\";i++)pos--;targetPos=pos;}else{targetPos=findClusterBreak(line.text,pos-line.from,forward,forward)+line.from;if(targetPos==pos&&line.number!=(forward?state.doc.lines:1))targetPos+=forward?1:-1;else if(!forward&&/[\\\\ufe00-\\\\ufe0f]/.test(line.text.slice(targetPos-line.from,pos-line.from)))targetPos=findClusterBreak(line.text,targetPos-line.from,false,false)+line.from;}return targetPos;});const deleteCharBackward=view=>deleteByChar(view,false);const deleteCharForward=view=>deleteByChar(view,true);const deleteByGroup=(target,forward)=>deleteBy(target,range=>{let pos=range.head,{state}=target,line=state.doc.lineAt(pos);let categorize=state.charCategorizer(pos);for(let cat=null;;){if(pos==(forward?line.to:line.from)){if(pos==range.head&&line.number!=(forward?state.doc.lines:1))pos+=forward?1:-1;break;}let next=findClusterBreak(line.text,pos-line.from,forward)+line.from;let nextChar=line.text.slice(Math.min(pos,next)-line.from,Math.max(pos,next)-line.from);let nextCat=categorize(nextChar);if(cat!=null&&nextCat!=cat)break;if(nextChar!=\\\" \\\"||pos!=range.head)cat=nextCat;pos=next;}return pos;});const deleteGroupBackward=target=>deleteByGroup(target,false);const deleteGroupForward=target=>deleteByGroup(target,true);const deleteToLineEnd=view=>deleteBy(view,range=>{let lineEnd=view.lineBlockAt(range.head).to;return range.head\u003ClineEnd?lineEnd:Math.min(view.state.doc.length,range.head+1);});const deleteToLineStart=view=>deleteBy(view,range=>{let lineStart=view.lineBlockAt(range.head).from;return range.head>lineStart?lineStart:Math.max(0,range.head-1);});const deleteLineBoundaryBackward=view=>deleteBy(view,range=>{let lineStart=view.moveToLineBoundary(range,false).head;return range.head>lineStart?lineStart:Math.max(0,range.head-1);});const deleteLineBoundaryForward=view=>deleteBy(view,range=>{let lineStart=view.moveToLineBoundary(range,true).head;return range.head\u003ClineStart?lineStart:Math.min(view.state.doc.length,range.head+1);});const deleteTrailingWhitespace=({state,dispatch})=>{if(state.readOnly)return false;let changes=[];for(let pos=0,prev=\\\"\\\",iter=state.doc.iter();;){iter.next();if(iter.lineBreak||iter.done){let trailing=prev.search(/\\\\s+$/);if(trailing>-1)changes.push({from:pos-(prev.length-trailing),to:pos});if(iter.done)break;prev=\\\"\\\";}else{prev=iter.value;}pos+=iter.value.length;}if(!changes.length)return false;dispatch(state.update({changes,userEvent:\\\"delete\\\"}));return true;};const splitLine=({state,dispatch})=>{if(state.readOnly)return false;let changes=state.changeByRange(range=>{return{changes:{from:range.from,to:range.to,insert:Text$1.of([\\\"\\\",\\\"\\\"])},range:EditorSelection.cursor(range.from)};});dispatch(state.update(changes,{scrollIntoView:true,userEvent:\\\"input\\\"}));return true;};const transposeChars=({state,dispatch})=>{if(state.readOnly)return false;let changes=state.changeByRange(range=>{if(!range.empty||range.from==0||range.from==state.doc.length)return{range};let pos=range.from,line=state.doc.lineAt(pos);let from=pos==line.from?pos-1:findClusterBreak(line.text,pos-line.from,false)+line.from;let to=pos==line.to?pos+1:findClusterBreak(line.text,pos-line.from,true)+line.from;return{changes:{from,to,insert:state.doc.slice(pos,to).append(state.doc.slice(from,pos))},range:EditorSelection.cursor(to)};});if(changes.changes.empty)return false;dispatch(state.update(changes,{scrollIntoView:true,userEvent:\\\"move.character\\\"}));return true;};function selectedLineBlocks(state){let blocks=[],upto=-1;for(let _i209=0,_state$selection$rang7=state.selection.ranges,_length209=_state$selection$rang7.length;_i209\u003C_length209;_i209++){let range=_state$selection$rang7[_i209];let startLine=state.doc.lineAt(range.from),endLine=state.doc.lineAt(range.to);if(!range.empty&&range.to==endLine.from)endLine=state.doc.lineAt(range.to-1);if(upto>=startLine.number){let prev=blocks[blocks.length-1];prev.to=endLine.to;prev.ranges.push(range);}else{blocks.push({from:startLine.from,to:endLine.to,ranges:[range]});}upto=endLine.number+1;}return blocks;}function moveLine(state,dispatch,forward){if(state.readOnly)return false;let changes=[],ranges=[];for(let _i210=0,_selectedLineBlocks=selectedLineBlocks(state),_length210=_selectedLineBlocks.length;_i210\u003C_length210;_i210++){let block=_selectedLineBlocks[_i210];if(forward?block.to==state.doc.length:block.from==0)continue;let nextLine=state.doc.lineAt(forward?block.to+1:block.from-1);let size=nextLine.length+1;if(forward){changes.push({from:block.to,to:nextLine.to},{from:block.from,insert:nextLine.text+state.lineBreak});for(let _i211=0,_block$ranges=block.ranges,_length211=_block$ranges.length;_i211\u003C_length211;_i211++){let r=_block$ranges[_i211];ranges.push(EditorSelection.range(Math.min(state.doc.length,r.anchor+size),Math.min(state.doc.length,r.head+size)));}}else{changes.push({from:nextLine.from,to:block.from},{from:block.to,insert:state.lineBreak+nextLine.text});for(let _i212=0,_block$ranges2=block.ranges,_length212=_block$ranges2.length;_i212\u003C_length212;_i212++){let r=_block$ranges2[_i212];ranges.push(EditorSelection.range(r.anchor-size,r.head-size));}}}if(!changes.length)return false;dispatch(state.update({changes,scrollIntoView:true,selection:EditorSelection.create(ranges,state.selection.mainIndex),userEvent:\\\"move.line\\\"}));return true;}const moveLineUp=({state,dispatch})=>moveLine(state,dispatch,false);const moveLineDown=({state,dispatch})=>moveLine(state,dispatch,true);function copyLine(state,dispatch,forward){if(state.readOnly)return false;let changes=[];for(let _i213=0,_selectedLineBlocks2=selectedLineBlocks(state),_length213=_selectedLineBlocks2.length;_i213\u003C_length213;_i213++){let block=_selectedLineBlocks2[_i213];if(forward)changes.push({from:block.from,insert:state.doc.slice(block.from,block.to)+state.lineBreak});else changes.push({from:block.to,insert:state.lineBreak+state.doc.slice(block.from,block.to)});}dispatch(state.update({changes,scrollIntoView:true,userEvent:\\\"input.copyline\\\"}));return true;}const copyLineUp=({state,dispatch})=>copyLine(state,dispatch,false);const copyLineDown=({state,dispatch})=>copyLine(state,dispatch,true);const deleteLine=view=>{if(view.state.readOnly)return false;let{state}=view,changes=state.changes(selectedLineBlocks(state).map(({from,to})=>{if(from>0)from--;else if(to\u003Cstate.doc.length)to++;return{from,to};}));let selection=updateSel(state.selection,range=>view.moveVertically(range,true)).map(changes);view.dispatch({changes,selection,scrollIntoView:true,userEvent:\\\"delete.line\\\"});return true;};const insertNewline=({state,dispatch})=>{dispatch(state.update(state.replaceSelection(state.lineBreak),{scrollIntoView:true,userEvent:\\\"input\\\"}));return true;};function isBetweenBrackets(state,pos){if(/\\\\(\\\\)|\\\\[\\\\]|\\\\{\\\\}/.test(state.sliceDoc(pos-1,pos+1)))return{from:pos,to:pos};let context=syntaxTree(state).resolveInner(pos);let before=context.childBefore(pos),after=context.childAfter(pos),closedBy;if(before&&after&&before.to\u003C=pos&&after.from>=pos&&(closedBy=before.type.prop(NodeProp.closedBy))&&closedBy.indexOf(after.name)>-1&&state.doc.lineAt(before.to).from==state.doc.lineAt(after.from).from&&!/\\\\S/.test(state.sliceDoc(before.to,after.from)))return{from:before.to,to:after.from};return null;}const insertNewlineAndIndent=newlineAndIndent(false);const insertBlankLine=newlineAndIndent(true);function newlineAndIndent(atEof){return({state,dispatch})=>{if(state.readOnly)return false;let changes=state.changeByRange(range=>{let{from,to}=range,line=state.doc.lineAt(from);let explode=!atEof&&from==to&&isBetweenBrackets(state,from);if(atEof)from=to=(to\u003C=line.to?line:state.doc.lineAt(to)).to;let cx=new IndentContext(state,{simulateBreak:from,simulateDoubleBreak:!!explode});let indent=getIndentation(cx,from);if(indent==null)indent=countColumn(/^\\\\s*/.exec(state.doc.lineAt(from).text)[0],state.tabSize);while(to\u003Cline.to&&/\\\\s/.test(line.text[to-line.from]))to++;if(explode)({from,to}=explode);else if(from>line.from&&from\u003Cline.from+100&&!/\\\\S/.test(line.text.slice(0,from)))from=line.from;let insert=[\\\"\\\",indentString(state,indent)];if(explode)insert.push(indentString(state,cx.lineIndent(line.from,-1)));return{changes:{from,to,insert:Text$1.of(insert)},range:EditorSelection.cursor(from+1+insert[1].length)};});dispatch(state.update(changes,{scrollIntoView:true,userEvent:\\\"input\\\"}));return true;};}function changeBySelectedLine(state,f){let atLine=-1;return state.changeByRange(range=>{let changes=[];for(let pos=range.from;pos\u003C=range.to;){let line=state.doc.lineAt(pos);if(line.number>atLine&&(range.empty||range.to>line.from)){f(line,changes,range);atLine=line.number;}pos=line.to+1;}let changeSet=state.changes(changes);return{changes,range:EditorSelection.range(changeSet.mapPos(range.anchor,1),changeSet.mapPos(range.head,1))};});}const indentSelection=({state,dispatch})=>{if(state.readOnly)return false;let updated=Object.create(null);let context=new IndentContext(state,{overrideIndentation:start=>{let found=updated[start];return found==null?-1:found;}});let changes=changeBySelectedLine(state,(line,changes,range)=>{let indent=getIndentation(context,line.from);if(indent==null)return;if(!/\\\\S/.test(line.text))indent=0;let cur=/^\\\\s*/.exec(line.text)[0];let norm=indentString(state,indent);if(cur!=norm||range.from\u003Cline.from+cur.length){updated[line.from]=indent;changes.push({from:line.from,to:line.from+cur.length,insert:norm});}});if(!changes.changes.empty)dispatch(state.update(changes,{userEvent:\\\"indent\\\"}));return true;};const indentMore=({state,dispatch})=>{if(state.readOnly)return false;dispatch(state.update(changeBySelectedLine(state,(line,changes)=>{changes.push({from:line.from,insert:state.facet(indentUnit)});}),{userEvent:\\\"input.indent\\\"}));return true;};const indentLess=({state,dispatch})=>{if(state.readOnly)return false;dispatch(state.update(changeBySelectedLine(state,(line,changes)=>{let space=/^\\\\s*/.exec(line.text)[0];if(!space)return;let col=countColumn(space,state.tabSize),keep=0;let insert=indentString(state,Math.max(0,col-getIndentUnit(state)));while(keep\u003Cspace.length&&keep\u003Cinsert.length&&space.charCodeAt(keep)==insert.charCodeAt(keep))keep++;changes.push({from:line.from+keep,to:line.from+space.length,insert:insert.slice(keep)});}),{userEvent:\\\"delete.dedent\\\"}));return true;};const insertTab=({state,dispatch})=>{if(state.selection.ranges.some(r=>!r.empty))return indentMore({state,dispatch});dispatch(state.update(state.replaceSelection(\\\"\\\\t\\\"),{scrollIntoView:true,userEvent:\\\"input\\\"}));return true;};const emacsStyleKeymap=[{key:\\\"Ctrl-b\\\",run:cursorCharLeft,shift:selectCharLeft,preventDefault:true},{key:\\\"Ctrl-f\\\",run:cursorCharRight,shift:selectCharRight},{key:\\\"Ctrl-p\\\",run:cursorLineUp,shift:selectLineUp},{key:\\\"Ctrl-n\\\",run:cursorLineDown,shift:selectLineDown},{key:\\\"Ctrl-a\\\",run:cursorLineStart,shift:selectLineStart},{key:\\\"Ctrl-e\\\",run:cursorLineEnd,shift:selectLineEnd},{key:\\\"Ctrl-d\\\",run:deleteCharForward},{key:\\\"Ctrl-h\\\",run:deleteCharBackward},{key:\\\"Ctrl-k\\\",run:deleteToLineEnd},{key:\\\"Ctrl-Alt-h\\\",run:deleteGroupBackward},{key:\\\"Ctrl-o\\\",run:splitLine},{key:\\\"Ctrl-t\\\",run:transposeChars},{key:\\\"Ctrl-v\\\",run:cursorPageDown}];const standardKeymap=[{key:\\\"ArrowLeft\\\",run:cursorCharLeft,shift:selectCharLeft,preventDefault:true},{key:\\\"Mod-ArrowLeft\\\",mac:\\\"Alt-ArrowLeft\\\",run:cursorGroupLeft,shift:selectGroupLeft,preventDefault:true},{mac:\\\"Cmd-ArrowLeft\\\",run:cursorLineBoundaryLeft,shift:selectLineBoundaryLeft,preventDefault:true},{key:\\\"ArrowRight\\\",run:cursorCharRight,shift:selectCharRight,preventDefault:true},{key:\\\"Mod-ArrowRight\\\",mac:\\\"Alt-ArrowRight\\\",run:cursorGroupRight,shift:selectGroupRight,preventDefault:true},{mac:\\\"Cmd-ArrowRight\\\",run:cursorLineBoundaryRight,shift:selectLineBoundaryRight,preventDefault:true},{key:\\\"ArrowUp\\\",run:cursorLineUp,shift:selectLineUp,preventDefault:true},{mac:\\\"Cmd-ArrowUp\\\",run:cursorDocStart,shift:selectDocStart},{mac:\\\"Ctrl-ArrowUp\\\",run:cursorPageUp,shift:selectPageUp},{key:\\\"ArrowDown\\\",run:cursorLineDown,shift:selectLineDown,preventDefault:true},{mac:\\\"Cmd-ArrowDown\\\",run:cursorDocEnd,shift:selectDocEnd},{mac:\\\"Ctrl-ArrowDown\\\",run:cursorPageDown,shift:selectPageDown},{key:\\\"PageUp\\\",run:cursorPageUp,shift:selectPageUp},{key:\\\"PageDown\\\",run:cursorPageDown,shift:selectPageDown},{key:\\\"Home\\\",run:cursorLineBoundaryBackward,shift:selectLineBoundaryBackward,preventDefault:true},{key:\\\"Mod-Home\\\",run:cursorDocStart,shift:selectDocStart},{key:\\\"End\\\",run:cursorLineBoundaryForward,shift:selectLineBoundaryForward,preventDefault:true},{key:\\\"Mod-End\\\",run:cursorDocEnd,shift:selectDocEnd},{key:\\\"Enter\\\",run:insertNewlineAndIndent},{key:\\\"Mod-a\\\",run:selectAll},{key:\\\"Backspace\\\",run:deleteCharBackward,shift:deleteCharBackward},{key:\\\"Delete\\\",run:deleteCharForward},{key:\\\"Mod-Backspace\\\",mac:\\\"Alt-Backspace\\\",run:deleteGroupBackward},{key:\\\"Mod-Delete\\\",mac:\\\"Alt-Delete\\\",run:deleteGroupForward},{mac:\\\"Mod-Backspace\\\",run:deleteLineBoundaryBackward},{mac:\\\"Mod-Delete\\\",run:deleteLineBoundaryForward}].concat(emacsStyleKeymap.map(b=>({mac:b.key,run:b.run,shift:b.shift})));const defaultKeymap=[{key:\\\"Alt-ArrowLeft\\\",mac:\\\"Ctrl-ArrowLeft\\\",run:cursorSyntaxLeft,shift:selectSyntaxLeft},{key:\\\"Alt-ArrowRight\\\",mac:\\\"Ctrl-ArrowRight\\\",run:cursorSyntaxRight,shift:selectSyntaxRight},{key:\\\"Alt-ArrowUp\\\",run:moveLineUp},{key:\\\"Shift-Alt-ArrowUp\\\",run:copyLineUp},{key:\\\"Alt-ArrowDown\\\",run:moveLineDown},{key:\\\"Shift-Alt-ArrowDown\\\",run:copyLineDown},{key:\\\"Escape\\\",run:simplifySelection},{key:\\\"Mod-Enter\\\",run:insertBlankLine},{key:\\\"Alt-l\\\",mac:\\\"Ctrl-l\\\",run:selectLine},{key:\\\"Mod-i\\\",run:selectParentSyntax,preventDefault:true},{key:\\\"Mod-[\\\",run:indentLess},{key:\\\"Mod-]\\\",run:indentMore},{key:\\\"Mod-Alt-\\\\\\\\\\\",run:indentSelection},{key:\\\"Shift-Mod-k\\\",run:deleteLine},{key:\\\"Shift-Mod-\\\\\\\\\\\",run:cursorMatchingBracket},{key:\\\"Mod-/\\\",run:toggleComment},{key:\\\"Alt-A\\\",run:toggleBlockComment}].concat(standardKeymap);const indentWithTab={key:\\\"Tab\\\",run:indentMore,shift:indentLess};var _m3=Object.freeze({__proto__:null,blockComment:blockComment,blockUncomment:blockUncomment,copyLineDown:copyLineDown,copyLineUp:copyLineUp,cursorCharBackward:cursorCharBackward,cursorCharForward:cursorCharForward,cursorCharLeft:cursorCharLeft,cursorCharRight:cursorCharRight,cursorDocEnd:cursorDocEnd,cursorDocStart:cursorDocStart,cursorGroupBackward:cursorGroupBackward,cursorGroupForward:cursorGroupForward,cursorGroupLeft:cursorGroupLeft,cursorGroupRight:cursorGroupRight,cursorLineBoundaryBackward:cursorLineBoundaryBackward,cursorLineBoundaryForward:cursorLineBoundaryForward,cursorLineBoundaryLeft:cursorLineBoundaryLeft,cursorLineBoundaryRight:cursorLineBoundaryRight,cursorLineDown:cursorLineDown,cursorLineEnd:cursorLineEnd,cursorLineStart:cursorLineStart,cursorLineUp:cursorLineUp,cursorMatchingBracket:cursorMatchingBracket,cursorPageDown:cursorPageDown,cursorPageUp:cursorPageUp,cursorSubwordBackward:cursorSubwordBackward,cursorSubwordForward:cursorSubwordForward,cursorSyntaxLeft:cursorSyntaxLeft,cursorSyntaxRight:cursorSyntaxRight,defaultKeymap:defaultKeymap,deleteCharBackward:deleteCharBackward,deleteCharForward:deleteCharForward,deleteGroupBackward:deleteGroupBackward,deleteGroupForward:deleteGroupForward,deleteLine:deleteLine,deleteLineBoundaryBackward:deleteLineBoundaryBackward,deleteLineBoundaryForward:deleteLineBoundaryForward,deleteToLineEnd:deleteToLineEnd,deleteToLineStart:deleteToLineStart,deleteTrailingWhitespace:deleteTrailingWhitespace,emacsStyleKeymap:emacsStyleKeymap,history:history,historyField:historyField,historyKeymap:historyKeymap,indentLess:indentLess,indentMore:indentMore,indentSelection:indentSelection,indentWithTab:indentWithTab,insertBlankLine:insertBlankLine,insertNewline:insertNewline,insertNewlineAndIndent:insertNewlineAndIndent,insertTab:insertTab,invertedEffects:invertedEffects,isolateHistory:isolateHistory,lineComment:lineComment,lineUncomment:lineUncomment,moveLineDown:moveLineDown,moveLineUp:moveLineUp,redo:redo,redoDepth:redoDepth,redoSelection:redoSelection,selectAll:selectAll,selectCharBackward:selectCharBackward,selectCharForward:selectCharForward,selectCharLeft:selectCharLeft,selectCharRight:selectCharRight,selectDocEnd:selectDocEnd,selectDocStart:selectDocStart,selectGroupBackward:selectGroupBackward,selectGroupForward:selectGroupForward,selectGroupLeft:selectGroupLeft,selectGroupRight:selectGroupRight,selectLine:selectLine,selectLineBoundaryBackward:selectLineBoundaryBackward,selectLineBoundaryForward:selectLineBoundaryForward,selectLineBoundaryLeft:selectLineBoundaryLeft,selectLineBoundaryRight:selectLineBoundaryRight,selectLineDown:selectLineDown,selectLineEnd:selectLineEnd,selectLineStart:selectLineStart,selectLineUp:selectLineUp,selectMatchingBracket:selectMatchingBracket,selectPageDown:selectPageDown,selectPageUp:selectPageUp,selectParentSyntax:selectParentSyntax,selectSubwordBackward:selectSubwordBackward,selectSubwordForward:selectSubwordForward,selectSyntaxLeft:selectSyntaxLeft,selectSyntaxRight:selectSyntaxRight,simplifySelection:simplifySelection,splitLine:splitLine,standardKeymap:standardKeymap,toggleBlockComment:toggleBlockComment,toggleBlockCommentByLine:toggleBlockCommentByLine,toggleComment:toggleComment,toggleLineComment:toggleLineComment,transposeChars:transposeChars,undo:undo,undoDepth:undoDepth,undoSelection:undoSelection});function crelt(){var elt=arguments[0];if(typeof elt==\\\"string\\\")elt=document.createElement(elt);var i=1,next=arguments[1];if(next&&typeof next==\\\"object\\\"&&next.nodeType==null&&!Array.isArray(next)){for(var name in next)if(Object.prototype.hasOwnProperty.call(next,name)){var value=next[name];if(typeof value==\\\"string\\\")elt.setAttribute(name,value);else if(value!=null)elt[name]=value;}i++;}for(;i\u003Carguments.length;i++)add(elt,arguments[i]);return elt;}function add(elt,child){if(typeof child==\\\"string\\\"){elt.appendChild(document.createTextNode(child));}else if(child==null);else if(child.nodeType!=null){elt.appendChild(child);}else if(Array.isArray(child)){for(var i=0;i\u003Cchild.length;i++)add(elt,child[i]);}else{throw new RangeError(\\\"Unsupported child node: \\\"+child);}}var _m34=Object.freeze({__proto__:null,'default':crelt});const basicNormalize=typeof String.prototype.normalize==\\\"function\\\"?x=>x.normalize(\\\"NFKD\\\"):x=>x;class SearchCursor{constructor(text,query,from=0,to=text.length,normalize,test){this.test=test;this.value={from:0,to:0};this.done=false;this.matches=[];this.buffer=\\\"\\\";this.bufferPos=0;this.iter=text.iterRange(from,to);this.bufferStart=from;this.normalize=normalize?x=>normalize(basicNormalize(x)):basicNormalize;this.query=this.normalize(query);}peek(){if(this.bufferPos==this.buffer.length){this.bufferStart+=this.buffer.length;this.iter.next();if(this.iter.done)return-1;this.bufferPos=0;this.buffer=this.iter.value;}return codePointAt(this.buffer,this.bufferPos);}next(){while(this.matches.length)this.matches.pop();return this.nextOverlapping();}nextOverlapping(){for(;;){let next=this.peek();if(next\u003C0){this.done=true;return this;}let str=fromCodePoint(next),start=this.bufferStart+this.bufferPos;this.bufferPos+=codePointSize(next);let norm=this.normalize(str);for(let i=0,pos=start;;i++){let code=norm.charCodeAt(i);let match=this.match(code,pos,this.bufferPos+this.bufferStart);if(i==norm.length-1){if(match){this.value=match;return this;}break;}if(pos==start&&i\u003Cstr.length&&str.charCodeAt(i)==code)pos++;}}}match(code,pos,end){let match=null;for(let i=0;i\u003Cthis.matches.length;i+=2){let index=this.matches[i],keep=false;if(this.query.charCodeAt(index)==code){if(index==this.query.length-1){match={from:this.matches[i+1],to:end};}else{this.matches[i]++;keep=true;}}if(!keep){this.matches.splice(i,2);i-=2;}}if(this.query.charCodeAt(0)==code){if(this.query.length==1)match={from:pos,to:end};else this.matches.push(1,pos);}if(match&&this.test&&!this.test(match.from,match.to,this.buffer,this.bufferStart))match=null;return match;}}if(typeof Symbol!=\\\"undefined\\\")SearchCursor.prototype[Symbol.iterator]=function(){return this;};const empty={from:-1,to:-1,match:/.*/.exec(\\\"\\\")};const baseFlags=\\\"gm\\\"+(/x/.unicode==null?\\\"\\\":\\\"u\\\");class RegExpCursor{constructor(text,query,options,from=0,to=text.length){this.text=text;this.to=to;this.curLine=\\\"\\\";this.done=false;this.value=empty;if(/\\\\\\\\[sWDnr]|\\\\n|\\\\r|\\\\[\\\\^/.test(query))return new MultilineRegExpCursor(text,query,options,from,to);this.re=new RegExp(query,baseFlags+((options===null||options===void 0?void 0:options.ignoreCase)?\\\"i\\\":\\\"\\\"));this.test=options===null||options===void 0?void 0:options.test;this.iter=text.iter();let startLine=text.lineAt(from);this.curLineStart=startLine.from;this.matchPos=toCharEnd(text,from);this.getLine(this.curLineStart);}getLine(skip){this.iter.next(skip);if(this.iter.lineBreak){this.curLine=\\\"\\\";}else{this.curLine=this.iter.value;if(this.curLineStart+this.curLine.length>this.to)this.curLine=this.curLine.slice(0,this.to-this.curLineStart);this.iter.next();}}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1;if(this.curLineStart>this.to)this.curLine=\\\"\\\";else this.getLine(0);}next(){for(let off=this.matchPos-this.curLineStart;;){this.re.lastIndex=off;let match=this.matchPos\u003C=this.to&&this.re.exec(this.curLine);if(match){let from=this.curLineStart+match.index,to=from+match[0].length;this.matchPos=toCharEnd(this.text,to+(from==to?1:0));if(from==this.curLineStart+this.curLine.length)this.nextLine();if((from\u003Cto||from>this.value.to)&&(!this.test||this.test(from,to,match))){this.value={from,to,match};return this;}off=this.matchPos-this.curLineStart;}else if(this.curLineStart+this.curLine.length\u003Cthis.to){this.nextLine();off=0;}else{this.done=true;return this;}}}}const flattened=new WeakMap();class FlattenedDoc{constructor(from,text){this.from=from;this.text=text;}get to(){return this.from+this.text.length;}static get(doc,from,to){let cached=flattened.get(doc);if(!cached||cached.from>=to||cached.to\u003C=from){let flat=new FlattenedDoc(from,doc.sliceString(from,to));flattened.set(doc,flat);return flat;}if(cached.from==from&&cached.to==to)return cached;let{text,from:cachedFrom}=cached;if(cachedFrom>from){text=doc.sliceString(from,cachedFrom)+text;cachedFrom=from;}if(cached.to\u003Cto)text+=doc.sliceString(cached.to,to);flattened.set(doc,new FlattenedDoc(cachedFrom,text));return new FlattenedDoc(from,text.slice(from-cachedFrom,to-cachedFrom));}}class MultilineRegExpCursor{constructor(text,query,options,from,to){this.text=text;this.to=to;this.done=false;this.value=empty;this.matchPos=toCharEnd(text,from);this.re=new RegExp(query,baseFlags+((options===null||options===void 0?void 0:options.ignoreCase)?\\\"i\\\":\\\"\\\"));this.test=options===null||options===void 0?void 0:options.test;this.flat=FlattenedDoc.get(text,from,this.chunkEnd(from+5000));}chunkEnd(pos){return pos>=this.to?this.to:this.text.lineAt(pos).to;}next(){for(;;){let off=this.re.lastIndex=this.matchPos-this.flat.from;let match=this.re.exec(this.flat.text);if(match&&!match[0]&&match.index==off){this.re.lastIndex=off+1;match=this.re.exec(this.flat.text);}if(match){let from=this.flat.from+match.index,to=from+match[0].length;if((this.flat.to>=this.to||match.index+match[0].length\u003C=this.flat.text.length-10)&&(!this.test||this.test(from,to,match))){this.value={from,to,match};this.matchPos=toCharEnd(this.text,to+(from==to?1:0));return this;}}if(this.flat.to==this.to){this.done=true;return this;}this.flat=FlattenedDoc.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2));}}}if(typeof Symbol!=\\\"undefined\\\"){RegExpCursor.prototype[Symbol.iterator]=MultilineRegExpCursor.prototype[Symbol.iterator]=function(){return this;};}function validRegExp(source){try{new RegExp(source,baseFlags);return true;}catch(_a){return false;}}function toCharEnd(text,pos){if(pos>=text.length)return pos;let line=text.lineAt(pos),next;while(pos\u003Cline.to&&(next=line.text.charCodeAt(pos-line.from))>=0xDC00&&next\u003C0xE000)pos++;return pos;}function createLineDialog(view){let line=String(view.state.doc.lineAt(view.state.selection.main.head).number);let input=crelt(\\\"input\\\",{class:\\\"cm-textfield\\\",name:\\\"line\\\",value:line});let dom=crelt(\\\"form\\\",{class:\\\"cm-gotoLine\\\",onkeydown:event=>{if(event.keyCode==27){event.preventDefault();view.dispatch({effects:dialogEffect.of(false)});view.focus();}else if(event.keyCode==13){event.preventDefault();go();}},onsubmit:event=>{event.preventDefault();go();}},crelt(\\\"label\\\",view.state.phrase(\\\"Go to line\\\"),\\\": \\\",input),\\\" \\\",crelt(\\\"button\\\",{class:\\\"cm-button\\\",type:\\\"submit\\\"},view.state.phrase(\\\"go\\\")));function go(){let match=/^([+-])?(\\\\d+)?(:\\\\d+)?(%)?$/.exec(input.value);if(!match)return;let{state}=view,startLine=state.doc.lineAt(state.selection.main.head);let[,sign,ln,cl,percent]=match;let col=cl?+cl.slice(1):0;let line=ln?+ln:startLine.number;if(ln&&percent){let pc=line/100;if(sign)pc=pc*(sign==\\\"-\\\"?-1:1)+startLine.number/state.doc.lines;line=Math.round(state.doc.lines*pc);}else if(ln&&sign){line=line*(sign==\\\"-\\\"?-1:1)+startLine.number;}let docLine=state.doc.line(Math.max(1,Math.min(state.doc.lines,line)));let selection=EditorSelection.cursor(docLine.from+Math.max(0,Math.min(col,docLine.length)));view.dispatch({effects:[dialogEffect.of(false),EditorView.scrollIntoView(selection.from,{y:'center'})],selection});view.focus();}return{dom};}const dialogEffect=StateEffect.define();const dialogField=StateField.define({create(){return true;},update(value,tr){for(let _i214=0,_tr$effects7=tr.effects,_length214=_tr$effects7.length;_i214\u003C_length214;_i214++){let e=_tr$effects7[_i214];if(e.is(dialogEffect))value=e.value;}return value;},provide:f=>showPanel.from(f,val=>val?createLineDialog:null)});const gotoLine=view=>{let panel=getPanel(view,createLineDialog);if(!panel){let effects=[dialogEffect.of(true)];if(view.state.field(dialogField,false)==null)effects.push(StateEffect.appendConfig.of([dialogField,baseTheme$1$1]));view.dispatch({effects});panel=getPanel(view,createLineDialog);}if(panel)panel.dom.querySelector(\\\"input\\\").select();return true;};const baseTheme$1$1=EditorView.baseTheme({\\\".cm-panel.cm-gotoLine\\\":{padding:\\\"2px 6px 4px\\\",\\\"& label\\\":{fontSize:\\\"80%\\\"}}});const defaultHighlightOptions={highlightWordAroundCursor:false,minSelectionLength:1,maxMatches:100,wholeWords:false};const highlightConfig=Facet.define({combine(options){return combineConfig(options,defaultHighlightOptions,{highlightWordAroundCursor:(a,b)=>a||b,minSelectionLength:Math.min,maxMatches:Math.min});}});function highlightSelectionMatches(options){let ext=[defaultTheme,matchHighlighter];if(options)ext.push(highlightConfig.of(options));return ext;}const matchDeco=Decoration.mark({class:\\\"cm-selectionMatch\\\"});const mainMatchDeco=Decoration.mark({class:\\\"cm-selectionMatch cm-selectionMatch-main\\\"});function insideWordBoundaries(check,state,from,to){return(from==0||check(state.sliceDoc(from-1,from))!=CharCategory.Word)&&(to==state.doc.length||check(state.sliceDoc(to,to+1))!=CharCategory.Word);}function insideWord(check,state,from,to){return check(state.sliceDoc(from,from+1))==CharCategory.Word&&check(state.sliceDoc(to-1,to))==CharCategory.Word;}const matchHighlighter=ViewPlugin.fromClass(class{constructor(view){this.decorations=this.getDeco(view);}update(update){if(update.selectionSet||update.docChanged||update.viewportChanged)this.decorations=this.getDeco(update.view);}getDeco(view){let conf=view.state.facet(highlightConfig);let{state}=view,sel=state.selection;if(sel.ranges.length>1)return Decoration.none;let range=sel.main,query,check=null;if(range.empty){if(!conf.highlightWordAroundCursor)return Decoration.none;let word=state.wordAt(range.head);if(!word)return Decoration.none;check=state.charCategorizer(range.head);query=state.sliceDoc(word.from,word.to);}else{let len=range.to-range.from;if(len\u003Cconf.minSelectionLength||len>200)return Decoration.none;if(conf.wholeWords){query=state.sliceDoc(range.from,range.to);check=state.charCategorizer(range.head);if(!(insideWordBoundaries(check,state,range.from,range.to)&&insideWord(check,state,range.from,range.to)))return Decoration.none;}else{query=state.sliceDoc(range.from,range.to);if(!query)return Decoration.none;}}let deco=[];for(let _i215=0,_view$visibleRanges4=view.visibleRanges,_length215=_view$visibleRanges4.length;_i215\u003C_length215;_i215++){let part=_view$visibleRanges4[_i215];let cursor=new SearchCursor(state.doc,query,part.from,part.to);while(!cursor.next().done){let{from,to}=cursor.value;if(!check||insideWordBoundaries(check,state,from,to)){if(range.empty&&from\u003C=range.from&&to>=range.to)deco.push(mainMatchDeco.range(from,to));else if(from>=range.to||to\u003C=range.from)deco.push(matchDeco.range(from,to));if(deco.length>conf.maxMatches)return Decoration.none;}}}return Decoration.set(deco);}},{decorations:v=>v.decorations});const defaultTheme=EditorView.baseTheme({\\\".cm-selectionMatch\\\":{backgroundColor:\\\"#99ff7780\\\"},\\\".cm-searchMatch .cm-selectionMatch\\\":{backgroundColor:\\\"transparent\\\"}});const selectWord=({state,dispatch})=>{let{selection}=state;let newSel=EditorSelection.create(selection.ranges.map(range=>state.wordAt(range.head)||EditorSelection.cursor(range.head)),selection.mainIndex);if(newSel.eq(selection))return false;dispatch(state.update({selection:newSel}));return true;};function findNextOccurrence(state,query){let{main,ranges}=state.selection;let word=state.wordAt(main.head),fullWord=word&&word.from==main.from&&word.to==main.to;for(let cycled=false,cursor=new SearchCursor(state.doc,query,ranges[ranges.length-1].to);;){cursor.next();if(cursor.done){if(cycled)return null;cursor=new SearchCursor(state.doc,query,0,Math.max(0,ranges[ranges.length-1].from-1));cycled=true;}else{if(cycled&&ranges.some(r=>r.from==cursor.value.from))continue;if(fullWord){let word=state.wordAt(cursor.value.from);if(!word||word.from!=cursor.value.from||word.to!=cursor.value.to)continue;}return cursor.value;}}}const selectNextOccurrence=({state,dispatch})=>{let{ranges}=state.selection;if(ranges.some(sel=>sel.from===sel.to))return selectWord({state,dispatch});let searchedText=state.sliceDoc(ranges[0].from,ranges[0].to);if(state.selection.ranges.some(r=>state.sliceDoc(r.from,r.to)!=searchedText))return false;let range=findNextOccurrence(state,searchedText);if(!range)return false;dispatch(state.update({selection:state.selection.addRange(EditorSelection.range(range.from,range.to),false),effects:EditorView.scrollIntoView(range.to)}));return true;};const searchConfigFacet=Facet.define({combine(configs){return combineConfig(configs,{top:false,caseSensitive:false,literal:false,regexp:false,wholeWord:false,createPanel:view=>new SearchPanel(view),scrollToMatch:range=>EditorView.scrollIntoView(range)});}});function search(config){return config?[searchConfigFacet.of(config),searchExtensions]:searchExtensions;}class SearchQuery{constructor(config){this.search=config.search;this.caseSensitive=!!config.caseSensitive;this.literal=!!config.literal;this.regexp=!!config.regexp;this.replace=config.replace||\\\"\\\";this.valid=!!this.search&&(!this.regexp||validRegExp(this.search));this.unquoted=this.unquote(this.search);this.wholeWord=!!config.wholeWord;}unquote(text){return this.literal?text:text.replace(/\\\\\\\\([nrt\\\\\\\\])/g,(_,ch)=>ch==\\\"n\\\"?\\\"\\\\n\\\":ch==\\\"r\\\"?\\\"\\\\r\\\":ch==\\\"t\\\"?\\\"\\\\t\\\":\\\"\\\\\\\\\\\");}eq(other){return this.search==other.search&&this.replace==other.replace&&this.caseSensitive==other.caseSensitive&&this.regexp==other.regexp&&this.wholeWord==other.wholeWord;}create(){return this.regexp?new RegExpQuery(this):new StringQuery(this);}getCursor(state,from=0,to){let st=state.doc?state:EditorState.create({doc:state});if(to==null)to=st.doc.length;return this.regexp?regexpCursor(this,st,from,to):stringCursor(this,st,from,to);}}class QueryType{constructor(spec){this.spec=spec;}}function stringCursor(spec,state,from,to){return new SearchCursor(state.doc,spec.unquoted,from,to,spec.caseSensitive?undefined:x=>x.toLowerCase(),spec.wholeWord?stringWordTest(state.doc,state.charCategorizer(state.selection.main.head)):undefined);}function stringWordTest(doc,categorizer){return(from,to,buf,bufPos)=>{if(bufPos>from||bufPos+buf.length\u003Cto){bufPos=Math.max(0,from-2);buf=doc.sliceString(bufPos,Math.min(doc.length,to+2));}return(categorizer(charBefore(buf,from-bufPos))!=CharCategory.Word||categorizer(charAfter(buf,from-bufPos))!=CharCategory.Word)&&(categorizer(charAfter(buf,to-bufPos))!=CharCategory.Word||categorizer(charBefore(buf,to-bufPos))!=CharCategory.Word);};}class StringQuery extends QueryType{constructor(spec){super(spec);}nextMatch(state,curFrom,curTo){let cursor=stringCursor(this.spec,state,curTo,state.doc.length).nextOverlapping();if(cursor.done)cursor=stringCursor(this.spec,state,0,curFrom).nextOverlapping();return cursor.done?null:cursor.value;}prevMatchInRange(state,from,to){for(let pos=to;;){let start=Math.max(from,pos-10000-this.spec.unquoted.length);let cursor=stringCursor(this.spec,state,start,pos),range=null;while(!cursor.nextOverlapping().done)range=cursor.value;if(range)return range;if(start==from)return null;pos-=10000;}}prevMatch(state,curFrom,curTo){return this.prevMatchInRange(state,0,curFrom)||this.prevMatchInRange(state,curTo,state.doc.length);}getReplacement(_result){return this.spec.unquote(this.spec.replace);}matchAll(state,limit){let cursor=stringCursor(this.spec,state,0,state.doc.length),ranges=[];while(!cursor.next().done){if(ranges.length>=limit)return null;ranges.push(cursor.value);}return ranges;}highlight(state,from,to,add){let cursor=stringCursor(this.spec,state,Math.max(0,from-this.spec.unquoted.length),Math.min(to+this.spec.unquoted.length,state.doc.length));while(!cursor.next().done)add(cursor.value.from,cursor.value.to);}}function regexpCursor(spec,state,from,to){return new RegExpCursor(state.doc,spec.search,{ignoreCase:!spec.caseSensitive,test:spec.wholeWord?regexpWordTest(state.charCategorizer(state.selection.main.head)):undefined},from,to);}function charBefore(str,index){return str.slice(findClusterBreak(str,index,false),index);}function charAfter(str,index){return str.slice(index,findClusterBreak(str,index));}function regexpWordTest(categorizer){return(_from,_to,match)=>!match[0].length||(categorizer(charBefore(match.input,match.index))!=CharCategory.Word||categorizer(charAfter(match.input,match.index))!=CharCategory.Word)&&(categorizer(charAfter(match.input,match.index+match[0].length))!=CharCategory.Word||categorizer(charBefore(match.input,match.index+match[0].length))!=CharCategory.Word);}class RegExpQuery extends QueryType{nextMatch(state,curFrom,curTo){let cursor=regexpCursor(this.spec,state,curTo,state.doc.length).next();if(cursor.done)cursor=regexpCursor(this.spec,state,0,curFrom).next();return cursor.done?null:cursor.value;}prevMatchInRange(state,from,to){for(let size=1;;size++){let start=Math.max(from,to-size*10000);let cursor=regexpCursor(this.spec,state,start,to),range=null;while(!cursor.next().done)range=cursor.value;if(range&&(start==from||range.from>start+10))return range;if(start==from)return null;}}prevMatch(state,curFrom,curTo){return this.prevMatchInRange(state,0,curFrom)||this.prevMatchInRange(state,curTo,state.doc.length);}getReplacement(result){return this.spec.unquote(this.spec.replace).replace(/\\\\$([$&\\\\d+])/g,(m,i)=>i==\\\"$\\\"?\\\"$\\\":i==\\\"&\\\"?result.match[0]:i!=\\\"0\\\"&&+i\u003Cresult.match.length?result.match[i]:m);}matchAll(state,limit){let cursor=regexpCursor(this.spec,state,0,state.doc.length),ranges=[];while(!cursor.next().done){if(ranges.length>=limit)return null;ranges.push(cursor.value);}return ranges;}highlight(state,from,to,add){let cursor=regexpCursor(this.spec,state,Math.max(0,from-250),Math.min(to+250,state.doc.length));while(!cursor.next().done)add(cursor.value.from,cursor.value.to);}}const setSearchQuery=StateEffect.define();const togglePanel$1=StateEffect.define();const searchState=StateField.define({create(state){return new SearchState(defaultQuery(state).create(),null);},update(value,tr){for(let _i216=0,_tr$effects8=tr.effects,_length216=_tr$effects8.length;_i216\u003C_length216;_i216++){let effect=_tr$effects8[_i216];if(effect.is(setSearchQuery))value=new SearchState(effect.value.create(),value.panel);else if(effect.is(togglePanel$1))value=new SearchState(value.query,effect.value?createSearchPanel:null);}return value;},provide:f=>showPanel.from(f,val=>val.panel)});function getSearchQuery(state){let curState=state.field(searchState,false);return curState?curState.query.spec:defaultQuery(state);}function searchPanelOpen(state){var _a;return((_a=state.field(searchState,false))===null||_a===void 0?void 0:_a.panel)!=null;}class SearchState{constructor(query,panel){this.query=query;this.panel=panel;}}const matchMark=Decoration.mark({class:\\\"cm-searchMatch\\\"}),selectedMatchMark=Decoration.mark({class:\\\"cm-searchMatch cm-searchMatch-selected\\\"});const searchHighlighter=ViewPlugin.fromClass(class{constructor(view){this.view=view;this.decorations=this.highlight(view.state.field(searchState));}update(update){let state=update.state.field(searchState);if(state!=update.startState.field(searchState)||update.docChanged||update.selectionSet||update.viewportChanged)this.decorations=this.highlight(state);}highlight({query,panel}){if(!panel||!query.spec.valid)return Decoration.none;let{view}=this;let builder=new RangeSetBuilder();for(let i=0,ranges=view.visibleRanges,l=ranges.length;i\u003Cl;i++){let{from,to}=ranges[i];while(i\u003Cl-1&&to>ranges[i+1].from-2*250)to=ranges[++i].to;query.highlight(view.state,from,to,(from,to)=>{let selected=view.state.selection.ranges.some(r=>r.from==from&&r.to==to);builder.add(from,to,selected?selectedMatchMark:matchMark);});}return builder.finish();}},{decorations:v=>v.decorations});function searchCommand(f){return view=>{let state=view.state.field(searchState,false);return state&&state.query.spec.valid?f(view,state):openSearchPanel(view);};}const findNext=searchCommand((view,{query})=>{let{to}=view.state.selection.main;let next=query.nextMatch(view.state,to,to);if(!next)return false;let selection=EditorSelection.single(next.from,next.to);let config=view.state.facet(searchConfigFacet);view.dispatch({selection,effects:[announceMatch(view,next),config.scrollToMatch(selection.main,view)],userEvent:\\\"select.search\\\"});selectSearchInput(view);return true;});const findPrevious=searchCommand((view,{query})=>{let{state}=view,{from}=state.selection.main;let prev=query.prevMatch(state,from,from);if(!prev)return false;let selection=EditorSelection.single(prev.from,prev.to);let config=view.state.facet(searchConfigFacet);view.dispatch({selection,effects:[announceMatch(view,prev),config.scrollToMatch(selection.main,view)],userEvent:\\\"select.search\\\"});selectSearchInput(view);return true;});const selectMatches=searchCommand((view,{query})=>{let ranges=query.matchAll(view.state,1000);if(!ranges||!ranges.length)return false;view.dispatch({selection:EditorSelection.create(ranges.map(r=>EditorSelection.range(r.from,r.to))),userEvent:\\\"select.search.matches\\\"});return true;});const selectSelectionMatches=({state,dispatch})=>{let sel=state.selection;if(sel.ranges.length>1||sel.main.empty)return false;let{from,to}=sel.main;let ranges=[],main=0;for(let cur=new SearchCursor(state.doc,state.sliceDoc(from,to));!cur.next().done;){if(ranges.length>1000)return false;if(cur.value.from==from)main=ranges.length;ranges.push(EditorSelection.range(cur.value.from,cur.value.to));}dispatch(state.update({selection:EditorSelection.create(ranges,main),userEvent:\\\"select.search.matches\\\"}));return true;};const replaceNext=searchCommand((view,{query})=>{let{state}=view,{from,to}=state.selection.main;if(state.readOnly)return false;let next=query.nextMatch(state,from,from);if(!next)return false;let changes=[],selection,replacement;let effects=[];if(next.from==from&&next.to==to){replacement=state.toText(query.getReplacement(next));changes.push({from:next.from,to:next.to,insert:replacement});next=query.nextMatch(state,next.from,next.to);effects.push(EditorView.announce.of(state.phrase(\\\"replaced match on line $\\\",state.doc.lineAt(from).number)+\\\".\\\"));}if(next){let off=changes.length==0||changes[0].from>=next.to?0:next.to-next.from-replacement.length;selection=EditorSelection.single(next.from-off,next.to-off);effects.push(announceMatch(view,next));effects.push(state.facet(searchConfigFacet).scrollToMatch(selection.main,view));}view.dispatch({changes,selection,effects,userEvent:\\\"input.replace\\\"});return true;});const replaceAll=searchCommand((view,{query})=>{if(view.state.readOnly)return false;let changes=query.matchAll(view.state,1e9).map(match=>{let{from,to}=match;return{from,to,insert:query.getReplacement(match)};});if(!changes.length)return false;let announceText=view.state.phrase(\\\"replaced $ matches\\\",changes.length)+\\\".\\\";view.dispatch({changes,effects:EditorView.announce.of(announceText),userEvent:\\\"input.replace.all\\\"});return true;});function createSearchPanel(view){return view.state.facet(searchConfigFacet).createPanel(view);}function defaultQuery(state,fallback){var _a,_b,_c,_d,_e;let sel=state.selection.main;let selText=sel.empty||sel.to>sel.from+100?\\\"\\\":state.sliceDoc(sel.from,sel.to);if(fallback&&!selText)return fallback;let config=state.facet(searchConfigFacet);return new SearchQuery({search:((_a=fallback===null||fallback===void 0?void 0:fallback.literal)!==null&&_a!==void 0?_a:config.literal)?selText:selText.replace(/\\\\n/g,\\\"\\\\\\\\n\\\"),caseSensitive:(_b=fallback===null||fallback===void 0?void 0:fallback.caseSensitive)!==null&&_b!==void 0?_b:config.caseSensitive,literal:(_c=fallback===null||fallback===void 0?void 0:fallback.literal)!==null&&_c!==void 0?_c:config.literal,regexp:(_d=fallback===null||fallback===void 0?void 0:fallback.regexp)!==null&&_d!==void 0?_d:config.regexp,wholeWord:(_e=fallback===null||fallback===void 0?void 0:fallback.wholeWord)!==null&&_e!==void 0?_e:config.wholeWord});}function getSearchInput(view){let panel=getPanel(view,createSearchPanel);return panel&&panel.dom.querySelector(\\\"[main-field]\\\");}function selectSearchInput(view){let input=getSearchInput(view);if(input&&input==view.root.activeElement)input.select();}const openSearchPanel=view=>{let state=view.state.field(searchState,false);if(state&&state.panel){let searchInput=getSearchInput(view);if(searchInput&&searchInput!=view.root.activeElement){let query=defaultQuery(view.state,state.query.spec);if(query.valid)view.dispatch({effects:setSearchQuery.of(query)});searchInput.focus();searchInput.select();}}else{view.dispatch({effects:[togglePanel$1.of(true),state?setSearchQuery.of(defaultQuery(view.state,state.query.spec)):StateEffect.appendConfig.of(searchExtensions)]});}return true;};const closeSearchPanel=view=>{let state=view.state.field(searchState,false);if(!state||!state.panel)return false;let panel=getPanel(view,createSearchPanel);if(panel&&panel.dom.contains(view.root.activeElement))view.focus();view.dispatch({effects:togglePanel$1.of(false)});return true;};const searchKeymap=[{key:\\\"Mod-f\\\",run:openSearchPanel,scope:\\\"editor search-panel\\\"},{key:\\\"F3\\\",run:findNext,shift:findPrevious,scope:\\\"editor search-panel\\\",preventDefault:true},{key:\\\"Mod-g\\\",run:findNext,shift:findPrevious,scope:\\\"editor search-panel\\\",preventDefault:true},{key:\\\"Escape\\\",run:closeSearchPanel,scope:\\\"editor search-panel\\\"},{key:\\\"Mod-Shift-l\\\",run:selectSelectionMatches},{key:\\\"Mod-Alt-g\\\",run:gotoLine},{key:\\\"Mod-d\\\",run:selectNextOccurrence,preventDefault:true}];class SearchPanel{constructor(view){this.view=view;let query=this.query=view.state.field(searchState).query.spec;this.commit=this.commit.bind(this);this.searchField=crelt(\\\"input\\\",{value:query.search,placeholder:phrase(view,\\\"Find\\\"),\\\"aria-label\\\":phrase(view,\\\"Find\\\"),class:\\\"cm-textfield\\\",name:\\\"search\\\",form:\\\"\\\",\\\"main-field\\\":\\\"true\\\",onchange:this.commit,onkeyup:this.commit});this.replaceField=crelt(\\\"input\\\",{value:query.replace,placeholder:phrase(view,\\\"Replace\\\"),\\\"aria-label\\\":phrase(view,\\\"Replace\\\"),class:\\\"cm-textfield\\\",name:\\\"replace\\\",form:\\\"\\\",onchange:this.commit,onkeyup:this.commit});this.caseField=crelt(\\\"input\\\",{type:\\\"checkbox\\\",name:\\\"case\\\",form:\\\"\\\",checked:query.caseSensitive,onchange:this.commit});this.reField=crelt(\\\"input\\\",{type:\\\"checkbox\\\",name:\\\"re\\\",form:\\\"\\\",checked:query.regexp,onchange:this.commit});this.wordField=crelt(\\\"input\\\",{type:\\\"checkbox\\\",name:\\\"word\\\",form:\\\"\\\",checked:query.wholeWord,onchange:this.commit});function button(name,onclick,content){return crelt(\\\"button\\\",{class:\\\"cm-button\\\",name,onclick,type:\\\"button\\\"},content);}this.dom=crelt(\\\"div\\\",{onkeydown:e=>this.keydown(e),class:\\\"cm-search\\\"},[this.searchField,button(\\\"next\\\",()=>findNext(view),[phrase(view,\\\"next\\\")]),button(\\\"prev\\\",()=>findPrevious(view),[phrase(view,\\\"previous\\\")]),button(\\\"select\\\",()=>selectMatches(view),[phrase(view,\\\"all\\\")]),crelt(\\\"label\\\",null,[this.caseField,phrase(view,\\\"match case\\\")]),crelt(\\\"label\\\",null,[this.reField,phrase(view,\\\"regexp\\\")]),crelt(\\\"label\\\",null,[this.wordField,phrase(view,\\\"by word\\\")]),...(view.state.readOnly?[]:[crelt(\\\"br\\\"),this.replaceField,button(\\\"replace\\\",()=>replaceNext(view),[phrase(view,\\\"replace\\\")]),button(\\\"replaceAll\\\",()=>replaceAll(view),[phrase(view,\\\"replace all\\\")])]),crelt(\\\"button\\\",{name:\\\"close\\\",onclick:()=>closeSearchPanel(view),\\\"aria-label\\\":phrase(view,\\\"close\\\"),type:\\\"button\\\"},[\\\"×\\\"])]);}commit(){let query=new SearchQuery({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});if(!query.eq(this.query)){this.query=query;this.view.dispatch({effects:setSearchQuery.of(query)});}}keydown(e){if(runScopeHandlers(this.view,e,\\\"search-panel\\\")){e.preventDefault();}else if(e.keyCode==13&&e.target==this.searchField){e.preventDefault();(e.shiftKey?findPrevious:findNext)(this.view);}else if(e.keyCode==13&&e.target==this.replaceField){e.preventDefault();replaceNext(this.view);}}update(update){for(let _i217=0,_update$transactions=update.transactions,_length217=_update$transactions.length;_i217\u003C_length217;_i217++){let tr=_update$transactions[_i217];for(let _i218=0,_tr$effects9=tr.effects,_length218=_tr$effects9.length;_i218\u003C_length218;_i218++){let effect=_tr$effects9[_i218];if(effect.is(setSearchQuery)&&!effect.value.eq(this.query))this.setQuery(effect.value);}}}setQuery(query){this.query=query;this.searchField.value=query.search;this.replaceField.value=query.replace;this.caseField.checked=query.caseSensitive;this.reField.checked=query.regexp;this.wordField.checked=query.wholeWord;}mount(){this.searchField.select();}get pos(){return 80;}get top(){return this.view.state.facet(searchConfigFacet).top;}}function phrase(view,phrase){return view.state.phrase(phrase);}const AnnounceMargin=30;const Break=/[\\\\s\\\\.,:;?!]/;function announceMatch(view,{from,to}){let line=view.state.doc.lineAt(from),lineEnd=view.state.doc.lineAt(to).to;let start=Math.max(line.from,from-AnnounceMargin),end=Math.min(lineEnd,to+AnnounceMargin);let text=view.state.sliceDoc(start,end);if(start!=line.from){for(let i=0;i\u003CAnnounceMargin;i++)if(!Break.test(text[i+1])&&Break.test(text[i])){text=text.slice(i);break;}}if(end!=lineEnd){for(let i=text.length-1;i>text.length-AnnounceMargin;i--)if(!Break.test(text[i-1])&&Break.test(text[i])){text=text.slice(0,i);break;}}return EditorView.announce.of(`${view.state.phrase(\\\"current match\\\")}. ${text} ${view.state.phrase(\\\"on line\\\")} ${line.number}.`);}const baseTheme$3=EditorView.baseTheme({\\\".cm-panel.cm-search\\\":{padding:\\\"2px 6px 4px\\\",position:\\\"relative\\\",\\\"& [name=close]\\\":{position:\\\"absolute\\\",top:\\\"0\\\",right:\\\"4px\\\",backgroundColor:\\\"inherit\\\",border:\\\"none\\\",font:\\\"inherit\\\",padding:0,margin:0},\\\"& input, & button, & label\\\":{margin:\\\".2em .6em .2em 0\\\"},\\\"& input[type=checkbox]\\\":{marginRight:\\\".2em\\\"},\\\"& label\\\":{fontSize:\\\"80%\\\",whiteSpace:\\\"pre\\\"}},\\\"&light .cm-searchMatch\\\":{backgroundColor:\\\"#ffff0054\\\"},\\\"&dark .cm-searchMatch\\\":{backgroundColor:\\\"#00ffff8a\\\"},\\\"&light .cm-searchMatch-selected\\\":{backgroundColor:\\\"#ff6a0054\\\"},\\\"&dark .cm-searchMatch-selected\\\":{backgroundColor:\\\"#ff00ff8a\\\"}});const searchExtensions=[searchState,Prec.low(searchHighlighter),baseTheme$3];var _m4=Object.freeze({__proto__:null,RegExpCursor:RegExpCursor,SearchCursor:SearchCursor,SearchQuery:SearchQuery,closeSearchPanel:closeSearchPanel,findNext:findNext,findPrevious:findPrevious,getSearchQuery:getSearchQuery,gotoLine:gotoLine,highlightSelectionMatches:highlightSelectionMatches,openSearchPanel:openSearchPanel,replaceAll:replaceAll,replaceNext:replaceNext,search:search,searchKeymap:searchKeymap,searchPanelOpen:searchPanelOpen,selectMatches:selectMatches,selectNextOccurrence:selectNextOccurrence,selectSelectionMatches:selectSelectionMatches,setSearchQuery:setSearchQuery});class CompletionContext{constructor(state,pos,explicit){this.state=state;this.pos=pos;this.explicit=explicit;this.abortListeners=[];}tokenBefore(types){let token=syntaxTree(this.state).resolveInner(this.pos,-1);while(token&&types.indexOf(token.name)\u003C0)token=token.parent;return token?{from:token.from,to:this.pos,text:this.state.sliceDoc(token.from,this.pos),type:token.type}:null;}matchBefore(expr){let line=this.state.doc.lineAt(this.pos);let start=Math.max(line.from,this.pos-250);let str=line.text.slice(start-line.from,this.pos-line.from);let found=str.search(ensureAnchor(expr,false));return found\u003C0?null:{from:start+found,to:this.pos,text:str.slice(found)};}get aborted(){return this.abortListeners==null;}addEventListener(type,listener){if(type==\\\"abort\\\"&&this.abortListeners)this.abortListeners.push(listener);}}function toSet(chars){let flat=Object.keys(chars).join(\\\"\\\");let words=/\\\\w/.test(flat);if(words)flat=flat.replace(/\\\\w/g,\\\"\\\");return`[${words?\\\"\\\\\\\\w\\\":\\\"\\\"}${flat.replace(/[^\\\\w\\\\s]/g,\\\"\\\\\\\\$&\\\")}]`;}function prefixMatch(options){let first=Object.create(null),rest=Object.create(null);for(let _i219=0,_length219=options.length;_i219\u003C_length219;_i219++){let{label}=options[_i219];first[label[0]]=true;for(let i=1;i\u003Clabel.length;i++)rest[label[i]]=true;}let source=toSet(first)+toSet(rest)+\\\"*$\\\";return[new RegExp(\\\"^\\\"+source),new RegExp(source)];}function completeFromList(list){let options=list.map(o=>typeof o==\\\"string\\\"?{label:o}:o);let[validFor,match]=options.every(o=>/^\\\\w+$/.test(o.label))?[/\\\\w*$/,/\\\\w+$/]:prefixMatch(options);return context=>{let token=context.matchBefore(match);return token||context.explicit?{from:token?token.from:context.pos,options,validFor}:null;};}function ifIn(nodes,source){return context=>{for(let pos=syntaxTree(context.state).resolveInner(context.pos,-1);pos;pos=pos.parent){if(nodes.indexOf(pos.name)>-1)return source(context);if(pos.type.isTop)break;}return null;};}function ifNotIn(nodes,source){return context=>{for(let pos=syntaxTree(context.state).resolveInner(context.pos,-1);pos;pos=pos.parent){if(nodes.indexOf(pos.name)>-1)return null;if(pos.type.isTop)break;}return source(context);};}class Option{constructor(completion,source,match,score){this.completion=completion;this.source=source;this.match=match;this.score=score;}}function cur(state){return state.selection.main.from;}function ensureAnchor(expr,start){var _a;let{source}=expr;let addStart=start&&source[0]!=\\\"^\\\",addEnd=source[source.length-1]!=\\\"$\\\";if(!addStart&&!addEnd)return expr;return new RegExp(`${addStart?\\\"^\\\":\\\"\\\"}(?:${source})${addEnd?\\\"$\\\":\\\"\\\"}`,(_a=expr.flags)!==null&&_a!==void 0?_a:expr.ignoreCase?\\\"i\\\":\\\"\\\");}const pickedCompletion=Annotation.define();function insertCompletionText(state,text,from,to){let{main}=state.selection,fromOff=from-main.from,toOff=to-main.from;return Object.assign(Object.assign({},state.changeByRange(range=>{if(range!=main&&from!=to&&state.sliceDoc(range.from+fromOff,range.from+toOff)!=state.sliceDoc(from,to))return{range};return{changes:{from:range.from+fromOff,to:to==main.from?range.to:range.from+toOff,insert:text},range:EditorSelection.cursor(range.from+fromOff+text.length)};})),{scrollIntoView:true,userEvent:\\\"input.complete\\\"});}const SourceCache=new WeakMap();function asSource(source){if(!Array.isArray(source))return source;let known=SourceCache.get(source);if(!known)SourceCache.set(source,known=completeFromList(source));return known;}const startCompletionEffect=StateEffect.define();const closeCompletionEffect=StateEffect.define();class FuzzyMatcher{constructor(pattern){this.pattern=pattern;this.chars=[];this.folded=[];this.any=[];this.precise=[];this.byWord=[];this.score=0;this.matched=[];for(let p=0;p\u003Cpattern.length;){let char=codePointAt(pattern,p),size=codePointSize(char);this.chars.push(char);let part=pattern.slice(p,p+size),upper=part.toUpperCase();this.folded.push(codePointAt(upper==part?part.toLowerCase():upper,0));p+=size;}this.astral=pattern.length!=this.chars.length;}ret(score,matched){this.score=score;this.matched=matched;return true;}match(word){if(this.pattern.length==0)return this.ret(-100,[]);if(word.length\u003Cthis.pattern.length)return false;let{chars,folded,any,precise,byWord}=this;if(chars.length==1){let first=codePointAt(word,0),firstSize=codePointSize(first);let score=firstSize==word.length?0:-100;if(first==chars[0]);else if(first==folded[0])score+=-200;else return false;return this.ret(score,[0,firstSize]);}let direct=word.indexOf(this.pattern);if(direct==0)return this.ret(word.length==this.pattern.length?0:-100,[0,this.pattern.length]);let len=chars.length,anyTo=0;if(direct\u003C0){for(let i=0,e=Math.min(word.length,200);i\u003Ce&&anyTo\u003Clen;){let next=codePointAt(word,i);if(next==chars[anyTo]||next==folded[anyTo])any[anyTo++]=i;i+=codePointSize(next);}if(anyTo\u003Clen)return false;}let preciseTo=0;let byWordTo=0,byWordFolded=false;let adjacentTo=0,adjacentStart=-1,adjacentEnd=-1;let hasLower=/[a-z]/.test(word),wordAdjacent=true;for(let i=0,e=Math.min(word.length,200),prevType=0;i\u003Ce&&byWordTo\u003Clen;){let next=codePointAt(word,i);if(direct\u003C0){if(preciseTo\u003Clen&&next==chars[preciseTo])precise[preciseTo++]=i;if(adjacentTo\u003Clen){if(next==chars[adjacentTo]||next==folded[adjacentTo]){if(adjacentTo==0)adjacentStart=i;adjacentEnd=i+1;adjacentTo++;}else{adjacentTo=0;}}}let ch,type=next\u003C0xff?next>=48&&next\u003C=57||next>=97&&next\u003C=122?2:next>=65&&next\u003C=90?1:0:(ch=fromCodePoint(next))!=ch.toLowerCase()?1:ch!=ch.toUpperCase()?2:0;if(!i||type==1&&hasLower||prevType==0&&type!=0){if(chars[byWordTo]==next||folded[byWordTo]==next&&(byWordFolded=true))byWord[byWordTo++]=i;else if(byWord.length)wordAdjacent=false;}prevType=type;i+=codePointSize(next);}if(byWordTo==len&&byWord[0]==0&&wordAdjacent)return this.result(-100+(byWordFolded?-200:0),byWord,word);if(adjacentTo==len&&adjacentStart==0)return this.ret(-200-word.length+(adjacentEnd==word.length?0:-100),[0,adjacentEnd]);if(direct>-1)return this.ret(-700-word.length,[direct,direct+this.pattern.length]);if(adjacentTo==len)return this.ret(-200+-700-word.length,[adjacentStart,adjacentEnd]);if(byWordTo==len)return this.result(-100+(byWordFolded?-200:0)+-700+(wordAdjacent?0:-1100),byWord,word);return chars.length==2?false:this.result((any[0]?-700:0)+-200+-1100,any,word);}result(score,positions,word){let result=[],i=0;for(let _i220=0,_length220=positions.length;_i220\u003C_length220;_i220++){let pos=positions[_i220];let to=pos+(this.astral?codePointSize(codePointAt(word,pos)):1);if(i&&result[i-1]==pos)result[i-1]=to;else{result[i++]=pos;result[i++]=to;}}return this.ret(score-word.length,result);}}const completionConfig=Facet.define({combine(configs){return combineConfig(configs,{activateOnTyping:true,activateOnTypingDelay:100,selectOnOpen:true,override:null,closeOnBlur:true,maxRenderedOptions:100,defaultKeymap:true,tooltipClass:()=>\\\"\\\",optionClass:()=>\\\"\\\",aboveCursor:false,icons:true,addToOptions:[],positionInfo:defaultPositionInfo,compareCompletions:(a,b)=>a.label.localeCompare(b.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(a,b)=>a&&b,closeOnBlur:(a,b)=>a&&b,icons:(a,b)=>a&&b,tooltipClass:(a,b)=>c=>joinClass(a(c),b(c)),optionClass:(a,b)=>c=>joinClass(a(c),b(c)),addToOptions:(a,b)=>a.concat(b)});}});function joinClass(a,b){return a?b?a+\\\" \\\"+b:a:b;}function defaultPositionInfo(view,list,option,info,space,tooltip){let rtl=view.textDirection==Direction.RTL,left=rtl,narrow=false;let side=\\\"top\\\",offset,maxWidth;let spaceLeft=list.left-space.left,spaceRight=space.right-list.right;let infoWidth=info.right-info.left,infoHeight=info.bottom-info.top;if(left&&spaceLeft\u003CMath.min(infoWidth,spaceRight))left=false;else if(!left&&spaceRight\u003CMath.min(infoWidth,spaceLeft))left=true;if(infoWidth\u003C=(left?spaceLeft:spaceRight)){offset=Math.max(space.top,Math.min(option.top,space.bottom-infoHeight))-list.top;maxWidth=Math.min(400,left?spaceLeft:spaceRight);}else{narrow=true;maxWidth=Math.min(400,(rtl?list.right:space.right-list.left)-30);let spaceBelow=space.bottom-list.bottom;if(spaceBelow>=infoHeight||spaceBelow>list.top){offset=option.bottom-list.top;}else{side=\\\"bottom\\\";offset=list.bottom-option.top;}}let scaleY=(list.bottom-list.top)/tooltip.offsetHeight;let scaleX=(list.right-list.left)/tooltip.offsetWidth;return{style:`${side}: ${offset/scaleY}px; max-width: ${maxWidth/scaleX}px`,class:\\\"cm-completionInfo-\\\"+(narrow?rtl?\\\"left-narrow\\\":\\\"right-narrow\\\":left?\\\"left\\\":\\\"right\\\")};}function optionContent(config){let content=config.addToOptions.slice();if(config.icons)content.push({render(completion){let icon=document.createElement(\\\"div\\\");icon.classList.add(\\\"cm-completionIcon\\\");if(completion.type)icon.classList.add(...completion.type.split(/\\\\s+/g).map(cls=>\\\"cm-completionIcon-\\\"+cls));icon.setAttribute(\\\"aria-hidden\\\",\\\"true\\\");return icon;},position:20});content.push({render(completion,_s,_v,match){let labelElt=document.createElement(\\\"span\\\");labelElt.className=\\\"cm-completionLabel\\\";let label=completion.displayLabel||completion.label,off=0;for(let j=0;j\u003Cmatch.length;){let from=match[j++],to=match[j++];if(from>off)labelElt.appendChild(document.createTextNode(label.slice(off,from)));let span=labelElt.appendChild(document.createElement(\\\"span\\\"));span.appendChild(document.createTextNode(label.slice(from,to)));span.className=\\\"cm-completionMatchedText\\\";off=to;}if(off\u003Clabel.length)labelElt.appendChild(document.createTextNode(label.slice(off)));return labelElt;},position:50},{render(completion){if(!completion.detail)return null;let detailElt=document.createElement(\\\"span\\\");detailElt.className=\\\"cm-completionDetail\\\";detailElt.textContent=completion.detail;return detailElt;},position:80});return content.sort((a,b)=>a.position-b.position).map(a=>a.render);}function rangeAroundSelected(total,selected,max){if(total\u003C=max)return{from:0,to:total};if(selected\u003C0)selected=0;if(selected\u003C=total>>1){let off=Math.floor(selected/max);return{from:off*max,to:(off+1)*max};}let off=Math.floor((total-selected)/max);return{from:total-(off+1)*max,to:total-off*max};}class CompletionTooltip{constructor(view,stateField,applyCompletion){this.view=view;this.stateField=stateField;this.applyCompletion=applyCompletion;this.info=null;this.infoDestroy=null;this.placeInfoReq={read:()=>this.measureInfo(),write:pos=>this.placeInfo(pos),key:this};this.space=null;this.currentClass=\\\"\\\";let cState=view.state.field(stateField);let{options,selected}=cState.open;let config=view.state.facet(completionConfig);this.optionContent=optionContent(config);this.optionClass=config.optionClass;this.tooltipClass=config.tooltipClass;this.range=rangeAroundSelected(options.length,selected,config.maxRenderedOptions);this.dom=document.createElement(\\\"div\\\");this.dom.className=\\\"cm-tooltip-autocomplete\\\";this.updateTooltipClass(view.state);this.dom.addEventListener(\\\"mousedown\\\",e=>{let{options}=view.state.field(stateField).open;for(let dom=e.target,match;dom&&dom!=this.dom;dom=dom.parentNode){if(dom.nodeName==\\\"LI\\\"&&(match=/-(\\\\d+)$/.exec(dom.id))&&+match[1]\u003Coptions.length){this.applyCompletion(view,options[+match[1]]);e.preventDefault();return;}}});this.dom.addEventListener(\\\"focusout\\\",e=>{let state=view.state.field(this.stateField,false);if(state&&state.tooltip&&view.state.facet(completionConfig).closeOnBlur&&e.relatedTarget!=view.contentDOM)view.dispatch({effects:closeCompletionEffect.of(null)});});this.showOptions(options,cState.id);}mount(){this.updateSel();}showOptions(options,id){if(this.list)this.list.remove();this.list=this.dom.appendChild(this.createListBox(options,id,this.range));this.list.addEventListener(\\\"scroll\\\",()=>{if(this.info)this.view.requestMeasure(this.placeInfoReq);});}update(update){var _a;let cState=update.state.field(this.stateField);let prevState=update.startState.field(this.stateField);this.updateTooltipClass(update.state);if(cState!=prevState){let{options,selected,disabled}=cState.open;if(!prevState.open||prevState.open.options!=options){this.range=rangeAroundSelected(options.length,selected,update.state.facet(completionConfig).maxRenderedOptions);this.showOptions(options,cState.id);}this.updateSel();if(disabled!=((_a=prevState.open)===null||_a===void 0?void 0:_a.disabled))this.dom.classList.toggle(\\\"cm-tooltip-autocomplete-disabled\\\",!!disabled);}}updateTooltipClass(state){let cls=this.tooltipClass(state);if(cls!=this.currentClass){for(let _i221=0,_this$currentClass$sp=this.currentClass.split(\\\" \\\"),_length221=_this$currentClass$sp.length;_i221\u003C_length221;_i221++){let c=_this$currentClass$sp[_i221];if(c)this.dom.classList.remove(c);}for(let _i222=0,_cls$split=cls.split(\\\" \\\"),_length222=_cls$split.length;_i222\u003C_length222;_i222++){let c=_cls$split[_i222];if(c)this.dom.classList.add(c);}this.currentClass=cls;}}positioned(space){this.space=space;if(this.info)this.view.requestMeasure(this.placeInfoReq);}updateSel(){let cState=this.view.state.field(this.stateField),open=cState.open;if(open.selected>-1&&open.selected\u003Cthis.range.from||open.selected>=this.range.to){this.range=rangeAroundSelected(open.options.length,open.selected,this.view.state.facet(completionConfig).maxRenderedOptions);this.showOptions(open.options,cState.id);}if(this.updateSelectedOption(open.selected)){this.destroyInfo();let{completion}=open.options[open.selected];let{info}=completion;if(!info)return;let infoResult=typeof info===\\\"string\\\"?document.createTextNode(info):info(completion);if(!infoResult)return;if(\\\"then\\\"in infoResult){infoResult.then(obj=>{if(obj&&this.view.state.field(this.stateField,false)==cState)this.addInfoPane(obj,completion);}).catch(e=>logException(this.view.state,e,\\\"completion info\\\"));}else{this.addInfoPane(infoResult,completion);}}}addInfoPane(content,completion){this.destroyInfo();let wrap=this.info=document.createElement(\\\"div\\\");wrap.className=\\\"cm-tooltip cm-completionInfo\\\";if(content.nodeType!=null){wrap.appendChild(content);this.infoDestroy=null;}else{let{dom,destroy}=content;wrap.appendChild(dom);this.infoDestroy=destroy||null;}this.dom.appendChild(wrap);this.view.requestMeasure(this.placeInfoReq);}updateSelectedOption(selected){let set=null;for(let opt=this.list.firstChild,i=this.range.from;opt;opt=opt.nextSibling,i++){if(opt.nodeName!=\\\"LI\\\"||!opt.id){i--;}else if(i==selected){if(!opt.hasAttribute(\\\"aria-selected\\\")){opt.setAttribute(\\\"aria-selected\\\",\\\"true\\\");set=opt;}}else{if(opt.hasAttribute(\\\"aria-selected\\\"))opt.removeAttribute(\\\"aria-selected\\\");}}if(set)scrollIntoView(this.list,set);return set;}measureInfo(){let sel=this.dom.querySelector(\\\"[aria-selected]\\\");if(!sel||!this.info)return null;let listRect=this.dom.getBoundingClientRect();let infoRect=this.info.getBoundingClientRect();let selRect=sel.getBoundingClientRect();let space=this.space;if(!space){let win=this.dom.ownerDocument.defaultView||window;space={left:0,top:0,right:win.innerWidth,bottom:win.innerHeight};}if(selRect.top>Math.min(space.bottom,listRect.bottom)-10||selRect.bottom\u003CMath.max(space.top,listRect.top)+10)return null;return this.view.state.facet(completionConfig).positionInfo(this.view,listRect,selRect,infoRect,space,this.dom);}placeInfo(pos){if(this.info){if(pos){if(pos.style)this.info.style.cssText=pos.style;this.info.className=\\\"cm-tooltip cm-completionInfo \\\"+(pos.class||\\\"\\\");}else{this.info.style.cssText=\\\"top: -1e6px\\\";}}}createListBox(options,id,range){const ul=document.createElement(\\\"ul\\\");ul.id=id;ul.setAttribute(\\\"role\\\",\\\"listbox\\\");ul.setAttribute(\\\"aria-expanded\\\",\\\"true\\\");ul.setAttribute(\\\"aria-label\\\",this.view.state.phrase(\\\"Completions\\\"));let curSection=null;for(let i=range.from;i\u003Crange.to;i++){let{completion,match}=options[i],{section}=completion;if(section){let name=typeof section==\\\"string\\\"?section:section.name;if(name!=curSection&&(i>range.from||range.from==0)){curSection=name;if(typeof section!=\\\"string\\\"&§ion.header){ul.appendChild(section.header(section));}else{let header=ul.appendChild(document.createElement(\\\"completion-section\\\"));header.textContent=name;}}}const li=ul.appendChild(document.createElement(\\\"li\\\"));li.id=id+\\\"-\\\"+i;li.setAttribute(\\\"role\\\",\\\"option\\\");let cls=this.optionClass(completion);if(cls)li.className=cls;for(let _i223=0,_this$optionContent=this.optionContent,_length223=_this$optionContent.length;_i223\u003C_length223;_i223++){let source=_this$optionContent[_i223];let node=source(completion,this.view.state,this.view,match);if(node)li.appendChild(node);}}if(range.from)ul.classList.add(\\\"cm-completionListIncompleteTop\\\");if(range.to\u003Coptions.length)ul.classList.add(\\\"cm-completionListIncompleteBottom\\\");return ul;}destroyInfo(){if(this.info){if(this.infoDestroy)this.infoDestroy();this.info.remove();this.info=null;}}destroy(){this.destroyInfo();}}function completionTooltip(stateField,applyCompletion){return view=>new CompletionTooltip(view,stateField,applyCompletion);}function scrollIntoView(container,element){let parent=container.getBoundingClientRect();let self=element.getBoundingClientRect();let scaleY=parent.height/container.offsetHeight;if(self.top\u003Cparent.top)container.scrollTop-=(parent.top-self.top)/scaleY;else if(self.bottom>parent.bottom)container.scrollTop+=(self.bottom-parent.bottom)/scaleY;}function score(option){return(option.boost||0)*100+(option.apply?10:0)+(option.info?5:0)+(option.type?1:0);}function sortOptions(active,state){let options=[];let sections=null;let addOption=option=>{options.push(option);let{section}=option.completion;if(section){if(!sections)sections=[];let name=typeof section==\\\"string\\\"?section:section.name;if(!sections.some(s=>s.name==name))sections.push(typeof section==\\\"string\\\"?{name}:section);}};for(let _i224=0,_length224=active.length;_i224\u003C_length224;_i224++){let a=active[_i224];if(a.hasResult()){let getMatch=a.result.getMatch;if(a.result.filter===false){for(let _i225=0,_a$result$options=a.result.options,_length225=_a$result$options.length;_i225\u003C_length225;_i225++){let option=_a$result$options[_i225];addOption(new Option(option,a.source,getMatch?getMatch(option):[],1e9-options.length));}}else{let matcher=new FuzzyMatcher(state.sliceDoc(a.from,a.to));for(let _i226=0,_a$result$options2=a.result.options,_length226=_a$result$options2.length;_i226\u003C_length226;_i226++){let option=_a$result$options2[_i226];if(matcher.match(option.label)){let matched=!option.displayLabel?matcher.matched:getMatch?getMatch(option,matcher.matched):[];addOption(new Option(option,a.source,matched,matcher.score+(option.boost||0)));}}}}}if(sections){let sectionOrder=Object.create(null),pos=0;let cmp=(a,b)=>{var _a,_b;return((_a=a.rank)!==null&&_a!==void 0?_a:1e9)-((_b=b.rank)!==null&&_b!==void 0?_b:1e9)||(a.name\u003Cb.name?-1:1);};for(let _i227=0,_sections$sort=sections.sort(cmp),_length227=_sections$sort.length;_i227\u003C_length227;_i227++){let s=_sections$sort[_i227];pos-=1e5;sectionOrder[s.name]=pos;}for(let _i228=0,_length228=options.length;_i228\u003C_length228;_i228++){let option=options[_i228];let{section}=option.completion;if(section)option.score+=sectionOrder[typeof section==\\\"string\\\"?section:section.name];}}let result=[],prev=null;let compare=state.facet(completionConfig).compareCompletions;for(let _i229=0,_options$sort=options.sort((a,b)=>b.score-a.score||compare(a.completion,b.completion)),_length229=_options$sort.length;_i229\u003C_length229;_i229++){let opt=_options$sort[_i229];let cur=opt.completion;if(!prev||prev.label!=cur.label||prev.detail!=cur.detail||prev.type!=null&&cur.type!=null&&prev.type!=cur.type||prev.apply!=cur.apply||prev.boost!=cur.boost)result.push(opt);else if(score(opt.completion)>score(prev))result[result.length-1]=opt;prev=opt.completion;}return result;}class CompletionDialog{constructor(options,attrs,tooltip,timestamp,selected,disabled){this.options=options;this.attrs=attrs;this.tooltip=tooltip;this.timestamp=timestamp;this.selected=selected;this.disabled=disabled;}setSelected(selected,id){return selected==this.selected||selected>=this.options.length?this:new CompletionDialog(this.options,makeAttrs(id,selected),this.tooltip,this.timestamp,selected,this.disabled);}static build(active,state,id,prev,conf){let options=sortOptions(active,state);if(!options.length){return prev&&active.some(a=>a.state==1)?new CompletionDialog(prev.options,prev.attrs,prev.tooltip,prev.timestamp,prev.selected,true):null;}let selected=state.facet(completionConfig).selectOnOpen?0:-1;if(prev&&prev.selected!=selected&&prev.selected!=-1){let selectedValue=prev.options[prev.selected].completion;for(let i=0;i\u003Coptions.length;i++)if(options[i].completion==selectedValue){selected=i;break;}}return new CompletionDialog(options,makeAttrs(id,selected),{pos:active.reduce((a,b)=>b.hasResult()?Math.min(a,b.from):a,1e8),create:createTooltip,above:conf.aboveCursor},prev?prev.timestamp:Date.now(),selected,false);}map(changes){return new CompletionDialog(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:changes.mapPos(this.tooltip.pos)}),this.timestamp,this.selected,this.disabled);}}class CompletionState{constructor(active,id,open){this.active=active;this.id=id;this.open=open;}static start(){return new CompletionState(none$1,\\\"cm-ac-\\\"+Math.floor(Math.random()*2e6).toString(36),null);}update(tr){let{state}=tr,conf=state.facet(completionConfig);let sources=conf.override||state.languageDataAt(\\\"autocomplete\\\",cur(state)).map(asSource);let active=sources.map(source=>{let value=this.active.find(s=>s.source==source)||new ActiveSource(source,this.active.some(a=>a.state!=0)?1:0);return value.update(tr,conf);});if(active.length==this.active.length&&active.every((a,i)=>a==this.active[i]))active=this.active;let open=this.open;if(open&&tr.docChanged)open=open.map(tr.changes);if(tr.selection||active.some(a=>a.hasResult()&&tr.changes.touchesRange(a.from,a.to))||!sameResults(active,this.active))open=CompletionDialog.build(active,state,this.id,open,conf);else if(open&&open.disabled&&!active.some(a=>a.state==1))open=null;if(!open&&active.every(a=>a.state!=1)&&active.some(a=>a.hasResult()))active=active.map(a=>a.hasResult()?new ActiveSource(a.source,0):a);for(let _i230=0,_tr$effects10=tr.effects,_length230=_tr$effects10.length;_i230\u003C_length230;_i230++){let effect=_tr$effects10[_i230];if(effect.is(setSelectedEffect))open=open&&open.setSelected(effect.value,this.id);}return active==this.active&&open==this.open?this:new CompletionState(active,this.id,open);}get tooltip(){return this.open?this.open.tooltip:null;}get attrs(){return this.open?this.open.attrs:baseAttrs;}}function sameResults(a,b){if(a==b)return true;for(let iA=0,iB=0;;){while(iA\u003Ca.length&&!a[iA].hasResult)iA++;while(iB\u003Cb.length&&!b[iB].hasResult)iB++;let endA=iA==a.length,endB=iB==b.length;if(endA||endB)return endA==endB;if(a[iA++].result!=b[iB++].result)return false;}}const baseAttrs={\\\"aria-autocomplete\\\":\\\"list\\\"};function makeAttrs(id,selected){let result={\\\"aria-autocomplete\\\":\\\"list\\\",\\\"aria-haspopup\\\":\\\"listbox\\\",\\\"aria-controls\\\":id};if(selected>-1)result[\\\"aria-activedescendant\\\"]=id+\\\"-\\\"+selected;return result;}const none$1=[];function getUserEvent(tr){return tr.isUserEvent(\\\"input.type\\\")?\\\"input\\\":tr.isUserEvent(\\\"delete.backward\\\")?\\\"delete\\\":null;}class ActiveSource{constructor(source,state,explicitPos=-1){this.source=source;this.state=state;this.explicitPos=explicitPos;}hasResult(){return false;}update(tr,conf){let event=getUserEvent(tr),value=this;if(event)value=value.handleUserEvent(tr,event,conf);else if(tr.docChanged)value=value.handleChange(tr);else if(tr.selection&&value.state!=0)value=new ActiveSource(value.source,0);for(let _i231=0,_tr$effects11=tr.effects,_length231=_tr$effects11.length;_i231\u003C_length231;_i231++){let effect=_tr$effects11[_i231];if(effect.is(startCompletionEffect))value=new ActiveSource(value.source,1,effect.value?cur(tr.state):-1);else if(effect.is(closeCompletionEffect))value=new ActiveSource(value.source,0);else if(effect.is(setActiveEffect))for(let _i232=0,_effect$value=effect.value,_length232=_effect$value.length;_i232\u003C_length232;_i232++){let active=_effect$value[_i232];if(active.source==value.source)value=active;}}return value;}handleUserEvent(tr,type,conf){return type==\\\"delete\\\"||!conf.activateOnTyping?this.map(tr.changes):new ActiveSource(this.source,1);}handleChange(tr){return tr.changes.touchesRange(cur(tr.startState))?new ActiveSource(this.source,0):this.map(tr.changes);}map(changes){return changes.empty||this.explicitPos\u003C0?this:new ActiveSource(this.source,this.state,changes.mapPos(this.explicitPos));}}class ActiveResult extends ActiveSource{constructor(source,explicitPos,result,from,to){super(source,2,explicitPos);this.result=result;this.from=from;this.to=to;}hasResult(){return true;}handleUserEvent(tr,type,conf){var _a;let result=this.result;if(result.map&&!tr.changes.empty)result=result.map(result,tr.changes);let from=tr.changes.mapPos(this.from),to=tr.changes.mapPos(this.to,1);let pos=cur(tr.state);if((this.explicitPos\u003C0?pos\u003C=from:pos\u003Cthis.from)||pos>to||!result||type==\\\"delete\\\"&&cur(tr.startState)==this.from)return new ActiveSource(this.source,type==\\\"input\\\"&&conf.activateOnTyping?1:0);let explicitPos=this.explicitPos\u003C0?-1:tr.changes.mapPos(this.explicitPos);if(checkValid(result.validFor,tr.state,from,to))return new ActiveResult(this.source,explicitPos,result,from,to);if(result.update&&(result=result.update(result,from,to,new CompletionContext(tr.state,pos,explicitPos>=0))))return new ActiveResult(this.source,explicitPos,result,result.from,(_a=result.to)!==null&&_a!==void 0?_a:cur(tr.state));return new ActiveSource(this.source,1,explicitPos);}handleChange(tr){return tr.changes.touchesRange(this.from,this.to)?new ActiveSource(this.source,0):this.map(tr.changes);}map(mapping){if(mapping.empty)return this;let result=this.result.map?this.result.map(this.result,mapping):this.result;if(!result)return new ActiveSource(this.source,0);return new ActiveResult(this.source,this.explicitPos\u003C0?-1:mapping.mapPos(this.explicitPos),this.result,mapping.mapPos(this.from),mapping.mapPos(this.to,1));}}function checkValid(validFor,state,from,to){if(!validFor)return false;let text=state.sliceDoc(from,to);return typeof validFor==\\\"function\\\"?validFor(text,from,to,state):ensureAnchor(validFor,true).test(text);}const setActiveEffect=StateEffect.define({map(sources,mapping){return sources.map(s=>s.map(mapping));}});const setSelectedEffect=StateEffect.define();const completionState=StateField.define({create(){return CompletionState.start();},update(value,tr){return value.update(tr);},provide:f=>[showTooltip.from(f,val=>val.tooltip),EditorView.contentAttributes.from(f,state=>state.attrs)]});function applyCompletion(view,option){const apply=option.completion.apply||option.completion.label;let result=view.state.field(completionState).active.find(a=>a.source==option.source);if(!(result instanceof ActiveResult))return false;if(typeof apply==\\\"string\\\")view.dispatch(Object.assign(Object.assign({},insertCompletionText(view.state,apply,result.from,result.to)),{annotations:pickedCompletion.of(option.completion)}));else apply(view,option.completion,result.from,result.to);return true;}const createTooltip=completionTooltip(completionState,applyCompletion);function moveCompletionSelection(forward,by=\\\"option\\\"){return view=>{let cState=view.state.field(completionState,false);if(!cState||!cState.open||cState.open.disabled||Date.now()-cState.open.timestamp\u003Cview.state.facet(completionConfig).interactionDelay)return false;let step=1,tooltip;if(by==\\\"page\\\"&&(tooltip=getTooltip(view,cState.open.tooltip)))step=Math.max(2,Math.floor(tooltip.dom.offsetHeight/tooltip.dom.querySelector(\\\"li\\\").offsetHeight)-1);let{length}=cState.open.options;let selected=cState.open.selected>-1?cState.open.selected+step*(forward?1:-1):forward?0:length-1;if(selected\u003C0)selected=by==\\\"page\\\"?0:length-1;else if(selected>=length)selected=by==\\\"page\\\"?length-1:0;view.dispatch({effects:setSelectedEffect.of(selected)});return true;};}const acceptCompletion=view=>{let cState=view.state.field(completionState,false);if(view.state.readOnly||!cState||!cState.open||cState.open.selected\u003C0||cState.open.disabled||Date.now()-cState.open.timestamp\u003Cview.state.facet(completionConfig).interactionDelay)return false;return applyCompletion(view,cState.open.options[cState.open.selected]);};const startCompletion=view=>{let cState=view.state.field(completionState,false);if(!cState)return false;view.dispatch({effects:startCompletionEffect.of(true)});return true;};const closeCompletion=view=>{let cState=view.state.field(completionState,false);if(!cState||!cState.active.some(a=>a.state!=0))return false;view.dispatch({effects:closeCompletionEffect.of(null)});return true;};class RunningQuery{constructor(active,context){this.active=active;this.context=context;this.time=Date.now();this.updates=[];this.done=undefined;}}const MaxUpdateCount=50,MinAbortTime=1000;const completionPlugin=ViewPlugin.fromClass(class{constructor(view){this.view=view;this.debounceUpdate=-1;this.running=[];this.debounceAccept=-1;this.pendingStart=false;this.composing=0;for(let _i233=0,_view$state$field$act=view.state.field(completionState).active,_length233=_view$state$field$act.length;_i233\u003C_length233;_i233++){let active=_view$state$field$act[_i233];if(active.state==1)this.startQuery(active);}}update(update){let cState=update.state.field(completionState);if(!update.selectionSet&&!update.docChanged&&update.startState.field(completionState)==cState)return;let doesReset=update.transactions.some(tr=>{return(tr.selection||tr.docChanged)&&!getUserEvent(tr);});for(let i=0;i\u003Cthis.running.length;i++){let query=this.running[i];if(doesReset||query.updates.length+update.transactions.length>MaxUpdateCount&&Date.now()-query.time>MinAbortTime){for(let _i234=0,_query$context$abortL=query.context.abortListeners,_length234=_query$context$abortL.length;_i234\u003C_length234;_i234++){let handler=_query$context$abortL[_i234];try{handler();}catch(e){logException(this.view.state,e);}}query.context.abortListeners=null;this.running.splice(i--,1);}else{query.updates.push(...update.transactions);}}if(this.debounceUpdate>-1)clearTimeout(this.debounceUpdate);if(update.transactions.some(tr=>tr.effects.some(e=>e.is(startCompletionEffect))))this.pendingStart=true;let delay=this.pendingStart?50:update.state.facet(completionConfig).activateOnTypingDelay;this.debounceUpdate=cState.active.some(a=>a.state==1&&!this.running.some(q=>q.active.source==a.source))?setTimeout(()=>this.startUpdate(),delay):-1;if(this.composing!=0)for(let _i235=0,_update$transactions2=update.transactions,_length235=_update$transactions2.length;_i235\u003C_length235;_i235++){let tr=_update$transactions2[_i235];if(getUserEvent(tr)==\\\"input\\\")this.composing=2;else if(this.composing==2&&tr.selection)this.composing=3;}}startUpdate(){this.debounceUpdate=-1;this.pendingStart=false;let{state}=this.view,cState=state.field(completionState);for(let _i236=0,_cState$active=cState.active,_length236=_cState$active.length;_i236\u003C_length236;_i236++){let active=_cState$active[_i236];if(active.state==1&&!this.running.some(r=>r.active.source==active.source))this.startQuery(active);}}startQuery(active){let{state}=this.view,pos=cur(state);let context=new CompletionContext(state,pos,active.explicitPos==pos);let pending=new RunningQuery(active,context);this.running.push(pending);Promise.resolve(active.source(context)).then(result=>{if(!pending.context.aborted){pending.done=result||null;this.scheduleAccept();}},err=>{this.view.dispatch({effects:closeCompletionEffect.of(null)});logException(this.view.state,err);});}scheduleAccept(){if(this.running.every(q=>q.done!==undefined))this.accept();else if(this.debounceAccept\u003C0)this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(completionConfig).updateSyncTime);}accept(){var _a;if(this.debounceAccept>-1)clearTimeout(this.debounceAccept);this.debounceAccept=-1;let updated=[];let conf=this.view.state.facet(completionConfig);for(let i=0;i\u003Cthis.running.length;i++){let query=this.running[i];if(query.done===undefined)continue;this.running.splice(i--,1);if(query.done){let active=new ActiveResult(query.active.source,query.active.explicitPos,query.done,query.done.from,(_a=query.done.to)!==null&&_a!==void 0?_a:cur(query.updates.length?query.updates[0].startState:this.view.state));for(let _i237=0,_query$updates=query.updates,_length237=_query$updates.length;_i237\u003C_length237;_i237++){let tr=_query$updates[_i237];active=active.update(tr,conf);}if(active.hasResult()){updated.push(active);continue;}}let current=this.view.state.field(completionState).active.find(a=>a.source==query.active.source);if(current&¤t.state==1){if(query.done==null){let active=new ActiveSource(query.active.source,0);for(let _i238=0,_query$updates2=query.updates,_length238=_query$updates2.length;_i238\u003C_length238;_i238++){let tr=_query$updates2[_i238];active=active.update(tr,conf);}if(active.state!=1)updated.push(active);}else{this.startQuery(current);}}}if(updated.length)this.view.dispatch({effects:setActiveEffect.of(updated)});}},{eventHandlers:{blur(event){let state=this.view.state.field(completionState,false);if(state&&state.tooltip&&this.view.state.facet(completionConfig).closeOnBlur){let dialog=state.open&&getTooltip(this.view,state.open.tooltip);if(!dialog||!dialog.dom.contains(event.relatedTarget))setTimeout(()=>this.view.dispatch({effects:closeCompletionEffect.of(null)}),10);}},compositionstart(){this.composing=1;},compositionend(){if(this.composing==3){setTimeout(()=>this.view.dispatch({effects:startCompletionEffect.of(false)}),20);}this.composing=0;}}});const windows=typeof navigator==\\\"object\\\"&&/Win/.test(navigator.platform);const commitCharacters=Prec.highest(EditorView.domEventHandlers({keydown(event,view){let field=view.state.field(completionState,false);if(!field||!field.open||field.open.disabled||field.open.selected\u003C0||event.key.length>1||event.ctrlKey&&!(windows&&event.altKey)||event.metaKey)return false;let option=field.open.options[field.open.selected];let result=field.active.find(a=>a.source==option.source);let commitChars=option.completion.commitCharacters||result.result.commitCharacters;if(commitChars&&commitChars.indexOf(event.key)>-1)applyCompletion(view,option);return false;}}));const baseTheme$2=EditorView.baseTheme({\\\".cm-tooltip.cm-tooltip-autocomplete\\\":{\\\"& > ul\\\":{fontFamily:\\\"monospace\\\",whiteSpace:\\\"nowrap\\\",overflow:\\\"hidden auto\\\",maxWidth_fallback:\\\"700px\\\",maxWidth:\\\"min(700px, 95vw)\\\",minWidth:\\\"250px\\\",maxHeight:\\\"10em\\\",height:\\\"100%\\\",listStyle:\\\"none\\\",margin:0,padding:0,\\\"& > li, & > completion-section\\\":{padding:\\\"1px 3px\\\",lineHeight:1.2},\\\"& > li\\\":{overflowX:\\\"hidden\\\",textOverflow:\\\"ellipsis\\\",cursor:\\\"pointer\\\"},\\\"& > completion-section\\\":{display:\\\"list-item\\\",borderBottom:\\\"1px solid silver\\\",paddingLeft:\\\"0.5em\\\",opacity:0.7}}},\\\"&light .cm-tooltip-autocomplete ul li[aria-selected]\\\":{background:\\\"#17c\\\",color:\\\"white\\\"},\\\"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]\\\":{background:\\\"#777\\\"},\\\"&dark .cm-tooltip-autocomplete ul li[aria-selected]\\\":{background:\\\"#347\\\",color:\\\"white\\\"},\\\"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]\\\":{background:\\\"#444\\\"},\\\".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after\\\":{content:'\\\"···\\\"',opacity:0.5,display:\\\"block\\\",textAlign:\\\"center\\\"},\\\".cm-tooltip.cm-completionInfo\\\":{position:\\\"absolute\\\",padding:\\\"3px 9px\\\",width:\\\"max-content\\\",maxWidth:`${400}px`,boxSizing:\\\"border-box\\\"},\\\".cm-completionInfo.cm-completionInfo-left\\\":{right:\\\"100%\\\"},\\\".cm-completionInfo.cm-completionInfo-right\\\":{left:\\\"100%\\\"},\\\".cm-completionInfo.cm-completionInfo-left-narrow\\\":{right:`${30}px`},\\\".cm-completionInfo.cm-completionInfo-right-narrow\\\":{left:`${30}px`},\\\"&light .cm-snippetField\\\":{backgroundColor:\\\"#00000022\\\"},\\\"&dark .cm-snippetField\\\":{backgroundColor:\\\"#ffffff22\\\"},\\\".cm-snippetFieldPosition\\\":{verticalAlign:\\\"text-top\\\",width:0,height:\\\"1.15em\\\",display:\\\"inline-block\\\",margin:\\\"0 -0.7px -.7em\\\",borderLeft:\\\"1.4px dotted #888\\\"},\\\".cm-completionMatchedText\\\":{textDecoration:\\\"underline\\\"},\\\".cm-completionDetail\\\":{marginLeft:\\\"0.5em\\\",fontStyle:\\\"italic\\\"},\\\".cm-completionIcon\\\":{fontSize:\\\"90%\\\",width:\\\".8em\\\",display:\\\"inline-block\\\",textAlign:\\\"center\\\",paddingRight:\\\".6em\\\",opacity:\\\"0.6\\\",boxSizing:\\\"content-box\\\"},\\\".cm-completionIcon-function, .cm-completionIcon-method\\\":{\\\"&:after\\\":{content:\\\"'ƒ'\\\"}},\\\".cm-completionIcon-class\\\":{\\\"&:after\\\":{content:\\\"'○'\\\"}},\\\".cm-completionIcon-interface\\\":{\\\"&:after\\\":{content:\\\"'◌'\\\"}},\\\".cm-completionIcon-variable\\\":{\\\"&:after\\\":{content:\\\"'𝑥'\\\"}},\\\".cm-completionIcon-constant\\\":{\\\"&:after\\\":{content:\\\"'𝐶'\\\"}},\\\".cm-completionIcon-type\\\":{\\\"&:after\\\":{content:\\\"'𝑡'\\\"}},\\\".cm-completionIcon-enum\\\":{\\\"&:after\\\":{content:\\\"'∪'\\\"}},\\\".cm-completionIcon-property\\\":{\\\"&:after\\\":{content:\\\"'□'\\\"}},\\\".cm-completionIcon-keyword\\\":{\\\"&:after\\\":{content:\\\"'🔑\\\\uFE0E'\\\"}},\\\".cm-completionIcon-namespace\\\":{\\\"&:after\\\":{content:\\\"'▢'\\\"}},\\\".cm-completionIcon-text\\\":{\\\"&:after\\\":{content:\\\"'abc'\\\",fontSize:\\\"50%\\\",verticalAlign:\\\"middle\\\"}}});class FieldPos{constructor(field,line,from,to){this.field=field;this.line=line;this.from=from;this.to=to;}}class FieldRange{constructor(field,from,to){this.field=field;this.from=from;this.to=to;}map(changes){let from=changes.mapPos(this.from,-1,MapMode.TrackDel);let to=changes.mapPos(this.to,1,MapMode.TrackDel);return from==null||to==null?null:new FieldRange(this.field,from,to);}}class Snippet{constructor(lines,fieldPositions){this.lines=lines;this.fieldPositions=fieldPositions;}instantiate(state,pos){let text=[],lineStart=[pos];let lineObj=state.doc.lineAt(pos),baseIndent=/^\\\\s*/.exec(lineObj.text)[0];for(let _i239=0,_this$lines=this.lines,_length239=_this$lines.length;_i239\u003C_length239;_i239++){let line=_this$lines[_i239];if(text.length){let indent=baseIndent,tabs=/^\\\\t*/.exec(line)[0].length;for(let i=0;i\u003Ctabs;i++)indent+=state.facet(indentUnit);lineStart.push(pos+indent.length-tabs);line=indent+line.slice(tabs);}text.push(line);pos+=line.length+1;}let ranges=this.fieldPositions.map(pos=>new FieldRange(pos.field,lineStart[pos.line]+pos.from,lineStart[pos.line]+pos.to));return{text,ranges};}static parse(template){let fields=[];let lines=[],positions=[],m;for(let _i240=0,_template$split=template.split(/\\\\r\\\\n?|\\\\n/),_length240=_template$split.length;_i240\u003C_length240;_i240++){let line=_template$split[_i240];while(m=/[#$]\\\\{(?:(\\\\d+)(?::([^}]*))?|([^}]*))\\\\}/.exec(line)){let seq=m[1]?+m[1]:null,name=m[2]||m[3]||\\\"\\\",found=-1;for(let i=0;i\u003Cfields.length;i++){if(seq!=null?fields[i].seq==seq:name?fields[i].name==name:false)found=i;}if(found\u003C0){let i=0;while(i\u003Cfields.length&&(seq==null||fields[i].seq!=null&&fields[i].seq\u003Cseq))i++;fields.splice(i,0,{seq,name});found=i;for(let _i241=0,_length241=positions.length;_i241\u003C_length241;_i241++){let pos=positions[_i241];if(pos.field>=found)pos.field++;}}positions.push(new FieldPos(found,lines.length,m.index,m.index+name.length));line=line.slice(0,m.index)+name+line.slice(m.index+m[0].length);}for(let esc;esc=/\\\\\\\\([{}])/.exec(line);){line=line.slice(0,esc.index)+esc[1]+line.slice(esc.index+esc[0].length);for(let _i242=0,_length242=positions.length;_i242\u003C_length242;_i242++){let pos=positions[_i242];if(pos.line==lines.length&&pos.from>esc.index){pos.from--;pos.to--;}}}lines.push(line);}return new Snippet(lines,positions);}}let fieldMarker=Decoration.widget({widget:new class extends WidgetType{toDOM(){let span=document.createElement(\\\"span\\\");span.className=\\\"cm-snippetFieldPosition\\\";return span;}ignoreEvent(){return false;}}()});let fieldRange=Decoration.mark({class:\\\"cm-snippetField\\\"});class ActiveSnippet{constructor(ranges,active){this.ranges=ranges;this.active=active;this.deco=Decoration.set(ranges.map(r=>(r.from==r.to?fieldMarker:fieldRange).range(r.from,r.to)));}map(changes){let ranges=[];for(let _i243=0,_this$ranges=this.ranges,_length243=_this$ranges.length;_i243\u003C_length243;_i243++){let r=_this$ranges[_i243];let mapped=r.map(changes);if(!mapped)return null;ranges.push(mapped);}return new ActiveSnippet(ranges,this.active);}selectionInsideField(sel){return sel.ranges.every(range=>this.ranges.some(r=>r.field==this.active&&r.from\u003C=range.from&&r.to>=range.to));}}const setActive=StateEffect.define({map(value,changes){return value&&value.map(changes);}});const moveToField=StateEffect.define();const snippetState=StateField.define({create(){return null;},update(value,tr){for(let _i244=0,_tr$effects12=tr.effects,_length244=_tr$effects12.length;_i244\u003C_length244;_i244++){let effect=_tr$effects12[_i244];if(effect.is(setActive))return effect.value;if(effect.is(moveToField)&&value)return new ActiveSnippet(value.ranges,effect.value);}if(value&&tr.docChanged)value=value.map(tr.changes);if(value&&tr.selection&&!value.selectionInsideField(tr.selection))value=null;return value;},provide:f=>EditorView.decorations.from(f,val=>val?val.deco:Decoration.none)});function fieldSelection(ranges,field){return EditorSelection.create(ranges.filter(r=>r.field==field).map(r=>EditorSelection.range(r.from,r.to)));}function snippet(template){let snippet=Snippet.parse(template);return(editor,completion,from,to)=>{let{text,ranges}=snippet.instantiate(editor.state,from);let spec={changes:{from,to,insert:Text$1.of(text)},scrollIntoView:true,annotations:completion?[pickedCompletion.of(completion),Transaction.userEvent.of(\\\"input.complete\\\")]:undefined};if(ranges.length)spec.selection=fieldSelection(ranges,0);if(ranges.some(r=>r.field>0)){let active=new ActiveSnippet(ranges,0);let effects=spec.effects=[setActive.of(active)];if(editor.state.field(snippetState,false)===undefined)effects.push(StateEffect.appendConfig.of([snippetState,addSnippetKeymap,snippetPointerHandler,baseTheme$2]));}editor.dispatch(editor.state.update(spec));};}function moveField(dir){return({state,dispatch})=>{let active=state.field(snippetState,false);if(!active||dir\u003C0&&active.active==0)return false;let next=active.active+dir,last=dir>0&&!active.ranges.some(r=>r.field==next+dir);dispatch(state.update({selection:fieldSelection(active.ranges,next),effects:setActive.of(last?null:new ActiveSnippet(active.ranges,next)),scrollIntoView:true}));return true;};}const clearSnippet=({state,dispatch})=>{let active=state.field(snippetState,false);if(!active)return false;dispatch(state.update({effects:setActive.of(null)}));return true;};const nextSnippetField=moveField(1);const prevSnippetField=moveField(-1);function hasNextSnippetField(state){let active=state.field(snippetState,false);return!!(active&&active.ranges.some(r=>r.field==active.active+1));}function hasPrevSnippetField(state){let active=state.field(snippetState,false);return!!(active&&active.active>0);}const defaultSnippetKeymap=[{key:\\\"Tab\\\",run:nextSnippetField,shift:prevSnippetField},{key:\\\"Escape\\\",run:clearSnippet}];const snippetKeymap=Facet.define({combine(maps){return maps.length?maps[0]:defaultSnippetKeymap;}});const addSnippetKeymap=Prec.highest(keymap.compute([snippetKeymap],state=>state.facet(snippetKeymap)));function snippetCompletion(template,completion){return Object.assign(Object.assign({},completion),{apply:snippet(template)});}const snippetPointerHandler=EditorView.domEventHandlers({mousedown(event,view){let active=view.state.field(snippetState,false),pos;if(!active||(pos=view.posAtCoords({x:event.clientX,y:event.clientY}))==null)return false;let match=active.ranges.find(r=>r.from\u003C=pos&&r.to>=pos);if(!match||match.field==active.active)return false;view.dispatch({selection:fieldSelection(active.ranges,match.field),effects:setActive.of(active.ranges.some(r=>r.field>match.field)?new ActiveSnippet(active.ranges,match.field):null),scrollIntoView:true});return true;}});function wordRE(wordChars){let escaped=wordChars.replace(/[\\\\]\\\\-\\\\\\\\]/g,\\\"\\\\\\\\$&\\\");try{return new RegExp(`[\\\\\\\\p{Alphabetic}\\\\\\\\p{Number}_${escaped}]+`,\\\"ug\\\");}catch(_a){return new RegExp(`[\\\\w${escaped}]`,\\\"g\\\");}}function mapRE(re,f){return new RegExp(f(re.source),re.unicode?\\\"u\\\":\\\"\\\");}const wordCaches=Object.create(null);function wordCache(wordChars){return wordCaches[wordChars]||(wordCaches[wordChars]=new WeakMap());}function storeWords(doc,wordRE,result,seen,ignoreAt){for(let lines=doc.iterLines(),pos=0;!lines.next().done;){let{value}=lines,m;wordRE.lastIndex=0;while(m=wordRE.exec(value)){if(!seen[m[0]]&&pos+m.index!=ignoreAt){result.push({type:\\\"text\\\",label:m[0]});seen[m[0]]=true;if(result.length>=2000)return;}}pos+=value.length+1;}}function collectWords(doc,cache,wordRE,to,ignoreAt){let big=doc.length>=1000;let cached=big&&cache.get(doc);if(cached)return cached;let result=[],seen=Object.create(null);if(doc.children){let pos=0;for(let _i245=0,_doc$children=doc.children,_length245=_doc$children.length;_i245\u003C_length245;_i245++){let ch=_doc$children[_i245];if(ch.length>=1000){for(let _i246=0,_collectWords=collectWords(ch,cache,wordRE,to-pos,ignoreAt-pos),_length246=_collectWords.length;_i246\u003C_length246;_i246++){let c=_collectWords[_i246];if(!seen[c.label]){seen[c.label]=true;result.push(c);}}}else{storeWords(ch,wordRE,result,seen,ignoreAt-pos);}pos+=ch.length+1;}}else{storeWords(doc,wordRE,result,seen,ignoreAt);}if(big&&result.length\u003C2000)cache.set(doc,result);return result;}const completeAnyWord=context=>{let wordChars=context.state.languageDataAt(\\\"wordChars\\\",context.pos).join(\\\"\\\");let re=wordRE(wordChars);let token=context.matchBefore(mapRE(re,s=>s+\\\"$\\\"));if(!token&&!context.explicit)return null;let from=token?token.from:context.pos;let options=collectWords(context.state.doc,wordCache(wordChars),re,50000,from);return{from,options,validFor:mapRE(re,s=>\\\"^\\\"+s)};};const defaults$1={brackets:[\\\"(\\\",\\\"[\\\",\\\"{\\\",\\\"'\\\",'\\\"'],before:\\\")]}:;>\\\",stringPrefixes:[]};const closeBracketEffect=StateEffect.define({map(value,mapping){let mapped=mapping.mapPos(value,-1,MapMode.TrackAfter);return mapped==null?undefined:mapped;}});const closedBracket=new class extends RangeValue{}();closedBracket.startSide=1;closedBracket.endSide=-1;const bracketState=StateField.define({create(){return RangeSet.empty;},update(value,tr){value=value.map(tr.changes);if(tr.selection){let line=tr.state.doc.lineAt(tr.selection.main.head);value=value.update({filter:from=>from>=line.from&&from\u003C=line.to});}for(let _i247=0,_tr$effects13=tr.effects,_length247=_tr$effects13.length;_i247\u003C_length247;_i247++){let effect=_tr$effects13[_i247];if(effect.is(closeBracketEffect))value=value.update({add:[closedBracket.range(effect.value,effect.value+1)]});}return value;}});function closeBrackets(){return[inputHandler,bracketState];}const definedClosing=\\\"()[]{}\u003C>\\\";function closing(ch){for(let i=0;i\u003CdefinedClosing.length;i+=2)if(definedClosing.charCodeAt(i)==ch)return definedClosing.charAt(i+1);return fromCodePoint(ch\u003C128?ch:ch+1);}function config(state,pos){return state.languageDataAt(\\\"closeBrackets\\\",pos)[0]||defaults$1;}const android$1=typeof navigator==\\\"object\\\"&&/Android\\\\b/.test(navigator.userAgent);const inputHandler=EditorView.inputHandler.of((view,from,to,insert)=>{if((android$1?view.composing:view.compositionStarted)||view.state.readOnly)return false;let sel=view.state.selection.main;if(insert.length>2||insert.length==2&&codePointSize(codePointAt(insert,0))==1||from!=sel.from||to!=sel.to)return false;let tr=insertBracket(view.state,insert);if(!tr)return false;view.dispatch(tr);return true;});const deleteBracketPair=({state,dispatch})=>{if(state.readOnly)return false;let conf=config(state,state.selection.main.head);let tokens=conf.brackets||defaults$1.brackets;let dont=null,changes=state.changeByRange(range=>{if(range.empty){let before=prevChar(state.doc,range.head);for(let _i248=0,_length248=tokens.length;_i248\u003C_length248;_i248++){let token=tokens[_i248];if(token==before&&nextChar(state.doc,range.head)==closing(codePointAt(token,0)))return{changes:{from:range.head-token.length,to:range.head+token.length},range:EditorSelection.cursor(range.head-token.length)};}}return{range:dont=range};});if(!dont)dispatch(state.update(changes,{scrollIntoView:true,userEvent:\\\"delete.backward\\\"}));return!dont;};const closeBracketsKeymap=[{key:\\\"Backspace\\\",run:deleteBracketPair}];function insertBracket(state,bracket){let conf=config(state,state.selection.main.head);let tokens=conf.brackets||defaults$1.brackets;for(let _i249=0,_length249=tokens.length;_i249\u003C_length249;_i249++){let tok=tokens[_i249];let closed=closing(codePointAt(tok,0));if(bracket==tok)return closed==tok?handleSame(state,tok,tokens.indexOf(tok+tok+tok)>-1,conf):handleOpen(state,tok,closed,conf.before||defaults$1.before);if(bracket==closed&&closedBracketAt(state,state.selection.main.from))return handleClose(state,tok,closed);}return null;}function closedBracketAt(state,pos){let found=false;state.field(bracketState).between(0,state.doc.length,from=>{if(from==pos)found=true;});return found;}function nextChar(doc,pos){let next=doc.sliceString(pos,pos+2);return next.slice(0,codePointSize(codePointAt(next,0)));}function prevChar(doc,pos){let prev=doc.sliceString(pos-2,pos);return codePointSize(codePointAt(prev,0))==prev.length?prev:prev.slice(1);}function handleOpen(state,open,close,closeBefore){let dont=null,changes=state.changeByRange(range=>{if(!range.empty)return{changes:[{insert:open,from:range.from},{insert:close,from:range.to}],effects:closeBracketEffect.of(range.to+open.length),range:EditorSelection.range(range.anchor+open.length,range.head+open.length)};let next=nextChar(state.doc,range.head);if(!next||/\\\\s/.test(next)||closeBefore.indexOf(next)>-1)return{changes:{insert:open+close,from:range.head},effects:closeBracketEffect.of(range.head+open.length),range:EditorSelection.cursor(range.head+open.length)};return{range:dont=range};});return dont?null:state.update(changes,{scrollIntoView:true,userEvent:\\\"input.type\\\"});}function handleClose(state,_open,close){let dont=null,changes=state.changeByRange(range=>{if(range.empty&&nextChar(state.doc,range.head)==close)return{changes:{from:range.head,to:range.head+close.length,insert:close},range:EditorSelection.cursor(range.head+close.length)};return dont={range};});return dont?null:state.update(changes,{scrollIntoView:true,userEvent:\\\"input.type\\\"});}function handleSame(state,token,allowTriple,config){let stringPrefixes=config.stringPrefixes||defaults$1.stringPrefixes;let dont=null,changes=state.changeByRange(range=>{if(!range.empty)return{changes:[{insert:token,from:range.from},{insert:token,from:range.to}],effects:closeBracketEffect.of(range.to+token.length),range:EditorSelection.range(range.anchor+token.length,range.head+token.length)};let pos=range.head,next=nextChar(state.doc,pos),start;if(next==token){if(nodeStart(state,pos)){return{changes:{insert:token+token,from:pos},effects:closeBracketEffect.of(pos+token.length),range:EditorSelection.cursor(pos+token.length)};}else if(closedBracketAt(state,pos)){let isTriple=allowTriple&&state.sliceDoc(pos,pos+token.length*3)==token+token+token;let content=isTriple?token+token+token:token;return{changes:{from:pos,to:pos+content.length,insert:content},range:EditorSelection.cursor(pos+content.length)};}}else if(allowTriple&&state.sliceDoc(pos-2*token.length,pos)==token+token&&(start=canStartStringAt(state,pos-2*token.length,stringPrefixes))>-1&&nodeStart(state,start)){return{changes:{insert:token+token+token+token,from:pos},effects:closeBracketEffect.of(pos+token.length),range:EditorSelection.cursor(pos+token.length)};}else if(state.charCategorizer(pos)(next)!=CharCategory.Word){if(canStartStringAt(state,pos,stringPrefixes)>-1&&!probablyInString(state,pos,token,stringPrefixes))return{changes:{insert:token+token,from:pos},effects:closeBracketEffect.of(pos+token.length),range:EditorSelection.cursor(pos+token.length)};}return{range:dont=range};});return dont?null:state.update(changes,{scrollIntoView:true,userEvent:\\\"input.type\\\"});}function nodeStart(state,pos){let tree=syntaxTree(state).resolveInner(pos+1);return tree.parent&&tree.from==pos;}function probablyInString(state,pos,quoteToken,prefixes){let node=syntaxTree(state).resolveInner(pos,-1);let maxPrefix=prefixes.reduce((m,p)=>Math.max(m,p.length),0);for(let i=0;i\u003C5;i++){let start=state.sliceDoc(node.from,Math.min(node.to,node.from+quoteToken.length+maxPrefix));let quotePos=start.indexOf(quoteToken);if(!quotePos||quotePos>-1&&prefixes.indexOf(start.slice(0,quotePos))>-1){let first=node.firstChild;while(first&&first.from==node.from&&first.to-first.from>quoteToken.length+quotePos){if(state.sliceDoc(first.to-quoteToken.length,first.to)==quoteToken)return false;first=first.firstChild;}return true;}let parent=node.to==pos&&node.parent;if(!parent)break;node=parent;}return false;}function canStartStringAt(state,pos,prefixes){let charCat=state.charCategorizer(pos);if(charCat(state.sliceDoc(pos-1,pos))!=CharCategory.Word)return pos;for(let _i250=0,_length250=prefixes.length;_i250\u003C_length250;_i250++){let prefix=prefixes[_i250];let start=pos-prefix.length;if(state.sliceDoc(start,pos)==prefix&&charCat(state.sliceDoc(start-1,start))!=CharCategory.Word)return start;}return-1;}function autocompletion(config={}){return[commitCharacters,completionState,completionConfig.of(config),completionPlugin,completionKeymapExt,baseTheme$2];}const completionKeymap=[{key:\\\"Ctrl-Space\\\",run:startCompletion},{key:\\\"Escape\\\",run:closeCompletion},{key:\\\"ArrowDown\\\",run:moveCompletionSelection(true)},{key:\\\"ArrowUp\\\",run:moveCompletionSelection(false)},{key:\\\"PageDown\\\",run:moveCompletionSelection(true,\\\"page\\\")},{key:\\\"PageUp\\\",run:moveCompletionSelection(false,\\\"page\\\")},{key:\\\"Enter\\\",run:acceptCompletion}];const completionKeymapExt=Prec.highest(keymap.computeN([completionConfig],state=>state.facet(completionConfig).defaultKeymap?[completionKeymap]:[]));function completionStatus(state){let cState=state.field(completionState,false);return cState&&cState.active.some(a=>a.state==1)?\\\"pending\\\":cState&&cState.active.some(a=>a.state!=0)?\\\"active\\\":null;}const completionArrayCache=new WeakMap();function currentCompletions(state){var _a;let open=(_a=state.field(completionState,false))===null||_a===void 0?void 0:_a.open;if(!open||open.disabled)return[];let completions=completionArrayCache.get(open.options);if(!completions)completionArrayCache.set(open.options,completions=open.options.map(o=>o.completion));return completions;}function selectedCompletion(state){var _a;let open=(_a=state.field(completionState,false))===null||_a===void 0?void 0:_a.open;return open&&!open.disabled&&open.selected>=0?open.options[open.selected].completion:null;}function selectedCompletionIndex(state){var _a;let open=(_a=state.field(completionState,false))===null||_a===void 0?void 0:_a.open;return open&&!open.disabled&&open.selected>=0?open.selected:null;}function setSelectedCompletion(index){return setSelectedEffect.of(index);}var _m5=Object.freeze({__proto__:null,CompletionContext:CompletionContext,acceptCompletion:acceptCompletion,autocompletion:autocompletion,clearSnippet:clearSnippet,closeBrackets:closeBrackets,closeBracketsKeymap:closeBracketsKeymap,closeCompletion:closeCompletion,completeAnyWord:completeAnyWord,completeFromList:completeFromList,completionKeymap:completionKeymap,completionStatus:completionStatus,currentCompletions:currentCompletions,deleteBracketPair:deleteBracketPair,hasNextSnippetField:hasNextSnippetField,hasPrevSnippetField:hasPrevSnippetField,ifIn:ifIn,ifNotIn:ifNotIn,insertBracket:insertBracket,insertCompletionText:insertCompletionText,moveCompletionSelection:moveCompletionSelection,nextSnippetField:nextSnippetField,pickedCompletion:pickedCompletion,prevSnippetField:prevSnippetField,selectedCompletion:selectedCompletion,selectedCompletionIndex:selectedCompletionIndex,setSelectedCompletion:setSelectedCompletion,snippet:snippet,snippetCompletion:snippetCompletion,snippetKeymap:snippetKeymap,startCompletion:startCompletion});class SelectedDiagnostic{constructor(from,to,diagnostic){this.from=from;this.to=to;this.diagnostic=diagnostic;}}class LintState{constructor(diagnostics,panel,selected){this.diagnostics=diagnostics;this.panel=panel;this.selected=selected;}static init(diagnostics,panel,state){let markedDiagnostics=diagnostics;let diagnosticFilter=state.facet(lintConfig).markerFilter;if(diagnosticFilter)markedDiagnostics=diagnosticFilter(markedDiagnostics,state);let ranges=Decoration.set(markedDiagnostics.map(d=>{return d.from==d.to||d.from==d.to-1&&state.doc.lineAt(d.from).to==d.from?Decoration.widget({widget:new DiagnosticWidget(d),diagnostic:d}).range(d.from):Decoration.mark({attributes:{class:\\\"cm-lintRange cm-lintRange-\\\"+d.severity+(d.markClass?\\\" \\\"+d.markClass:\\\"\\\")},diagnostic:d,inclusive:true}).range(d.from,d.to);}),true);return new LintState(ranges,panel,findDiagnostic(ranges));}}function findDiagnostic(diagnostics,diagnostic=null,after=0){let found=null;diagnostics.between(after,1e9,(from,to,{spec})=>{if(diagnostic&&spec.diagnostic!=diagnostic)return;found=new SelectedDiagnostic(from,to,spec.diagnostic);return false;});return found;}function hideTooltip(tr,tooltip){let line=tr.startState.doc.lineAt(tooltip.pos);return!!(tr.effects.some(e=>e.is(setDiagnosticsEffect))||tr.changes.touchesRange(line.from,line.to));}function maybeEnableLint(state,effects){return state.field(lintState,false)?effects:effects.concat(StateEffect.appendConfig.of(lintExtensions));}function setDiagnostics(state,diagnostics){return{effects:maybeEnableLint(state,[setDiagnosticsEffect.of(diagnostics)])};}const setDiagnosticsEffect=StateEffect.define();const togglePanel=StateEffect.define();const movePanelSelection=StateEffect.define();const lintState=StateField.define({create(){return new LintState(Decoration.none,null,null);},update(value,tr){if(tr.docChanged){let mapped=value.diagnostics.map(tr.changes),selected=null;if(value.selected){let selPos=tr.changes.mapPos(value.selected.from,1);selected=findDiagnostic(mapped,value.selected.diagnostic,selPos)||findDiagnostic(mapped,null,selPos);}value=new LintState(mapped,value.panel,selected);}for(let _i251=0,_tr$effects14=tr.effects,_length251=_tr$effects14.length;_i251\u003C_length251;_i251++){let effect=_tr$effects14[_i251];if(effect.is(setDiagnosticsEffect)){value=LintState.init(effect.value,value.panel,tr.state);}else if(effect.is(togglePanel)){value=new LintState(value.diagnostics,effect.value?LintPanel.open:null,value.selected);}else if(effect.is(movePanelSelection)){value=new LintState(value.diagnostics,value.panel,effect.value);}}return value;},provide:f=>[showPanel.from(f,val=>val.panel),EditorView.decorations.from(f,s=>s.diagnostics)]});function diagnosticCount(state){let lint=state.field(lintState,false);return lint?lint.diagnostics.size:0;}const activeMark=Decoration.mark({class:\\\"cm-lintRange cm-lintRange-active\\\",inclusive:true});function lintTooltip(view,pos,side){let{diagnostics}=view.state.field(lintState);let found=[],stackStart=2e8,stackEnd=0;diagnostics.between(pos-(side\u003C0?1:0),pos+(side>0?1:0),(from,to,{spec})=>{if(pos>=from&&pos\u003C=to&&(from==to||(pos>from||side>0)&&(pos\u003Cto||side\u003C0))){found.push(spec.diagnostic);stackStart=Math.min(from,stackStart);stackEnd=Math.max(to,stackEnd);}});let diagnosticFilter=view.state.facet(lintConfig).tooltipFilter;if(diagnosticFilter)found=diagnosticFilter(found,view.state);if(!found.length)return null;return{pos:stackStart,end:stackEnd,above:view.state.doc.lineAt(stackStart).to\u003CstackEnd,create(){return{dom:diagnosticsTooltip(view,found)};}};}function diagnosticsTooltip(view,diagnostics){return crelt(\\\"ul\\\",{class:\\\"cm-tooltip-lint\\\"},diagnostics.map(d=>renderDiagnostic(view,d,false)));}const openLintPanel=view=>{let field=view.state.field(lintState,false);if(!field||!field.panel)view.dispatch({effects:maybeEnableLint(view.state,[togglePanel.of(true)])});let panel=getPanel(view,LintPanel.open);if(panel)panel.dom.querySelector(\\\".cm-panel-lint ul\\\").focus();return true;};const closeLintPanel=view=>{let field=view.state.field(lintState,false);if(!field||!field.panel)return false;view.dispatch({effects:togglePanel.of(false)});return true;};const nextDiagnostic=view=>{let field=view.state.field(lintState,false);if(!field)return false;let sel=view.state.selection.main,next=field.diagnostics.iter(sel.to+1);if(!next.value){next=field.diagnostics.iter(0);if(!next.value||next.from==sel.from&&next.to==sel.to)return false;}view.dispatch({selection:{anchor:next.from,head:next.to},scrollIntoView:true});return true;};const previousDiagnostic=view=>{let{state}=view,field=state.field(lintState,false);if(!field)return false;let sel=state.selection.main;let prevFrom,prevTo,lastFrom,lastTo;field.diagnostics.between(0,state.doc.length,(from,to)=>{if(to\u003Csel.to&&(prevFrom==null||prevFrom\u003Cfrom)){prevFrom=from;prevTo=to;}if(lastFrom==null||from>lastFrom){lastFrom=from;lastTo=to;}});if(lastFrom==null||prevFrom==null&&lastFrom==sel.from)return false;view.dispatch({selection:{anchor:prevFrom!==null&&prevFrom!==void 0?prevFrom:lastFrom,head:prevTo!==null&&prevTo!==void 0?prevTo:lastTo},scrollIntoView:true});return true;};const lintKeymap=[{key:\\\"Mod-Shift-m\\\",run:openLintPanel,preventDefault:true},{key:\\\"F8\\\",run:nextDiagnostic}];const lintPlugin=ViewPlugin.fromClass(class{constructor(view){this.view=view;this.timeout=-1;this.set=true;let{delay}=view.state.facet(lintConfig);this.lintTime=Date.now()+delay;this.run=this.run.bind(this);this.timeout=setTimeout(this.run,delay);}run(){let now=Date.now();if(now\u003Cthis.lintTime-10){this.timeout=setTimeout(this.run,this.lintTime-now);}else{this.set=false;let{state}=this.view,{sources}=state.facet(lintConfig);if(sources.length)Promise.all(sources.map(source=>Promise.resolve(source(this.view)))).then(annotations=>{let all=annotations.reduce((a,b)=>a.concat(b));if(this.view.state.doc==state.doc)this.view.dispatch(setDiagnostics(this.view.state,all));},error=>{logException(this.view.state,error);});}}update(update){let config=update.state.facet(lintConfig);if(update.docChanged||config!=update.startState.facet(lintConfig)||config.needsRefresh&&config.needsRefresh(update)){this.lintTime=Date.now()+config.delay;if(!this.set){this.set=true;this.timeout=setTimeout(this.run,config.delay);}}}force(){if(this.set){this.lintTime=Date.now();this.run();}}destroy(){clearTimeout(this.timeout);}});const lintConfig=Facet.define({combine(input){return Object.assign({sources:input.map(i=>i.source).filter(x=>x!=null)},combineConfig(input.map(i=>i.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null},{needsRefresh:(a,b)=>!a?b:!b?a:u=>a(u)||b(u)}));}});function linter(source,config={}){return[lintConfig.of({source,config}),lintPlugin,lintExtensions];}function forceLinting(view){let plugin=view.plugin(lintPlugin);if(plugin)plugin.force();}function assignKeys(actions){let assigned=[];if(actions)actions:for(let _i252=0,_length252=actions.length;_i252\u003C_length252;_i252++){let{name}=actions[_i252];for(let i=0;i\u003Cname.length;i++){let ch=name[i];if(/[a-zA-Z]/.test(ch)&&!assigned.some(c=>c.toLowerCase()==ch.toLowerCase())){assigned.push(ch);continue actions;}}assigned.push(\\\"\\\");}return assigned;}function renderDiagnostic(view,diagnostic,inPanel){var _a;let keys=inPanel?assignKeys(diagnostic.actions):[];return crelt(\\\"li\\\",{class:\\\"cm-diagnostic cm-diagnostic-\\\"+diagnostic.severity},crelt(\\\"span\\\",{class:\\\"cm-diagnosticText\\\"},diagnostic.renderMessage?diagnostic.renderMessage():diagnostic.message),(_a=diagnostic.actions)===null||_a===void 0?void 0:_a.map((action,i)=>{let fired=false,click=e=>{e.preventDefault();if(fired)return;fired=true;let found=findDiagnostic(view.state.field(lintState).diagnostics,diagnostic);if(found)action.apply(view,found.from,found.to);};let{name}=action,keyIndex=keys[i]?name.indexOf(keys[i]):-1;let nameElt=keyIndex\u003C0?name:[name.slice(0,keyIndex),crelt(\\\"u\\\",name.slice(keyIndex,keyIndex+1)),name.slice(keyIndex+1)];return crelt(\\\"button\\\",{type:\\\"button\\\",class:\\\"cm-diagnosticAction\\\",onclick:click,onmousedown:click,\\\"aria-label\\\":` Action: ${name}${keyIndex\u003C0?\\\"\\\":` (access key \\\"${keys[i]})\\\"`}.`},nameElt);}),diagnostic.source&&crelt(\\\"div\\\",{class:\\\"cm-diagnosticSource\\\"},diagnostic.source));}class DiagnosticWidget extends WidgetType{constructor(diagnostic){super();this.diagnostic=diagnostic;}eq(other){return other.diagnostic==this.diagnostic;}toDOM(){return crelt(\\\"span\\\",{class:\\\"cm-lintPoint cm-lintPoint-\\\"+this.diagnostic.severity});}}class PanelItem{constructor(view,diagnostic){this.diagnostic=diagnostic;this.id=\\\"item_\\\"+Math.floor(Math.random()*0xffffffff).toString(16);this.dom=renderDiagnostic(view,diagnostic,true);this.dom.id=this.id;this.dom.setAttribute(\\\"role\\\",\\\"option\\\");}}class LintPanel{constructor(view){this.view=view;this.items=[];let onkeydown=event=>{if(event.keyCode==27){closeLintPanel(this.view);this.view.focus();}else if(event.keyCode==38||event.keyCode==33){this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);}else if(event.keyCode==40||event.keyCode==34){this.moveSelection((this.selectedIndex+1)%this.items.length);}else if(event.keyCode==36){this.moveSelection(0);}else if(event.keyCode==35){this.moveSelection(this.items.length-1);}else if(event.keyCode==13){this.view.focus();}else if(event.keyCode>=65&&event.keyCode\u003C=90&&this.selectedIndex>=0){let{diagnostic}=this.items[this.selectedIndex],keys=assignKeys(diagnostic.actions);for(let i=0;i\u003Ckeys.length;i++)if(keys[i].toUpperCase().charCodeAt(0)==event.keyCode){let found=findDiagnostic(this.view.state.field(lintState).diagnostics,diagnostic);if(found)diagnostic.actions[i].apply(view,found.from,found.to);}}else{return;}event.preventDefault();};let onclick=event=>{for(let i=0;i\u003Cthis.items.length;i++){if(this.items[i].dom.contains(event.target))this.moveSelection(i);}};this.list=crelt(\\\"ul\\\",{tabIndex:0,role:\\\"listbox\\\",\\\"aria-label\\\":this.view.state.phrase(\\\"Diagnostics\\\"),onkeydown,onclick});this.dom=crelt(\\\"div\\\",{class:\\\"cm-panel-lint\\\"},this.list,crelt(\\\"button\\\",{type:\\\"button\\\",name:\\\"close\\\",\\\"aria-label\\\":this.view.state.phrase(\\\"close\\\"),onclick:()=>closeLintPanel(this.view)},\\\"×\\\"));this.update();}get selectedIndex(){let selected=this.view.state.field(lintState).selected;if(!selected)return-1;for(let i=0;i\u003Cthis.items.length;i++)if(this.items[i].diagnostic==selected.diagnostic)return i;return-1;}update(){let{diagnostics,selected}=this.view.state.field(lintState);let i=0,needsSync=false,newSelectedItem=null;diagnostics.between(0,this.view.state.doc.length,(_start,_end,{spec})=>{let found=-1,item;for(let j=i;j\u003Cthis.items.length;j++)if(this.items[j].diagnostic==spec.diagnostic){found=j;break;}if(found\u003C0){item=new PanelItem(this.view,spec.diagnostic);this.items.splice(i,0,item);needsSync=true;}else{item=this.items[found];if(found>i){this.items.splice(i,found-i);needsSync=true;}}if(selected&&item.diagnostic==selected.diagnostic){if(!item.dom.hasAttribute(\\\"aria-selected\\\")){item.dom.setAttribute(\\\"aria-selected\\\",\\\"true\\\");newSelectedItem=item;}}else if(item.dom.hasAttribute(\\\"aria-selected\\\")){item.dom.removeAttribute(\\\"aria-selected\\\");}i++;});while(i\u003Cthis.items.length&&!(this.items.length==1&&this.items[0].diagnostic.from\u003C0)){needsSync=true;this.items.pop();}if(this.items.length==0){this.items.push(new PanelItem(this.view,{from:-1,to:-1,severity:\\\"info\\\",message:this.view.state.phrase(\\\"No diagnostics\\\")}));needsSync=true;}if(newSelectedItem){this.list.setAttribute(\\\"aria-activedescendant\\\",newSelectedItem.id);this.view.requestMeasure({key:this,read:()=>({sel:newSelectedItem.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel,panel})=>{let scaleY=panel.height/this.list.offsetHeight;if(sel.top\u003Cpanel.top)this.list.scrollTop-=(panel.top-sel.top)/scaleY;else if(sel.bottom>panel.bottom)this.list.scrollTop+=(sel.bottom-panel.bottom)/scaleY;}});}else if(this.selectedIndex\u003C0){this.list.removeAttribute(\\\"aria-activedescendant\\\");}if(needsSync)this.sync();}sync(){let domPos=this.list.firstChild;function rm(){let prev=domPos;domPos=prev.nextSibling;prev.remove();}for(let _i253=0,_this$items=this.items,_length253=_this$items.length;_i253\u003C_length253;_i253++){let item=_this$items[_i253];if(item.dom.parentNode==this.list){while(domPos!=item.dom)rm();domPos=item.dom.nextSibling;}else{this.list.insertBefore(item.dom,domPos);}}while(domPos)rm();}moveSelection(selectedIndex){if(this.selectedIndex\u003C0)return;let field=this.view.state.field(lintState);let selection=findDiagnostic(field.diagnostics,this.items[selectedIndex].diagnostic);if(!selection)return;this.view.dispatch({selection:{anchor:selection.from,head:selection.to},scrollIntoView:true,effects:movePanelSelection.of(selection)});}static open(view){return new LintPanel(view);}}function svg(content,attrs=`viewBox=\\\"0 0 40 40\\\"`){return`url('data:image/svg+xml,\u003Csvg xmlns=\\\"http://www.w3.org/2000/svg\\\" ${attrs}>${encodeURIComponent(content)}\u003C/svg>')`;}function underline(color){return svg(`\u003Cpath d=\\\"m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0\\\" stroke=\\\"${color}\\\" fill=\\\"none\\\" stroke-width=\\\".7\\\"/>`,`width=\\\"6\\\" height=\\\"3\\\"`);}const baseTheme$1=EditorView.baseTheme({\\\".cm-diagnostic\\\":{padding:\\\"3px 6px 3px 8px\\\",marginLeft:\\\"-1px\\\",display:\\\"block\\\",whiteSpace:\\\"pre-wrap\\\"},\\\".cm-diagnostic-error\\\":{borderLeft:\\\"5px solid #d11\\\"},\\\".cm-diagnostic-warning\\\":{borderLeft:\\\"5px solid orange\\\"},\\\".cm-diagnostic-info\\\":{borderLeft:\\\"5px solid #999\\\"},\\\".cm-diagnostic-hint\\\":{borderLeft:\\\"5px solid #66d\\\"},\\\".cm-diagnosticAction\\\":{font:\\\"inherit\\\",border:\\\"none\\\",padding:\\\"2px 4px\\\",backgroundColor:\\\"#444\\\",color:\\\"white\\\",borderRadius:\\\"3px\\\",marginLeft:\\\"8px\\\",cursor:\\\"pointer\\\"},\\\".cm-diagnosticSource\\\":{fontSize:\\\"70%\\\",opacity:.7},\\\".cm-lintRange\\\":{backgroundPosition:\\\"left bottom\\\",backgroundRepeat:\\\"repeat-x\\\",paddingBottom:\\\"0.7px\\\"},\\\".cm-lintRange-error\\\":{backgroundImage:underline(\\\"#d11\\\")},\\\".cm-lintRange-warning\\\":{backgroundImage:underline(\\\"orange\\\")},\\\".cm-lintRange-info\\\":{backgroundImage:underline(\\\"#999\\\")},\\\".cm-lintRange-hint\\\":{backgroundImage:underline(\\\"#66d\\\")},\\\".cm-lintRange-active\\\":{backgroundColor:\\\"#ffdd9980\\\"},\\\".cm-tooltip-lint\\\":{padding:0,margin:0},\\\".cm-lintPoint\\\":{position:\\\"relative\\\",\\\"&:after\\\":{content:'\\\"\\\"',position:\\\"absolute\\\",bottom:0,left:\\\"-2px\\\",borderLeft:\\\"3px solid transparent\\\",borderRight:\\\"3px solid transparent\\\",borderBottom:\\\"4px solid #d11\\\"}},\\\".cm-lintPoint-warning\\\":{\\\"&:after\\\":{borderBottomColor:\\\"orange\\\"}},\\\".cm-lintPoint-info\\\":{\\\"&:after\\\":{borderBottomColor:\\\"#999\\\"}},\\\".cm-lintPoint-hint\\\":{\\\"&:after\\\":{borderBottomColor:\\\"#66d\\\"}},\\\".cm-panel.cm-panel-lint\\\":{position:\\\"relative\\\",\\\"& ul\\\":{maxHeight:\\\"100px\\\",overflowY:\\\"auto\\\",\\\"& [aria-selected]\\\":{backgroundColor:\\\"#ddd\\\",\\\"& u\\\":{textDecoration:\\\"underline\\\"}},\\\"&:focus [aria-selected]\\\":{background_fallback:\\\"#bdf\\\",backgroundColor:\\\"Highlight\\\",color_fallback:\\\"white\\\",color:\\\"HighlightText\\\"},\\\"& u\\\":{textDecoration:\\\"none\\\"},padding:0,margin:0},\\\"& [name=close]\\\":{position:\\\"absolute\\\",top:\\\"0\\\",right:\\\"2px\\\",background:\\\"inherit\\\",border:\\\"none\\\",font:\\\"inherit\\\",padding:0,margin:0}}});function severityWeight(sev){return sev==\\\"error\\\"?4:sev==\\\"warning\\\"?3:sev==\\\"info\\\"?2:1;}class LintGutterMarker extends GutterMarker{constructor(diagnostics){super();this.diagnostics=diagnostics;this.severity=diagnostics.reduce((max,d)=>severityWeight(max)\u003CseverityWeight(d.severity)?d.severity:max,\\\"hint\\\");}toDOM(view){let elt=document.createElement(\\\"div\\\");elt.className=\\\"cm-lint-marker cm-lint-marker-\\\"+this.severity;let diagnostics=this.diagnostics;let diagnosticsFilter=view.state.facet(lintGutterConfig).tooltipFilter;if(diagnosticsFilter)diagnostics=diagnosticsFilter(diagnostics,view.state);if(diagnostics.length)elt.onmouseover=()=>gutterMarkerMouseOver(view,elt,diagnostics);return elt;}}function trackHoverOn(view,marker){let mousemove=event=>{let rect=marker.getBoundingClientRect();if(event.clientX>rect.left-10&&event.clientX\u003Crect.right+10&&event.clientY>rect.top-10&&event.clientY\u003Crect.bottom+10)return;for(let target=event.target;target;target=target.parentNode){if(target.nodeType==1&&target.classList.contains(\\\"cm-tooltip-lint\\\"))return;}window.removeEventListener(\\\"mousemove\\\",mousemove);if(view.state.field(lintGutterTooltip))view.dispatch({effects:setLintGutterTooltip.of(null)});};window.addEventListener(\\\"mousemove\\\",mousemove);}function gutterMarkerMouseOver(view,marker,diagnostics){function hovered(){let line=view.elementAtHeight(marker.getBoundingClientRect().top+5-view.documentTop);const linePos=view.coordsAtPos(line.from);if(linePos){view.dispatch({effects:setLintGutterTooltip.of({pos:line.from,above:false,create(){return{dom:diagnosticsTooltip(view,diagnostics),getCoords:()=>marker.getBoundingClientRect()};}})});}marker.onmouseout=marker.onmousemove=null;trackHoverOn(view,marker);}let{hoverTime}=view.state.facet(lintGutterConfig);let hoverTimeout=setTimeout(hovered,hoverTime);marker.onmouseout=()=>{clearTimeout(hoverTimeout);marker.onmouseout=marker.onmousemove=null;};marker.onmousemove=()=>{clearTimeout(hoverTimeout);hoverTimeout=setTimeout(hovered,hoverTime);};}function markersForDiagnostics(doc,diagnostics){let byLine=Object.create(null);for(let _i254=0,_length254=diagnostics.length;_i254\u003C_length254;_i254++){let diagnostic=diagnostics[_i254];let line=doc.lineAt(diagnostic.from);(byLine[line.from]||(byLine[line.from]=[])).push(diagnostic);}let markers=[];for(let line in byLine){markers.push(new LintGutterMarker(byLine[line]).range(+line));}return RangeSet.of(markers,true);}const lintGutterExtension=gutter({class:\\\"cm-gutter-lint\\\",markers:view=>view.state.field(lintGutterMarkers)});const lintGutterMarkers=StateField.define({create(){return RangeSet.empty;},update(markers,tr){markers=markers.map(tr.changes);let diagnosticFilter=tr.state.facet(lintGutterConfig).markerFilter;for(let _i255=0,_tr$effects15=tr.effects,_length255=_tr$effects15.length;_i255\u003C_length255;_i255++){let effect=_tr$effects15[_i255];if(effect.is(setDiagnosticsEffect)){let diagnostics=effect.value;if(diagnosticFilter)diagnostics=diagnosticFilter(diagnostics||[],tr.state);markers=markersForDiagnostics(tr.state.doc,diagnostics.slice(0));}}return markers;}});const setLintGutterTooltip=StateEffect.define();const lintGutterTooltip=StateField.define({create(){return null;},update(tooltip,tr){if(tooltip&&tr.docChanged)tooltip=hideTooltip(tr,tooltip)?null:Object.assign(Object.assign({},tooltip),{pos:tr.changes.mapPos(tooltip.pos)});return tr.effects.reduce((t,e)=>e.is(setLintGutterTooltip)?e.value:t,tooltip);},provide:field=>showTooltip.from(field)});const lintGutterTheme=EditorView.baseTheme({\\\".cm-gutter-lint\\\":{width:\\\"1.4em\\\",\\\"& .cm-gutterElement\\\":{padding:\\\".2em\\\"}},\\\".cm-lint-marker\\\":{width:\\\"1em\\\",height:\\\"1em\\\"},\\\".cm-lint-marker-info\\\":{content:svg(`\u003Cpath fill=\\\"#aaf\\\" stroke=\\\"#77e\\\" stroke-width=\\\"6\\\" stroke-linejoin=\\\"round\\\" d=\\\"M5 5L35 5L35 35L5 35Z\\\"/>`)},\\\".cm-lint-marker-warning\\\":{content:svg(`\u003Cpath fill=\\\"#fe8\\\" stroke=\\\"#fd7\\\" stroke-width=\\\"6\\\" stroke-linejoin=\\\"round\\\" d=\\\"M20 6L37 35L3 35Z\\\"/>`)},\\\".cm-lint-marker-error\\\":{content:svg(`\u003Ccircle cx=\\\"20\\\" cy=\\\"20\\\" r=\\\"15\\\" fill=\\\"#f87\\\" stroke=\\\"#f43\\\" stroke-width=\\\"6\\\"/>`)}});const lintExtensions=[lintState,EditorView.decorations.compute([lintState],state=>{let{selected,panel}=state.field(lintState);return!selected||!panel||selected.from==selected.to?Decoration.none:Decoration.set([activeMark.range(selected.from,selected.to)]);}),hoverTooltip(lintTooltip,{hideOn:hideTooltip}),baseTheme$1];const lintGutterConfig=Facet.define({combine(configs){return combineConfig(configs,{hoverTime:300,markerFilter:null,tooltipFilter:null});}});function lintGutter(config={}){return[lintGutterConfig.of(config),lintGutterMarkers,lintGutterExtension,lintGutterTheme,lintGutterTooltip];}function forEachDiagnostic(state,f){let lState=state.field(lintState,false);if(lState&&lState.diagnostics.size)for(let iter=RangeSet.iter([lState.diagnostics]);iter.value;iter.next())f(iter.value.spec.diagnostic,iter.from,iter.to);}var _m6=Object.freeze({__proto__:null,closeLintPanel:closeLintPanel,diagnosticCount:diagnosticCount,forEachDiagnostic:forEachDiagnostic,forceLinting:forceLinting,lintGutter:lintGutter,lintKeymap:lintKeymap,linter:linter,nextDiagnostic:nextDiagnostic,openLintPanel:openLintPanel,previousDiagnostic:previousDiagnostic,setDiagnostics:setDiagnostics,setDiagnosticsEffect:setDiagnosticsEffect});class LocalUpdate{constructor(origin,changes,effects,clientID){this.origin=origin;this.changes=changes;this.effects=effects;this.clientID=clientID;}}class CollabState{constructor(version,unconfirmed){this.version=version;this.unconfirmed=unconfirmed;}}const collabConfig=Facet.define({combine(configs){let combined=combineConfig(configs,{startVersion:0,clientID:null,sharedEffects:()=>[]},{generatedID:a=>a});if(combined.clientID==null)combined.clientID=configs.length&&configs[0].generatedID||\\\"\\\";return combined;}});const collabReceive=Annotation.define();const collabField=StateField.define({create(state){return new CollabState(state.facet(collabConfig).startVersion,[]);},update(collab,tr){let isSync=tr.annotation(collabReceive);if(isSync)return isSync;let{sharedEffects,clientID}=tr.startState.facet(collabConfig);let effects=sharedEffects(tr);if(effects.length||!tr.changes.empty)return new CollabState(collab.version,collab.unconfirmed.concat(new LocalUpdate(tr,tr.changes,effects,clientID)));return collab;}});function collab(config={}){return[collabField,collabConfig.of(Object.assign({generatedID:Math.floor(Math.random()*1e9).toString(36)},config))];}function receiveUpdates(state,updates){let{version,unconfirmed}=state.field(collabField);let{clientID}=state.facet(collabConfig);version+=updates.length;let effects=[],changes=null;let own=0;for(let _i256=0,_length256=updates.length;_i256\u003C_length256;_i256++){let update=updates[_i256];let ours=own\u003Cunconfirmed.length?unconfirmed[own]:null;if(ours&&ours.clientID==update.clientID){if(changes)changes=changes.map(ours.changes,true);effects=StateEffect.mapEffects(effects,update.changes);own++;}else{effects=StateEffect.mapEffects(effects,update.changes);if(update.effects)effects=effects.concat(update.effects);changes=changes?changes.compose(update.changes):update.changes;}}if(own)unconfirmed=unconfirmed.slice(own);if(unconfirmed.length){if(changes)unconfirmed=unconfirmed.map(update=>{let updateChanges=update.changes.map(changes);changes=changes.map(update.changes,true);return new LocalUpdate(update.origin,updateChanges,StateEffect.mapEffects(update.effects,changes),clientID);});if(effects.length){let composed=unconfirmed.reduce((ch,u)=>ch.compose(u.changes),ChangeSet.empty(unconfirmed[0].changes.length));effects=StateEffect.mapEffects(effects,composed);}}if(!changes)return state.update({annotations:[collabReceive.of(new CollabState(version,unconfirmed))]});return state.update({changes:changes,effects,annotations:[Transaction.addToHistory.of(false),Transaction.remote.of(true),collabReceive.of(new CollabState(version,unconfirmed))],filter:false});}function sendableUpdates(state){return state.field(collabField).unconfirmed;}function getSyncedVersion(state){return state.field(collabField).version;}function getClientID(state){return state.facet(collabConfig).clientID;}function rebaseUpdates(updates,over){if(!over.length||!updates.length)return updates;let changes=null,skip=0;for(let _i257=0,_length257=over.length;_i257\u003C_length257;_i257++){let update=over[_i257];let other=skip\u003Cupdates.length?updates[skip]:null;if(other&&other.clientID==update.clientID){if(changes)changes=changes.mapDesc(other.changes,true);skip++;}else{changes=changes?changes.composeDesc(update.changes):update.changes;}}if(skip)updates=updates.slice(skip);return!changes?updates:updates.map(update=>{let updateChanges=update.changes.map(changes);changes=changes.mapDesc(update.changes,true);return{changes:updateChanges,effects:update.effects&&StateEffect.mapEffects(update.effects,changes),clientID:update.clientID};});}var _m7=Object.freeze({__proto__:null,collab:collab,getClientID:getClientID,getSyncedVersion:getSyncedVersion,rebaseUpdates:rebaseUpdates,receiveUpdates:receiveUpdates,sendableUpdates:sendableUpdates});const basicSetup=(()=>[lineNumbers(),highlightActiveLineGutter(),highlightSpecialChars(),history(),foldGutter(),drawSelection(),dropCursor(),EditorState.allowMultipleSelections.of(true),indentOnInput(),syntaxHighlighting(defaultHighlightStyle,{fallback:true}),bracketMatching(),closeBrackets(),autocompletion(),rectangularSelection(),crosshairCursor(),highlightActiveLine(),highlightSelectionMatches(),keymap.of([...closeBracketsKeymap,...defaultKeymap,...searchKeymap,...historyKeymap,...foldKeymap,...completionKeymap,...lintKeymap])])();const minimalSetup=(()=>[highlightSpecialChars(),history(),drawSelection(),syntaxHighlighting(defaultHighlightStyle,{fallback:true}),keymap.of([...defaultKeymap,...historyKeymap])])();var _m8=Object.freeze({__proto__:null,basicSetup:basicSetup,minimalSetup:minimalSetup,EditorView:EditorView});class Stack{constructor(p,stack,state,reducePos,pos,score,buffer,bufferBase,curContext,lookAhead=0,parent){this.p=p;this.stack=stack;this.state=state;this.reducePos=reducePos;this.pos=pos;this.score=score;this.buffer=buffer;this.bufferBase=bufferBase;this.curContext=curContext;this.lookAhead=lookAhead;this.parent=parent;}toString(){return`[${this.stack.filter((_,i)=>i%3==0).concat(this.state)}]@${this.pos}${this.score?\\\"!\\\"+this.score:\\\"\\\"}`;}static start(p,state,pos=0){let cx=p.parser.context;return new Stack(p,[],state,pos,pos,0,[],0,cx?new StackContext(cx,cx.start):null,0,null);}get context(){return this.curContext?this.curContext.context:null;}pushState(state,start){this.stack.push(this.state,start,this.bufferBase+this.buffer.length);this.state=state;}reduce(action){var _a;let depth=action>>19,type=action&65535;let{parser}=this.p;let dPrec=parser.dynamicPrecedence(type);if(dPrec)this.score+=dPrec;if(depth==0){this.pushState(parser.getGoto(this.state,type,true),this.reducePos);if(type\u003Cparser.minRepeatTerm)this.storeNode(type,this.reducePos,this.reducePos,4,true);this.reduceContext(type,this.reducePos);return;}let base=this.stack.length-(depth-1)*3-(action&262144?6:0);let start=base?this.stack[base-2]:this.p.ranges[0].from,size=this.reducePos-start;if(size>=2000&&!((_a=this.p.parser.nodeSet.types[type])===null||_a===void 0?void 0:_a.isAnonymous)){if(start==this.p.lastBigReductionStart){this.p.bigReductionCount++;this.p.lastBigReductionSize=size;}else if(this.p.lastBigReductionSize\u003Csize){this.p.bigReductionCount=1;this.p.lastBigReductionStart=start;this.p.lastBigReductionSize=size;}}let bufferBase=base?this.stack[base-1]:0,count=this.bufferBase+this.buffer.length-bufferBase;if(type\u003Cparser.minRepeatTerm||action&131072){let pos=parser.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(type,start,pos,count+4,true);}if(action&262144){this.state=this.stack[base];}else{let baseStateID=this.stack[base-3];this.state=parser.getGoto(baseStateID,type,true);}while(this.stack.length>base)this.stack.pop();this.reduceContext(type,start);}storeNode(term,start,end,size=4,isReduce=false){if(term==0&&(!this.stack.length||this.stack[this.stack.length-1]\u003Cthis.buffer.length+this.bufferBase)){let cur=this,top=this.buffer.length;if(top==0&&cur.parent){top=cur.bufferBase-cur.parent.bufferBase;cur=cur.parent;}if(top>0&&cur.buffer[top-4]==0&&cur.buffer[top-1]>-1){if(start==end)return;if(cur.buffer[top-2]>=start){cur.buffer[top-2]=end;return;}}}if(!isReduce||this.pos==end){this.buffer.push(term,start,end,size);}else{let index=this.buffer.length;if(index>0&&this.buffer[index-4]!=0)while(index>0&&this.buffer[index-2]>end){this.buffer[index]=this.buffer[index-4];this.buffer[index+1]=this.buffer[index-3];this.buffer[index+2]=this.buffer[index-2];this.buffer[index+3]=this.buffer[index-1];index-=4;if(size>4)size-=4;}this.buffer[index]=term;this.buffer[index+1]=start;this.buffer[index+2]=end;this.buffer[index+3]=size;}}shift(action,type,start,end){if(action&131072){this.pushState(action&65535,this.pos);}else if((action&262144)==0){let nextState=action,{parser}=this.p;if(end>this.pos||type\u003C=parser.maxNode){this.pos=end;if(!parser.stateFlag(nextState,1))this.reducePos=end;}this.pushState(nextState,start);this.shiftContext(type,start);if(type\u003C=parser.maxNode)this.buffer.push(type,start,end,4);}else{this.pos=end;this.shiftContext(type,start);if(type\u003C=this.p.parser.maxNode)this.buffer.push(type,start,end,4);}}apply(action,next,nextStart,nextEnd){if(action&65536)this.reduce(action);else this.shift(action,next,nextStart,nextEnd);}useNode(value,next){let index=this.p.reused.length-1;if(index\u003C0||this.p.reused[index]!=value){this.p.reused.push(value);index++;}let start=this.pos;this.reducePos=this.pos=start+value.length;this.pushState(next,start);this.buffer.push(index,start,this.reducePos,-1);if(this.curContext)this.updateContext(this.curContext.tracker.reuse(this.curContext.context,value,this,this.p.stream.reset(this.pos-value.length)));}split(){let parent=this;let off=parent.buffer.length;while(off>0&&parent.buffer[off-2]>parent.reducePos)off-=4;let buffer=parent.buffer.slice(off),base=parent.bufferBase+off;while(parent&&base==parent.bufferBase)parent=parent.parent;return new Stack(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,buffer,base,this.curContext,this.lookAhead,parent);}recoverByDelete(next,nextEnd){let isNode=next\u003C=this.p.parser.maxNode;if(isNode)this.storeNode(next,this.pos,nextEnd,4);this.storeNode(0,this.pos,nextEnd,isNode?8:4);this.pos=this.reducePos=nextEnd;this.score-=190;}canShift(term){for(let sim=new SimulatedStack(this);;){let action=this.p.parser.stateSlot(sim.state,4)||this.p.parser.hasAction(sim.state,term);if(action==0)return false;if((action&65536)==0)return true;sim.reduce(action);}}recoverByInsert(next){if(this.stack.length>=300)return[];let nextStates=this.p.parser.nextStates(this.state);if(nextStates.length>4\u003C\u003C1||this.stack.length>=120){let best=[];for(let i=0,s;i\u003CnextStates.length;i+=2){if((s=nextStates[i+1])!=this.state&&this.p.parser.hasAction(s,next))best.push(nextStates[i],s);}if(this.stack.length\u003C120)for(let i=0;best.length\u003C4\u003C\u003C1&&i\u003CnextStates.length;i+=2){let s=nextStates[i+1];if(!best.some((v,i)=>i&1&&v==s))best.push(nextStates[i],s);}nextStates=best;}let result=[];for(let i=0;i\u003CnextStates.length&&result.length\u003C4;i+=2){let s=nextStates[i+1];if(s==this.state)continue;let stack=this.split();stack.pushState(s,this.pos);stack.storeNode(0,stack.pos,stack.pos,4,true);stack.shiftContext(nextStates[i],this.pos);stack.reducePos=this.pos;stack.score-=200;result.push(stack);}return result;}forceReduce(){let{parser}=this.p;let reduce=parser.stateSlot(this.state,5);if((reduce&65536)==0)return false;if(!parser.validAction(this.state,reduce)){let depth=reduce>>19,term=reduce&65535;let target=this.stack.length-depth*3;if(target\u003C0||parser.getGoto(this.stack[target],term,false)\u003C0){let backup=this.findForcedReduction();if(backup==null)return false;reduce=backup;}this.storeNode(0,this.pos,this.pos,4,true);this.score-=100;}this.reducePos=this.pos;this.reduce(reduce);return true;}findForcedReduction(){let{parser}=this.p,seen=[];let explore=(state,depth)=>{if(seen.includes(state))return;seen.push(state);return parser.allActions(state,action=>{if(action&(262144|131072));else if(action&65536){let rDepth=(action>>19)-depth;if(rDepth>1){let term=action&65535,target=this.stack.length-rDepth*3;if(target>=0&&parser.getGoto(this.stack[target],term,false)>=0)return rDepth\u003C\u003C19|65536|term;}}else{let found=explore(action,depth+1);if(found!=null)return found;}});};return explore(this.state,0);}forceAll(){while(!this.p.parser.stateFlag(this.state,2)){if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,true);break;}}return this;}get deadEnd(){if(this.stack.length!=3)return false;let{parser}=this.p;return parser.data[parser.stateSlot(this.state,1)]==65535&&!parser.stateSlot(this.state,4);}restart(){this.storeNode(0,this.pos,this.pos,4,true);this.state=this.stack[0];this.stack.length=0;}sameState(other){if(this.state!=other.state||this.stack.length!=other.stack.length)return false;for(let i=0;i\u003Cthis.stack.length;i+=3)if(this.stack[i]!=other.stack[i])return false;return true;}get parser(){return this.p.parser;}dialectEnabled(dialectID){return this.p.parser.dialect.flags[dialectID];}shiftContext(term,start){if(this.curContext)this.updateContext(this.curContext.tracker.shift(this.curContext.context,term,this,this.p.stream.reset(start)));}reduceContext(term,start){if(this.curContext)this.updateContext(this.curContext.tracker.reduce(this.curContext.context,term,this,this.p.stream.reset(start)));}emitContext(){let last=this.buffer.length-1;if(last\u003C0||this.buffer[last]!=-3)this.buffer.push(this.curContext.hash,this.pos,this.pos,-3);}emitLookAhead(){let last=this.buffer.length-1;if(last\u003C0||this.buffer[last]!=-4)this.buffer.push(this.lookAhead,this.pos,this.pos,-4);}updateContext(context){if(context!=this.curContext.context){let newCx=new StackContext(this.curContext.tracker,context);if(newCx.hash!=this.curContext.hash)this.emitContext();this.curContext=newCx;}}setLookAhead(lookAhead){if(lookAhead>this.lookAhead){this.emitLookAhead();this.lookAhead=lookAhead;}}close(){if(this.curContext&&this.curContext.tracker.strict)this.emitContext();if(this.lookAhead>0)this.emitLookAhead();}}class StackContext{constructor(tracker,context){this.tracker=tracker;this.context=context;this.hash=tracker.strict?tracker.hash(context):0;}}class SimulatedStack{constructor(start){this.start=start;this.state=start.state;this.stack=start.stack;this.base=this.stack.length;}reduce(action){let term=action&65535,depth=action>>19;if(depth==0){if(this.stack==this.start.stack)this.stack=this.stack.slice();this.stack.push(this.state,0,0);this.base+=3;}else{this.base-=(depth-1)*3;}let goto=this.start.p.parser.getGoto(this.stack[this.base-3],term,true);this.state=goto;}}class StackBufferCursor{constructor(stack,pos,index){this.stack=stack;this.pos=pos;this.index=index;this.buffer=stack.buffer;if(this.index==0)this.maybeNext();}static create(stack,pos=stack.bufferBase+stack.buffer.length){return new StackBufferCursor(stack,pos,pos-stack.bufferBase);}maybeNext(){let next=this.stack.parent;if(next!=null){this.index=this.stack.bufferBase-next.bufferBase;this.stack=next;this.buffer=next.buffer;}}get id(){return this.buffer[this.index-4];}get start(){return this.buffer[this.index-3];}get end(){return this.buffer[this.index-2];}get size(){return this.buffer[this.index-1];}next(){this.index-=4;this.pos-=4;if(this.index==0)this.maybeNext();}fork(){return new StackBufferCursor(this.stack,this.pos,this.index);}}function decodeArray(input,Type=Uint16Array){if(typeof input!=\\\"string\\\")return input;let array=null;for(let pos=0,out=0;pos\u003Cinput.length;){let value=0;for(;;){let next=input.charCodeAt(pos++),stop=false;if(next==126){value=65535;break;}if(next>=92)next--;if(next>=34)next--;let digit=next-32;if(digit>=46){digit-=46;stop=true;}value+=digit;if(stop)break;value*=46;}if(array)array[out++]=value;else array=new Type(value);}return array;}class CachedToken{constructor(){this.start=-1;this.value=-1;this.end=-1;this.extended=-1;this.lookAhead=0;this.mask=0;this.context=0;}}const nullToken=new CachedToken();class InputStream{constructor(input,ranges){this.input=input;this.ranges=ranges;this.chunk=\\\"\\\";this.chunkOff=0;this.chunk2=\\\"\\\";this.chunk2Pos=0;this.next=-1;this.token=nullToken;this.rangeIndex=0;this.pos=this.chunkPos=ranges[0].from;this.range=ranges[0];this.end=ranges[ranges.length-1].to;this.readNext();}resolveOffset(offset,assoc){let range=this.range,index=this.rangeIndex;let pos=this.pos+offset;while(pos\u003Crange.from){if(!index)return null;let next=this.ranges[--index];pos-=range.from-next.to;range=next;}while(assoc\u003C0?pos>range.to:pos>=range.to){if(index==this.ranges.length-1)return null;let next=this.ranges[++index];pos+=next.from-range.to;range=next;}return pos;}clipPos(pos){if(pos>=this.range.from&&pos\u003Cthis.range.to)return pos;for(let _i258=0,_this$ranges2=this.ranges,_length258=_this$ranges2.length;_i258\u003C_length258;_i258++){let range=_this$ranges2[_i258];if(range.to>pos)return Math.max(pos,range.from);}return this.end;}peek(offset){let idx=this.chunkOff+offset,pos,result;if(idx>=0&&idx\u003Cthis.chunk.length){pos=this.pos+offset;result=this.chunk.charCodeAt(idx);}else{let resolved=this.resolveOffset(offset,1);if(resolved==null)return-1;pos=resolved;if(pos>=this.chunk2Pos&&pos\u003Cthis.chunk2Pos+this.chunk2.length){result=this.chunk2.charCodeAt(pos-this.chunk2Pos);}else{let i=this.rangeIndex,range=this.range;while(range.to\u003C=pos)range=this.ranges[++i];this.chunk2=this.input.chunk(this.chunk2Pos=pos);if(pos+this.chunk2.length>range.to)this.chunk2=this.chunk2.slice(0,range.to-pos);result=this.chunk2.charCodeAt(0);}}if(pos>=this.token.lookAhead)this.token.lookAhead=pos+1;return result;}acceptToken(token,endOffset=0){let end=endOffset?this.resolveOffset(endOffset,-1):this.pos;if(end==null||end\u003Cthis.token.start)throw new RangeError(\\\"Token end out of bounds\\\");this.token.value=token;this.token.end=end;}acceptTokenTo(token,endPos){this.token.value=token;this.token.end=endPos;}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos\u003Cthis.chunk2Pos+this.chunk2.length){let{chunk,chunkPos}=this;this.chunk=this.chunk2;this.chunkPos=this.chunk2Pos;this.chunk2=chunk;this.chunk2Pos=chunkPos;this.chunkOff=this.pos-this.chunkPos;}else{this.chunk2=this.chunk;this.chunk2Pos=this.chunkPos;let nextChunk=this.input.chunk(this.pos);let end=this.pos+nextChunk.length;this.chunk=end>this.range.to?nextChunk.slice(0,this.range.to-this.pos):nextChunk;this.chunkPos=this.pos;this.chunkOff=0;}}readNext(){if(this.chunkOff>=this.chunk.length){this.getChunk();if(this.chunkOff==this.chunk.length)return this.next=-1;}return this.next=this.chunk.charCodeAt(this.chunkOff);}advance(n=1){this.chunkOff+=n;while(this.pos+n>=this.range.to){if(this.rangeIndex==this.ranges.length-1)return this.setDone();n-=this.range.to-this.pos;this.range=this.ranges[++this.rangeIndex];this.pos=this.range.from;}this.pos+=n;if(this.pos>=this.token.lookAhead)this.token.lookAhead=this.pos+1;return this.readNext();}setDone(){this.pos=this.chunkPos=this.end;this.range=this.ranges[this.rangeIndex=this.ranges.length-1];this.chunk=\\\"\\\";return this.next=-1;}reset(pos,token){if(token){this.token=token;token.start=pos;token.lookAhead=pos+1;token.value=token.extended=-1;}else{this.token=nullToken;}if(this.pos!=pos){this.pos=pos;if(pos==this.end){this.setDone();return this;}while(pos\u003Cthis.range.from)this.range=this.ranges[--this.rangeIndex];while(pos>=this.range.to)this.range=this.ranges[++this.rangeIndex];if(pos>=this.chunkPos&&pos\u003Cthis.chunkPos+this.chunk.length){this.chunkOff=pos-this.chunkPos;}else{this.chunk=\\\"\\\";this.chunkOff=0;}this.readNext();}return this;}read(from,to){if(from>=this.chunkPos&&to\u003C=this.chunkPos+this.chunk.length)return this.chunk.slice(from-this.chunkPos,to-this.chunkPos);if(from>=this.chunk2Pos&&to\u003C=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(from-this.chunk2Pos,to-this.chunk2Pos);if(from>=this.range.from&&to\u003C=this.range.to)return this.input.read(from,to);let result=\\\"\\\";for(let _i259=0,_this$ranges3=this.ranges,_length259=_this$ranges3.length;_i259\u003C_length259;_i259++){let r=_this$ranges3[_i259];if(r.from>=to)break;if(r.to>from)result+=this.input.read(Math.max(r.from,from),Math.min(r.to,to));}return result;}}class TokenGroup{constructor(data,id){this.data=data;this.id=id;}token(input,stack){let{parser}=stack.p;readToken(this.data,input,stack,this.id,parser.data,parser.tokenPrecTable);}}TokenGroup.prototype.contextual=TokenGroup.prototype.fallback=TokenGroup.prototype.extend=false;class LocalTokenGroup{constructor(data,precTable,elseToken){this.precTable=precTable;this.elseToken=elseToken;this.data=typeof data==\\\"string\\\"?decodeArray(data):data;}token(input,stack){let start=input.pos,skipped=0;for(;;){let atEof=input.next\u003C0,nextPos=input.resolveOffset(1,1);readToken(this.data,input,stack,0,this.data,this.precTable);if(input.token.value>-1)break;if(this.elseToken==null)return;if(!atEof)skipped++;if(nextPos==null)break;input.reset(nextPos,input.token);}if(skipped){input.reset(start,input.token);input.acceptToken(this.elseToken,skipped);}}}LocalTokenGroup.prototype.contextual=TokenGroup.prototype.fallback=TokenGroup.prototype.extend=false;class ExternalTokenizer{constructor(token,options={}){this.token=token;this.contextual=!!options.contextual;this.fallback=!!options.fallback;this.extend=!!options.extend;}}function readToken(data,input,stack,group,precTable,precOffset){let state=0,groupMask=1\u003C\u003Cgroup,{dialect}=stack.p.parser;scan:for(;;){if((groupMask&data[state])==0)break;let accEnd=data[state+1];for(let i=state+3;i\u003CaccEnd;i+=2)if((data[i+1]&groupMask)>0){let term=data[i];if(dialect.allows(term)&&(input.token.value==-1||input.token.value==term||overrides(term,input.token.value,precTable,precOffset))){input.acceptToken(term);break;}}let next=input.next,low=0,high=data[state+2];if(input.next\u003C0&&high>low&&data[accEnd+high*3-3]==65535){state=data[accEnd+high*3-1];continue scan;}for(;low\u003Chigh;){let mid=low+high>>1;let index=accEnd+mid+(mid\u003C\u003C1);let from=data[index],to=data[index+1]||0x10000;if(next\u003Cfrom)high=mid;else if(next>=to)low=mid+1;else{state=data[index+2];input.advance();continue scan;}}break;}}function findOffset(data,start,term){for(let i=start,next;(next=data[i])!=65535;i++)if(next==term)return i-start;return-1;}function overrides(token,prev,tableData,tableOffset){let iPrev=findOffset(tableData,tableOffset,prev);return iPrev\u003C0||findOffset(tableData,tableOffset,token)\u003CiPrev;}const verbose=typeof process!=\\\"undefined\\\"&&process.env&&/\\\\bparse\\\\b/.test(process.env.LOG);let stackIDs=null;function cutAt(tree,pos,side){let cursor=tree.cursor(IterMode.IncludeAnonymous);cursor.moveTo(pos);for(;;){if(!(side\u003C0?cursor.childBefore(pos):cursor.childAfter(pos)))for(;;){if((side\u003C0?cursor.to\u003Cpos:cursor.from>pos)&&!cursor.type.isError)return side\u003C0?Math.max(0,Math.min(cursor.to-1,pos-25)):Math.min(tree.length,Math.max(cursor.from+1,pos+25));if(side\u003C0?cursor.prevSibling():cursor.nextSibling())break;if(!cursor.parent())return side\u003C0?0:tree.length;}}}class FragmentCursor$1{constructor(fragments,nodeSet){this.fragments=fragments;this.nodeSet=nodeSet;this.i=0;this.fragment=null;this.safeFrom=-1;this.safeTo=-1;this.trees=[];this.start=[];this.index=[];this.nextFragment();}nextFragment(){let fr=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(fr){this.safeFrom=fr.openStart?cutAt(fr.tree,fr.from+fr.offset,1)-fr.offset:fr.from;this.safeTo=fr.openEnd?cutAt(fr.tree,fr.to+fr.offset,-1)-fr.offset:fr.to;while(this.trees.length){this.trees.pop();this.start.pop();this.index.pop();}this.trees.push(fr.tree);this.start.push(-fr.offset);this.index.push(0);this.nextStart=this.safeFrom;}else{this.nextStart=1e9;}}nodeAt(pos){if(pos\u003Cthis.nextStart)return null;while(this.fragment&&this.safeTo\u003C=pos)this.nextFragment();if(!this.fragment)return null;for(;;){let last=this.trees.length-1;if(last\u003C0){this.nextFragment();return null;}let top=this.trees[last],index=this.index[last];if(index==top.children.length){this.trees.pop();this.start.pop();this.index.pop();continue;}let next=top.children[index];let start=this.start[last]+top.positions[index];if(start>pos){this.nextStart=start;return null;}if(next instanceof Tree){if(start==pos){if(start\u003Cthis.safeFrom)return null;let end=start+next.length;if(end\u003C=this.safeTo){let lookAhead=next.prop(NodeProp.lookAhead);if(!lookAhead||end+lookAhead\u003Cthis.fragment.to)return next;}}this.index[last]++;if(start+next.length>=Math.max(this.safeFrom,pos)){this.trees.push(next);this.start.push(start);this.index.push(0);}}else{this.index[last]++;this.nextStart=start+next.length;}}}}class TokenCache{constructor(parser,stream){this.stream=stream;this.tokens=[];this.mainToken=null;this.actions=[];this.tokens=parser.tokenizers.map(_=>new CachedToken());}getActions(stack){let actionIndex=0;let main=null;let{parser}=stack.p,{tokenizers}=parser;let mask=parser.stateSlot(stack.state,3);let context=stack.curContext?stack.curContext.hash:0;let lookAhead=0;for(let i=0;i\u003Ctokenizers.length;i++){if((1\u003C\u003Ci&mask)==0)continue;let tokenizer=tokenizers[i],token=this.tokens[i];if(main&&!tokenizer.fallback)continue;if(tokenizer.contextual||token.start!=stack.pos||token.mask!=mask||token.context!=context){this.updateCachedToken(token,tokenizer,stack);token.mask=mask;token.context=context;}if(token.lookAhead>token.end+25)lookAhead=Math.max(token.lookAhead,lookAhead);if(token.value!=0){let startIndex=actionIndex;if(token.extended>-1)actionIndex=this.addActions(stack,token.extended,token.end,actionIndex);actionIndex=this.addActions(stack,token.value,token.end,actionIndex);if(!tokenizer.extend){main=token;if(actionIndex>startIndex)break;}}}while(this.actions.length>actionIndex)this.actions.pop();if(lookAhead)stack.setLookAhead(lookAhead);if(!main&&stack.pos==this.stream.end){main=new CachedToken();main.value=stack.p.parser.eofTerm;main.start=main.end=stack.pos;actionIndex=this.addActions(stack,main.value,main.end,actionIndex);}this.mainToken=main;return this.actions;}getMainToken(stack){if(this.mainToken)return this.mainToken;let main=new CachedToken(),{pos,p}=stack;main.start=pos;main.end=Math.min(pos+1,p.stream.end);main.value=pos==p.stream.end?p.parser.eofTerm:0;return main;}updateCachedToken(token,tokenizer,stack){let start=this.stream.clipPos(stack.pos);tokenizer.token(this.stream.reset(start,token),stack);if(token.value>-1){let{parser}=stack.p;for(let i=0;i\u003Cparser.specialized.length;i++)if(parser.specialized[i]==token.value){let result=parser.specializers[i](this.stream.read(token.start,token.end),stack);if(result>=0&&stack.p.parser.dialect.allows(result>>1)){if((result&1)==0)token.value=result>>1;else token.extended=result>>1;break;}}}else{token.value=0;token.end=this.stream.clipPos(start+1);}}putAction(action,token,end,index){for(let i=0;i\u003Cindex;i+=3)if(this.actions[i]==action)return index;this.actions[index++]=action;this.actions[index++]=token;this.actions[index++]=end;return index;}addActions(stack,token,end,index){let{state}=stack,{parser}=stack.p,{data}=parser;for(let set=0;set\u003C2;set++){for(let i=parser.stateSlot(state,set?2:1);;i+=3){if(data[i]==65535){if(data[i+1]==1){i=pair(data,i+2);}else{if(index==0&&data[i+1]==2)index=this.putAction(pair(data,i+2),token,end,index);break;}}if(data[i]==token)index=this.putAction(pair(data,i+1),token,end,index);}}return index;}}class Parse{constructor(parser,input,fragments,ranges){this.parser=parser;this.input=input;this.ranges=ranges;this.recovering=0;this.nextStackID=0x2654;this.minStackPos=0;this.reused=[];this.stoppedAt=null;this.lastBigReductionStart=-1;this.lastBigReductionSize=0;this.bigReductionCount=0;this.stream=new InputStream(input,ranges);this.tokens=new TokenCache(parser,this.stream);this.topTerm=parser.top[1];let{from}=ranges[0];this.stacks=[Stack.start(this,parser.top[0],from)];this.fragments=fragments.length&&this.stream.end-from>parser.bufferLength*4?new FragmentCursor$1(fragments,parser.nodeSet):null;}get parsedPos(){return this.minStackPos;}advance(){let stacks=this.stacks,pos=this.minStackPos;let newStacks=this.stacks=[];let stopped,stoppedTokens;if(this.bigReductionCount>300&&stacks.length==1){let[s]=stacks;while(s.forceReduce()&&s.stack.length&&s.stack[s.stack.length-2]>=this.lastBigReductionStart){}this.bigReductionCount=this.lastBigReductionSize=0;}for(let i=0;i\u003Cstacks.length;i++){let stack=stacks[i];for(;;){this.tokens.mainToken=null;if(stack.pos>pos){newStacks.push(stack);}else if(this.advanceStack(stack,newStacks,stacks)){continue;}else{if(!stopped){stopped=[];stoppedTokens=[];}stopped.push(stack);let tok=this.tokens.getMainToken(stack);stoppedTokens.push(tok.value,tok.end);}break;}}if(!newStacks.length){let finished=stopped&&findFinished(stopped);if(finished){if(verbose)console.log(\\\"Finish with \\\"+this.stackID(finished));return this.stackToTree(finished);}if(this.parser.strict){if(verbose&&stopped)console.log(\\\"Stuck with token \\\"+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):\\\"none\\\"));throw new SyntaxError(\\\"No parse at \\\"+pos);}if(!this.recovering)this.recovering=5;}if(this.recovering&&stopped){let finished=this.stoppedAt!=null&&stopped[0].pos>this.stoppedAt?stopped[0]:this.runRecovery(stopped,stoppedTokens,newStacks);if(finished){if(verbose)console.log(\\\"Force-finish \\\"+this.stackID(finished));return this.stackToTree(finished.forceAll());}}if(this.recovering){let maxRemaining=this.recovering==1?1:this.recovering*3;if(newStacks.length>maxRemaining){newStacks.sort((a,b)=>b.score-a.score);while(newStacks.length>maxRemaining)newStacks.pop();}if(newStacks.some(s=>s.reducePos>pos))this.recovering--;}else if(newStacks.length>1){outer:for(let i=0;i\u003CnewStacks.length-1;i++){let stack=newStacks[i];for(let j=i+1;j\u003CnewStacks.length;j++){let other=newStacks[j];if(stack.sameState(other)||stack.buffer.length>500&&other.buffer.length>500){if((stack.score-other.score||stack.buffer.length-other.buffer.length)>0){newStacks.splice(j--,1);}else{newStacks.splice(i--,1);continue outer;}}}}if(newStacks.length>12)newStacks.splice(12,newStacks.length-12);}this.minStackPos=newStacks[0].pos;for(let i=1;i\u003CnewStacks.length;i++)if(newStacks[i].pos\u003Cthis.minStackPos)this.minStackPos=newStacks[i].pos;return null;}stopAt(pos){if(this.stoppedAt!=null&&this.stoppedAt\u003Cpos)throw new RangeError(\\\"Can't move stoppedAt forward\\\");this.stoppedAt=pos;}advanceStack(stack,stacks,split){let start=stack.pos,{parser}=this;let base=verbose?this.stackID(stack)+\\\" -> \\\":\\\"\\\";if(this.stoppedAt!=null&&start>this.stoppedAt)return stack.forceReduce()?stack:null;if(this.fragments){let strictCx=stack.curContext&&stack.curContext.tracker.strict,cxHash=strictCx?stack.curContext.hash:0;for(let cached=this.fragments.nodeAt(start);cached;){let match=this.parser.nodeSet.types[cached.type.id]==cached.type?parser.getGoto(stack.state,cached.type.id):-1;if(match>-1&&cached.length&&(!strictCx||(cached.prop(NodeProp.contextHash)||0)==cxHash)){stack.useNode(cached,match);if(verbose)console.log(base+this.stackID(stack)+` (via reuse of ${parser.getName(cached.type.id)})`);return true;}if(!(cached instanceof Tree)||cached.children.length==0||cached.positions[0]>0)break;let inner=cached.children[0];if(inner instanceof Tree&&cached.positions[0]==0)cached=inner;else break;}}let defaultReduce=parser.stateSlot(stack.state,4);if(defaultReduce>0){stack.reduce(defaultReduce);if(verbose)console.log(base+this.stackID(stack)+` (via always-reduce ${parser.getName(defaultReduce&65535)})`);return true;}if(stack.stack.length>=8400){while(stack.stack.length>6000&&stack.forceReduce()){}}let actions=this.tokens.getActions(stack);for(let i=0;i\u003Cactions.length;){let action=actions[i++],term=actions[i++],end=actions[i++];let last=i==actions.length||!split;let localStack=last?stack:stack.split();let main=this.tokens.mainToken;localStack.apply(action,term,main?main.start:localStack.pos,end);if(verbose)console.log(base+this.stackID(localStack)+` (via ${(action&65536)==0?\\\"shift\\\":`reduce of ${parser.getName(action&65535)}`} for ${parser.getName(term)} @ ${start}${localStack==stack?\\\"\\\":\\\", split\\\"})`);if(last)return true;else if(localStack.pos>start)stacks.push(localStack);else split.push(localStack);}return false;}advanceFully(stack,newStacks){let pos=stack.pos;for(;;){if(!this.advanceStack(stack,null,null))return false;if(stack.pos>pos){pushStackDedup(stack,newStacks);return true;}}}runRecovery(stacks,tokens,newStacks){let finished=null,restarted=false;for(let i=0;i\u003Cstacks.length;i++){let stack=stacks[i],token=tokens[i\u003C\u003C1],tokenEnd=tokens[(i\u003C\u003C1)+1];let base=verbose?this.stackID(stack)+\\\" -> \\\":\\\"\\\";if(stack.deadEnd){if(restarted)continue;restarted=true;stack.restart();if(verbose)console.log(base+this.stackID(stack)+\\\" (restarted)\\\");let done=this.advanceFully(stack,newStacks);if(done)continue;}let force=stack.split(),forceBase=base;for(let j=0;force.forceReduce()&&j\u003C10;j++){if(verbose)console.log(forceBase+this.stackID(force)+\\\" (via force-reduce)\\\");let done=this.advanceFully(force,newStacks);if(done)break;if(verbose)forceBase=this.stackID(force)+\\\" -> \\\";}for(let _i260=0,_stack$recoverByInser=stack.recoverByInsert(token),_length260=_stack$recoverByInser.length;_i260\u003C_length260;_i260++){let insert=_stack$recoverByInser[_i260];if(verbose)console.log(base+this.stackID(insert)+\\\" (via recover-insert)\\\");this.advanceFully(insert,newStacks);}if(this.stream.end>stack.pos){if(tokenEnd==stack.pos){tokenEnd++;token=0;}stack.recoverByDelete(token,tokenEnd);if(verbose)console.log(base+this.stackID(stack)+` (via recover-delete ${this.parser.getName(token)})`);pushStackDedup(stack,newStacks);}else if(!finished||finished.score\u003Cstack.score){finished=stack;}}return finished;}stackToTree(stack){stack.close();return Tree.build({buffer:StackBufferCursor.create(stack),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:stack.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm});}stackID(stack){let id=(stackIDs||(stackIDs=new WeakMap())).get(stack);if(!id)stackIDs.set(stack,id=String.fromCodePoint(this.nextStackID++));return id+stack;}}function pushStackDedup(stack,newStacks){for(let i=0;i\u003CnewStacks.length;i++){let other=newStacks[i];if(other.pos==stack.pos&&other.sameState(stack)){if(newStacks[i].score\u003Cstack.score)newStacks[i]=stack;return;}}newStacks.push(stack);}class Dialect{constructor(source,flags,disabled){this.source=source;this.flags=flags;this.disabled=disabled;}allows(term){return!this.disabled||this.disabled[term]==0;}}const id=x=>x;class ContextTracker{constructor(spec){this.start=spec.start;this.shift=spec.shift||id;this.reduce=spec.reduce||id;this.reuse=spec.reuse||id;this.hash=spec.hash||(()=>0);this.strict=spec.strict!==false;}}class LRParser extends Parser{constructor(spec){super();this.wrappers=[];if(spec.version!=14)throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14})`);let nodeNames=spec.nodeNames.split(\\\" \\\");this.minRepeatTerm=nodeNames.length;for(let i=0;i\u003Cspec.repeatNodeCount;i++)nodeNames.push(\\\"\\\");let topTerms=Object.keys(spec.topRules).map(r=>spec.topRules[r][1]);let nodeProps=[];for(let i=0;i\u003CnodeNames.length;i++)nodeProps.push([]);function setProp(nodeID,prop,value){nodeProps[nodeID].push([prop,prop.deserialize(String(value))]);}if(spec.nodeProps)for(let _i261=0,_spec$nodeProps=spec.nodeProps,_length261=_spec$nodeProps.length;_i261\u003C_length261;_i261++){let propSpec=_spec$nodeProps[_i261];let prop=propSpec[0];if(typeof prop==\\\"string\\\")prop=NodeProp[prop];for(let i=1;i\u003CpropSpec.length;){let next=propSpec[i++];if(next>=0){setProp(next,prop,propSpec[i++]);}else{let value=propSpec[i+-next];for(let j=-next;j>0;j--)setProp(propSpec[i++],prop,value);i++;}}}this.nodeSet=new NodeSet(nodeNames.map((name,i)=>NodeType.define({name:i>=this.minRepeatTerm?undefined:name,id:i,props:nodeProps[i],top:topTerms.indexOf(i)>-1,error:i==0,skipped:spec.skippedNodes&&spec.skippedNodes.indexOf(i)>-1})));if(spec.propSources)this.nodeSet=this.nodeSet.extend(...spec.propSources);this.strict=false;this.bufferLength=DefaultBufferLength;let tokenArray=decodeArray(spec.tokenData);this.context=spec.context;this.specializerSpecs=spec.specialized||[];this.specialized=new Uint16Array(this.specializerSpecs.length);for(let i=0;i\u003Cthis.specializerSpecs.length;i++)this.specialized[i]=this.specializerSpecs[i].term;this.specializers=this.specializerSpecs.map(getSpecializer);this.states=decodeArray(spec.states,Uint32Array);this.data=decodeArray(spec.stateData);this.goto=decodeArray(spec.goto);this.maxTerm=spec.maxTerm;this.tokenizers=spec.tokenizers.map(value=>typeof value==\\\"number\\\"?new TokenGroup(tokenArray,value):value);this.topRules=spec.topRules;this.dialects=spec.dialects||{};this.dynamicPrecedences=spec.dynamicPrecedences||null;this.tokenPrecTable=spec.tokenPrec;this.termNames=spec.termNames||null;this.maxNode=this.nodeSet.types.length-1;this.dialect=this.parseDialect();this.top=this.topRules[Object.keys(this.topRules)[0]];}createParse(input,fragments,ranges){let parse=new Parse(this,input,fragments,ranges);for(let _i262=0,_this$wrappers=this.wrappers,_length262=_this$wrappers.length;_i262\u003C_length262;_i262++){let w=_this$wrappers[_i262];parse=w(parse,input,fragments,ranges);}return parse;}getGoto(state,term,loose=false){let table=this.goto;if(term>=table[0])return-1;for(let pos=table[term+1];;){let groupTag=table[pos++],last=groupTag&1;let target=table[pos++];if(last&&loose)return target;for(let end=pos+(groupTag>>1);pos\u003Cend;pos++)if(table[pos]==state)return target;if(last)return-1;}}hasAction(state,terminal){let data=this.data;for(let set=0;set\u003C2;set++){for(let i=this.stateSlot(state,set?2:1),next;;i+=3){if((next=data[i])==65535){if(data[i+1]==1)next=data[i=pair(data,i+2)];else if(data[i+1]==2)return pair(data,i+2);else break;}if(next==terminal||next==0)return pair(data,i+1);}}return 0;}stateSlot(state,slot){return this.states[state*6+slot];}stateFlag(state,flag){return(this.stateSlot(state,0)&flag)>0;}validAction(state,action){return!!this.allActions(state,a=>a==action?true:null);}allActions(state,action){let deflt=this.stateSlot(state,4);let result=deflt?action(deflt):undefined;for(let i=this.stateSlot(state,1);result==null;i+=3){if(this.data[i]==65535){if(this.data[i+1]==1)i=pair(this.data,i+2);else break;}result=action(pair(this.data,i+1));}return result;}nextStates(state){let result=[];for(let i=this.stateSlot(state,1);;i+=3){if(this.data[i]==65535){if(this.data[i+1]==1)i=pair(this.data,i+2);else break;}if((this.data[i+2]&65536>>16)==0){let value=this.data[i+1];if(!result.some((v,i)=>i&1&&v==value))result.push(this.data[i],value);}}return result;}configure(config){let copy=Object.assign(Object.create(LRParser.prototype),this);if(config.props)copy.nodeSet=this.nodeSet.extend(...config.props);if(config.top){let info=this.topRules[config.top];if(!info)throw new RangeError(`Invalid top rule name ${config.top}`);copy.top=info;}if(config.tokenizers)copy.tokenizers=this.tokenizers.map(t=>{let found=config.tokenizers.find(r=>r.from==t);return found?found.to:t;});if(config.specializers){copy.specializers=this.specializers.slice();copy.specializerSpecs=this.specializerSpecs.map((s,i)=>{let found=config.specializers.find(r=>r.from==s.external);if(!found)return s;let spec=Object.assign(Object.assign({},s),{external:found.to});copy.specializers[i]=getSpecializer(spec);return spec;});}if(config.contextTracker)copy.context=config.contextTracker;if(config.dialect)copy.dialect=this.parseDialect(config.dialect);if(config.strict!=null)copy.strict=config.strict;if(config.wrap)copy.wrappers=copy.wrappers.concat(config.wrap);if(config.bufferLength!=null)copy.bufferLength=config.bufferLength;return copy;}hasWrappers(){return this.wrappers.length>0;}getName(term){return this.termNames?this.termNames[term]:String(term\u003C=this.maxNode&&this.nodeSet.types[term].name||term);}get eofTerm(){return this.maxNode+1;}get topNode(){return this.nodeSet.types[this.top[1]];}dynamicPrecedence(term){let prec=this.dynamicPrecedences;return prec==null?0:prec[term]||0;}parseDialect(dialect){let values=Object.keys(this.dialects),flags=values.map(()=>false);if(dialect)for(let _i263=0,_dialect$split=dialect.split(\\\" \\\"),_length263=_dialect$split.length;_i263\u003C_length263;_i263++){let part=_dialect$split[_i263];let id=values.indexOf(part);if(id>=0)flags[id]=true;}let disabled=null;for(let i=0;i\u003Cvalues.length;i++)if(!flags[i]){for(let j=this.dialects[values[i]],id;(id=this.data[j++])!=65535;)(disabled||(disabled=new Uint8Array(this.maxTerm+1)))[id]=1;}return new Dialect(dialect,flags,disabled);}static deserialize(spec){return new LRParser(spec);}}function pair(data,off){return data[off]|data[off+1]\u003C\u003C16;}function findFinished(stacks){let best=null;for(let _i264=0,_length264=stacks.length;_i264\u003C_length264;_i264++){let stack=stacks[_i264];let stopped=stack.p.stoppedAt;if((stack.pos==stack.p.stream.end||stopped!=null&&stack.pos>stopped)&&stack.p.parser.stateFlag(stack.state,2)&&(!best||best.score\u003Cstack.score))best=stack;}return best;}function getSpecializer(spec){if(spec.external){let mask=spec.extend?1:0;return(value,stack)=>spec.external(value,stack)\u003C\u003C1|mask;}return spec.get;}var _m31=Object.freeze({__proto__:null,ContextTracker:ContextTracker,ExternalTokenizer:ExternalTokenizer,InputStream:InputStream,LRParser:LRParser,LocalTokenGroup:LocalTokenGroup,Stack:Stack});const noSemi=309,incdec=1,incdecPrefix=2,JSXStartTag=3,insertSemi=310,spaces$1=312,newline$4=313,LineComment$2=4,BlockComment$1=5,Dialect_jsx=0;const space$5=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288];const braceR$1=125,semicolon$1=59,slash$2=47,star=42,plus$1=43,minus=45,lt=60,comma=44;const trackNewline=new ContextTracker({start:false,shift(context,term){return term==LineComment$2||term==BlockComment$1||term==spaces$1?context:term==newline$4;},strict:false});const insertSemicolon=new ExternalTokenizer((input,stack)=>{let{next}=input;if(next==braceR$1||next==-1||stack.context)input.acceptToken(insertSemi);},{contextual:true,fallback:true});const noSemicolon=new ExternalTokenizer((input,stack)=>{let{next}=input,after;if(space$5.indexOf(next)>-1)return;if(next==slash$2&&((after=input.peek(1))==slash$2||after==star))return;if(next!=braceR$1&&next!=semicolon$1&&next!=-1&&!stack.context)input.acceptToken(noSemi);},{contextual:true});const incdecToken=new ExternalTokenizer((input,stack)=>{let{next}=input;if(next==plus$1||next==minus){input.advance();if(next==input.next){input.advance();let mayPostfix=!stack.context&&stack.canShift(incdec);input.acceptToken(mayPostfix?incdec:incdecPrefix);}}},{contextual:true});function identifierChar(ch,start){return ch>=65&&ch\u003C=90||ch>=97&&ch\u003C=122||ch==95||ch>=192||!start&&ch>=48&&ch\u003C=57;}const jsx=new ExternalTokenizer((input,stack)=>{if(input.next!=lt||!stack.dialectEnabled(Dialect_jsx))return;input.advance();if(input.next==slash$2)return;let back=0;while(space$5.indexOf(input.next)>-1){input.advance();back++;}if(identifierChar(input.next,true)){input.advance();back++;while(identifierChar(input.next,false)){input.advance();back++;}while(space$5.indexOf(input.next)>-1){input.advance();back++;}if(input.next==comma)return;for(let i=0;;i++){if(i==7){if(!identifierChar(input.next,true))return;break;}if(input.next!=\\\"extends\\\".charCodeAt(i))break;input.advance();back++;}}input.acceptToken(JSXStartTag,-back);});const jsHighlight=styleTags({\\\"get set async static\\\":tags$1.modifier,\\\"for while do if else switch try catch finally return throw break continue default case\\\":tags$1.controlKeyword,\\\"in of await yield void typeof delete instanceof\\\":tags$1.operatorKeyword,\\\"let var const using function class extends\\\":tags$1.definitionKeyword,\\\"import export from\\\":tags$1.moduleKeyword,\\\"with debugger as new\\\":tags$1.keyword,TemplateString:tags$1.special(tags$1.string),super:tags$1.atom,BooleanLiteral:tags$1.bool,this:tags$1.self,null:tags$1.null,Star:tags$1.modifier,VariableName:tags$1.variableName,\\\"CallExpression/VariableName TaggedTemplateExpression/VariableName\\\":tags$1.function(tags$1.variableName),VariableDefinition:tags$1.definition(tags$1.variableName),Label:tags$1.labelName,PropertyName:tags$1.propertyName,PrivatePropertyName:tags$1.special(tags$1.propertyName),\\\"CallExpression/MemberExpression/PropertyName\\\":tags$1.function(tags$1.propertyName),\\\"FunctionDeclaration/VariableDefinition\\\":tags$1.function(tags$1.definition(tags$1.variableName)),\\\"ClassDeclaration/VariableDefinition\\\":tags$1.definition(tags$1.className),PropertyDefinition:tags$1.definition(tags$1.propertyName),PrivatePropertyDefinition:tags$1.definition(tags$1.special(tags$1.propertyName)),UpdateOp:tags$1.updateOperator,\\\"LineComment Hashbang\\\":tags$1.lineComment,BlockComment:tags$1.blockComment,Number:tags$1.number,String:tags$1.string,Escape:tags$1.escape,ArithOp:tags$1.arithmeticOperator,LogicOp:tags$1.logicOperator,BitOp:tags$1.bitwiseOperator,CompareOp:tags$1.compareOperator,RegExp:tags$1.regexp,Equals:tags$1.definitionOperator,Arrow:tags$1.function(tags$1.punctuation),\\\": Spread\\\":tags$1.punctuation,\\\"( )\\\":tags$1.paren,\\\"[ ]\\\":tags$1.squareBracket,\\\"{ }\\\":tags$1.brace,\\\"InterpolationStart InterpolationEnd\\\":tags$1.special(tags$1.brace),\\\".\\\":tags$1.derefOperator,\\\", ;\\\":tags$1.separator,\\\"@\\\":tags$1.meta,TypeName:tags$1.typeName,TypeDefinition:tags$1.definition(tags$1.typeName),\\\"type enum interface implements namespace module declare\\\":tags$1.definitionKeyword,\\\"abstract global Privacy readonly override\\\":tags$1.modifier,\\\"is keyof unique infer\\\":tags$1.operatorKeyword,JSXAttributeValue:tags$1.attributeValue,JSXText:tags$1.content,\\\"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag\\\":tags$1.angleBracket,\\\"JSXIdentifier JSXNameSpacedName\\\":tags$1.tagName,\\\"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName\\\":tags$1.attributeName,\\\"JSXBuiltin/JSXIdentifier\\\":tags$1.standard(tags$1.tagName)});const spec_identifier$8={__proto__:null,export:18,as:23,from:31,default:34,async:39,function:40,extends:52,this:56,true:64,false:64,null:76,void:80,typeof:84,super:102,new:136,delete:152,yield:161,await:165,class:170,public:227,private:227,protected:227,readonly:229,instanceof:248,satisfies:251,in:252,const:254,import:286,keyof:339,unique:343,infer:349,is:385,abstract:405,implements:407,type:409,let:412,var:414,using:417,interface:423,enum:427,namespace:433,module:435,declare:439,global:443,for:462,of:471,while:474,with:478,do:482,if:486,else:488,switch:492,case:498,try:504,catch:508,finally:512,return:516,throw:520,break:524,continue:528,debugger:532};const spec_word={__proto__:null,async:123,get:125,set:127,declare:187,public:189,private:189,protected:189,static:191,abstract:193,override:195,readonly:201,accessor:203,new:389};const spec_LessThan={__proto__:null,\\\"\u003C\\\":143};const parser$j=LRParser.deserialize({version:14,states:\\\"$\u003CUO%TQ^OOO%[Q^OOO'_Q`OOP(lOWOOO*zQ08SO'#ChO+RO!bO'#CiO+aO#tO'#CiO+oO?MpO'#D^O.QQ^O'#DdO.bQ^O'#DoO%[Q^O'#DyO0fQ^O'#EROOQ07b'#EZ'#EZO1PQWO'#EWOOQO'#El'#ElOOQO'#Ie'#IeO1XQWO'#GmO1dQWO'#EkO1iQWO'#EkO3kQ08SO'#JiO6[Q08SO'#JjO6xQWO'#FZO6}Q&jO'#FqOOQ07b'#Fc'#FcO7YO,YO'#FcO7hQ7[O'#FxO9UQWO'#FwOOQ07b'#Jj'#JjOOQ07`'#Ji'#JiO9ZQWO'#GqOOQU'#KU'#KUO9fQWO'#IRO9kQ07hO'#ISOOQU'#JW'#JWOOQU'#IW'#IWQ`Q^OOO`Q^OOO%[Q^O'#DqO9sQ^O'#D}O9zQ^O'#EPO9aQWO'#GmO:RQ7[O'#CnO:aQWO'#EjO:lQWO'#EuO:qQ7[O'#FbO;`QWO'#GmOOQO'#KV'#KVO;eQWO'#KVO;sQWO'#GuO;sQWO'#GvO;sQWO'#GxO9aQWO'#G{O\u003CjQWO'#HOO>RQWO'#CdO>cQWO'#H[O>kQWO'#HbO>kQWO'#HdO`Q^O'#HfO>kQWO'#HhO>kQWO'#HkO>pQWO'#HqO>uQ07iO'#HwO%[Q^O'#HyO?QQ07iO'#H{O?]Q07iO'#H}O9kQ07hO'#IPO?hQ08SO'#ChO@jQ`O'#DiQOQWOOO%[Q^O'#EPOAQQWO'#ESO:RQ7[O'#EjOA]QWO'#EjOAhQpO'#FbOOQU'#Cf'#CfOOQ07`'#Dn'#DnOOQ07`'#Jm'#JmO%[Q^O'#JmOOQO'#Jq'#JqOOQO'#Ib'#IbOBhQ`O'#EcOOQ07`'#Eb'#EbOCdQ07pO'#EcOCnQ`O'#EVOOQO'#Jp'#JpODSQ`O'#JqOEaQ`O'#EVOCnQ`O'#EcPEnO!0LbO'#CaPOOO)CDu)CDuOOOO'#IX'#IXOEyO!bO,59TOOQ07b,59T,59TOOOO'#IY'#IYOFXO#tO,59TO%[Q^O'#D`OOOO'#I['#I[OFgO?MpO,59xOOQ07b,59x,59xOFuQ^O'#I]OGYQWO'#JkOI[QrO'#JkO+}Q^O'#JkOIcQWO,5:OOIyQWO'#ElOJWQWO'#JyOJcQWO'#JxOJcQWO'#JxOJkQWO,5;YOJpQWO'#JwOOQ07f,5:Z,5:ZOJwQ^O,5:ZOLxQ08SO,5:eOMiQWO,5:mONSQ07hO'#JvONZQWO'#JuO9ZQWO'#JuONoQWO'#JuONwQWO,5;XON|QWO'#JuO!#UQrO'#JjOOQ07b'#Ch'#ChO%[Q^O'#ERO!#tQpO,5:rOOQO'#Jr'#JrOOQO-E\u003Cc-E\u003CcO9aQWO,5=XO!$[QWO,5=XO!$aQ^O,5;VO!&dQ7[O'#EgO!'}QWO,5;VO!)mQ7[O'#DsO!)tQ^O'#DxO!*OQ`O,5;`O!*WQ`O,5;`O%[Q^O,5;`OOQU'#FR'#FROOQU'#FT'#FTO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aO%[Q^O,5;aOOQU'#FX'#FXO!*fQ^O,5;rOOQ07b,5;w,5;wOOQ07b,5;x,5;xO!,iQWO,5;xOOQ07b,5;y,5;yO%[Q^O'#IiO!,qQ07hO,5\u003CeO!&dQ7[O,5;aO!-`Q7[O,5;aO%[Q^O,5;uO!-gQ&jO'#FgO!.dQ&jO'#J}O!.OQ&jO'#J}O!.kQ&jO'#J}OOQO'#J}'#J}O!/PQ&jO,5\u003CPOOOS,5\u003C],5\u003C]O!/bQ^O'#FsOOOS'#Ih'#IhO7YO,YO,5;}O!/iQ&jO'#FuOOQ07b,5;},5;}O!0YQMhO'#CuOOQ07b'#Cy'#CyO!0mQWO'#CyO!0rO?MpO'#C}O!1`Q7[O,5\u003CbO!1gQWO,5\u003CdO!3SQ!LQO'#GSO!3aQWO'#GTO!3fQWO'#GTO!3kQ!LQO'#GXO!4jQ`O'#G]OOQO'#Gh'#GhO!(SQ7[O'#GgOOQO'#Gj'#GjO!(SQ7[O'#GiO!5]QMhO'#JdOOQ07b'#Jd'#JdO!5gQWO'#JcO!5uQWO'#JbO!5}QWO'#CtOOQ07b'#Cw'#CwOOQ07b'#DR'#DROOQ07b'#DT'#DTO1SQWO'#DVO!(SQ7[O'#FzO!(SQ7[O'#F|O!6VQWO'#GOO!6[QWO'#GPO!3fQWO'#GVO!(SQ7[O'#G[O!6aQWO'#EmO!7OQWO,5\u003CcOOQ07`'#Cq'#CqO!7WQWO'#EnO!8QQ`O'#EoOOQ07`'#Jw'#JwO!8XQ07hO'#KWO9kQ07hO,5=]O`Q^O,5>mOOQU'#J`'#J`OOQU,5>n,5>nOOQU-E\u003CU-E\u003CUO!:ZQ08SO,5:]O!\u003CwQ08SO,5:iO%[Q^O,5:iO!?bQ08SO,5:kOOQO,5@q,5@qO!@RQ7[O,5=XO!@aQ07hO'#JaO9UQWO'#JaO!@rQ07hO,59YO!@}Q`O,59YO!AVQ7[O,59YO:RQ7[O,59YO!AbQWO,5;VO!AjQWO'#HZO!BOQWO'#KZO%[Q^O,5;zO!7{Q`O,5;|O!BWQWO,5=tO!B]QWO,5=tO!BbQWO,5=tO9kQ07hO,5=tO;sQWO,5=dOOQO'#Cu'#CuO!BpQ`O,5=aO!BxQ7[O,5=bO!CTQWO,5=dO!CYQpO,5=gO!CbQWO'#KVO>pQWO'#HQO9aQWO'#HSO!CgQWO'#HSO:RQ7[O'#HUO!ClQWO'#HUOOQU,5=j,5=jO!CqQWO'#HVO!DSQWO'#CnO!DXQWO,59OO!DcQWO,59OO!FhQ^O,59OOOQU,59O,59OO!FxQ07hO,59OO%[Q^O,59OO!ITQ^O'#H^OOQU'#H_'#H_OOQU'#H`'#H`O`Q^O,5=vO!IkQWO,5=vO`Q^O,5=|O`Q^O,5>OO!IpQWO,5>QO`Q^O,5>SO!IuQWO,5>VO!IzQ^O,5>]OOQU,5>c,5>cO%[Q^O,5>cO9kQ07hO,5>eOOQU,5>g,5>gO!NUQWO,5>gOOQU,5>i,5>iO!NUQWO,5>iOOQU,5>k,5>kO!NZQ`O'#D[O%[Q^O'#JmO!NxQ`O'#JmO# gQ`O'#DjO# xQ`O'#DjO#$ZQ^O'#DjO#$bQWO'#JlO#$jQWO,5:TO#$oQWO'#EpO#$}QWO'#JzO#%VQWO,5;ZO#%[Q`O'#DjO#%iQ`O'#EUOOQ07b,5:n,5:nO%[Q^O,5:nO#%pQWO,5:nO>pQWO,5;UO!@}Q`O,5;UO!AVQ7[O,5;UO:RQ7[O,5;UO#%xQWO,5@XO#%}Q$ISO,5:rOOQO-E\u003C`-E\u003C`O#'TQ07pO,5:}OCnQ`O,5:qO#'_Q`O,5:qOCnQ`O,5:}O!@rQ07hO,5:qOOQ07`'#Ef'#EfOOQO,5:},5:}O%[Q^O,5:}O#'lQ07hO,5:}O#'wQ07hO,5:}O!@}Q`O,5:qOOQO,5;T,5;TO#(VQ07hO,5:}POOO'#IV'#IVP#(kO!0LbO,58{POOO,58{,58{OOOO-E\u003CV-E\u003CVOOQ07b1G.o1G.oOOOO-E\u003CW-E\u003CWO#(vQpO,59zOOOO-E\u003CY-E\u003CYOOQ07b1G/d1G/dO#({QrO,5>wO+}Q^O,5>wOOQO,5>},5>}O#)VQ^O'#I]OOQO-E\u003CZ-E\u003CZO#)dQWO,5@VO#)lQrO,5@VO#)sQWO,5@dOOQ07b1G/j1G/jO%[Q^O,5@eO#){QWO'#IcOOQO-E\u003Ca-E\u003CaO#)sQWO,5@dOOQ07`1G0t1G0tOOQ07f1G/u1G/uOOQ07f1G0X1G0XO%[Q^O,5@bO#*aQ07hO,5@bO#*rQ07hO,5@bO#*yQWO,5@aO9ZQWO,5@aO#+RQWO,5@aO#+aQWO'#IfO#*yQWO,5@aOOQ07`1G0s1G0sO!*OQ`O,5:tO!*ZQ`O,5:tOOQO,5:v,5:vO#,RQWO,5:vO#,ZQ7[O1G2sO9aQWO1G2sOOQ07b1G0q1G0qO#,iQ08SO1G0qO#-nQ08QO,5;ROOQ07b'#GR'#GRO#.[Q08SO'#JdO!$aQ^O1G0qO#0dQ7[O'#JnO#0nQWO,5:_O#0sQrO'#JoO%[Q^O'#JoO#0}QWO,5:dOOQ07b'#D['#D[OOQ07b1G0z1G0zO%[Q^O1G0zOOQ07b1G1d1G1dO#1SQWO1G0zO#3kQ08SO1G0{O#3rQ08SO1G0{O#6]Q08SO1G0{O#6dQ08SO1G0{O#8nQ08SO1G0{O#9UQ08SO1G0{O#\u003COQ08SO1G0{O#\u003CVQ08SO1G0{O#>jQ08SO1G0{O#>wQ08SO1G0{O#@uQ08SO1G0{O#CuQ(CYO'#ChO#EsQ(CYO1G1^O#EzQ(CYO'#JjO!,lQWO1G1dO#F[Q08SO,5?TOOQ07`-E\u003Cg-E\u003CgO#GOQ08SO1G0{OOQ07b1G0{1G0{O#IZQ08SO1G1aO#I}Q&jO,5\u003CTO#JVQ&jO,5\u003CUO#J_Q&jO'#FlO#JvQWO'#FkOOQO'#KO'#KOOOQO'#Ig'#IgO#J{Q&jO1G1kOOQ07b1G1k1G1kOOOS1G1v1G1vO#K^Q(CYO'#JiO#KhQWO,5\u003C_O!*fQ^O,5\u003C_OOOS-E\u003Cf-E\u003CfOOQ07b1G1i1G1iO#KmQ`O'#J}OOQ07b,5\u003Ca,5\u003CaO#KuQ`O,5\u003CaOOQ07b,59e,59eO!&dQ7[O'#DPOOOO'#IZ'#IZO#KzO?MpO,59iOOQ07b,59i,59iO%[Q^O1G1|O!6[QWO'#IkO#LVQ7[O,5\u003CuOOQ07b,5\u003Cr,5\u003CrO!(SQ7[O'#InO#LuQ7[O,5=RO!(SQ7[O'#IpO#MhQ7[O,5=TO!&dQ7[O,5=VOOQO1G2O1G2OO#MrQpO'#CqO#NVQpO,5\u003CnO#N^QWO'#KRO9aQWO'#KRO#NlQWO,5\u003CpO!(SQ7[O,5\u003CoO#NqQWO'#GUO#N|QWO,5\u003CoO$ RQpO'#GRO$ `QpO'#KSO$ jQWO'#KSO!&dQ7[O'#KSO$ oQWO,5\u003CsO$ tQ`O'#G^O!4eQ`O'#G^O$!VQWO'#G`O$![QWO'#GbO!3fQWO'#GeO$!aQ07hO'#ImO$!lQ`O,5\u003CwOOQ07f,5\u003Cw,5\u003CwO$!sQ`O'#G^O$#RQ`O'#G_O$#ZQ`O'#G_O$#`Q7[O,5=RO$#pQ7[O,5=TOOQ07b,5=W,5=WO!(SQ7[O,5?}O!(SQ7[O,5?}O$$QQWO'#IrO$$]QWO,5?|O$$eQWO,59`O$%UQ7[O,59qOOQ07b,59q,59qO$%wQ7[O,5\u003CfO$&jQ7[O,5\u003ChO@bQWO,5\u003CjOOQ07b,5\u003Ck,5\u003CkO$&tQWO,5\u003CqO$&yQ7[O,5\u003CvO$'ZQWO'#JuO!$aQ^O1G1}O$'`QWO1G1}O9ZQWO'#JxO9ZQWO'#EpO%[Q^O'#EpO9ZQWO'#ItO$'eQ07hO,5@rOOQU1G2w1G2wOOQU1G4X1G4XOOQ07b1G/w1G/wO!,iQWO1G/wO$)jQ08SO1G0TOOQU1G2s1G2sO!&dQ7[O1G2sO%[Q^O1G2sO#,^QWO1G2sO$+nQ7[O'#EgOOQ07`,5?{,5?{O$+xQ07hO,5?{OOQU1G.t1G.tO!@rQ07hO1G.tO!@}Q`O1G.tO!AVQ7[O1G.tO$,ZQWO1G0qO$,`QWO'#ChO$,kQWO'#K[O$,sQWO,5=uO$,xQWO'#K[O$,}QWO'#K[O$-]QWO'#IzO$-kQWO,5@uO$-sQrO1G1fOOQ07b1G1h1G1hO9aQWO1G3`O@bQWO1G3`O$-zQWO1G3`O$.PQWO1G3`OOQU1G3`1G3`O!CTQWO1G3OO!&dQ7[O1G2{O$.UQWO1G2{OOQU1G2|1G2|O!&dQ7[O1G2|O$.ZQWO1G2|O$.cQ`O'#GzOOQU1G3O1G3OO!4eQ`O'#IvO!CYQpO1G3ROOQU1G3R1G3ROOQU,5=l,5=lO$.kQ7[O,5=nO9aQWO,5=nO$![QWO,5=pO9UQWO,5=pO!@}Q`O,5=pO!AVQ7[O,5=pO:RQ7[O,5=pO$.yQWO'#KYO$/UQWO,5=qOOQU1G.j1G.jO$/ZQ07hO1G.jO@bQWO1G.jO$/fQWO1G.jO9kQ07hO1G.jO$1kQrO,5@wO$1{QWO,5@wO9ZQWO,5@wO$2WQ^O,5=xO$2_QWO,5=xOOQU1G3b1G3bO`Q^O1G3bOOQU1G3h1G3hOOQU1G3j1G3jO>kQWO1G3lO$2dQ^O1G3nO$6hQ^O'#HmOOQU1G3q1G3qO$6uQWO'#HsO>pQWO'#HuOOQU1G3w1G3wO$6}Q^O1G3wO9kQ07hO1G3}OOQU1G4P1G4POOQ07`'#GY'#GYO9kQ07hO1G4RO9kQ07hO1G4TO$;UQWO,5@XO!*fQ^O,5;[O9ZQWO,5;[O>pQWO,5:UO!*fQ^O,5:UO!@}Q`O,5:UO$;ZQ(CYO,5:UOOQO,5;[,5;[O$;eQ`O'#I^O$;{QWO,5@WOOQ07b1G/o1G/oO$\u003CTQ`O'#IdO$\u003C_QWO,5@fOOQ07`1G0u1G0uO# xQ`O,5:UOOQO'#Ia'#IaO$\u003CgQ`O,5:pOOQ07f,5:p,5:pO#%sQWO1G0YOOQ07b1G0Y1G0YO%[Q^O1G0YOOQ07b1G0p1G0pO>pQWO1G0pO!@}Q`O1G0pO!AVQ7[O1G0pOOQ07`1G5s1G5sO!@rQ07hO1G0]OOQO1G0i1G0iO%[Q^O1G0iO$\u003CnQ07hO1G0iO$\u003CyQ07hO1G0iO!@}Q`O1G0]OCnQ`O1G0]O$=XQ07hO1G0iOOQO1G0]1G0]O$=mQ08SO1G0iPOOO-E\u003CT-E\u003CTPOOO1G.g1G.gOOOO1G/f1G/fO$=wQpO,5\u003CeO$>PQrO1G4cOOQO1G4i1G4iO%[Q^O,5>wO$>ZQWO1G5qO$>cQWO1G6OO$>kQrO1G6PO9ZQWO,5>}O$>uQ08SO1G5|O%[Q^O1G5|O$?VQ07hO1G5|O$?hQWO1G5{O$?hQWO1G5{O9ZQWO1G5{O$?pQWO,5?QO9ZQWO,5?QOOQO,5?Q,5?QO$@UQWO,5?QO$'ZQWO,5?QOOQO-E\u003Cd-E\u003CdOOQO1G0`1G0`OOQO1G0b1G0bO!,lQWO1G0bOOQU7+(_7+(_O!&dQ7[O7+(_O%[Q^O7+(_O$@dQWO7+(_O$@oQ7[O7+(_O$@}Q08SO,5=RO$CYQ08SO,5=TO$EeQ08SO,5=RO$GvQ08SO,5=TO$JXQ08SO,59qO$LaQ08SO,5\u003CfO$NlQ08SO,5\u003ChO%!wQ08SO,5\u003CvOOQ07b7+&]7+&]O%%YQ08SO7+&]O%%|Q7[O'#I_O%&WQWO,5@YOOQ07b1G/y1G/yO%&`Q^O'#I`O%&mQWO,5@ZO%&uQrO,5@ZOOQ07b1G0O1G0OO%'PQWO7+&fOOQ07b7+&f7+&fO%'UQ(CYO,5:eO%[Q^O7+&xO%'`Q(CYO,5:]O%'mQ(CYO,5:iO%'wQ(CYO,5:kOOQ07b7+'O7+'OOOQO1G1o1G1oOOQO1G1p1G1pO%(RQtO,5\u003CWO!*fQ^O,5\u003CVOOQO-E\u003Ce-E\u003CeOOQ07b7+'V7+'VOOOS7+'b7+'bOOOS1G1y1G1yO%(^QWO1G1yOOQ07b1G1{1G1{O%(cQpO,59kOOOO-E\u003CX-E\u003CXOOQ07b1G/T1G/TO%(jQ08SO7+'hOOQ07b,5?V,5?VO%)^QpO,5?VOOQ07b1G2a1G2aP!&dQ7[O'#IkPOQ07b-E\u003Ci-E\u003CiO%)|Q7[O,5?YOOQ07b-E\u003Cl-E\u003ClO%*oQ7[O,5?[OOQ07b-E\u003Cn-E\u003CnO%*yQpO1G2qOOQ07b1G2Y1G2YO%+QQWO'#IjO%+`QWO,5@mO%+`QWO,5@mO%+hQWO,5@mO%+sQWO,5@mOOQO1G2[1G2[O%,RQ7[O1G2ZO!(SQ7[O1G2ZO%,cQ!LQO'#IlO%,sQWO,5@nO!&dQ7[O,5@nO%,{QpO,5@nOOQ07b1G2_1G2_OOQ07`,5\u003Cx,5\u003CxOOQ07`,5\u003Cy,5\u003CyO$'ZQWO,5\u003CyOC_QWO,5\u003CyO!@}Q`O,5\u003CxOOQO'#Ga'#GaO%-VQWO,5\u003CzOOQ07`,5\u003C|,5\u003C|O$'ZQWO,5=POOQO,5?X,5?XOOQO-E\u003Ck-E\u003CkOOQ07f1G2c1G2cO!4eQ`O,5\u003CxO%-_QWO,5\u003CyO$!VQWO,5\u003CzO!4eQ`O,5\u003CyO!(SQ7[O'#InO%.RQ7[O1G2mO!(SQ7[O'#IpO%.tQ7[O1G2oO%/OQ7[O1G5iO%/YQ7[O1G5iOOQO,5?^,5?^OOQO-E\u003Cp-E\u003CpOOQO1G.z1G.zO!7{Q`O,59sO%[Q^O,59sO%/gQWO1G2UO!(SQ7[O1G2]O%/lQ08SO7+'iOOQ07b7+'i7+'iO!$aQ^O7+'iO%0`QWO,5;[OOQ07`,5?`,5?`OOQ07`-E\u003Cr-E\u003CrOOQ07b7+%c7+%cO%0eQpO'#KTO#%sQWO7+(_O%0oQrO7+(_O$@gQWO7+(_O%0vQ08QO'#ChO%1ZQ08QO,5\u003C}O%1{QWO,5\u003C}OOQ07`1G5g1G5gOOQU7+$`7+$`O!@rQ07hO7+$`O!@}Q`O7+$`O!$aQ^O7+&]O%2QQWO'#IyO%2iQWO,5@vOOQO1G3a1G3aO9aQWO,5@vO%2iQWO,5@vO%2qQWO,5@vOOQO,5?f,5?fOOQO-E\u003Cx-E\u003CxOOQ07b7+'Q7+'QO%2vQWO7+(zO9kQ07hO7+(zO9aQWO7+(zO@bQWO7+(zOOQU7+(j7+(jO%2{Q08QO7+(gO!&dQ7[O7+(gO%3VQpO7+(hOOQU7+(h7+(hO!&dQ7[O7+(hO%3^QWO'#KXO%3iQWO,5=fOOQO,5?b,5?bOOQO-E\u003Ct-E\u003CtOOQU7+(m7+(mO%4xQ`O'#HTOOQU1G3Y1G3YO!&dQ7[O1G3YO%[Q^O1G3YO%5PQWO1G3YO%5[Q7[O1G3YO9kQ07hO1G3[O$![QWO1G3[O9UQWO1G3[O!@}Q`O1G3[O!AVQ7[O1G3[O%5jQWO'#IxO%6OQWO,5@tO%6WQ`O,5@tOOQ07`1G3]1G3]OOQU7+$U7+$UO@bQWO7+$UO9kQ07hO7+$UO%6cQWO7+$UO%[Q^O1G6cO%[Q^O1G6dO%6hQ07hO1G6cO%6rQ^O1G3dO%6yQWO1G3dO%7OQ^O1G3dOOQU7+(|7+(|O9kQ07hO7+)WO`Q^O7+)YOOQU'#K_'#K_OOQU'#I{'#I{O%7VQ^O,5>XOOQU,5>X,5>XO%[Q^O'#HnO%7dQWO'#HpOOQU,5>_,5>_O9ZQWO,5>_OOQU,5>a,5>aOOQU7+)c7+)cOOQU7+)i7+)iOOQU7+)m7+)mOOQU7+)o7+)oO%7iQ`O1G5sO%7}Q(CYO1G0vO%8XQWO1G0vOOQO1G/p1G/pO%8dQ(CYO1G/pO>pQWO1G/pO!*fQ^O'#DjOOQO,5>x,5>xOOQO-E\u003C[-E\u003C[OOQO,5?O,5?OOOQO-E\u003Cb-E\u003CbO!@}Q`O1G/pOOQO-E\u003C_-E\u003C_OOQ07f1G0[1G0[OOQ07b7+%t7+%tO#%sQWO7+%tOOQ07b7+&[7+&[O>pQWO7+&[O!@}Q`O7+&[OOQO7+%w7+%wO$=mQ08SO7+&TOOQO7+&T7+&TO%[Q^O7+&TO%8nQ07hO7+&TO!@rQ07hO7+%wO!@}Q`O7+%wO%8yQ07hO7+&TO%9XQ08SO7++hO%[Q^O7++hO%9iQWO7++gO%9iQWO7++gOOQO1G4l1G4lO9ZQWO1G4lO%9qQWO1G4lOOQO7+%|7+%|O#%sQWO\u003C\u003CKyO%0oQrO\u003C\u003CKyO%:PQWO\u003C\u003CKyOOQU\u003C\u003CKy\u003C\u003CKyO!&dQ7[O\u003C\u003CKyO%[Q^O\u003C\u003CKyO%:XQWO\u003C\u003CKyO%:dQ08SO,5?YO%\u003CoQ08SO,5?[O%>zQ08SO1G2ZO%A]Q08SO1G2mO%ChQ08SO1G2oO%EsQ7[O,5>yOOQO-E\u003C]-E\u003C]O%E}QrO,5>zO%[Q^O,5>zOOQO-E\u003C^-E\u003C^O%FXQWO1G5uOOQ07b\u003C\u003CJQ\u003C\u003CJQO%FaQ(CYO1G0qO%HkQ(CYO1G0{O%HrQ(CYO1G0{O%JvQ(CYO1G0{O%J}Q(CYO1G0{O%LrQ(CYO1G0{O%MYQ(CYO1G0{O& mQ(CYO1G0{O& tQ(CYO1G0{O&#rQ(CYO1G0{O&$PQ(CYO1G0{O&%}Q(CYO1G0{O&&bQ08SO\u003C\u003CJdO&'gQ(CYO1G0{O&)]Q(CYO'#JdO&+`Q(CYO1G1aO&+mQ(CYO1G0TO!*fQ^O'#FnOOQO'#KP'#KPOOQO1G1r1G1rO&+wQWO1G1qO&+|Q(CYO,5?TOOOS7+'e7+'eOOOO1G/V1G/VOOQ07b1G4q1G4qO!(SQ7[O7+(]O&,WQWO,5?UO9aQWO,5?UOOQO-E\u003Ch-E\u003ChO&,fQWO1G6XO&,fQWO1G6XO&,nQWO1G6XO&,yQ7[O7+'uO&-ZQpO,5?WO&-eQWO,5?WO!&dQ7[O,5?WOOQO-E\u003Cj-E\u003CjO&-jQpO1G6YO&-tQWO1G6YOOQ07`1G2e1G2eO$'ZQWO1G2eOOQ07`1G2d1G2dO&-|QWO1G2fO!&dQ7[O1G2fOOQ07`1G2k1G2kO!@}Q`O1G2dOC_QWO1G2eO&.RQWO1G2fO&.ZQWO1G2eO&.}Q7[O,5?YOOQ07b-E\u003Cm-E\u003CmO&/pQ7[O,5?[OOQ07b-E\u003Co-E\u003CoO!(SQ7[O7++TOOQ07b1G/_1G/_O&/zQWO1G/_OOQ07b7+'p7+'pO&0PQ7[O7+'wO&0aQ08SO\u003C\u003CKTOOQ07b\u003C\u003CKT\u003C\u003CKTO&1TQWO1G0vO!&dQ7[O'#IsO&1YQWO,5@oO!&dQ7[O1G2iOOQU\u003C\u003CGz\u003C\u003CGzO!@rQ07hO\u003C\u003CGzO&1bQ08SO\u003C\u003CIwOOQ07b\u003C\u003CIw\u003C\u003CIwOOQO,5?e,5?eO&2UQWO,5?eO&2ZQWO,5?eOOQO-E\u003Cw-E\u003CwO&2iQWO1G6bO&2iQWO1G6bO9aQWO1G6bO@bQWO\u003C\u003CLfOOQU\u003C\u003CLf\u003C\u003CLfO&2qQWO\u003C\u003CLfO9kQ07hO\u003C\u003CLfOOQU\u003C\u003CLR\u003C\u003CLRO%2{Q08QO\u003C\u003CLROOQU\u003C\u003CLS\u003C\u003CLSO%3VQpO\u003C\u003CLSO&2vQ`O'#IuO&3RQWO,5@sO!*fQ^O,5@sOOQU1G3Q1G3QO&3ZQ^O'#JmOOQO'#Iw'#IwO9kQ07hO'#IwO&3eQ`O,5=oOOQU,5=o,5=oO&3lQ`O'#EcO&4QQWO7+(tO&4VQWO7+(tOOQU7+(t7+(tO!&dQ7[O7+(tO%[Q^O7+(tO&4_QWO7+(tOOQU7+(v7+(vO9kQ07hO7+(vO$![QWO7+(vO9UQWO7+(vO!@}Q`O7+(vO&4jQWO,5?dOOQO-E\u003Cv-E\u003CvOOQO'#HW'#HWO&4uQWO1G6`O9kQ07hO\u003C\u003CGpOOQU\u003C\u003CGp\u003C\u003CGpO@bQWO\u003C\u003CGpO&4}QWO7++}O&5SQWO7+,OO%[Q^O7++}O%[Q^O7+,OOOQU7+)O7+)OO&5XQWO7+)OO&5^Q^O7+)OO&5eQWO7+)OOOQU\u003C\u003CLr\u003C\u003CLrOOQU\u003C\u003CLt\u003C\u003CLtOOQU-E\u003Cy-E\u003CyOOQU1G3s1G3sO&5jQWO,5>YOOQU,5>[,5>[O&5oQWO1G3yO9ZQWO7+&bO!*fQ^O7+&bOOQO7+%[7+%[O&5tQ(CYO1G6PO>pQWO7+%[OOQ07b\u003C\u003CI`\u003C\u003CI`OOQ07b\u003C\u003CIv\u003C\u003CIvO>pQWO\u003C\u003CIvOOQO\u003C\u003CIo\u003C\u003CIoO$=mQ08SO\u003C\u003CIoO%[Q^O\u003C\u003CIoOOQO\u003C\u003CIc\u003C\u003CIcO!@rQ07hO\u003C\u003CIcO&6OQ07hO\u003C\u003CIoO&6ZQ08SO\u003C= SO&6kQWO\u003C= ROOQO7+*W7+*WO9ZQWO7+*WOOQUANAeANAeO&6sQWOANAeO!&dQ7[OANAeO#%sQWOANAeO%0oQrOANAeO%[Q^OANAeO&6{Q08SO7+'uO&9^Q08SO,5?YO&;iQ08SO,5?[O&=tQ08SO7+'wO&@VQrO1G4fO&@aQ(CYO7+&]O&BeQ(CYO,5=RO&DlQ(CYO,5=TO&D|Q(CYO,5=RO&E^Q(CYO,5=TO&EnQ(CYO,59qO&GqQ(CYO,5\u003CfO&ItQ(CYO,5\u003ChO&KwQ(CYO,5\u003CvO&MmQ(CYO7+'hO&MzQ(CYO7+'iO&NXQWO,5\u003CYOOQO7+']7+']O&N^Q7[O\u003C\u003CKwOOQO1G4p1G4pO&NeQWO1G4pO&NpQWO1G4pO' OQWO7++sO' OQWO7++sO!&dQ7[O1G4rO' WQpO1G4rO' bQWO7++tOOQ07`7+(P7+(PO$'ZQWO7+(QO' jQpO7+(QOOQ07`7+(O7+(OO$'ZQWO7+(PO' qQWO7+(QO!&dQ7[O7+(QOC_QWO7+(PO' vQ7[O\u003C\u003CNoOOQ07b7+$y7+$yO'!QQpO,5?_OOQO-E\u003Cq-E\u003CqO'![Q08QO7+(TOOQUAN=fAN=fO9aQWO1G5POOQO1G5P1G5PO'!lQWO1G5PO'!qQWO7++|O'!qQWO7++|O9kQ07hOANBQO@bQWOANBQOOQUANBQANBQOOQUANAmANAmOOQUANAnANAnO'!yQWO,5?aOOQO-E\u003Cs-E\u003CsO'#UQ(CYO1G6_O'%fQrO'#ChOOQO,5?c,5?cOOQO-E\u003Cu-E\u003CuOOQU1G3Z1G3ZO&3ZQ^O,5\u003CzOOQU\u003C\u003CL`\u003C\u003CL`O!&dQ7[O\u003C\u003CL`O&4QQWO\u003C\u003CL`O'%pQWO\u003C\u003CL`O%[Q^O\u003C\u003CL`OOQU\u003C\u003CLb\u003C\u003CLbO9kQ07hO\u003C\u003CLbO$![QWO\u003C\u003CLbO9UQWO\u003C\u003CLbO'%xQ`O1G5OO'&TQWO7++zOOQUAN=[AN=[O9kQ07hOAN=[OOQU\u003C= i\u003C= iOOQU\u003C= j\u003C= jO'&]QWO\u003C= iO'&bQWO\u003C= jOOQU\u003C\u003CLj\u003C\u003CLjO'&gQWO\u003C\u003CLjO'&lQ^O\u003C\u003CLjOOQU1G3t1G3tO>pQWO7+)eO'&sQWO\u003C\u003CI|O''OQ(CYO\u003C\u003CI|OOQO\u003C\u003CHv\u003C\u003CHvOOQ07bAN?bAN?bOOQOAN?ZAN?ZO$=mQ08SOAN?ZOOQOAN>}AN>}O%[Q^OAN?ZOOQO\u003C\u003CMr\u003C\u003CMrOOQUG27PG27PO!&dQ7[OG27PO#%sQWOG27PO''YQWOG27PO%0oQrOG27PO''bQ(CYO\u003C\u003CJdO''oQ(CYO1G2ZO')eQ(CYO,5?YO'+hQ(CYO,5?[O'-kQ(CYO1G2mO'/nQ(CYO1G2oO'1qQ(CYO\u003C\u003CKTO'2OQ(CYO\u003C\u003CIwOOQO1G1t1G1tO!(SQ7[OANAcOOQO7+*[7+*[O'2]QWO7+*[O'2hQWO\u003C= _O'2pQpO7+*^OOQ07`\u003C\u003CKl\u003C\u003CKlO$'ZQWO\u003C\u003CKlOOQ07`\u003C\u003CKk\u003C\u003CKkO'2zQpO\u003C\u003CKlO$'ZQWO\u003C\u003CKkOOQO7+*k7+*kO9aQWO7+*kO'3RQWO\u003C= hOOQUG27lG27lO9kQ07hOG27lO!*fQ^O1G4{O'3ZQWO7++yO&4QQWOANAzOOQUANAzANAzO!&dQ7[OANAzO'3cQWOANAzOOQUANA|ANA|O9kQ07hOANA|O$![QWOANA|OOQO'#HX'#HXOOQO7+*j7+*jOOQUG22vG22vOOQUANETANETOOQUANEUANEUOOQUANBUANBUO'3kQWOANBUOOQU\u003C\u003CMP\u003C\u003CMPO!*fQ^OAN?hOOQOG24uG24uO$=mQ08SOG24uO#%sQWOLD,kOOQULD,kLD,kO!&dQ7[OLD,kO'3pQWOLD,kO'3xQ(CYO7+'uO'5nQ(CYO,5?YO'7qQ(CYO,5?[O'9tQ(CYO7+'wO';jQ7[OG26}OOQO\u003C\u003CMv\u003C\u003CMvOOQ07`ANAWANAWO$'ZQWOANAWOOQ07`ANAVANAVOOQO\u003C\u003CNV\u003C\u003CNVOOQULD-WLD-WO';zQ(CYO7+*gOOQUG27fG27fO&4QQWOG27fO!&dQ7[OG27fOOQUG27hG27hO9kQ07hOG27hOOQUG27pG27pO'\u003CUQ(CYOG25SOOQOLD*aLD*aOOQU!$(!V!$(!VO#%sQWO!$(!VO!&dQ7[O!$(!VO'\u003C`Q08SOG26}OOQ07`G26rG26rOOQULD-QLD-QO&4QQWOLD-QOOQULD-SLD-SOOQU!)9Eq!)9EqO#%sQWO!)9EqOOQU!$(!l!$(!lOOQU!.K;]!.K;]O'>qQ(CYOG26}O!*fQ^O'#DyO1PQWO'#EWO'@gQrO'#JiO!*fQ^O'#DqO'@nQ^O'#D}O'@uQrO'#ChO'C]QrO'#ChO!*fQ^O'#EPO'CmQ^O,5;VO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O,5;aO!*fQ^O'#IiO'EpQWO,5\u003CeO'ExQ7[O,5;aO'GcQ7[O,5;aO!*fQ^O,5;uO!&dQ7[O'#GgO'ExQ7[O'#GgO!&dQ7[O'#GiO'ExQ7[O'#GiO1SQWO'#DVO1SQWO'#DVO!&dQ7[O'#FzO'ExQ7[O'#FzO!&dQ7[O'#F|O'ExQ7[O'#F|O!&dQ7[O'#G[O'ExQ7[O'#G[O!*fQ^O,5:iO!*fQ^O,5@eO'CmQ^O1G0qO'GjQ(CYO'#ChO!*fQ^O1G1|O!&dQ7[O'#InO'ExQ7[O'#InO!&dQ7[O'#IpO'ExQ7[O'#IpO!&dQ7[O,5\u003CoO'ExQ7[O,5\u003CoO'CmQ^O1G1}O!*fQ^O7+&xO!&dQ7[O1G2ZO'ExQ7[O1G2ZO!&dQ7[O'#InO'ExQ7[O'#InO!&dQ7[O'#IpO'ExQ7[O'#IpO!&dQ7[O1G2]O'ExQ7[O1G2]O'CmQ^O7+'iO'CmQ^O7+&]O!&dQ7[OANAcO'ExQ7[OANAcO'GtQWO'#EkO'GyQWO'#EkO'HRQWO'#FZO'HWQWO'#EuO'H]QWO'#JyO'HhQWO'#JwO'HsQWO,5;VO'HxQ7[O,5\u003CbO'IPQWO'#GTO'IUQWO'#GTO'IZQWO,5\u003CcO'IcQWO,5;VO'IkQ(CYO1G1^O'IrQWO,5\u003CoO'IwQWO,5\u003CoO'I|QWO,5\u003CqO'JRQWO,5\u003CqO'JWQWO1G1}O'J]QWO1G0qO'JbQ7[O\u003C\u003CKwO'JiQ7[O\u003C\u003CKwO7hQ7[O'#FxO9UQWO'#FwOA]QWO'#EjO!*fQ^O,5;rO!3fQWO'#GTO!3fQWO'#GTO!3fQWO'#GVO!3fQWO'#GVO!(SQ7[O7+(]O!(SQ7[O7+(]O%*yQpO1G2qO%*yQpO1G2qO!&dQ7[O,5=VO!&dQ7[O,5=V\\\",stateData:\\\"'Km~O'tOS'uOSSOS'vRQ~OPYOQYORfOX!VO`qOczOdyOlkOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO![XO!fuO!kZO!nYO!oYO!pYO!rvO!twO!wxO!{]O#s!PO$T|O%b}O%d!QO%f!OO%g!OO%h!OO%k!RO%m!SO%p!TO%q!TO%s!UO&P!WO&V!XO&X!YO&Z!ZO&]![O&`!]O&f!^O&l!_O&n!`O&p!aO&r!bO&t!cO'{SO'}TO(QUO(XVO(g[O(tiO~OVtO~P`OPYOQYORfOc!jOd!iOlkOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO![!eO!fuO!kZO!nYO!oYO!pYO!rvO!t!gO!w!hO$T!kO'{!dO'}TO(QUO(XVO(g[O(tiO~O`!vOo!nO!P!oO!_!xO!`!uO!a!uO!{:dO#P!pO#Q!pO#R!wO#S!pO#T!pO#W!yO#X!yO'|!lO'}TO(QUO([!mO(g!sO~O'v!zO~OP[XZ[X`[Xn[X|[X}[X!P[X!Y[X!h[X!i[X!k[X!o[X#[[X#geX#j[X#k[X#l[X#m[X#n[X#o[X#p[X#q[X#r[X#t[X#v[X#x[X#y[X$O[X'r[X(X[X(h[X(o[X(p[X~O!d$|X~P(qO^!|O'}#OO(O!|O(P#OO~O^#PO(P#OO(Q#OO(R#PO~Ot#RO!R#SO(Y#SO(Z#UO~OPYOQYORfOc!jOd!iOlkOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO![!eO!fuO!kZO!nYO!oYO!pYO!rvO!t!gO!w!hO$T!kO'{:hO'}TO(QUO(XVO(g[O(tiO~O!X#YO!Y#VO!V(_P!V(lP~P+}O!Z#bO~P`OPYOQYORfOc!jOd!iOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO![!eO!fuO!kZO!nYO!oYO!pYO!rvO!t!gO!w!hO$T!kO'}TO(QUO(XVO(g[O(tiO~Ol#lO!X#hO!{]O#e#kO#f#hO'{:iO!j(iP~P.iO!k#nO'{#mO~O!w#rO!{]O%b#sO~O#g#tO~O!d#uO#g#tO~OP$]OZ$dOn$QO|#yO}#zO!P#{O!Y$aO!h$SO!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO#o$SO#p$SO#q$cO#r$SO#t$TO#v$VO#x$XO#y$YO(XVO(h$ZO(o#|O(p#}O~O`(]X'r(]X'p(]X!j(]X!V(]X![(]X%c(]X!d(]X~P1qO#[$eO$O$eOP(^XZ(^Xn(^X|(^X}(^X!P(^X!Y(^X!h(^X!k(^X!o(^X#j(^X#k(^X#l(^X#m(^X#n(^X#o(^X#p(^X#q(^X#r(^X#t(^X#v(^X#x(^X#y(^X(X(^X(h(^X(o(^X(p(^X![(^X%c(^X~O`(^X!i(^X'r(^X'p(^X!V(^X!j(^Xr(^X!d(^X~P4XO#[$eO~O$Y$gO$[$fO$c$lO~ORfO![$mO$f$nO$h$pO~Og%VOl%WOn$tOo$sOp$sOv%XOx%YOz%ZO!P${O![$|O!f%`O!k$xO#f%aO$T%^O$o%[O$q%]O$t%_O'{$rO'}TO(QUO(X$uO(o$}O(p%POf(UP~O!k%bO~O!P%eO![%fO'{%dO~O!d%jO~O`%kO'r%kO~O'|!lO~P%[O%h%rO~P%[Og%VO!k%bO'{%dO'|!lO~Od%yO!k%bO'{%dO~O#r$SO~O|&OO![%{O!k%}O%d&RO'{%dO'|!lO'}TO(QUO_(}P~O!w#rO~O%m&TO!P(yX![(yX'{(yX~O'{&UO~O!t&ZO#s!PO%d!QO%f!OO%g!OO%h!OO%k!RO%m!SO%p!TO%q!TO~Oc&`Od&_O!w&]O%b&^O%u&[O~P;xOc&cOdyO![&bO!t&ZO!wxO!{]O#s!PO%b}O%f!OO%g!OO%h!OO%k!RO%m!SO%p!TO%q!TO%s!UO~Oa&fO#[&iO%d&dO'|!lO~P\u003C}O!k&jO!t&nO~O!k#nO~O![XO~O`%kO'q&vO'r%kO~O`%kO'q&yO'r%kO~O`%kO'q&{O'r%kO~O'p[X!V[Xr[X!j[X&T[X![[X%c[X!d[X~P(qO!_'YO!`'RO!a'RO'|!lO'}TO(QUO~Oo'PO!P'OO!X'SO([&}O!Z(`P!Z(nP~P@UOj']O!['ZO'{%dO~Od'bO!k%bO'{%dO~O|&OO!k%}O~Oo!nO!P!oO!{:dO#P!pO#Q!pO#S!pO#T!pO'|!lO'}TO(QUO([!mO(g!sO~O!_'hO!`'gO!a'gO#R!pO#W'iO#X'iO~PApO`%kOg%VO!d#uO!k%bO'r%kO(h'kO~O!o'oO#['mO~PCOOo!nO!P!oO'}TO(QUO([!mO(g!sO~O![XOo(eX!P(eX!_(eX!`(eX!a(eX!{(eX#P(eX#Q(eX#R(eX#S(eX#T(eX#W(eX#X(eX'|(eX'}(eX(Q(eX([(eX(g(eX~O!`'gO!a'gO'|!lO~PCnO'w'sO'x'sO'y'uO~O^!|O'}'wO(O!|O(P'wO~O^#PO(P'wO(Q'wO(R#PO~Ot#RO!R#SO(Y#SO(Z'{O~O!X'}O!V'PX!V'VX!Y'PX!Y'VX~P+}O!Y(PO!V(_X~OP$]OZ$dOn$QO|#yO}#zO!P#{O!Y(PO!h$SO!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO#o$SO#p$SO#q$cO#r$SO#t$TO#v$VO#x$XO#y$YO(XVO(h$ZO(o#|O(p#}O~O!V(_X~PGbO!V(UO~O!V(kX!Y(kX!d(kX!j(kX(h(kX~O#[(kX#g#`X!Z(kX~PIhO#[(VO!V(mX!Y(mX~O!Y(WO!V(lX~O!V(ZO~O#[$eO~PIhO!Z([O~P`O|#yO}#zO!P#{O!i#wO!k#xO(XVOP!maZ!man!ma!Y!ma!h!ma!o!ma#j!ma#k!ma#l!ma#m!ma#n!ma#o!ma#p!ma#q!ma#r!ma#t!ma#v!ma#x!ma#y!ma(h!ma(o!ma(p!ma~O`!ma'r!ma'p!ma!V!ma!j!mar!ma![!ma%c!ma!d!ma~PKOO!j(]O~O!d#uO#[(^O(h'kO!Y(jX`(jX'r(jX~O!j(jX~PMnO!P%eO![%fO!{]O#e(cO#f(bO'{%dO~O!Y(dO!j(iX~O!j(fO~O!P%eO![%fO#f(bO'{%dO~OP(^XZ(^Xn(^X|(^X}(^X!P(^X!Y(^X!h(^X!i(^X!k(^X!o(^X#j(^X#k(^X#l(^X#m(^X#n(^X#o(^X#p(^X#q(^X#r(^X#t(^X#v(^X#x(^X#y(^X(X(^X(h(^X(o(^X(p(^X~O!d#uO!j(^X~P! [O|(gO}(hO!i#wO!k#xO!{!za!P!za~O!w!za%b!za![!za#e!za#f!za'{!za~P!#`O!w(lO~OPYOQYORfOc!jOd!iOlkOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO![XO!fuO!kZO!nYO!oYO!pYO!rvO!t!gO!w!hO$T!kO'{!dO'}TO(QUO(XVO(g[O(tiO~Og%VOl%WOn$tOo$sOp$sOv%XOx%YOz;QO!P${O![$|O!f\u003C`O!k$xO#f;WO$T%^O$o;SO$q;UO$t%_O'{(pO'}TO(QUO(X$uO(o$}O(p%PO~O#g(rO~Og%VOl%WOn$tOo$sOp$sOv%XOx%YOz%ZO!P${O![$|O!f%`O!k$xO#f%aO$T%^O$o%[O$q%]O$t%_O'{(pO'}TO(QUO(X$uO(o$}O(p%PO~Of(bP~P!(SO!X(vO!j(cP~P%[O([(xO(g[O~O!P(zO!k#xO([(xO(g[O~OP:cOQ:cORfOc\u003C[Od!iOlkOn:cOokOpkOvkOx:cOz:cO!PWO!TkO!UkO![!eO!f:fO!kZO!n:cO!o:cO!p:cO!r:gO!t:jO!w!hO$T!kO'{)YO'}TO(QUO(XVO(g[O(t\u003CYO~O})]O!k#xO~O!Y$aO`$ma'r$ma'p$ma!j$ma!V$ma![$ma%c$ma!d$ma~O#s)aO~P!&dO|)dO!d)cO![$ZX$W$ZX$Y$ZX$[$ZX$c$ZX~O!d)cO![(qX$W(qX$Y(qX$[(qX$c(qX~O|)dO~P!.OO|)dO![(qX$W(qX$Y(qX$[(qX$c(qX~O![)fO$W)jO$Y)eO$[)eO$c)kO~O!X)nO~P!*fO$Y$gO$[$fO$c)rO~Oj$uX|$uX!P$uX!i$uX(o$uX(p$uX~OfiXf$uXjiX!YiX#[iX~P!/tOo)tO~Ot)uO(Y)vO(Z)xO~Oj*RO|)zO!P){O(o$}O(p%PO~Of)yO~P!0}Of*SO~Og%VOl%WOn$tOo$sOp$sOv%XOx%YOz;QO!P${O![$|O!f\u003C`O!k$xO#f;WO$T%^O$o;SO$q;UO$t%_O'}TO(QUO(X$uO(o$}O(p%PO~O!X*WO'{*TO!j(uP~P!1lO#g*YO~O!k*ZO~O!X*`O'{*]O!V(vP~P!1lOn*lO!P*dO!_*jO!`*cO!a*cO!k*ZO#W*kO%Y*fO'|!lO([!mO~O!Z*iO~P!3xO!i#wOj(WX|(WX!P(WX(o(WX(p(WX!Y(WX#[(WX~Of(WX#|(WX~P!4qOj*qO#[*pOf(VX!Y(VX~O!Y*rOf(UX~O'{&UOf(UP~O!k*yO~O'{(pO~Ol*}O!P%eO!X#hO![%fO!{]O#e#kO#f#hO'{%dO!j(iP~O!d#uO#g+OO~O!P%eO!X+QO!Y(WO![%fO'{%dO!V(lP~Oo'VO!P+SO!X+RO'}TO(QUO([(xO~O!Z(nP~P!7lO!Y+TO`(zX'r(zX~OP$]OZ$dOn$QO|#yO}#zO!P#{O!h$SO!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO#o$SO#p$SO#q$cO#r$SO#t$TO#v$VO#x$XO#y$YO(XVO(h$ZO(o#|O(p#}O~O`!ea!Y!ea'r!ea'p!ea!V!ea!j!ear!ea![!ea%c!ea!d!ea~P!8dO|#yO}#zO!P#{O!i#wO!k#xO(XVOP!qaZ!qan!qa!Y!qa!h!qa!o!qa#j!qa#k!qa#l!qa#m!qa#n!qa#o!qa#p!qa#q!qa#r!qa#t!qa#v!qa#x!qa#y!qa(h!qa(o!qa(p!qa~O`!qa'r!qa'p!qa!V!qa!j!qar!qa![!qa%c!qa!d!qa~P!:}O|#yO}#zO!P#{O!i#wO!k#xO(XVOP!saZ!san!sa!Y!sa!h!sa!o!sa#j!sa#k!sa#l!sa#m!sa#n!sa#o!sa#p!sa#q!sa#r!sa#t!sa#v!sa#x!sa#y!sa(h!sa(o!sa(p!sa~O`!sa'r!sa'p!sa!V!sa!j!sar!sa![!sa%c!sa!d!sa~P!=hOg%VOj+^O!['ZO%c+]O~O!d+`O`(TX![(TX'r(TX!Y(TX~O`%kO![XO'r%kO~Og%VO!k%bO~Og%VO!k%bO'{%dO~O!d#uO#g(rO~Oa+kO%d+lO'{+hO'}TO(QUO!Z)OP~O!Y+mO_(}X~OZ+qO~O_+rO~O![%{O'{%dO'|!lO_(}P~Og%VO#[+wO~Og%VOj+zO![$|O~O![+|O~O|,OO![XO~O%h%rO~O!w,TO~Od,YO~Oa,ZO'{#mO'}TO(QUO!Z(|P~Od%yO~O%d!QO'{&UO~P\u003C}OZ,`O_,_O~OPYOQYORfOczOdyOlkOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO!fuO!kZO!nYO!oYO!pYO!rvO!wxO!{]O%b}O'}TO(QUO(XVO(g[O(tiO~O![!eO!t!gO$T!kO'{!dO~P!DkO_,_O`%kO'r%kO~OPYOQYORfOc!jOd!iOlkOnYOokOpkOvkOxYOzYO!PWO!TkO!UkO![!eO!fuO!kZO!nYO!oYO!pYO!rvO!w!hO$T!kO'{!dO'}TO(QUO(XVO(g[O(tiO~O`,eO!twO#s!OO%f!OO%g!OO%h!OO~P!GTO!k&jO~O&V,kO~O![,mO~O&h,oO&j,pOP&eaQ&eaR&eaX&ea`&eac&ead&eal&ean&eao&eap&eav&eax&eaz&ea!P&ea!T&ea!U&ea![&ea!f&ea!k&ea!n&ea!o&ea!p&ea!r&ea!t&ea!w&ea!{&ea#s&ea$T&ea%b&ea%d&ea%f&ea%g&ea%h&ea%k&ea%m&ea%p&ea%q&ea%s&ea&P&ea&V&ea&X&ea&Z&ea&]&ea&`&ea&f&ea&l&ea&n&ea&p&ea&r&ea&t&ea'p&ea'{&ea'}&ea(Q&ea(X&ea(g&ea(t&ea!Z&ea&^&eaa&ea&c&ea~O'{,uO~Og!bX!Y!OX!Y!bX!Z!OX!Z!bX!d!OX!d!bX!k!bX#[!OX~O!d,zO#[,yOg(aX!Y#dX!Y(aX!Z#dX!Z(aX!d(aX!k(aX~Og%VO!d,|O!k%bO!Y!^X!Z!^X~Oo!nO!P!oO'}TO(QUO([!mO~OP:cOQ:cORfOc\u003C[Od!iOlkOn:cOokOpkOvkOx:cOz:cO!PWO!TkO!UkO![!eO!f:fO!kZO!n:cO!o:cO!p:cO!r:gO!t:jO!w!hO$T!kO'}TO(QUO(XVO(g[O(t\u003CYO~O'{;]O~P#!ZO!Y-QO!Z(`X~O!Z-SO~O!d,zO#[,yO!Y#dX!Z#dX~O!Y-TO!Z(nX~O!Z-VO~O!`-WO!a-WO'|!lO~P# xO!Z-ZO~P'_Oj-^O!['ZO~O!V-cO~Oo!za!_!za!`!za!a!za#P!za#Q!za#R!za#S!za#T!za#W!za#X!za'|!za'}!za(Q!za([!za(g!za~P!#`O!o-hO#[-fO~PCOO!`-jO!a-jO'|!lO~PCnO`%kO#[-fO'r%kO~O`%kO!d#uO#[-fO'r%kO~O`%kO!d#uO!o-hO#[-fO'r%kO(h'kO~O'w'sO'x'sO'y-oO~Or-pO~O!V'Pa!Y'Pa~P!8dO!X-tO!V'PX!Y'PX~P%[O!Y(PO!V(_a~O!V(_a~PGbO!Y(WO!V(la~O!P%eO!X-xO![%fO'{%dO!V'VX!Y'VX~O#[-zO!Y(ja!j(ja`(ja'r(ja~O!d#uO~P#*aO!Y(dO!j(ia~O!P%eO![%fO#f.OO'{%dO~Ol.TO!P%eO!X.QO![%fO!{]O#e.SO#f.QO'{%dO!Y'YX!j'YX~O}.XO!k#xO~Og%VOj.[O!['ZO%c.ZO~O`#_i!Y#_i'r#_i'p#_i!V#_i!j#_ir#_i![#_i%c#_i!d#_i~P!8dOj\u003CfO|)zO!P){O(o$}O(p%PO~O#g#Za`#Za#[#Za'r#Za!Y#Za!j#Za![#Za!V#Za~P#-]O#g(WXP(WXZ(WX`(WXn(WX}(WX!h(WX!k(WX!o(WX#j(WX#k(WX#l(WX#m(WX#n(WX#o(WX#p(WX#q(WX#r(WX#t(WX#v(WX#x(WX#y(WX'r(WX(X(WX(h(WX!j(WX!V(WX'p(WXr(WX![(WX%c(WX!d(WX~P!4qO!Y.iOf(bX~P!0}Of.kO~O!Y.lO!j(cX~P!8dO!j.oO~O!V.qO~OP$]O|#yO}#zO!P#{O!i#wO!k#xO!o$]O(XVOZ#ii`#iin#ii!Y#ii!h#ii#k#ii#l#ii#m#ii#n#ii#o#ii#p#ii#q#ii#r#ii#t#ii#v#ii#x#ii#y#ii'r#ii(h#ii(o#ii(p#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~O#j#ii~P#1XO#j$OO~P#1XOP$]O|#yO}#zO!P#{O!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO(XVOZ#ii`#ii!Y#ii!h#ii#n#ii#o#ii#p#ii#q#ii#r#ii#t#ii#v#ii#x#ii#y#ii'r#ii(h#ii(o#ii(p#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~On#ii~P#3yOn$QO~P#3yOP$]On$QO|#yO}#zO!P#{O!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO(XVO`#ii!Y#ii#t#ii#v#ii#x#ii#y#ii'r#ii(h#ii(o#ii(p#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~OZ#ii!h#ii#o#ii#p#ii#q#ii#r#ii~P#6kOZ$dO!h$SO#o$SO#p$SO#q$cO#r$SO~P#6kOP$]OZ$dOn$QO|#yO}#zO!P#{O!h$SO!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO#o$SO#p$SO#q$cO#r$SO#t$TO(XVO(p#}O`#ii!Y#ii#x#ii#y#ii'r#ii(h#ii(o#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~O#v$VO~P#9lO#v#ii~P#9lOP$]OZ$dOn$QO|#yO}#zO!P#{O!h$SO!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO#o$SO#p$SO#q$cO#r$SO#t$TO(XVO`#ii!Y#ii#x#ii#y#ii'r#ii(h#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~O#v#ii(o#ii(p#ii~P#\u003C^O#v$VO(o#|O(p#}O~P#\u003C^OP$]OZ$dOn$QO|#yO}#zO!P#{O!h$SO!i#wO!k#xO!o$]O#j$OO#k$PO#l$PO#m$PO#n$RO#o$SO#p$SO#q$cO#r$SO#t$TO#v$VO#x$XO(XVO(o#|O(p#}O~O`#ii!Y#ii#y#ii'r#ii(h#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~P#?UOP[XZ[Xn[X|[X}[X!P[X!h[X!i[X!k[X!o[X#[[X#geX#j[X#k[X#l[X#m[X#n[X#o[X#p[X#q[X#r[X#t[X#v[X#x[X#y[X$O[X(X[X(h[X(o[X(p[X!Y[X!Z[X~O#|[X~P#AoOP$]OZ:zOn:nO|#yO}#zO!P#{O!h:pO!i#wO!k#xO!o$]O#j:lO#k:mO#l:mO#m:mO#n:oO#o:pO#p:pO#q:yO#r:pO#t:qO#v:sO#x:uO#y:vO(XVO(h$ZO(o#|O(p#}O~O#|.sO~P#C|O#[:{O$O:{O#|(^X!Z(^X~P! [O`']a!Y']a'r']a'p']a!j']a!V']ar']a![']a%c']a!d']a~P!8dOP#iiZ#ii`#iin#ii}#ii!Y#ii!h#ii!i#ii!k#ii!o#ii#j#ii#k#ii#l#ii#m#ii#n#ii#o#ii#p#ii#q#ii#r#ii#t#ii#v#ii#x#ii#y#ii'r#ii(X#ii(h#ii'p#ii!V#ii!j#iir#ii![#ii%c#ii!d#ii~P#-]O`#}i!Y#}i'r#}i'p#}i!V#}i!j#}ir#}i![#}i%c#}i!d#}i~P!8dO$Y.xO$[.xO~O$Y.yO$[.yO~O!d)cO#[.zO![$`X$W$`X$Y$`X$[$`X$c$`X~O!X.{O~O![)fO$W.}O$Y)eO$[)eO$c/OO~O!Y:wO!Z(]X~P#C|O!Z/PO~O!d)cO$c(qX~O$c/RO~Ot)uO(Y)vO(Z/UO~O!V/YO~P!&dO(o$}Oj%Za|%Za!P%Za(p%Za!Y%Za#[%Za~Of%Za#|%Za~P#L^O(p%POj%]a|%]a!P%]a(o%]a!Y%]a#[%]a~Of%]a#|%]a~P#MPO!YeX!deX!jeX!j$uX(heX~P!/tO!j/bO~P#-]O!Y/cO!d#uO(h'kO!j(uX~O!j/hO~O!X*WO'{%dO!j(uP~O#g/jO~O!V$uX!Y$uX!d$|X~P!/tO!Y/kO!V(vX~P#-]O!d/mO~O!V/oO~Og%VOn/sO!d#uO!k%bO(h'kO~O'{/uO~O!d+`O~O`%kO!Y/yO'r%kO~O!Z/{O~P!3xO!`/|O!a/|O'|!lO([!mO~O!P0OO([!mO~O#W0PO~Of%Za!Y%Za#[%Za#|%Za~P!0}Of%]a!Y%]a#[%]a#|%]a~P!0}O'{&UOf'fX!Y'fX~O!Y*rOf(Ua~Of0YO~O|0ZO}0ZO!P0[Ojya(oya(pya!Yya#[ya~Ofya#|ya~P$$jO|)zO!P){Oj$na(o$na(p$na!Y$na#[$na~Of$na#|$na~P$%`O|)zO!P){Oj$pa(o$pa(p$pa!Y$pa#[$pa~Of$pa#|$pa~P$&RO#g0^O~Of%Oa!Y%Oa#[%Oa#|%Oa~P!0}O!d#uO~O#g0aO~O!Y+TO`(za'r(za~O|#yO}#zO!P#{O!i#wO!k#xO(XVOP!qiZ!qin!qi!Y!qi!h!qi!o!qi#j!qi#k!qi#l!qi#m!qi#n!qi#o!qi#p!qi#q!qi#r!qi#t!qi#v!qi#x!qi#y!qi(h!qi(o!qi(p!qi~O`!qi'r!qi'p!qi!V!qi!j!qir!qi![!qi%c!qi!d!qi~P$'pOg%VOn$tOo$sOp$sOv%XOx%YOz;QO!P${O![$|O!f\u003C`O!k$xO#f;WO$T%^O$o;SO$q;UO$t%_O'}TO(QUO(X$uO(o$}O(p%PO~Ol0kO'{0jO~P$*ZO!d+`O`(Ta![(Ta'r(Ta!Y(Ta~O#g0qO~OZ[X!YeX!ZeX~O!Y0rO!Z)OX~O!Z0tO~OZ0uO~Oa0wO'{+hO'}TO(QUO~O![%{O'{%dO_'nX!Y'nX~O!Y+mO_(}a~O!j0zO~P!8dOZ0}O~O_1OO~O#[1RO~Oj1UO![$|O~O([(xO!Z({P~Og%VOj1_O![1[O%c1^O~OZ1iO!Y1gO!Z(|X~O!Z1jO~O_1lO`%kO'r%kO~O'{#mO'}TO(QUO~O#[$eO$O$eOP(^XZ(^Xn(^X|(^X}(^X!P(^X!Y(^X!h(^X!k(^X!o(^X#j(^X#k(^X#l(^X#m(^X#n(^X#o(^X#p(^X#q(^X#t(^X#v(^X#x(^X#y(^X(X(^X(h(^X(o(^X(p(^X~O#r1oO&T1pO`(^X!i(^X~P$/qO#[$eO#r1oO&T1pO~O`1rO~P%[O`1tO~O&^1wOP&[iQ&[iR&[iX&[i`&[ic&[id&[il&[in&[io&[ip&[iv&[ix&[iz&[i!P&[i!T&[i!U&[i![&[i!f&[i!k&[i!n&[i!o&[i!p&[i!r&[i!t&[i!w&[i!{&[i#s&[i$T&[i%b&[i%d&[i%f&[i%g&[i%h&[i%k&[i%m&[i%p&[i%q&[i%s&[i&P&[i&V&[i&X&[i&Z&[i&]&[i&`&[i&f&[i&l&[i&n&[i&p&[i&r&[i&t&[i'p&[i'{&[i'}&[i(Q&[i(X&[i(g&[i(t&[i!Z&[ia&[i&c&[i~Oa1}O!Z1{O&c1|O~P`O![XO!k2PO~O&j,pOP&eiQ&eiR&eiX&ei`&eic&eid&eil&ein&eio&eip&eiv&eix&eiz&ei!P&ei!T&ei!U&ei![&ei!f&ei!k&ei!n&ei!o&ei!p&ei!r&ei!t&ei!w&ei!{&ei#s&ei$T&ei%b&ei%d&ei%f&ei%g&ei%h&ei%k&ei%m&ei%p&ei%q&ei%s&ei&P&ei&V&ei&X&ei&Z&ei&]&ei&`&ei&f&ei&l&ei&n&ei&p&ei&r&ei&t&ei'p&ei'{&ei'}&ei(Q&ei(X&ei(g&ei(t&ei!Z&ei&^&eia&ei&c&ei~O!V2VO~O!Y!^a!Z!^a~P#C|Oo!nO!P!oO!X2]O([!mO!Y'QX!Z'QX~P@UO!Y-QO!Z(`a~O!Y'WX!Z'WX~P!7lO!Y-TO!Z(na~O!Z2dO~P'_O`%kO#[2mO'r%kO~O`%kO!d#uO#[2mO'r%kO~O`%kO!d#uO!o2qO#[2mO'r%kO(h'kO~O`%kO'r%kO~P!8dO!Y$aOr$ma~O!V'Pi!Y'Pi~P!8dO!Y(PO!V(_i~O!Y(WO!V(li~O!V(mi!Y(mi~P!8dO!Y(ji!j(ji`(ji'r(ji~P!8dO#[2sO!Y(ji!j(ji`(ji'r(ji~O!Y(dO!j(ii~O!P%eO![%fO!{]O#e2xO#f2wO'{%dO~O!P%eO![%fO#f2wO'{%dO~Oj3PO!['ZO%c3OO~Og%VOj3PO!['ZO%c3OO~O#g%ZaP%ZaZ%Za`%Zan%Za}%Za!h%Za!i%Za!k%Za!o%Za#j%Za#k%Za#l%Za#m%Za#n%Za#o%Za#p%Za#q%Za#r%Za#t%Za#v%Za#x%Za#y%Za'r%Za(X%Za(h%Za!j%Za!V%Za'p%Zar%Za![%Za%c%Za!d%Za~P#L^O#g%]aP%]aZ%]a`%]an%]a}%]a!h%]a!i%]a!k%]a!o%]a#j%]a#k%]a#l%]a#m%]a#n%]a#o%]a#p%]a#q%]a#r%]a#t%]a#v%]a#x%]a#y%]a'r%]a(X%]a(h%]a!j%]a!V%]a'p%]ar%]a![%]a%c%]a!d%]a~P#MPO#g%ZaP%ZaZ%Za`%Zan%Za}%Za!Y%Za!h%Za!i%Za!k%Za!o%Za#j%Za#k%Za#l%Za#m%Za#n%Za#o%Za#p%Za#q%Za#r%Za#t%Za#v%Za#x%Za#y%Za'r%Za(X%Za(h%Za!j%Za!V%Za'p%Za#[%Zar%Za![%Za%c%Za!d%Za~P#-]O#g%]aP%]aZ%]a`%]an%]a}%]a!Y%]a!h%]a!i%]a!k%]a!o%]a#j%]a#k%]a#l%]a#m%]a#n%]a#o%]a#p%]a#q%]a#r%]a#t%]a#v%]a#x%]a#y%]a'r%]a(X%]a(h%]a!j%]a!V%]a'p%]a#[%]ar%]a![%]a%c%]a!d%]a~P#-]O#gyaPyaZya`yanya!hya!iya!kya!oya#jya#kya#lya#mya#nya#oya#pya#qya#rya#tya#vya#xya#yya'rya(Xya(hya!jya!Vya'pyarya![ya%cya!dya~P$$jO#g$naP$naZ$na`$nan$na}$na!h$na!i$na!k$na!o$na#j$na#k$na#l$na#m$na#n$na#o$na#p$na#q$na#r$na#t$na#v$na#x$na#y$na'r$na(X$na(h$na!j$na!V$na'p$nar$na![$na%c$na!d$na~P$%`O#g$paP$paZ$pa`$pan$pa}$pa!h$pa!i$pa!k$pa!o$pa#j$pa#k$pa#l$pa#m$pa#n$pa#o$pa#p$pa#q$pa#r$pa#t$pa#v$pa#x$pa#y$pa'r$pa(X$pa(h$pa!j$pa!V$pa'p$par$pa![$pa%c$pa!d$pa~P$&RO#g%OaP%OaZ%Oa`%Oan%Oa}%Oa!Y%Oa!h%Oa!i%Oa!k%Oa!o%Oa#j%Oa#k%Oa#l%Oa#m%Oa#n%Oa#o%Oa#p%Oa#q%Oa#r%Oa#t%Oa#v%Oa#x%Oa#y%Oa'r%Oa(X%Oa(h%Oa!j%Oa!V%Oa'p%Oa#[%Oar%Oa![%Oa%c%Oa!d%Oa~P#-]O`#_q!Y#_q'r#_q'p#_q!V#_q!j#_qr#_q![#_q%c#_q!d#_q~P!8dOf'RX!Y'RX~P!(SO!Y.iOf(ba~O!X3ZO!Y'SX!j'SX~P%[O!Y.lO!j(ca~O!Y.lO!j(ca~P!8dO!V3^O~O#|!ma!Z!ma~PKOO#|!ea!Y!ea!Z!ea~P#C|O#|!qa!Z!qa~P!:}O#|!sa!Z!sa~P!=hORfO![3pO$a3qO~O!Z3uO~Or3vO~P#-]O`$jq!Y$jq'r$jq'p$jq!V$jq!j$jqr$jq![$jq%c$jq!d$jq~P!8dO!V3wO~P#-]O|)zO!P){O(p%POj'ba(o'ba!Y'ba#['ba~Of'ba#|'ba~P%)eO|)zO!P){Oj'da(o'da(p'da!Y'da#['da~Of'da#|'da~P%*WO(h$ZO~P#-]O!X3zO'{%dO!Y'^X!j'^X~O!Y/cO!j(ua~O!Y/cO!d#uO!j(ua~O!Y/cO!d#uO(h'kO!j(ua~Of$wi!Y$wi#[$wi#|$wi~P!0}O!X4SO'{*]O!V'`X!Y'`X~P!1lO!Y/kO!V(va~O!Y/kO!V(va~P#-]O!d#uO#r4[O~On4_O!d#uO(h'kO~O(o$}Oj%Zi|%Zi!P%Zi(p%Zi!Y%Zi#[%Zi~Of%Zi#|%Zi~P%-jO(p%POj%]i|%]i!P%]i(o%]i!Y%]i#[%]i~Of%]i#|%]i~P%.]Of(Vi!Y(Vi~P!0}O#[4fOf(Vi!Y(Vi~P!0}O!j4iO~O`$kq!Y$kq'r$kq'p$kq!V$kq!j$kqr$kq![$kq%c$kq!d$kq~P!8dO!V4mO~O!Y4nO![(wX~P#-]O!i#wO~P4XO`$uX![$uX%W[X'r$uX!Y$uX~P!/tO%W4pO`kXjkX|kX!PkX![kX'rkX(okX(pkX!YkX~O%W4pO~Oa4vO%d4wO'{+hO'}TO(QUO!Y'mX!Z'mX~O!Y0rO!Z)Oa~OZ4{O~O_4|O~O`%kO'r%kO~P#-]O![$|O~P#-]O!Y5UO#[5WO!Z({X~O!Z5XO~Oo!nO!P5YO!_!xO!`!uO!a!uO!{:dO#P!pO#Q!pO#R!pO#S!pO#T!pO#W5_O#X!yO'|!lO'}TO(QUO([!mO(g!sO~O!Z5^O~P%3nOj5dO![1[O%c5cO~Og%VOj5dO![1[O%c5cO~Oa5kO'{#mO'}TO(QUO!Y'lX!Z'lX~O!Y1gO!Z(|a~O'}TO(QUO([5mO~O_5qO~O#r5tO&T5uO~PMnO!j5vO~P%[O`5xO~O`5xO~P%[Oa1}O!Z5}O&c1|O~P`O!d6PO~O!d6ROg(ai!Y(ai!Z(ai!d(ai!k(ai~O!Y#di!Z#di~P#C|O#[6SO!Y#di!Z#di~O!Y!^i!Z!^i~P#C|O`%kO#[6]O'r%kO~O`%kO!d#uO#[6]O'r%kO~O!Y(jq!j(jq`(jq'r(jq~P!8dO!Y(dO!j(iq~O!P%eO![%fO#f6dO'{%dO~O!['ZO%c6gO~Oj6jO!['ZO%c6gO~O#g'baP'baZ'ba`'ban'ba}'ba!h'ba!i'ba!k'ba!o'ba#j'ba#k'ba#l'ba#m'ba#n'ba#o'ba#p'ba#q'ba#r'ba#t'ba#v'ba#x'ba#y'ba'r'ba(X'ba(h'ba!j'ba!V'ba'p'bar'ba!['ba%c'ba!d'ba~P%)eO#g'daP'daZ'da`'dan'da}'da!h'da!i'da!k'da!o'da#j'da#k'da#l'da#m'da#n'da#o'da#p'da#q'da#r'da#t'da#v'da#x'da#y'da'r'da(X'da(h'da!j'da!V'da'p'dar'da!['da%c'da!d'da~P%*WO#g$wiP$wiZ$wi`$win$wi}$wi!Y$wi!h$wi!i$wi!k$wi!o$wi#j$wi#k$wi#l$wi#m$wi#n$wi#o$wi#p$wi#q$wi#r$wi#t$wi#v$wi#x$wi#y$wi'r$wi(X$wi(h$wi!j$wi!V$wi'p$wi#[$wir$wi![$wi%c$wi!d$wi~P#-]O#g%ZiP%ZiZ%Zi`%Zin%Zi}%Zi!h%Zi!i%Zi!k%Zi!o%Zi#j%Zi#k%Zi#l%Zi#m%Zi#n%Zi#o%Zi#p%Zi#q%Zi#r%Zi#t%Zi#v%Zi#x%Zi#y%Zi'r%Zi(X%Zi(h%Zi!j%Zi!V%Zi'p%Zir%Zi![%Zi%c%Zi!d%Zi~P%-jO#g%]iP%]iZ%]i`%]in%]i}%]i!h%]i!i%]i!k%]i!o%]i#j%]i#k%]i#l%]i#m%]i#n%]i#o%]i#p%]i#q%]i#r%]i#t%]i#v%]i#x%]i#y%]i'r%]i(X%]i(h%]i!j%]i!V%]i'p%]ir%]i![%]i%c%]i!d%]i~P%.]Of'Ra!Y'Ra~P!0}O!Y'Sa!j'Sa~P!8dO!Y.lO!j(ci~O#|#_i!Y#_i!Z#_i~P#C|OP$]O|#yO}#zO!P#{O!i#wO!k#xO!o$]O(XVOZ#iin#ii!h#ii#k#ii#l#ii#m#ii#n#ii#o#ii#p#ii#q#ii#r#ii#t#ii#v#ii#x#ii#y#ii#|#ii(h#ii(o#ii(p#ii!Y#ii!Z#ii~O#j#ii~P%FnO#j:lO~P%FnOP$]O|#yO}#zO!P#{O!i#wO!k#xO!o$]O#j:lO#k:mO#l:mO#m:mO(XVOZ#ii!h#ii#n#ii#o#ii#p#ii#q#ii#r#ii#t#ii#v#ii#x#ii#y#ii#|#ii(h#ii(o#ii(p#ii!Y#ii!Z#ii~On#ii~P%HyOn:nO~P%HyOP$]On:nO|#yO}#zO!P#{O!i#wO!k#xO!o$]O#j:lO#k:mO#l:mO#m:mO#n:oO(XVO#t#ii#v#ii#x#ii#y#ii#|#ii(h#ii(o#ii(p#ii!Y#ii!Z#ii~OZ#ii!h#ii#o#ii#p#ii#q#ii#r#ii~P%KUOZ:zO!h:pO#o:pO#p:pO#q:yO#r:pO~P%KUOP$]OZ:zOn:nO|#yO}#zO!P#{O!h:pO!i#wO!k#xO!o$]O#j:lO#k:mO#l:mO#m:mO#n:oO#o:pO#p:pO#q:yO#r:pO#t:qO(XVO(p#}O#x#ii#y#ii#|#ii(h#ii(o#ii!Y#ii!Z#ii~O#v:sO~P%MpO#v#ii~P%MpOP$]OZ:zOn:nO|#yO}#zO!P#{O!h:pO!i#wO!k#xO!o$]O#j:lO#k:mO#l:mO#m:mO#n:oO#o:pO#p:pO#q:yO#r:pO#t:qO(XVO#x#ii#y#ii#|#ii(h#ii!Y#ii!Z#ii~O#v#ii(o#ii(p#ii~P& {O#v:sO(o#|O(p#}O~P& {OP$]OZ:zOn:nO|#yO}#zO!P#{O!h:pO!i#wO!k#xO!o$]O#j:lO#k:mO#l:mO#m:mO#n:oO#o:pO#p:pO#q:yO#r:pO#t:qO#v:sO#x:uO(XVO(o#|O(p#}O~O#y#ii#|#ii(h#ii!Y#ii!Z#ii~P&$^O`#zy!Y#zy'r#zy'p#zy!V#zy!j#zyr#zy![#zy%c#zy!d#zy~P!8dOj\u003CgO|)zO!P){O(o$}O(p%PO~OP#iiZ#iin#ii}#ii!h#ii!i#ii!k#ii!o#ii#j#ii#k#ii#l#ii#m#ii#n#ii#o#ii#p#ii#q#ii#r#ii#t#ii#v#ii#x#ii#y#ii#|#ii(X#ii(h#ii!Y#ii!Z#ii~P&'UO!i#wOP(WXZ(WXj(WXn(WX|(WX}(WX!P(WX!h(WX!k(WX!o(WX#j(WX#k(WX#l(WX#m(WX#n(WX#o(WX#p(WX#q(WX#r(WX#t(WX#v(WX#x(WX#y(WX#|(WX(X(WX(h(WX(o(WX(p(WX!Y(WX!Z(WX~O#|#}i!Y#}i!Z#}i~P#C|O#|!qi!Z!qi~P$'pO!Z6|O~O!Y']a!Z']a~P#C|O!d#uO(h'kO!Y'^a!j'^a~O!Y/cO!j(ui~O!Y/cO!d#uO!j(ui~Of$wq!Y$wq#[$wq#|$wq~P!0}O!V'`a!Y'`a~P#-]O!d7TO~O!Y/kO!V(vi~P#-]O!Y/kO!V(vi~O!V7XO~O!d#uO#r7^O~On7_O!d#uO(h'kO~O|)zO!P){O(p%POj'ca(o'ca!Y'ca#['ca~Of'ca#|'ca~P&.fO|)zO!P){Oj'ea(o'ea(p'ea!Y'ea#['ea~Of'ea#|'ea~P&/XO!V7aO~Of$yq!Y$yq#[$yq#|$yq~P!0}O`$ky!Y$ky'r$ky'p$ky!V$ky!j$kyr$ky![$ky%c$ky!d$ky~P!8dO!d6RO~O!Y4nO![(wa~O`#_y!Y#_y'r#_y'p#_y!V#_y!j#_yr#_y![#_y%c#_y!d#_y~P!8dOZ7fO~Oa7hO'{+hO'}TO(QUO~O!Y0rO!Z)Oi~O_7lO~O([(xO!Y'iX!Z'iX~O!Y5UO!Z({a~OlkO'{7sO~P.iO!Z7vO~P%3nOo!nO!P7wO'}TO(QUO([!mO(g!sO~O![1[O~O![1[O%c7yO~Oj7|O![1[O%c7yO~OZ8RO!Y'la!Z'la~O!Y1gO!Z(|i~O!j8VO~O!j8WO~O!j8ZO~O!j8ZO~P%[O`8]O~O!d8^O~O!j8_O~O!Y(mi!Z(mi~P#C|O`%kO#[8gO'r%kO~O!Y(jy!j(jy`(jy'r(jy~P!8dO!Y(dO!j(iy~O!['ZO%c8jO~O#g$wqP$wqZ$wq`$wqn$wq}$wq!Y$wq!h$wq!i$wq!k$wq!o$wq#j$wq#k$wq#l$wq#m$wq#n$wq#o$wq#p$wq#q$wq#r$wq#t$wq#v$wq#x$wq#y$wq'r$wq(X$wq(h$wq!j$wq!V$wq'p$wq#[$wqr$wq![$wq%c$wq!d$wq~P#-]O#g'caP'caZ'ca`'can'ca}'ca!h'ca!i'ca!k'ca!o'ca#j'ca#k'ca#l'ca#m'ca#n'ca#o'ca#p'ca#q'ca#r'ca#t'ca#v'ca#x'ca#y'ca'r'ca(X'ca(h'ca!j'ca!V'ca'p'car'ca!['ca%c'ca!d'ca~P&.fO#g'eaP'eaZ'ea`'ean'ea}'ea!h'ea!i'ea!k'ea!o'ea#j'ea#k'ea#l'ea#m'ea#n'ea#o'ea#p'ea#q'ea#r'ea#t'ea#v'ea#x'ea#y'ea'r'ea(X'ea(h'ea!j'ea!V'ea'p'ear'ea!['ea%c'ea!d'ea~P&/XO#g$yqP$yqZ$yq`$yqn$yq}$yq!Y$yq!h$yq!i$yq!k$yq!o$yq#j$yq#k$yq#l$yq#m$yq#n$yq#o$yq#p$yq#q$yq#r$yq#t$yq#v$yq#x$yq#y$yq'r$yq(X$yq(h$yq!j$yq!V$yq'p$yq#[$yqr$yq![$yq%c$yq!d$yq~P#-]O!Y'Si!j'Si~P!8dO#|#_q!Y#_q!Z#_q~P#C|O(o$}OP%ZaZ%Zan%Za}%Za!h%Za!i%Za!k%Za!o%Za#j%Za#k%Za#l%Za#m%Za#n%Za#o%Za#p%Za#q%Za#r%Za#t%Za#v%Za#x%Za#y%Za#|%Za(X%Za(h%Za!Y%Za!Z%Za~Oj%Za|%Za!P%Za(p%Za~P&@nO(p%POP%]aZ%]an%]a}%]a!h%]a!i%]a!k%]a!o%]a#j%]a#k%]a#l%]a#m%]a#n%]a#o%]a#p%]a#q%]a#r%]a#t%]a#v%]a#x%]a#y%]a#|%]a(X%]a(h%]a!Y%]a!Z%]a~Oj%]a|%]a!P%]a(o%]a~P&BuOj\u003CgO|)zO!P){O(p%PO~P&@nOj\u003CgO|)zO!P){O(o$}O~P&BuO|0ZO}0ZO!P0[OPyaZyajyanya!hya!iya!kya!oya#jya#kya#lya#mya#nya#oya#pya#qya#rya#tya#vya#xya#yya#|ya(Xya(hya(oya(pya!Yya!Zya~O|)zO!P){OP$naZ$naj$nan$na}$na!h$na!i$na!k$na!o$na#j$na#k$na#l$na#m$na#n$na#o$na#p$na#q$na#r$na#t$na#v$na#x$na#y$na#|$na(X$na(h$na(o$na(p$na!Y$na!Z$na~O|)zO!P){OP$paZ$paj$pan$pa}$pa!h$pa!i$pa!k$pa!o$pa#j$pa#k$pa#l$pa#m$pa#n$pa#o$pa#p$pa#q$pa#r$pa#t$pa#v$pa#x$pa#y$pa#|$pa(X$pa(h$pa(o$pa(p$pa!Y$pa!Z$pa~OP%OaZ%Oan%Oa}%Oa!h%Oa!i%Oa!k%Oa!o%Oa#j%Oa#k%Oa#l%Oa#m%Oa#n%Oa#o%Oa#p%Oa#q%Oa#r%Oa#t%Oa#v%Oa#x%Oa#y%Oa#|%Oa(X%Oa(h%Oa!Y%Oa!Z%Oa~P&'UO#|$jq!Y$jq!Z$jq~P#C|O#|$kq!Y$kq!Z$kq~P#C|O!Z8vO~O#|8wO~P!0}O!d#uO!Y'^i!j'^i~O!d#uO(h'kO!Y'^i!j'^i~O!Y/cO!j(uq~O!V'`i!Y'`i~P#-]O!Y/kO!V(vq~O!V8}O~P#-]O!V8}O~Of(Vy!Y(Vy~P!0}O!Y'ga!['ga~P#-]O`%Vq![%Vq'r%Vq!Y%Vq~P#-]OZ9SO~O!Y0rO!Z)Oq~O#[9WO!Y'ia!Z'ia~O!Y5UO!Z({i~P#C|OP[XZ[Xn[X|[X}[X!P[X!V[X!Y[X!h[X!i[X!k[X!o[X#[[X#geX#j[X#k[X#l[X#m[X#n[X#o[X#p[X#q[X#r[X#t[X#v[X#x[X#y[X$O[X(X[X(h[X(o[X(p[X~O!d%TX#r%TX~P'#`O![1[O%c9[O~O'}TO(QUO([9aO~O!Y1gO!Z(|q~O!j9dO~O!j9eO~O!j9fO~O!j9fO~P%[O#[9iO!Y#dy!Z#dy~O!Y#dy!Z#dy~P#C|O!['ZO%c9nO~O#|#zy!Y#zy!Z#zy~P#C|OP$wiZ$win$wi}$wi!h$wi!i$wi!k$wi!o$wi#j$wi#k$wi#l$wi#m$wi#n$wi#o$wi#p$wi#q$wi#r$wi#t$wi#v$wi#x$wi#y$wi#|$wi(X$wi(h$wi!Y$wi!Z$wi~P&'UO|)zO!P){O(p%POP'baZ'baj'ban'ba}'ba!h'ba!i'ba!k'ba!o'ba#j'ba#k'ba#l'ba#m'ba#n'ba#o'ba#p'ba#q'ba#r'ba#t'ba#v'ba#x'ba#y'ba#|'ba(X'ba(h'ba(o'ba!Y'ba!Z'ba~O|)zO!P){OP'daZ'daj'dan'da}'da!h'da!i'da!k'da!o'da#j'da#k'da#l'da#m'da#n'da#o'da#p'da#q'da#r'da#t'da#v'da#x'da#y'da#|'da(X'da(h'da(o'da(p'da!Y'da!Z'da~O(o$}OP%ZiZ%Zij%Zin%Zi|%Zi}%Zi!P%Zi!h%Zi!i%Zi!k%Zi!o%Zi#j%Zi#k%Zi#l%Zi#m%Zi#n%Zi#o%Zi#p%Zi#q%Zi#r%Zi#t%Zi#v%Zi#x%Zi#y%Zi#|%Zi(X%Zi(h%Zi(p%Zi!Y%Zi!Z%Zi~O(p%POP%]iZ%]ij%]in%]i|%]i}%]i!P%]i!h%]i!i%]i!k%]i!o%]i#j%]i#k%]i#l%]i#m%]i#n%]i#o%]i#p%]i#q%]i#r%]i#t%]i#v%]i#x%]i#y%]i#|%]i(X%]i(h%]i(o%]i!Y%]i!Z%]i~O#|$ky!Y$ky!Z$ky~P#C|O#|#_y!Y#_y!Z#_y~P#C|O!d#uO!Y'^q!j'^q~O!Y/cO!j(uy~O!V'`q!Y'`q~P#-]O!V9wO~P#-]O!Y0rO!Z)Oy~O!Y5UO!Z({q~O![1[O%c:OO~O!j:RO~O!['ZO%c:WO~OP$wqZ$wqn$wq}$wq!h$wq!i$wq!k$wq!o$wq#j$wq#k$wq#l$wq#m$wq#n$wq#o$wq#p$wq#q$wq#r$wq#t$wq#v$wq#x$wq#y$wq#|$wq(X$wq(h$wq!Y$wq!Z$wq~P&'UO|)zO!P){O(p%POP'caZ'caj'can'ca}'ca!h'ca!i'ca!k'ca!o'ca#j'ca#k'ca#l'ca#m'ca#n'ca#o'ca#p'ca#q'ca#r'ca#t'ca#v'ca#x'ca#y'ca#|'ca(X'ca(h'ca(o'ca!Y'ca!Z'ca~O|)zO!P){OP'eaZ'eaj'ean'ea}'ea!h'ea!i'ea!k'ea!o'ea#j'ea#k'ea#l'ea#m'ea#n'ea#o'ea#p'ea#q'ea#r'ea#t'ea#v'ea#x'ea#y'ea#|'ea(X'ea(h'ea(o'ea(p'ea!Y'ea!Z'ea~OP$yqZ$yqn$yq}$yq!h$yq!i$yq!k$yq!o$yq#j$yq#k$yq#l$yq#m$yq#n$yq#o$yq#p$yq#q$yq#r$yq#t$yq#v$yq#x$yq#y$yq#|$yq(X$yq(h$yq!Y$yq!Z$yq~P&'UOf%_!Z!Y%_!Z#[%_!Z#|%_!Z~P!0}O!Y'iq!Z'iq~P#C|O!Y#d!Z!Z#d!Z~P#C|O#g%_!ZP%_!ZZ%_!Z`%_!Zn%_!Z}%_!Z!Y%_!Z!h%_!Z!i%_!Z!k%_!Z!o%_!Z#j%_!Z#k%_!Z#l%_!Z#m%_!Z#n%_!Z#o%_!Z#p%_!Z#q%_!Z#r%_!Z#t%_!Z#v%_!Z#x%_!Z#y%_!Z'r%_!Z(X%_!Z(h%_!Z!j%_!Z!V%_!Z'p%_!Z#[%_!Zr%_!Z![%_!Z%c%_!Z!d%_!Z~P#-]OP%_!ZZ%_!Zn%_!Z}%_!Z!h%_!Z!i%_!Z!k%_!Z!o%_!Z#j%_!Z#k%_!Z#l%_!Z#m%_!Z#n%_!Z#o%_!Z#p%_!Z#q%_!Z#r%_!Z#t%_!Z#v%_!Z#x%_!Z#y%_!Z#|%_!Z(X%_!Z(h%_!Z!Y%_!Z!Z%_!Z~P&'UOr(]X~P1qO'|!lO~P!*fO!VeX!YeX#[eX~P'#`OP[XZ[Xn[X|[X}[X!P[X!Y[X!YeX!h[X!i[X!k[X!o[X#[[X#[eX#geX#j[X#k[X#l[X#m[X#n[X#o[X#p[X#q[X#r[X#t[X#v[X#x[X#y[X$O[X(X[X(h[X(o[X(p[X~O!deX!j[X!jeX(heX~P'ASOP:cOQ:cORfOc\u003C[Od!iOlkOn:cOokOpkOvkOx:cOz:cO!PWO!TkO!UkO![XO!f:fO!kZO!n:cO!o:cO!p:cO!r:gO!t:jO!w!hO$T!kO'{)YO'}TO(QUO(XVO(g[O(t\u003CYO~O!Y:wO!Z$ma~Og%VOl%WOn$tOo$sOp$sOv%XOx%YOz;RO!P${O![$|O!f\u003CaO!k$xO#f;XO$T%^O$o;TO$q;VO$t%_O'{(pO'}TO(QUO(X$uO(o$}O(p%PO~O#s)aO~P'ExO!Z[X!ZeX~P'ASO#g:kO~O!d#uO#g:kO~O#[:{O~O#r:pO~O#[;ZO!Y(mX!Z(mX~O#[:{O!Y(kX!Z(kX~O#g;[O~Of;^O~P!0}O#g;cO~O#g;dO~O!d#uO#g;eO~O!d#uO#g;[O~O#|;fO~P#C|O#g;gO~O#g;hO~O#g;mO~O#g;nO~O#g;oO~O#g;pO~O#|;qO~P!0}O#|;rO~P!0}O!i#P#Q#S#T#W#e#f#q(t$o$q$t%W%b%c%d%k%m%p%q%s%u~'vS#k!U't'|#lo#j#mn|'u$Y'u'{$[([~\\\",goto:\\\"$2p)SPPPPP)TPP)WP)iP*x.|PPPP5pPP6WPP\u003CS?gP?zP?zPPP?zPAxP?zP?zP?zPA|PPBRPBlPGdPPPGhPPPPGhJiPPPJoKjPGhPMxPPPP!!WGhPPPGhPGhP!$fGhP!'z!(|!)VP!)y!)}!)yPPPPP!-Y!(|PP!-v!.pP!1dGhGh!1i!4s!9Y!9Y!=OPPP!=VGhPPPPPPPPPPP!@dP!AqPPGh!CSPGhPGhGhGhGhPGh!DfP!GnP!JrP!Jv!KQ!KU!KUP!GkP!KY!KYP!N^P!NbGhGh!Nh##k?zP?zP?z?zP#$v?z?z#'O?z#)k?z#+m?z?z#,[#.f#.f#.j#.r#.f#.zP#.fP?z#/d?z#3R?z?z5pPPP#6vPPP#7a#7aP#7aP#7w#7aPP#7}P#7tP#7t#8b#7t#8|#9S5m)W#9V)WP#9^#9^#9^P)WP)WP)WP)WPP)WP#9d#9gP#9g)WP#9kP#9nP)WP)WP)WP)WP)WP)W)WPP#9t#9z#:V#:]#:c#:i#:o#:}#;T#;Z#;e#;k#;u#\u003CU#\u003C[#\u003C|#=`#=f#=l#=z#>a#@O#@^#@d#Ax#BW#Cr#DQ#DW#D^#Dd#Dn#Dt#Dz#EU#Eh#EnPPPPPPPPPP#EtPPPPPPP#Fi#Ip#KP#KW#K`PPPP$!d$%Z$+r$+u$+x$,q$,t$,w$-O$-WPP$-^$-b$.Y$/X$/]$/qPP$/u$/{$0PP$0S$0W$0Z$1P$1h$2P$2T$2W$2Z$2a$2d$2h$2lR!{RoqOXst!Z#c%j&m&o&p&r,h,m1w1zY!uQ'Z-Y1[5]Q%pvQ%xyQ&P|Q&e!VS'R!e-QQ'a!iS'g!r!xS*c$|*hQ+f%yQ+s&RQ,X&_Q-W'YQ-b'bQ-j'hQ/|*jQ1f,YR;Y:g%OdOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&m&o&p&r&v'O']'m'}(P(V(^(r(v(z)y+O+S,e,h,m-^-f-t-z.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3Z5Y5d5t5u5x6]7w7|8]8gS#p]:d!r)[$[$m'S)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]Q*u%ZQ+k%{Q,Z&bQ,b&jQ.c;QQ0h+^Q0l+`Q0w+lQ1n,`Q2{.[Q4v0rQ5k1gQ6i3PQ6u;RQ7h4wR8m6j&|kOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]t!nQ!r!u!x!y'R'Y'Z'g'h'i-Q-W-Y-j1[5]5_$v$si#u#w$c$d$x${%O%Q%[%]%a)u){)}*P*R*Y*`*p*q+]+`+w+z.Z.i/Z/j/k/m0Q0S0^1R1U1^3O3x4S4[4f4n4p5c6g7T7^7y8j8w9[9n:O:W:y:z:|:};O;P;S;T;U;V;W;X;_;`;a;b;c;d;g;h;i;j;k;l;m;n;q;r\u003CY\u003Cb\u003Cc\u003Cf\u003CgQ&S|Q'P!eS'V%f-TQ+k%{Q,Z&bQ0]*yQ0w+lQ0|+rQ1m,_Q1n,`Q4v0rQ5P1OQ5k1gQ5n1iQ5o1lQ7h4wQ7k4|Q8U5qQ9V7lR9b8RrnOXst!V!Z#c%j&d&m&o&p&r,h,m1w1zR,]&f&v^OPXYstuvwz!Z!`!g!j!o#R#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m%j%p%}&f&i&j&m&o&p&r&v'O']'m(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C[\u003C][#[WZ#V#Y'S'}!S%gm#g#h#k%b%e(W(b(c(d+Q+R+T,d,z-x.O.P.Q.S2P2w2x6R6dQ%sxQ%wyS%||&RQ&Y!TQ'^!hQ'`!iQ(k#rS*V$x*ZS+e%x%yQ+i%{Q,S&]Q,W&_S-a'a'bQ.^(lQ/g*WQ0p+fQ0v+lQ0x+mQ0{+qQ1a,TS1e,X,YQ2i-bQ3y/cQ4u0rQ4y0uQ5O0}Q5j1fQ7Q3zQ7g4wQ7j4{Q9R7fR9y9S!O$zi#w%O%Q%[%]%a)}*P*Y*p*q.i/j0Q0S0^3x4f8w\u003CY\u003Cb\u003Cc!S%uy!i!t%w%x%y'Q'`'a'b'f'p*b+e+f,}-a-b-i/t0p2b2i2p4^Q+_%sQ+x&VQ+{&WQ,V&_Q.](kQ1`,SU1d,W,X,YQ3Q.^Q5e1aS5i1e1fQ8Q5j#W\u003C^#u$c$d$x${)u){*R*`+]+`+w+z.Z/Z/k/m1R1U1^3O4S4[4n4p5c6g7T7^7y8j9[9n:O:W:|;O;S;U;W;_;a;c;g;i;k;m;q\u003Cf\u003Cgo\u003C_:y:z:};P;T;V;X;`;b;d;h;j;l;n;rW%Ti%V*r\u003CYS&V!Q&dQ&W!RQ&X!SR+v&T$w%Si#u#w$c$d$x${%O%Q%[%]%a)u){)}*P*R*Y*`*p*q+]+`+w+z.Z.i/Z/j/k/m0Q0S0^1R1U1^3O3x4S4[4f4n4p5c6g7T7^7y8j8w9[9n:O:W:y:z:|:};O;P;S;T;U;V;W;X;_;`;a;b;c;d;g;h;i;j;k;l;m;n;q;r\u003CY\u003Cb\u003Cc\u003Cf\u003CgT)v$u)wV*v%Z;Q;RU'V!e%f-TS(y#y#zQ+p&OS.V(g(hQ1V+|Q4g0ZR7p5U&|kOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]$i$`c#X#d%n%o%q'|(S(n(u(})O)P)Q)R)S)T)U)V)W)X)Z)^)b)l+Z+o-O-m-r-w-y.h.n.r.t.u.v/V0_2W2Z2k2r3Y3_3`3a3b3c3d3e3f3g3h3i3j3k3n3o3t4k4s6U6[6a6o6p6y6z7r8a8e8n8t8u9k9{:S:e\u003CPT#SV#T&}kOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]Q'T!eR2^-Qv!nQ!e!r!u!x!y'R'Y'Z'g'h'i-Q-W-Y-j1[5]5_S*b$|*hS/t*c*jQ/}*kQ1X,OQ4^/|R4a0PnqOXst!Z#c%j&m&o&p&r,h,m1w1zQ&t!^Q'q!wS(m#t:kQ+c%vQ,Q&YQ,R&[Q-_'_Q-l'jS.g(r;[S0`+O;eQ0n+dQ1Z,PQ2O,oQ2Q,pQ2Y,{Q2g-`Q2j-dS4l0a;oQ4q0oS4t0q;pQ6T2[Q6X2hQ6^2oQ7e4rQ8b6VQ8c6YQ8f6_R9h8_$d$_c#X#d%o%q'|(S(n(u(})O)P)Q)R)S)T)U)V)W)X)Z)^)b)l+Z+o-O-m-r-w-y.h.n.r.u.v/V0_2W2Z2k2r3Y3_3`3a3b3c3d3e3f3g3h3i3j3k3n3o3t4k4s6U6[6a6o6p6y6z7r8a8e8n8t8u9k9{:S:e\u003CPS(j#o'dU*o%R(q3mS+Y%n.tQ2|0hQ6f2{Q8l6iR9o8m$d$^c#X#d%o%q'|(S(n(u(})O)P)Q)R)S)T)U)V)W)X)Z)^)b)l+Z+o-O-m-r-w-y.h.n.r.u.v/V0_2W2Z2k2r3Y3_3`3a3b3c3d3e3f3g3h3i3j3k3n3o3t4k4s6U6[6a6o6p6y6z7r8a8e8n8t8u9k9{:S:e\u003CPS(i#o'dS({#z$_S+X%n.tS.W(h(jQ.w)]Q0e+YR2y.X&|kOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]S#p]:dQ&o!XQ&p!YQ&r![Q&s!]R1v,kQ'[!hQ+[%sQ-]'^S.Y(k+_Q2e-[W2}.].^0g0iQ6W2fU6e2z2|3QS8i6f6hS9m8k8lS:U9l9oQ:^:VR:a:_U!vQ'Z-YT5Z1[5]!Q_OXZ`st!V!Z#c#g%b%j&d&f&m&o&p&r(d,h,m.P1w1z]!pQ!r'Z-Y1[5]T#p]:d%Y{OPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&j&m&o&p&r&v'O']'m'}(P(V(^(r(v(z)y+O+S+^,e,h,m-^-f-t-z.[.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3P3Z5Y5d5t5u5x6]6j7w7|8]8gS(y#y#zS.V(g(h!s;v$[$m'S)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]Y!tQ'Z-Y1[5]Q'f!rS'p!u!xS'r!y5_S-i'g'hQ-k'iR2p-jQ'o!tS(`#f1qS-h'f'rQ/f*VQ/r*bQ2q-kQ4O/gS4X/s/}Q7P3yS7[4_4aQ8y7QR9Q7_Q#vbQ'n!tS(_#f1qS(a#l*}Q+P%cQ+a%tQ+g%zU-g'f'o'rQ-{(`Q/e*VQ/q*bQ/w*eQ0m+bQ1b,US2n-h-kQ2v.TS3}/f/gS4W/r/}Q4Z/vQ4]/xQ5g1cQ6`2qQ7O3yQ7S4OS7W4X4aQ7]4`Q8O5hS8x7P7QQ8|7XQ9O7[Q9_8PQ9u8yQ9v8}Q9x9QQ:Q9`Q:Y9wQ;y;tQ\u003CU;}R\u003CV\u003COV!vQ'Z-Y%YaOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&j&m&o&p&r&v'O']'m'}(P(V(^(r(v(z)y+O+S+^,e,h,m-^-f-t-z.[.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3P3Z5Y5d5t5u5x6]6j7w7|8]8gS#vz!j!r;s$[$m'S)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]R;y\u003C[%YbOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&j&m&o&p&r&v'O']'m'}(P(V(^(r(v(z)y+O+S+^,e,h,m-^-f-t-z.[.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3P3Z5Y5d5t5u5x6]6j7w7|8]8gQ%cj!S%ty!i!t%w%x%y'Q'`'a'b'f'p*b+e+f,}-a-b-i/t0p2b2i2p4^S%zz!jQ+b%uQ,U&_W1c,V,W,X,YU5h1d1e1fS8P5i5jQ9`8Q!r;t$[$m'S)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]Q;}\u003CZR\u003CO\u003C[$|eOPXYstuvw!Z!`!g!o#R#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&m&o&p&r&v'O']'m(P(V(^(r(v(z)y+O+S+^,e,h,m-^-f-t-z.[.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3P3Z5Y5d5t5u5x6]6j7w7|8]8gY#aWZ#V#Y'}!S%gm#g#h#k%b%e(W(b(c(d+Q+R+T,d,z-x.O.P.Q.S2P2w2x6R6dQ,c&j!p;u$[$m)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]R;x'SS'W!e%fR2`-T%OdOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&m&o&p&r&v'O']'m'}(P(V(^(r(v(z)y+O+S,e,h,m-^-f-t-z.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3Z5Y5d5t5u5x6]7w7|8]8g!r)[$[$m'S)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]Q,b&jQ0h+^Q2{.[Q6i3PR8m6j!b$Uc#X%n'|(S(n(u)W)X)^)b+o-m-r-w-y.h.n/V0_2k2r3Y3k4k4s6[6a6o8e9k:e!P:r)Z)l-O.t2W2Z3_3i3j3n3t6U6p6y6z7r8a8n8t8u9{:S\u003CP!f$Wc#X%n'|(S(n(u)T)U)W)X)^)b+o-m-r-w-y.h.n/V0_2k2r3Y3k4k4s6[6a6o8e9k:e!T:t)Z)l-O.t2W2Z3_3f3g3i3j3n3t6U6p6y6z7r8a8n8t8u9{:S\u003CP!^$[c#X%n'|(S(n(u)^)b+o-m-r-w-y.h.n/V0_2k2r3Y3k4k4s6[6a6o8e9k:eQ3x/az\u003C])Z)l-O.t2W2Z3_3n3t6U6p6y6z7r8a8n8t8u9{:S\u003CPQ\u003Cb\u003CdR\u003Cc\u003Ce&|kOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]S$nh$oR3q.z'TgOPWXYZhstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m$o%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.z.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]T$jf$pQ$hfS)e$k)iR)q$pT$if$pT)g$k)i'ThOPWXYZhstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$[$a$e$m$o%j%p%}&f&i&j&m&o&p&r&v'O'S']'m'}(P(V(^(r(v(z)n)y+O+S+^,e,h,m,y,|-^-f-t-z.[.l.s.z.{0[0a0q1_1o1p1r1t1w1z1|2]2m2s3P3Z3p5W5Y5d5t5u5x6S6]6j7w7|8]8g9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]T$nh$oQ$qhR)p$o%YjOPWXYZstuvw!Z!`!g!o#R#V#Y#c#n#t#x#{$O$P$Q$R$S$T$U$V$W$X$Y$a$e%j%p%}&f&i&j&m&o&p&r&v'O']'m'}(P(V(^(r(v(z)y+O+S+^,e,h,m-^-f-t-z.[.l.s0[0a0q1_1o1p1r1t1w1z1|2m2s3P3Z5Y5d5t5u5x6]6j7w7|8]8g!s\u003CZ$[$m'S)n,y,|.{2]3p5W6S9W9i:c:f:g:j:k:l:m:n:o:p:q:r:s:t:u:v:w:{;Y;Z;[;^;e;f;o;p\u003C]#clOPXZst!Z!`!o#R#c#n#{$m%j&f&i&j&m&o&p&r&v'O'](z)n+S+^,e,h,m-^.[.{0[1_1o1p1r1t1w1z1|3P3p5Y5d5t5u5x6j7w7|8]!O%Ri#w%O%Q%[%]%a)}*P*Y*p*q.i/j0Q0S0^3x4f8w\u003CY\u003Cb\u003Cc#W(q#u$c$d$x${)u){*R*`+]+`+w+z.Z/Z/k/m1R1U1^3O4S4[4n4p5c6g7T7^7y8j9[9n:O:W:|;O;S;U;W;_;a;c;g;i;k;m;q\u003Cf\u003CgQ*z%_Q/W)zo3m:y:z:};P;T;V;X;`;b;d;h;j;l;n;r!O$yi#w%O%Q%[%]%a)}*P*Y*p*q.i/j0Q0S0^3x4f8w\u003CY\u003Cb\u003CcQ*[$zS*e$|*hQ*{%`Q/x*f#W;{#u$c$d$x${)u){*R*`+]+`+w+z.Z/Z/k/m1R1U1^3O4S4[4n4p5c6g7T7^7y8j9[9n:O:W:|;O;S;U;W;_;a;c;g;i;k;m;q\u003Cf\u003Cgn;|:y:z:};P;T;V;X;`;b;d;h;j;l;n;rQ\u003CQ\u003C^Q\u003CR\u003C_Q\u003CS\u003C`R\u003CT\u003Ca!O%Ri#w%O%Q%[%]%a)}*P*Y*p*q.i/j0Q0S0^3x4f8w\u003CY\u003Cb\u003Cc#W(q#u$c$d$x${)u){*R*`+]+`+w+z.Z/Z/k/m1R1U1^3O4S4[4n4p5c6g7T7^7y8j9[9n:O:W:|;O;S;U;W;_;a;c;g;i;k;m;q\u003Cf\u003Cgo3m:y:z:};P;T;V;X;`;b;d;h;j;l;n;rnoOXst!Z#c%j&m&o&p&r,h,m1w1zQ*_${Q,v&yQ,w&{R4R/k$v%Si#u#w$c$d$x${%O%Q%[%]%a)u){)}*P*R*Y*`*p*q+]+`+w+z.Z.i/Z/j/k/m0Q0S0^1R1U1^3O3x4S4[4f4n4p5c6g7T7^7y8j8w9[9n:O:W:y:z:|:};O;P;S;T;U;V;W;X;_;`;a;b;c;d;g;h;i;j;k;l;m;n;q;r\u003CY\u003Cb\u003Cc\u003Cf\u003CgQ+y&WQ1T+{Q5S1SR7o5TT*g$|*hS*g$|*hT5[1[5]S/v*d5YT4`0O7wQ+a%tQ/w*eQ0m+bQ1b,UQ5g1cQ8O5hQ9_8PR:Q9`!O%Oi#w%O%Q%[%]%a)}*P*Y*p*q.i/j0Q0S0^3x4f8w\u003CY\u003Cb\u003Ccr)}$v(s*O*n*|/i0U0V3W4P4j6}7`9t;z\u003CW\u003CXS0Q*m0R#W:|#u$c$d$x${)u){*R*`+]+`+w+z.Z/Z/k/m1R1U1^3O4S4[4n4p5c6g7T7^7y8j9[9n:O:W:|;O;S;U;W;_;a;c;g;i;k;m;q\u003Cf\u003Cgn:}:y:z:};P;T;V;X;`;b;d;h;j;l;n;r!^;_(o)`*U*^._.b.f/S/X/a/n0f1Q1S3T4Q4U5R5T6k6n7U7Y7b7d8{9P:X\u003Cd\u003Ce`;`3l6q6t6x8o9p9s:bS;i.a3UT;j6s8r!O%Qi#w%O%Q%[%]%a)}*P*Y*p*q.i/j0Q0S0^3x4f8w\u003CY\u003Cb\u003Ccv*P$v(s*Q*m*|/]/i0U0V3W4P4b4j6}7`9t;z\u003CW\u003CXS0S*n0T#W;O#u$c$d$x${)u){*R*`+]+`+w+z.Z/Z/k/m1R1U1^3O4S4[4n4p5c6g7T7^7y8j9[9n:O:W:|;O;S;U;W;_;a;c;g;i;k;m;q\u003Cf\u003Cgn;P:y:z:};P;T;V;X;`;b;d;h;j;l;n;r!b;a(o)`*U*^.`.a.f/S/X/a/n0f1Q1S3R3T4Q4U5R5T6k6l6n7U7Y7b7d8{9P:X\u003Cd\u003Ced;b3l6r6s6x8o8p9p9q9s:bS;k.b3VT;l6t8srnOXst!V!Z#c%j&d&m&o&p&r,h,m1w1zQ&a!UR,e&jrnOXst!V!Z#c%j&d&m&o&p&r,h,m1w1zR&a!UQ+}&XR1P+vsnOXst!V!Z#c%j&d&m&o&p&r,h,m1w1zQ1],SS5b1`1aU7x5`5a5eS9Z7z7{S9|9Y9]Q:Z9}R:`:[Q&h!VR,^&dR5n1iS%||&RR0x+mQ&m!WR,h&nR,n&sT1x,m1zR,r&tQ,q&tR2R,rQ't!zR-n'tSsOtQ#cXT%ms#cQ!}TR'v!}Q#QUR'x#QQ)w$uR/T)wQ#TVR'z#TQ#WWU(Q#W(R-uQ(R#XR-u(SQ-R'TR2_-RQ.j(sR3X.jQ.m(uS3[.m3]R3].nQ-Y'ZR2c-YY!rQ'Z-Y1[5]R'e!rS#^W%eU(X#^(Y-vQ(Y#_R-v(TQ-U'WR2a-Ut`OXst!V!Z#c%j&d&f&m&o&p&r,h,m1w1zS#gZ%bU#q`#g.PR.P(dQ(e#iQ-|(aW.U(e-|2t6bQ2t-}R6b2uQ)i$kR.|)iQ$ohR)o$oQ$bcU)_$b-q:xQ-q:eR:x)lQ/d*VW3{/d3|7R8zU3|/e/f/gS7R3}4OR8z7S$X)|$v(o(s)`*U*^*m*n*w*x*|.a.b.d.e.f/S/X/]/_/a/i/n0U0V0f1Q1S3R3S3T3W3l4P4Q4U4b4d4j5R5T6k6l6m6n6s6t6v6w6x6}7U7Y7`7b7d8o8p8q8{9P9p9q9r9s9t:X:b;z\u003CW\u003CX\u003Cd\u003CeQ/l*^U4T/l4V7VQ4V/nR7V4UQ*h$|R/z*hr*O$v(s*m*n*|/i0U0V3W4P4j6}7`9t;z\u003CW\u003CX!^._(o)`*U*^.a.b.f/S/X/a/n0f1Q1S3T4Q4U5R5T6k6n7U7Y7b7d8{9P:X\u003Cd\u003CeU/^*O._6qa6q3l6s6t6x8o9p9s:bQ0R*mQ3U.aU4c0R3U8rR8r6sv*Q$v(s*m*n*|/]/i0U0V3W4P4b4j6}7`9t;z\u003CW\u003CX!b.`(o)`*U*^.a.b.f/S/X/a/n0f1Q1S3R3T4Q4U5R5T6k6l6n7U7Y7b7d8{9P:X\u003Cd\u003CeU/`*Q.`6re6r3l6s6t6x8o8p9p9q9s:bQ0T*nQ3V.bU4e0T3V8sR8s6tQ*s%UR0X*sQ4o0fR7c4oQ+U%hR0d+UQ5V1VS7q5V9XR9X7rQ,P&YR1Y,PQ5]1[R7u5]Q1h,ZS5l1h8SR8S5nQ0s+iW4x0s4z7i9TQ4z0vQ7i4yR9T7jQ+n%|R0y+nQ1z,mR5|1zYrOXst#cQ&q!ZQ+W%jQ,g&mQ,i&oQ,j&pQ,l&rQ1u,hS1x,m1zR5{1wQ%lpQ&u!_Q&x!aQ&z!bQ&|!cQ'l!tQ+V%iQ+c%vQ+u&SQ,]&hQ,t&wW-e'f'n'o'rQ-l'jQ/y*gQ0n+dS1k,^,aQ2S,sQ2T,vQ2U,wQ2j-dW2l-g-h-k-mQ4q0oQ4}0|Q5Q1QQ5f1bQ5p1mQ5z1vU6Z2k2n2qQ6^2oQ7e4rQ7m5PQ7n5RQ7t5[Q7}5gQ8T5oS8d6[6`Q8f6_Q9U7kQ9^8OQ9c8UQ9j8eQ9z9VQ:P9_Q:T9kR:]:QQ%vyQ'_!iQ'j!tU+d%w%x%yQ,{'QU-`'`'a'bS-d'f'pQ/p*bS0o+e+fQ2[,}S2h-a-bQ2o-iQ4Y/tQ4r0pQ6V2bQ6Y2iQ6_2pR7Z4^S$wi\u003CYR*t%VU%Ui%V\u003CYR0W*rQ$viS(o#u+`Q(s#wS)`$c$dQ*U$xQ*^${Q*m%OQ*n%QQ*w%[Q*x%]Q*|%aQ.a:|Q.b;OQ.d;SQ.e;UQ.f;WQ/S)uS/X){/ZQ/])}Q/_*PQ/a*RQ/i*YQ/n*`Q0U*pQ0V*qh0f+].Z1^3O5c6g7y8j9[9n:O:WQ1Q+wQ1S+zQ3R;_Q3S;aQ3T;cQ3W.iS3l:y:zQ4P/jQ4Q/kQ4U/mQ4b0QQ4d0SQ4j0^Q5R1RQ5T1UQ6k;gQ6l;iQ6m;kQ6n;mQ6s:}Q6t;PQ6v;TQ6w;VQ6x;XQ6}3xQ7U4SQ7Y4[Q7`4fQ7b4nQ7d4pQ8o;dQ8p;`Q8q;bQ8{7TQ9P7^Q9p;hQ9q;jQ9r;lQ9s;nQ9t8wQ:X;qQ:b;rQ;z\u003CYQ\u003CW\u003CbQ\u003CX\u003CcQ\u003Cd\u003CfR\u003Ce\u003CgnpOXst!Z#c%j&m&o&p&r,h,m1w1zQ!fPS#eZ#nQ&w!`U'c!o5Y7wQ'y#RQ(|#{Q)m$mS,a&f&iQ,f&jQ,s&vQ,x'OQ-[']Q.p(zQ/Q)nQ0b+SQ0i+^Q1s,eQ2f-^Q2|.[Q3s.{Q4h0[Q5a1_Q5r1oQ5s1pQ5w1rQ5y1tQ6O1|Q6f3PQ6{3pQ7{5dQ8X5tQ8Y5uQ8[5xQ8l6jQ9]7|R9g8]#WcOPXZst!Z!`!o#c#n#{%j&f&i&j&m&o&p&r&v'O'](z+S+^,e,h,m-^.[0[1_1o1p1r1t1w1z1|3P5Y5d5t5u5x6j7w7|8]Q#XWQ#dYQ%nuQ%ovS%qw!gS'|#V(PQ(S#YQ(n#tQ(u#xQ(}$OQ)O$PQ)P$QQ)Q$RQ)R$SQ)S$TQ)T$UQ)U$VQ)V$WQ)W$XQ)X$YQ)Z$[Q)^$aQ)b$eW)l$m)n.{3pQ+Z%pQ+o%}S-O'S2]Q-m'mS-r'}-tQ-w(VQ-y(^Q.h(rQ.n(vQ.r:cQ.t:fQ.u:gQ.v:jQ/V)yQ0_+OQ2W,yQ2Z,|Q2k-fQ2r-zQ3Y.lQ3_:kQ3`:lQ3a:mQ3b:nQ3c:oQ3d:pQ3e:qQ3f:rQ3g:sQ3h:tQ3i:uQ3j:vQ3k.sQ3n:{Q3o;YQ3t:wQ4k0aQ4s0qQ6U;ZQ6[2mQ6a2sQ6o3ZQ6p;[Q6y;^Q6z;eQ7r5WQ8a6SQ8e6]Q8n;fQ8t;oQ8u;pQ9k8gQ9{9WQ:S9iQ:e#RR\u003CP\u003C]R#ZWR'U!eY!tQ'Z-Y1[5]S'Q!e-QQ'f!rS'p!u!xS'r!y5_S,}'R'YS-i'g'hQ-k'iQ2b-WR2p-jR(t#wR(w#xQ!fQT-X'Z-Y]!qQ!r'Z-Y1[5]Q#o]R'd:dT#jZ%bS#iZ%bS%hm,dU(a#g#h#kS-}(b(cQ.R(dQ0c+TQ2u.OU2v.P.Q.SS6c2w2xR8h6d`#]W#V#Y%e'}(W+Q-xr#fZm#g#h#k%b(b(c(d+T.O.P.Q.S2w2x6dQ1q,dQ2X,zQ6Q2PQ8`6RT;w'S+RT#`W%eS#_W%eS(O#V(WS(T#Y+QS-P'S+RT-s'}-xT'X!e%fQ$kfR)s$pT)h$k)iR3r.zT*X$x*ZR*a${Q0g+]Q2z.ZQ5`1^Q6h3OQ7z5cQ8k6gQ9Y7yQ9l8jQ9}9[Q:V9nQ:[:OR:_:WnqOXst!Z#c%j&m&o&p&r,h,m1w1zQ&g!VR,]&dtmOXst!U!V!Z#c%j&d&m&o&p&r,h,m1w1zR,d&jT%im,dR1W+|R,[&bQ&Q|R+t&RR+j%{T&k!W&nT&l!W&nT1y,m1z\\\",nodeNames:\\\"⚠ ArithOp ArithOp JSXStartTag LineComment BlockComment Script Hashbang ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > \u003C TypeParamList TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . ?. PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewExpression new TypeArgList CompareOp \u003C ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies in const CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast ArrowFunction TypeParamList SequenceExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem\\\",maxTerm:371,context:trackNewline,nodeProps:[[\\\"isolate\\\",-8,4,5,13,33,35,48,50,52,\\\"\\\"],[\\\"group\\\",-26,8,16,18,65,201,205,209,210,212,215,218,228,230,236,238,240,242,245,251,257,259,261,263,265,267,268,\\\"Statement\\\",-32,12,13,28,31,32,38,48,51,52,54,59,67,75,79,81,83,84,106,107,116,117,134,137,139,140,141,142,144,145,164,165,167,\\\"Expression\\\",-23,27,29,33,37,39,41,168,170,172,173,175,176,177,179,180,181,183,184,185,195,197,199,200,\\\"Type\\\",-3,87,99,105,\\\"ClassItem\\\"],[\\\"openedBy\\\",22,\\\"\u003C\\\",34,\\\"InterpolationStart\\\",53,\\\"[\\\",57,\\\"{\\\",72,\\\"(\\\",157,\\\"JSXStartCloseTag\\\"],[\\\"closedBy\\\",23,\\\">\\\",36,\\\"InterpolationEnd\\\",47,\\\"]\\\",58,\\\"}\\\",73,\\\")\\\",162,\\\"JSXEndTag\\\"]],propSources:[jsHighlight],skippedNodes:[0,4,5,271],repeatNodeCount:37,tokenData:\\\"$Fj(CSR!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#8g!R![#:v![!]#Gv!]!^#IS!^!_#J^!_!`#Ns!`!a$#_!a!b$(l!b!c$,k!c!}Er!}#O$-u#O#P$/P#P#Q$4h#Q#R$5r#R#SEr#S#T$7P#T#o$8Z#o#p$\u003Ck#p#q$=a#q#r$>q#r#s$?}#s$f%Z$f$g+g$g#BYEr#BY#BZ$AX#BZ$ISEr$IS$I_$AX$I_$I|Er$I|$I}$Dd$I}$JO$Dd$JO$JTEr$JT$JU$AX$JU$KVEr$KV$KW$AX$KW&FUEr&FU&FV$AX&FV;'SEr;'S;=`I|\u003C%l?HTEr?HT?HU$AX?HUOEr(n%d_$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z&j&hT$f&jO!^&c!_#o&c#p;'S&c;'S;=`&w\u003C%lO&c&j&zP;=`\u003C%l&c'|'U]$f&j(R!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l\u003C%lO&}!b(SU(R!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f\u003C%lO'}!b(iP;=`\u003C%l'}'|(oP;=`\u003C%l&}'[(y]$f&j(OpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a\u003C%lO(rp)wU(OpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z\u003C%lO)rp*^P;=`\u003C%l)r'[*dP;=`\u003C%l(r#S*nX(Op(R!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z\u003C%lO*g#S+^P;=`\u003C%l*g(n+dP;=`\u003C%l%Z(CS+rq$f&j(Op(R!b't(;dOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a\u003C%l?HT%Z?HT?HU+g?HUO%Z(CS.ST(P#S$f&j'u(;dO!^&c!_#o&c#p;'S&c;'S;=`&w\u003C%lO&c(CS.n_$f&j(Op(R!b'u(;dOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#`/x`$f&j!o$Ip(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S1V`#t$Id$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S2d_#t$Id$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/|3l_'}$(n$f&j(R!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X\u003C%lO4k(^4r_$f&j(R!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X\u003C%lO4k&z5vX$f&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h\u003C%lO5q&z6jT$a`$f&jO!^&c!_#o&c#p;'S&c;'S;=`&w\u003C%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b\u003C%lO6y`7bO$a``7eP;=`\u003C%l6y&z7kP;=`\u003C%l5q(^7w]$a`$f&j(R!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l\u003C%lO&}!r8uZ(R!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R\u003C%lO8p!r9oU$a`(R!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f\u003C%lO'}!r:UP;=`\u003C%l8p(^:[P;=`\u003C%l4k#%|:hh$f&j(Op(R!bOY%ZYZ&cZq%Zqr\u003CSrs&}st%ZtuCruw%Zwx(rx!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El\u003C%lOCr(r\u003C__VS$f&j(Op(R!bOY\u003CSYZ&cZr\u003CSrs=^sw\u003CSwx@nx!^\u003CS!^!_Bm!_#O\u003CS#O#P>`#P#o\u003CS#o#pBm#p;'S\u003CS;'S;=`Cl\u003C%lO\u003CS(Q=g]VS$f&j(R!bOY=^YZ&cZw=^wx>`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h\u003C%lO=^&n>gXVS$f&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k\u003C%lO>`S?XSVSOY?SZ;'S?S;'S;=`?e\u003C%lO?SS?hP;=`\u003C%l?S&n?nP;=`\u003C%l>`!f?xWVS(R!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b\u003C%lO?q!f@eP;=`\u003C%l?q(Q@kP;=`\u003C%l=^'`@w]VS$f&j(OpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg\u003C%lO@ntAwWVS(OpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba\u003C%lOAptBdP;=`\u003C%lAp'`BjP;=`\u003C%l@n#WBvYVS(Op(R!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf\u003C%lOBm#WCiP;=`\u003C%lBm(rCoP;=`\u003C%l\u003CS#%|C}i$f&j(g!L^(Op(R!bOY%ZYZ&cZr%Zrs&}st%ZtuCruw%Zwx(rx!Q%Z!Q![Cr![!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El\u003C%lOCr#%|EoP;=`\u003C%lCr(CSFRk$f&j(Op(R!b$Y#t'{&;d([!LYOY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|\u003C%lOEr+dHRk$f&j(Op(R!b$Y#tOY%ZYZ&cZr%Zrs&}st%ZtuGvuw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Gv![!^%Z!^!_*g!_!c%Z!c!}Gv!}#O%Z#O#P&c#P#R%Z#R#SGv#S#T%Z#T#oGv#o#p*g#p$g%Z$g;'SGv;'S;=`Iv\u003C%lOGv+dIyP;=`\u003C%lGv(CSJPP;=`\u003C%lEr%#SJ_`$f&j(Op(R!b#l$IdOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#SKl_$f&j$O$Id(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z&COLva(p&;`$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sv%ZvwM{wx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#SNW`$f&j#x$Id(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/|! c_(Q$)`$f&j(OpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c\u003C%lO!!b'l!!i_$f&j(OpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c\u003C%lO!!b&z!#mX$f&jOw!#hwx6cx!^!#h!^!_!$Y!_#o!#h#o#p!$Y#p;'S!#h;'S;=`!$r\u003C%lO!#h`!$]TOw!$Ywx7]x;'S!$Y;'S;=`!$l\u003C%lO!$Y`!$oP;=`\u003C%l!$Y&z!$uP;=`\u003C%l!#h'l!%R]$a`$f&j(OpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a\u003C%lO(r!Q!&PZ(OpOY!%zYZ!$YZr!%zrs!$Ysw!%zwx!&rx#O!%z#O#P!$Y#P;'S!%z;'S;=`!']\u003C%lO!%z!Q!&yU$a`(OpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z\u003C%lO)r!Q!'`P;=`\u003C%l!%z'l!'fP;=`\u003C%l!!b(*Q!'t_!k(!b$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z!'l!)O_!jM|$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z'+h!*[b$f&j(Op(R!b'|#)d#m$IdOY%ZYZ&cZr%Zrs&}sw%Zwx(rxz%Zz{!+d{!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S!+o`$f&j(Op(R!b#j$IdOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z&-O!,|`$f&j(Op(R!bn&%`OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z&C[!.Z_!Y&;l$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(CS!/ec$f&j(Op(R!b|'\u003CnOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!0p!P!Q%Z!Q![!3Y![!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z!'d!0ya$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!2O!P!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z!'d!2Z_!XMt$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l!3eg$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!3Y![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S!3Y#S#X%Z#X#Y!4|#Y#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l!5Vg$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx{%Z{|!6n|}%Z}!O!6n!O!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l!6wc$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l!8_c$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(CS!9uf$f&j(Op(R!b#k$IdOY!;ZYZ&cZr!;Zrs!\u003Cnsw!;Zwx!Kpxz!;Zz{#,f{!P!;Z!P!Q#-{!Q!^!;Z!^!_#'Z!_!`#5k!`!a#7Q!a!}!;Z!}#O#*}#O#P!Dj#P#o!;Z#o#p#'Z#p;'S!;Z;'S;=`#,`\u003C%lO!;Z(r!;fb$f&j(Op(R!b!USOY!;ZYZ&cZr!;Zrs!\u003Cnsw!;Zwx!Kpx!P!;Z!P!Q#%Z!Q!^!;Z!^!_#'Z!_!}!;Z!}#O#*}#O#P!Dj#P#o!;Z#o#p#'Z#p;'S!;Z;'S;=`#,`\u003C%lO!;Z(Q!\u003Cw`$f&j(R!b!USOY!\u003CnYZ&cZw!\u003Cnwx!=yx!P!\u003Cn!P!Q!Eb!Q!^!\u003Cn!^!_!GY!_!}!\u003Cn!}#O!Ja#O#P!Dj#P#o!\u003Cn#o#p!GY#p;'S!\u003Cn;'S;=`!Kj\u003C%lO!\u003Cn&n!>Q^$f&j!USOY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@Y!_!}!=y!}#O!Bw#O#P!Dj#P#o!=y#o#p!@Y#p;'S!=y;'S;=`!E[\u003C%lO!=y&n!?Ta$f&j!USO!^&c!_#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w\u003C%lO&cS!@_X!USOY!@YZ!P!@Y!P!Q!@z!Q!}!@Y!}#O!Ac#O#P!Bb#P;'S!@Y;'S;=`!Bq\u003C%lO!@YS!APU!US#Z#[!@z#]#^!@z#a#b!@z#g#h!@z#i#j!@z#m#n!@zS!AfVOY!AcZ#O!Ac#O#P!A{#P#Q!@Y#Q;'S!Ac;'S;=`!B[\u003C%lO!AcS!BOSOY!AcZ;'S!Ac;'S;=`!B[\u003C%lO!AcS!B_P;=`\u003C%l!AcS!BeSOY!@YZ;'S!@Y;'S;=`!Bq\u003C%lO!@YS!BtP;=`\u003C%l!@Y&n!B|[$f&jOY!BwYZ&cZ!^!Bw!^!_!Ac!_#O!Bw#O#P!Cr#P#Q!=y#Q#o!Bw#o#p!Ac#p;'S!Bw;'S;=`!Dd\u003C%lO!Bw&n!CwX$f&jOY!BwYZ&cZ!^!Bw!^!_!Ac!_#o!Bw#o#p!Ac#p;'S!Bw;'S;=`!Dd\u003C%lO!Bw&n!DgP;=`\u003C%l!Bw&n!DoX$f&jOY!=yYZ&cZ!^!=y!^!_!@Y!_#o!=y#o#p!@Y#p;'S!=y;'S;=`!E[\u003C%lO!=y&n!E_P;=`\u003C%l!=y(Q!Eki$f&j(R!b!USOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#Z&}#Z#[!Eb#[#]&}#]#^!Eb#^#a&}#a#b!Eb#b#g&}#g#h!Eb#h#i&}#i#j!Eb#j#m&}#m#n!Eb#n#o&}#o#p'}#p;'S&};'S;=`(l\u003C%lO&}!f!GaZ(R!b!USOY!GYZw!GYwx!@Yx!P!GY!P!Q!HS!Q!}!GY!}#O!Ic#O#P!Bb#P;'S!GY;'S;=`!JZ\u003C%lO!GY!f!HZb(R!b!USOY'}Zw'}x#O'}#P#Z'}#Z#[!HS#[#]'}#]#^!HS#^#a'}#a#b!HS#b#g'}#g#h!HS#h#i'}#i#j!HS#j#m'}#m#n!HS#n;'S'};'S;=`(f\u003C%lO'}!f!IhX(R!bOY!IcZw!Icwx!Acx#O!Ic#O#P!A{#P#Q!GY#Q;'S!Ic;'S;=`!JT\u003C%lO!Ic!f!JWP;=`\u003C%l!Ic!f!J^P;=`\u003C%l!GY(Q!Jh^$f&j(R!bOY!JaYZ&cZw!Jawx!Bwx!^!Ja!^!_!Ic!_#O!Ja#O#P!Cr#P#Q!\u003Cn#Q#o!Ja#o#p!Ic#p;'S!Ja;'S;=`!Kd\u003C%lO!Ja(Q!KgP;=`\u003C%l!Ja(Q!KmP;=`\u003C%l!\u003Cn'`!Ky`$f&j(Op!USOY!KpYZ&cZr!Kprs!=ys!P!Kp!P!Q!L{!Q!^!Kp!^!_!Ns!_!}!Kp!}#O##z#O#P!Dj#P#o!Kp#o#p!Ns#p;'S!Kp;'S;=`#%T\u003C%lO!Kp'`!MUi$f&j(Op!USOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#Z(r#Z#[!L{#[#](r#]#^!L{#^#a(r#a#b!L{#b#g(r#g#h!L{#h#i(r#i#j!L{#j#m(r#m#n!L{#n#o(r#o#p)r#p;'S(r;'S;=`*a\u003C%lO(rt!NzZ(Op!USOY!NsZr!Nsrs!@Ys!P!Ns!P!Q# m!Q!}!Ns!}#O#!|#O#P!Bb#P;'S!Ns;'S;=`##t\u003C%lO!Nst# tb(Op!USOY)rZr)rs#O)r#P#Z)r#Z#[# m#[#])r#]#^# m#^#a)r#a#b# m#b#g)r#g#h# m#h#i)r#i#j# m#j#m)r#m#n# m#n;'S)r;'S;=`*Z\u003C%lO)rt##RX(OpOY#!|Zr#!|rs!Acs#O#!|#O#P!A{#P#Q!Ns#Q;'S#!|;'S;=`##n\u003C%lO#!|t##qP;=`\u003C%l#!|t##wP;=`\u003C%l!Ns'`#$R^$f&j(OpOY##zYZ&cZr##zrs!Bws!^##z!^!_#!|!_#O##z#O#P!Cr#P#Q!Kp#Q#o##z#o#p#!|#p;'S##z;'S;=`#$}\u003C%lO##z'`#%QP;=`\u003C%l##z'`#%WP;=`\u003C%l!Kp(r#%fk$f&j(Op(R!b!USOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#Z%Z#Z#[#%Z#[#]%Z#]#^#%Z#^#a%Z#a#b#%Z#b#g%Z#g#h#%Z#h#i%Z#i#j#%Z#j#m%Z#m#n#%Z#n#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z#W#'d](Op(R!b!USOY#'ZZr#'Zrs!GYsw#'Zwx!Nsx!P#'Z!P!Q#(]!Q!}#'Z!}#O#)w#O#P!Bb#P;'S#'Z;'S;=`#*w\u003C%lO#'Z#W#(fe(Op(R!b!USOY*gZr*grs'}sw*gwx)rx#O*g#P#Z*g#Z#[#(]#[#]*g#]#^#(]#^#a*g#a#b#(]#b#g*g#g#h#(]#h#i*g#i#j#(]#j#m*g#m#n#(]#n;'S*g;'S;=`+Z\u003C%lO*g#W#*OZ(Op(R!bOY#)wZr#)wrs!Icsw#)wwx#!|x#O#)w#O#P!A{#P#Q#'Z#Q;'S#)w;'S;=`#*q\u003C%lO#)w#W#*tP;=`\u003C%l#)w#W#*zP;=`\u003C%l#'Z(r#+W`$f&j(Op(R!bOY#*}YZ&cZr#*}rs!Jasw#*}wx##zx!^#*}!^!_#)w!_#O#*}#O#P!Cr#P#Q!;Z#Q#o#*}#o#p#)w#p;'S#*};'S;=`#,Y\u003C%lO#*}(r#,]P;=`\u003C%l#*}(r#,cP;=`\u003C%l!;Z(CS#,sb$f&j(Op(R!b'v(;d!USOY!;ZYZ&cZr!;Zrs!\u003Cnsw!;Zwx!Kpx!P!;Z!P!Q#%Z!Q!^!;Z!^!_#'Z!_!}!;Z!}#O#*}#O#P!Dj#P#o!;Z#o#p#'Z#p;'S!;Z;'S;=`#,`\u003C%lO!;Z(CS#.W_$f&j(Op(R!bS(;dOY#-{YZ&cZr#-{rs#/Vsw#-{wx#2gx!^#-{!^!_#4f!_#O#-{#O#P#0X#P#o#-{#o#p#4f#p;'S#-{;'S;=`#5e\u003C%lO#-{(Bb#/`]$f&j(R!bS(;dOY#/VYZ&cZw#/Vwx#0Xx!^#/V!^!_#1j!_#O#/V#O#P#0X#P#o#/V#o#p#1j#p;'S#/V;'S;=`#2a\u003C%lO#/V(AO#0`X$f&jS(;dOY#0XYZ&cZ!^#0X!^!_#0{!_#o#0X#o#p#0{#p;'S#0X;'S;=`#1d\u003C%lO#0X(;d#1QSS(;dOY#0{Z;'S#0{;'S;=`#1^\u003C%lO#0{(;d#1aP;=`\u003C%l#0{(AO#1gP;=`\u003C%l#0X(\u003Cv#1qW(R!bS(;dOY#1jZw#1jwx#0{x#O#1j#O#P#0{#P;'S#1j;'S;=`#2Z\u003C%lO#1j(\u003Cv#2^P;=`\u003C%l#1j(Bb#2dP;=`\u003C%l#/V(Ap#2p]$f&j(OpS(;dOY#2gYZ&cZr#2grs#0Xs!^#2g!^!_#3i!_#O#2g#O#P#0X#P#o#2g#o#p#3i#p;'S#2g;'S;=`#4`\u003C%lO#2g(\u003CU#3pW(OpS(;dOY#3iZr#3irs#0{s#O#3i#O#P#0{#P;'S#3i;'S;=`#4Y\u003C%lO#3i(\u003CU#4]P;=`\u003C%l#3i(Ap#4cP;=`\u003C%l#2g(=h#4oY(Op(R!bS(;dOY#4fZr#4frs#1jsw#4fwx#3ix#O#4f#O#P#0{#P;'S#4f;'S;=`#5_\u003C%lO#4f(=h#5bP;=`\u003C%l#4f(CS#5hP;=`\u003C%l#-{%#W#5xb$f&j$O$Id(Op(R!b!USOY!;ZYZ&cZr!;Zrs!\u003Cnsw!;Zwx!Kpx!P!;Z!P!Q#%Z!Q!^!;Z!^!_#'Z!_!}!;Z!}#O#*}#O#P!Dj#P#o!;Z#o#p#'Z#p;'S!;Z;'S;=`#,`\u003C%lO!;Z+h#7_b$W#t$f&j(Op(R!b!USOY!;ZYZ&cZr!;Zrs!\u003Cnsw!;Zwx!Kpx!P!;Z!P!Q#%Z!Q!^!;Z!^!_#'Z!_!}!;Z!}#O#*}#O#P!Dj#P#o!;Z#o#p#'Z#p;'S!;Z;'S;=`#,`\u003C%lO!;Z$/l#8rp$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#:v![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#:v#S#U%Z#U#V#>Q#V#X%Z#X#Y!4|#Y#b%Z#b#c#\u003Cv#c#d#AY#d#l%Z#l#m#D[#m#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#;Rk$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#:v![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#:v#S#X%Z#X#Y!4|#Y#b%Z#b#c#\u003Cv#c#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#=R_$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#>Zd$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#?i!R!S#?i!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#?i#S#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#?tf$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#?i!R!S#?i!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#?i#S#b%Z#b#c#\u003Cv#c#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#Acc$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#Bn!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#Bn#S#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#Bye$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#Bn!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#Bn#S#b%Z#b#c#\u003Cv#c#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#Deg$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#E|![!^%Z!^!_*g!_!c%Z!c!i#E|!i#O%Z#O#P&c#P#R%Z#R#S#E|#S#T%Z#T#Z#E|#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z$/l#FXi$f&j(Op(R!bo$'|OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#E|![!^%Z!^!_*g!_!c%Z!c!i#E|!i#O%Z#O#P&c#P#R%Z#R#S#E|#S#T%Z#T#Z#E|#Z#b%Z#b#c#\u003Cv#c#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%Gh#HT_!d$b$f&j#|%\u003Cf(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z)[#I__`l$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(@^#Jk^g!*v!h'.r(Op(R!b(tSOY*gZr*grs'}sw*gwx)rx!P*g!P!Q#Kg!Q!^*g!^!_#L]!_!`#M}!`#O*g#P;'S*g;'S;=`+Z\u003C%lO*g(n#KpX$h&j(Op(R!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z\u003C%lO*g$Kh#LfZ#n$Id(Op(R!bOY*gZr*grs'}sw*gwx)rx!_*g!_!`#MX!`#O*g#P;'S*g;'S;=`+Z\u003C%lO*g$Kh#MbX$O$Id(Op(R!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z\u003C%lO*g$Kh#NWX#o$Id(Op(R!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z\u003C%lO*g%Gh$ Oa#[%?x$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`!a$!T!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#W$!`_#g$Ih$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%Gh$#nafBf#o$Id$c#|$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`$$s!`!a$%}!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S$%O_#o$Id$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S$&Ya#n$Id$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`!a$'_!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S$'j`#n$Id$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z'+h$(wc(h$Ip$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P$*S!P!^%Z!^!_*g!_!a%Z!a!b$+^!b#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z'+`$*__}'#p$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S$+i`$f&j#y$Id(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z#&^$,v_!{!Ln$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(@^$.Q_!P(8n$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(n$/UZ$f&jO!^$/w!^!_$0_!_#i$/w#i#j$0d#j#l$/w#l#m$2V#m#o$/w#o#p$0_#p;'S$/w;'S;=`$4b\u003C%lO$/w(n$0OT^#S$f&jO!^&c!_#o&c#p;'S&c;'S;=`&w\u003C%lO&c#S$0dO^#S(n$0i[$f&jO!Q&c!Q![$1_![!^&c!_!c&c!c!i$1_!i#T&c#T#Z$1_#Z#o&c#o#p$3u#p;'S&c;'S;=`&w\u003C%lO&c(n$1dZ$f&jO!Q&c!Q![$2V![!^&c!_!c&c!c!i$2V!i#T&c#T#Z$2V#Z#o&c#p;'S&c;'S;=`&w\u003C%lO&c(n$2[Z$f&jO!Q&c!Q![$2}![!^&c!_!c&c!c!i$2}!i#T&c#T#Z$2}#Z#o&c#p;'S&c;'S;=`&w\u003C%lO&c(n$3SZ$f&jO!Q&c!Q![$/w![!^&c!_!c&c!c!i$/w!i#T&c#T#Z$/w#Z#o&c#p;'S&c;'S;=`&w\u003C%lO&c#S$3xR!Q![$4R!c!i$4R#T#Z$4R#S$4US!Q![$4R!c!i$4R#T#Z$4R#q#r$0_(n$4eP;=`\u003C%l$/w!2r$4s_!V!+S$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z%#S$5}`#v$Id$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z&,v$7[_$f&j(Op(R!b(X&%WOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(CS$8jk$f&j(Op(R!b'{&;d$[#t([!LYOY%ZYZ&cZr%Zrs&}st%Ztu$8Zuw%Zwx(rx}%Z}!O$:_!O!Q%Z!Q![$8Z![!^%Z!^!_*g!_!c%Z!c!}$8Z!}#O%Z#O#P&c#P#R%Z#R#S$8Z#S#T%Z#T#o$8Z#o#p*g#p$g%Z$g;'S$8Z;'S;=`$\u003Ce\u003C%lO$8Z+d$:jk$f&j(Op(R!b$[#tOY%ZYZ&cZr%Zrs&}st%Ztu$:_uw%Zwx(rx}%Z}!O$:_!O!Q%Z!Q![$:_![!^%Z!^!_*g!_!c%Z!c!}$:_!}#O%Z#O#P&c#P#R%Z#R#S$:_#S#T%Z#T#o$:_#o#p*g#p$g%Z$g;'S$:_;'S;=`$\u003C_\u003C%lO$:_+d$\u003CbP;=`\u003C%l$:_(CS$\u003ChP;=`\u003C%l$8Z!5p$\u003CtX![!3l(Op(R!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z\u003C%lO*g&CO$=la(o&;`$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p#q$+^#q;'S%Z;'S;=`+a\u003C%lO%Z%#`$?O_!Z$I`r`$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(r$@Y_!pS$f&j(Op(R!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a\u003C%lO%Z(CS$Aj|$f&j(Op(R!b't(;d$Y#t'{&;d([!LYOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$AX#BZ$ISEr$IS$I_$AX$I_$JTEr$JT$JU$AX$JU$KVEr$KV$KW$AX$KW&FUEr&FU&FV$AX&FV;'SEr;'S;=`I|\u003C%l?HTEr?HT?HU$AX?HUOEr(CS$Duk$f&j(Op(R!b'u(;d$Y#t'{&;d([!LYOY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|\u003C%lOEr\\\",tokenizers:[noSemicolon,incdecToken,jsx,2,3,4,5,6,7,8,9,10,11,12,13,insertSemicolon,new LocalTokenGroup(\\\"$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOt~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v\u003C%lO!P~!UO!R~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`\u003C%l!P~$RO(Z~~\\\",141,332),new LocalTokenGroup(\\\"j~RQYZXz{^~^O'x~~aP!P!Qd~iO'y~~\\\",25,315)],topRules:{\\\"Script\\\":[0,6],\\\"SingleExpression\\\":[1,269],\\\"SingleClassItem\\\":[2,270]},dialects:{jsx:0,ts:14614},dynamicPrecedences:{\\\"69\\\":1,\\\"79\\\":1,\\\"81\\\":1,\\\"165\\\":1,\\\"193\\\":1},specialized:[{term:319,get:value=>spec_identifier$8[value]||-1},{term:334,get:value=>spec_word[value]||-1},{term:70,get:value=>spec_LessThan[value]||-1}],tokenPrec:14638});const snippets$1=[snippetCompletion(\\\"function ${name}(${params}) {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"function\\\",detail:\\\"definition\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"for (let ${index} = 0; ${index} \u003C ${bound}; ${index}++) {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"for\\\",detail:\\\"loop\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"for (let ${name} of ${collection}) {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"for\\\",detail:\\\"of loop\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"do {\\\\n\\\\t${}\\\\n} while (${})\\\",{label:\\\"do\\\",detail:\\\"loop\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"while (${}) {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"while\\\",detail:\\\"loop\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"try {\\\\n\\\\t${}\\\\n} catch (${error}) {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"try\\\",detail:\\\"/ catch block\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"if (${}) {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"if\\\",detail:\\\"block\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"if (${}) {\\\\n\\\\t${}\\\\n} else {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"if\\\",detail:\\\"/ else block\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"class ${name} {\\\\n\\\\tconstructor(${params}) {\\\\n\\\\t\\\\t${}\\\\n\\\\t}\\\\n}\\\",{label:\\\"class\\\",detail:\\\"definition\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"import {${names}} from \\\\\\\"${module}\\\\\\\"\\\\n${}\\\",{label:\\\"import\\\",detail:\\\"named\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"import ${name} from \\\\\\\"${module}\\\\\\\"\\\\n${}\\\",{label:\\\"import\\\",detail:\\\"default\\\",type:\\\"keyword\\\"})];const typescriptSnippets=snippets$1.concat([snippetCompletion(\\\"interface ${name} {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"interface\\\",detail:\\\"definition\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"type ${name} = ${type}\\\",{label:\\\"type\\\",detail:\\\"definition\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"enum ${name} {\\\\n\\\\t${}\\\\n}\\\",{label:\\\"enum\\\",detail:\\\"definition\\\",type:\\\"keyword\\\"})]);const cache$1=new NodeWeakMap();const ScopeNodes$1=new Set([\\\"Script\\\",\\\"Block\\\",\\\"FunctionExpression\\\",\\\"FunctionDeclaration\\\",\\\"ArrowFunction\\\",\\\"MethodDeclaration\\\",\\\"ForStatement\\\"]);function defID$1(type){return(node,def)=>{let id=node.node.getChild(\\\"VariableDefinition\\\");if(id)def(id,type);return true;};}const functionContext=[\\\"FunctionDeclaration\\\"];const gatherCompletions$1={FunctionDeclaration:defID$1(\\\"function\\\"),ClassDeclaration:defID$1(\\\"class\\\"),ClassExpression:()=>true,EnumDeclaration:defID$1(\\\"constant\\\"),TypeAliasDeclaration:defID$1(\\\"type\\\"),NamespaceDeclaration:defID$1(\\\"namespace\\\"),VariableDefinition(node,def){if(!node.matchContext(functionContext))def(node,\\\"variable\\\");},TypeDefinition(node,def){def(node,\\\"type\\\");},__proto__:null};function getScope$1(doc,node){let cached=cache$1.get(node);if(cached)return cached;let completions=[],top=true;function def(node,type){let name=doc.sliceString(node.from,node.to);completions.push({label:name,type});}node.cursor(IterMode.IncludeAnonymous).iterate(node=>{if(top){top=false;}else if(node.name){let gather=gatherCompletions$1[node.name];if(gather&&gather(node,def)||ScopeNodes$1.has(node.name))return false;}else if(node.to-node.from>8192){for(let _i265=0,_getScope$=getScope$1(doc,node.node),_length265=_getScope$.length;_i265\u003C_length265;_i265++){let c=_getScope$[_i265];completions.push(c);}return false;}});cache$1.set(node,completions);return completions;}const Identifier$3=/^[\\\\w$\\\\xa1-\\\\uffff][\\\\w$\\\\d\\\\xa1-\\\\uffff]*$/;const dontComplete$1=[\\\"TemplateString\\\",\\\"String\\\",\\\"RegExp\\\",\\\"LineComment\\\",\\\"BlockComment\\\",\\\"VariableDefinition\\\",\\\"TypeDefinition\\\",\\\"Label\\\",\\\"PropertyDefinition\\\",\\\"PropertyName\\\",\\\"PrivatePropertyDefinition\\\",\\\"PrivatePropertyName\\\",\\\".\\\",\\\"?.\\\"];function localCompletionSource$1(context){let inner=syntaxTree(context.state).resolveInner(context.pos,-1);if(dontComplete$1.indexOf(inner.name)>-1)return null;let isWord=inner.name==\\\"VariableName\\\"||inner.to-inner.from\u003C20&&Identifier$3.test(context.state.sliceDoc(inner.from,inner.to));if(!isWord&&!context.explicit)return null;let options=[];for(let pos=inner;pos;pos=pos.parent){if(ScopeNodes$1.has(pos.name))options=options.concat(getScope$1(context.state.doc,pos));}return{options,from:isWord?inner.from:context.pos,validFor:Identifier$3};}function pathFor$1(read,member,name){var _a;let path=[];for(;;){let obj=member.firstChild,prop;if((obj===null||obj===void 0?void 0:obj.name)==\\\"VariableName\\\"){path.push(read(obj));return{path:path.reverse(),name};}else if((obj===null||obj===void 0?void 0:obj.name)==\\\"MemberExpression\\\"&&((_a=prop=obj.lastChild)===null||_a===void 0?void 0:_a.name)==\\\"PropertyName\\\"){path.push(read(prop));member=obj;}else{return null;}}}function completionPath(context){let read=node=>context.state.doc.sliceString(node.from,node.to);let inner=syntaxTree(context.state).resolveInner(context.pos,-1);if(inner.name==\\\"PropertyName\\\"){return pathFor$1(read,inner.parent,read(inner));}else if((inner.name==\\\".\\\"||inner.name==\\\"?.\\\")&&inner.parent.name==\\\"MemberExpression\\\"){return pathFor$1(read,inner.parent,\\\"\\\");}else if(dontComplete$1.indexOf(inner.name)>-1){return null;}else if(inner.name==\\\"VariableName\\\"||inner.to-inner.from\u003C20&&Identifier$3.test(read(inner))){return{path:[],name:read(inner)};}else if(inner.name==\\\"MemberExpression\\\"){return pathFor$1(read,inner,\\\"\\\");}else{return context.explicit?{path:[],name:\\\"\\\"}:null;}}function enumeratePropertyCompletions(obj,top){let options=[],seen=new Set();for(let depth=0;;depth++){for(let _i266=0,_ref4=(Object.getOwnPropertyNames||Object.keys)(obj),_length266=_ref4.length;_i266\u003C_length266;_i266++){let name=_ref4[_i266];if(!/^[a-zA-Z_$\\\\xaa-\\\\uffdc][\\\\w$\\\\xaa-\\\\uffdc]*$/.test(name)||seen.has(name))continue;seen.add(name);let value;try{value=obj[name];}catch(_){continue;}options.push({label:name,type:typeof value==\\\"function\\\"?/^[A-Z]/.test(name)?\\\"class\\\":top?\\\"function\\\":\\\"method\\\":top?\\\"variable\\\":\\\"property\\\",boost:-depth});}let next=Object.getPrototypeOf(obj);if(!next)return options;obj=next;}}function scopeCompletionSource(scope){let cache=new Map();return context=>{let path=completionPath(context);if(!path)return null;let target=scope;for(let _i267=0,_path$path=path.path,_length267=_path$path.length;_i267\u003C_length267;_i267++){let step=_path$path[_i267];target=target[step];if(!target)return null;}let options=cache.get(target);if(!options)cache.set(target,options=enumeratePropertyCompletions(target,!path.path.length));return{from:context.pos-path.name.length,options,validFor:Identifier$3};};}const javascriptLanguage=LRLanguage.define({name:\\\"javascript\\\",parser:parser$j.configure({props:[indentNodeProp.add({IfStatement:continuedIndent({except:/^\\\\s*({|else\\\\b)/}),TryStatement:continuedIndent({except:/^\\\\s*({|catch\\\\b|finally\\\\b)/}),LabeledStatement:flatIndent,SwitchBody:context=>{let after=context.textAfter,closed=/^\\\\s*\\\\}/.test(after),isCase=/^\\\\s*(case|default)\\\\b/.test(after);return context.baseIndent+(closed?0:isCase?1:2)*context.unit;},Block:delimitedIndent({closing:\\\"}\\\"}),ArrowFunction:cx=>cx.baseIndent+cx.unit,\\\"TemplateString BlockComment\\\":()=>null,\\\"Statement Property\\\":continuedIndent({except:/^{/}),JSXElement(context){let closed=/^\\\\s*\u003C\\\\//.test(context.textAfter);return context.lineIndent(context.node.from)+(closed?0:context.unit);},JSXEscape(context){let closed=/\\\\s*\\\\}/.test(context.textAfter);return context.lineIndent(context.node.from)+(closed?0:context.unit);},\\\"JSXOpenTag JSXSelfClosingTag\\\"(context){return context.column(context.node.from)+context.unit;}}),foldNodeProp.add({\\\"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType\\\":foldInside,BlockComment(tree){return{from:tree.from+2,to:tree.to-2};}})]}),languageData:{closeBrackets:{brackets:[\\\"(\\\",\\\"[\\\",\\\"{\\\",\\\"'\\\",'\\\"',\\\"`\\\"]},commentTokens:{line:\\\"//\\\",block:{open:\\\"/*\\\",close:\\\"*/\\\"}},indentOnInput:/^\\\\s*(?:case |default:|\\\\{|\\\\}|\u003C\\\\/)$/,wordChars:\\\"$\\\"}});const jsxSublanguage={test:node=>/^JSX/.test(node.name),facet:defineLanguageFacet({commentTokens:{block:{open:\\\"{/*\\\",close:\\\"*/}\\\"}}})};const typescriptLanguage=javascriptLanguage.configure({dialect:\\\"ts\\\"},\\\"typescript\\\");const jsxLanguage=javascriptLanguage.configure({dialect:\\\"jsx\\\",props:[sublanguageProp.add(n=>n.isTop?[jsxSublanguage]:undefined)]});const tsxLanguage=javascriptLanguage.configure({dialect:\\\"jsx ts\\\",props:[sublanguageProp.add(n=>n.isTop?[jsxSublanguage]:undefined)]},\\\"typescript\\\");let kwCompletion=name=>({label:name,type:\\\"keyword\\\"});const keywords$2=\\\"break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield\\\".split(\\\" \\\").map(kwCompletion);const typescriptKeywords=keywords$2.concat([\\\"declare\\\",\\\"implements\\\",\\\"private\\\",\\\"protected\\\",\\\"public\\\"].map(kwCompletion));function javascript(config={}){let lang=config.jsx?config.typescript?tsxLanguage:jsxLanguage:config.typescript?typescriptLanguage:javascriptLanguage;let completions=config.typescript?typescriptSnippets.concat(typescriptKeywords):snippets$1.concat(keywords$2);return new LanguageSupport(lang,[javascriptLanguage.data.of({autocomplete:ifNotIn(dontComplete$1,completeFromList(completions))}),javascriptLanguage.data.of({autocomplete:localCompletionSource$1}),config.jsx?autoCloseTags$1:[]]);}function findOpenTag(node){for(;;){if(node.name==\\\"JSXOpenTag\\\"||node.name==\\\"JSXSelfClosingTag\\\"||node.name==\\\"JSXFragmentTag\\\")return node;if(node.name==\\\"JSXEscape\\\"||!node.parent)return null;node=node.parent;}}function elementName$2(doc,tree,max=doc.length){for(let ch=tree===null||tree===void 0?void 0:tree.firstChild;ch;ch=ch.nextSibling){if(ch.name==\\\"JSXIdentifier\\\"||ch.name==\\\"JSXBuiltin\\\"||ch.name==\\\"JSXNamespacedName\\\"||ch.name==\\\"JSXMemberExpression\\\")return doc.sliceString(ch.from,Math.min(ch.to,max));}return\\\"\\\";}const android=typeof navigator==\\\"object\\\"&&/Android\\\\b/.test(navigator.userAgent);const autoCloseTags$1=EditorView.inputHandler.of((view,from,to,text,defaultInsert)=>{if((android?view.composing:view.compositionStarted)||view.state.readOnly||from!=to||text!=\\\">\\\"&&text!=\\\"/\\\"||!javascriptLanguage.isActiveAt(view.state,from,-1))return false;let base=defaultInsert(),{state}=base;let closeTags=state.changeByRange(range=>{var _a;let{head}=range,around=syntaxTree(state).resolveInner(head-1,-1),name;if(around.name==\\\"JSXStartTag\\\")around=around.parent;if(state.doc.sliceString(head-1,head)!=text||around.name==\\\"JSXAttributeValue\\\"&&around.to>head);else if(text==\\\">\\\"&&around.name==\\\"JSXFragmentTag\\\"){return{range,changes:{from:head,insert:`\u003C/>`}};}else if(text==\\\"/\\\"&&around.name==\\\"JSXStartCloseTag\\\"){let empty=around.parent,base=empty.parent;if(base&&empty.from==head-2&&((name=elementName$2(state.doc,base.firstChild,head))||((_a=base.firstChild)===null||_a===void 0?void 0:_a.name)==\\\"JSXFragmentTag\\\")){let insert=`${name}>`;return{range:EditorSelection.cursor(head+insert.length,-1),changes:{from:head,insert}};}}else if(text==\\\">\\\"){let openTag=findOpenTag(around);if(openTag&&openTag.name==\\\"JSXOpenTag\\\"&&!/^\\\\/?>|^\u003C\\\\//.test(state.doc.sliceString(head,head+2))&&(name=elementName$2(state.doc,openTag,head)))return{range,changes:{from:head,insert:`\u003C/${name}>`}};}return{range};});if(closeTags.changes.empty)return false;view.dispatch([base,state.update(closeTags,{userEvent:\\\"input.complete\\\",scrollIntoView:true})]);return true;});function esLint(eslint,config){if(!config){config={parserOptions:{ecmaVersion:2019,sourceType:\\\"module\\\"},env:{browser:true,node:true,es6:true,es2015:true,es2017:true,es2020:true},rules:{}};eslint.getRules().forEach((desc,name)=>{if(desc.meta.docs.recommended)config.rules[name]=2;});}return view=>{let{state}=view,found=[];for(let _i268=0,_javascriptLanguage$f=javascriptLanguage.findRegions(state),_length268=_javascriptLanguage$f.length;_i268\u003C_length268;_i268++){let{from,to}=_javascriptLanguage$f[_i268];let fromLine=state.doc.lineAt(from),offset={line:fromLine.number-1,col:from-fromLine.from,pos:from};for(let _i269=0,_eslint$verify=eslint.verify(state.sliceDoc(from,to),config),_length269=_eslint$verify.length;_i269\u003C_length269;_i269++){let d=_eslint$verify[_i269];found.push(translateDiagnostic(d,state.doc,offset));}}return found;};}function mapPos$1(line,col,doc,offset){return doc.line(line+offset.line).from+col+(line==1?offset.col-1:-1);}function translateDiagnostic(input,doc,offset){let start=mapPos$1(input.line,input.column,doc,offset);let result={from:start,to:input.endLine!=null&&input.endColumn!=1?mapPos$1(input.endLine,input.endColumn,doc,offset):start,message:input.message,source:input.ruleId?\\\"eslint:\\\"+input.ruleId:\\\"eslint\\\",severity:input.severity==1?\\\"warning\\\":\\\"error\\\"};if(input.fix){let{range,text}=input.fix,from=range[0]+offset.pos-start,to=range[1]+offset.pos-start;result.actions=[{name:\\\"fix\\\",apply(view,start){view.dispatch({changes:{from:start+from,to:start+to,insert:text},scrollIntoView:true});}}];}return result;}var _m9=Object.freeze({__proto__:null,autoCloseTags:autoCloseTags$1,completionPath:completionPath,esLint:esLint,javascript:javascript,javascriptLanguage:javascriptLanguage,jsxLanguage:jsxLanguage,localCompletionSource:localCompletionSource$1,scopeCompletionSource:scopeCompletionSource,snippets:snippets$1,tsxLanguage:tsxLanguage,typescriptLanguage:typescriptLanguage,typescriptSnippets:typescriptSnippets});const javaHighlighting=styleTags({null:tags$1.null,instanceof:tags$1.operatorKeyword,this:tags$1.self,\\\"new super assert open to with void\\\":tags$1.keyword,\\\"class interface extends implements enum var\\\":tags$1.definitionKeyword,\\\"module package import\\\":tags$1.moduleKeyword,\\\"switch while for if else case default do break continue return try catch finally throw\\\":tags$1.controlKeyword,[\\\"requires exports opens uses provides public private protected static transitive abstract final \\\"+\\\"strictfp synchronized native transient volatile throws\\\"]:tags$1.modifier,IntegerLiteral:tags$1.integer,FloatingPointLiteral:tags$1.float,\\\"StringLiteral TextBlock\\\":tags$1.string,CharacterLiteral:tags$1.character,LineComment:tags$1.lineComment,BlockComment:tags$1.blockComment,BooleanLiteral:tags$1.bool,PrimitiveType:tags$1.standard(tags$1.typeName),TypeName:tags$1.typeName,Identifier:tags$1.variableName,\\\"MethodName/Identifier\\\":tags$1.function(tags$1.variableName),Definition:tags$1.definition(tags$1.variableName),ArithOp:tags$1.arithmeticOperator,LogicOp:tags$1.logicOperator,BitOp:tags$1.bitwiseOperator,CompareOp:tags$1.compareOperator,AssignOp:tags$1.definitionOperator,UpdateOp:tags$1.updateOperator,Asterisk:tags$1.punctuation,Label:tags$1.labelName,\\\"( )\\\":tags$1.paren,\\\"[ ]\\\":tags$1.squareBracket,\\\"{ }\\\":tags$1.brace,\\\".\\\":tags$1.derefOperator,\\\", ;\\\":tags$1.separator});const spec_identifier$7={__proto__:null,true:34,false:34,null:42,void:46,byte:48,short:48,int:48,long:48,char:48,float:48,double:48,boolean:48,extends:62,super:64,class:76,this:78,new:84,public:100,protected:102,private:104,abstract:106,static:108,final:110,strictfp:112,default:114,synchronized:116,native:118,transient:120,volatile:122,throws:150,implements:160,interface:166,enum:176,instanceof:236,open:265,module:267,requires:272,transitive:274,exports:276,to:278,opens:280,uses:282,provides:284,with:286,package:290,import:294,if:306,else:308,while:312,for:316,var:323,assert:330,switch:334,case:340,do:344,break:348,continue:352,return:356,throw:362,try:366,catch:370,finally:378};const parser$i=LRParser.deserialize({version:14,states:\\\"#!tQ]QPOOQ$wQPOOO(_QQO'#H]O*cQQO'#CbOOQO'#Cb'#CbO*jQPO'#CaO*rOSO'#CpOOQO'#Hb'#HbOOQO'#Cu'#CuO,_QPO'#D_O,xQQO'#HlOOQO'#Hl'#HlO/^QQO'#HgO/eQQO'#HgOOQO'#Hg'#HgOOQO'#Hf'#HfO1iQPO'#DUO1vQPO'#GmO4nQPO'#D_O4uQPO'#DzO*jQPO'#E[O5hQPO'#E[OOQO'#DV'#DVO6vQQO'#H`O8}QQO'#EeO9UQPO'#EdO9ZQPO'#EfOOQO'#Ha'#HaO7^QQO'#HaO:^QQO'#FgO:eQPO'#EwO:jQPO'#E|O:jQPO'#FOOOQO'#H`'#H`OOQO'#HX'#HXOOQO'#Gg'#GgOOQO'#HW'#HWO;zQPO'#FhOOQO'#HV'#HVOOQO'#Gf'#GfQ]QPOOOOQO'#Hr'#HrO\u003CPQPO'#HrO\u003CUQPO'#D{O\u003CUQPO'#EVO\u003CUQPO'#EQO\u003C^QPO'#HoO\u003CoQQO'#EfO*jQPO'#C`O\u003CwQPO'#C`O*jQPO'#FbO\u003C|QPO'#FdO=XQPO'#FjO=XQPO'#FmO\u003CUQPO'#FrO=^QPO'#FoO:jQPO'#FvO=XQPO'#FxO]QPO'#F}O=cQPO'#GPO=nQPO'#GRO=yQPO'#GTO=XQPO'#GVO:jQPO'#GWO>QQPO'#GYO>nQQO'#HhO?ZQQO'#CuO?bQPO'#HwO?pQPO'#D_O@`QPO'#DpO?eQPO'#DqO@jQPO'#HwO@{QPO'#DpOATQPO'#IQOAYQPO'#E`OOQO'#Hq'#HqOOQO'#Gl'#GlQ$wQPOOOAbQPO'#HrOOQO'#H]'#H]OCaQQO,58{OOQO'#HZ'#HZOOOO'#Gh'#GhOESOSO,59[OOQO,59[,59[OOQO'#Hh'#HhOEsQPO,59eOFuQPO,59yOOQO-E:e-E:eO*jQPO,58zOGiQPO,58zO*jQPO,5;|OGnQPO'#DQOGsQPO'#DQOOQO'#Gj'#GjOHsQQO,59jOOQO'#Dm'#DmOJ[QPO'#HtOJfQPO'#DlOJtQPO'#HsOJ|QPO,5\u003C^OKRQPO,59^OKlQPO'#CxOOQO,59c,59cOKsQPO,59bOLOQQO'#H]OM}QQO'#CbO! |QPO'#D_O!#RQQO'#HlO!#cQQO,59pO!#jQPO'#DvO!#xQPO'#H{O!$QQPO,5:`O!$VQPO,5:`O!$mQPO,5;mO!$xQPO'#ISO!%TQPO,5;dO!%YQPO,5=XOOQO-E:k-E:kOOQO,5:f,5:fO!&pQPO,5:fO!&wQPO,5:vO?bQPO,5\u003C^O*jQPO,5:vO\u003CUQPO,5:gO\u003CUQPO,5:qO\u003CUQPO,5:lO\u003CUQPO,5\u003C^O!'_QPO,59qO:jQPO,5:}O!'fQPO,5;QO:jQPO,59TO!'tQPO'#DXOOQO,5;O,5;OOOQO'#El'#ElOOQO'#En'#EnO:jQPO,5;UO:jQPO,5;UO:jQPO,5;UO:jQPO,5;UO:jQPO,5;UO:jQPO,5;UO:jQPO,5;eOOQO,5;h,5;hOOQO,5\u003CR,5\u003CRO!'{QPO,5;aO!(^QPO,5;cO!'{QPO'#CyO!(eQQO'#HlO!(sQQO,5;jO]QPO,5\u003CSOOQO-E:d-E:dOOQO,5>^,5>^O!*TQPO,5:gO!*cQPO,5:qO!*kQPO,5:lO!*vQPO,5>ZO!#jQPO,5>ZO!&|QPO,59UO!+RQQO,58zO!+ZQQO,5;|O!+cQQO,5\u003COO*jQPO,5\u003COO:jQPO'#DUO]QPO,5\u003CUO]QPO,5\u003CXO!+kQPO'#FqO]QPO,5\u003CZO]QPO,5\u003C`O!+{QQO,5\u003CbO!,VQPO,5\u003CdO!,[QPO,5\u003CiOOQO'#Fi'#FiOOQO,5\u003Ck,5\u003CkO!,aQPO,5\u003CkOOQO,5\u003Cm,5\u003CmO!,fQPO,5\u003CmO!,kQQO,5\u003CoOOQO,5\u003Co,5\u003CoO>TQPO,5\u003CqO!,rQQO,5\u003CrO!,yQPO'#GcO!.PQPO,5\u003CtO>TQPO,5\u003C|O!1}QPO,59jO!2[QPO'#HtO!2cQPO,59xO!2hQPO,5>cO?bQPO,59xO!2sQPO,5:[OAYQPO,5:zO!2{QPO'#DrO?eQPO'#DrO!3WQPO'#HxO!3`QPO,5:]O?bQPO,5>cO!'{QPO,5>cOATQPO,5>lOOQO,5:[,5:[O!$VQPO'#DtOOQO,5>l,5>lO!3eQPO'#EaOOQO,5:z,5:zO!6fQPO,5:zO!'{QPO'#DxOOQO-E:j-E:jOOQO,5:y,5:yO*jQPO,58}O!6kQPO'#ChOOQO1G.k1G.kOOOO-E:f-E:fOOQO1G.v1G.vO!+RQQO1G.fO*jQPO1G.fO!6uQQO1G1hOOQO,59l,59lO!6}QPO,59lOOQO-E:h-E:hO!7SQPO,5>`O!7kQPO,5:WO\u003CUQPO'#GoO!7rQPO,5>_OOQO1G1x1G1xOOQO1G.x1G.xO!8]QPO'#CyO!8{QPO'#HlO!9VQPO'#CzO!9eQPO'#HkO!9mQPO,59dOOQO1G.|1G.|OKsQPO1G.|O!:TQPO,59eO!:bQQO'#H]O!:sQQO'#CbOOQO,5:b,5:bO\u003CUQPO,5:cOOQO,5:a,5:aO!;UQQO,5:aOOQO1G/[1G/[O!;ZQPO,5:bO!;lQPO'#GrO!\u003CPQPO,5>gOOQO1G/z1G/zO!\u003CXQPO'#DvO!\u003CjQPO1G/zO!'{QPO'#GpO!\u003CoQPO1G1XO:jQPO1G1XO\u003CUQPO'#GxO!\u003CwQPO,5>nOOQO1G1O1G1OOOQO1G0Q1G0QO!=PQPO'#E]OOQO1G0b1G0bO!=pQPO1G1xO!&wQPO1G0bO!*TQPO1G0RO!*cQPO1G0]O!*kQPO1G0WOOQO1G/]1G/]O!=uQQO1G.pO9UQPO1G0jO*jQPO1G0jO\u003C^QPO'#HoO!?iQQO1G.pOOQO1G.p1G.pO!?nQQO1G0iOOQO1G0l1G0lO!?uQPO1G0lO!@QQQO1G.oO!@hQQO'#HpO!@uQPO,59sO!BUQQO1G0pO!CmQQO1G0pO!D{QQO1G0pO!EYQQO1G0pO!F_QQO1G0pO!FuQQO1G0pO!GPQQO1G1PO!GWQQO'#HlOOQO1G0{1G0{O!HZQQO1G0}OOQO1G0}1G0}OOQO1G1n1G1nO!HqQPO'#D[O!'{QPO'#D|O!'{QPO'#D}OOQO1G0R1G0RO!HxQPO1G0RO!H}QPO1G0RO!IVQPO1G0RO!IbQPO'#EXOOQO1G0]1G0]O!IuQPO1G0]O!IzQPO'#ETO!'{QPO'#ESOOQO1G0W1G0WO!JtQPO1G0WO!JyQPO1G0WO!KRQPO'#EhO!KYQPO'#EhOOQO'#Gw'#GwO!KbQQO1G0mO!MRQQO1G3uO9UQPO1G3uO# QQPO'#FWOOQO1G.f1G.fOOQO1G1h1G1hO# XQPO1G1jOOQO1G1j1G1jO# dQQO1G1jO# lQPO1G1pOOQO1G1s1G1sO*zQPO'#D_O,xQQO,5\u003CaO#%dQPO,5\u003CaO#%uQPO,5\u003C]O#%|QPO,5\u003C]OOQO1G1u1G1uOOQO1G1z1G1zOOQO1G1|1G1|O:jQPO1G1|O#)pQPO'#FzOOQO1G2O1G2OO=XQPO1G2TOOQO1G2V1G2VOOQO1G2X1G2XOOQO1G2Z1G2ZOOQO1G2]1G2]OOQO1G2^1G2^O#)wQQO'#H]O#*bQQO'#CbO,xQQO'#HlO#*{QQOOO#+iQQO'#EeO#+WQQO'#HaO!#jQPO'#GdO#+pQPO,5\u003C}OOQO'#HP'#HPO#+xQPO1G2`O#/vQPO'#G[O>TQPO'#G`OOQO1G2`1G2`O#/{QPO1G2hO#3yQPO,5>fOOQO1G/d1G/dOOQO1G3}1G3}O#4[QPO1G/dOOQO1G/v1G/vOOQO1G0f1G0fO!6fQPO1G0fOOQO,5:^,5:^O!'{QPO'#DsO#4aQPO,5:^O?eQPO'#GqO#4lQPO,5>dOOQO1G/w1G/wOATQPO'#HzO#4tQPO1G3}O?bQPO1G3}OOQO1G4W1G4WO!!mQPO'#DvO! |QPO'#D_OOQO,5:{,5:{O#5PQPO,5:{O#5PQPO,5:{O#5WQQO'#H`O#6fQQO'#HaO#6pQQO'#EbO#6{QPO'#EbO#7TQPO'#H}OOQO,5:d,5:dOOQO1G.i1G.iO#7`QQO'#EeO#7pQQO'#H_O#8QQPO'#FSOOQO'#H_'#H_O#8[QPO'#H_O#8yQPO'#IVO#9RQPO,59SOOQO7+$Q7+$QO!+RQQO7+$QOOQO7+'S7+'SOOQO1G/W1G/WO#9WQPO'#DoO#9bQQO'#HuOOQO'#Hu'#HuOOQO1G/r1G/rOOQO,5=Z,5=ZOOQO-E:m-E:mO#9rQWO,58{O#9yQPO,59fOOQO,59f,59fO!'{QPO'#HnOKWQPO'#GiO#:XQPO,5>VOOQO1G/O1G/OOOQO7+$h7+$hOOQO1G/{1G/{O#:aQQO1G/{OOQO1G/}1G/}O#:fQPO1G/{OOQO1G/|1G/|O\u003CUQPO1G/}OOQO,5=^,5=^OOQO-E:p-E:pOOQO7+%f7+%fOOQO,5=[,5=[OOQO-E:n-E:nO:jQPO7+&sOOQO7+&s7+&sOOQO,5=d,5=dOOQO-E:v-E:vO#:kQPO'#EUO#:yQPO'#EUOOQO'#Gv'#GvO#;bQPO,5:wOOQO,5:w,5:wOOQO7+'d7+'dOOQO7+%|7+%|OOQO7+%m7+%mO!HxQPO7+%mO!H}QPO7+%mO!IVQPO7+%mOOQO7+%w7+%wO!IuQPO7+%wOOQO7+%r7+%rO!JtQPO7+%rO!JyQPO7+%rOOQO7+&U7+&UOOQO'#Ee'#EeO9UQPO7+&UO9UQPO,5>ZO#\u003CRQPO7+$[OOQO7+&T7+&TOOQO7+&W7+&WO:jQPO'#GkO#\u003CaQPO,5>[OOQO1G/_1G/_O:jQPO7+&kO#\u003ClQQO,59eO#=oQPO,59vOOQO,59v,59vOOQO,5:h,5:hOOQO'#EP'#EPOOQO,5:i,5:iO#=vQPO'#EYO\u003CUQPO'#EYO#>XQPO'#IOO#>dQPO,5:sO?bQPO'#HwO!'{QPO'#HwO#>lQPO'#DpOOQO'#Gt'#GtO#>sQPO,5:oOOQO,5:o,5:oOOQO,5:n,5:nOOQO,5;S,5;SO#?mQQO,5;SO#?tQPO,5;SOOQO-E:u-E:uOOQO7+&X7+&XOOQO7+)a7+)aO#?{QQO7+)aOOQO'#G{'#G{O#AiQPO,5;rOOQO,5;r,5;rO#ApQPO'#FXO*jQPO'#FXO*jQPO'#FXO*jQPO'#FXO#BOQPO7+'UO#BTQPO7+'UOOQO7+'U7+'UO]QPO7+'[O#B`QPO1G1{O?bQPO1G1{O#BnQQO1G1wO!'tQPO1G1wO#BuQPO1G1wO#B|QQO7+'hOOQO'#HO'#HOO#CTQPO,5\u003CfOOQO,5\u003Cf,5\u003CfO#C[QPO'#HrO:jQPO'#F{O#CdQPO7+'oO#CiQPO,5=OO?bQPO,5=OO#CnQPO1G2iO#DwQPO1G2iOOQO1G2i1G2iOOQO-E:}-E:}OOQO7+'z7+'zO!;lQPO'#G^O>TQPO,5\u003CvOOQO,5\u003Cz,5\u003CzO#EPQPO7+(SOOQO7+(S7+(SO#H}QPO1G4QOOQO7+%O7+%OOOQO7+&Q7+&QO#I`QPO,5:_OOQO1G/x1G/xOOQO,5=],5=]OOQO-E:o-E:oOOQO7+)i7+)iO#IkQPO7+)iO!9rQPO,5:aOOQO1G0g1G0gO#IvQPO1G0gO#I}QPO,59qO#JcQPO,5:|O9UQPO,5:|O!'{QPO'#GsO#JhQPO,5>iO#JsQPO,59TO#JzQPO'#IUO#KSQPO,5;nO*jQPO'#GzO#KXQPO,5>qOOQO1G.n1G.nOOQO\u003C\u003CGl\u003C\u003CGlO#KaQPO'#HvO#KiQPO,5:ZOOQO1G/Q1G/QOOQO,5>Y,5>YOOQO,5=T,5=TOOQO-E:g-E:gO#KnQPO7+%gOOQO7+%g7+%gOOQO7+%i7+%iOOQO\u003C\u003CJ_\u003C\u003CJ_O#LUQPO'#H]O#L]QPO'#CbO#LdQPO,5:pO#LiQPO,5:xO#:kQPO,5:pOOQO-E:t-E:tOOQO1G0c1G0cOOQO\u003C\u003CIX\u003C\u003CIXO!HxQPO\u003C\u003CIXO!H}QPO\u003C\u003CIXOOQO\u003C\u003CIc\u003C\u003CIcOOQO\u003C\u003CI^\u003C\u003CI^O!JtQPO\u003C\u003CI^OOQO\u003C\u003CIp\u003C\u003CIpO#LnQQO\u003C\u003CGvO9UQPO\u003C\u003CIpO*jQPO\u003C\u003CIpOOQO\u003C\u003CGv\u003C\u003CGvO#NbQQO,5=VOOQO-E:i-E:iO#NoQQO\u003C\u003CJVOOQO1G/b1G/bOOQO,5:t,5:tO$ VQPO,5:tO$ eQPO,5:tO$ vQPO'#GuO$!^QPO,5>jO$!iQPO'#EZOOQO1G0_1G0_O$!pQPO1G0_O?bQPO,5:pOOQO-E:r-E:rOOQO1G0Z1G0ZOOQO1G0n1G0nO$!uQQO1G0nOOQO\u003C\u003CL{\u003C\u003CL{OOQO-E:y-E:yOOQO1G1^1G1^O$!|QQO,5;sOOQO'#G|'#G|O#ApQPO,5;sOOQO'#IW'#IWO$#UQQO,5;sO$#gQQO,5;sOOQO\u003C\u003CJp\u003C\u003CJpO$#oQPO\u003C\u003CJpOOQO\u003C\u003CJv\u003C\u003CJvO:jQPO7+'gO$#tQPO7+'gO!'tQPO7+'cO$$SQPO7+'cO$$XQQO7+'cOOQO\u003C\u003CKS\u003C\u003CKSOOQO-E:|-E:|OOQO1G2Q1G2QOOQO,5\u003Cg,5\u003CgO$$`QQO,5\u003CgOOQO\u003C\u003CKZ\u003C\u003CKZO:jQPO1G2jO$$gQPO1G2jOOQO,5=m,5=mOOQO7+(T7+(TO$$lQPO7+(TOOQO-E;P-E;PO$&ZQWO'#HgO$%uQWO'#HgO$&bQPO'#G_O\u003CUQPO,5\u003CxO!#jQPO,5\u003CxOOQO1G2b1G2bOOQO\u003C\u003CKn\u003C\u003CKnO$&sQPO1G/yOOQO\u003C\u003CMT\u003C\u003CMTOOQO7+&R7+&RO$'OQPO1G0jO$'ZQQO1G0hOOQO1G0h1G0hO$'cQPO1G0hOOQO,5=_,5=_OOQO-E:q-E:qO$'hQQO1G.oOOQO1G1Z1G1ZO$'rQPO'#GyO$(PQPO,5>pOOQO1G1Y1G1YO$(XQPO'#FTOOQO,5=f,5=fOOQO-E:x-E:xO$(^QPO'#GnO$(kQPO,5>bOOQO1G/u1G/uOOQO\u003C\u003CIR\u003C\u003CIROOQO1G0[1G0[O$(sQPO1G0dO$(xQPO1G0[O$(}QPO1G0dOOQOAN>sAN>sO!HxQPOAN>sOOQOAN>xAN>xOOQOAN?[AN?[O9UQPOAN?[OOQO1G0`1G0`O$)SQPO1G0`OOQO,5=a,5=aOOQO-E:s-E:sO$)bQPO,5:uOOQO7+%y7+%yOOQO7+&Y7+&YOOQO1G1_1G1_O$)iQQO1G1_OOQO-E:z-E:zO$)qQQO'#IXO$)lQPO1G1_O$#[QPO1G1_O*jQPO1G1_OOQOAN@[AN@[O$)|QQO\u003C\u003CKRO:jQPO\u003C\u003CKRO$*TQPO\u003C\u003CJ}OOQO\u003C\u003CJ}\u003C\u003CJ}O!'tQPO\u003C\u003CJ}OOQO1G2R1G2RO$*YQQO7+(UO:jQPO7+(UOOQO\u003C\u003CKo\u003C\u003CKoP!,yQPO'#HRO!#jQPO'#HQO$*dQPO,5\u003CyO$*oQPO1G2dO\u003CUQPO1G2dO9UQPO7+&SO$*tQPO7+&SOOQO7+&S7+&SOOQO,5=e,5=eOOQO-E:w-E:wO#JsQPO,5;oOOQO,5=Y,5=YOOQO-E:l-E:lO$*yQPO7+&OOOQO7+%v7+%vO$+XQPO7+&OOOQOG24_G24_OOQOG24vG24vOOQO7+%z7+%zOOQO7+&y7+&yO*jQPO'#G}O$+^QPO,5>sO$+fQPO7+&yO$+kQQO'#IYOOQOAN@mAN@mO$+vQQOAN@mOOQOAN@iAN@iO$+}QPOAN@iO$,SQQO\u003C\u003CKpO$,^QPO,5=lOOQO-E;O-E;OOOQO7+(O7+(OO$,oQPO7+(OO$,tQPO\u003C\u003CInOOQO\u003C\u003CIn\u003C\u003CInO$,yQPO\u003C\u003CIjOOQO\u003C\u003CIj\u003C\u003CIjO#JsQPO\u003C\u003CIjO$,yQPO\u003C\u003CIjO$-XQQO,5=iOOQO-E:{-E:{OOQO\u003C\u003CJe\u003C\u003CJeO$-dQPO,5>tOOQOG26XG26XOOQOG26TG26TOOQO\u003C\u003CKj\u003C\u003CKjOOQOAN?YAN?YOOQOAN?UAN?UO#JsQPOAN?UO$-lQPOAN?UO$-qQPOAN?UO$.PQPOG24pOOQOG24pG24pO#JsQPOG24pOOQOLD*[LD*[O$.UQPOLD*[OOQO!$'Mv!$'MvO*jQPO'#CaO$.ZQQO'#H]O$.nQQO'#CbO!'{QPO'#Cy\\\",stateData:\\\"$/Z~OPOSQOS%xOS~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op!POv{OwkOz!OO}cO!PvO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO![!`O!]yO!^yO!_yO!u}O!z|O#epO#qoO#spO#tpO#x!RO#y!QO$V!SO$X!TO$_!UO$b!VO$d!XO$g!WO$k!YO$m!ZO$r![O$t!]O$v!^O$x!_O${!aO$}!bO%|TO&ORO&QQO&WUO&sdO~Og^Oh^Ov{O}cO!P!mO!SyO!TyO!UyO!VyO!W!pO!XyO!YyO!ZzO!]yO!^yO!_yO!u}O!z|O%|TO&O!cO&Q!dO&^!hO&sdO~OWiXW&PXZ&PXuiXu&PX!P&PX!b&PX#]&PX#_&PX#a&PX#c&PX#d&PX#e&PX#f&PX#g&PX#h&PX#j&PX#n&PX#q&PX%|iX&OiX&QiX&]&PX&^iX&^&PX&m&PX&uiX&u&PX&w!aX~O#o$]X~P&bOWUXW&[XZUXuUXu&[X!PUX!bUX#]UX#_UX#aUX#cUX#dUX#eUX#fUX#gUX#hUX#jUX#nUX#qUX%|&[X&O&[X&Q&[X&]UX&^UX&^&[X&mUX&uUX&u&[X&w!aX~O#o$]X~P(fO&OSO&Q!qO~O&V!vO&X!tO~Og^Oh^O!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO!]yO!^yO!_yO%|TO&O!wO&QWOg!RXh!RX$g!RX&O!RX&Q!RX~O#x!|O#y!{O$V!}Ov!RX!u!RX!z!RX&s!RX~P*zOW#XOu#OO%|TO&O#SO&Q#SO&u&`X~OW#[Ou&ZX%|&ZX&O&ZX&Q&ZX&u&ZXY&ZXw&ZX&m&ZX&p&ZXZ&ZXq&ZX&]&ZX!P&ZX#_&ZX#a&ZX#c&ZX#d&ZX#e&ZX#f&ZX#g&ZX#h&ZX#j&ZX#n&ZX#q&ZX}&ZX!r&ZX#o&ZXs&ZX|&ZX~O&^#YO~P-^O&^&ZX~P-^OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO!]yO!^yO!_yO#epO#qoO#spO#tpO%|TO&WUO~O&O#^O&Q#]OY&oP~P/lO%|TOg%aXh%aXv%aX!S%aX!T%aX!U%aX!V%aX!W%aX!X%aX!Y%aX!Z%aX!]%aX!^%aX!_%aX!u%aX!z%aX$g%aX&O%aX&Q%aX&s%aX&^%aX~O!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO!]yO!^yO!_yOg!RXh!RXv!RX!u!RX!z!RX&O!RX&Q!RX&s!RX&^!RX~O$g!RX~P3^O|#kO~P]Og^Oh^Ov#pO!u#rO!z#qO&O!wO&QWO&s#oO~O$g#sO~P4|Ou#uO&u#vO!P&SX#_&SX#a&SX#c&SX#d&SX#e&SX#f&SX#g&SX#h&SX#j&SX#n&SX#q&SX&]&SX&^&SX&m&SX~OW#tOY&SX#o&SXs&SXq&SX|&SX~P5oO!b#wO#]#wOW&TXu&TX!P&TX#_&TX#a&TX#c&TX#d&TX#e&TX#f&TX#g&TX#h&TX#j&TX#n&TX#q&TX&]&TX&^&TX&m&TX&u&TXY&TX#o&TXs&TXq&TX|&TX~OZ#XX~P7^OZ#xO~O&u#vO~O#_#|O#a#}O#c$OO#d$OO#e$PO#f$QO#g$RO#h$RO#j$VO#n$SO#q$TO&]#zO&^#zO&m#{O~O!P$UO~P9`O&w$WO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO#epO#qoO#spO#tpO%|TO&O0kO&Q0jO&WUO~O#o$[O~O![$^O~O&O#SO&Q#SO~Og^Oh^O&O!wO&QWO&^#YO~OW$dO&u#vO~O#y!{O~O!W$hO&OSO&Q!qO~OZ$iO~OZ$lO~O!P$sO&O$rO&Q$rO~O!P$uO&O$rO&Q$rO~O!P$xO~P:jOZ${O}cO~OW&[Xu&[X%|&[X&O&[X&Q&[X&^&[X~OZ!aX~P>YOWiXuiX%|iX&OiX&QiX&^iX~OZ!aX~P>uOu#OO%|TO&O#SO&Q#SO~O%|TO~P3^Og^Oh^Ov#pO!u#rO!z#qO&^!hO&s#oO~O&O!cO&Q!dO~P?wOg^Oh^O%|TO&O!cO&Q!dO~O}cO!P%^O~OZ%_O~O}%aO!m%dO~O}cOg&fXh&fXv&fX!S&fX!T&fX!U&fX!V&fX!W&fX!X&fX!Y&fX!Z&fX!]&fX!^&fX!_&fX!u&fX!z&fX%|&fX&O&fX&Q&fX&^&fX&s&fX~OW%gOZ%hOgTahTa%|Ta&OTa&QTa~OvTa!STa!TTa!UTa!VTa!WTa!XTa!YTa!ZTa!]Ta!^Ta!_Ta!uTa!zTa#xTa#yTa$VTa$gTa&sTa&^TauTaYTaqTa|Ta!PTa~PBxO&V%kO&X!tO~Ou#OO%|TOqma&]maYma&mma!Pma~O&uma}ma!rma~PE[O!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO!]yO!^yO!_yO~Og!Rah!Rav!Ra!u!Ra!z!Ra$g!Ra&O!Ra&Q!Ra&s!Ra&^!Ra~PFQO#y%mO~Os%oO~Ou%pO%|TO~Ou#OO%|ra&Ora&Qra&uraYrawra&mra&pra!Pra&]raqra~OWra#_ra#ara#cra#dra#era#fra#gra#hra#jra#nra#qra&^ra#orasra|ra~PG{Ou#OO%|TOq&hX!P&hX!b&hX~OY&hX#o&hX~PIyO!b%sOq!`X!P!`XY!`X~Oq%tO!P&gX~O!P%vO~Ov%wO~Og^Oh^O%|0iO&O!wO&QWO&a%zO~O&]&_P~PKWO%|TO&O!wO&QWO~OW&PXYiXY!aXY&PXZ&PXq!aXu&PXwiX!b&PX#]&PX#_&PX#a&PX#c&PX#d&PX#e&PX#f&PX#g&PX#h&PX#j&PX#n&PX#q&PX&]&PX&^&PX&miX&m&PX&piX&uiX&u&PX&w!aX~P>uOWUXYUXY!aXY&[XZUXq!aXuUXw&[X!bUX#]UX#_UX#aUX#cUX#dUX#eUX#fUX#gUX#hUX#jUX#nUX#qUX&]UX&^UX&mUX&m&[X&p&[X&uUX&u&[X&w!aX~P>YOg^Oh^O%|TO&O!wO&QWOg!RXh!RX&O!RX&Q!RX~PFQOu#OOw&UO%|TO&O&RO&Q&QO&p&TO~OW#XOY&`X&m&`X&u&`X~P!!mOY&WO~P9`Og^Oh^O&O!wO&QWO~Oq&YOY&oX~OY&[O~Og^Oh^O%|TO&O!wO&QWOY&oP~PFQOY&aO&m&_O&u#vO~Oq&bO&w$WOY&vX~OY&dO~O%|TOg%aah%aav%aa!S%aa!T%aa!U%aa!V%aa!W%aa!X%aa!Y%aa!Z%aa!]%aa!^%aa!_%aa!u%aa!z%aa$g%aa&O%aa&Q%aa&s%aa&^%aa~O|&eO~P]O}&fO~Op&rOw&sO&OSO&Q!qO&^#YO~Oz&qO~P!&|Oz&uO&OSO&Q!qO&^#YO~OY&dP~P:jOg^Oh^O%|TO&O!wO&QWO~O}cO~P:jOW#XOu#OO%|TO&u&`X~O#q$TO!P#ra#_#ra#a#ra#c#ra#d#ra#e#ra#f#ra#g#ra#h#ra#j#ra#n#ra&]#ra&^#ra&m#raY#ra#o#ras#raq#ra|#ra~Oo'XO}'WO!r'YO&^!hO~O}'_O!r'YO~Oo'cO}'bO&^!hO~OZ#xOu'gO%|TO~OW%gO}'mO~OW%gO!P'oO~OW'pO!P'qO~O$g!WO&O0kO&Q0jO!P&dP~P/lO!P'|O#o'}O~P9`O}(OO~O$b(QO~O!P(RO~O!P(SO~O!P(TO~P9`O!P(VO~P9`OZ$iO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%|TO&O(XO&Q(WO&WUO~PFQO%P(bO%T(cOZ$|a_$|a`$|aa$|ab$|ac$|ae$|ag$|ah$|ap$|av$|aw$|az$|a}$|a!P$|a!S$|a!T$|a!U$|a!V$|a!W$|a!X$|a!Y$|a!Z$|a![$|a!]$|a!^$|a!_$|a!u$|a!z$|a#e$|a#q$|a#s$|a#t$|a#x$|a#y$|a$V$|a$X$|a$_$|a$b$|a$d$|a$g$|a$k$|a$m$|a$r$|a$t$|a$v$|a$x$|a${$|a$}$|a%v$|a%|$|a&O$|a&Q$|a&W$|a&s$|a|$|a$`$|a$p$|a~O}ra!rra&}ra~PG{OZ%_O~PIyO!P(gO~O!m%dO}&ka!P&ka~O}cO!P(jO~Oo(nOq!fX&]!fX~Oq(pO&]&lX~O&](rO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op)OOv{Ow(}Oz!OO|(yO}cO!PvO![!`O!u}O!z|O#epO#qoO#spO#tpO#x!RO#y!QO$V!SO$X!TO$_!UO$b!VO$d!XO$g!WO$k!YO$m!ZO$r![O$t!]O$v!^O$x!_O${!aO$}!bO%|TO&ORO&QQO&WUO&^#YO&sdO~PFQO}%aO~O})VOY&yP~P:jOW%gO!P)^O~Os)_O~Ou#OO%|TOq&ha!P&ha!b&haY&ha#o&ha~O})`O~P:jOq%tO!P&ga~Og^Oh^O%|0iO&O!wO&QWO~O&a)gO~P!7zOu#OO%|TOq&`X&]&`XY&`X&m&`X!P&`X~O}&`X!r&`X~P!8dOo)iOp)iOqnX&]nX~Oq)jO&]&_X~O&])lO~Ou#OOw)nO%|TO&OSO&Q!qO~OYma&mma&uma~P!9rOW&PXY!aXq!aXu!aX%|!aX~OWUXY!aXq!aXu!aX%|!aX~OW)qO~Ou#OO%|TO&O#SO&Q#SO&p)sO~Og^Oh^O%|TO&O!wO&QWO~PFQOq&YOY&oa~Ou#OO%|TO&O#SO&Q#SO&p&TO~OY)vO~OY)yO&m&_O~Oq&bOY&va~Og^Oh^Ov{O|*RO!u}O%|TO&O!wO&QWO&sdO~PFQO!P*SO~OW^iZ#XXu^i!P^i!b^i#]^i#_^i#a^i#c^i#d^i#e^i#f^i#g^i#h^i#j^i#n^i#q^i&]^i&^^i&m^i&u^iY^i#o^is^iq^i|^i~OW*cO~Os*dO~P9`Oz*eO&OSO&Q!qO~O!P]iY]i#o]is]iq]i|]i~P9`Oq*fOY&dX!P&dX~P9`OY*hO~O#q$TO!P#^i#_#^i#a#^i#c#^i#d#^i#e#^i#f#^i#j#^i#n#^i&]#^i&^#^i&m#^iY#^i#o#^is#^iq#^i|#^i~O#g$RO#h$RO~P!@zO#_#|O#f$QO#g$RO#h$RO#j$VO#q$TO&]#zO&^#zO!P#^i#a#^i#c#^i#d#^i#n#^i&m#^iY#^i#o#^is#^iq#^i|#^i~O#e$PO~P!B`O#_#|O#f$QO#g$RO#h$RO#j$VO#q$TO&]#zO&^#zO!P#^i#c#^i#d#^i#n#^iY#^i#o#^is#^iq#^i|#^i~O#a#}O#e$PO&m#{O~P!CtO#e#^i~P!B`O#q$TO!P#^i#a#^i#c#^i#d#^i#e#^i#f#^i#n#^i&m#^iY#^i#o#^is#^iq#^i|#^i~O#_#|O#g$RO#h$RO#j$VO&]#zO&^#zO~P!EaO#g#^i#h#^i~P!@zO#o*iO~P9`O#_&`X#a&`X#c&`X#d&`X#e&`X#f&`X#g&`X#h&`X#j&`X#n&`X#q&`X&^&`X#o&`Xs&`X|&`X~P!8dO!P#kiY#ki#o#kis#kiq#ki|#ki~P9`O|*lO~P$wO}'WO~O}'WO!r'YO~Oo'XO}'WO!r'YO~O%|TO&O#SO&Q#SO|&rP!P&rP~PFQO}'_O~Og^Oh^Ov{O|*yO!P*wO!u}O!z|O%|TO&O!wO&QWO&^!hO&sdO~PFQO}'bO~Oo'cO}'bO~Os*{O~P:jOu*}O%|TO~Ou'gO})`O%|TOW#Zi!P#Zi#_#Zi#a#Zi#c#Zi#d#Zi#e#Zi#f#Zi#g#Zi#h#Zi#j#Zi#n#Zi#q#Zi&]#Zi&^#Zi&m#Zi&u#ZiY#Zi#o#Zis#Ziq#Zi|#Zi~O}'WOW&ciu&ci!P&ci#_&ci#a&ci#c&ci#d&ci#e&ci#f&ci#g&ci#h&ci#j&ci#n&ci#q&ci&]&ci&^&ci&m&ci&u&ciY&ci#o&cis&ciq&ci|&ci~O#|+VO$O+WO$Q+WO$R+XO$S+YO~O|+UO~P!NoO$Y+ZO&OSO&Q!qO~OW+[O!P+]O~O$`+^OZ$^i_$^i`$^ia$^ib$^ic$^ie$^ig$^ih$^ip$^iv$^iw$^iz$^i}$^i!P$^i!S$^i!T$^i!U$^i!V$^i!W$^i!X$^i!Y$^i!Z$^i![$^i!]$^i!^$^i!_$^i!u$^i!z$^i#e$^i#q$^i#s$^i#t$^i#x$^i#y$^i$V$^i$X$^i$_$^i$b$^i$d$^i$g$^i$k$^i$m$^i$r$^i$t$^i$v$^i$x$^i${$^i$}$^i%v$^i%|$^i&O$^i&Q$^i&W$^i&s$^i|$^i$p$^i~Og^Oh^O$g#sO&O!wO&QWO~O!P+bO~P:jO!P+cO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op!POv{OwkOz!OO}cO!PvO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!Z+hO![!`O!]yO!^yO!_yO!u}O!z|O#epO#qoO#spO#tpO#x!RO#y!QO$V!SO$X!TO$_!UO$b!VO$d!XO$g!WO$k!YO$m!ZO$p+iO$r![O$t!]O$v!^O$x!_O${!aO$}!bO%|TO&ORO&QQO&WUO&sdO~O|+gO~P#&ROW&PXY&PXZ&PXu&PX!P&PX&uiX&u&PX~P>uOWUXYUXZUXuUX!PUX&uUX&u&[X~P>YOW#tOu#uO&u#vO~OW&TXY%WXu&TX!P%WX&u&TX~OZ#XX~P#+WOY+oO!P+mO~O%P(bO%T(cOZ$|i_$|i`$|ia$|ib$|ic$|ie$|ig$|ih$|ip$|iv$|iw$|iz$|i}$|i!P$|i!S$|i!T$|i!U$|i!V$|i!W$|i!X$|i!Y$|i!Z$|i![$|i!]$|i!^$|i!_$|i!u$|i!z$|i#e$|i#q$|i#s$|i#t$|i#x$|i#y$|i$V$|i$X$|i$_$|i$b$|i$d$|i$g$|i$k$|i$m$|i$r$|i$t$|i$v$|i$x$|i${$|i$}$|i%v$|i%|$|i&O$|i&Q$|i&W$|i&s$|i|$|i$`$|i$p$|i~OZ+rO~O%P(bO%T(cOZ%Ui_%Ui`%Uia%Uib%Uic%Uie%Uig%Uih%Uip%Uiv%Uiw%Uiz%Ui}%Ui!P%Ui!S%Ui!T%Ui!U%Ui!V%Ui!W%Ui!X%Ui!Y%Ui!Z%Ui![%Ui!]%Ui!^%Ui!_%Ui!u%Ui!z%Ui#e%Ui#q%Ui#s%Ui#t%Ui#x%Ui#y%Ui$V%Ui$X%Ui$_%Ui$b%Ui$d%Ui$g%Ui$k%Ui$m%Ui$r%Ui$t%Ui$v%Ui$x%Ui${%Ui$}%Ui%v%Ui%|%Ui&O%Ui&Q%Ui&W%Ui&s%Ui|%Ui$`%Ui$p%Ui~Ou#OO%|TO}&na!P&na!m&na~O!P+xO~Oo(nOq!fa&]!fa~Oq(pO&]&la~O!m%dO}&ki!P&ki~O|,RO~P]OW,TO~P5oOW&TXu&TX#_&TX#a&TX#c&TX#d&TX#e&TX#f&TX#g&TX#h&TX#j&TX#n&TX#q&TX&]&TX&^&TX&m&TX&u&TX~OZ#xO!P&TX~P#5_OW$dOZ#xO&u#vO~Op,VOw,VO~Oq,WO}&qX!P&qX~O!b,YO#]#wOY&TXZ#XX~P#5_OY&RXq&RX|&RX!P&RX~P9`O})VO|&xP~P:jOY&RXg%ZXh%ZX%|%ZX&O%ZX&Q%ZXq&RX|&RX!P&RX~Oq,]OY&yX~OY,_O~O})`O|&jP~P:jOq&iX!P&iX|&iXY&iX~P9`O&aTa~PBxOo)iOp)iOqna&]na~Oq)jO&]&_a~OW,gO~Ow,hO~Ou#OO%|TO&O,lO&Q,kO~Og^Oh^Ov#pO!u#rO&O!wO&QWO&s#oO~Og^Oh^Ov{O|,qO!u}O%|TO&O!wO&QWO&sdO~PFQOw,|O&OSO&Q!qO&^#YO~Oq*fOY&da!P&da~O#_ma#ama#cma#dma#ema#fma#gma#hma#jma#nma#qma&^ma#omasma|ma~PE[O|-QO~P$wOZ#xO}'WOq!|X|!|X!P!|X~Oq-UO|&rX!P&rX~O|-XO!P-WO~O&^!hO~P4|Og^Oh^Ov{O|-]O!P*wO!u}O!z|O%|TO&O!wO&QWO&^!hO&sdO~PFQOs-^O~P9`Os-^O~P:jO}'WOW&cqu&cq!P&cq#_&cq#a&cq#c&cq#d&cq#e&cq#f&cq#g&cq#h&cq#j&cq#n&cq#q&cq&]&cq&^&cq&m&cq&u&cqY&cq#o&cqs&cqq&cq|&cq~O|-bO~P!NoO!W-fO#}-fO&OSO&Q!qO~O!P-iO~O$Y-jO&OSO&Q!qO~O!b%sO#o-lOq!`X!P!`X~O!P-nO~P9`O!P-nO~P:jO!P-qO~P9`O|-sO~P#&RO![$^O#o-tO~O!P-vO~O!b-wO~OY-zOZ$iO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%|TO&O(XO&Q(WO&WUO~PFQOY-zO!P-{O~O%P(bO%T(cOZ%Uq_%Uq`%Uqa%Uqb%Uqc%Uqe%Uqg%Uqh%Uqp%Uqv%Uqw%Uqz%Uq}%Uq!P%Uq!S%Uq!T%Uq!U%Uq!V%Uq!W%Uq!X%Uq!Y%Uq!Z%Uq![%Uq!]%Uq!^%Uq!_%Uq!u%Uq!z%Uq#e%Uq#q%Uq#s%Uq#t%Uq#x%Uq#y%Uq$V%Uq$X%Uq$_%Uq$b%Uq$d%Uq$g%Uq$k%Uq$m%Uq$r%Uq$t%Uq$v%Uq$x%Uq${%Uq$}%Uq%v%Uq%|%Uq&O%Uq&Q%Uq&W%Uq&s%Uq|%Uq$`%Uq$p%Uq~Ou#OO%|TO}&ni!P&ni!m&ni~O&m&_Oq!ga&]!ga~O!m%dO}&kq!P&kq~O|.WO~P]Op.YOw&sOz&qO&OSO&Q!qO&^#YO~O!P.ZO~Oq,WO}&qa!P&qa~O})VO~P:jOq.aO|&xX~O|.cO~Oq,]OY&ya~Oq.gO|&jX~O|.iO~Ow.jO~Oq!aXu!aX!P!aX!b!aX%|!aX~OZ&PX~P#KsOZUX~P#KsO!P.kO~OZ.lO~OW^yZ#XXu^y!P^y!b^y#]^y#_^y#a^y#c^y#d^y#e^y#f^y#g^y#h^y#j^y#n^y#q^y&]^y&^^y&m^y&u^yY^y#o^ys^yq^y|^y~OY%_aq%_a!P%_a~P9`O!P#myY#my#o#mys#myq#my|#my~P9`O}'WOq!|a|!|a!P!|a~OZ#xO}'WOq!|a|!|a!P!|a~O%|TO&O#SO&Q#SOq%iX|%iX!P%iX~PFQOq-UO|&ra!P&ra~O|!}X~P$wO|.yO~Os.zO~P9`OW%gO!P.{O~OW%gO$P/QO&OSO&Q!qO!P&{P~OW%gO$T/RO~O!P/SO~O!b%sO#o/UOq!`X!P!`X~OY/WO~O!P/XO~P9`O#o/YO~P9`O!b/[O~OY/]OZ$iO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%|TO&O(XO&Q(WO&WUO~PFQOW#[Ou&ZX%|&ZX&O&ZX&Q&ZX&}&ZX~O&^#YO~P$%uOu#OO%|TO&}/_O&O%RX&Q%RX~O&m&_Oq!gi&]!gi~Op/cO&OSO&Q!qO~OW*cOZ#xO~O!P/eO~OY&RXq&RX~P9`O})VOq%mX|%mX~P:jOq.aO|&xa~O!b/hO~O})`Oq%bX|%bX~P:jOq.gO|&ja~OY/kO~O!P/lO~OZ/mO~O}'WOq!|i|!|i!P!|i~O|!}a~P$wOW%gO!P/qO~OW%gOq/rO!P&{X~OY/vO~P9`OY/xO~OY%Wq!P%Wq~P9`O&}/_O&O%Ra&Q%Ra~OY/}O~O!P0QO~Ou#OO!P0SO!Z0TO%|TO~OY0UO~Oq/rO!P&{a~O!P0XO~OW%gOq/rO!P&|X~OY0ZO~P9`OY0[O~OY%Wy!P%Wy~P9`Ou#OO%|TO&O%ta&Q%ta&}%ta~OY0]O~O!P0^O~Ou#OO!P0_O!Z0`O%|TO~OW%gOq%qa!P%qa~Oq/rO!P&|a~O!P0dO~Ou#OO!P0dO!Z0eO%|TO~O!P0fO~O!P0hO~O#o&PXY&PXs&PXq&PX|&PX~P&bO#oUXYUXsUXqUX|UX~P(fO`Q_P#f&Wc~\\\",goto:\\\"#)S&}PPPP'O'c*t-wP'cPP.].a/uPPPPP1aP2yPP4c7U9q\u003C^\u003Cv>kPPP>qPAXPPPBR2yPCzPPDuPElEtPPPPPPPPPPPPGPGhPJpJxKUKpKvK|MlMpMpMxPNX! a!!U!!`P!!u! aP!!{!#V! |!#fP!$V!$a!$g! a!$j!$pElEl!$t!%O!%R2y!&m2y2y!(fP.aP!(jP!)ZPPPPPP.aP.a!)w.aPP.aP.aPP.a!+]!+gPP!+m!+vPPPPPPPP'OP'OPP!+z!+z!,_!+zPP!+zP!+zP!,x!,{P!+z!-c!+zP!+zP!-f!-iP!+zP!+zP!+zP!+zP!+z!+zP!+zP!-mP!-s!-v!-|P!+z!.Y!.]P!.e!.w!2v!2|!3S!4Y!4`!4n!5t!5z!6Q!6[!6b!6h!6n!6t!6z!7Q!7W!7^!7d!7j!7p!7v!8Q!8W!8b!8hPPP!8n!+z!9cP!\u003CvP!=zP!@]!@s!Co2yPPP!E]!Hy!KjPP!NV!NYP#!c#!i#$V#$f#$n#%p#&Y#'T#'^#'a#'oP#'r#(OP#(V#(^P#(aP#(lP#(o#(r#(u#(y#)PstOcx![#l$[$j$k$m$n%a(O(z({+^+f,S'orOPXY`acopx!Y![!_!a!e!f!h!i!o!x#P#T#Y#[#_#`#e#i#l#n#u#w#x#|#}$O$P$Q$R$S$V$W$X$Y$[$b$i$j$k$l$m$n${%P%S%W%Z%[%_%a%d%h%r%s%x%y&O&P&X&Y&]&_&a&f'R'W'X'Y'_'b'c'g'h'j'u'v'x'}(O(Y(f(n(p(u(w(x(z({)V)`)i)j)y)}*Q*f*i*j*k*t*u*x*}+^+`+b+c+f+i+l+m+r+w,Q,S,W,Y,o-U-W-Z-l-n-w-{.P.a.g.x/U/X/[/^/h/k/{0R0T0U0`0b0e0l#rhO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n%a%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i,S,Y-l-n-w.a.g/U/X/[/h0T0`0et!sT!Q!S!T!{!}$h%m+V+W+X+Y-e-g/Q/R/r0iQ#mdS&V#`(wQ&i#oU&n#t$d,TQ&u#vW([${+m-{/^U)S%g'p+[Q)T%hS)o&P,QU*`&p,{.XQ*e&vQ,n)}Q,y*cQ.d,]R.n,ou!sT!Q!S!T!{!}$h%m+V+W+X+Y-e-g/Q/R/r0iT%i!r)f#uqO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n%a%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i,S,Y-l-n-w.a.g/U/X/[/h0T0`0e#tlO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n%a%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i,S,Y-l-n-w.a.g/U/X/[/h0T0`0eX(]${+m-{/^#}VO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n${%a%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i+m,S,Y-l-n-w-{.a.g/U/X/[/^/h0T0`0e#}kO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n${%a%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i+m,S,Y-l-n-w-{.a.g/U/X/[/^/h0T0`0e%x[OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$V$W$X$[$c$i$j$k$l$m$n${%[%_%a%d%h%s%x&Y&_&a&f&q'W'X'Y'b'c'g'u'w'x'}(O(^(n(x(z({)V)`)i)j)y*O*Q*f*i*k*u*v*x*}+^+b+c+f+i+m,S,W,Y-W-l-n-w-{.a.g.x/U/X/[/^/h0T0`0e0lQ%}#[Q)m&OV-}+r.R/_%x[OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$V$W$X$[$c$i$j$k$l$m$n${%[%_%a%d%h%s%x&Y&_&a&f&q'W'X'Y'b'c'g'u'w'x'}(O(^(n(x(z({)V)`)i)j)y*O*Q*f*i*k*u*v*x*}+^+b+c+f+i+m,S,W,Y-W-l-n-w-{.a.g.x/U/X/[/^/h0T0`0e0lV-}+r.R/_%x]OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$V$W$X$[$c$i$j$k$l$m$n${%[%_%a%d%h%s%x&Y&_&a&f&q'W'X'Y'b'c'g'u'w'x'}(O(^(n(x(z({)V)`)i)j)y*O*Q*f*i*k*u*v*x*}+^+b+c+f+i+m,S,W,Y-W-l-n-w-{.a.g.x/U/X/[/^/h0T0`0e0lV.O+r.R/_S#Z[-}S$c!O&qS&p#t$dQ&v#vQ)P%aQ,{*cR.X,T$eZO`copx!Y![!_!a#Y#l#u#w#x#|#}$O$P$Q$R$S$V$W$[$i$j$k$l$m$n${%a%d%h%s&_&a'X'Y'c'g'x'}(O(n(z({)V)`)i)j)y*f*i*}+^+b+c+f+i+m,S,W,Y-l-n-w-{.a.g/U/X/[/^/h0T0`0eQ%{#YR,e)j%y_OPX`ceopx!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$V$W$X$[$i$j$k$l$m$n${%[%_%a%d%h%s%x&Y&_&a&f'W'X'Y'b'c'g'u'w'x'}(O(^(n(x(z({)V)`)i)j)y*O*Q*f*i*k*u*v*x*}+^+b+c+f+i+m+r,S,W,Y-W-l-n-w-{.R.a.g.x/U/X/[/^/_/h0T0`0e0l!o#QY!e!x#R#T#`#n$Y%O%P%S%Z%r%y&P&X&]'R'v(Y(f(u(w)}*j*t+`+l+w,Q,o-Z.P/k/{0R0U0b#|kO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n${%a%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i+m,S,Y-l-n-w-{.a.g/U/X/[/^/h0T0`0eQ$j!UQ$k!VQ$p!ZQ$y!`R+j(QQ#yiS'k$b*bQ*_&oQ+R'lS,U(})OQ,x*aQ-S*pQ.[,VQ.r,zQ.u-TQ/d.YQ/o.sR0P/cQ'Z$_W*U&j'[']'^Q+Q'kU,r*V*W*XQ-R*pQ-`+RS.o,s,tS.t-S-TQ/n.pR/p.u]!mP!o'W*k-W.xreOcx![#l$[$j$k$m$n%a(O(z({+^+f,S[!gP!o'W*k-W.xW#b`#e%_&YQ'w$lW(^${+m-{/^S*O&f*QS*q'_-US*v'b*xR.R+rh#VY!W!e#n#s%S'v)}*t+`,o-ZQ)d%tQ)p&TR,i)s#rnOcopx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n%a%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i,S,Y-l-n-w.a.g/U/X/[/h0T0`0e^!kP!g!o'W*k-W.xv#TY!W#`#n#s%t&T&X&]'v(Y(w)s)}+`+l,o.Q/bQ#g`Q$_{Q$`|Q$a}W%P!e%S*t-ZS%V!h(pQ%]!iQ&j#pQ&k#qQ&l#rQ(o%WS(s%Z(uQ){&bS*p'_-UR-T*qU)b%s)`.gR+P'j[!mP!o'W*k-W.xT*w'b*x^!iP!g!o'W*k-W.xQ'^$_Q'f$aQ*X&jQ*^&lV*u'b*v*xQ%X!hR+|(pQ(m%VR+{(o#tnO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n%a%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i,S,Y-l-n-w.a.g/U/X/[/h0T0`0eQ%`!kS(f%P(sR(v%]T#e`%_U#c`#e%_R)t&YQ%c!lQ(h%RQ(l%UQ,O(tR.V,PrvOcx![#l$[$j$k$m$n%a(O(z({+^+f,S[!mP!o'W*k-W.xQ$|!bQ%^!jQ%f!pQ'U$WQ(U$yQ(e$}Q(j%TQ+t(cR.S+srtOcx![#l$[$j$k$m$n%a(O(z({+^+f,S[!mP!o'W*k-W.xS*P&f*QT*w'b*xQ']$_S*W&j'^R,t*XQ'[$_Q'a$`U*V&j']'^Q*Z&kS,s*W*XR.p,tQ*o'YR*z'cQ'e$aS*]&l'fR,w*^Q'd$aU*[&l'e'fS,v*]*^R.q,wrtOcx![#l$[$j$k$m$n%a(O(z({+^+f,S[!mP!o'W*k-W.xT*w'b*xQ'`$`S*Y&k'aR,u*ZQ*r'_R.v-UR-Y*sQ&g#mR*T&iT*P&f*QQ%b!lS(k%U%cR+y(lR({%aWk${+m-{/^#ulO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n%a%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i,S,Y-l-n-w.a.g/U/X/[/h0T0`0e#|iO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n${%a%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i+m,S,Y-l-n-w-{.a.g/U/X/[/^/h0T0`0eU&o#t$d,TS*a&p.XQ,z*cR.s,{T'i$b'j!]#|m#a$o$w$z&t&w&x&{&|&}'O'Q'T)U)a*|+a+d,}-P-_-p-u._/T/Z/w/z!V#}m#a$o$w$z&t&w&x&|'Q'T)U)a*|+a+d,}-P-_-p-u._/T/Z/w/z#unO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n%a%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i,S,Y-l-n-w.a.g/U/X/[/h0T0`0ea)W%h)V,Y.a/h0T0`0eQ)Y%hR.e,]Q'n$eQ)[%lR,`)]T+S'm+TsvOcx![#l$[$j$k$m$n%a(O(z({+^+f,SruOcx![#l$[$j$k$m$n%a(O(z({+^+f,SQ$t!]R$v!^R$m!XrvOcx![#l$[$j$k$m$n%a(O(z({+^+f,SR'x$lR$n!XR(P$pT+e(O+fX(`$|(a(e+uR+s(bQ.Q+rR/b.RQ(d$|Q+q(aQ+v(eR.T+uR$}!bQ(_${V-y+m-{/^QxOQ#lcW$]x#l(z,SQ(z%aR,S({rXOcx![#l$[$j$k$m$n%a(O(z({+^+f,Sn!fP!o#e&Y&f'W'_'b*Q*k*x+r-U-W.xl!zX!f#P#_#i$X%W%[%x&O'h'u(x0l!j#PY!e!x#T#`#n$Y%P%S%Z%r%y&P&X&]'R'v(Y(f(u(w)}*j*t+`+l+w,Q,o-Z.P/k/{0R0U0bQ#_`Q#ia#^$Xop!Y!_!a#u#w#x#|#}$O$P$Q$R$S$W$i%d%h%s&_&a'X'Y'c'g'x'}(n)V)`)i)y*f*i*}+b+c+i,W,Y-l-n-w.a.g/U/X/[/h0T0`0eS%W!h(pS%[!i*uS%x#Y)jQ&O#[S'h$b'jY'u$l${+m-{/^Q(x%_R0l$VQ!uUR%j!uQ)k%{R,f)k^#RY#`$Y'R'v(Y*jx%O!e!x#n%S%Z%y&P&X&](u(w)}*t+`+l,Q,o-Z.P/{[%q#R%O%r+w0R0bS%r#T%PQ+w(fQ0R/kR0b0UQ*g&xR-O*gQ!oPU%e!o*k.xQ*k'WR.x-W!pbOP`cx![!o#e#l$[$j$k$l$m$n${%_%a&Y&f'W'_'b(O(z({*Q*k*x+^+f+m+r,S-U-W-{.x/^Y!yX!f#_'u(xT#jb!yQ.h,aR/j.hQ%u#VR)e%uQ&`#fS)x&`.UR.U+zQ(q%XR+}(qQ&Z#cR)u&ZQ,X)QR.^,XQ*x'bR-[*xQ-V*rR.w-VQ*Q&fR,p*QQ'j$bR+O'jQ&c#gR)|&cQ.b,ZR/g.bQ,^)YR.f,^Q+T'mR-a+TQ-e+VR.}-eQ/s/OS0W/s0YR0Y/uQ+f(OR-r+fQ(a$|S+p(a+uR+u(eQ/`.PR/|/`Q+n(_R-|+n`wOcx#l%a(z({,SQ$q![Q'V$[Q's$jQ't$kQ'z$mQ'{$nS+e(O+fR-k+^'^sOPXY`acopx!Y![!_!a!e!f!h!i!o!x#P#T#Y#[#_#`#e#i#l#n#u#w#x#|#}$O$P$Q$R$S$V$W$X$Y$[$b$i$j$k$l$m$n${%P%S%W%Z%[%_%a%d%r%s%x%y&O&P&X&Y&]&_&a&f'R'W'X'Y'_'b'c'g'h'j'u'v'x'}(O(Y(f(n(p(u(w(x(z({)`)i)j)y)}*Q*f*i*j*k*t*u*x*}+^+`+b+c+f+i+l+m+r+w,Q,S,W,o-U-W-Z-l-n-w-{.P.g.x/U/X/[/^/k/{0R0U0b0la)X%h)V,Y.a/h0T0`0eQ!rTQ$e!QQ$f!SQ$g!TQ%l!{Q%n!}Q'r$hQ)]%mQ)f0iS-c+V+XQ-g+WQ-h+YQ.|-eS/O-g/QQ/u/RR0V/r%oSOT`cdopx!Q!S!T!Y![!_!a!{!}#`#l#o#t#u#v#w#x#|#}$O$P$Q$R$S$W$[$d$h$i$j$k$l$m$n${%a%g%h%m%s&P&a&p&v'g'p'x'}(O(w(z({)V)`)y)}*c*f*i*}+V+W+X+Y+[+^+b+c+f+i+m,Q,S,T,Y,],o,{-e-g-l-n-w-{.X.a.g/Q/R/U/X/[/^/h/r0T0`0e0iQ)Z%hQ,Z)VS.`,Y/hQ/f.aQ0a0TQ0c0`R0g0ermOcx![#l$[$j$k$m$n%a(O(z({+^+f,SS#a`$iQ$ToQ$ZpQ$o!YQ$w!_Q$z!aQ&t#uQ&w#wY&x#x$l+b-n/XQ&z#|Q&{#}Q&|$OQ&}$PQ'O$QQ'P$RQ'Q$SQ'T$W^)U%h)V.a/h0T0`0eU)a%s)`.gQ)z&aQ*|'gQ+a'xQ+d'}Q,j)yQ,}*fQ-P*iQ-_*}Q-p+cQ-u+iQ._,YQ/T-lQ/Z-wQ/w/UR/z/[#rgO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i,S,Y-l-n-w.a.g/U/X/[/h0T0`0eW(Z${+m-{/^R(|%arYOcx![#l$[$j$k$m$n%a(O(z({+^+f,S[!eP!o'W*k-W.xW!xX$X%x'uQ#``Q#ne!|$Yop!Y!_!a#u#w#x#|#}$O$P$Q$R$S$W$i%h%s&a'g'x'})V)`)y*f*i*}+b+c+i,Y-l-n-w.a.g/U/X/[/h0T0`0eQ%S!gS%Z!i*ud%y#Y%d&_'X'Y'c(n)i)j,WQ&P#_Q&X#bS&]#e&YQ'R$VQ'v$lW(Y${+m-{/^Q(u%[Q(w%_S)}&f*QQ*j0lS*t'b*xQ+`'wQ+l(^Q,Q(xQ,o*OQ-Z*vS.P+r.RR/{/_%x_OPX`ceopx!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$V$W$X$[$i$j$k$l$m$n${%[%_%a%d%h%s%x&Y&_&a&f'W'X'Y'b'c'g'u'w'x'}(O(^(n(x(z({)V)`)i)j)y*O*Q*f*i*k*u*v*x*}+^+b+c+f+i+m+r,S,W,Y-W-l-n-w-{.R.a.g.x/U/X/[/^/_/h0T0`0e0lQ$b!OQ'l$cR*b&q&TWOPX`ceopx!O!Y![!_!a!g!i!o#Y#[#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$V$W$X$[$c$i$j$k$l$m$n${%[%_%a%d%h%s%x&O&Y&_&a&f&q'W'X'Y'b'c'g'u'w'x'}(O(^(n(x(z({)V)`)i)j)y*O*Q*f*i*k*u*v*x*}+^+b+c+f+i+m+r,S,W,Y-W-l-n-w-{.R.a.g.x/U/X/[/^/_/h0T0`0e0lR%|#Y#zjOcopx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n${%a%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i+m,S,Y-l-n-w-{.a.g/U/X/[/^/h0T0`0eQ#f`Q%{#YQ'S$VU)Q%d'Y'cQ)w&_Q*m'XQ+z(nQ,d)iQ,e)jR.],WQ)h%zR,c)g#|fO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$W$[$i$j$k$l$m$n${%a%h%s&a'g'x'}(O(z({)V)`)y*f*i*}+^+b+c+f+i+m,S,Y-l-n-w-{.a.g/U/X/[/^/h0T0`0eT&m#t,TQ&y#xQ'y$lQ-o+bQ/V-nR/y/X]!nP!o'W*k-W.x#PaOPX`bcx![!f!o!y#_#e#l$[$j$k$l$m$n${%_%a&Y&f'W'_'b'u(O(x(z({*Q*k*x+^+f+m+r,S-U-W-{.x/^U#WY!W'vQ%Q!eU&h#n#s+`Q(i%SS,m)}*tT.m,o-Zj#UY!W!e#n#s%S%t&T)s)}*t,o-ZU&S#`&](wQ)r&XQ+_'vQ+k(YQ-m+`Q-x+lQ/a.QR0O/bQ)c%sQ,a)`R/i.gR,b)``!jP!o'W'b*k*x-W.xT%T!g*vR%Y!hW%R!e%S*t-ZQ(t%ZR,P(uS#d`%_R&^#eQ)R%dT*n'Y'cR*s'_[!lP!o'W*k-W.xR%U!gR#h`R,[)VR)Z%hT-d+V-eQ/P-gR/t/QR/t/R\\\",nodeNames:\\\"⚠ LineComment BlockComment Program ModuleDeclaration MarkerAnnotation Identifier ScopedIdentifier . Annotation ) ( AnnotationArgumentList AssignmentExpression FieldAccess IntegerLiteral FloatingPointLiteral BooleanLiteral CharacterLiteral StringLiteral TextBlock null ClassLiteral void PrimitiveType TypeName ScopedTypeName GenericType TypeArguments AnnotatedType Wildcard extends super , ArrayType ] Dimension [ class this ParenthesizedExpression ObjectCreationExpression new ArgumentList } { ClassBody ; FieldDeclaration Modifiers public protected private abstract static final strictfp default synchronized native transient volatile VariableDeclarator Definition AssignOp ArrayInitializer MethodDeclaration TypeParameters TypeParameter TypeBound FormalParameters ReceiverParameter FormalParameter SpreadParameter Throws throws Block ClassDeclaration Superclass SuperInterfaces implements InterfaceTypeList InterfaceDeclaration interface ExtendsInterfaces InterfaceBody ConstantDeclaration EnumDeclaration enum EnumBody EnumConstant EnumBodyDeclarations AnnotationTypeDeclaration AnnotationTypeBody AnnotationTypeElementDeclaration StaticInitializer ConstructorDeclaration ConstructorBody ExplicitConstructorInvocation ArrayAccess MethodInvocation MethodName MethodReference ArrayCreationExpression Dimension AssignOp BinaryExpression CompareOp CompareOp LogicOp BitOp BitOp LogicOp ArithOp ArithOp ArithOp BitOp InstanceofExpression instanceof LambdaExpression InferredParameters TernaryExpression LogicOp : UpdateExpression UpdateOp UnaryExpression LogicOp BitOp CastExpression ElementValueArrayInitializer ElementValuePair open module ModuleBody ModuleDirective requires transitive exports to opens uses provides with PackageDeclaration package ImportDeclaration import Asterisk ExpressionStatement LabeledStatement Label IfStatement if else WhileStatement while ForStatement for ForSpec LocalVariableDeclaration var EnhancedForStatement ForSpec AssertStatement assert SwitchStatement switch SwitchBlock SwitchLabel case DoStatement do BreakStatement break ContinueStatement continue ReturnStatement return SynchronizedStatement ThrowStatement throw TryStatement try CatchClause catch CatchFormalParameter CatchType FinallyClause finally TryWithResourcesStatement ResourceSpecification Resource ClassContent\\\",maxTerm:275,nodeProps:[[\\\"isolate\\\",-4,1,2,18,19,\\\"\\\"],[\\\"group\\\",-26,4,47,76,77,82,87,92,144,146,149,150,152,155,157,160,162,164,166,171,173,175,177,179,180,182,190,\\\"Statement\\\",-25,6,13,14,15,16,17,18,19,20,21,22,39,40,41,99,100,102,103,106,117,119,121,124,126,129,\\\"Expression\\\",-7,23,24,25,26,27,29,34,\\\"Type\\\"],[\\\"openedBy\\\",10,\\\"(\\\",44,\\\"{\\\"],[\\\"closedBy\\\",11,\\\")\\\",45,\\\"}\\\"]],propSources:[javaHighlighting],skippedNodes:[0,1,2],repeatNodeCount:28,tokenData:\\\"#$f_R!_OX%QXY'fYZ)bZ^'f^p%Qpq'fqr*|rs,^st%Qtu4euv5qvw7Rwx8ixyAQyzAnz{B[{|CQ|}Dh}!OEU!O!PFo!P!Q! i!Q!R!,_!R![!0V![!]!>g!]!^!?w!^!_!@e!_!`!BO!`!a!Br!a!b!D`!b!c!EO!c!}!Kz!}#O!MW#O#P%Q#P#Q!Mt#Q#R!Nb#R#S4e#S#T%Q#T#o4e#o#p# U#p#q# r#q#r##[#r#s##x#s#y%Q#y#z'f#z$f%Q$f$g'f$g#BY%Q#BY#BZ'f#BZ$IS%Q$IS$I_'f$I_$I|%Q$I|$JO'f$JO$JT%Q$JT$JU'f$JU$KV%Q$KV$KW'f$KW&FU%Q&FU&FV'f&FV;'S%Q;'S;=`&s\u003C%lO%QS%VV&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QS%qO&XSS%tVOY&ZYZ%lZr&Zrs&ys;'S&Z;'S;=`'`\u003C%lO&ZS&^VOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QS&vP;=`\u003C%l%QS&|UOY&ZYZ%lZr&Zs;'S&Z;'S;=`'`\u003C%lO&ZS'cP;=`\u003C%l&Z_'mk&XS%xZOX%QXY'fYZ)bZ^'f^p%Qpq'fqr%Qrs%qs#y%Q#y#z'f#z$f%Q$f$g'f$g#BY%Q#BY#BZ'f#BZ$IS%Q$IS$I_'f$I_$I|%Q$I|$JO'f$JO$JT%Q$JT$JU'f$JU$KV%Q$KV$KW'f$KW&FU%Q&FU&FV'f&FV;'S%Q;'S;=`&s\u003C%lO%Q_)iY&XS%xZX^*Xpq*X#y#z*X$f$g*X#BY#BZ*X$IS$I_*X$I|$JO*X$JT$JU*X$KV$KW*X&FU&FV*XZ*^Y%xZX^*Xpq*X#y#z*X$f$g*X#BY#BZ*X$IS$I_*X$I|$JO*X$JT$JU*X$KV$KW*X&FU&FV*XV+TX#sP&XSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`;'S%Q;'S;=`&s\u003C%lO%QU+wV#_Q&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QT,aXOY,|YZ%lZr,|rs3Ys#O,|#O#P2d#P;'S,|;'S;=`3S\u003C%lO,|T-PXOY-lYZ%lZr-lrs.^s#O-l#O#P.x#P;'S-l;'S;=`2|\u003C%lO-lT-qX&XSOY-lYZ%lZr-lrs.^s#O-l#O#P.x#P;'S-l;'S;=`2|\u003C%lO-lT.cVcPOY&ZYZ%lZr&Zrs&ys;'S&Z;'S;=`'`\u003C%lO&ZT.}V&XSOY-lYZ/dZr-lrs1]s;'S-l;'S;=`2|\u003C%lO-lT/iW&XSOY0RZr0Rrs0ns#O0R#O#P0s#P;'S0R;'S;=`1V\u003C%lO0RP0UWOY0RZr0Rrs0ns#O0R#O#P0s#P;'S0R;'S;=`1V\u003C%lO0RP0sOcPP0vTOY0RYZ0RZ;'S0R;'S;=`1V\u003C%lO0RP1YP;=`\u003C%l0RT1`XOY,|YZ%lZr,|rs1{s#O,|#O#P2d#P;'S,|;'S;=`3S\u003C%lO,|T2QUcPOY&ZYZ%lZr&Zs;'S&Z;'S;=`'`\u003C%lO&ZT2gVOY-lYZ/dZr-lrs1]s;'S-l;'S;=`2|\u003C%lO-lT3PP;=`\u003C%l-lT3VP;=`\u003C%l,|T3_VcPOY&ZYZ%lZr&Zrs3ts;'S&Z;'S;=`'`\u003C%lO&ZT3yR&VSXY4SYZ4`pq4SP4VRXY4SYZ4`pq4SP4eO&WP_4la&OZ&XSOY%QYZ%lZr%Qrs%qst%Qtu4eu!Q%Q!Q![4e![!c%Q!c!}4e!}#R%Q#R#S4e#S#T%Q#T#o4e#o;'S%Q;'S;=`&s\u003C%lO%QU5xX#gQ&XSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6e!`;'S%Q;'S;=`&s\u003C%lO%QU6lV#]Q&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QV7YZ&mR&XSOY%QYZ%lZr%Qrs%qsv%Qvw7{w!_%Q!_!`6e!`;'S%Q;'S;=`&s\u003C%lO%QU8SV#aQ&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QT8nZ&XSOY9aYZ%lZr9ars:osw9awx%Qx#O9a#O#P;y#P;'S9a;'S;=`@z\u003C%lO9aT9fX&XSOY%QYZ%lZr%Qrs%qsw%Qwx:Rx;'S%Q;'S;=`&s\u003C%lO%QT:YVbP&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QT:rXOY&ZYZ%lZr&Zrs&ysw&Zwx;_x;'S&Z;'S;=`'`\u003C%lO&ZT;dVbPOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QT\u003COZ&XSOY\u003CqYZ%lZr\u003Cqrs=isw\u003Cqwx9ax#O\u003Cq#O#P9a#P;'S\u003Cq;'S;=`?T\u003C%lO\u003CqT\u003CvZ&XSOY\u003CqYZ%lZr\u003Cqrs=isw\u003Cqwx:Rx#O\u003Cq#O#P%Q#P;'S\u003Cq;'S;=`?T\u003C%lO\u003CqT=lZOY>_YZ%lZr>_rs?Zsw>_wx;_x#O>_#O#P&Z#P;'S>_;'S;=`@t\u003C%lO>_T>bZOY\u003CqYZ%lZr\u003Cqrs=isw\u003Cqwx:Rx#O\u003Cq#O#P%Q#P;'S\u003Cq;'S;=`?T\u003C%lO\u003CqT?WP;=`\u003C%l\u003CqT?^ZOY>_YZ%lZr>_rs@Psw>_wx;_x#O>_#O#P&Z#P;'S>_;'S;=`@t\u003C%lO>_P@SVOY@PZw@Pwx@ix#O@P#P;'S@P;'S;=`@n\u003C%lO@PP@nObPP@qP;=`\u003C%l@PT@wP;=`\u003C%l>_T@}P;=`\u003C%l9a_AXVZZ&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QVAuVYR&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QVBeX$YP&XS#fQOY%QYZ%lZr%Qrs%qs!_%Q!_!`6e!`;'S%Q;'S;=`&s\u003C%lO%QVCXZ#eR&XSOY%QYZ%lZr%Qrs%qs{%Q{|Cz|!_%Q!_!`6e!`;'S%Q;'S;=`&s\u003C%lO%QVDRV#qR&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QVDoVqR&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QVE][#eR&XSOY%QYZ%lZr%Qrs%qs}%Q}!OCz!O!_%Q!_!`6e!`!aFR!a;'S%Q;'S;=`&s\u003C%lO%QVFYV&wR&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%Q_FvZWY&XSOY%QYZ%lZr%Qrs%qs!O%Q!O!PGi!P!Q%Q!Q![Hw![;'S%Q;'S;=`&s\u003C%lO%QVGnX&XSOY%QYZ%lZr%Qrs%qs!O%Q!O!PHZ!P;'S%Q;'S;=`&s\u003C%lO%QVHbV&pR&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QTIOc&XS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![Hw![!f%Q!f!gJZ!g!hJw!h!iJZ!i#R%Q#R#SNq#S#W%Q#W#XJZ#X#YJw#Y#ZJZ#Z;'S%Q;'S;=`&s\u003C%lO%QTJbV&XS`POY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QTJ|]&XSOY%QYZ%lZr%Qrs%qs{%Q{|Ku|}%Q}!OKu!O!Q%Q!Q![Lg![;'S%Q;'S;=`&s\u003C%lO%QTKzX&XSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lg![;'S%Q;'S;=`&s\u003C%lO%QTLnc&XS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lg![!f%Q!f!gJZ!g!h%Q!h!iJZ!i#R%Q#R#SMy#S#W%Q#W#XJZ#X#Y%Q#Y#ZJZ#Z;'S%Q;'S;=`&s\u003C%lO%QTNOZ&XSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lg![#R%Q#R#SMy#S;'S%Q;'S;=`&s\u003C%lO%QTNvZ&XSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Hw![#R%Q#R#SNq#S;'S%Q;'S;=`&s\u003C%lO%Q_! p]&XS#fQOY%QYZ%lZr%Qrs%qsz%Qz{!!i{!P%Q!P!Q!)[!Q!_%Q!_!`6e!`;'S%Q;'S;=`&s\u003C%lO%Q_!!nX&XSOY!!iYZ!#ZZr!!irs!$vsz!!iz{!&U{;'S!!i;'S;=`!'j\u003C%lO!!i_!#`T&XSOz!#oz{!$R{;'S!#o;'S;=`!$p\u003C%lO!#oZ!#rTOz!#oz{!$R{;'S!#o;'S;=`!$p\u003C%lO!#oZ!$UVOz!#oz{!$R{!P!#o!P!Q!$k!Q;'S!#o;'S;=`!$p\u003C%lO!#oZ!$pOQZZ!$sP;=`\u003C%l!#o_!$yXOY!%fYZ!#ZZr!%frs!'psz!%fz{!(`{;'S!%f;'S;=`!)U\u003C%lO!%f_!%iXOY!!iYZ!#ZZr!!irs!$vsz!!iz{!&U{;'S!!i;'S;=`!'j\u003C%lO!!i_!&ZZ&XSOY!!iYZ!#ZZr!!irs!$vsz!!iz{!&U{!P!!i!P!Q!&|!Q;'S!!i;'S;=`!'j\u003C%lO!!i_!'TV&XSQZOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%Q_!'mP;=`\u003C%l!!i_!'sXOY!%fYZ!#ZZr!%frs!#osz!%fz{!(`{;'S!%f;'S;=`!)U\u003C%lO!%f_!(cZOY!!iYZ!#ZZr!!irs!$vsz!!iz{!&U{!P!!i!P!Q!&|!Q;'S!!i;'S;=`!'j\u003C%lO!!i_!)XP;=`\u003C%l!%f_!)cV&XSPZOY!)[YZ%lZr!)[rs!)xs;'S!)[;'S;=`!+O\u003C%lO!)[_!)}VPZOY!*dYZ%lZr!*drs!+Us;'S!*d;'S;=`!,X\u003C%lO!*d_!*iVPZOY!)[YZ%lZr!)[rs!)xs;'S!)[;'S;=`!+O\u003C%lO!)[_!+RP;=`\u003C%l!)[_!+ZVPZOY!*dYZ%lZr!*drs!+ps;'S!*d;'S;=`!,X\u003C%lO!*dZ!+uSPZOY!+pZ;'S!+p;'S;=`!,R\u003C%lO!+pZ!,UP;=`\u003C%l!+p_!,[P;=`\u003C%l!*dT!,fu&XS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!.y!P!Q%Q!Q![!0V![!d%Q!d!e!3a!e!f%Q!f!gJZ!g!hJw!h!iJZ!i!n%Q!n!o!1{!o!q%Q!q!r!5_!r!z%Q!z!{!7V!{#R%Q#R#S!2i#S#U%Q#U#V!3a#V#W%Q#W#XJZ#X#YJw#Y#ZJZ#Z#`%Q#`#a!1{#a#c%Q#c#d!5_#d#l%Q#l#m!7V#m;'S%Q;'S;=`&s\u003C%lO%QT!/Qa&XS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![Hw![!f%Q!f!gJZ!g!hJw!h!iJZ!i#W%Q#W#XJZ#X#YJw#Y#ZJZ#Z;'S%Q;'S;=`&s\u003C%lO%QT!0^i&XS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!.y!P!Q%Q!Q![!0V![!f%Q!f!gJZ!g!hJw!h!iJZ!i!n%Q!n!o!1{!o#R%Q#R#S!2i#S#W%Q#W#XJZ#X#YJw#Y#ZJZ#Z#`%Q#`#a!1{#a;'S%Q;'S;=`&s\u003C%lO%QT!2SV&XS_POY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QT!2nZ&XSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!0V![#R%Q#R#S!2i#S;'S%Q;'S;=`&s\u003C%lO%QT!3fY&XSOY%QYZ%lZr%Qrs%qs!Q%Q!Q!R!4U!R!S!4U!S;'S%Q;'S;=`&s\u003C%lO%QT!4]`&XS_POY%QYZ%lZr%Qrs%qs!Q%Q!Q!R!4U!R!S!4U!S!n%Q!n!o!1{!o#R%Q#R#S!3a#S#`%Q#`#a!1{#a;'S%Q;'S;=`&s\u003C%lO%QT!5dX&XSOY%QYZ%lZr%Qrs%qs!Q%Q!Q!Y!6P!Y;'S%Q;'S;=`&s\u003C%lO%QT!6W_&XS_POY%QYZ%lZr%Qrs%qs!Q%Q!Q!Y!6P!Y!n%Q!n!o!1{!o#R%Q#R#S!5_#S#`%Q#`#a!1{#a;'S%Q;'S;=`&s\u003C%lO%QT!7[_&XSOY%QYZ%lZr%Qrs%qs!O%Q!O!P!8Z!P!Q%Q!Q![!:i![!c%Q!c!i!:i!i#T%Q#T#Z!:i#Z;'S%Q;'S;=`&s\u003C%lO%QT!8`]&XSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9X![!c%Q!c!i!9X!i#T%Q#T#Z!9X#Z;'S%Q;'S;=`&s\u003C%lO%QT!9^c&XSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9X![!c%Q!c!i!9X!i!r%Q!r!sJw!s#R%Q#R#S!8Z#S#T%Q#T#Z!9X#Z#d%Q#d#eJw#e;'S%Q;'S;=`&s\u003C%lO%QT!:pi&XS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!\u003C_!P!Q%Q!Q![!:i![!c%Q!c!i!:i!i!n%Q!n!o!1{!o!r%Q!r!sJw!s#R%Q#R#S!=i#S#T%Q#T#Z!:i#Z#`%Q#`#a!1{#a#d%Q#d#eJw#e;'S%Q;'S;=`&s\u003C%lO%QT!\u003Cda&XSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9X![!c%Q!c!i!9X!i!r%Q!r!sJw!s#T%Q#T#Z!9X#Z#d%Q#d#eJw#e;'S%Q;'S;=`&s\u003C%lO%QT!=n]&XSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!:i![!c%Q!c!i!:i!i#T%Q#T#Z!:i#Z;'S%Q;'S;=`&s\u003C%lO%QV!>nX#oR&XSOY%QYZ%lZr%Qrs%qs![%Q![!]!?Z!];'S%Q;'S;=`&s\u003C%lO%QV!?bV&uR&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QV!@OV!PR&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%Q_!@lY&^Z&XSOY%QYZ%lZr%Qrs%qs!^%Q!^!_!A[!_!`+p!`;'S%Q;'S;=`&s\u003C%lO%QU!AcX#hQ&XSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6e!`;'S%Q;'S;=`&s\u003C%lO%QV!BVX!bR&XSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`;'S%Q;'S;=`&s\u003C%lO%QV!ByY&]R&XSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`!a!Ci!a;'S%Q;'S;=`&s\u003C%lO%QU!CpY#hQ&XSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6e!`!a!A[!a;'S%Q;'S;=`&s\u003C%lO%Q_!DiV&aX#nQ&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%Q_!EVX%|Z&XSOY%QYZ%lZr%Qrs%qs#]%Q#]#^!Er#^;'S%Q;'S;=`&s\u003C%lO%QV!EwX&XSOY%QYZ%lZr%Qrs%qs#b%Q#b#c!Fd#c;'S%Q;'S;=`&s\u003C%lO%QV!FiX&XSOY%QYZ%lZr%Qrs%qs#h%Q#h#i!GU#i;'S%Q;'S;=`&s\u003C%lO%QV!GZX&XSOY%QYZ%lZr%Qrs%qs#X%Q#X#Y!Gv#Y;'S%Q;'S;=`&s\u003C%lO%QV!G{X&XSOY%QYZ%lZr%Qrs%qs#f%Q#f#g!Hh#g;'S%Q;'S;=`&s\u003C%lO%QV!HmX&XSOY%QYZ%lZr%Qrs%qs#Y%Q#Y#Z!IY#Z;'S%Q;'S;=`&s\u003C%lO%QV!I_X&XSOY%QYZ%lZr%Qrs%qs#T%Q#T#U!Iz#U;'S%Q;'S;=`&s\u003C%lO%QV!JPX&XSOY%QYZ%lZr%Qrs%qs#V%Q#V#W!Jl#W;'S%Q;'S;=`&s\u003C%lO%QV!JqX&XSOY%QYZ%lZr%Qrs%qs#X%Q#X#Y!K^#Y;'S%Q;'S;=`&s\u003C%lO%QV!KeV&sR&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%Q_!LRa&QZ&XSOY%QYZ%lZr%Qrs%qst%Qtu!Kzu!Q%Q!Q![!Kz![!c%Q!c!}!Kz!}#R%Q#R#S!Kz#S#T%Q#T#o!Kz#o;'S%Q;'S;=`&s\u003C%lO%Q_!M_VuZ&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QV!M{VsR&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QU!NiX#cQ&XSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6e!`;'S%Q;'S;=`&s\u003C%lO%QV# ]V}R&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%Q_# {Z&}X#cQ&XSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6e!`#p%Q#p#q#!n#q;'S%Q;'S;=`&s\u003C%lO%QU#!uV#dQ&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QV##cV|R&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%QT#$PV#tP&XSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s\u003C%lO%Q\\\",tokenizers:[0,1,2,3],topRules:{\\\"Program\\\":[0,3],\\\"ClassContent\\\":[1,193]},dynamicPrecedences:{\\\"27\\\":1,\\\"231\\\":-1,\\\"242\\\":-1},specialized:[{term:230,get:value=>spec_identifier$7[value]||-1}],tokenPrec:6995});const javaLanguage=LRLanguage.define({name:\\\"java\\\",parser:parser$i.configure({props:[indentNodeProp.add({IfStatement:continuedIndent({except:/^\\\\s*({|else\\\\b)/}),TryStatement:continuedIndent({except:/^\\\\s*({|catch|finally)\\\\b/}),LabeledStatement:flatIndent,SwitchBlock:context=>{let after=context.textAfter,closed=/^\\\\s*\\\\}/.test(after),isCase=/^\\\\s*(case|default)\\\\b/.test(after);return context.baseIndent+(closed?0:isCase?1:2)*context.unit;},Block:delimitedIndent({closing:\\\"}\\\"}),BlockComment:()=>null,Statement:continuedIndent({except:/^{/})}),foldNodeProp.add({[\\\"Block SwitchBlock ClassBody ElementValueArrayInitializer ModuleBody EnumBody \\\"+\\\"ConstructorBody InterfaceBody ArrayInitializer\\\"]:foldInside,BlockComment(tree){return{from:tree.from+2,to:tree.to-2};}})]}),languageData:{commentTokens:{line:\\\"//\\\",block:{open:\\\"/*\\\",close:\\\"*/\\\"}},indentOnInput:/^\\\\s*(?:case |default:|\\\\{|\\\\})$/}});function java(){return new LanguageSupport(javaLanguage);}var _m10=Object.freeze({__proto__:null,java:java,javaLanguage:javaLanguage});const jsonHighlighting=styleTags({String:tags$1.string,Number:tags$1.number,\\\"True False\\\":tags$1.bool,PropertyName:tags$1.propertyName,Null:tags$1.null,\\\",\\\":tags$1.separator,\\\"[ ]\\\":tags$1.squareBracket,\\\"{ }\\\":tags$1.brace});const parser$h=LRParser.deserialize({version:14,states:\\\"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#CjOOQO'#Cp'#CpQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CrOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59U,59UO!iQPO,59UOVQPO,59QOqQPO'#CkO!nQPO,59^OOQO1G.k1G.kOVQPO'#ClO!vQPO,59aOOQO1G.p1G.pOOQO1G.l1G.lOOQO,59V,59VOOQO-E6i-E6iOOQO,59W,59WOOQO-E6j-E6j\\\",stateData:\\\"#O~OcOS~OQSORSOSSOTSOWQO]ROePO~OVXOeUO~O[[O~PVOg^O~Oh_OVfX~OVaO~OhbO[iX~O[dO~Oh_OVfa~OhbO[ia~O\\\",goto:\\\"!kjPPPPPPkPPkqwPPk{!RPPP!XP!ePP!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R\\\",nodeNames:\\\"⚠ JsonText True False Null Number String } { Object Property PropertyName ] [ Array\\\",maxTerm:25,nodeProps:[[\\\"isolate\\\",-2,6,11,\\\"\\\"],[\\\"openedBy\\\",7,\\\"{\\\",12,\\\"[\\\"],[\\\"closedBy\\\",8,\\\"}\\\",13,\\\"]\\\"]],propSources:[jsonHighlighting],skippedNodes:[0],repeatNodeCount:2,tokenData:\\\"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oc~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o\u003C%lO!]~!}Oe~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`\u003C%l!]~$zOh~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yOg~~'OO]~~'TO[~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~\\\",tokenizers:[0],topRules:{\\\"JsonText\\\":[0,1]},tokenPrec:0});const jsonParseLinter=()=>view=>{try{JSON.parse(view.state.doc.toString());}catch(e){if(!(e instanceof SyntaxError))throw e;const pos=getErrorPosition(e,view.state.doc);return[{from:pos,message:e.message,severity:'error',to:pos}];}return[];};function getErrorPosition(error,doc){let m;if(m=error.message.match(/at position (\\\\d+)/))return Math.min(+m[1],doc.length);if(m=error.message.match(/at line (\\\\d+) column (\\\\d+)/))return Math.min(doc.line(+m[1]).from+ +m[2]-1,doc.length);return 0;}const jsonLanguage=LRLanguage.define({name:\\\"json\\\",parser:parser$h.configure({props:[indentNodeProp.add({Object:continuedIndent({except:/^\\\\s*\\\\}/}),Array:continuedIndent({except:/^\\\\s*\\\\]/})}),foldNodeProp.add({\\\"Object Array\\\":foldInside})]}),languageData:{closeBrackets:{brackets:[\\\"[\\\",\\\"{\\\",'\\\"']},indentOnInput:/^\\\\s*[\\\\}\\\\]]$/}});function json(){return new LanguageSupport(jsonLanguage);}var _m11=Object.freeze({__proto__:null,json:json,jsonLanguage:jsonLanguage,jsonParseLinter:jsonParseLinter});const RawString$1=1,templateArgsEndFallback=2,MacroName=3;const R=82,L=76,u=117,U=85,a=97,z=122,A=65,Z=90,Underscore=95,Zero$1=48,Quote$1=34,ParenL$2=40,ParenR$1=41,Space$1=32,GreaterThan$1=62;const rawString=new ExternalTokenizer(input=>{if(input.next==L||input.next==U){input.advance();}else if(input.next==u){input.advance();if(input.next==Zero$1+8)input.advance();}if(input.next!=R)return;input.advance();if(input.next!=Quote$1)return;input.advance();let marker=\\\"\\\";while(input.next!=ParenL$2){if(input.next==Space$1||input.next\u003C=13||input.next==ParenR$1)return;marker+=String.fromCharCode(input.next);input.advance();}input.advance();for(;;){if(input.next\u003C0)return input.acceptToken(RawString$1);if(input.next==ParenR$1){let match=true;for(let i=0;match&&i\u003Cmarker.length;i++)if(input.peek(i+1)!=marker.charCodeAt(i))match=false;if(match&&input.peek(marker.length+1)==Quote$1)return input.acceptToken(RawString$1,2+marker.length);}input.advance();}});const fallback=new ExternalTokenizer(input=>{if(input.next==GreaterThan$1){if(input.peek(1)==GreaterThan$1)input.acceptToken(templateArgsEndFallback,1);}else{let sawLetter=false,i=0;for(;;i++){if(input.next>=A&&input.next\u003C=Z)sawLetter=true;else if(input.next>=a&&input.next\u003C=z)return;else if(input.next!=Underscore&&!(input.next>=Zero$1&&input.next\u003C=Zero$1+9))break;input.advance();}if(sawLetter&&i>1)input.acceptToken(MacroName);}},{extend:true});const cppHighlighting=styleTags({\\\"typedef struct union enum class typename decltype auto template operator friend noexcept namespace using requires concept import export module __attribute__ __declspec __based\\\":tags$1.definitionKeyword,\\\"extern MsCallModifier MsPointerModifier extern static register thread_local inline const volatile restrict _Atomic mutable constexpr constinit consteval virtual explicit VirtualSpecifier Access\\\":tags$1.modifier,\\\"if else switch for while do case default return break continue goto throw try catch\\\":tags$1.controlKeyword,\\\"co_return co_yield co_await\\\":tags$1.controlKeyword,\\\"new sizeof delete static_assert\\\":tags$1.operatorKeyword,\\\"NULL nullptr\\\":tags$1.null,this:tags$1.self,\\\"True False\\\":tags$1.bool,\\\"TypeSize PrimitiveType\\\":tags$1.standard(tags$1.typeName),TypeIdentifier:tags$1.typeName,FieldIdentifier:tags$1.propertyName,\\\"CallExpression/FieldExpression/FieldIdentifier\\\":tags$1.function(tags$1.propertyName),\\\"ModuleName/Identifier\\\":tags$1.namespace,\\\"PartitionName\\\":tags$1.labelName,StatementIdentifier:tags$1.labelName,\\\"Identifier DestructorName\\\":tags$1.variableName,\\\"CallExpression/Identifier\\\":tags$1.function(tags$1.variableName),\\\"CallExpression/ScopedIdentifier/Identifier\\\":tags$1.function(tags$1.variableName),\\\"FunctionDeclarator/Identifier FunctionDeclarator/DestructorName\\\":tags$1.function(tags$1.definition(tags$1.variableName)),NamespaceIdentifier:tags$1.namespace,OperatorName:tags$1.operator,ArithOp:tags$1.arithmeticOperator,LogicOp:tags$1.logicOperator,BitOp:tags$1.bitwiseOperator,CompareOp:tags$1.compareOperator,AssignOp:tags$1.definitionOperator,UpdateOp:tags$1.updateOperator,LineComment:tags$1.lineComment,BlockComment:tags$1.blockComment,Number:tags$1.number,String:tags$1.string,\\\"RawString SystemLibString\\\":tags$1.special(tags$1.string),CharLiteral:tags$1.character,EscapeSequence:tags$1.escape,\\\"UserDefinedLiteral/Identifier\\\":tags$1.literal,PreProcArg:tags$1.meta,\\\"PreprocDirectiveName #include #ifdef #ifndef #if #define #else #endif #elif\\\":tags$1.processingInstruction,MacroName:tags$1.special(tags$1.name),\\\"( )\\\":tags$1.paren,\\\"[ ]\\\":tags$1.squareBracket,\\\"{ }\\\":tags$1.brace,\\\"\u003C >\\\":tags$1.angleBracket,\\\". ->\\\":tags$1.derefOperator,\\\", ;\\\":tags$1.separator});const spec_identifier$6={__proto__:null,bool:34,char:34,int:34,float:34,double:34,void:34,size_t:34,ssize_t:34,intptr_t:34,uintptr_t:34,charptr_t:34,int8_t:34,int16_t:34,int32_t:34,int64_t:34,uint8_t:34,uint16_t:34,uint32_t:34,uint64_t:34,char8_t:34,char16_t:34,char32_t:34,char64_t:34,const:68,volatile:70,restrict:72,_Atomic:74,mutable:76,constexpr:78,constinit:80,consteval:82,struct:86,__declspec:90,final:148,override:148,public:152,private:152,protected:152,virtual:154,extern:160,static:162,register:164,inline:166,thread_local:168,__attribute__:172,__based:178,__restrict:180,__uptr:180,__sptr:180,_unaligned:180,__unaligned:180,noexcept:194,requires:198,TRUE:784,true:784,FALSE:786,false:786,typename:218,class:220,template:234,throw:248,__cdecl:256,__clrcall:256,__stdcall:256,__fastcall:256,__thiscall:256,__vectorcall:256,try:260,catch:264,export:282,import:286,case:296,default:298,if:308,else:314,switch:318,do:322,while:324,for:330,return:334,break:338,continue:342,goto:346,co_return:350,co_yield:354,using:362,typedef:366,namespace:380,new:398,delete:400,co_await:402,concept:406,enum:410,static_assert:414,friend:422,union:424,explicit:430,operator:444,module:456,signed:518,unsigned:518,long:518,short:518,decltype:528,auto:530,sizeof:566,NULL:572,nullptr:586,this:588};const spec_={__proto__:null,\\\"\u003C\\\":131};const spec_templateArgsEnd={__proto__:null,\\\">\\\":135};const spec_scopedIdentifier={__proto__:null,operator:388,new:576,delete:582};const parser$g=LRParser.deserialize({version:14,states:\\\"$:|Q!QQVOOP'gOUOOO(XOWO'#CdO,RQUO'#CgO,]QUO'#FjO-sQbO'#CwO.UQUO'#CwO0TQUO'#KZO0[QUO'#CvO0gOpO'#DvO0oQ!dO'#D]OOQR'#JO'#JOO5XQVO'#GUO5fQUO'#JVOOQQ'#JV'#JVO8zQUO'#KmO\u003CeQUO'#KmO>{QVO'#E^O?]QUO'#E^OOQQ'#Ed'#EdOOQQ'#Ee'#EeO?bQVO'#EfO@XQVO'#EiOBUQUO'#FPOBvQUO'#FhOOQR'#Fj'#FjOB{QUO'#FjOOQR'#LQ'#LQOOQR'#LP'#LPOETQVO'#KQOFxQUO'#LVOGVQUO'#KqOGkQUO'#LVOH]QUO'#LXOOQR'#HU'#HUOOQR'#HV'#HVOOQR'#HW'#HWOOQR'#K|'#K|OOQR'#J_'#J_Q!QQVOOOHkQVO'#FOOIWQUO'#EhOI_QUOOOKZQVO'#HgOKkQUO'#HgONVQUO'#KqONaQUO'#KqOOQQ'#Kq'#KqO!!_QUO'#KqOOQQ'#Jq'#JqO!!lQUO'#HxOOQQ'#KZ'#KZO!&^QUO'#KZO!&zQUO'#KQO!(zQVO'#I]O!(zQVO'#I`OCQQUO'#KQOOQQ'#Ip'#IpOOQQ'#KQ'#KQO!,}QUO'#KZOOQR'#KY'#KYO!-UQUO'#DYO!/mQUO'#KnOOQQ'#Kn'#KnO!/tQUO'#KnO!/{QUO'#ETO!0QQUO'#EWO!0VQUO'#FRO8zQUO'#FPO!QQVO'#F^O!0[Q#vO'#F`O!0gQUO'#FkO!0oQUO'#FpO!0tQVO'#FrO!0oQUO'#FuO!3sQUO'#FvO!3xQVO'#FxO!4SQUO'#FzO!4XQUO'#F|O!4^QUO'#GOO!4cQVO'#GQO!(zQVO'#GSO!4jQUO'#GpO!4xQUO'#GYO!(zQVO'#FeO!6VQUO'#FeO!6[QVO'#G`O!6cQUO'#GaO!6nQUO'#GnO!6sQUO'#GrO!6xQUO'#GzO!7jQ&lO'#HiO!:mQUO'#GuO!:}QUO'#HXO!;YQUO'#HZO!;bQUO'#DWO!;bQUO'#HuO!;bQUO'#HvO!;yQUO'#HwO!\u003C[QUO'#H|O!=PQUO'#H}O!>uQVO'#IbO!(zQVO'#IdO!?PQUO'#IgO!?WQVO'#IjP!@}{,UO'#CbP!6n{,UO'#CbP!AY{7[O'#CbP!6n{,UO'#CbP!A_{,UO'#CbP!AjOSO'#IzPOOO)CEn)CEnOOOO'#I|'#I|O!AtOWO,59OOOQR,59O,59OO!(zQVO,59UOOQQ,59W,59WO!(zQVO,5;ROOQR,5\u003CU,5\u003CUO!BPQUO,59YO!(zQVO,5>qOOQR'#IX'#IXOOQR'#IY'#IYOOQR'#IZ'#IZOOQR'#I['#I[O!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!(zQVO,5>rO!DOQVO,5>zOOQQ,5?W,5?WO!EqQVO'#ChO!IjQUO'#CyOOQQ,59c,59cOOQQ,59b,59bOOQQ,5\u003C},5\u003C}O!IwQ&lO,5=mO!?PQUO,5?RO!LkQVO,5?UO!LrQbO,59cO!L}QVO'#FYOOQQ,5?P,5?PO!M_QVO,59VO!MfO`O,5:bO!MkQbO'#D^O!M|QbO'#K^O!N[QbO,59wO!NdQbO'#CwO!NuQUO'#CwO!NzQUO'#KZO# UQUO'#CvOOQR-E\u003C|-E\u003C|O# aQUO,5AoO# hQVO'#EfO@XQVO'#EiOBUQUO,5;kOOQR,5\u003Cp,5\u003CpO#$aQUO'#KQO#$hQUO'#KQO!(zQVO'#IUO8zQUO,5;kO#${Q&lO'#HiO#(SQUO'#CsO#*wQbO'#CwO#*|QUO'#CvO#.jQUO'#KZOOQQ-E=T-E=TO#0}QUO,5AXO#1XQUO'#KZO#1cQUO,5AXOOQR,5Ao,5AoOOQQ,5>l,5>lO#3gQUO'#CgO#4]QUO,5>pO#6OQUO'#IeOOQR'#I}'#I}O#6WQUO,5:xO#6tQUO,5:xO#7eQUO,5:xO#8YQUO'#CtO!0QQUO'#ClOOQQ'#JW'#JWO#6tQUO,5:xO#8bQUO,5;QO!4xQUO'#C}O#9kQUO,5;QO#9pQUO,5>QO#:|QUO'#C}O#;dQUO,5>{O#;iQUO'#KwO#\u003CrQUO,5;TO#\u003CzQVO,5;TO#=UQUO,5;TOOQQ,5;T,5;TO#>}QUO'#L[O#?UQUO,5>UO#?ZQbO'#CwO#?fQUO'#GcO#?kQUO'#E^O#@[QUO,5;kO#@sQUO'#K}O#@{QUO,5;rOKkQUO'#HfOBUQUO'#HgO#AQQUO'#KqO!6nQUO'#HjO#AxQUO'#CtO!0tQVO,5\u003CSOOQQ'#Cg'#CgOOQR'#Jh'#JhO#A}QVO,5=`OOQQ,5?Z,5?ZO#DWQbO'#CwO#DcQUO'#GcOOQQ'#Ji'#JiOOQQ-E=g-E=gOGVQUO,5AqOGkQUO,5AqO#DhQUO,5AsO#DsQUO'#G|OOQR,5Aq,5AqO#DhQUO,5AqO#EOQUO'#HOO#EWQUO,5AsOOQR,5As,5AsOOQR,5At,5AtO#EfQVO,5AtOOQR-E=]-E=]O#G`QVO,5;jOOQR,5;j,5;jO#IaQUO'#EjO#JfQUO'#EwO#K]QVO'#ExO#MoQUO'#EvO#MwQUO'#EyO#NvQUO'#EzOOQQ'#Kz'#KzO$ mQUO,5;SO$!sQUO'#EvOOQQ,5;S,5;SO$#pQUO,5;SO$%cQUO,5:yO$'|QVO,5>PO$(WQUO'#E[O$(eQUO,5>ROOQQ,5>S,5>SO$,RQVO'#C{OOQQ-E=o-E=oOOQQ,5>d,5>dOOQQ,59`,59`O$,]QUO,5>wO$.]QUO,5>zO!6nQUO,59tO$.pQUO,5;qO$.}QUO,5\u003C{O!0QQUO,5:oOOQQ,5:r,5:rO$/YQUO,5;mO$/_QUO'#KmOBUQUO,5;kOOQR,5;x,5;xO$0OQUO'#FbO$0^QUO'#FbO$0cQUO,5;zO$3|QVO'#FmO!0tQVO,5\u003CVO!0oQUO,5\u003CVO!0VQUO,5\u003C[O$4TQVO'#GUO$7PQUO,5\u003C^O!0tQVO,5\u003CaO$:gQVO,5\u003CbO$:tQUO,5\u003CdOOQR,5\u003Cd,5\u003CdO$;}QUO,5\u003CdOOQR,5\u003Cf,5\u003CfOOQR,5\u003Ch,5\u003ChOOQQ'#Fi'#FiO$\u003CSQUO,5\u003CjO$\u003CXQUO,5\u003ClOOQR,5\u003Cl,5\u003ClO$=_QUO,5\u003CnO$>eQUO,5\u003CrO$>pQUO,5=[O$>uQUO,5=[O!4xQUO,5\u003CtO$>}QUO,5\u003CtO$?cQUO,5\u003CPO$@iQVO,5\u003CPO$BzQUO,5\u003CzOOQR,5\u003Cz,5\u003CzOOQR,5\u003C{,5\u003C{O$>uQUO,5\u003C{O$DQQUO,5\u003C{O$D]QUO,5=YO!(zQVO,5=^O!(zQVO,5=fO#NeQUO,5=mOOQQ,5>T,5>TO$FbQUO,5>TO$FlQUO,5>TO$FqQUO,5>TO$FvQUO,5>TO!6nQUO,5>TO$HtQUO'#KZO$H{QUO,5=oO$IWQUO,5=aOKkQUO,5=oO$JQQUO,5=sOOQR,5=s,5=sO$JYQUO,5=sO$LeQVO'#H[OOQQ,5=u,5=uO!;]QUO,5=uO%#`QUO'#KjO%#gQUO'#K[O%#{QUO'#KjO%$VQUO'#DyO%$hQUO'#D|O%'eQUO'#K[OOQQ'#K['#K[O%)WQUO'#K[O%#gQUO'#K[O%)]QUO'#K[OOQQ,59r,59rOOQQ,5>a,5>aOOQQ,5>b,5>bO%)eQUO'#HzO%)mQUO,5>cOOQQ,5>c,5>cO%-XQUO,5>cO%-dQUO,5>hO%1OQVO,5>iO%1VQUO,5>|O# hQVO'#EfO%4]QUO,5>|OOQQ,5>|,5>|O%4|QUO,5?OO%7QQUO,5?RO!\u003C[QUO,5?RO%8|QUO,5?UO%\u003CiQVO,5?UP!A_{,UO,58|P%\u003Cp{,UO,58|P%=O{7[O,58|P%=U{,UO,58|PO{O'#Ju'#JuP%=Z{,UO'#LcPOOO'#Lc'#LcP%=a{,UO'#LcPOOO,58|,58|POOO,5?f,5?fP%=fOSO,5?fOOOO-E\u003Cz-E\u003CzOOQR1G.j1G.jO%=mQUO1G.pO%>sQUO1G0mOOQQ1G0m1G0mO%@PQUO'#CoO%B`QbO'#CwO%BkQUO'#CrO%BpQUO'#CrO%BuQUO1G.tO#AxQUO'#CqOOQQ1G.t1G.tO%DxQUO1G4]O%FOQUO1G4^O%GqQUO1G4^O%IdQUO1G4^O%KVQUO1G4^O%LxQUO1G4^O%NkQUO1G4^O&!^QUO1G4^O&$PQUO1G4^O&%rQUO1G4^O&'eQUO1G4^O&)WQUO1G4^O&*yQUO'#KPO&,SQUO'#KPO&,[QUO,59SOOQQ,5=P,5=PO&.dQUO,5=PO&.nQUO,5=PO&.sQUO,5=PO&.xQUO,5=PO!6nQUO,5=PO#NeQUO1G3XO&/SQUO1G4mO!\u003C[QUO1G4mO&1OQUO1G4pO&2qQVO1G4pOOQQ1G.}1G.}OOQQ1G.|1G.|OOQQ1G2i1G2iO!IwQ&lO1G3XO&2xQUO'#LOO@XQVO'#EiO&4RQUO'#F]OOQQ'#Ja'#JaO&4WQUO'#FZO&4cQUO'#LOO&4kQUO,5;tO&4pQUO1G.qOOQQ1G.q1G.qOOQR1G/|1G/|O&6cQ!dO'#JPO&6hQbO,59xO&8yQ!eO'#D`O&9QQ!dO'#JRO&9VQbO,5@xO&9VQbO,5@xOOQR1G/c1G/cO&9bQbO1G/cO&9gQ&lO'#GeO&:eQbO,59cOOQR1G7Z1G7ZO#@[QUO1G1VO&:pQUO1G1^OBUQUO1G1VO&=RQUO'#CyO#*wQbO,59cO&@tQUO1G6sOOQR-E\u003C{-E\u003C{O&BWQUO1G0dO#6WQUO1G0dOOQQ-E=U-E=UO#6tQUO1G0dOOQQ1G0l1G0lO&B{QUO,59iOOQQ1G3l1G3lO&CcQUO,59iO&CyQUO,59iO!M_QVO1G4gO!(zQVO'#JYO&DeQUO,5AcOOQQ1G0o1G0oO!(zQVO1G0oO!6nQUO'#JnO&DmQUO,5AvOOQQ1G3p1G3pOOQR1G1V1G1VO&HjQVO'#FOO!M_QVO,5;sOOQQ,5;s,5;sOBUQUO'#JcO&JfQUO,5AiO&JnQVO'#E[OOQR1G1^1G1^O&M]QUO'#L[OOQR1G1n1G1nOOQR-E=f-E=fOOQR1G7]1G7]O#DhQUO1G7]OGVQUO1G7]O#DhQUO1G7_OOQR1G7_1G7_O&MeQUO'#G}O&MmQUO'#LWOOQQ,5=h,5=hO&M{QUO,5=jO&NQQUO,5=kOOQR1G7`1G7`O#EfQVO1G7`O&NVQUO1G7`O' ]QVO,5=kOOQR1G1U1G1UO$.vQUO'#E]O'!RQUO'#E]OOQQ'#Ky'#KyO'!lQUO'#KxO'!wQUO,5;UO'#PQUO'#ElO'#dQUO'#ElO'#wQUO'#EtOOQQ'#J['#J[O'#|QUO,5;cO'$sQUO,5;cO'%nQUO,5;dO'&tQVO,5;dOOQQ,5;d,5;dO''OQVO,5;dO'&tQVO,5;dO''VQUO,5;bO'(SQUO,5;eO'(_QUO'#KpO'(gQUO,5:vO'(lQUO,5;fOOQQ1G0n1G0nOOQQ'#J]'#J]O''VQUO,5;bO!4xQUO'#E}OOQQ,5;b,5;bO')gQUO'#E`O'+aQUO'#E{OHrQUO1G0nO'+fQUO'#EbOOQQ'#JX'#JXO'-OQUO'#KrOOQQ'#Kr'#KrO'-xQUO1G0eO'.pQUO1G3kO'/vQVO1G3kOOQQ1G3k1G3kO'0QQVO1G3kO'0XQUO'#L_O'1eQUO'#KXO'1sQUO'#KWO'2OQUO,59gO'2WQUO1G/`O'2]QUO'#FPOOQR1G1]1G1]OOQR1G2g1G2gO$>uQUO1G2gO'2gQUO1G2gO'2rQUO1G0ZOOQR'#J`'#J`O'2wQVO1G1XO'8pQUO'#FTO'8uQUO1G1VO!6nQUO'#JdO'9TQUO,5;|O$0^QUO,5;|OOQQ'#Fc'#FcOOQQ,5;|,5;|O'9cQUO1G1fOOQR1G1f1G1fO'9kQUO,5\u003CXO$.vQUO'#FWOBUQUO'#FWO'9rQUO,5\u003CXO!(zQVO,5\u003CXO'9zQUO,5\u003CXO':PQVO1G1qO!0tQVO1G1qOOQR1G1v1G1vO'?oQUO1G1xOOQR1G1{1G1{O'?tQUO1G1|OBUQUO1G2]O'@}QVO1G1|O'CcQUO1G1|O'ChQUO'#GWO8zQUO1G2]OOQR1G2O1G2OOOQR1G2U1G2UOOQR1G2W1G2WOOQR1G2Y1G2YO'CmQUO1G2^O!4xQUO1G2^OOQR1G2v1G2vO'CuQUO1G2vO$>}QUO1G2`OOQQ'#Cu'#CuO'CzQUO'#G[O'DuQUO'#G[O'DzQUO'#LRO'EYQUO'#G_OOQQ'#LS'#LSO'EhQUO1G2`O'EmQVO1G1kO'HOQVO'#GUOBUQUO'#FWOOQR'#Je'#JeO'EmQVO1G1kO'HYQUO'#FvOOQR1G2f1G2fO'H_QUO1G2gO'HdQUO'#JgO'2gQUO1G2gO!(zQVO1G2tO'HlQUO1G2xO'IuQUO1G3QO'J{QUO1G3XOOQQ1G3o1G3oO'KaQUO1G3oOOQR1G3Z1G3ZO'KfQUO'#KZO'2]QUO'#LTOGkQUO'#LVOOQR'#Gy'#GyO#DhQUO'#LXOOQR'#HQ'#HQO'KpQUO'#GvO'#wQUO'#GuOOQR1G2{1G2{O'LmQUO1G2{O'MdQUO1G3ZO'MoQUO1G3_O'MtQUO1G3_OOQR1G3_1G3_O'M|QUO'#H]OOQR'#H]'#H]O( VQUO'#H]O!(zQVO'#H`O!(zQVO'#H_OOQR'#LZ'#LZO( [QUO'#LZOOQR'#Jk'#JkO( aQVO,5=vOOQQ,5=v,5=vO( hQUO'#H^O( pQUO'#HZOOQQ1G3a1G3aO( zQUO,5@vOOQQ,5@v,5@vO%)WQUO,5@vO%)]QUO,5@vO%$VQUO,5:eO(%iQUO'#KkO(%wQUO'#KkOOQQ,5:e,5:eOOQQ'#JS'#JSO(&SQUO'#D}O(&^QUO'#KqOGkQUO'#LVO('YQUO'#D}OOQQ'#Hp'#HpOOQQ'#Hr'#HrOOQQ'#Hs'#HsOOQQ'#Kl'#KlOOQQ'#JU'#JUO('dQUO,5:hOOQQ,5:h,5:hO((aQUO'#LVO((nQUO'#HtO()UQUO,5@vO()]QUO'#H{O()hQUO'#L^O()pQUO,5>fO()uQUO'#L]OOQQ1G3}1G3}O(-lQUO1G3}O(-sQUO1G3}O(-zQUO1G4TO(/QQUO1G4TO(/VQUO,5A|O!6nQUO1G4hO!(zQVO'#IiOOQQ1G4m1G4mO(/[QUO1G4mO(1_QVO1G4pPOOO1G.h1G.hP!A_{,UO1G.hP(3_QUO'#LeP(3j{,UO1G.hP(3o{7[O1G.hPO{O-E=s-E=sPOOO,5A},5A}P(3w{,UO,5A}POOO1G5Q1G5QO!(zQVO7+$[O(3|QUO'#CyOOQQ,59^,59^O(4XQbO,59cO(4dQbO,59^OOQQ,59],59]OOQQ7+)w7+)wO!M_QVO'#JtO(4oQUO,5@kOOQQ1G.n1G.nOOQQ1G2k1G2kO(4wQUO1G2kO(4|QUO7+(sOOQQ7+*X7+*XO(7bQUO7+*XO(7iQUO7+*XO(1_QVO7+*[O#NeQUO7+(sO(7vQVO'#JbO(8ZQUO,5AjO(8cQUO,5;vOOQQ'#Co'#CoOOQQ,5;w,5;wO!(zQVO'#F[OOQQ-E=_-E=_O!M_QVO,5;uOOQQ1G1`1G1`OOQQ,5?k,5?kOOQQ-E\u003C}-E\u003C}OOQR'#Dg'#DgOOQR'#Di'#DiOOQR'#Dl'#DlO(9lQ!eO'#K_O(9sQMkO'#K_O(9zQ!eO'#K_OOQR'#K_'#K_OOQR'#JQ'#JQO(:RQ!eO,59zOOQQ,59z,59zO(:YQbO,5?mOOQQ-E=P-E=PO(:hQbO1G6dOOQR7+$}7+$}OOQR7+&q7+&qOOQR7+&x7+&xO'8uQUO7+&qO(:sQUO7+&OO#6WQUO7+&OO(;hQUO1G/TO(\u003COQUO1G/TO(\u003CjQUO7+*ROOQQ7+*V7+*VO(>]QUO,5?tOOQQ-E=W-E=WO(?fQUO7+&ZOOQQ,5@Y,5@YOOQQ-E=l-E=lO(?kQUO'#LOO@XQVO'#EiO(@wQUO1G1_OOQQ1G1_1G1_O(BQQUO,5?}OOQQ,5?},5?}OOQQ-E=a-E=aO(BfQUO'#KpOOQR7+,w7+,wO#DhQUO7+,wOOQR7+,y7+,yO(BsQUO,5=iO#DsQUO'#JjO(CUQUO,5ArOOQR1G3U1G3UOOQR1G3V1G3VO(CdQUO7+,zOOQR7+,z7+,zO(E[QUO,5:wO(FyQUO'#EwO!(zQVO,5;VO(GlQUO,5:wO(GvQUO'#EpO(HXQUO'#EzOOQQ,5;Z,5;ZO#K]QVO'#ExO(HoQUO,5:wO(HvQUO'#EyO#GgQUO'#JZO(J`QUO,5AdOOQQ1G0p1G0pO(JkQUO,5;WO!\u003C[QUO,5;^O(KUQUO,5;_O(KdQUO,5;WO(MvQUO,5;`OOQQ-E=Y-E=YO(NOQUO1G0}OOQQ1G1O1G1OO(NyQUO1G1OO)!PQVO1G1OO)!WQVO1G1OO)!bQUO1G0|OOQQ1G0|1G0|OOQQ1G1P1G1PO)#_QUO'#JoO)#iQUO,5A[OOQQ1G0b1G0bOOQQ-E=Z-E=ZO)#qQUO,5;iO!\u003C[QUO,5;iO)$nQVO,5:zO)$uQUO,5;gO$ mQUO7+&YOOQQ7+&Y7+&YO!(zQVO'#EfO)$|QUO,5:|OOQQ'#Ks'#KsOOQQ-E=V-E=VOOQQ,5A^,5A^OOQQ'#Jl'#JlO)(qQUO7+&PPOQQ7+&P7+&POOQQ7+)V7+)VO))iQUO7+)VO)*oQVO7+)VOOQQ,5>m,5>mO$)YQVO'#JsO)*vQUO,5@rOOQQ1G/R1G/ROOQQ7+$z7+$zO)+RQUO7+(RO)+WQUO7+(ROOQR7+(R7+(RO$>uQUO7+(ROOQQ7+%u7+%uOOQR-E=^-E=^O!0VQUO,5;oOOQQ,5@O,5@OOOQQ-E=b-E=bO$0^QUO1G1hOOQQ1G1h1G1hOOQR7+'Q7+'QOOQR1G1s1G1sOBUQUO,5;rO)+tQUO,5\u003CYO)+{QUO1G1sO)-UQUO1G1sO!0tQVO7+']O)-ZQVO7+']O)2yQUO7+'dO)3OQVO7+'hO)5dQUO7+'wO)5nQUO7+'hO)6tQVO7+'hOKkQUO7+'wO$>hQUO,5\u003CrO!4xQUO7+'xO)6{QUO7+'xOOQR7+(b7+(bO)7QQUO7+'zO)7VQUO,5\u003CvO'CzQUO,5\u003CvO)7}QUO,5\u003CvO'CzQUO,5\u003CvOOQQ,5\u003Cw,5\u003CwO)8`QVO,5\u003CxO'EYQUO'#JfO)8jQUO,5AmO)8rQUO,5\u003CyOOQR7+'z7+'zO)8}QVO7+'VO)5gQUO'#K}OOQR-E=c-E=cO);`QVO,5\u003CbOOQQ,5@R,5@RO!6nQUO,5@ROOQQ-E=e-E=eO)=wQUO7+(`O)>}QUO7+(dO)?SQVO7+(dOOQQ7+(l7+(lOOQQ7+)Z7+)ZO)?[QUO'#KjO)?fQUO'#KjOOQR,5=b,5=bO)?sQUO,5=bO!;bQUO,5=bO!;bQUO,5=bO!;bQUO,5=bOOQR7+(g7+(gOOQR7+(u7+(uOOQR7+(y7+(yOOQR,5=w,5=wO)?xQUO,5=zO)AOQUO,5=yOOQR,5Au,5AuOOQR-E=i-E=iOOQQ1G3b1G3bO)BUQUO,5=xO)BZQVO'#EfOOQQ1G6b1G6bO%)WQUO1G6bO%)]QUO1G6bOOQQ1G0P1G0POOQQ-E=Q-E=QO)DrQUO,5AVO(%iQUO'#JTO)D}QUO,5AVO)D}QUO,5AVO)EVQUO,5:iO8zQUO,5:iOOQQ,5>],5>]O)EaQUO,5AqO)EhQUO'#EVO)FrQUO'#EVO)G]QUO,5:iO)GgQUO'#HlO)GgQUO'#HmOOQQ'#Ko'#KoO)HUQUO'#KoO!(zQVO'#HnOOQQ,5:i,5:iO)HvQUO,5:iO!M_QVO,5:iOOQQ-E=S-E=SOOQQ1G0S1G0SOOQQ,5>`,5>`O)H{QUO1G6bO!(zQVO,5>gO)LjQUO'#JrO)LuQUO,5AxOOQQ1G4Q1G4QO)L}QUO,5AwOOQQ,5Aw,5AwOOQQ7+)i7+)iO*!lQUO7+)iOOQQ7+)o7+)oO*'kQVO1G7hO*)mQUO7+*SO*)rQUO,5?TO**xQUO7+*[POOO7+$S7+$SP*,kQUO'#LfP*,sQUO,5BPP*,x{,UO7+$SPOOO1G7i1G7iO*,}QUO\u003C\u003CGvOOQQ1G.x1G.xOOQQ'#IT'#ITO*.pQUO,5@`OOQQ,5@`,5@`OOQQ-E=r-E=rOOQQ7+(V7+(VOOQQ\u003C\u003CMs\u003C\u003CMsO*/yQUO\u003C\u003CMsO*1|QUO\u003C\u003CMvO*3oQUO\u003C\u003CL_O*4TQUO,5?|OOQQ,5?|,5?|OOQQ-E=`-E=`OOQQ1G1b1G1bO*5^QUO,5;vO*6dQUO1G1aOOQQ1G1a1G1aOOQR,5@y,5@yO*7mQ!eO,5@yO*7tQMkO,5@yO*7{Q!eO,5@yOOQR-E=O-E=OOOQQ1G/f1G/fO*8SQ!eO'#DwOOQQ1G5X1G5XOOQR\u003C\u003CJ]\u003C\u003CJ]O*8ZQUO\u003C\u003CIjO*9OQUO7+$oOOQQ\u003C\u003CIu\u003C\u003CIuO(7vQVO,5;ROOQR\u003C=!c\u003C=!cOOQQ1G3T1G3TOOQQ,5@U,5@UOOQQ-E=h-E=hOOQR\u003C=!f\u003C=!fO*9{QUO1G0cO*:SQUO'#EzO*:dQUO1G0cO*:kQUO'#I}O*\u003CRQUO1G0qO!(zQVO1G0qOOQQ,5;[,5;[OOQQ,5;],5;]OOQQ,5?u,5?uOOQQ-E=X-E=XO!\u003C[QUO1G0xO*=bQUO1G0xOOQQ1G0y1G0yO*=sQUO'#ElOOQQ1G0z1G0zOOQQ7+&j7+&jO*>XQUO7+&jO*?_QVO7+&jOOQQ7+&h7+&hOOQQ,5@Z,5@ZOOQQ-E=m-E=mO*@ZQUO1G1TO*@eQUO1G1TO*AOQUO1G0fOOQQ1G0f1G0fO*BUQUO'#K{O*B^QUO1G1ROOQQ\u003C\u003CIt\u003C\u003CItOOQQ'#Hb'#HbO'+fQUO,5={OOQQ'#Hd'#HdO'+fQUO,5=}OOQQ-E=j-E=jPOQQ\u003C\u003CIk\u003C\u003CIkPOQQ-E=k-E=kOOQQ\u003C\u003CLq\u003C\u003CLqO*BcQUO'#LaO*CoQUO'#L`OOQQ,5@_,5@_OOQQ-E=q-E=qOOQR\u003C\u003CKm\u003C\u003CKmO$>uQUO\u003C\u003CKmO*C}QUO\u003C\u003CKmOOQR1G1Z1G1ZOOQQ7+'S7+'SO!M_QVO1G1tO*DSQUO1G1tOOQR7+'_7+'_OOQR\u003C\u003CJw\u003C\u003CJwO!0tQVO\u003C\u003CJwOOQR\u003C\u003CKO\u003C\u003CKOO*D_QUO\u003C\u003CKSO*EeQVO\u003C\u003CKSOKkQUO\u003C\u003CKcO!M_QVO\u003C\u003CKcO*ElQUO\u003C\u003CKSO!0tQVO\u003C\u003CKSO*FuQUO\u003C\u003CKSO*FzQUO\u003C\u003CKcO*GVQUO\u003C\u003CKdOOQR\u003C\u003CKd\u003C\u003CKdOOQR\u003C\u003CKf\u003C\u003CKfO*G[QUO1G2bO)7VQUO1G2bO'CzQUO1G2bO*GmQUO1G2dO*HsQVO1G2dOOQQ1G2d1G2dO*H}QVO1G2dO*IUQUO,5@QOOQQ-E=d-E=dOOQQ1G2e1G2eO*IdQUO1G1|O*JmQVO1G1|O*JtQUO1G1|OOQQ1G5m1G5mOOQR\u003C\u003CKz\u003C\u003CKzOOQR\u003C\u003CLO\u003C\u003CLOO*JyQVO\u003C\u003CLOO*KUQUO\u003C\u003CLOOOQR1G2|1G2|O*KZQUO1G2|O*KbQUO1G3eOOQR1G3d1G3dOOQQ7++|7++|O%)WQUO7++|O*KmQUO1G6qO*KmQUO1G6qO(%iQUO,5?oO*KuQUO,5?oOOQQ-E=R-E=RO*LQQUO1G0TOOQQ1G0T1G0TO*L[QUO1G0TO!M_QVO1G0TO*LaQUO1G0TOOQQ1G3w1G3wO*LkQUO,5:qO)EhQUO,5:qO*MXQUO,5:qO)EhQUO,5:qO$#uQUO,5:uO*MvQVO,5>VO)GgQUO'#JpO*NQQUO1G0TO*NcQVO1G0TOOQQ1G3u1G3uO*NjQUO,5>WO*NuQUO,5>XO+ dQUO,5>YO+!jQUO1G0TO%)]QUO7++|O+#pQUO1G4ROOQQ,5@^,5@^OOQQ-E=p-E=pOOQQ\u003C\u003CMT\u003C\u003CMTOOQQ\u003C\u003CMn\u003C\u003CMnO+$yQUO1G4oP+&|QUO'#JvP+'UQUO,5BQPO{O1G7k1G7kPOOO\u003C\u003CGn\u003C\u003CGnOOQQANC_ANC_OOQR1G6e1G6eO+'^Q!eO,5:cOOQQ,5:c,5:cO+'eQUO1G0mO+(qQUO7+&]O+*QQUO7+&dO+*cQUO,5;WOOQQ\u003C\u003CJU\u003C\u003CJUO+*qQUO7+&oOOQQ7+&Q7+&QO!4xQUO'#J^O++lQUO,5AgOOQQ7+&m7+&mOOQQ1G3g1G3gO++tQUO1G3iOOQQ,5>n,5>nO+/iQUOANAXOOQRANAXANAXO+/nQUO7+'`OOQRAN@cAN@cO+0zQVOAN@nO+1RQUOAN@nO!0tQVOAN@nO+2[QUOAN@nO+2aQUOAN@}O+2lQUOAN@}O+3rQUOAN@}OOQRAN@nAN@nO!M_QVOAN@}OOQRANAOANAOO+3wQUO7+'|O)7VQUO7+'|OOQQ7+(O7+(OO+4YQUO7+(OO+5`QVO7+(OO+5gQVO7+'hO+5nQUOANAjOOQR7+(h7+(hOOQR7+)P7+)PO+5sQUO7+)PO+5xQUO7+)POOQQ\u003C= h\u003C= hO+6QQUO7+,]O+6YQUO1G5ZOOQQ1G5Z1G5ZO+6eQUO7+%oOOQQ7+%o7+%oO+6vQUO7+%oO*NcQVO7+%oOOQQ7+)a7+)aO+6{QUO7+%oO+8RQUO7+%oO!M_QVO7+%oO+8]QUO1G0]O*LkQUO1G0]O)EhQUO1G0]OOQQ1G0a1G0aO+8zQUO1G3qO+:QQVO1G3qOOQQ1G3q1G3qO+:[QVO1G3qO+:cQUO,5@[OOQQ-E=n-E=nOOQQ1G3r1G3rO%)WQUO\u003C= hOOQQ7+*Z7+*ZPOQQ,5@b,5@bPOQQ-E=t-E=tOOQQ1G/}1G/}OOQQ,5?x,5?xOOQQ-E=[-E=[OOQRG26sG26sO+:zQUOG26YO!0tQVOG26YO+\u003CTQUOG26YOOQRG26YG26YO!M_QVOG26iO!0tQVOG26iO+\u003CYQUOG26iO+=`QUOG26iO+=eQUO\u003C\u003CKhOOQQ\u003C\u003CKj\u003C\u003CKjOOQRG27UG27UOOQR\u003C\u003CLk\u003C\u003CLkO+=vQUO\u003C\u003CLkOOQQ7+*u7+*uOOQQ\u003C\u003CIZ\u003C\u003CIZO+={QUO\u003C\u003CIZO!M_QVO\u003C\u003CIZO+>QQUO\u003C\u003CIZO+?WQUO\u003C\u003CIZO*NcQVO\u003C\u003CIZOOQQ\u003C\u003CL{\u003C\u003CL{O+?iQUO7+%wO*LkQUO7+%wOOQQ7+)]7+)]O+@WQUO7+)]O+A^QVO7+)]OOQQANESANESO!0tQVOLD+tOOQRLD+tLD+tO+AeQUOLD,TO+BkQUOLD,TOOQRLD,TLD,TO!0tQVOLD,TOOQRANBVANBVOOQQAN>uAN>uO+BpQUOAN>uO+CvQUOAN>uO!M_QVOAN>uO+C{QUO\u003C\u003CIcOOQQ\u003C\u003CLw\u003C\u003CLwOOQR!$( `!$( `O!0tQVO!$( oOOQR!$( o!$( oOOQQG24aG24aO+DjQUOG24aO+EpQUOG24aOOQR!)9EZ!)9EZOOQQLD){LD){O+EuQUO'#CgO(dQUO'#CgO+IrQUO'#CyO+LcQUO'#CyO!E{QUO'#CyO+M[QUO'#CyO+MoQUO'#CyO,#bQUO'#CyO,#rQUO'#CyO,$PQUO'#CyO,$[QbO,59cO,$gQbO,59cO,$rQbO,59cO,$}QbO'#CwO,%`QbO'#CwO,%qQbO'#CwO,&SQUO'#CgO,(gQUO'#CgO,(tQUO'#CgO,+iQUO'#CgO,.lQUO'#CgO,.|QUO'#CgO,2uQUO'#CgO,2|QUO'#CgO,3|QUO'#CgO,6VQUO,5:xO#?kQUO,5:xO#?kQUO,5:xO#=ZQUO'#L[O,6sQbO'#CwO,7OQbO'#CwO,7ZQbO'#CwO,7fQbO'#CwO#6tQUO'#E^O,7qQUO'#E^O,9OQUO'#HgO,9pQbO'#CwO,9{QbO'#CwO,:WQUO'#CvO,:]QUO'#CvO,:bQUO'#CoO,:pQbO,59cO,:{QbO,59cO,;WQbO,59cO,;cQbO,59cO,;nQbO,59cO,;yQbO,59cO,\u003CUQbO,59cO,6VQUO1G0dO,\u003CaQUO1G0dO#?kQUO1G0dO,7qQUO1G0dO,>nQUO'#KZO,?OQUO'#CyO,?^QbO,59cO,6VQUO7+&OO,\u003CaQUO7+&OO,?iQUO'#EwO,@[QUO'#EzO,@{QUO'#E^O,AQQUO'#GcO,AVQUO'#CvO,A[QUO'#CwO,AaQUO'#CwO,AfQUO'#CvO,AkQUO'#GcO,ApQUO'#KZO,B^QUO'#KZO,BhQUO'#CvO,BsQUO'#CvO,COQUO'#CvO,\u003CaQUO,5:xO,7qQUO,5:xO,7qQUO,5:xO,CZQUO'#KZO,CnQbO'#CwO,CyQUO'#CrO,DOQUO'#E^\\\",stateData:\\\",Dt~O(nOSSOSTOSRPQVPQ'ePQ'gPQ'hPQ'iPQ'jPQ'kPQ'lPQ'mPQ~O*ZOS~OPmO]eOa!]Od!POlTOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O{#RO}!_O!TxO!VfO!X!XO!Y!WO!i!YO!opO!r!`O!s!aO!t!aO!u!bO!v!aO!x!cO!{!dO#V#QO#a#VO#b#TO#i#OO#p!xO#t!fO#v!eO$R!gO$T!hO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO${!tO$}!uO%U!yO%_#ZO%`#[O%a#YO%c!zO%e#UO%g!{O%l#SO%o!|O%v!}O%|#PO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(rRO)PYO)SaO)U|O)V{O)WiO)X!ZO)YXO)hcO)idO~OR#bOV#]O'e#^O'g#_O'h#`O'i#`O'j#aO'k#aO'l#_O'm#_O~OX#dO(p#dO(q#fO~O]ZX]iXdiXlgXpZXpiXriXsiXtiXuiXviXwiXxiXyiX}iX!TiX!VZX!ViX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!cZX!eZX!fZX!gZX!hZX!riX!siX!tiX!uiX!viX!xiX!{iX%viX&riX&siX(riX(uZX(v$]X(wZX(xZX)SZX)SiX)TZX)UZX)UiX)VZX)ViX)WZX)XZX)jZX~O)WiX!UZX~P(dO]#}O!V#lO!X#{O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO(w#kO(x#kO)S#mO)T#oO)U#nO)V#pO)W#jO)X#|O~Od$RO%Y$SO'[$TO'_$UO(y$OO~Ol$VO~O!T$WO](}Xd(}Xr(}Xs(}Xt(}Xu(}Xv(}Xw(}Xx(}Xy(}X}(}X!V(}X!r(}X!s(}X!t(}X!u(}X!v(}X!x(}X!{(}X%v(}X&r(}X&s(}X(r(}X)S(}X)U(}X)V(}X)W(}X~Ol$VO~P.ZOl$VO!g$YO)j$YO~OX$ZO)Z$ZO~O!R$[O)X)QP)])QP~OPmO]$eOa!]Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O{#RO}!_O!TxO!V$fO!X!XO!Y!WO!i!YO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#V#QO#a#VO#b#TO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO)PYO)S$kO)V$kO)WiO)X!ZO)YXO)hcO)idO~Ol$_O#t$lO(rRO~P0zO](]Xa'yXd(]Xl'yXl(]Xr'yXr(]Xs'yXs(]Xt'yXt(]Xu'yXu(]Xv'yXv(]Xw'yXw(]Xx'yXx(]Xy'yXy(]X{'yX}'yX!V(]X!o(]X!r'yX!r(]X!s'yX!s(]X!t'yX!t(]X!u'yX!u(]X!v'yX!v(]X!x'yX!x(]X!{(]X#a'yX#b'yX%e'yX%l'yX%o(]X%v(]X&m'yX&r'yX&s'yX(r'yX(r(]X)S(]X)U(]X)V(]X~Oa!TOl$oOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O{#RO}!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(r$nO~Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O}!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO&r#WO&s$wO])aXd)aXl)aX!V)aX!{)aX%v)aX(r)aX)S)aX)U)aX)V)aX~O)W$vO~P:nOPmO]eOd!POr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!VfO!X!XO!Y!WO!i!YO!{!dO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO)SaO)U|O)V{O)X!ZO)YXO)hcO)idO~Oa%QOl:zO!|%RO(r$xO~P\u003ClO)S%SO~Oa!]Ol$_O{#RO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(r:}O~P\u003ClOPmO]$eOa%QOl:zO!V$fO!W%_O!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO)S$kO)V%]O)X!ZO)YXO)hcO)idO)j%[O~O]%hOd!POl%bO!V%kO!{!dO%v$mO(r;OO)S%dO)U%iO)V%iO~O(v%mO~O)W#jO~O(r%nO](tX!V(tX!X(tX!Y(tX![(tX!^(tX!_(tX!a(tX!b(tX!c(tX!e(tX!f(tX!h(tX(u(tX(w(tX(x(tX)S(tX)T(tX)U(tX)V(tX)W(tX)X(tX!g(tX)j(tX!O(tX!W(tX(v(tX!U(tXQ(tX!d(tX~OP%oO(oQO~PCQO]%hOd!POr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!V%kO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO!{!dO%o!|O%v!}O)S;`O)U|O)V|O~Ol%rO!o%wO(r$xO~PE_O!TxO#v!eO(v%yO)j%|O])eX!V)eX~O]%hOd!POl%rO!V%kO!{!dO%v!}O(r$xO)S;`O)U|O)V|O~O!TxO#v!eO)W&PO)j&QO~O!U&TO~P!QO]&YO!TxO!V&WO)S&VO)U&ZO)V&ZO~Op&UO~PHrO]&cO!V&bO~OPmO]eOd!PO!VfO!X!XO!Y!WO!i!YO!{!dO#V#QO%_#ZO%`#[O%a#YO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO)SaO)U|O)V{O)X!ZO)YXO)hcO)idO~Oa%QOl:zO%v$mO(r$xO~PIgO]%hOd!POl;[O!V%kO!{!dO%v$mO(r$xO)S;`O)U|O)V|O~Op&fO](tX])eX!V(tX!V)eX!X(tX!Y(tX![(tX!^(tX!_(tX!a(tX!b(tX!c(tX!e(tX!f(tX!h(tX(u(tX(w(tX(x(tX)S(tX)T(tX)U(tX)V(tX)W(tX)X(tX!O(tX!O)eX!U(tX~O!g$YO)j$YO~PL]O!g(tX)j(tX~PL]O](tX!V(tX!X(tX!Y(tX![(tX!^(tX!_(tX!a(tX!b(tX!c(tX!e(tX!f(tX!h(tX(u(tX(w(tX(x(tX)S(tX)T(tX)U(tX)V(tX)W(tX)X(tX!g(tX)j(tX!O(tX!U(tX~O])eX!V)eX!O)eX~PNkOa&hO&m!RO]&lXd&lXl&lXr&lXs&lXt&lXu&lXv&lXw&lXx&lXy&lX}&lX!V&lX!r&lX!s&lX!t&lX!u&lX!v&lX!x&lX!{&lX%v&lX&r&lX&s&lX(r&lX)S&lX)U&lX)V&lX)W&lX!O&lX!T&lX!X&lX!Y&lX![&lX!^&lX!_&lX!a&lX!b&lX!c&lX!e&lX!f&lX!h&lX(u&lX(w&lX(x&lX)T&lX)X&lX!g&lX)j&lX!W&lXQ&lX!d&lX(v&lX!U&lX#v&lX~Op&fOl(}X!O(}XQ(}X!d(}X!h(}X)X(}X)j(}X~P.ZO!g$YO)j$YO](tX!V(tX!X(tX!Y(tX![(tX!^(tX!_(tX!a(tX!b(tX!c(tX!e(tX!f(tX!h(tX(u(tX(w(tX(x(tX)S(tX)T(tX)U(tX)V(tX)W(tX)X(tX!O(tX!W(tX(v(tX!U(tXQ(tX!d(tX~OPmO]$eOa%QOl:zO!V$fO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO)S$kO)V$kO)X!ZO)YXO)hcO)idO~O](}Xd(}Xl(}Xr(}Xs(}Xt(}Xu(}Xv(}Xw(}Xx(}Xy(}X}(}X!V(}X!r(}X!s(}X!t(}X!u(}X!v(}X!x(}X!{(}X%v(}X&r(}X&s(}X(r(}X)S(}X)U(}X)V(}X)W(}X!O(}XQ(}X!d(}X!h(}X)X(}X)j(}X~O]#}O~P!*qO]&lO~O])bXa)bXd)bXl)bXr)bXs)bXt)bXu)bXv)bXw)bXx)bXy)bX{)bX})bX!V)bX!o)bX!r)bX!s)bX!t)bX!u)bX!v)bX!x)bX!{)bX#a)bX#b)bX%e)bX%l)bX%o)bX%v)bX&m)bX&r)bX&s)bX(r)bX)S)bX)U)bX)V)bX~O(oQO~P!-ZO%U&nO~P!-ZO]&oO~O]#}O~O!TxO~O$W&wO(r%nO(v&vO~O]&xOw&zO~O]&xO~OPmO]$eOa%QOl:zO!TxO!V$fO!X!XO!Y!WO!i!YO#V#QO#p!xO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r:mO)PYO)S$kO)V$kO)WiO)X!ZO)YXO)hcO)idO~O]'PO~O!T$WO)W'RO~P!(zO)W'TO~O)W'UO~O(r'VO~O)W'YO~P!(zOl;^O%U'^O%e'^O(r;PO~Oa!TOl$oOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O{#RO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(r$nO~O(v'bO~O)W'dO~P!(zO!TxO(r%nO)j'fO~O(r%nO~O]'iO~O]'jOd%nXl%nX!V%nX!{%nX%v%nX(r%nX)S%nX)U%nX)V%nX~O]'nO!V'oO!X'lO!g'lO%Z'lO%['lO%]'lO%^'lO%_'pO%`'pO%a'lO(x'mO)j'lO)x'qO~P8zO]%hOa!TOd!POr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O{#RO}!_O!V%kO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO!{!dO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO)S;`O)U|O)V|O~Ol;_Op&UO%v$mO(r;QO~P!8jO(r%nO(v'vO)W'wO~O]&cO!T'yO~Ol$oO}!_O!T(QO!l(VO(r$nO(v(PO)PYO~Ol$oO{(^O!T(ZO#b(^O(r$nO~Oa!TOl$oO{#RO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(r$nO~O](`O~OPmOa%QOl:zO!V$fO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO)S$kO)V$kO)YXO)hcO)idO~O](bO)X(cO~P!=UO]#}O~P!\u003C[OPmO]$eOa%QOl:zO!V(iO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO)S$kO)V$kO)X!ZO)YXO)hcO)idO~OY(jO(oQO(r%nO~O'f(mO~OS(qOT(nO*W(pO~O]#}O(n(tO~Q'nXX#dO(p#dO(q(vO~Od)QOl({O&r#WO(r(zO~O!Y'Sa!['Sa!^'Sa!_'Sa!a'Sa!b'Sa!c'Sa!e'Sa!f'Sa!h'Sa(u'Sa)S'Sa)T'Sa)U'Sa)V'Sa)W'Sa)X'Sa!g'Sa)j'Sa!O'Sa!W'Sa(v'Sa!U'SaQ'Sa!d'Sa~OPmOa%QOl:zO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO)YXO)hcO)idO]'Sa!V'Sa!X'Sa(w'Sa(x'Sa~P!B_O!T$WO!O(sP~P!(zO]nX]%WXdnXlmXpnXp%WXrnXsnXtnXunXvnXwnXxnXynX}nX!TnX!VnX!V%WX!X%WX!Y%WX![%WX!^%WX!_%WX!a%WX!b%WX!c%WX!e%WX!f%WX!gmX!h%WX!rnX!snX!tnX!unX!vnX!xnX!{nX%vnX&rnX&snX(rnX(u%WX(w%WX(x%WX)SnX)S%WX)T%WX)UnX)U%WX)VnX)V%WX)W%WX)X%WX)jmX!O%WX~O)WnX!OnX!U%WX~P!E{O])dO!V)eO!X)bO!g)bO%Z)bO%[)bO%])bO%^)bO%_)fO%`)fO%a)bO(x)cO)j)bO)x)gO~P8zOPmO]$eOa%QOl:zO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO)S$kO)V$kO)X!ZO)YXO)hcO)idO~O!V)lO~P!JwOd)oO%Y)pO(y$OO~O!T$WO!V)rO(w)sO!U)rP~P!JwO!T$WO~P!(zO)[)zO~Ol){O]!QX!h!QX)X!QX)]!QX~O])}O!h*OO)X)QX)])QX~O)X*SO)]*RO~Od$RO%Y*TO'[$TO'_$UO(y$OO~Ol*UO~Ol*UO!O(}X~P.ZOl*UO!g$YO)j$YO~O)W*VO~P:nOPmO]$eOa!]Ol$_Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O{#RO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r:}O)S$kO)V$kO)X!ZO)YXO)hcO)idO~Op&fO~P!&zOp&fO!W(tX(v(tXQ(tX!d(tX~PNkO]'nO!V'oO!X'lO!g'lO%Z'lO%['lO%]'lO%^'lO%_'pO%`'pO%a'lO(x'mO)j'lO)x'qO~O]iXdiXlgXpiXriXsiXtiXuiXviXwiXxiXyiX}iX!ViX!riX!siX!tiX!uiX!viX!xiX!{iX%viX&riX&siX(riX)SiX)UiX)ViX!TiX!hiX)XiX)jiX!OiX~O!liX(viX)WiX!XiX!YiX![iX!^iX!_iX!aiX!biX!ciX!eiX!fiX(uiX(wiX(xiX)TiX!giX!WiXQiX!diX!UiX#viX#TiX#ViX#piXaiX{iX!oiX#aiX#biX#iiX#tiX${iX%ciX%eiX%kiX%liX%oiX&miX)PiX~P#%yO(y*ZO~Ol*[O~O](}Xd(}Xr(}Xs(}Xt(}Xu(}Xv(}Xw(}Xx(}Xy(}X}(}X!V(}X!r(}X!s(}X!t(}X!u(}X!v(}X!x(}X!{(}X%v(}X&r(}X&s(}X(r(}X)S(}X)U(}X)V(}X)W(}X!T(}X!X(}X!Y(}X![(}X!^(}X!_(}X!a(}X!b(}X!c(}X!e(}X!f(}X!h(}X(u(}X(w(}X(x(}X)T(}X)X(}X!g(}X)j(}X!O(}X!W(}XQ(}X!d(}X(v(}X!U(}X#v(}X~Ol*[O~P#+ROr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O}!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO])aad)aal)aa!V)aa!{)aa%v)aa(r)aa)S)aa)U)aa)V)aaQ)aa!d)aa!h)aa)X)aa)j)aa!O)aa!T)aa(v)aa)W)aa~O&r#WO&s$wO~P#.qOp&fOl(}X~P#+RO&r)aa~P#.qO]ZXlgXpZXpiX!TiX!VZX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!cZX!eZX!fZX!gZX!hZX(uZX(wZX(xZX)SZX)TZX)UZX)VZX)WZX)XZX)jZX!OZX~O!WZX(vZX!UZXQZX!dZX~P#1jO]#}O!V#lO!X#{O(w#kO(x#kO~O!Y&xa![&xa!^&xa!_&xa!a&xa!b&xa!c&xa!e&xa!f&xa!g&xa!h&xa(u&xa)S&xa)T&xa)U&xa)V&xa)W&xa)X&xa)j&xa!O&xa!W&xa(v&xa!U&xaQ&xa!d&xa~P#3zOl;hO!T$WO~Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O~PKkOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!|%RO~PKkO]&cO!V&bO!O#Qa!T#Qa!h#Qa#v#Qa)W#Qa)j#QaQ#Qa!d#Qa(v#Qa~Op&fO!T$WO~O!O*cO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!O*cO~O]&cO!O*eO!V&bO~O]&YOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!V&WO&r#WO&s$wO)S&VO)U&ZO)V&ZO~O!OqXQqX!dqX!hqX)XqX)WqX~P#9{O!O*hO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h*iO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!W)kX~P#3zO!W*kO!h*lO~O!W*kO!h*lO~P!(zO!W*kO~Op&fO!g$YO!h*mO)j$YO](tX!V(tX!W(tX!W*OX!X(tX!Y(tX![(tX!^(tX!_(tX!a(tX!b(tX!c(tX!e(tX!f(tX(u(tX(w(tX(x(tX)S(tX)T(tX)U(tX)V(tX)X(tX~O!h(tX~P#=ZO!W*oO~Od$RO%Y*TO(y:rO~Ol;kO~Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!|%RO~PBUO]*vO!T*qO!V&bO!h*tO#v!eO)j*rO)W)qX~O!h*tO)W)qX~O)W*wO~Op&fO])eX!T)eX!V)eX!h)eX#v)eX)W)eX)j)eX!O)eXQ)eX!d)eX(v)eX~Op&fO~OP%oO(oQO]%ha!V%ha!X%ha!Y%ha![%ha!^%ha!_%ha!a%ha!b%ha!c%ha!e%ha!f%ha!h%ha(r%ha(u%ha(w%ha(x%ha)S%ha)T%ha)U%ha)V%ha)W%ha)X%ha!g%ha)j%ha!O%ha!W%ha(v%ha!U%haQ%ha!d%ha~Od$RO%Y$SO(y:oO~Ol:wO~O!TxO#v!eO)j%|O~Ol\u003C[O&r#WO(r;gO~O$Z+TO%`+UO~O!TxO#v!eO)W+VO)j+WO~OPmO]$eOa%QOl:zO!V$fO!X!XO!Y!WO!i!YO#V#QO$Z+TO%_#ZO%`+YO%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO)S$kO)V$kO)X!ZO)YXO)hcO)idO~O!U+ZO~P!QOa!TOl$oOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O{#RO}!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#a+aO#b+bO#i+cO%e#UO%l#SO&m!RO&r#WO&s!TO(r$nO)PYO~OQ)lP!d)lP~P#GgO]&YOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!V&WO)S&VO)U&ZO)V&ZO~O!O#kX!T#kX#v#kX)W#kX)j#kXQ#kX!d#kX!h#kX)X#kX!x#kX(v#kX~P#IkOPmO]$eOa%QOl:zOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!V$fO!W+iO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO)S+jO)V$kO)X!ZO)YXO)hcO)idO~O]&cO!V+kO~O]&YO!V&WO)PYO)S&VO)U&ZO)V&ZO)X+nO!O)dP~P8zO]&YO!V&WO)S&VO)U&ZO)V&ZO~O!O#nX!T#nX#v#nX)W#nX)j#nXQ#nX!d#nX!h#nX)X#nX!x#nX(v#nX~P#NeO!TxO])nX!V)nX~Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O#T+vO#p+wO(x+tO)U+rO)V+rO~O]#jX!T#jX!V#jX!O#jX#v#jX)W#jX)j#jXQ#jX!d#jX!h#jX)X#jX!x#jX(v#jX~P$ xO#V+yO~Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!l+zO#T+vO#V+yO#p+wO(x+tO)U+zO)V+zO])fP!T)fP!V)fP#v)fP(v)fP)j)fP!O)fP!h)fP)W)fP~O!x)fPQ)fP!d)fP~P$#uOPmO]$eOa%QOl:zOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!V$fO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO)V$kO)X!ZO)YXO)hcO)idO~O!W,QO)S,RO~P$%pO)PYO)X+nO!O)dP~P8zO]&cO!V&bO!O&Za!T&Za!h&Za#v&Za)W&Za)j&ZaQ&Za!d&Za(v&Za~OPmO]$eOa!]Ol:|Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O{#RO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r;RO)S$kO)V$kO)X!ZO)YXO)hcO)idO~OQ(zP!d(zP~P$)YO]#}O!V#lO(w#kO(x#kO!X'Pa!Y'Pa!['Pa!^'Pa!_'Pa!a'Pa!b'Pa!c'Pa!e'Pa!f'Pa!h'Pa(u'Pa)S'Pa)T'Pa)U'Pa)V'Pa)W'Pa)X'Pa!g'Pa)j'Pa!O'Pa!W'Pa(v'Pa!U'PaQ'Pa!d'Pa~O]#}O!V#lO!X#{O(w#kO(x#kO~P!B_O!TxO#t!fO)PYO~P8zO!TxO(r%nO)j,[O~O#x,aO~OQ)aX!d)aX!h)aX)X)aX)j)aX!O)aX!T)aX(v)aX)W)aX~P:nO(v,eO(w,cO)P$UX)W$UX~O(r,fO~O)PYO)W,iO~OPmO]$eOa!]Ol:{Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O{#RO}!_O!V$fO!X!XO!Y!WO!i!YO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO)PYO)S$kO)V$kO)WiO)X!ZO)YXO)hcO)idO~O(r;SO~P$0kOPmO]$eOa%QOl:zO!TxO!V$fO!X!XO!Y!WO!i!YO#V#QO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r:mO)PYO)S$kO)V$kO)WiO)X!ZO)YXO)hcO)idO~O$h,sO~OPmO]$eOa!]Ol:{Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O{#RO}!_O!V$fO!X!XO!Y!WO!i!YO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#V#QO#a#VO#b#TO$}!uO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO)PYO)S$kO)V$kO)X!ZO)YXO)hcO)idO~O${,yO(r:}O)W,wO~P$7UO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)S#mO)T#oO)U#nO)V#pO)W,{O)X#|O~P#3zO)W,{O~O)W,|O~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W,}O)X#|O~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W-OO)X#|O~P#3zOp&fO)PYO)j-QO~O)W-RO~Ol;^O(r;PO~O]-YO!{!dO&r#WO&s$wO(r-UO)S-VO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO(v-]O)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!TxO$`!iO$e!jO$g!kO$h!lO$k-bO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO$}!uO(r:nOd$Xa!o$Xa!{$Xa#i$Xa#p$Xa#t$Xa#v$Xa$R$Xa$T$Xa$Y$Xa$Z$Xa${$Xa%U$Xa%c$Xa%g$Xa%o$Xa%|$Xa(k$Xa)U$Xa!U$Xa$c$Xa~P$0kO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W-cO)X#|O~P#3zOl-eO!TxO)j,[O~O)j-gO~O]&]a!X&]a!Y&]a![&]a!^&]a!_&]a!a&]a!b&]a!c&]a!e&]a!f&]a!h&]a(u&]a(w&]a(x&]a)T&]a)U&]a)V&]a)W&]a)X&]a!g&]a)j&]a!O&]a!W&]a!T&]a#v&]a(v&]a!U&]aQ&]a!d&]a~O)S-kO!V&]a~P$DbO!O-kO~O!W-kO~O!V-lO)S&]a~P$DbO](}Xd(}Xr(}Xs(}Xt(}Xu(}Xv(}Xw(}Xx(}Xy(}X}(}X!V(}X!r(}X!s(}X!t(}X!u(}X!v(}X!x(}X!{(}X%v(}X&r(}X&s(}X(r(}X)S(}X)U(}X)V(}X~Ol;mO~P$GQO]&cO!V&bO)W-mO~Ol;cO!o-pO#V+yO#i-uO#t!fO${,yO%c!zO%k-tO%o!|O%v!}O(r;TO)PYO~P!8jO!n-yO(r,fO~O)PYO)W-{O~OPmO]$eOa%QOl:zO!T.QO!V$fO!X!XO!Y!WO!i!YO#V.XO#a.WO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO(x.PO)S$kO)V$kO)W-}O)X!ZO)YXO)hcO)idO~O!U.VO~P$JbO])^Xd)^Xr)^Xs)^Xt)^Xu)^Xv)^Xw)^Xx)^Xy)^X})^X!T)^X!V)^X!l)^X!r)^X!s)^X!t)^X!u)^X!v)^X!x)^X!{)^X%v)^X&r)^X&s)^X(r)^X(v)^X)S)^X)U)^X)V)^X)W)^X!O)^X!h)^X)X)^X!X)^X!Y)^X![)^X!^)^X!_)^X!a)^X!b)^X!c)^X!e)^X!f)^X(u)^X(w)^X(x)^X)T)^X!g)^X)j)^X!W)^XQ)^X!d)^X#T)^X#V)^X#p)^X#v)^Xa)^X{)^X!o)^X#a)^X#b)^X#i)^X#t)^X${)^X%c)^X%e)^X%k)^X%l)^X%o)^X&m)^X)P)^X!U)^X~Ol*[O~P$LlOl$oO!T(QO!l.^O(r$nO(v(PO)PYO~Op&fOl)^X~P$LlOl$oO!n.cO!o.cO(r$nO)PYO~Ol;dO!U.nO!n.pO!o.oO#i-uO${!tO$}!uO%g!{O%k-tO%o!|O%v!}O(r;VO)PYO~P!8jO!T(QO!l.^O(v(PO])OXd)OXl)OXr)OXs)OXt)OXu)OXv)OXw)OXx)OXy)OX})OX!V)OX!r)OX!s)OX!t)OX!u)OX!v)OX!x)OX!{)OX%v)OX&r)OX&s)OX(r)OX)S)OX)U)OX)V)OX~O)W)OX!O)OX!X)OX!Y)OX![)OX!^)OX!_)OX!a)OX!b)OX!c)OX!e)OX!f)OX!h)OX(u)OX(w)OX(x)OX)T)OX)X)OX!g)OX)j)OX!W)OXQ)OX!d)OX!U)OX#v)OX~P%%eO!T(QO~O!T(QO(v(PO~O(r%nO!U*QP~O!T(ZO(v.uO]&kad&kal&kar&kas&kat&kau&kav&kaw&kax&kay&ka}&ka!V&ka!r&ka!s&ka!t&ka!u&ka!v&ka!x&ka!{&ka%v&ka&r&ka&s&ka(r&ka)S&ka)U&ka)V&ka)W&ka!O&ka!X&ka!Y&ka![&ka!^&ka!_&ka!a&ka!b&ka!c&ka!e&ka!f&ka!h&ka(u&ka(w&ka(x&ka)T&ka)X&ka!g&ka)j&ka!W&kaQ&ka!d&ka!U&ka#v&ka~Ol$oO!T(ZO(r$nO~O&r#WO&s$wO]&pad&pal&par&pas&pat&pau&pav&paw&pax&pay&pa}&pa!V&pa!r&pa!s&pa!t&pa!u&pa!v&pa!x&pa!{&pa%v&pa(r&pa)S&pa)U&pa)V&pa)W&pa!O&pa!T&pa!X&pa!Y&pa![&pa!^&pa!_&pa!a&pa!b&pa!c&pa!e&pa!f&pa!h&pa(u&pa(w&pa(x&pa)T&pa)X&pa!g&pa)j&pa!W&paQ&pa!d&pa(v&pa!U&pa#v&pa~O&s.zO~P!(zO!Y#qO![#rO!f#zO)S#mO!^'Ua!_'Ua!a'Ua!b'Ua!c'Ua!e'Ua!h'Ua(u'Ua)T'Ua)U'Ua)V'Ua)W'Ua)X'Ua!g'Ua)j'Ua!O'Ua!W'Ua(v'Ua!U'UaQ'Ua!d'Ua~P#3zO!V'dX!X'dX!Y'dX!['dX!^'dX!_'dX!a'dX!b'dX!c'dX!e'dX!f'dX!h'dX(u'dX(w'dX(x'dX)S'dX)T'dX)U'dX)V'dX)X'dX!O'dX~O].|O)W'dX!g'dX)j'dX!W'dX(v'dX!U'dXQ'dX!d'dX~P%2xO!Y#qO![#rO!f#zO)S#mO!^'Wa!_'Wa!a'Wa!b'Wa!c'Wa!e'Wa!h'Wa(u'Wa)T'Wa)U'Wa)V'Wa)W'Wa)X'Wa!g'Wa)j'Wa!O'Wa!W'Wa(v'Wa!U'WaQ'Wa!d'Wa~P#3zO]#}O!T$WO!V.}O&r#WO&s$wO~O!X'Za!Y'Za!['Za!^'Za!_'Za!a'Za!b'Za!c'Za!e'Za!f'Za!h'Za(u'Za(w'Za(x'Za)S'Za)T'Za)U'Za)V'Za)W'Za)X'Za!g'Za)j'Za!O'Za!W'Za(v'Za!U'ZaQ'Za!d'Za~P%6oO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!h'^a)W'^a!g'^a)j'^a!O'^a!W'^a(v'^a!U'^aQ'^a!d'^a~P#3zOPmO]$eOa%QOl:zO!V$fO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO)S$kO)V%]O)X!ZO)YXO)hcO)idO)j%[O~O!W/QO~P%:oOS(qOT(nO]#}O*W(pO~O]/TO'f/UO*W/RO~OS/YOT(nO*W/XO~O]#}O~Q'na!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO(v/[O)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O)W#Zi!O#Zi~P#3zO]cXlgXpcXpiX!VcX!XcX!YcX![cX!^cX!_cX!acX!bcX!ccX!ecX!fcX!gcX!hcX(ucX(wcX(xcX)ScX)TcX)UcX)VcX)WcX)XcX)jcX!OcX!WcX(vcX!TcX#vcX!UcXQcX!dcX~Od/^O%Y*TO(y/]O~Ol/_O~Ol/`O~Op&fO]bi!Vbi!Xbi!Ybi![bi!^bi!_bi!abi!bbi!cbi!ebi!fbi!gbi!hbi(ubi(wbi(xbi)Sbi)Tbi)Ubi)Vbi)Wbi)Xbi)jbi!Obi!Wbi(vbi!UbiQbi!dbi~O!W/bO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO![#rO)S#mO!Y&zi!^&zi!_&zi!a&zi!b&zi!c&zi!e&zi!f&zi!h&zi(u&zi)T&zi)U&zi)V&zi)W&zi)X&zi!g&zi)j&zi!O&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y&zi![&zi!^&zi!_&zi!a&zi!b&zi!c&zi!e&zi!f&zi!h&zi(u&zi)S&zi)T&zi)U&zi)V&zi)W&zi)X&zi!g&zi)j&zi!O&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO)S#mO)V#pO!h&zi(u&zi)T&zi)U&zi)W&zi)X&zi!g&zi)j&zi!O&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO)S#mO)U#nO)V#pO!h&zi(u&zi)T&zi)W&zi)X&zi!g&zi)j&zi!O&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO)S#mO)V#pO!^&zi!h&zi(u&zi)T&zi)U&zi)W&zi)X&zi!g&zi)j&zi!O&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!a#xO!b#yO!c#yO!e#yO!f#zO)S#mO)V#pO!^&zi!_&zi!h&zi(u&zi)T&zi)U&zi)W&zi)X&zi!g&zi)j&zi!O&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!a#xO!b#yO!c#yO!e#yO!f#zO)S#mO!^&zi!_&zi!h&zi(u&zi)T&zi)U&zi)V&zi)W&zi)X&zi!g&zi)j&zi!O&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!b#yO!c#yO!e#yO!f#zO)S#mO!^&zi!_&zi!a&zi!h&zi(u&zi)T&zi)U&zi)V&zi)W&zi)X&zi!g&zi)j&zi!O&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!f#zO)S#mO!^&zi!_&zi!a&zi!b&zi!c&zi!e&zi!h&zi(u&zi)T&zi)U&zi)V&zi)W&zi)X&zi!g&zi)j&zi!O&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO)S#mO!^&zi!_&zi!a&zi!b&zi!c&zi!e&zi!f&zi!h&zi(u&zi)T&zi)U&zi)V&zi)W&zi)X&zi!g&zi)j&zi!O&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO)S#mO)T#oO)U#nO)V#pO!h&zi(u&zi)W&zi)X&zi!g&zi)j&zi!O&zi!W&zi(v&zi!U&ziQ&zi!d&zi~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h/cO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!O(sX~P#3zO!h/cO!O(sX~O!O/eO~O]%Xap%Xa!X%Xa!Y%Xa![%Xa!^%Xa!_%Xa!a%Xa!b%Xa!c%Xa!e%Xa!f%Xa!h%Xa(u%Xa(w%Xa(x%Xa)T%Xa)U%Xa)V%Xa)W%Xa)X%Xa!g%Xa)j%Xa!O%Xa!W%Xa!T%Xa#v%Xa(v%Xa!U%XaQ%Xa!d%Xa~O)S/fO!V%Xa~P&,aO!O/fO~O!W/fO~O!V/gO)S%Xa~P&,aO!X'Zi!Y'Zi!['Zi!^'Zi!_'Zi!a'Zi!b'Zi!c'Zi!e'Zi!f'Zi!h'Zi(u'Zi(w'Zi(x'Zi)S'Zi)T'Zi)U'Zi)V'Zi)W'Zi)X'Zi!g'Zi)j'Zi!O'Zi!W'Zi(v'Zi!U'ZiQ'Zi!d'Zi~P%6oO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!h'^i)W'^i!g'^i)j'^i!O'^i!W'^i(v'^i!U'^iQ'^i!d'^i~P#3zO!W/lO~P%:oO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h/nO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!U)rX~P#3zO(r/qO~O!V/sO(w)sO)j/uO~O!h/nO!U)rX~O!U/vO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO)S#mO)T#oO)U#nO)V#pO)X#|O!h_i(u_i)W_i!g_i)j_i!O_i!W_i(v_i!U_iQ_i!d_i~P#3zO!R/wO~Ol){O]!Qa!h!Qa)X!Qa)]!Qa~OP0PO]0OOl0PO!R0PO!T/|O!V/}O!X0PO!Y0PO![0PO!^0PO!_0PO!a0PO!b0PO!c0PO!e0PO!f0PO!g0PO!h0PO!i0PO(oQO(v0PO(w0PO(x0PO)S/yO)T/zO)U/zO)V/{O)W0PO)X0PO)YXO~O!O0SO~P&6yO!R$[O~O!h*OO)X)Qa)])Qa~O)]0WO~O])dO!V)eO!X)bO!g)bO%Z)bO%[)bO%])bO%^)bO%_)fO%`)fO%a)bO(x)cO)j)bO)x)gO~Od)oO%Y*TO(y$OO~O)W0YO~O]nXdnXlmXpnXrnXsnXtnXunXvnXwnXxnXynX}nX!VnX!rnX!snX!tnX!unX!vnX!xnX!{nX%vnX&rnX&snX(rnX)SnX)UnX)VnX!TnX!hnX)XnX!OnXQnX!dnX~O!lnX(vnX)WnX!XnX!YnX![nX!^nX!_nX!anX!bnX!cnX!enX!fnX(unX(wnX(xnX)TnX!gnX)jnX!WnX!UnX#vnX#TnX#VnX#pnXanX{nX!onX#anX#bnX#inX#tnX${nX%cnX%enX%knX%lnX%onX&mnX)PnX~P&:uOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O}!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO~O])aid)ail)ai!V)ai!{)ai%v)ai(r)ai)S)ai)U)ai)V)aiQ)ai!d)ai!h)ai)X)ai)j)ai!O)ai!T)ai&r)ai(v)ai)W)ai~P&?sO]&cO!V&bO!O#Qi!T#Qi!h#Qi#v#Qi)W#Qi)j#QiQ#Qi!d#Qi(v#Qi~O!OqaQqa!dqa!hqa)Xqa)Wqa~P#9{O!OqaQqa!dqa!hqa)Xqa)Wqa~P#IkO]&cO!V+kO!OqaQqa!dqa!hqa)Xqa)Wqa~O!h*iO!W)ka~O!h*mO!W*Oa~OPmOa!]Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O{#RO}!_O!X!XO!Y!WO!i!YO!s!aO!t!aO!v!aO!x!cO#V#QO#a#VO#b#TO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%e#UO%l#SO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO)PYO)WiO)X!ZO)YXO)hcO)idO~O]eOd!POlTO!T*qO!U&TO!V0hO!opO!r!`O!u!bO!{!dO#i#OO#p!xO#t!fO$R!gO$T!hO${!tO$}!uO%U!yO%c!zO%g!{O%o!|O%v!}O%|#PO(rRO(w)sO)SaO)U|O)V{O~P&DuO!h*tO)W)qa~OPmO]$eOa!]Ol:|O{#RO!T$WO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r;UO)PYO)S$kO)V$kO)X0nO)YXO)hcO)idO!O(sP!O)dP~P&?sO!h*mO!W*OX~O]#}O!T$WO~O!h0sO!T)zX#v)zX)j)zX~O)W0uO~O)W0vO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W0xO)X#|O~P#3zO)W0vO~P!?WO]1SOd!POl%bO!V1QO!{!dO%v$mO(r$xO)S0zO)X0}O~O)U1OO)V1OO)j0{OQ#PX!d#PX!h#PX!O#PX~P' dO!h1TOQ)lX!d)lX~OQ1VO!d1VO~O)X1YO)j1XOQ#`X!d#`X!h#`X~P!\u003C[O)X1YO)j1XOQ#`X!d#`X!h#`X~P!;bOp&UO~O!O#ka!T#ka#v#ka)W#ka)j#kaQ#ka!d#ka!h#ka)X#ka!x#ka(v#ka~P#IkO]&cO!V+kO!O#ka!T#ka#v#ka)W#ka)j#kaQ#ka!d#ka!h#ka)X#ka!x#ka(v#ka~O!W1_O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!W1_O)S1aO~P$%pO!W1_O~P!(zO]#ja!T#ja!V#ja!O#ja#v#ja)W#ja)j#jaQ#ja!d#ja!h#ja)X#ja!x#ja(v#ja~P$ xO]&cO!O1eO!V+kO~O!h1fO!O)dX~O!O1hO~O]&cO!V+kO!O#na!T#na#v#na)W#na)j#naQ#na!d#na!h#na)X#na!x#na(v#na~O]1lOr#SXs#SXt#SXu#SXv#SXw#SXx#SXy#SX!T#SX!V#SX#T#SX#p#SX(x#SX)U#SX)V#SX!l#SX!x#SX#V#SX#v#SX(v#SX)j#SX!O#SX!h#SX)W#SXQ#SX!d#SX)X#SX~O]1mO~O]1pOl$oO!V$fO#V#QO(r$nO)hcO)idO~Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!l+zO#T+vO#V+yO#p+wO(x+tO)U+zO)V+zO~O])fX!T)fX!V)fX!x)fX#v)fX(v)fX)j)fX!O)fX!h)fX)W)fXQ)fX!d)fX~P'+}O!x!cO]#Ri!T#Ri!V#Ri#v#Ri(v#Ri)j#Ri!O#Ri!h#Ri)W#RiQ#Ri!d#Ri~O!W1xO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!W1xO)S1zO~P$%pO!W1xO~P!(zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|OQ*RX!d*RX!h*RX~P#3zO)X1{OQ({X!d({X!h({X~O!h1|OQ(zX!d(zX~OQ2OO!d2OO~O!O2PO~O#t$lO)PYO~P8zOl-eO!TxO)j2TO~O!O2UO~O#x,aOP#ui]#uia#uid#uil#uir#uis#uit#uiu#uiv#uiw#uix#uiy#ui{#ui}#ui!T#ui!V#ui!X#ui!Y#ui!i#ui!o#ui!r#ui!s#ui!t#ui!u#ui!v#ui!x#ui!{#ui#V#ui#a#ui#b#ui#i#ui#p#ui#t#ui#v#ui$R#ui$T#ui$Y#ui$Z#ui$`#ui$e#ui$g#ui$h#ui$k#ui$m#ui$o#ui$q#ui$s#ui$u#ui$w#ui${#ui$}#ui%U#ui%_#ui%`#ui%a#ui%c#ui%e#ui%g#ui%l#ui%o#ui%v#ui%|#ui&m#ui&r#ui&s#ui'Q#ui'R#ui'V#ui'Y#ui'a#ui'b#ui(k#ui(o#ui(r#ui)P#ui)S#ui)U#ui)V#ui)W#ui)X#ui)Y#ui)h#ui)i#ui!U#ui$c#ui!n#ui%k#ui~O]&cO~O]&cO!TxO!V&bO#v!eO~O(v2ZO(w,cO)P$Ua)W$Ua~O)PYO)W2]O~O!O2^O~P,]O!O2^O)W#jO~O!O2^O~O$c2cOP$_i]$_ia$_id$_il$_ir$_is$_it$_iu$_iv$_iw$_ix$_iy$_i{$_i}$_i!T$_i!V$_i!X$_i!Y$_i!i$_i!o$_i!r$_i!s$_i!t$_i!u$_i!v$_i!x$_i!{$_i#V$_i#a$_i#b$_i#i$_i#p$_i#t$_i#v$_i$R$_i$T$_i$Y$_i$Z$_i$`$_i$e$_i$g$_i$h$_i$k$_i$m$_i$o$_i$q$_i$s$_i$u$_i$w$_i${$_i$}$_i%U$_i%_$_i%`$_i%a$_i%c$_i%e$_i%g$_i%l$_i%o$_i%v$_i%|$_i&m$_i&r$_i&s$_i'Q$_i'R$_i'V$_i'Y$_i'a$_i'b$_i(k$_i(o$_i(r$_i)P$_i)S$_i)U$_i)V$_i)W$_i)X$_i)Y$_i)h$_i)i$_i!U$_i~O]1pO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)S#mO)T#oO)U#nO)V#pO)W2fO)X#|O~P#3zOPmO]$eOa!]Ol:{O{#RO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r:}O)S$kO)V$kO)W2iO)X!ZO)YXO)hcO)idO~P&?sO)W2fO~O(r-UO~O)PYO)j2lO~O)W2nO~O]-YOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!{!dO!|%RO(r-UO)S-VO~O)S2sO~O]&cO!V2uO!h2vO)W)uX~O]-YO!{!dO(r-UO)S-VO~O)W2yO~O!TxO$`!iO$e!jO$g!kO$h!lO$k-bO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO$}!uO(r:nOd$Xi!o$Xi!{$Xi#i$Xi#p$Xi#t$Xi#v$Xi$R$Xi$T$Xi$Y$Xi$Z$Xi${$Xi%U$Xi%c$Xi%g$Xi%o$Xi%|$Xi(k$Xi)U$Xi!U$Xi$c$Xi~P$0kOl:{O(r:nO~P0zO]2}O~O)W2SO~O!u3PO(r%nO~O!O3SO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h3TO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!O3UO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO]&cO!V+kO!T%ui#v%ui)W%ui)j%ui~O!W3VO~Ol:yO)W(}X~P$GQOa!TOl$oO{3]O#a#VO#b3[O#t!fO%e#UO%l3^O&m!RO&r#WO&s!TO(r$nO)PYO~P&?sOl;cO!o-pO#i-uO#t!fO${,yO%c!zO%k-tO%o!|O%v!}O(r;TO)PYO~P!8jO]&cO!V&bO)W3`O~O)W3aO~O)PYO)W3aO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)S#mO)T#oO)U#nO)V#pO)W3bO)X#|O~P#3zO)W3bO~O)W3eO~O!U3gO~P$JbOl$oO(r$nO~O]3iO!T'yO~P'+iO!T(QO!l3lO(v(PO])Oad)Oal)Oar)Oas)Oat)Oau)Oav)Oaw)Oax)Oay)Oa})Oa!V)Oa!r)Oa!s)Oa!t)Oa!u)Oa!v)Oa!x)Oa!{)Oa%v)Oa&r)Oa&s)Oa(r)Oa)S)Oa)U)Oa)V)Oa)W)Oa!O)Oa!X)Oa!Y)Oa![)Oa!^)Oa!_)Oa!a)Oa!b)Oa!c)Oa!e)Oa!f)Oa!h)Oa(u)Oa(w)Oa(x)Oa)T)Oa)X)Oa!g)Oa)j)Oa!W)OaQ)Oa!d)Oa!U)Oa#v)Oa~Ol$oO!n.cO!o.cO(r$nO~O!h3pO)X3rO!T)_X~O!o3tO)PYO~P8zO)W3uO~PGVO]3zOl({O!T$WO!{!dO%v$mO&r#WO(r(zO(v4OO)S3wO)U3{O)V3{O~O)W4PO)j4RO~P(&eOl;dO!U4TO!n.pO!o.oO#i-uO${!tO$}!uO%g!{O%k-tO%o!|O%v!}O(r;VO)PYO~P!8jOl;dO%v!}O(r;VO~P!8jO(v4UO~Ol$oO!T(QO(r$nO(v(PO)PYO~O!l3lO~P((sO)j4WO!U&oX!h&oX~O!h4XO!U*QX~O!U4ZO~Oa4]Ol$oO&m!RO(r$nO~O!T(ZO]&kid&kil&kir&kis&kit&kiu&kiv&kiw&kix&kiy&ki}&ki!V&ki!r&ki!s&ki!t&ki!u&ki!v&ki!x&ki!{&ki%v&ki&r&ki&s&ki(r&ki)S&ki)U&ki)V&ki)W&ki!O&ki!X&ki!Y&ki![&ki!^&ki!_&ki!a&ki!b&ki!c&ki!e&ki!f&ki!h&ki(u&ki(w&ki(x&ki)T&ki)X&ki!g&ki)j&ki!W&kiQ&ki!d&ki!U&ki#v&ki~O(v&ki~P(*TO(v.uO~P(*TO!O4`O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!O4`O~O!O4aO~O]#}O!T$WO!V'Zi!X'Zi!Y'Zi!['Zi!^'Zi!_'Zi!a'Zi!b'Zi!c'Zi!e'Zi!f'Zi!h'Zi(u'Zi(w'Zi(x'Zi)S'Zi)T'Zi)U'Zi)V'Zi)W'Zi)X'Zi!g'Zi)j'Zi!O'Zi!W'Zi(v'Zi!U'ZiQ'Zi!d'Zi~OPmOa%QOl:zO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO)X!ZO)YXO)hcO)idO]#]ap#]a!T#]a!V#]a)S#]a)U#]a)V#]a~O(r%nO)X4fO!O*YP~O*W4eO~O'f4hO*W4eO~O*W4iO~OlmXpnXp&wX~Od4kO%Y*TO(y/]O~Od4kO%Y*TO(y4lO~O!h/cO!O(sa~O!W4pO~O]&cO!V+kO!T%uq#v%uq)W%uq)j%uq~O]#}O!T$WO!X'Zq!Y'Zq!['Zq!^'Zq!_'Zq!a'Zq!b'Zq!c'Zq!e'Zq!f'Zq!h'Zq(u'Zq(w'Zq(x'Zq)S'Zq)T'Zq)U'Zq)V'Zq)W'Zq)X'Zq!g'Zq)j'Zq!O'Zq!W'Zq(v'Zq!U'ZqQ'Zq!d'Zq~O!V'Zq~P(5bO!V.}O&r#WO&s$wO~P(5bO!T$WO!V)rO(w)sO!U(UX!h(UX~P!JwO!h/nO!U)ra~O!W4xO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h*iO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!U4|O~P&6yO!W4|O~P&6yO!O4|O~P&6yO!O5RO~P&6yO]5SO!h'ua)X'ua)]'ua~O!h*OO)X)Qi)])Qi~O]&cO!V&bO!O#Qq!T#Qq!h#Qq#v#Qq)W#Qq)j#QqQ#Qq!d#Qq(v#Qq~O!OqiQqi!dqi!hqi)Xqi)Wqi~P#IkO]&cO!V+kO!OqiQqi!dqi!hqi)Xqi)Wqi~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!h'Tq)W'Tq!g'Tq)j'Tq!O'Tq!W'Tq(v'Tq!U'TqQ'Tq!d'Tq~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!W'|a!h'|a~P#3zO!W5XO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h5YO(u#gO)S#mO)T#oO)U#nO)V#pO)W#jO)X#|O!U)rX~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!h#{i)W#{i~P#3zO]*vO!T$WO!V&bO)j*rO!h(Va)W(Va~O!h1fO]'dX!O)dX~P%2xO)X5[O!T%qa!h%qa#v%qa)j%qa~O!h0sO!T)za#v)za)j)za~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W5_O)X#|O~P#3zO]1SOd!POl;[O!V1QO!{!dO%v$mO(r$xO)S;xO)U5aO)V5aO~OQ#Pa!d#Pa!h#Pa!O#Pa~P(DjO]1SOd!POr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!V1QO!{!dO!|%RO%v$mO(r$xOQ#kX!d#kX!h#kX!O#kX~Ol%bO)S0zO)U;yO)V;yO~P(ElO]&cOQ#Pa!d#Pa!h#Pa!O#Pa~O!V&bO)j5eO~P(GZO(r%nOQ#dX!d#dX!h#dX!O#dX~O)U;yO)V;yOQ#nX!d#nX!h#nX!O#nX~P' dO!V+kO~P(GZO]1SOa!TOd!POl;]O{#RO!V1QO!{!dO#a#VO#b#TO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO(r;QO)PYO)S;xO)U5aO)V5aO)X+nO!O)dP~P&?sO!h1TOQ)la!d)la~Op&fO)j5jOQ#`al(}X!d#`a!h#`a)X(}X~P$GQO(r-UOQ#ga!d#ga!h#ga~Op&fO)j5jOQ#`a])^Xd)^Xl)^Xr)^Xs)^Xt)^Xu)^Xv)^Xw)^Xx)^Xy)^X})^X!T)^X!V)^X!d#`a!h#`a!l)^X!r)^X!s)^X!t)^X!u)^X!v)^X!x)^X!{)^X%v)^X&r)^X&s)^X(r)^X(v)^X)S)^X)U)^X)V)^X)X)^X~O#a5mO#b5mO~O]&cO!V+kO!O#ki!T#ki#v#ki)W#ki)j#kiQ#ki!d#ki!h#ki)X#ki!x#ki(v#ki~O!W5oO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!W5oO~P!(zO!W5oO)S5qO~P$%pO]#ji!T#ji!V#ji!O#ji#v#ji)W#ji)j#jiQ#ji!d#ji!h#ji)X#ji!x#ji(v#ji~P$ xO)PYO)X5sO~P8zO!h1fO!O)da~O&r#WO&s$wO!T#qa!x#qa#v#qa(v#qa)j#qa!O#qa!h#qa)W#qaQ#qa!d#qa)X#qa~P#NeO!O5xO~P!(zO!O)oP~P!4xO)T6OO)U5|O]#Ua!T#Ua!V#Ua)S#Ua)V#Uar#Uas#Uat#Uau#Uav#Uaw#Uax#Uay#Ua!l#Ua!x#Ua#T#Ua#V#Ua#p#Ua#v#Ua(v#Ua(x#Ua)j#Uaa#Uad#Ual#Ua{#Ua}#Ua!o#Ua!r#Ua!s#Ua!t#Ua!u#Ua!v#Ua!{#Ua#a#Ua#b#Ua#i#Ua#t#Ua${#Ua%c#Ua%e#Ua%k#Ua%l#Ua%o#Ua%v#Ua&m#Ua&r#Ua&s#Ua(r#Ua)P#Ua)W#Ua!O#Ua!h#UaQ#Ua!d#Ua~O!x!cO]#Rq!T#Rq!V#Rq#v#Rq(v#Rq)j#Rq!O#Rq!h#Rq)W#RqQ#Rq!d#Rq~O!W6TO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!W6TO~P!(zO!h1|OQ(za!d(za~O)W6YO~Ol-eO!TxO)j6ZO~O]*vO!T$WO!V&bO!h*tO)W)qX~O)j6_O~P)+cO!O6aO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!O6aO~O$c6cOP$_q]$_qa$_qd$_ql$_qr$_qs$_qt$_qu$_qv$_qw$_qx$_qy$_q{$_q}$_q!T$_q!V$_q!X$_q!Y$_q!i$_q!o$_q!r$_q!s$_q!t$_q!u$_q!v$_q!x$_q!{$_q#V$_q#a$_q#b$_q#i$_q#p$_q#t$_q#v$_q$R$_q$T$_q$Y$_q$Z$_q$`$_q$e$_q$g$_q$h$_q$k$_q$m$_q$o$_q$q$_q$s$_q$u$_q$w$_q${$_q$}$_q%U$_q%_$_q%`$_q%a$_q%c$_q%e$_q%g$_q%l$_q%o$_q%v$_q%|$_q&m$_q&r$_q&s$_q'Q$_q'R$_q'V$_q'Y$_q'a$_q'b$_q(k$_q(o$_q(r$_q)P$_q)S$_q)U$_q)V$_q)W$_q)X$_q)Y$_q)h$_q)i$_q!U$_q~O)W6dO~OPmO]$eOa!]Ol:{O{#RO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r:}O)S$kO)V$kO)W6fO)X!ZO)YXO)hcO)idO~P&?sO(v6hO)j*rO~P)+cO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W6fO)X#|O~P#3zO!O6jO~P!(zO)W6nO~O)W6oO~O]-YOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!{!dO(r-UO)S-VO~O]&cO!V2uO!h%Oa)W%Oa!O%Oa~O!W6uO)S6vO~P$%pO!h2vO)W)ua~O]&cO!O6yO!V2uO~O!TxO$`!iO$e!jO$g!kO$h!lO$k-bO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO$}!uO(r:nOd$Xq!o$Xq!{$Xq#i$Xq#p$Xq#t$Xq#v$Xq$R$Xq$T$Xq$Y$Xq$Z$Xq${$Xq%U$Xq%c$Xq%g$Xq%o$Xq%|$Xq(k$Xq)U$Xq!U$Xq$c$Xq~P$0kOPmO]$eOa!]Ol:{O{#RO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r:}O)PYO)S$kO)V$kO)W6{O)X!ZO)YXO)hcO)idO~P&?sO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W7OO)X#|O~P#3zO)W7PO~OP7QO(oQO~Ol*[O)W)^X~P$GQOp&fOl(}X)W)^X~P$GQO)W7SO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O)W&Sa~P#3zO!U7UO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO)W7VO~OPmO]$eOa!]Ol:|O{#RO!V$fO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$mO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r;UO)PYO)S$kO)V$kO)X0nO)YXO)hcO)idO!O)dP~P&?sO!h3pO)X7ZO!T)_a~O!h3pO!T)_a~O)W7`O)j7bO~P(&eO)W7dO~PGVO]3zOl({Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!{!dO!|%RO%v$mO&r#WO(r(zO)S3wO)U3{O)V3{O~O)S7hO~O]&cO!T*qO!V7jO!h7kO#v!eO(v4OO~O)W7`O)j7mO~P)FwO]3zOl({O!{!dO%v$mO&r#WO(r(zO)S3wO)U3{O)V3{O~Op&fO])cX!T)cX!V)cX!h)cX#v)cX(v)cX)W)cX)j)cX!O)cX~O)W7`O~O!T(QO!l7sO(v(PO])Oid)Oil)Oir)Ois)Oit)Oiu)Oiv)Oiw)Oix)Oiy)Oi})Oi!V)Oi!r)Oi!s)Oi!t)Oi!u)Oi!v)Oi!x)Oi!{)Oi%v)Oi&r)Oi&s)Oi(r)Oi)S)Oi)U)Oi)V)Oi)W)Oi!O)Oi!X)Oi!Y)Oi![)Oi!^)Oi!_)Oi!a)Oi!b)Oi!c)Oi!e)Oi!f)Oi!h)Oi(u)Oi(w)Oi(x)Oi)T)Oi)X)Oi!g)Oi)j)Oi!W)OiQ)Oi!d)Oi!U)Oi#v)Oi~O(r%nO!U(fX!h(fX~O!h4XO!U*Qa~Op&fO]*Pad*Pal*Par*Pas*Pat*Pau*Pav*Paw*Pax*Pay*Pa}*Pa!T*Pa!V*Pa!r*Pa!s*Pa!t*Pa!u*Pa!v*Pa!x*Pa!{*Pa%v*Pa&r*Pa&s*Pa(r*Pa)S*Pa)U*Pa)V*Pa)W*Pa!O*Pa!X*Pa!Y*Pa![*Pa!^*Pa!_*Pa!a*Pa!b*Pa!c*Pa!e*Pa!f*Pa!h*Pa(u*Pa(w*Pa(x*Pa)T*Pa)X*Pa!g*Pa)j*Pa!W*PaQ*Pa!d*Pa(v*Pa!U*Pa#v*Pa~O!T(ZO]&kqd&kql&kqr&kqs&kqt&kqu&kqv&kqw&kqx&kqy&kq}&kq!V&kq!r&kq!s&kq!t&kq!u&kq!v&kq!x&kq!{&kq%v&kq&r&kq&s&kq(r&kq)S&kq)U&kq)V&kq)W&kq!O&kq!X&kq!Y&kq![&kq!^&kq!_&kq!a&kq!b&kq!c&kq!e&kq!f&kq!h&kq(u&kq(w&kq(x&kq)T&kq)X&kq!g&kq)j&kq!W&kqQ&kq!d&kq(v&kq!U&kq#v&kq~OPmOa%QOl:zO!T$WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$mO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(oQO(r$xO)YXO)hcO)idO~O]*Ui!V*Ui!X*Ui!Y*Ui![*Ui!^*Ui!_*Ui!a*Ui!b*Ui!c*Ui!e*Ui!f*Ui!h*Ui(u*Ui(w*Ui(x*Ui)S*Ui)T*Ui)U*Ui)V*Ui)W*Ui)X*Ui!g*Ui)j*Ui!O*Ui!W*Ui(v*Ui!U*UiQ*Ui!d*Ui~P*&WO!O7xO~O!W7yO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!h'^q)W'^q!g'^q)j'^q!O'^q!W'^q(v'^q!U'^qQ'^q!d'^q~P#3zO!h7zO!O*YX~O!O7|O~O*W7}O~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!h^y)W^y!g^y)j^y!O^y!W^y(v^y!U^yQ^y!d^y~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!O(ha!h(ha~P#3zO]#}O!T$WO!V'Zy!X'Zy!Y'Zy!['Zy!^'Zy!_'Zy!a'Zy!b'Zy!c'Zy!e'Zy!f'Zy!h'Zy(u'Zy(w'Zy(x'Zy)S'Zy)T'Zy)U'Zy)V'Zy)W'Zy)X'Zy!g'Zy)j'Zy!O'Zy!W'Zy(v'Zy!U'ZyQ'Zy!d'Zy~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!h'^y)W'^y!g'^y)j'^y!O'^y!W'^y(v'^y!U'^yQ'^y!d'^y~P#3zO]&cO!V+kO!T%uy#v%uy)W%uy)j%uy~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!U(Ua!h(Ua~P#3zO!W4xO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!U#}i!h#}i~P#3zO!U8PO~P&6yO!W8PO~P&6yO!O8PO~P&6yO!O8RO~P&6yO]&cO!V&bO!O#Qy!T#Qy!h#Qy#v#Qy)W#Qy)j#QyQ#Qy!d#Qy(v#Qy~O]&cO!V+kO!OqqQqq!dqq!hqq)Xqq)Wqq~O]&cOQ#Pi!d#Pi!h#Pi!O#Pi~O!V+kO~P*9jOQ#nX!d#nX!h#nX!O#nX~P(DjO!V&bO~P*9jOQ(OX](OXd'qXl'qXr(OXs(OXt(OXu(OXv(OXw(OXx(OXy(OX!V(OX!d(OX!h(OX!{'qX%v'qX(r'qX)S(OX)U(OX)V(OX!O(OX~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|OQ#_i!d#_i!h#_i!O#_i~P#3zO&r#WO&s$wOQ#fi!d#fi!h#fi~O(r-UO)X1YO)j1XOQ#`X!d#`X!h#`X~O!W8WO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!W8WO~P!(zO!T#qi!x#qi#v#qi(v#qi)j#qi!O#qi!h#qi)W#qiQ#qi!d#qi)X#qi~O]&cO!V+kO~P*?fO]&YO!V&WO&r#WO&s$wO)S&VO)U&ZO)V&ZO~P*?fO!O8YO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!h8ZO!O)oX~O!O8]O~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|OQ*TX!d*TX!h*TX~P#3zO)X8`OQ*SX!d*SX!h*SX~O)W8bO~O!O$bi!h#{a)W#{a~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W8eO)X#|O~P#3zO!O8gO~P!(zO!O8gO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!O8gO~O]&cO!V&bO(v8mO~O)W8nO~O]&cO!V2uO!h%Oi)W%Oi!O%Oi~O!W8qO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!W8qO)S8sO~P$%pO!W8qO~P!(zO]&cO!V2uO!h(Ya)W(Ya~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)S#mO)T#oO)U#nO)V#pO)W8tO)X#|O~P#3zO)W2iO~P!(zO)W8tO~OP%oO!O8uO(oQO~O!O8uO~O)W8vO~P%%eO#T8yO(x.PO)W8wO~O!h3pO!T)_i~O)X8}O!T'wa!h'wa~O)W9PO)j9RO~P)FwO)W9PO~O)W9PO)j9VO~P(&eOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O~P)GgO]&cO!V7jO!T!ya!h!ya#v!ya(v!ya)W!ya)j!ya!O!ya~O!W9^O)S9_O~P$%pO!T$WO!h7kO(v4OO)W9PO)j9VO~O!T$WO~P#EfO]&cO!O9bO!V7jO~O]&cO!V7jO!T&aa!h&aa#v&aa(v&aa)W&aa)j&aa!O&aa~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O)W&ba~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W9PO)X#|O~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!U&oi!h&oi~P#3zO!V.}O]']i!T']i!X']i!Y']i![']i!^']i!_']i!a']i!b']i!c']i!e']i!f']i!h']i(u']i(w']i(x']i)S']i)T']i)U']i)V']i)W']i)X']i!g']i)j']i!O']i!W']i(v']i!U']iQ']i!d']i~O(r%nO)X9eO~O!h7zO!O*Ya~O!O9gO~P&6yO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!U(Ua)W#Zi~P#3zO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|OQ#_q!d#_q!h#_q!O#_q~P#3zO&r#WO&s$wOQ#fq!d#fq!h#fq~O)j5jOQ#`a!d#`a!h#`a~O]&cO!V+kO!T#qq!x#qq#v#qq(v#qq)j#qq!O#qq!h#qq)W#qqQ#qq!d#qq)X#qq~O!h8ZO!O)oa~O)U5|O]&Vi!T&Vi!V&Vi)S&Vi)T&Vi)V&Vir&Vis&Vit&Viu&Viv&Viw&Vix&Viy&Vi!l&Vi!x&Vi#T&Vi#V&Vi#p&Vi#v&Vi(v&Vi(x&Vi)j&Via&Vid&Vil&Vi{&Vi}&Vi!o&Vi!r&Vi!s&Vi!t&Vi!u&Vi!v&Vi!{&Vi#a&Vi#b&Vi#i&Vi#t&Vi${&Vi%c&Vi%e&Vi%k&Vi%l&Vi%o&Vi%v&Vi&m&Vi&r&Vi&s&Vi(r&Vi)P&Vi)W&Vi!O&Vi!h&ViQ&Vi!d&Vi~O)W9jO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O!O$bq!h#{i)W#{i~P#3zO!O9lO~P!(zO!O9lO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!O9lO~O]&cO!V&bO(v9oO~O!O9pO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!O9pO~O]&cO!V2uO!h%Oq)W%Oq!O%Oq~O!W9tO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!W9tO~P!(zO)W6fO~P!(zO)W9uO~O)W9vO~O(x.PO)W9vO~O!h3pO!T)_q~O)X9xO!T'wi!h'wi~O!T$WO!h7kO(v4OO)W9yO)j9{O~O)W9yO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W9yO)X#|O~P#3zO)W9yO)j:OO~P)FwO]&cO!V7jO!T!yi!h!yi#v!yi(v!yi)W!yi)j!yi!O!yi~O!W:SO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!W:SO)S:UO~P$%pO!W:SO~P!(zO]&cO!V7jO!T(da!h(da(v(da)W(da)j(da~O!O:WO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO!h#iO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!O:WO~O!O:]O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!O:]O~O]&cO!V2uO!h%Oy)W%Oy!O%Oy~O)W:^O~O)W:_O~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W:_O)X#|O~P#3zO!T$WO!h7kO(v4OO)W:_O)j:bO~O]&cO!V7jO!T!yq!h!yq#v!yq(v!yq)W!yq)j!yq!O!yq~O!W:dO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!W:dO~P!(zO!O:fO!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)X#|O~P#3zO!O:fO~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W:hO)X#|O~P#3zO)W:hO~O]&cO!V7jO!T!yy!h!yy#v!yy(v!yy)W!yy)j!yy!O!yy~O!Y#qO![#rO!^#uO!_#vO!a#xO!b#yO!c#yO!e#yO!f#zO(u#gO)S#mO)T#oO)U#nO)V#pO)W:lO)X#|O~P#3zO)W:lO~O]ZXlgXpZXpiX!TiX!VZX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!cZX!eZX!fZX!gZX!hZX(uZX(v$]X(wZX(xZX)SZX)TZX)UZX)VZX)WZX)XZX)jZX~O]%WXlmXpnXp%WX!TnX!V%WX!X%WX!Y%WX![%WX!^%WX!_%WX!a%WX!b%WX!c%WX!e%WX!f%WX!gmX!h%WX(u%WX(w%WX(x%WX)S%WX)T%WX)U%WX)V%WX)X%WX)jmX!O%WXQ%WX!d%WX~O)W%WX!W%WX(v%WX!U%WX~P+GrO]nX]%WXdnXlmXpnXp%WXrnXsnXtnXunXvnXwnXxnXynX}nX!VnX!V%WX!rnX!snX!tnX!unX!vnX!xnX!{nX%vnX&rnX&snX(rnX)SnX)UnX)VnX!OnX!O%WX!hnX)XnX~O)WnX)jnX~P+JSO]%WXlmXpnXp%WX!V%WX!h%WXQ%WX!d%WX!O%WX~O!T%WX#v%WX)W%WX)j%WX(v%WX~P+LmOQnXQ%WX!TnX!X%WX!Y%WX![%WX!^%WX!_%WX!a%WX!b%WX!c%WX!dnX!d%WX!e%WX!f%WX!gmX!h%WX(u%WX(w%WX(x%WX)S%WX)T%WX)U%WX)V%WX)X%WX)jmX~P+JSO]nX]%WXlmXpnXp%WXrnXsnXtnXunXvnXwnXxnXynX}nX!V%WX!rnX!snX!tnX!unX!vnX!xnX!{nX%vnX&rnX&snX(rnX)SnX)UnX)VnX~O!TnX(vnX)WnX)jnX~P, eOdnX!VnX)W%WX~P, eOlmXpnX)W%WX~Od)oO%Y)pO(y:oO~Od)oO%Y)pO(y:tO~Od)oO%Y)pO(y:pO~Od$RO%Y*TO'[$TO'_$UO(y:oO~Od$RO%Y*TO'[$TO'_$UO(y:qO~Od$RO%Y*TO'[$TO'_$UO(y:sO~O]iXriXsiXtiXuiXviXwiXxiXyiX!OiX!ViX&riX&siX)SiX)UiX)ViXdiX}iX!riX!siX!tiX!uiX!viX!xiX!{iX%viX(riX~P#1jO]ZXlgXpZXpiX!VZX!hZX)WZX)jZX~O!TZX#vZX(vZX~P,'{OlgXpiX)PiX)WZX)jiX~O]ZX]iXdiXlgXpZXpiXriXsiXtiXuiXviXwiXxiXyiX}iX!VZX!ViX!riX!siX!tiX!uiX!viX!xiX!{iX%viX&riX&siX(riX)SiX)UiX)ViX!OZX!OiX!hiX)XiX)jiX~O)WZX~P,)VO]ZX]iXlgXpZXpiXriXsiXtiXuiXviXwiXxiXyiX!TiX!VZX!ViX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!cZX!eZX!fZX!gZX!hZX!hiX&riX&siX(uZX(wZX(xZX)SZX)SiX)TZX)UZX)UiX)VZX)ViX)XZX)XiX)jZX~OQZXQiX!dZX!diX~P,+pO]iXdiXriXsiXtiXuiXviXwiXxiXyiX}iX!ViX!riX!siX!tiX!uiX!viX!xiX!{iX%viX&riX&siX(riX)SiX)UiX)ViX~P#1jO]ZX]iXdiXlgXpZXpiXriXsiXtiXuiXviXwiXxiXyiX}iX!VZX!ViX!riX!siX!tiX!uiX!viX!xiX!{iX%viX&riX&siX(riX)SiX)UiX)ViX~O)WiX~P,0rOdiX}iX!OZX!OiX!riX!siX!tiX!uiX!viX!xiX!{iX%viX(riX)jiX~P,+pO]ZX]iXlgXpZXpiXriXsiXtiXuiXviXwiXxiXyiX}iX!TiX!VZX!riX!siX!tiX!uiX!viX!xiX!{iX%viX&riX&siX(riX(viX)SiX)UiX)ViX)WiX)jiX~Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O~PBUOd$RO%Y*TO(y:oO~Od$RO%Y*TO(y:pO~Od$RO%Y*TO(y:vO~Od$RO%Y*TO(y:uO~O]%hOd!POl%bOr!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O!V%kO!{!dO!|%RO%v$mO(r$xO)S;aO)U;bO)V;bO~O]%hOd!POl%bO!V%kO!{!dO%v$mO(r$xO)S;aO)U;bO)V;bO~Od$RO%Y$SO(y:pO~Od$RO%Y$SO(y:tO~Ol:yO~Ol:xO~O]cXlgXpiX!TcX~Od)oO%Y*TO(y:oO~Od)oO%Y*TO(y:pO~Od)oO%Y*TO(y:qO~Od)oO%Y*TO(y:rO~Od)oO%Y*TO(y:sO~Od)oO%Y*TO(y:uO~Od)oO%Y*TO(y:vO~Or!^Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^O~P,9OO](}Xr(}Xs(}Xt(}Xu(}Xv(}Xw(}Xx(}Xy(}X}(}X!r(}X!s(}X!t(}X!u(}X!v(}X!x(}X!{(}X%v(}X&r(}X&s(}X(r(}X)S(}X)U(}X)V(}X)j(}X~Ol:xO!T(}X(v(}X)W(}X~P,\u003C}O]&wXlmXpnX!T&wX~Od4kO%Y*TO(y;tO~Ol;[O)S;xO)U5aO)V5aO~P(ElOd!POl%bO!{!dO%v$mO(r$xO~O]1SO!V1QO)S0zO)U;yO)V;yOQ#nX!d#nX!h#nX!O#nX~P,?yO)S;YO~Ol;hO~Ol;iO~Ol;jO~Ol;lO~Ol;mO~Ol;nO~Ol;lO!T$WOQ(}X!d(}X!h(}X)X(}X!O(}X)j(}X~P$GQOl;jO!T$WO~P$GQOl;hO!g$YO)j$YO~Ol;jO!g$YO)j$YO~Ol;lO!g$YO)j$YO~Ol;iO!O(}X!h(}X)X(}X)j(}X~P$GQOd/^O%Y*TO(y;tO~Ol;uO~O)S\u003CYO~OV'e'h'i'g(o)Y!R(rST%Z!Y!['jd%[!i'R!f]'f*Z'k(w!^!_'l'm'l~\\\",goto:\\\"%5]*ZPPPPPP*[P*_PP.T4iP7j7j:tP:t>OP>i>{?aFXMX!&]!,sP!3m!4b!5VP!5qPPPPPPPP!6[P!7tPP!9V!:oP!:uPPPPPP!:xP!:xPP!:xPPPPPPPPP!;U!>lP!>oPP!?]!@QPPPPP!@UP>l!AgPP>l!Cn!Eo!E}!Gd!ITP!I`P!Io!Io!MP#!`##v#'S#*^!Eo#*hPP!Eo#*o#*u#*h#*h#*xP#*|#+k#+k#+k#+k!ITP#,U#,g#.|P#/bP#0}P#1R#1Z#2O#2Z#4i#4q#4q#1RP#1RP#4x#5OP#5YPP#5u#6d#7U#5uP#7v#8SP#5uP#5uPP#5u#5uP#5uP#5uP#5uP#5uP#5uP#5uP#8V#5Y#8sP#9YP#9o#9o#9o#9o#9|#1RP#:d#?`#?}PPPPPPPP#@uP#ATP#ATP#Aa#Dn#9OPP#@}#EQP#Ee#Ep#Ev#Ev#@}#FlP#1R#1R#1R#1R#1RP!Io#GW#G_#G_#G_#Gc!Ly#Gm!Ly#Gq!E}!E}!E}#Gt#L^!E}>l>l>l$#V!@Q!@Q!@Q!@Q!@Q!@Q!6[!6[!6[$#jP$%V$%e!6[$%kPP!6[$'y$'|#@l$(P:t7j$+V$-Q$.q$0a7jPP7j$2T7jP7j7jP7jP$5Z7jP7jPP7j$5gPPPPPPPPP*[P$8o$8u$;^$=d$=j$>Q$>[$>g$>v$>|$@[$AZ$Ab$Ai$Ao$Aw$BR$BX$Bd$Bj$Bs$B{$CW$C^$Ch$Cn$Cx$DP$D`$Df$DlP$Dr$Dz$ER$Ea$F}$GT$GZ$Gb$GkPPPPPPPP$Gq$GuPPPPP$Nw$'y$Nz%$S%&[P%&i%&lPPPPPPPPPP%&x%'{%(R%(V%)|%+Z%+|%,T%.d%.jPPP%.t%/P%/S%/Y%0a%0d%0n%0x%0|%2Q%2s%2y#@uP%3d%3t%3w%4X%4e%4i%4o%4u$'y$'|$'|%4x%4{P%5V%5YR#cP'`mO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fU%om%p7QQ&m!`Q(j#]d0P)}/|/}0O0R4}5O5P5S8QR7Q3Tb}Oaewx{!g&S*q&v$i[!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0{1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fS%`f0h#d%jgnp|#O$g$|$}%S%d%h%i%w&s't'u(Q*Y*`*b*t+],l,v-_-p-w.f.m.o0]0y0z1O1S2_2j5a6g;W;X;Y;`;a;b;o;p;q;r;v;w;x;y\u003CW\u003CX\u003CYS%qm!YS&u!h#PQ']!tQ'g!yQ'h!zQ(j#`Q(k#]Q(l#^Q*x%kQ,W&lQ,]&nQ-S'^Q-d'fQ-k'qS.r(Z4XQ/f)gQ0e*mQ2Q,[Q2X,cQ3O-eQ4b.|Q4f/TQ5f0}Q6[2TQ6}3PQ8a6ZQ9e7zR;Z1Q$|#hS!]$y%Q%T%Z&j&k'Q'X'Z'a'c(a(e(h(w(x)R)S)T)U)V)W)X)Y)Z)[)])^)_)k)q)x+X+g,O,S,j,u-h-i-|.y/p0`0b0g0i0w1`1y2a2h3R3c3d4c4d4j4m4s4u4y4z5d5p5w6U6e6i6s6z7q7r7t8S8T8c8f8j8r9T9[9k9q9|:T:Y:`:iQ&p!dQ(g#ZQ(s#bQ)j$T[*s%e*W0k2`2g2{Q,^&oQ/O(fQ/S(kQ/Z(tS/i)i/PQ0r+QS4q/j/kR8O4r'a![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f'a!VO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fQ)O#kS+Q%y0sQ/r)sk3}.g3s3w3z3{7c7e7f7h7k9X9Y:RQ)Q#kk3|.g3s3w3z3{7c7e7f7h7k9X9Y:Rl)P#k.g3s3w3z3{7c7e7f7h7k9X9Y:RT+Q%y0s[UOwx!g&S*qW$`[e$e(b#l$p_!f!u!}#R#S#T#U#V#Z$S$T$l%U&U&Y&c&m'_'}(P(U(^(g)j)p+[+a+b+t+y,X,k,z-Q-o-t.W.X._.`.d.q.u1T1X1f1k1m2l3[3]3^3p3t5j5}6P7[8Z![%cg$g%d%i&s*Y*t+],l,v-_0z1O2_;W;X;Y;a;b;o;p;q;r;v;w;y\u003CW\u003CX\u003CYY%snp%w-p.fl(|#k.g3s3w3z3{7c7e7f7h7k9X9Y:RS;e't-wU;f(Q.m.o&|;{af{|!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$f$k$|$}%S%]%h%m&Q&W&b&y&|'O'i'j'u'y(`(i)l)r*`*b*h*i*l*r+W+Y+h+j+k,P,R,n,q-g.P.Q.U.}/Q/[/c/l/n/s/u0]0h0y0{1Q1a1b1l1p1z2c2i2j2u4O4R4W4a5Y5a5e5q6_6c6f6g6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f;`;xQ;|1Sd;}&x'P'b,w-]-^-a2f2z2}W\u003CO&f*v1|3iQ\u003CP#O[\u003CQ!t'^'f,[2T6ZT\u003C]%y0s[VOwx!g&S*qW$a[e$e(bQ$p.u!j$q_!f!u!}#V#Z$S$T$l%U&U&Y&c&m'_(g)j)p+[+a+t,X,k,z-Q-o.d1T1X1f1k1m2l3t5j8Z&^$zaf{!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$f$k%]%m&Q&W&b&y&|'O'i'j'y(`(i)l)r*h*i*l*r+W+Y+h+j+k,P,R,n,q-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z2c2i2u4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f![%cg$g%d%i&s*Y*t+],l,v-_0z1O2_;W;X;Y;a;b;o;p;q;r;v;w;y\u003CW\u003CX\u003CYY%snp%w-p.fQ'r#O|'|#R#S#T#U'}(P(U(^+b+y.W.X._.`.q3[3]3^3p5}6P7[l(|#k.g3s3w3z3{7c7e7f7h7k9X9Y:RS-n't-wQ3W-tU;s(Q.m.on;{|$|$}%S%h'u*`*b0]0y2j5a6g;`;x[\u003CQ!t'^'f,[2T6ZW\u003CR&f*v1|3id\u003CS&x'P'b,w-]-^-a2f2z2}Q\u003CZ1ST\u003C]%y0s!Q!UO[ewx!g$e&S&f&x'P'b(b*q*v,w-]-^-a1|2f2z2}3i!v$t_!f!u!}#O#V#Z$S$T$l%U&U&Y&c&m'_'t(Q(g)j)p+[+t,X,k,z-Q-o-w.d.m.o1S1T1X1f1k1m2l3t5j8Z&^%Paf{!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$f$k%]%m&Q&W&b&y&|'O'i'j'y(`(i)l)r*h*i*l*r+W+Y+h+j+k,P,R,n,q-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z2c2i2u4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f$Q%lgnp|#k$g$|$}%S%d%h%i%w%y&s'^'f'u*Y*`*b*t+],[,l,v-_-p.f.g0]0s0y0z1O2T2_2j3s3w3z3{5a6Z6g7c7e7f7h7k9X9Y:R;W;X;Y;`;a;b;o;p;q;r;v;w;x;y\u003CW\u003CX\u003CYQ'[!tz(O#R#S#T#U'}(P(U(^+y.W.X._.`.q3[3]3^3p5}6P7[f-Z'`-T-V-Y2p2q2s2v6q6r8pQ1W+aQ1Z+bQ2k,yQ3X-tQ4[.uQ5l1YR8V5m!Q!UO[ewx!g$e&S&f&x'P'b(b*q*v,w-]-^-a1|2f2z2}3i!x$t_!f!u!}#O#V#Z$S$T$l%U&U&Y&c&m'_'t(Q(g)j)p+[+a+t,X,k,z-Q-o-w.d.m.o1S1T1X1f1k1m2l3t5j8Z&^%Paf{!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$f$k%]%m&Q&W&b&y&|'O'i'j'y(`(i)l)r*h*i*l*r+W+Y+h+j+k,P,R,n,q-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z2c2i2u4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f$S%lgnp|!t#k$g$|$}%S%d%h%i%w%y&s'^'f'u*Y*`*b*t+],[,l,v-_-p.f.g0]0s0y0z1O2T2_2j3s3w3z3{5a6Z6g7c7e7f7h7k9X9Y:R;W;X;Y;`;a;b;o;p;q;r;v;w;x;y\u003CW\u003CX\u003CY|(O#R#S#T#U'}(P(U(^+b+y.W.X._.`.q3[3]3^3p5}6P7[Q3X-tR4[.u[WOwx!g&S*qW$b[e$e(b#l$p_!f!u!}#R#S#T#U#V#Z$S$T$l%U&U&Y&c&m'_'}(P(U(^(g)j)p+[+a+b+t+y,X,k,z-Q-o-t.W.X._.`.d.q.u1T1X1f1k1m2l3[3]3^3p3t5j5}6P7[8Z![%cg$g%d%i&s*Y*t+],l,v-_0z1O2_;W;X;Y;a;b;o;p;q;r;v;w;y\u003CW\u003CX\u003CYY%snp%w-p.fl(|#k.g3s3w3z3{7c7e7f7h7k9X9Y:RS;e't-wU;f(Q.m.on;{|$|$}%S%h'u*`*b0]0y2j5a6g;`;xQ;|1SQ\u003CP#O[\u003CQ!t'^'f,[2T6Z&^\u003CTaf{!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$f$k%]%m&Q&W&b&y&|'O'i'j'y(`(i)l)r*h*i*l*r+W+Y+h+j+k,P,R,n,q-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z2c2i2u4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fd\u003CU&x'P'b,w-]-^-a2f2z2}W\u003CV&f*v1|3iT\u003C]%y0sp$PT$_$o%b%r({:z:{:|;[;];^;_;c;d\u003C[o)m$V*U*[/_:w:x:y;h;i;j;k;l;m;n;up$QT$_$o%b%r({:z:{:|;[;];^;_;c;d\u003C[o)n$V*U*[/_:w:x:y;h;i;j;k;l;m;n;u^&e}!O$i$j%`%j;Zd&i!U$t%P%l'[(O1W1Z3X4[V/a)O)P3}S%Ye$eQ,T&fQ.{(bQ2m-QQ5y1mQ6V1|Q6m2lR9h8Z#}!TO[_ewx!f!g!u!}#O#V#Z$S$T$e$l%U&S&U&Y&c&f&m&x'P'_'b't(Q(b(g)j)p*q*v+[+a+t,X,k,w,z-Q-]-^-a-o-t-w.d.m.o1S1T1X1f1k1m1|2f2l2z2}3i3t5j8Z#[^O[_`wx!f!g!}#O$S$d$l$s$u&S&U&Y&c&m&r&x'P'b't(Q)p*]*q*v+[,X,k,w,z-]-^-a-o-t-w.d.m.o1S1T1f2f2z2}3i3t_(U#R#S#T+b3[3]3^#}ZO[wx!g!k#R#S#T%m&S&U&Y&c&m&w&x&y&|'O'P'['b't'x'}(P(Q(U*q*v+[+b,X,h,k,q-P-]-^-a-o-t-w-z._.d.m.q1S1T1f2c2k2z2}3[3]3^3i6c6j8g9l9p:W:]:fQ$]YR0T*OR*Q$]e0P)}/|/}0O0R4}5O5P5S8Q'`!YO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fe0P)}/|/}0O0R4}5O5P5S8QR5T0T^(T#R#S#T+b3[3]3^Y.]'}(R(U(V7TU3k.Z.^.qS7X3l4VR9c7s^(S#R#S#T+b3[3]3^[.['}(R(T(U(V7TW3j.Z.].^.qU7W3k3l4VS8z7X7sR:V9cT.k(Q.md]Owx!g&S't(Q*q-w.m!v^[_`!f!}#O$S$d$l$s$u&U&Y&c&m&r&x'P'b)p*]*v+[,X,k,w,z-]-^-a-o-t.d.o1S1T1f2f2z2}3i3tQ%tnT1u+}1v!jbOaenpwx{|!g#O$|$}%S%h%w&S't'u(Q*`*b*q-p-w.f.m.o0]0y1S2j5a6g;`;xf-W'`-T-V-Y2p2q2s2v6q6r8pj3x.g3s3w3z3{7c7e7f7h7k9X9Y:Rr;zg$g%d%i&s*Y*t,l,v-_2_;W;X;Y;o;q;vi\u003C^+]0z1O;a;b;p;r;w;y\u003CW\u003CX\u003CY!O&^y%X&V&Y&Z'k)h*d*f+]+e+x/m0^0y0z1O1S1j5a5v;x;yz&az%O%W%e&d's*W*_,b-x0Z0[0k0|2`2g2{5V5b6l8iS'{#Q.Xn+l&X*g+f+m+p-j/h0_1R1^4t5W5`5u8XQ2W,a^2t-X2r2x6p6w8o9se7i3y7_7g7o7p9U9W9`:Q:cS+^&U1TY+n&Y&c*v1S3iR5s1f#w!POaegnpwx{|!g#O$g$|$}%S%d%h%i%w&S&s't'u(Q*Y*`*b*q*t+],l,v-_-p-w.f.m.o0]0y0z1O1S2_2j5a6g;W;X;Y;`;a;b;o;p;q;r;v;w;x;y\u003CW\u003CX\u003CY`oOwx!g&S't*q-w#U!Paeg{|#O$g$|$}%S%d%h%i&s'u*Y*`*b*t+],l,v-_0]0y0z1O1S2_2j5a6g;W;X;Y;`;a;b;o;p;q;r;v;w;x;y\u003CW\u003CX\u003CYU%vnp-pQ*}%wS.e(Q.mT3v.f.oW+r&^+l+s1cV+z&a+{7iQ+x&`U+z&a+{7iQ-w'tT.S'y.U'`![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fX1r+y.X5}6P'W!VO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/[/c/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fW1r+y.X5}6PR2e,s!WjO[wx!g!k%m&S&y&|'O'b*q,q-]-^-a2c2z6c6j8g9l9p:W:]:fY%Ve$e(b1p3iQ'S!nS(y#i5YQ,m&xQ,x'PS.O'y.UQ2b,nQ6k2iQ6|2}Q8h6fR9m8e'W![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/[/c/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fX1r+y.X5}6P'ayO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k+y,P,R,n,q,w-]-^-a-g.P.Q.U.X.}/[/c/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W5Y5e5q5}6P6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fQ&`yS't#O-uR1[+cS+^&U1TR5n1[Q1P+]R5g1OR1P+]T+^&U1Tz&[%X&V&Y&Z'k)h*d*f+]+e/m0^0y0z1O1S1j5a5v;x;yQ&]yR1n+x!P&[y%X&V&Y&Z'k)h*d*f+]+e+x/m0^0y0z1O1S1j5a5v;x;yQ+u&^S+|&a7iS1d+l+sQ1t+{R5r1c!WkO[wx!g!k%m&S&y&|'O'b*q,q-]-^-a2c2z6c6j8g9l9p:W:]:fS%zo.eS&Oq-rQ&_yQ&q!eQ'e!yQ*p%eU*{%v%{3vS+P%x%}Q+q&]Q,Y&mS,Z&n'gQ,r&{S0X*W,bS0o*|*}Q0q+OQ1o+xS2S,]-fQ5U0ZQ5Z0pQ5{1nQ6Y2RQ6]2WQ7n3yQ9S7_R:P9U[uOwx!g&S*qQ,Y&mQ-v'tQ3Y-tR3_-wxlOwx!g!k%m&S&y'O*q,q2c6c6j8g9l9p:W:]:fU$h[&|-^S%zo.eS&Oq-rQ*p%eU*{%v%{3vS+P%x%}S0X*W,bS0o*|*}Q0q+OQ5U0ZQ5Z0pQ7n3yQ9S7_R:P9UT,_&q,`]uOwx!g&S*q[uOwx!g&S*qQ,Y&mQ,n&xQ,w'PW-`'b-]-a2zQ-v'tQ3Y-tQ3_-wR6{2}[%fg$g,l,v-_2_R0l*t^$XV!U$a$z%P\u003CR\u003CSQ'S!nS)`#}*vS)v$W*qQ)y$YY*s%e*W0k2g2{Q/O(fS/i)i/PS0a*h4aS0j*r6_Q0r+QQ4Q.gQ4n/cS4q/j/kS4v/n5YQ4{/uQ6`2`U7a3s3y4RQ8O4rQ8k6hY9Q7_7b7c7l7mQ9r8mW9z9O9R9U9VQ:Z9oU:a9{9}:OR:j:bS)v$W*qT4v/n5YZ)t$W)u*q/n5YQ&w!hR'x#PS,g&v'vQ2[,eR6^2ZxlOwx!g!k%m&S&y'O*q,q2c6c6j8g9l9p:W:]:fV$h[&|-^!XkO[wx!g!k%m&S&y&|'O'b*q,q-]-^-a2c2z6c6j8g9l9p:W:]:f!WhO[wx!g!k%m&S&y&|'O'b*q,q-]-^-a2c2z6c6j8g9l9p:W:]:fR'W!q!WkO[wx!g!k%m&S&y&|'O'b*q,q-]-^-a2c2z6c6j8g9l9p:W:]:fR,n&xQ&y!iQ&{!jQ'O!lR,q&zR,o&xxlOwx!g!k%m&S&y'O*q,q2c6c6j8g9l9p:W:]:fX-`'b-]-a2z[uOwx!g&S*qQ,z'PQ-v'tS.k(Q.mR3_-w[uOwx!g&S*qQ,z'PW-`'b-]-a2zT.k(Q.mg-Z'`-T-V-Y2p2q2s2v6q6r8pylOwx!g!k%m&S&y'O*q,q2c6c6j8g9l9p:W:]:fb!OOaewx{!g&S*q&|$j[f!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f#d%jgnp|#O$g$|$}%S%d%h%i%w&s't'u(Q*Y*`*b*t+],l,v-_-p-w.f.m.o0]0y0z1O1S2_2j5a6g;W;X;Y;`;a;b;o;p;q;r;v;w;x;y\u003CW\u003CX\u003CYQ']!tQ-S'^Q-d'fQ2Q,[Q6[2TR8a6Zj$RT$_%b%r:z:{:|;[;];^;_;c;di)o$V*U:w:x:y;h;i;j;k;l;m;nj$RT$_%b%r:z:{:|;[;];^;_;c;dh)o$V*U:w:x:y;h;i;j;k;l;m;nS/^({\u003C[V4k/_/`;u[uOwx!g&S*qQ-v'tR3_-w[uOwx!g&S*qT.k(Q.m'`!YO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fR7R3T[uOwx!g&S*qQ-v'tS.k(Q.mR3_-w[pOwx!g&S*qQ%wnS-p't-wT.f(Q.mS%{o.eS*|%v3vR0p*}Q+R%yR5]0sS%zo.eS&Oq-rU*{%v%{3vS+P%x%}S0o*|*}Q0q+OQ5Z0pQ7n3yQ9S7_R:P9U`qOwx!g&S(Q*q.mS%xn-pU%}p.f.oQ+O%wT-r't-wS'z#Q.XR.Y'{T.R'y.US.S'y.UQ8x7UR9w8yT5}1q8_R6P1q#d!Pgnp|#O$g$|$}%S%d%h%i%w&s't'u(Q*Y*`*b*t+],l,v-_-p-w.f.m.o0]0y0z1O1S2_2j5a6g;W;X;Y;`;a;b;o;p;q;r;v;w;x;y\u003CW\u003CX\u003CYb!QOaewx{!g&S*q&}![[f!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f#d!Pgnp|#O$g$|$}%S%d%h%i%w&s't'u(Q*Y*`*b*t+],l,v-_-p-w.f.m.o0]0y0z1O1S2_2j5a6g;W;X;Y;`;a;b;o;p;q;r;v;w;x;y\u003CW\u003CX\u003CYb!QOaewx{!g&S*q&|![[f!W!X!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#{#}$U$W$Y$e$f$k%]%m&Q&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W4a5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fk3|.g3s3w3z3{7c7e7f7h7k9X9Y:RQ4Q.gS7a3s3yU9Q7_7c7lS9z9O9UR:a9}#|!TO[_ewx!f!g!u!}#O#V#Z$S$T$e$l%U&S&U&Y&c&f&m&x'P'_'b't(Q(b(g)j)p*q*v+[+a+t,X,k,w,z-Q-]-^-a-o-t-w.d.m.o1S1T1X1f1k1m1|2f2l2z2}3i3t5j8ZR4].uQ(]#US.v([(^S4^.w.xR7w4_Q.s(ZR7u4X#|!TO[_ewx!f!g!u!}#O#V#Z$S$T$e$l%U&S&U&Y&c&f&m&x'P'_'b't(Q(b(g)j)p*q*v+[+a+t,X,k,w,z-Q-]-^-a-o-t-w.d.m.o1S1T1X1f1k1m1|2f2l2z2}3i3t5j8Zp$w`$d$s%X&r'`(_(f)i*d-T/k1j5k5v8Uq(}#k%y.g0s3s3w3z3{7c7e7f7h7k9X9Y:RR,U&fR6W1|'X!VO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/[/c/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:f$q#rS%T%Z'Q'X'Z'a'c(a(e(h(w(x)R)S)U)V)W)X)Y)Z)[)])^)_)k)q)x+X+g,O,S,j,u-h-i-|.y/p0`0b0g0i0w1`1y2a2h3R3c3d4c4d4j4m4s4u4y4z5d5p5w6U6e6i6s6z7q7r7t8S8T8c8f8j8r9T9[9k9q9|:T:Y:`:i$]#sS%T%Z'Q'X'Z'a'c(h(w(x)R)V)^)_)k)q)x+X+g,O,S,j,u-h-i-|.y/p0`0b0g0i0w1`1y2a2h3R3c3d4c4d4j4m4s4u4y4z5d5p5w6U6e6i6s6z7q7r7t8S8T8c8f8j8r9T9[9k9q9|:T:Y:`:i$Z#tS%T%Z'Q'X'Z'a'c(h(w(x)R)^)_)k)q)x+X+g,O,S,j,u-h-i-|.y/p0`0b0g0i0w1`1y2a2h3R3c3d4c4d4j4m4s4u4y4z5d5p5w6U6e6i6s6z7q7r7t8S8T8c8f8j8r9T9[9k9q9|:T:Y:`:i$c#wS%T%Z'Q'X'Z'a'c(h(w(x)R)U)V)W)X)^)_)k)q)x+X+g,O,S,j,u-h-i-|.y/p0`0b0g0i0w1`1y2a2h3R3c3d4c4d4j4m4s4u4y4z5d5p5w6U6e6i6s6z7q7r7t8S8T8c8f8j8r9T9[9k9q9|:T:Y:`:i'X![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/[/c/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fQ/P(fQ/j)iQ4r/kR9d7y']![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#g#i#l#q#r#s#t#u#v#w#x#y#z#}$U$W$Y$e$f$k%]%m&Q&S&W&b&f&x&y&|'O'P'b'i'j'y(`(b(i)l)r*h*i*l*q*r*v+W+Y+h+j+k,P,R,n,q,w-]-^-a-g.P.Q.U.}/Q/[/c/l/n/s/u0h0{1Q1a1b1l1p1z1|2c2f2i2u2z2}3i4O4R4W5Y5e5q6_6c6f6h6j6t6v6{7b7j7m8e8g8m8s8t9R9V9]9_9l9o9p9{:O:U:W:]:b:fQ#eQR(u#eU$|a;`;xb%Ue$e&f(b-Q1m1|2l8ZQ'_!u!Q*^$|%U'_*`*f+h,P0]0^1b2p6q6t7e8p9X9]:R;W;o;p;v;w\u003CWS*`$}%SQ*f%XS+h&W1QQ,P&bQ0]*bQ0^*dQ1b+kQ2p-VS6q2q2sQ6t2uQ7e3wQ8p6rS9X7f7hQ9]7jQ:R9YQ;W%dS;o;X;YS;p\u003CX\u003CYQ;v;qQ;w;rT\u003CW0z;a[[Owx!g&S*ql$c[&|'}+[,X,h,k-P-^-o-z._.d.ql&|!k%m&y'O,q2c6c6j8g9l9p:W:]:f^'}#R#S#T+b3[3]3^`+[&U&Y&c*v1S1T1f3iS,X&m-tQ,h&wU,k&x'P2}S-P'[2kW-^'b-]-a2zS-o't-wQ-z'xQ._(PS.d(Q.mR.q(UQ)|$[R/x)|Q0R)}Q4}/|Q5O/}Q5P0OY5Q0R4}5O5P8QR8Q5SQ*P$]S0U*P0VR0V*QS.`(P._S3n.`7[R7[3pQ3q.aS7Y3o3rU7^3q7Y8{R8{7ZQ.m(QR4S.m!|_O[wx!f!g!}#O$S$l&S&U&Y&c&m&x'P'b't(Q)p*q*v+[,X,k,w,z-]-^-a-o-t-w.d.m.o1S1T1f2f2z2}3i3tU$r_$u*]U$u`$d&rR*]$sU$}a;`;xd*a$}*b2q6r7f9Y;X;q;r\u003CXQ*b%SQ2q-VQ6r2sQ7f3wQ9Y7hQ;X%dQ;q;YQ;r\u003CYT\u003CX0z;aS+{&a7iR1s+{S*j%Z/pR0c*jQ1U+_R5i1UU+e&V0z;xR1]+eQ+s&^Q1c+lT1i+s1cQ8[5yR9i8[QwOS&Rw&ST&Sx*qQ,`&qR2V,`W)u$W*q/n5YR/t)uU/o)q)v0gR4w/o[*u%e%f*W2`2g2{R0m*uQ,d&uR2Y,dQ-a'bQ2z-]T2|-a2zQ2w-XR6x2wQ-f'gQ2R,]T3Q-f2RS%pm7QR*z%pdnOwx!g&S't(Q*q-w.mR%unQ0t+RR5^0tQ.U'yR3f.UQ1v+}R6Q1vU*n%`*x;ZR0f*nS1g+n0nR5t1gQ7l3yQ9O7_U9a7l9O9}R9}9U$O!SO[_ewx!f!g!u!}#O#V#Z$S$T$e$l%U&S&U&Y&c&f&m&x'P'_'b't(Q(b(g)j)p*q*v+[+a+t,X,k,w,z-Q-]-^-a-o-t-w.d.m.o.u1S1T1X1f1k1m1|2f2l2z2}3i3t5j8ZR&g!SQ4Y.sR7v4YQ1},UR6X1}S/d)_)`R4o/dW(o#a(j(k/SR/W(oQ7{4fR9f7{T)a#}*v!USO[wx!g!k%m&S&y&|'O'b,q-]-^-a2c2z6c6j8g9l9p:W:]:fj$ya{$k%]+j,R1a1z5q6v8s9_:UY%Te$e(b1p3iY%Zf$f(i)l*lQ&j!WQ&k!XQ'Q!nQ'X!rQ'Z!sQ'a!vQ'c!xQ(a#XQ(e#YS(h#[+YQ(w#gQ(x#iQ)R#lQ)S#qQ)T#rQ)U#sQ)V#tQ)W#uQ)X#vQ)Y#wQ)Z#xQ)[#yQ)]#zQ)^#{S)_#}*vQ)k$UQ)q$WQ)x$YQ+X&QS+g&W1QQ,O&bQ,S&fQ,j&xQ,u'PQ-h'iQ-i'jS-|'y.UQ.y(`S/p)r0hS0`*h4aQ0b*iQ0g*qQ0i*rQ0w+WS1`+h+kQ1y,PQ2a,nS2h,w6{Q3R-gQ3c.PQ3d.QQ4c.}Q4d/QQ4j/[Q4m/cQ4s/lQ4u/nQ4y/sQ4z/uQ5d0{Q5p1bQ5w1lQ6U1|S6e2f8tQ6i2iQ6s2uQ6z2}Q7q4OQ7r4RQ7t4WQ8S5YQ8T5eQ8c6_Q8f6fQ8j6hQ8r6tS9T7b7mQ9[7jQ9k8eQ9q8mS9|9R9VQ:T9]Q:Y9oS:`9{:OR:i:bR,V&fd]Owx!g&S't(Q*q-w.m!v^[_`!f!}#O$S$d$l$s$u&U&Y&c&m&r&x'P'b)p*]*v+[,X,k,w,z-]-^-a-o-t.d.o1S1T1f2f2z2}3i3t#r${ae!u$e$|$}%S%U%X%d&W&b&f'_(b*`*b*d*f+h+k,P-Q-V0]0^1Q1b1m1|2l2p2q2s2u3w6q6r6t7e7f7h7j8Z8p9X9Y9]:R;W;X;Y;`;a;o;p;q;r;v;w\u003CW\u003CX\u003CYQ%tnS+d&V+eW+r&^+l+s1cU+z&a+{7iQ1k+tT5c0z;x``Owx!g&S't*q-wS$d[-oQ$s_b%Xe$e&f(b-Q1m1|2l8Z!h&r!f!}#O$S$l&U&Y&c&m&x'P'b(Q)p*v+[,X,k,w,z-]-^-a-t.d.m.o1S1T1f2f2z2}3i3tQ'`!uS(_#V+aQ(f#ZS)i$T(gQ*d%UQ-T'_Q/k)jQ1j+tQ5k1XQ5v1kR8U5jS(W#R3]S(X#S3^V(Y#T+b3[R$^Ye0Q)}/|/}0O0R4}5O5P5S8QW(R#R#S#T+bQ([#US.Z'}(US.a(P._Q.x(^W1r+y.X5}6PQ3Z-tQ3h.WQ3o.`Q4V.qU7T3[3]3^Q7]3pR8|7[Q.b(PR3m._T.l(Q.mdgOwx!g&S&m't*q-t-wU$g[,X-oQ&s!fQ'k!}Q'u#OQ)h$SQ*Y$l`+]&U&Y&c*v1S1T1f3iQ,l&xQ,v'PY-_'b-]-a2z2}S.g(Q.mQ/m)pQ0y+[S2_,k-^S2j,w,zS3s.d.oQ6g2fR7c3td]Owx!g&S't(Q*q-w.m!v^[_`!f!}#O$S$d$l$s$u&U&Y&c&m&r&x'P'b)p*]*v+[,X,k,w,z-]-^-a-o-t.d.o1S1T1f2f2z2}3i3tR%tnQ3y.gQ7_3sQ7g3wQ7o3zQ7p3{Q9U7cU9W7e7f7hQ9`7kS:Q9X9YR:c:RZ+o&Y&c*v1S3ipzOnpwx!g%w&S't(Q*q-p-w.f.m.o[%Oa%d0z;`;a;xU%We%h1SQ%eg^&d{|%i1O5a;b;yQ's#OQ*W$gb*_$|$}%S;W;X;Y\u003CW\u003CX\u003CYQ,b&sQ-x'uQ0Z*Y[0[*`*b;o;p;q;rQ0k*tQ0|+]Q2`,lQ2g,vS2{-_2_U5V0];v;wQ5b0yQ6l2jR8i6gQ+}&aR9Z7iS1q+y.XQ8^5}R8_6P[%^f$f(i)l)r0hR0d*lR+`&UQ+_&UR5h1TS&Xy+xQ*g%XU+f&V0z;xS+m&Y1SW+p&Z1O5a;yQ-j'kQ/h)hS0_*d*fQ1R+]Q1^+eQ4t/mQ5W0^Q5`0yQ5u1jR8X5vR5z1mYvOwx&S*qR&t!gW%gg,l,v-_T*X$g2_T)w$W*q[uOwx!g&S*qQ&}!kQ*y%mQ,p&yQ,t'OQ2d,qQ6b2cQ8d6cQ8l6jQ9n8gQ:X9lQ:[9pQ:e:WQ:g:]R:k:fxlOwx!g!k%m&S&y'O*q,q2c6c6j8g9l9p:W:]:fU$h[&|-^X-`'b-]-a2zQ-['`R2o-TS-X'`-TQ2r-VQ2x-YU6p2p2q2sQ6w2vS8o6q6rR9s8p[rOwx!g&S*qS-q't-wT.h(Q.mR+S%y[sOwx!g&S*qS-s't-wT.i(Q.m[tOwx!g&S*qT.j(Q.mT.T'y.UX%af%k0h1QQ.w([R4_.xR.t(ZR(d#XQ(r#aS/R(j(kR4e/SR/V(lR4g/T\\\",nodeNames:\\\"⚠ RawString > MacroName LineComment BlockComment PreprocDirective #include String EscapeSequence SystemLibString Identifier ArgumentList ( ConditionalExpression AssignmentExpression CallExpression PrimitiveType FieldExpression FieldIdentifier DestructorName TemplateMethod ScopedFieldIdentifier NamespaceIdentifier TemplateType TypeIdentifier ScopedTypeIdentifier ScopedNamespaceIdentifier :: NamespaceIdentifier TypeIdentifier TemplateArgumentList \u003C TypeDescriptor const volatile restrict _Atomic mutable constexpr constinit consteval StructSpecifier struct MsDeclspecModifier __declspec ) Attribute AttributeName Identifier AttributeArgs { } [ ] UpdateOp ArithOp ArithOp ArithOp LogicOp BitOp BitOp BitOp CompareOp CompareOp CompareOp > CompareOp BitOp UpdateOp , Number CharLiteral AttributeArgs VirtualSpecifier BaseClassClause Access virtual FieldDeclarationList FieldDeclaration extern static register inline thread_local AttributeSpecifier __attribute__ PointerDeclarator MsBasedModifier __based MsPointerModifier FunctionDeclarator ParameterList ParameterDeclaration PointerDeclarator FunctionDeclarator Noexcept noexcept RequiresClause requires True False ParenthesizedExpression CommaExpression LambdaExpression LambdaCaptureSpecifier TemplateParameterList OptionalParameterDeclaration TypeParameterDeclaration typename class VariadicParameterDeclaration VariadicDeclarator ReferenceDeclarator OptionalTypeParameterDeclaration VariadicTypeParameterDeclaration TemplateTemplateParameterDeclaration template AbstractFunctionDeclarator AbstractPointerDeclarator AbstractArrayDeclarator AbstractParenthesizedDeclarator AbstractReferenceDeclarator ThrowSpecifier throw TrailingReturnType CompoundStatement FunctionDefinition MsCallModifier TryStatement try CatchClause catch LinkageSpecification Declaration InitDeclarator InitializerList InitializerPair SubscriptDesignator FieldDesignator ExportDeclaration export ImportDeclaration import ModuleName PartitionName HeaderName CaseStatement case default LabeledStatement StatementIdentifier ExpressionStatement IfStatement if ConditionClause Declaration else SwitchStatement switch DoStatement do while WhileStatement ForStatement for ReturnStatement return BreakStatement break ContinueStatement continue GotoStatement goto CoReturnStatement co_return CoYieldStatement co_yield AttributeStatement ForRangeLoop AliasDeclaration using TypeDefinition typedef PointerDeclarator FunctionDeclarator ArrayDeclarator ParenthesizedDeclarator ThrowStatement NamespaceDefinition namespace ScopedIdentifier Identifier OperatorName operator ArithOp BitOp CompareOp LogicOp new delete co_await ConceptDefinition concept UsingDeclaration enum StaticAssertDeclaration static_assert ConcatenatedString TemplateDeclaration FriendDeclaration friend union FunctionDefinition ExplicitFunctionSpecifier explicit FieldInitializerList FieldInitializer DefaultMethodClause DeleteMethodClause FunctionDefinition OperatorCast operator TemplateInstantiation FunctionDefinition FunctionDefinition Declaration ModuleDeclaration module RequiresExpression RequirementList SimpleRequirement TypeRequirement CompoundRequirement ReturnTypeRequirement ConstraintConjuction LogicOp ConstraintDisjunction LogicOp ArrayDeclarator ParenthesizedDeclarator ReferenceDeclarator TemplateFunction OperatorName StructuredBindingDeclarator ArrayDeclarator ParenthesizedDeclarator ReferenceDeclarator BitfieldClause FunctionDefinition FunctionDefinition Declaration FunctionDefinition Declaration AccessSpecifier UnionSpecifier ClassSpecifier EnumSpecifier SizedTypeSpecifier TypeSize EnumeratorList Enumerator DependentType Decltype decltype auto PlaceholderTypeSpecifier ParameterPackExpansion ParameterPackExpansion FieldIdentifier PointerExpression SubscriptExpression BinaryExpression ArithOp LogicOp LogicOp BitOp UnaryExpression LogicOp BitOp UpdateExpression CastExpression SizeofExpression sizeof CoAwaitExpression CompoundLiteralExpression NULL NewExpression new NewDeclarator DeleteExpression delete ParameterPackExpansion nullptr this UserDefinedLiteral ParamPack #define PreprocArg #if #ifdef #ifndef #else #endif #elif PreprocDirectiveName Macro Program\\\",maxTerm:425,nodeProps:[[\\\"group\\\",-35,1,8,11,14,15,16,18,71,72,100,101,102,104,191,208,229,242,243,270,271,272,277,280,281,282,284,285,286,287,290,292,293,294,295,296,\\\"Expression\\\",-13,17,24,25,26,42,255,256,257,258,262,263,265,266,\\\"Type\\\",-19,126,129,147,150,152,153,158,160,163,164,166,168,170,172,174,176,178,179,188,\\\"Statement\\\"],[\\\"isolate\\\",-4,4,5,8,10,\\\"\\\"]],propSources:[cppHighlighting],skippedNodes:[0,3,4,5,6,7,10,297,298,299,300,301,302,303,304,305,306,347,348],repeatNodeCount:41,tokenData:\\\"&*r7ZR!UOX$eXY({YZ.gZ]$e]^+P^p$epq({qr.}rs0}st2ktu$euv!7dvw!9bwx!;exy!\u003CYyz!=Tz{!>O{|!?R|}!AV}!O!BQ!O!P!DX!P!Q#+y!Q!R#Az!R![$(x![!]$Ag!]!^$Cc!^!_$D^!_!`%1W!`!a%2X!a!b%5_!b!c$e!c!n%6Y!n!o%7q!o!w%6Y!w!x%7q!x!}%6Y!}#O%:n#O#P%\u003Cg#P#Q%Kz#Q#R%Ms#R#S%6Y#S#T$e#T#i%6Y#i#j%Nv#j#o%6Y#o#p&!e#p#q&#`#q#r&%f#r#s&&a#s;'S$e;'S;=`(u\u003C%lO$e&t$nY)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e&r%eW)ZW'f&jOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x\u003C%lO%^&j&SU'f&jOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}&j&kX'f&jOY%}YZ%}Z]%}]^'W^#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}&j']V'f&jOY%}YZ%}Z#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}&j'uP;=`\u003C%l%}&r'{P;=`\u003C%l%^&l(VW(pQ'f&jOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o\u003C%lO(O&l(rP;=`\u003C%l(O&t(xP;=`\u003C%l$e7Z)Y`)ZW(pQ(n.o'f&j*Z)`OX$eXY({YZ*[Z]$e]^+P^p$epq({qr$ers%^sw$ewx(Ox#O$e#O#P,^#P;'S$e;'S;=`(u\u003C%lO$e.o*aT(n.oXY*[YZ*[]^*[pq*[#O#P*p.o*sQYZ*[]^*y.o*|PYZ*[4e+[`)ZW(pQ(n.o'f&jOX$eXY+PYZ*[Z]$e]^+P^p$epq+Pqr$ers%^sw$ewx(Ox#O$e#O#P,^#P;'S$e;'S;=`(u\u003C%lO$e4Z,cX'f&jOY%}YZ-OZ]%}]^-{^#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}4Z-V[(n.o'f&jOX%}XY-OYZ*[Z]%}]^-O^p%}pq-Oq#O%}#O#P,^#P;'S%};'S;=`'r\u003C%lO%}4Z.QV'f&jOY%}YZ-OZ#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}7P.nT*W)`(n.oXY*[YZ*[]^*[pq*[#O#P*p3o/[[%^!b'QP)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox!_$e!_!`0Q!`#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o0_Y%]!b!a,g)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e6e1YY)ZW(qQ(o/]'f&jOY%^Zr%^rs1xsw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x\u003C%lO%^(U2RW)x!b)ZW'f&jOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x\u003C%lO%^4e2tf)ZW(pQ'f&jOX$eXY2kZp$epq2kqr$ers%^sw$ewx(Ox!c$e!c!}4Y!}#O$e#O#P&f#P#T$e#T#W4Y#W#X5m#X#Y>u#Y#]4Y#]#^NZ#^#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e4eb)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e5xd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y7W#Y#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e7cd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#Z8q#Z#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e8|d)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#]4Y#]#^:[#^#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e:gd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#b4Y#b#c;u#c#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e\u003CQd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y=`#Y#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e=mb)ZW(pQ'e.o'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e?Qf)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#`4Y#`#a@f#a#b4Y#b#cHV#c#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e@qf)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#]4Y#]#^BV#^#g4Y#g#hEV#h#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4eBbd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#ZCp#Z#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4eC}b)ZW(pQ'f&j'l.o'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4eEbd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#YFp#Y#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4eF}b)ZW(pQ'j.o'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4eHbd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#W4Y#W#XIp#X#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4eI{d)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#]4Y#]#^KZ#^#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4eKfd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#ZLt#Z#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4eMRb)ZW(pQ'f&j'k.o'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4eNff)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#Z! z#Z#b4Y#b#c!.[#c#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!!Xf)ZW(pQ'g.o'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#W4Y#W#X!#m#X#b4Y#b#c!(W#c#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!#xd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y!%W#Y#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!%cd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#Z!&q#Z#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!'Ob)ZW(pQ'h.o'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!(cd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#W4Y#W#X!)q#X#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!)|d)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y!+[#Y#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!+gd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#Z!,u#Z#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!-Sb)ZW(pQ'i.o'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!.gd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#V4Y#V#W!/u#W#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!0Qd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#`4Y#`#a!1`#a#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!1kd)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#i4Y#i#j!2y#j#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!3Ud)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#W4Y#W#X!4d#X#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!4od)ZW(pQ'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y!5}#Y#o4Y#o;'S$e;'S;=`(u\u003C%lO$e4e!6[b)ZW(pQV.o'f&j'm.oOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u\u003C%lO$e3o!7q[)ZW(pQ%Z!b![,g'f&jOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o!8rY!g-y)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o!9o])V,g)ZW(pQ%[!b'f&jOY$eZr$ers%^sv$evw!:hwx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o!:uY)U,g%^!b)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e2X!;pW)[S(pQ)Y,g'f&jOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o\u003C%lO(O6i!\u003CeY)ZW(pQ]6_'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e'V!=`Y!Oa)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o!>][)S,g)ZW(pQ%Z!b'f&jOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o!?`^)ZW(pQ%Z!b!Y,g'f&jOY$eZr$ers%^sw$ewx(Ox{$e{|!@[|!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o!@gY)ZW!X-y(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e2a!AbY!h,k)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o!B__)ZW(pQ%Z!b!Y,g'f&jOY$eZr$ers%^sw$ewx(Ox}$e}!O!@[!O!_$e!_!`!8g!`!a!C^!a#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o!CiY(x-y)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e2a!Dd^)ZW(pQ'f&j(w,gOY$eZr$ers%^sw$ewx(Ox!O$e!O!P!E`!P!Q$e!Q![!GY![#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e2a!Ei[)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox!O$e!O!P!F_!P#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e2a!FjY)X,k)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e2]!Gen)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx!Icx!Q$e!Q![!GY![!g$e!g!h#$w!h!i#*Y!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#X$e#X#Y#$w#Y#Z#*Y#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u\u003C%lO$e2T!IjY(pQ'f&jOY(OZr(Ors%}s!Q(O!Q![!JY![#O(O#O#P&f#P;'S(O;'S;=`(o\u003C%lO(O2T!Jcn(pQ!i,g'f&jOY(OZr(Ors%}sw(Owx!Icx!Q(O!Q![!JY![!g(O!g!h!La!h!i##`!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#X(O#X#Y!La#Y#Z##`#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o\u003C%lO(O2T!Ljl(pQ!i,g'f&jOY(OZr(Ors%}s{(O{|!Nb|}(O}!O!Nb!O!Q(O!Q![# e![!c(O!c!h# e!h!i# e!i!n(O!n!o##`!o!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#Y# e#Y#Z# e#Z#`(O#`#a##`#a#i(O#i#j##`#j;'S(O;'S;=`(o\u003C%lO(O2T!Ni^(pQ'f&jOY(OZr(Ors%}s!Q(O!Q![# e![!c(O!c!i# e!i#O(O#O#P&f#P#T(O#T#Z# e#Z;'S(O;'S;=`(o\u003C%lO(O2T# nj(pQ!i,g'f&jOY(OZr(Ors%}sw(Owx!Nbx!Q(O!Q![# e![!c(O!c!h# e!h!i# e!i!n(O!n!o##`!o!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#Y# e#Y#Z# e#Z#`(O#`#a##`#a#i(O#i#j##`#j;'S(O;'S;=`(o\u003C%lO(O2T##id(pQ!i,g'f&jOY(OZr(Ors%}s!h(O!h!i##`!i!n(O!n!o##`!o!w(O!w!x##`!x#O(O#O#P&f#P#Y(O#Y#Z##`#Z#`(O#`#a##`#a#i(O#i#j##`#j;'S(O;'S;=`(o\u003C%lO(O2]#%Sn)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx(Ox{$e{|#'Q|}$e}!O#'Q!O!Q$e!Q![#(]![!c$e!c!h#(]!h!i#(]!i!n$e!n!o#*Y!o!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#Y#(]#Y#Z#(]#Z#`$e#`#a#*Y#a#i$e#i#j#*Y#j;'S$e;'S;=`(u\u003C%lO$e2]#'Z`)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![#(]![!c$e!c!i#(]!i#O$e#O#P&f#P#T$e#T#Z#(]#Z;'S$e;'S;=`(u\u003C%lO$e2]#(hj)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx!Nbx!Q$e!Q![#(]![!c$e!c!h#(]!h!i#(]!i!n$e!n!o#*Y!o!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#Y#(]#Y#Z#(]#Z#`$e#`#a#*Y#a#i$e#i#j#*Y#j;'S$e;'S;=`(u\u003C%lO$e2]#*ef)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx(Ox!h$e!h!i#*Y!i!n$e!n!o#*Y!o!w$e!w!x#*Y!x#O$e#O#P&f#P#Y$e#Y#Z#*Y#Z#`$e#`#a#*Y#a#i$e#i#j#*Y#j;'S$e;'S;=`(u\u003C%lO$e7Z#,W`)ZW(pQ%Z!b![,g'f&jOY$eZr$ers%^sw$ewx(Oxz$ez{#-Y{!P$e!P!Q#:s!Q!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e7Z#-c])ZW(pQ'f&jOY#-YYZ#.[Zr#-Yrs#/csw#-Ywx#5wxz#-Yz{#8j{#O#-Y#O#P#2`#P;'S#-Y;'S;=`#:m\u003C%lO#-Y1e#._TOz#.[z{#.n{;'S#.[;'S;=`#/]\u003C%lO#.[1e#.qVOz#.[z{#.n{!P#.[!P!Q#/W!Q;'S#.[;'S;=`#/]\u003C%lO#.[1e#/]OT1e1e#/`P;=`\u003C%l#.[7X#/jZ)ZW'f&jOY#/cYZ#.[Zw#/cwx#0]xz#/cz{#4O{#O#/c#O#P#2`#P;'S#/c;'S;=`#5q\u003C%lO#/c7P#0bX'f&jOY#0]YZ#.[Zz#0]z{#0}{#O#0]#O#P#2`#P;'S#0];'S;=`#3x\u003C%lO#0]7P#1SZ'f&jOY#0]YZ#.[Zz#0]z{#0}{!P#0]!P!Q#1u!Q#O#0]#O#P#2`#P;'S#0];'S;=`#3x\u003C%lO#0]7P#1|UT1e'f&jOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}7P#2eZ'f&jOY#0]YZ#0]Z]#0]]^#3W^z#0]z{#0}{#O#0]#O#P#2`#P;'S#0];'S;=`#3x\u003C%lO#0]7P#3]X'f&jOY#0]YZ#0]Zz#0]z{#0}{#O#0]#O#P#2`#P;'S#0];'S;=`#3x\u003C%lO#0]7P#3{P;=`\u003C%l#0]7X#4V])ZW'f&jOY#/cYZ#.[Zw#/cwx#0]xz#/cz{#4O{!P#/c!P!Q#5O!Q#O#/c#O#P#2`#P;'S#/c;'S;=`#5q\u003C%lO#/c7X#5XW)ZWT1e'f&jOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x\u003C%lO%^7X#5tP;=`\u003C%l#/c7R#6OZ(pQ'f&jOY#5wYZ#.[Zr#5wrs#0]sz#5wz{#6q{#O#5w#O#P#2`#P;'S#5w;'S;=`#8d\u003C%lO#5w7R#6x](pQ'f&jOY#5wYZ#.[Zr#5wrs#0]sz#5wz{#6q{!P#5w!P!Q#7q!Q#O#5w#O#P#2`#P;'S#5w;'S;=`#8d\u003C%lO#5w7R#7zW(pQT1e'f&jOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o\u003C%lO(O7R#8gP;=`\u003C%l#5w7Z#8s_)ZW(pQ'f&jOY#-YYZ#.[Zr#-Yrs#/csw#-Ywx#5wxz#-Yz{#8j{!P#-Y!P!Q#9r!Q#O#-Y#O#P#2`#P;'S#-Y;'S;=`#:m\u003C%lO#-Y7Z#9}Y)ZW(pQT1e'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e7Z#:pP;=`\u003C%l#-Y7Z#;OY)ZW(pQS1e'f&jOY#:sZr#:srs#;nsw#:swx#@{x#O#:s#O#P#\u003Cz#P;'S#:s;'S;=`#At\u003C%lO#:s7X#;wW)ZWS1e'f&jOY#;nZw#;nwx#\u003Cax#O#;n#O#P#\u003Cz#P;'S#;n;'S;=`#@u\u003C%lO#;n7P#\u003ChUS1e'f&jOY#\u003CaZ#O#\u003Ca#O#P#\u003Cz#P;'S#\u003Ca;'S;=`#>[\u003C%lO#\u003Ca7P#=RXS1e'f&jOY#\u003CaYZ%}Z]#\u003Ca]^#=n^#O#\u003Ca#O#P#>b#P;'S#\u003Ca;'S;=`#>[\u003C%lO#\u003Ca7P#=uVS1e'f&jOY#\u003CaYZ%}Z#O#\u003Ca#O#P#\u003Cz#P;'S#\u003Ca;'S;=`#>[\u003C%lO#\u003Ca7P#>_P;=`\u003C%l#\u003Ca7P#>i]S1e'f&jOY#\u003CaYZ%}Z]#\u003Ca]^#=n^#O#\u003Ca#O#P#>b#P#b#\u003Ca#b#c#\u003Ca#c#f#\u003Ca#f#g#?b#g;'S#\u003Ca;'S;=`#>[\u003C%lO#\u003Ca7P#?iUS1e'f&jOY#\u003CaZ#O#\u003Ca#O#P#?{#P;'S#\u003Ca;'S;=`#>[\u003C%lO#\u003Ca7P#@SZS1e'f&jOY#\u003CaYZ%}Z]#\u003Ca]^#=n^#O#\u003Ca#O#P#>b#P#b#\u003Ca#b#c#\u003Ca#c;'S#\u003Ca;'S;=`#>[\u003C%lO#\u003Ca7X#@xP;=`\u003C%l#;n7R#AUW(pQS1e'f&jOY#@{Zr#@{rs#\u003Cas#O#@{#O#P#\u003Cz#P;'S#@{;'S;=`#An\u003C%lO#@{7R#AqP;=`\u003C%l#@{7Z#AwP;=`\u003C%l#:s2]#BVt)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx#Dgx!O$e!O!P$ m!P!Q$e!Q![$(x![!g$e!g!h#$w!h!i#*Y!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#U$e#U#V$+X#V#X$e#X#Y#$w#Y#Z#*Y#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j#l$e#l#m$=`#m;'S$e;'S;=`(u\u003C%lO$e2T#DnY(pQ'f&jOY(OZr(Ors%}s!Q(O!Q![#E^![#O(O#O#P&f#P;'S(O;'S;=`(o\u003C%lO(O2T#Egp(pQ!i,g'f&jOY(OZr(Ors%}sw(Owx#Dgx!O(O!O!P#Gk!P!Q(O!Q![#E^![!g(O!g!h!La!h!i##`!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#X(O#X#Y!La#Y#Z##`#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o\u003C%lO(O2T#Gtn(pQ!i,g'f&jOY(OZr(Ors%}s!Q(O!Q![#Ir![!c(O!c!g#Ir!g!h#MS!h!i#Ir!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X#Ir#X#Y#MS#Y#Z#Ir#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o\u003C%lO(O2T#I{p(pQ!i,g'f&jOY(OZr(Ors%}sw(Owx#LPx!Q(O!Q![#Ir![!c(O!c!g#Ir!g!h#MS!h!i#Ir!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X#Ir#X#Y#MS#Y#Z#Ir#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o\u003C%lO(O2T#LW^(pQ'f&jOY(OZr(Ors%}s!Q(O!Q![#Ir![!c(O!c!i#Ir!i#O(O#O#P&f#P#T(O#T#Z#Ir#Z;'S(O;'S;=`(o\u003C%lO(O2T#M]t(pQ!i,g'f&jOY(OZr(Ors%}sw(Owx#LPx{(O{|!Nb|}(O}!O!Nb!O!Q(O!Q![#Ir![!c(O!c!g#Ir!g!h#MS!h!i#Ir!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X#Ir#X#Y#MS#Y#Z#Ir#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o\u003C%lO(O2]$ xp)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![$#|![!c$e!c!g$#|!g!h$&]!h!i$#|!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X$#|#X#Y$&]#Y#Z$#|#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u\u003C%lO$e2]$$Xp)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx#LPx!Q$e!Q![$#|![!c$e!c!g$#|!g!h$&]!h!i$#|!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X$#|#X#Y$&]#Y#Z$#|#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u\u003C%lO$e2]$&ht)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx#LPx{$e{|#'Q|}$e}!O#'Q!O!Q$e!Q![$#|![!c$e!c!g$#|!g!h$&]!h!i$#|!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X$#|#X#Y$&]#Y#Z$#|#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u\u003C%lO$e2]$)Tp)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx#Dgx!O$e!O!P$ m!P!Q$e!Q![$(x![!g$e!g!h#$w!h!i#*Y!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#X$e#X#Y#$w#Y#Z#*Y#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u\u003C%lO$e2]$+b_)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox!O$e!O!P$,a!P!Q$e!Q!R$-`!R![$(x![#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e2]$,j[)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![!GY![#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e2]$-kt)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx#Dgx!O$e!O!P$ m!P!Q$e!Q![$(x![!g$e!g!h#$w!h!i#*Y!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#U$e#U#V$/{#V#X$e#X#Y#$w#Y#Z#*Y#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j#l$e#l#m$0z#m;'S$e;'S;=`(u\u003C%lO$e2]$0U[)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![$(x![#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e2]$1T`)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![$2V![!c$e!c!i$2V!i#O$e#O#P&f#P#T$e#T#Z$2V#Z;'S$e;'S;=`(u\u003C%lO$e2]$2br)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx$4lx!O$e!O!P$ m!P!Q$e!Q![$2V![!c$e!c!g$2V!g!h$:p!h!i$2V!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X$2V#X#Y$:p#Y#Z$2V#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u\u003C%lO$e2T$4s^(pQ'f&jOY(OZr(Ors%}s!Q(O!Q![$5o![!c(O!c!i$5o!i#O(O#O#P&f#P#T(O#T#Z$5o#Z;'S(O;'S;=`(o\u003C%lO(O2T$5xr(pQ!i,g'f&jOY(OZr(Ors%}sw(Owx$4lx!O(O!O!P#Gk!P!Q(O!Q![$5o![!c(O!c!g$5o!g!h$8S!h!i$5o!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X$5o#X#Y$8S#Y#Z$5o#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o\u003C%lO(O2T$8]u(pQ!i,g'f&jOY(OZr(Ors%}sw(Owx$4lx{(O{|!Nb|}(O}!O!Nb!O!P#Gk!P!Q(O!Q![$5o![!c(O!c!g$5o!g!h$8S!h!i$5o!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X$5o#X#Y$8S#Y#Z$5o#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o\u003C%lO(O2]$:{u)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx$4lx{$e{|#'Q|}$e}!O#'Q!O!P$ m!P!Q$e!Q![$2V![!c$e!c!g$2V!g!h$:p!h!i$2V!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X$2V#X#Y$:p#Y#Z$2V#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u\u003C%lO$e2]$=ic)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox!O$e!O!P$,a!P!Q$e!Q!R$>t!R![$2V![!c$e!c!i$2V!i#O$e#O#P&f#P#T$e#T#Z$2V#Z;'S$e;'S;=`(u\u003C%lO$e2]$?Pv)ZW(pQ!i,g'f&jOY$eZr$ers%^sw$ewx$4lx!O$e!O!P$ m!P!Q$e!Q![$2V![!c$e!c!g$2V!g!h$:p!h!i$2V!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#U$2V#U#V$2V#V#X$2V#X#Y$:p#Y#Z$2V#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j#l$e#l#m$0z#m;'S$e;'S;=`(u\u003C%lO$e4e$Ar[(v-X)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox![$e![!]$Bh!]#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3s$BsYl-})ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e2]$CnY)W,g)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e7V$Dk_p,g%]!b)ZW(pQ'f&jOY$EjYZ$FlZr$Ejrs$GZsw$Ejwx%)Px!^$Ej!^!_%+w!_!`%.U!`!a%0]!a#O$Ej#O#P$Ib#P;'S$Ej;'S;=`%+q\u003C%lO$Ej*[$Es])ZW(pQ'f&jOY$EjYZ$FlZr$Ejrs$GZsw$Ejwx%)Px!`$Ej!`!a%*t!a#O$Ej#O#P$Ib#P;'S$Ej;'S;=`%+q\u003C%lO$Ejp$FoTO!`$Fl!`!a$GO!a;'S$Fl;'S;=`$GT\u003C%lO$Flp$GTO$Wpp$GWP;=`\u003C%l$Fl*Y$GbZ)ZW'f&jOY$GZYZ$FlZw$GZwx$HTx!`$GZ!`!a%(U!a#O$GZ#O#P$Ib#P;'S$GZ;'S;=`%(y\u003C%lO$GZ*Q$HYX'f&jOY$HTYZ$FlZ!`$HT!`!a$Hu!a#O$HT#O#P$Ib#P;'S$HT;'S;=`$Mx\u003C%lO$HT*Q$IOU$WpY#t'f&jOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}*Q$Ig['f&jOY$HTYZ$HTZ]$HT]^$J]^!`$HT!`!a$NO!a#O$HT#O#P%&n#P;'S$HT;'S;=`%'f;=`\u003C%l%$z\u003C%lO$HT*Q$JbX'f&jOY$HTYZ$J}Z!`$HT!`!a$Hu!a#O$HT#O#P$Ib#P;'S$HT;'S;=`$Mx\u003C%lO$HT'[$KSX'f&jOY$J}YZ$FlZ!`$J}!`!a$Ko!a#O$J}#O#P$LY#P;'S$J};'S;=`$Mr\u003C%lO$J}'[$KvU$Wp'f&jOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}'[$L_Z'f&jOY$J}YZ$J}Z]$J}]^$MQ^!`$J}!`!a$Ko!a#O$J}#O#P$LY#P;'S$J};'S;=`$Mr\u003C%lO$J}'[$MVX'f&jOY$J}YZ$J}Z!`$J}!`!a$Ko!a#O$J}#O#P$LY#P;'S$J};'S;=`$Mr\u003C%lO$J}'[$MuP;=`\u003C%l$J}*Q$M{P;=`\u003C%l$HT*Q$NVW$Wp'f&jOY$NoZ!`$No!`!a% ^!a#O$No#O#P% w#P;'S$No;'S;=`%#^\u003C%lO$No)`$NtW'f&jOY$NoZ!`$No!`!a% ^!a#O$No#O#P% w#P;'S$No;'S;=`%#^\u003C%lO$No)`% eUY#t'f&jOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%})`% |Y'f&jOY$NoYZ$NoZ]$No]^%!l^#O$No#O#P%#d#P;'S$No;'S;=`%$[;=`\u003C%l%$z\u003C%lO$No)`%!qX'f&jOY$NoYZ%}Z!`$No!`!a% ^!a#O$No#O#P% w#P;'S$No;'S;=`%#^\u003C%lO$No)`%#aP;=`\u003C%l$No)`%#iZ'f&jOY$NoYZ%}Z]$No]^%!l^!`$No!`!a% ^!a#O$No#O#P% w#P;'S$No;'S;=`%#^\u003C%lO$No)`%$_XOY%$zZ!`%$z!`!a%%g!a#O%$z#O#P%%l#P;'S%$z;'S;=`%&h;=`\u003C%l$No\u003C%lO%$z#t%$}WOY%$zZ!`%$z!`!a%%g!a#O%$z#O#P%%l#P;'S%$z;'S;=`%&h\u003C%lO%$z#t%%lOY#t#t%%oRO;'S%$z;'S;=`%%x;=`O%$z#t%%{XOY%$zZ!`%$z!`!a%%g!a#O%$z#O#P%%l#P;'S%$z;'S;=`%&h;=`\u003C%l%$z\u003C%lO%$z#t%&kP;=`\u003C%l%$z*Q%&sZ'f&jOY$HTYZ$J}Z]$HT]^$J]^!`$HT!`!a$Hu!a#O$HT#O#P$Ib#P;'S$HT;'S;=`$Mx\u003C%lO$HT*Q%'iXOY%$zZ!`%$z!`!a%%g!a#O%$z#O#P%%l#P;'S%$z;'S;=`%&h;=`\u003C%l$HT\u003C%lO%$z*Y%(aW$WpY#t)ZW'f&jOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x\u003C%lO%^*Y%(|P;=`\u003C%l$GZ*S%)WZ(pQ'f&jOY%)PYZ$FlZr%)Prs$HTs!`%)P!`!a%)y!a#O%)P#O#P$Ib#P;'S%)P;'S;=`%*n\u003C%lO%)P*S%*UW$WpY#t(pQ'f&jOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o\u003C%lO(O*S%*qP;=`\u003C%l%)P*[%+RY$WpY#t)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e*[%+tP;=`\u003C%l$Ej7V%,U^)ZW(pQ%[!b!f,g'f&jOY$EjYZ$FlZr$Ejrs$GZsw$Ejwx%)Px!_$Ej!_!`%-Q!`!a%*t!a#O$Ej#O#P$Ib#P;'S$Ej;'S;=`%+q\u003C%lO$Ej7V%-]]!g-y)ZW(pQ'f&jOY$EjYZ$FlZr$Ejrs$GZsw$Ejwx%)Px!`$Ej!`!a%*t!a#O$Ej#O#P$Ib#P;'S$Ej;'S;=`%+q\u003C%lO$Ej7V%.c]%]!b!b,g)ZW(pQ'f&jOY$EjYZ$FlZr$Ejrs$GZsw$Ejwx%)Px!`$Ej!`!a%/[!a#O$Ej#O#P$Ib#P;'S$Ej;'S;=`%+q\u003C%lO$Ej7V%/mY%]!b!b,g$WpY#t)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e)j%0hYY#t)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o%1c[)j!c)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox!_$e!_!`0Q!`#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o%2f]%]!b)ZW(pQ!d,g'f&jOY$eZr$ers%^sw$ewx(Ox!_$e!_!`%3_!`!a%4[!a#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o%3lY%]!b!b,g)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o%4i[)ZW(pQ%[!b!f,g'f&jOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e&u%5jY(uP)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e7Z%6ib)ZW(yS(pQ!R,f(r%y'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![%6Y![!c$e!c!}%6Y!}#O$e#O#P&f#P#R$e#R#S%6Y#S#T$e#T#o%6Y#o;'S$e;'S;=`(u\u003C%lO$e7Z%8Qb)ZW(yS(pQ!R,f(r%y'f&jOY$eZr$ers%9Ysw$ewx%9{x!Q$e!Q![%6Y![!c$e!c!}%6Y!}#O$e#O#P&f#P#R$e#R#S%6Y#S#T$e#T#o%6Y#o;'S$e;'S;=`(u\u003C%lO$e5P%9cW)ZW(o/]'f&jOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x\u003C%lO%^2T%:UW(pQ)Y,g'f&jOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o\u003C%lO(O3o%:yZ!V-y)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox!}$e!}#O%;l#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e&u%;wY)PP)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e4e%\u003Cla'f&jOY%=qYZ%>[Z]%=q]^%?Z^!Q%=q!Q![%?w![!w%=q!w!x%AX!x#O%=q#O#P%H_#P#i%=q#i#j%Ds#j#l%=q#l#m%IR#m;'S%=q;'S;=`%Kt\u003C%lO%=q&t%=xUXY'f&jOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}4e%>e[XY(n.o'f&jOX%}XY-OYZ*[Z]%}]^-O^p%}pq-Oq#O%}#O#P,^#P;'S%};'S;=`'r\u003C%lO%}4e%?bVXY'f&jOY%}YZ-OZ#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}&t%@OWXY'f&jOY%}Z!Q%}!Q![%@h![#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}&t%@oWXY'f&jOY%}Z!Q%}!Q![%=q![#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}&t%A^['f&jOY%}Z!Q%}!Q![%BS![!c%}!c!i%BS!i#O%}#O#P&f#P#T%}#T#Z%BS#Z;'S%};'S;=`'r\u003C%lO%}&t%BX['f&jOY%}Z!Q%}!Q![%B}![!c%}!c!i%B}!i#O%}#O#P&f#P#T%}#T#Z%B}#Z;'S%};'S;=`'r\u003C%lO%}&t%CS['f&jOY%}Z!Q%}!Q![%Cx![!c%}!c!i%Cx!i#O%}#O#P&f#P#T%}#T#Z%Cx#Z;'S%};'S;=`'r\u003C%lO%}&t%C}['f&jOY%}Z!Q%}!Q![%Ds![!c%}!c!i%Ds!i#O%}#O#P&f#P#T%}#T#Z%Ds#Z;'S%};'S;=`'r\u003C%lO%}&t%Dx['f&jOY%}Z!Q%}!Q![%En![!c%}!c!i%En!i#O%}#O#P&f#P#T%}#T#Z%En#Z;'S%};'S;=`'r\u003C%lO%}&t%Es['f&jOY%}Z!Q%}!Q![%Fi![!c%}!c!i%Fi!i#O%}#O#P&f#P#T%}#T#Z%Fi#Z;'S%};'S;=`'r\u003C%lO%}&t%Fn['f&jOY%}Z!Q%}!Q![%Gd![!c%}!c!i%Gd!i#O%}#O#P&f#P#T%}#T#Z%Gd#Z;'S%};'S;=`'r\u003C%lO%}&t%Gi['f&jOY%}Z!Q%}!Q![%=q![!c%}!c!i%=q!i#O%}#O#P&f#P#T%}#T#Z%=q#Z;'S%};'S;=`'r\u003C%lO%}&t%HfXXY'f&jOY%}YZ%}Z]%}]^'W^#O%}#O#P&f#P;'S%};'S;=`'r\u003C%lO%}&t%IW['f&jOY%}Z!Q%}!Q![%I|![!c%}!c!i%I|!i#O%}#O#P&f#P#T%}#T#Z%I|#Z;'S%};'S;=`'r\u003C%lO%}&t%JR['f&jOY%}Z!Q%}!Q![%Jw![!c%}!c!i%Jw!i#O%}#O#P&f#P#T%}#T#Z%Jw#Z;'S%};'S;=`'r\u003C%lO%}&t%KO[XY'f&jOY%}Z!Q%}!Q![%Jw![!c%}!c!i%Jw!i#O%}#O#P&f#P#T%}#T#Z%Jw#Z;'S%};'S;=`'r\u003C%lO%}&t%KwP;=`\u003C%l%=q2a%LVZ!W,V)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P#Q%Lx#Q;'S$e;'S;=`(u\u003C%lO$e'Y%MTY)]d)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o%NQ[)ZW(pQ%[!b'f&j!_,gOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e7Z& Vd)ZW(yS(pQ!R,f(r%y'f&jOY$eZr$ers%9Ysw$ewx%9{x!Q$e!Q!Y%6Y!Y!Z%7q!Z![%6Y![!c$e!c!}%6Y!}#O$e#O#P&f#P#R$e#R#S%6Y#S#T$e#T#o%6Y#o;'S$e;'S;=`(u\u003C%lO$e2]&!pY!T,g)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e3o&#m^)ZW(pQ%[!b'f&j!^,gOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P#p$e#p#q&$i#q;'S$e;'S;=`(u\u003C%lO$e3o&$vY)T,g%^!b)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e'V&%qY!Ua)ZW(pQ'f&jOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u\u003C%lO$e(]&&nc)ZW(pQ%[!b'RP'f&jOX$eXY&'yZp$epq&'yqr$ers%^sw$ewx(Ox!c$e!c!}&)_!}#O$e#O#P&f#P#R$e#R#S&)_#S#T$e#T#o&)_#o;'S$e;'S;=`(u\u003C%lO$e&y&(Sc)ZW(pQ'f&jOX$eXY&'yZp$epq&'yqr$ers%^sw$ewx(Ox!c$e!c!}&)_!}#O$e#O#P&f#P#R$e#R#S&)_#S#T$e#T#o&)_#o;'S$e;'S;=`(u\u003C%lO$e&y&)jb)ZW(pQdT'f&jOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![&)_![!c$e!c!}&)_!}#O$e#O#P&f#P#R$e#R#S&)_#S#T$e#T#o&)_#o;'S$e;'S;=`(u\u003C%lO$e\\\",tokenizers:[rawString,fallback,0,1,2,3,4,5,6,7,8,9],topRules:{\\\"Program\\\":[0,307]},dynamicPrecedences:{\\\"87\\\":1,\\\"94\\\":1,\\\"119\\\":1,\\\"184\\\":1,\\\"187\\\":-10,\\\"240\\\":-10,\\\"241\\\":1,\\\"244\\\":-1,\\\"246\\\":-10,\\\"247\\\":1,\\\"262\\\":-1,\\\"267\\\":2,\\\"268\\\":2,\\\"306\\\":-10,\\\"365\\\":3,\\\"417\\\":1,\\\"418\\\":3,\\\"419\\\":1,\\\"420\\\":1},specialized:[{term:356,get:value=>spec_identifier$6[value]||-1},{term:32,get:value=>spec_[value]||-1},{term:66,get:value=>spec_templateArgsEnd[value]||-1},{term:363,get:value=>spec_scopedIdentifier[value]||-1}],tokenPrec:24891});const cppLanguage=LRLanguage.define({name:\\\"cpp\\\",parser:parser$g.configure({props:[indentNodeProp.add({IfStatement:continuedIndent({except:/^\\\\s*({|else\\\\b)/}),TryStatement:continuedIndent({except:/^\\\\s*({|catch)\\\\b/}),LabeledStatement:flatIndent,CaseStatement:context=>context.baseIndent+context.unit,BlockComment:()=>null,CompoundStatement:delimitedIndent({closing:\\\"}\\\"}),Statement:continuedIndent({except:/^{/})}),foldNodeProp.add({\\\"DeclarationList CompoundStatement EnumeratorList FieldDeclarationList InitializerList\\\":foldInside,BlockComment(tree){return{from:tree.from+2,to:tree.to-2};}})]}),languageData:{commentTokens:{line:\\\"//\\\",block:{open:\\\"/*\\\",close:\\\"*/\\\"}},indentOnInput:/^\\\\s*(?:case |default:|\\\\{|\\\\})$/,closeBrackets:{stringPrefixes:[\\\"L\\\",\\\"u\\\",\\\"U\\\",\\\"u8\\\",\\\"LR\\\",\\\"UR\\\",\\\"uR\\\",\\\"u8R\\\",\\\"R\\\"]}}});function cpp(){return new LanguageSupport(cppLanguage);}var _m12=Object.freeze({__proto__:null,cpp:cpp,cppLanguage:cppLanguage});const castOpen=1,HeredocString=2,interpolatedStringContent=263,EscapeSequence=3,afterInterpolation=264,automaticSemicolon=265,eof$2=266,abstract=4,and$1=5,array=6,as=7,Boolean=8,_break=9,_case=10,_catch=11,clone=12,_const=13,_continue=14,_default=15,declare=16,_do=17,echo=18,_else=19,elseif=20,enddeclare=21,endfor=22,endforeach=23,endif=24,endswitch=25,endwhile=26,_enum=27,_extends=28,final=29,_finally=30,fn=31,_for=32,foreach=33,from=34,_function=35,global$1=36,goto=37,_if=38,_implements=39,include=40,include_once=41,_instanceof=42,insteadof=43,_interface=44,list=45,match=46,namespace=47,_new=48,_null=49,or=50,print=51,_require=52,require_once=53,_return=54,_switch=55,_throw=56,trait=57,_try=58,unset=59,use=60,_var=61,Visibility=62,_while=63,xor=64,_yield=65;const keywordMap={abstract,and:and$1,array,as,true:Boolean,false:Boolean,break:_break,case:_case,catch:_catch,clone,const:_const,continue:_continue,declare,default:_default,do:_do,echo,else:_else,elseif,enddeclare,endfor,endforeach,endif,endswitch,endwhile,enum:_enum,extends:_extends,final,finally:_finally,fn,for:_for,foreach,from,function:_function,global:global$1,goto,if:_if,implements:_implements,include,include_once,instanceof:_instanceof,insteadof,interface:_interface,list,match,namespace,new:_new,null:_null,or,print,require:_require,require_once,return:_return,switch:_switch,throw:_throw,trait,try:_try,unset,use,var:_var,public:Visibility,private:Visibility,protected:Visibility,while:_while,xor,yield:_yield,__proto__:null};function keywords$1(name){let found=keywordMap[name.toLowerCase()];return found==null?-1:found;}function isSpace$2(ch){return ch==9||ch==10||ch==13||ch==32;}function isASCIILetter(ch){return ch>=97&&ch\u003C=122||ch>=65&&ch\u003C=90;}function isIdentifierStart(ch){return ch==95||ch>=0x80||isASCIILetter(ch);}function isHex(ch){return ch>=48&&ch\u003C=55||ch>=97&&ch\u003C=102||ch>=65&&ch\u003C=70;}const castTypes={int:true,integer:true,bool:true,boolean:true,float:true,double:true,real:true,string:true,array:true,object:true,unset:true,__proto__:null};const expression=new ExternalTokenizer(input=>{if(input.next==40){input.advance();let peek=0;while(isSpace$2(input.peek(peek)))peek++;let name=\\\"\\\",next;while(isASCIILetter(next=input.peek(peek))){name+=String.fromCharCode(next);peek++;}while(isSpace$2(input.peek(peek)))peek++;if(input.peek(peek)==41&&castTypes[name.toLowerCase()])input.acceptToken(castOpen);}else if(input.next==60&&input.peek(1)==60&&input.peek(2)==60){for(let i=0;i\u003C3;i++)input.advance();while(input.next==32||input.next==9)input.advance();let quoted=input.next==39;if(quoted)input.advance();if(!isIdentifierStart(input.next))return;let tag=String.fromCharCode(input.next);for(;;){input.advance();if(!isIdentifierStart(input.next)&&!(input.next>=48&&input.next\u003C=55))break;tag+=String.fromCharCode(input.next);}if(quoted){if(input.next!=39)return;input.advance();}if(input.next!=10&&input.next!=13)return;for(;;){let lineStart=input.next==10||input.next==13;input.advance();if(input.next\u003C0)return;if(lineStart){while(input.next==32||input.next==9)input.advance();let match=true;for(let i=0;i\u003Ctag.length;i++){if(input.next!=tag.charCodeAt(i)){match=false;break;}input.advance();}if(match)return input.acceptToken(HeredocString);}}}});const eofToken=new ExternalTokenizer(input=>{if(input.next\u003C0)input.acceptToken(eof$2);});const semicolon=new ExternalTokenizer((input,stack)=>{if(input.next==63&&stack.canShift(automaticSemicolon)&&input.peek(1)==62)input.acceptToken(automaticSemicolon);});function scanEscape(input){let after=input.peek(1);if(after==110||after==114||after==116||after==118||after==101||after==102||after==92||after==36||after==34||after==123)return 2;if(after>=48&&after\u003C=55){let size=2,next;while(size\u003C5&&(next=input.peek(size))>=48&&next\u003C=55)size++;return size;}if(after==120&&isHex(input.peek(2))){return isHex(input.peek(3))?4:3;}if(after==117&&input.peek(2)==123){for(let size=3;;size++){let next=input.peek(size);if(next==125)return size==2?0:size+1;if(!isHex(next))break;}}return 0;}const interpolated=new ExternalTokenizer((input,stack)=>{let content=false;for(;;content=true){if(input.next==34||input.next\u003C0||input.next==36&&(isIdentifierStart(input.peek(1))||input.peek(1)==123)||input.next==123&&input.peek(1)==36){break;}else if(input.next==92){let escaped=scanEscape(input);if(escaped){if(content)break;else return input.acceptToken(EscapeSequence,escaped);}}else if(!content&&(input.next==91||input.next==45&&input.peek(1)==62&&isIdentifierStart(input.peek(2))||input.next==63&&input.peek(1)==45&&input.peek(2)==62&&isIdentifierStart(input.peek(3)))&&stack.canShift(afterInterpolation)){break;}input.advance();}if(content)input.acceptToken(interpolatedStringContent);});const phpHighlighting=styleTags({\\\"Visibility abstract final static\\\":tags$1.modifier,\\\"for foreach while do if else elseif switch try catch finally return throw break continue default case\\\":tags$1.controlKeyword,\\\"endif endfor endforeach endswitch endwhile declare enddeclare goto match\\\":tags$1.controlKeyword,\\\"and or xor yield unset clone instanceof insteadof\\\":tags$1.operatorKeyword,\\\"function fn class trait implements extends const enum global interface use var\\\":tags$1.definitionKeyword,\\\"include include_once require require_once namespace\\\":tags$1.moduleKeyword,\\\"new from echo print array list as\\\":tags$1.keyword,null:tags$1.null,Boolean:tags$1.bool,VariableName:tags$1.variableName,\\\"NamespaceName/...\\\":tags$1.namespace,\\\"NamedType/...\\\":tags$1.typeName,Name:tags$1.name,\\\"CallExpression/Name\\\":tags$1.function(tags$1.variableName),\\\"LabelStatement/Name\\\":tags$1.labelName,\\\"MemberExpression/Name\\\":tags$1.propertyName,\\\"MemberExpression/VariableName\\\":tags$1.special(tags$1.propertyName),\\\"ScopedExpression/ClassMemberName/Name\\\":tags$1.propertyName,\\\"ScopedExpression/ClassMemberName/VariableName\\\":tags$1.special(tags$1.propertyName),\\\"CallExpression/MemberExpression/Name\\\":tags$1.function(tags$1.propertyName),\\\"CallExpression/ScopedExpression/ClassMemberName/Name\\\":tags$1.function(tags$1.propertyName),\\\"MethodDeclaration/Name\\\":tags$1.function(tags$1.definition(tags$1.variableName)),\\\"FunctionDefinition/Name\\\":tags$1.function(tags$1.definition(tags$1.variableName)),\\\"ClassDeclaration/Name\\\":tags$1.definition(tags$1.className),UpdateOp:tags$1.updateOperator,ArithOp:tags$1.arithmeticOperator,LogicOp:tags$1.logicOperator,BitOp:tags$1.bitwiseOperator,CompareOp:tags$1.compareOperator,ControlOp:tags$1.controlOperator,AssignOp:tags$1.definitionOperator,\\\"$ ConcatOp\\\":tags$1.operator,LineComment:tags$1.lineComment,BlockComment:tags$1.blockComment,Integer:tags$1.integer,Float:tags$1.float,String:tags$1.string,ShellExpression:tags$1.special(tags$1.string),\\\"=> ->\\\":tags$1.punctuation,\\\"( )\\\":tags$1.paren,\\\"#[ [ ]\\\":tags$1.squareBracket,\\\"${ { }\\\":tags$1.brace,\\\"-> ?->\\\":tags$1.derefOperator,\\\", ; :: : \\\\\\\\\\\":tags$1.separator,\\\"PhpOpen PhpClose\\\":tags$1.processingInstruction});const spec_Name={__proto__:null,static:311,STATIC:311,class:333,CLASS:333};const parser$f=LRParser.deserialize({version:14,states:\\\"$GSQ`OWOOQhQaOOP%oO`OOOOO#t'#H_'#H_O%tO#|O'#DtOOO#u'#Dw'#DwQ&SOWO'#DwO&XO$VOOOOQ#u'#Dx'#DxO&lQaO'#D|O(mQdO'#E}O(tQdO'#EQO*kQaO'#EWO,zQ`O'#ETO-PQ`O'#E^O/nQaO'#E^O/uQ`O'#EfO/zQ`O'#EoO*kQaO'#EoO0VQ`O'#HhO0[Q`O'#E{O0[Q`O'#E{OOQS'#Ic'#IcO0aQ`O'#EvOOQS'#IZ'#IZO2oQdO'#IWO6tQeO'#FUO*kQaO'#FeO*kQaO'#FfO*kQaO'#FgO*kQaO'#FhO*kQaO'#FhO*kQaO'#FkOOQO'#Id'#IdO7RQ`O'#FqOOQO'#Hi'#HiO7ZQ`O'#HOO7uQ`O'#FlO8QQ`O'#H]O8]Q`O'#FvO8eQaO'#FwO*kQaO'#GVO*kQaO'#GYO8}OrO'#G]OOQS'#Iq'#IqOOQS'#Ip'#IpOOQS'#IW'#IWO,zQ`O'#GdO,zQ`O'#GfO,zQ`O'#GkOhQaO'#GmO9UQ`O'#GnO9ZQ`O'#GqO9`Q`O'#GtO9eQeO'#GuO9eQeO'#GvO9eQeO'#GwO9oQ`O'#GxO9tQ`O'#GzO9yQaO'#G{O\u003CYQ`O'#G|O\u003C_Q`O'#G}O\u003CdQ`O'#G}O9oQ`O'#HOO\u003CiQ`O'#HQO\u003CnQ`O'#HRO\u003CsQ`O'#HSO\u003CxQ`O'#HVO=TQ`O'#HWO9yQaO'#H[OOQ#u'#IV'#IVOOQ#u'#Ha'#HaQhQaOOO=fQ`O'#HPO7pQ`O'#HPO=kO#|O'#DrPOOO)CCw)CCwOOO#t-E;]-E;]OOO#u,5:c,5:cOOO#u'#H`'#H`O&XO$VOOO=vQ$VO'#IUOOOO'#IU'#IUQOOOOOOOQ#y,5:h,5:hO=}QaO,5:hOOQ#u,5:j,5:jO@eQaO,5:mO@lQaO,5;UO*kQaO,5;UO@sQ`O,5;VOCbQaO'#EsOOQS,5;^,5;^OCiQ`O,5;jOOQP'#F]'#F]O*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qO*kQaO,5;qOOQ#u'#Im'#ImOOQS,5\u003Cq,5\u003CqOOQ#u,5:l,5:lOEbQ`O,5:rOEiQdO'#E}OF]Q`O'#FlOFeQ`O'#FlOFmQ`O,5:oOFrQaO'#E_OOQS,5:x,5:xOHyQ`O'#I]O9yQaO'#EaO9yQaO'#I]OOQS'#I]'#I]OIQQ`O'#I[OIYQ`O,5:xO-UQaO,5:xOI_QaO'#EgOOQS,5;Q,5;QOOQS,5;Z,5;ZOIiQ`O,5;ZOOQO,5>S,5>SOJ[QdO,5;gOOQO-E;f-E;fOL^Q`O,5;gOLcQpO,5;bO0aQ`O'#EyOLkQtO'#E}OOQS'#Ez'#EzOOQS'#Ib'#IbOM`QaO,5:wO*kQaO,5;nOOQS,5;p,5;pO*kQaO,5;pOMgQdO,5\u003CPOMwQdO,5\u003CQONXQdO,5\u003CRONiQdO,5\u003CSO!!sQdO,5\u003CSO!!zQdO,5\u003CVO!#[Q`O'#FrO!#gQ`O'#IgO!#oQ`O,5\u003C]OOQO-E;g-E;gO!#tQ`O'#IoO\u003C_Q`O,5=iO!#|Q`O,5=iO9oQ`O,5=jO!$RQ`O,5=nO!$WQ`O,5=kO!$]Q`O,5=kO!$bQ`O'#FnO!$xQ`O,5\u003CWO!%TQ`O,5\u003CWO!%WQ`O,5?ZO!%]Q`O,5\u003CWO!%eQ`O,5\u003CbO!%mQdO'#GPO!%{QdO'#InO!&WQdO,5=wO!&`Q`O,5\u003CbO!%WQ`O,5\u003CbO!&hQdO,5\u003CcO!&xQ`O,5\u003CcO!'lQdO,5\u003CqO!)nQdO,5\u003CtO!*OOrO'#HsOOOQ'#It'#ItO*kQaO'#GbOOOQ'#Hs'#HsO!*pOrO,5\u003CwOOQS,5\u003Cw,5\u003CwO!*wQaO,5=OO!+OQ`O,5=QO!+WQeO,5=VO!+bQ`O,5=XO!+gQaO'#GoO!+WQeO,5=YO9yQaO'#GrO!+WQeO,5=]O!&WQdO,5=`O(tQdO,5=aOOQ#u,5=a,5=aO(tQdO,5=bOOQ#u,5=b,5=bO(tQdO,5=cOOQ#u,5=c,5=cO!+nQ`O,5=dO!+vQ`O,5=fO!+{QdO'#IvOOQS'#Iv'#IvO!&WQdO,5=gO>UQaO,5=hO!-eQ`O'#F}O!-jQdO'#IlO!&WQdO,5=iOOQ#u,5=j,5=jO!-uQ`O,5=lO!-xQ`O,5=mO!-}Q`O,5=nO!.YQdO,5=qOOQ#u,5=q,5=qO!.eQ`O,5=rO!.eQ`O,5=rO!.mQdO'#IwO!.{Q`O'#HXO!&WQdO,5=rO!/ZQ`O,5=rO!/fQdO'#IYO!&WQdO,5=vOOQ#u-E;_-E;_O!1RQ`O,5=kOOO#u,5:^,5:^O!1^O#|O,5:^OOO#u-E;^-E;^OOOO,5>p,5>pOOQ#y1G0S1G0SO!1fQ`O1G0XO*kQaO1G0XO!2xQ`O1G0pOOQS1G0p1G0pO!4[Q`O1G0pOOQS'#I_'#I_O*kQaO'#I_OOQS1G0q1G0qO!4cQ`O'#IaO!7lQ`O'#E}O!7yQaO'#EuOOQO'#Ia'#IaO!8TQ`O'#I`O!8]Q`O,5;_OOQS'#FQ'#FQOOQS1G1U1G1UO!8bQdO1G1]O!:dQdO1G1]O!\u003CPQdO1G1]O!=lQdO1G1]O!?XQdO1G1]O!@tQdO1G1]O!BaQdO1G1]O!C|QdO1G1]O!EiQdO1G1]O!GUQdO1G1]O!HqQdO1G1]O!J^QdO1G1]O!KyQdO1G1]O!MfQdO1G1]O# RQdO1G1]O#!nQdO1G1]OOQT1G0^1G0^O!%WQ`O,5\u003CWO#$ZQaO'#EXOOQS1G0Z1G0ZO#$bQ`O,5:yOFuQaO,5:yO#$gQaO,5:}O#$nQdO,5:{O#&jQdO,5>wO#(fQaO'#HdO#(vQ`O,5>vOOQS1G0d1G0dO#)OQ`O1G0dO#)TQ`O'#I^O#*mQ`O'#I^O#*uQ`O,5;ROIbQaO,5;ROOQS1G0u1G0uPOQO'#E}'#E}O#+fQdO1G1RO0aQ`O'#HgO#-hQtO,5;cO#.YQaO1G0|OOQS,5;e,5;eO#0iQtO,5;gO#0vQdO1G0cO*kQaO1G0cO#2cQdO1G1YO#4OQdO1G1[OOQO,5\u003C^,5\u003C^O#4`Q`O'#HjO#4nQ`O,5?ROOQO1G1w1G1wO#4vQ`O,5?ZO!&WQdO1G3TO\u003C_Q`O1G3TOOQ#u1G3U1G3UO#4{Q`O1G3YO!1RQ`O1G3VO#5WQ`O1G3VO#5]QpO'#FoO#5kQ`O'#FoO#5{Q`O'#FoO#6WQ`O'#FoO#6`Q`O'#FsO#6eQ`O'#FtOOQO'#If'#IfO#6lQ`O'#IeO#6tQ`O,5\u003CYOOQS1G1r1G1rO0aQ`O1G1rO#6yQ`O1G1rO#7OQ`O1G1rO!%WQ`O1G4uO#7ZQdO1G4uO!%WQ`O1G1rO#7iQ`O1G1|O!%WQ`O1G1|O9yQaO,5\u003CkO#7qQdO'#HqO#8PQdO,5?YOOQ#u1G3c1G3cO*kQaO1G1|O0aQ`O1G1|O#8[QdO1G1}O7RQ`O'#FyO7RQ`O'#FzO#:nQ`O'#F{OOQS1G1}1G1}O!-xQ`O1G1}O!1UQ`O1G1}O!1RQ`O1G1}O#;eO`O,5\u003CxO#;jO`O,5\u003CxO#;uO!bO,5\u003CyO#\u003CTQ`O,5\u003C|OOOQ-E;q-E;qOOQS1G2c1G2cO#\u003C[QaO'#GeO#\u003CuQ$VO1G2jO#AuQ`O1G2jO#BQQ`O'#GgO#B]Q`O'#GjOOQ#u1G2l1G2lO#BhQ`O1G2lOOQ#u'#Gl'#GlOOQ#u'#Iu'#IuOOQ#u1G2q1G2qO#BmQ`O1G2qO,zQ`O1G2sO#BrQaO,5=ZO#ByQ`O,5=ZOOQ#u1G2t1G2tO#COQ`O1G2tO#CTQ`O,5=^OOQ#u1G2w1G2wO#DgQ`O1G2wOOQ#u1G2z1G2zOOQ#u1G2{1G2{OOQ#u1G2|1G2|OOQ#u1G2}1G2}O#DlQ`O'#HxO9oQ`O'#HxO#DqQ$VO1G3OO#IwQ`O1G3QO9yQaO'#HwO#I|QdO,5=[OOQ#u1G3R1G3RO#JXQ`O1G3SO9yQaO,5\u003CiO#J^QdO'#HpO#JlQdO,5?WOOQ#u1G3T1G3TOOQ#u1G3W1G3WO!-xQ`O1G3WOOQ#u1G3X1G3XO#KfQ`O'#HTOOQ#u1G3Y1G3YO#KmQ`O1G3YO0aQ`O1G3YOOQ#u1G3]1G3]O!&WQdO1G3^O#KrQ`O1G3^O#KzQdO'#HzO#L]QdO,5?cO#LhQ`O,5?cO#LmQ`O'#HYO7RQ`O'#HYO#LxQ`O'#IxO#MQQ`O,5=sOOQ#u1G3^1G3^O!.eQ`O1G3^O!.eQ`O1G3^O#MVQeO'#HbO#MgQdO,5>tOOQ#u1G3b1G3bOOQ#u1G3V1G3VO!-xQ`O1G3VO!1UQ`O1G3VOOO#u1G/x1G/xO*kQaO7+%sO#MuQdO7+%sOOQS7+&[7+&[O$ bQ`O,5>yO>UQaO,5;`O$ iQ`O,5;aO$#OQaO'#HfO$#YQ`O,5>zOOQS1G0y1G0yO$#bQ`O'#EYO$#gQ`O'#IXO$#oQ`O,5:sOOQS1G0e1G0eO$#tQ`O1G0eO$#yQ`O1G0iO9yQaO1G0iOOQO,5>O,5>OOOQO-E;b-E;bOOQS7+&O7+&OO>UQaO,5;SO$%`QaO'#HeO$%jQ`O,5>xOOQS1G0m1G0mO$%rQ`O1G0mOOQS,5>R,5>ROOQS-E;e-E;eO$%wQdO7+&hO$'yQtO1G1RO$(WQdO7+%}OOQS1G0i1G0iOOQO,5>U,5>UOOQO-E;h-E;hOOQ#u7+(o7+(oO!&WQdO7+(oOOQ#u7+(t7+(tO#KmQ`O7+(tO0aQ`O7+(tOOQ#u7+(q7+(qO!-xQ`O7+(qO!1UQ`O7+(qO!1RQ`O7+(qO$)sQ`O,5\u003CZO$*OQ`O,5\u003CZO$*WQ`O,5\u003C_O$*]QpO,5\u003CZO>UQaO,5\u003CZOOQO,5\u003C_,5\u003C_O$*kQpO,5\u003C`O$*sQ`O,5\u003C`O$+OQ`O'#HkO$+iQ`O,5?POOQS1G1t1G1tO$+qQpO7+'^O$+yQ`O'#FuO$,UQ`O7+'^OOQS7+'^7+'^O0aQ`O7+'^O#6yQ`O7+'^O$,^QdO7+*aO0aQ`O7+*aO$,lQ`O7+'^O*kQaO7+'hO0aQ`O7+'hO$,wQ`O7+'hO$-PQdO1G2VOOQS,5>],5>]OOQS-E;o-E;oO$.iQdO7+'hO$.yQpO7+'hO$/RQdO'#IiOOQO,5\u003Ce,5\u003CeOOQO,5\u003Cf,5\u003CfO$/dQpO'#GOO$/lQ`O'#GOOOQO'#Ik'#IkOOQO'#Ho'#HoO$0]Q`O'#GOO\u003C_Q`O'#F|O!&WQdO'#GOO!.YQdO'#GQO7RQ`O'#GROOQO'#Ij'#IjOOQO'#Hn'#HnO$0yQ`O,5\u003CgOOQ#y,5\u003Cg,5\u003CgOOQS7+'i7+'iO!-xQ`O7+'iO!1UQ`O7+'iOOOQ1G2d1G2dO$1pO`O1G2dO$1uO!bO1G2eO$2TO`O'#G`O$2YO`O1G2eOOOQ1G2h1G2hO$2_QaO,5=PO,zQ`O'#HtO$2xQ$VO7+(UOhQaO7+(UO,zQ`O'#HuO$7xQ`O7+(UO!&WQdO7+(UO$8TQ`O7+(UO$8YQaO'#GhO$:iQ`O'#GiOOQO'#Hv'#HvO$:qQ`O,5=ROOQ#u,5=R,5=RO$:|Q`O,5=UO!&WQdO7+(WO!&WQdO7+(]O!&WQdO7+(_O$;XQaO1G2uO$;`Q`O1G2uO$;eQaO1G2uO!&WQdO7+(`O9yQaO1G2xO!&WQdO7+(cO0aQ`O'#GyO9oQ`O,5>dOOQ#u,5>d,5>dOOQ#u-E;v-E;vO$;lQaO7+(lO$\u003CTQdO,5>cOOQS-E;u-E;uO!&WQdO7+(nO$=mQdO1G2TOOQS,5>[,5>[OOQS-E;n-E;nOOQ#u7+(r7+(rO$?nQ`O'#GQO$?uQ`O'#GQO$@ZQ`O'#HUOOQO'#Hy'#HyO$@`Q`O,5=oOOQ#u,5=o,5=oO$@gQpO7+(tOOQ#u7+(x7+(xO!&WQdO7+(xO$@rQdO,5>fOOQS-E;x-E;xO$AQQdO1G4}O$A]Q`O,5=tO$AbQ`O,5=tO$AmQ`O'#H{O$BRQ`O,5?dOOQS1G3_1G3_O#KrQ`O7+(xO$BZQdO,5=|OOQS-E;`-E;`O$CvQdO\u003C\u003CI_OOQS1G4e1G4eO$EcQ`O1G0zOOQO,5>Q,5>QOOQO-E;d-E;dO$8YQaO,5:tO$FxQaO'#HcO$GVQ`O,5>sOOQS1G0_1G0_OOQS7+&P7+&PO$G_Q`O7+&TO$HtQ`O1G0nO$JZQ`O,5>POOQO,5>P,5>POOQO-E;c-E;cOOQS7+&X7+&XOOQS7+&T7+&TOOQ#u\u003C\u003CLZ\u003C\u003CLZOOQ#u\u003C\u003CL`\u003C\u003CL`O$@gQpO\u003C\u003CL`OOQ#u\u003C\u003CL]\u003C\u003CL]O!-xQ`O\u003C\u003CL]O!1UQ`O\u003C\u003CL]O>UQaO1G1uO$KsQ`O1G1uO$LOQ`O1G1yOOQO1G1y1G1yO$LTQ`O1G1uO$L]Q`O1G1uO$MrQ`O1G1zO>UQaO1G1zOOQO,5>V,5>VOOQO-E;i-E;iOOQS\u003C\u003CJx\u003C\u003CJxO$M}Q`O'#IhO$NVQ`O'#IhO$N[Q`O,5\u003CaO0aQ`O\u003C\u003CJxO$+qQpO\u003C\u003CJxO$NaQ`O\u003C\u003CJxO0aQ`O\u003C\u003CM{O$NiQtO\u003C\u003CM{O#6yQ`O\u003C\u003CJxO$NwQdO\u003C\u003CKSO% XQpO\u003C\u003CKSO*kQaO\u003C\u003CKSO0aQ`O\u003C\u003CKSO% aQdO'#HmO% xQdO,5?TO!&WQdO,5\u003CjO$/dQpO,5\u003CjO%!ZQ`O,5\u003CjO\u003C_Q`O,5\u003ChO!.YQdO,5\u003ClOOQO-E;m-E;mO!&WQdO,5\u003ChOOQO,5\u003Cj,5\u003CjOOQO,5\u003Cl,5\u003ClO%!tQdO,5\u003CmOOQO-E;l-E;lOOQ#y1G2R1G2ROOQS\u003C\u003CKT\u003C\u003CKTO!-xQ`O\u003C\u003CKTOOOQ7+(O7+(OO%#PO`O7+(POOOO,5\u003Cz,5\u003CzOOOQ7+(P7+(POhQaO,5>`OOQ#u-E;r-E;rOhQaO\u003C\u003CKpOOQ#u\u003C\u003CKp\u003C\u003CKpO$8TQ`O,5>aOOQO-E;s-E;sO!&WQdO\u003C\u003CKpO$8TQ`O\u003C\u003CKpO%#UQ`O\u003C\u003CKpO%#ZQ`O,5=SO%$pQaO,5=TOOQO-E;t-E;tOOQ#u1G2m1G2mOOQ#u\u003C\u003CKr\u003C\u003CKrOOQ#u\u003C\u003CKw\u003C\u003CKwOOQ#u\u003C\u003CKy\u003C\u003CKyOOQT7+(a7+(aO%%QQ`O7+(aO%%VQaO7+(aO%%^Q`O7+(aOOQ#u\u003C\u003CKz\u003C\u003CKzO%%cQ`O7+(dO%&xQ`O7+(dOOQ#u\u003C\u003CK}\u003C\u003CK}O%&}QpO,5=eOOQ#u1G4O1G4OO%'YQ`O\u003C\u003CLWOOQ#u\u003C\u003CLY\u003C\u003CLYO$?uQ`O,5\u003ClO%'_Q`O,5=pO%'dQdO,5=pOOQO-E;w-E;wOOQ#u1G3Z1G3ZO#KmQ`O\u003C\u003CL`OOQ#u\u003C\u003CLd\u003C\u003CLdO%'oQ`O1G4QO%'tQdO7+*iOOQO1G3`1G3`O%(PQ`O1G3`O%(UQ`O'#HZO7RQ`O'#HZOOQO,5>g,5>gOOQO-E;y-E;yO!&WQdO\u003C\u003CLdO%(aQ`O1G0`OOQO,5=},5=}OOQO-E;a-E;aO>UQaO,5;TOOQ#uANAzANAzO#KmQ`OANAzOOQ#uANAwANAwO!-xQ`OANAwO%)vQ`O7+'aO>UQaO7+'aOOQO7+'e7+'eO%+]Q`O7+'aO%+hQ`O7+'eO>UQaO7+'fO%+mQ`O7+'fO%-SQ`O'#HlO%-bQ`O,5?SO%-bQ`O,5?SOOQO1G1{1G1{O$+qQpOAN@dOOQSAN@dAN@dO0aQ`OAN@dO%-jQtOANCgO%-xQ`OAN@dO*kQaOAN@nO%.QQdOAN@nO%.bQpOAN@nOOQS,5>X,5>XOOQS-E;k-E;kOOQO1G2U1G2UO!&WQdO1G2UO$/dQpO1G2UO\u003C_Q`O1G2SO!.YQdO1G2WO!&WQdO1G2SOOQO1G2W1G2WOOQO1G2S1G2SO%.jQaO'#GSOOQO1G2X1G2XOOQSAN@oAN@oOOOQ\u003C\u003CKk\u003C\u003CKkOOQ#u1G3z1G3zOOQ#uANA[ANA[OOQO1G3{1G3{O%0iQ`OANA[O!&WQdOANA[O%0nQaO1G2nO%1OQaO1G2oOOQT\u003C\u003CK{\u003C\u003CK{O%1`Q`O\u003C\u003CK{O%1eQaO\u003C\u003CK{O*kQaO,5=_OOQT\u003C\u003CLO\u003C\u003CLOOOQO1G3P1G3PO%1lQ`O1G3PO!+WQeOANArO%1qQdO1G3[OOQO1G3[1G3[O%1|Q`O1G3[OOQS7+)l7+)lOOQO7+(z7+(zO%2UQ`O,5=uO%2ZQ`O,5=uOOQ#uANBOANBOO%2fQ`O1G0oOOQ#uG27fG27fOOQ#uG27cG27cO%3{Q`O\u003C\u003CJ{O>UQaO\u003C\u003CJ{OOQO\u003C\u003CKP\u003C\u003CKPO%5bQ`O\u003C\u003CKQOOQO,5>W,5>WO%6wQ`O,5>WOOQO-E;j-E;jO%6|Q`O1G4nOOQSG26OG26OO$+qQpOG26OO0aQ`OG26OO%7UQdOG26YO*kQaOG26YOOQO7+'p7+'pO!&WQdO7+'pO!&WQdO7+'nOOQO7+'r7+'rOOQO7+'n7+'nO%7fQ`OLD+tO%8uQ`O'#E}O%9PQ`O'#IZO!&WQdO'#HrO%:|QaO,5\u003CnOOQO,5\u003Cn,5\u003CnO!&WQdOG26vOOQ#uG26vG26vO%\u003C{QaO7+(YOOQTANAgANAgO%=]Q`OANAgO%=bQ`O1G2yOOQO7+(k7+(kOOQ#uG27^G27^O%=iQ`OG27^OOQO7+(v7+(vO%=nQ`O7+(vO!&WQdO7+(vOOQO1G3a1G3aO%=vQ`O1G3aO%={Q`OAN@gOOQO1G3r1G3rOOQSLD+jLD+jO$+qQpOLD+jO%?bQdOLD+tOOQO\u003C\u003CK[\u003C\u003CK[OOQO\u003C\u003CKY\u003C\u003CKYO%?rQ`O,5\u003CoO%?wQ`O,5\u003CpOOQP,5>^,5>^OOQP-E;p-E;pOOQO1G2Y1G2YOOQ#uLD,bLD,bOOQTG27RG27RO!&WQdOLD,xO!&WQdO\u003C\u003CLbOOQO\u003C\u003CLb\u003C\u003CLbOOQO7+({7+({OOQS!$( U!$( UOOQS1G2Z1G2ZOOQS1G2[1G2[O%@PQdO1G2[OOQ#u!$(!d!$(!dOOQOANA|ANA|OOQS7+'v7+'vO%@[Q`O'#E{O%@[Q`O'#E{O%@aQ`O,5;gO%@fQdO,5\u003CcO%BbQaO,5:}O*kQaO1G0iO%BiQaO'#FwO#.YQaO'#GVO#.YQaO'#GYO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO#.YQaO,5;qO%BpQdO'#I]O%D`QdO'#I]O#.YQaO'#EaO#.YQaO'#I]O%FbQaO,5:wO#.YQaO,5;nO#.YQaO,5;pO%FiQdO,5\u003CPO%HeQdO,5\u003CQO%JaQdO,5\u003CRO%L]QdO,5\u003CSO%NXQdO,5\u003CSO%NoQdO,5\u003CVO&!kQdO,5\u003CtO#.YQaO1G0XO&$gQdO1G1]O&&cQdO1G1]O&(_QdO1G1]O&*ZQdO1G1]O&,VQdO1G1]O&.RQdO1G1]O&/}QdO1G1]O&1yQdO1G1]O&3uQdO1G1]O&5qQdO1G1]O&7mQdO1G1]O&9iQdO1G1]O&;eQdO1G1]O&=aQdO1G1]O&?]QdO1G1]O&AXQdO,5:{O&CTQdO,5>wO&EPQdO1G0cO#.YQaO1G0cO&F{QdO1G1YO&HwQdO1G1[O#.YQaO1G1|O#.YQaO7+%sO&JsQdO7+%sO&LoQdO7+%}O#.YQaO7+'hO&NkQdO7+'hO'!gQdO\u003C\u003CI_O'$cQdO\u003C\u003CKSO#.YQaO\u003C\u003CKSO#.YQaOAN@nO'&_QdOAN@nO'(ZQdOG26YO#.YQaOG26YO'*VQdOLD+tO',RQaO,5:}O'.QQaO1G0iO'/|QdO'#IWO'0aQeO'#FUO'4aQeO'#FUO#.YQaO'#FeO'.QQaO'#FeO#.YQaO'#FfO'.QQaO'#FfO#.YQaO'#FgO'.QQaO'#FgO#.YQaO'#FhO'.QQaO'#FhO#.YQaO'#FhO'.QQaO'#FhO#.YQaO'#FkO'.QQaO'#FkO'8gQaO,5:mO'8nQ`O,5\u003CbO'8vQ`O1G0XO'.QQaO1G0|O':YQ`O1G1|O':bQ`O7+'hO':jQpO7+'hO':rQpO\u003C\u003CKSO':zQpOAN@nO';SQaO'#FwO'.QQaO'#GVO'.QQaO'#GYO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO,5;qO'.QQaO'#EaO'.QQaO'#I]O'=RQaO,5:wO'.QQaO,5;nO'.QQaO,5;pO'?QQdO,5\u003CPO'ASQdO,5\u003CQO'CUQdO,5\u003CRO'EWQdO,5\u003CSO'GYQdO,5\u003CSO'GvQdO,5\u003CVO'IxQdO,5\u003CtO'.QQaO1G0XO'KzQdO1G1]O'M|QdO1G1]O(!OQdO1G1]O($QQdO1G1]O(&SQdO1G1]O((UQdO1G1]O(*WQdO1G1]O(,YQdO1G1]O(.[QdO1G1]O(0^QdO1G1]O(2`QdO1G1]O(4bQdO1G1]O(6dQdO1G1]O(8fQdO1G1]O(:hQdO1G1]O(\u003CjQdO,5:{O(>lQdO,5>wO(@nQdO1G0cO'.QQaO1G0cO(BpQdO1G1YO(DrQdO1G1[O'.QQaO1G1|O'.QQaO7+%sO(FtQdO7+%sO(HvQdO7+%}O'.QQaO7+'hO(JxQdO7+'hO(LzQdO\u003C\u003CI_O(N|QdO\u003C\u003CKSO'.QQaO\u003C\u003CKSO'.QQaOAN@nO)#OQdOAN@nO)%QQdOG26YO'.QQaOG26YO)'SQdOLD+tO))UQaO,5:}O#.YQaO1G0iO))]Q`O'#FvO))eQpO,5;bO))mQ`O,5\u003CbO!%WQ`O,5\u003CbO!%WQ`O1G1|O0aQ`O1G1|O0aQ`O7+'hO0aQ`O\u003C\u003CKSO))uQdO,5\u003CcO)+wQdO'#I]O)-vQdO'#IWO).aQaO,5:mO).hQ`O,5\u003CbO).pQ`O1G0XO)0SQ`O1G1|O)0[Q`O7+'hO)0dQpO7+'hO)0lQpO\u003C\u003CKSO)0tQpOAN@nO0aQ`O'#EvO9yQaO'#FeO9yQaO'#FfO9yQaO'#FgO9yQaO'#FhO9yQaO'#FhO9yQaO'#FkO)0|QaO'#FwO9yQaO'#GVO9yQaO'#GYO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO9yQaO,5;qO)1TQ`O'#FlO*kQaO'#EaO*kQaO'#I]O)1]QaO,5:wO9yQaO,5;nO9yQaO,5;pO)1dQdO,5\u003CPO)3`QdO,5\u003CQO)5[QdO,5\u003CRO)7WQdO,5\u003CSO)9SQdO,5\u003CSO)9jQdO,5\u003CVO);fQdO,5\u003CcO)=bQdO,5\u003CtO)?^Q`O'#IvO)@sQ`O'#IYO9yQaO1G0XO)BYQdO1G1]O)DUQdO1G1]O)FQQdO1G1]O)G|QdO1G1]O)IxQdO1G1]O)KtQdO1G1]O)MpQdO1G1]O* lQdO1G1]O*#hQdO1G1]O*%dQdO1G1]O*'`QdO1G1]O*)[QdO1G1]O*+WQdO1G1]O*-SQdO1G1]O*/OQdO1G1]O*0zQaO,5:}O*1RQdO,5:{O*1cQdO,5>wO*1sQaO'#HdO*2TQ`O,5>vO*2]QdO1G0cO9yQaO1G0cO*4XQdO1G1YO*6TQdO1G1[O9yQaO1G1|O>UQaO'#HwO*8PQ`O,5=[O*8XQaO'#HbO*8cQ`O,5>tO9yQaO7+%sO*8kQdO7+%sO*:gQ`O1G0iO>UQaO1G0iO*;|QdO7+%}O9yQaO7+'hO*=xQdO7+'hO*?tQ`O,5>cO*AZQ`O,5=|O*BpQdO\u003C\u003CI_O*DlQ`O7+&TO*FRQdO\u003C\u003CKSO9yQaO\u003C\u003CKSO9yQaOAN@nO*G}QdOAN@nO*IyQdOG26YO9yQaOG26YO*KuQdOLD+tO*MqQaO,5:}O9yQaO1G0iO*MxQdO'#I]O*NcQ`O'#FvO*NkQ`O,5\u003CbO!%WQ`O,5\u003CbO!%WQ`O1G1|O0aQ`O1G1|O0aQ`O7+'hO0aQ`O\u003C\u003CKSO*NsQdO'#IWO+ ^QeO'#FUO+ zQaO'#FUO+#sQaO'#FUO+%`QaO'#FUO>UQaO'#FeO>UQaO'#FfO>UQaO'#FgO>UQaO'#FhO>UQaO'#FhO>UQaO'#FkO+'XQaO'#FwO>UQaO'#GVO>UQaO'#GYO+'`QaO,5:mO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO>UQaO,5;qO+'gQ`O'#I]O$8YQaO'#EaO+)PQaOG26YO$8YQaO'#I]O+*{Q`O'#I[O++TQaO,5:wO>UQaO,5;nO>UQaO,5;pO++[Q`O,5\u003CPO+,wQ`O,5\u003CQO+.dQ`O,5\u003CRO+0PQ`O,5\u003CSO+1lQ`O,5\u003CSO+3XQ`O,5\u003CVO+4tQ`O,5\u003CbO+4|Q`O,5\u003CcO+6iQ`O,5\u003CtO+8UQ`O1G0XO>UQaO1G0XO+9hQ`O1G1]O+;TQ`O1G1]O+\u003CpQ`O1G1]O+>]Q`O1G1]O+?xQ`O1G1]O+AeQ`O1G1]O+CQQ`O1G1]O+DmQ`O1G1]O+FYQ`O1G1]O+GuQ`O1G1]O+IbQ`O1G1]O+J}Q`O1G1]O+LjQ`O1G1]O+NVQ`O1G1]O, rQ`O1G1]O,#_Q`O1G0cO>UQaO1G0cO,$zQ`O1G1YO,&gQ`O1G1[O,(SQ`O1G1|O>UQaO1G1|O>UQaO7+%sO,([Q`O7+%sO,)wQ`O7+%}O>UQaO7+'hO,+dQ`O7+'hO,+lQ`O7+'hO,-XQpO7+'hO,-aQ`O\u003C\u003CI_O,.|Q`O\u003C\u003CKSO,0iQpO\u003C\u003CKSO>UQaO\u003C\u003CKSO>UQaOAN@nO,0qQ`OAN@nO,2^QpOAN@nO,2fQ`OG26YO>UQaOG26YO,4RQ`OLD+tO,5nQaO,5:}O>UQaO1G0iO,5uQ`O'#I]O$8YQaO'#FeO$8YQaO'#FfO$8YQaO'#FgO$8YQaO'#FhO$8YQaO'#FhO+)PQaO'#FhO$8YQaO'#FkO,6SQaO'#FwO,6ZQaO'#FwO$8YQaO'#GVO+)PQaO'#GVO$8YQaO'#GYO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO$8YQaO,5;qO+)PQaO,5;qO,8YQ`O'#FlO>UQaO'#EaO>UQaO'#I]O,8bQaO,5:wO,8iQaO,5:wO$8YQaO,5;nO+)PQaO,5;nO$8YQaO,5;pO,:hQ`O,5\u003CPO,\u003CTQ`O,5\u003CQO,=pQ`O,5\u003CRO,?]Q`O,5\u003CSO,@xQ`O,5\u003CSO,BeQ`O,5\u003CSO,CtQ`O,5\u003CVO,EaQ`O,5\u003CcO%7fQ`O,5\u003CcO,F|Q`O,5\u003CtO$8YQaO1G0XO+)PQaO1G0XO,HiQ`O1G1]O,JUQ`O1G1]O,KeQ`O1G1]O,MQQ`O1G1]O,NaQ`O1G1]O- |Q`O1G1]O-#]Q`O1G1]O-$xQ`O1G1]O-&XQ`O1G1]O-'tQ`O1G1]O-)TQ`O1G1]O-*pQ`O1G1]O-,PQ`O1G1]O--lQ`O1G1]O-.{Q`O1G1]O-0hQ`O1G1]O-1wQ`O1G1]O-3dQ`O1G1]O-4sQ`O1G1]O-6`Q`O1G1]O-7oQ`O1G1]O-9[Q`O1G1]O-:kQ`O1G1]O-\u003CWQ`O1G1]O-=gQ`O1G1]O-?SQ`O1G1]O-@cQ`O1G1]O-BOQ`O1G1]O-C_Q`O1G1]O-DzQ`O1G1]O-FZQ`O,5:{O-GvQ`O,5>wO-IcQ`O1G0cO-KOQ`O1G0cO$8YQaO1G0cO+)PQaO1G0cO-L_Q`O1G1YO-MzQ`O1G1YO. ZQ`O1G1[O$8YQaO1G1|O$8YQaO7+%sO+)PQaO7+%sO.!vQ`O7+%sO.$cQ`O7+%sO.%rQ`O7+%}O.'_Q`O7+%}O$8YQaO7+'hO.(nQ`O7+'hO.*ZQ`O\u003C\u003CI_O.+vQ`O\u003C\u003CI_O.-VQ`O\u003C\u003CKSO$8YQaO\u003C\u003CKSO$8YQaOAN@nO..rQ`OAN@nO.0_Q`OG26YO$8YQaOG26YO.1zQ`OLD+tO.3gQaO,5:}O.3nQaO,5:}O$8YQaO1G0iO+)PQaO1G0iO.5mQ`O'#I]O.7PQ`O'#I]O.:fQ`O'#IWO.:vQ`O'#FvO.;OQaO,5:mO.;VQ`O,5\u003CbO.;_Q`O,5\u003CbO!%WQ`O,5\u003CbO.;gQ`O1G0XO.\u003CyQ`O,5:{O.>fQ`O,5>wO.@RQ`O1G1|O!%WQ`O1G1|O0aQ`O1G1|O0aQ`O7+'hO.@ZQ`O7+'hO.@cQpO7+'hO.@kQpO\u003C\u003CKSO0aQ`O\u003C\u003CKSO.@sQpOAN@nO.@{Q`O'#IWO.A]Q`O'#IWO.CSQaO,5:mO.CZQaO,5:mO.CbQ`O,5\u003CbO.CjQ`O7+'hO.CrQ`O1G0XO.EUQ`O1G0XO.FhQ`O1G1|O.FpQ`O7+'hO.FxQpO7+'hO.GQQpOAN@nO.GYQpO\u003C\u003CKSO.GbQpOAN@nO.GjQ`O'#FvO.GrQ`O'#FlO.GzQ`O,5\u003CbO!%WQ`O,5\u003CbO!%WQ`O1G1|O0aQ`O1G1|O0aQ`O7+'hO0aQ`O\u003C\u003CKSO.HSQ`O'#FvO.H[Q`O,5\u003CbO.HdQ`O,5\u003CbO!%WQ`O,5\u003CbO!%WQ`O1G1|O!%WQ`O1G1|O0aQ`O1G1|O0aQ`O\u003C\u003CKSO0aQ`O7+'hO0aQ`O\u003C\u003CKSO.HlQ`O'#FlO.HtQ`O'#FlO.H|Q`O'#Fl\\\",stateData:\\\".Ic~O!dOS!eOS&vOS!gQQ~O!iTO&wRO~OPgOQ|OS!lOU^OW}OX!XO[mO]!_O^!WO`![Oa!SOb!]Ok!dOm!lOowOp!TOq!UOsuOt!gOu!VOv!POxkOykO|!bO}`O!O]O!P!eO!QxO!R}O!TpO!UlO!VlO!W!YO!X!QO!YzO!Z!cO![!ZO!]!^O!^!fO!`!`O!a!RO!cjO!mWO!oXO!sYO!y[O#W_O#bhO#daO#ebO#peO$ToO$]nO$^oO$aqO$drO$l!kO$zyO${!OO$}}O%O}O%V|O'g{O~O!g!mO~O&wRO!i!hX&p!hX&t!hX~O!i!pO~O!d!qO!e!qO!g!mO&t!tO&v!qO~PhO!n!vO~PhOT'VXz'VX!S'VX!b'VX!m'VX!o'VX!v'VX!y'VX#S'VX#W'VX#`'VX#a'VX#p#qX#s'VX#z'VX#{'VX#|'VX#}'VX$O'VX$Q'VX$R'VX$S'VX$T'VX$U'VX$V'VX$W'VX$z'VX&s'VX~O!q!xO~P&sOT#TOz#RO!S#UO!b#VO!m#cO!o!{O!v!yO!y!}O#S#QO#W!zO#`!|O#a!|O#s#PO#z#SO#{#WO#|#XO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dO&s#cO~OPgOQ|OU^OW}O[mOowOs#hOxkOykO}`O!O]O!QxO!R}O!TpO!UlO!VlO!YzO!cjO!s#gO!y[O#W_O#bhO#daO#ebO#peO$ToO$]nO$^oO$aqO$zyO${!OO$}}O%O}O%V|O'g{O~O!y[O~O!y#kO~OP6]OQ|OU^OW}O[6`Oo=YOs#hOx6^Oy6^O}`O!O]O!Q6dO!R}O!T6cO!U6_O!V6_O!Y6fO!c8fO!s#gO!y[O#S#oO#U#nO#W_O#bhO#daO#ebO#peO$T6bO$]6aO$^6bO$aqO$z6eO${!OO$}}O%O}O%V|O'g{O#X'OP~O!}#sO~P-UO!y#tO~O#b#vO#daO#ebO~O#p#xO~O!s#yO~OU$PO!R$PO!s$OO!v#}O#p2XO~OT&zXz&zX!S&zX!b&zX!m&zX!o&zX!v&zX!y&zX#S&zX#W&zX#`&zX#a&zX#s&zX#z&zX#{&zX#|&zX#}&zX$O&zX$Q&zX$R&zX$S&zX$T&zX$U&zX$V&zX$W&zX$z&zX&s&zX!x&zX!n&zX~O#u$RO#w$SO~P0rOP6]OQ|OU^OW}O[6`Oo=YOs#hOx6^Oy6^O}`O!O]O!Q6dO!R}O!T6cO!U6_O!V6_O!Y6fO!c8fO!s#gO!y[O#W_O#bhO#daO#ebO#peO$T6bO$]6aO$^6bO$aqO$z6eO${!OO$}}O%O}O%V|O'g{OT#xXz#xX!S#xX!b#xX!m#xX!o#xX!v#xX#`#xX#a#xX#s#xX#z#xX#{#xX#|#xX#}#xX$O#xX$Q#xX$R#xX$S#xX$U#xX$V#xX$W#xX&s#xX!x#xX!n#xX~Or$UO#S6yO#U6xO~P2yO!s#gO#peO~OS$gO]$bOk$eOm$gOs$aO!`$cO$drO$l$fO~O!s$kO!y$hO#S$jO~Oo$mOs$lO#b$nO~O!y$hO#S$rO~O$l$tO~P*kOR$zO!o$yO#b$xO#e$yO&q$zO~O'f$|O~P8lO!y%RO~O!y%TO~O!s%VO~O!m#cO&s#cO~P*kO!oXO~O!y%_O~OP6]OQ|OU^OW}O[6`Oo=YOs#hOx6^Oy6^O}`O!O]O!Q6dO!R}O!T6cO!U6_O!V6_O!Y6fO!c8fO!s#gO!y[O#W_O#bhO#daO#ebO#peO$T6bO$]6aO$^6bO$aqO$z6eO${!OO$}}O%O}O%V|O'g{O~O!y%cO~O!s%dO~O]$bO~O!s%hO~O!s%iO~O!s%jO~O!oXO!s#gO#peO~O]%rOs%rO!o%pO!s#gO#p%nO~O!s%vO~O!i%wO&t%wO&wRO~O&t%zO~PhO!n%{O~PhOPgOQ|OU^OW}O[8lOo=yOs#hOx8jOy8jO}`O!O]O!Q8pO!R}O!T8oO!U8kO!V8kO!Y8rO!c8iO!s#gO!y[O#W_O#bhO#daO#ebO#peO$T8nO$]8mO$^8nO$aqO$z8qO${!OO$}}O%O}O%V|O'g{O~O!q%}O~P>UO#X&PO~P>UO!o&SO!s&RO#b&RO~OPgOQ|OU^OW}O[8lOo=yOs#hOx8jOy8jO}`O!O]O!Q8pO!R}O!T8oO!U8kO!V8kO!Y8rO!c8iO!s&VO!y[O#U&WO#W_O#bhO#daO#ebO#peO$T8nO$]8mO$^8nO$aqO$z8qO${!OO$}}O%O}O%V|O'g{O~O!x'SP~PAOO!s&[O#b&[O~OT#TOz#RO!S#UO!b#VO!o!{O!v!yO!y!}O#S#QO#W!zO#`!|O#a!|O#s#PO#z#SO#{#WO#|#XO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dO~O!x&nO~PCqO!x'VX!}'VX#O'VX#X'VX!n'VXV'VX!q'VX#u'VX#w'VXw'VX~P&sO!y$hO#S&oO~Oo$mOs$lO~O!o&pO~O!}&sO#S;dO#U;cO!x'OP~P9yOT6iOz6gO!S6jO!b6kO!o!{O!v8sO!y!}O#S#QO#W!zO#`!|O#a!|O#s#PO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}'PX#X'PX~O#O&tO~PGSO!}&wO#X'OX~O#X&yO~O!}'OO!x'QP~P9yO!n'PO~PCqO!m#oa!o#oa#S#oa#p#qX&s#oa!x#oa#O#oaw#oa~OT#oaz#oa!S#oa!b#oa!v#oa!y#oa#W#oa#`#oa#a#oa#s#oa#z#oa#{#oa#|#oa#}#oa$O#oa$Q#oa$R#oa$S#oa$T#oa$U#oa$V#oa$W#oa$z#oa!}#oa#X#oa!n#oaV#oa!q#oa#u#oa#w#oa~PIpO!s'RO~O!x'UO#l'SO~O!x'VX#l'VX#p#qX#S'VX#U'VX#b'VX!o'VX#O'VXw'VX!m'VX&s'VX~O#S'YO~P*kO!m$Xa&s$Xa!x$Xa!n$Xa~PCqO!m$Ya&s$Ya!x$Ya!n$Ya~PCqO!m$Za&s$Za!x$Za!n$Za~PCqO!m$[a&s$[a!x$[a!n$[a~PCqO!o!{O!y!}O#W!zO#`!|O#a!|O#s#PO$z#dOT$[a!S$[a!b$[a!m$[a!v$[a#S$[a#z$[a#{$[a#|$[a#}$[a$O$[a$Q$[a$R$[a$S$[a$T$[a$U$[a$V$[a$W$[a&s$[a!x$[a!n$[a~Oz#RO~PNyO!m$_a&s$_a!x$_a!n$_a~PCqO!y!}O!}$fX#X$fX~O!}'^O#X'ZX~O#X'`O~O!s$kO#S'aO~O]'cO~O!s'eO~O!s'fO~O$l'gO~O!`'mO#S'kO#U'lO#b'jO$drO!x'XP~P0aO!^'sO!oXO!q'rO~O!s'uO!y$hO~O!y$hO#S'wO~O!y$hO#S'yO~O#u'zO!m$sX!}$sX&s$sX~O!}'{O!m'bX&s'bX~O!m#cO&s#cO~O!q(PO#O(OO~O!m$ka&s$ka!x$ka!n$ka~PCqOl(ROw(SO!o(TO!y!}O~O!o!{O!y!}O#W!zO#`!|O#a!|O#s#PO~OT$yaz$ya!S$ya!b$ya!m$ya!v$ya#S$ya#z$ya#{$ya#|$ya#}$ya$O$ya$Q$ya$R$ya$S$ya$T$ya$U$ya$V$ya$W$ya$z$ya&s$ya!x$ya!}$ya#O$ya#X$ya!n$ya!q$yaV$ya#u$ya#w$ya~P!'WO!m$|a&s$|a!x$|a!n$|a~PCqO#W([O#`(YO#a(YO&r(ZOR&gX!o&gX#b&gX#e&gX&q&gX'f&gX~O'f(_O~P8lO!q(`O~PhO!o(cO!q(dO~O!q(`O&s(gO~PhO!a(kO~O!m(lO~P9yOZ(wOn(xO~O!s(zO~OT6iOz6gO!S6jO!b6kO!v8sO!}({O#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!m'jX&s'jX~P!'WO#u)PO~O!})QO!m'`X&s'`X~Ol(RO!o(TO~Ow(SO!o)WO!q)ZO~O!m#cO!oXO&s#cO~O!o%pO!s#yO~OV)aO!})_O!m'kX&s'kX~O])cOs)cO!s#gO#peO~O!o%pO!s#gO#p)hO~OT6iOz6gO!S6jO!b6kO!v8sO!})iO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!m&|X&s&|X#O&|X~P!'WOl(ROw(SO!o(TO~O!i)oO&t)oO~OT8vOz8tO!S8wO!b8xO!q)pO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#X)rO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO~P!'WO!n)rO~PCqOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x'TX!}'TX~P!'WOT'VXz'VX!S'VX!b'VX!o'VX!v'VX!y'VX#S'VX#W'VX#`'VX#a'VX#p#qX#s'VX#z'VX#{'VX#|'VX#}'VX$O'VX$Q'VX$R'VX$S'VX$T'VX$U'VX$V'VX$W'VX$z'VX~O!q)tO!x'VX!}'VX~P!5xO!x#iX!}#iX~P>UO!})vO!x'SX~O!x)xO~O$z#dOT#yiz#yi!S#yi!b#yi!m#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi$V#yi$W#yi&s#yi!x#yi!}#yi#O#yi#X#yi!n#yi!q#yiV#yi#u#yi#w#yi~P!'WOz#RO#S#QO#z#SO#{#WO#|#XO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi&s#yi!x#yi!n#yi~P!'WOz#RO!v!yO#S#QO#z#SO#{#WO#|#XO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi&s#yi!x#yi!n#yi~P!'WOT#TOz#RO!b#VO!v!yO#S#QO#z#SO#{#WO#|#XO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dO!S#yi!m#yi&s#yi!x#yi!n#yi~P!'WOT#TOz#RO!v!yO#S#QO#z#SO#{#WO#|#XO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dO!S#yi!b#yi!m#yi&s#yi!x#yi!n#yi~P!'WOz#RO#S#QO#|#XO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#z#yi#{#yi&s#yi!x#yi!n#yi~P!'WOz#RO#S#QO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#z#yi#{#yi#|#yi&s#yi!x#yi!n#yi~P!'WOz#RO#S#QO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#z#yi#{#yi#|#yi#}#yi&s#yi!x#yi!n#yi~P!'WOz#RO#S#QO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#z#yi#{#yi#|#yi#}#yi$O#yi&s#yi!x#yi!n#yi~P!'WOz#RO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi&s#yi!x#yi!n#yi~P!'WOz#RO$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi&s#yi!x#yi!n#yi~P!'WOz#RO$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi&s#yi!x#yi!n#yi~P!'WOz#RO$T#`O$V#bO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$U#yi&s#yi!x#yi!n#yi~P!'WOz#RO$V#bO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi&s#yi!x#yi!n#yi~P!'WOz#RO$S#_O$T#`O$V#bO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$U#yi&s#yi!x#yi!n#yi~P!'WOz#RO$W#bO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi$V#yi&s#yi!x#yi!n#yi~P!'WO_)yO~P9yO!x)|O~O#S*PO~P9yOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}#Ta#X#Ta#O#Ta!m#Ta&s#Ta!x#Ta!n#TaV#Ta!q#Ta~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}'Pa#X'Pa#O'Pa!m'Pa&s'Pa!x'Pa!n'PaV'Pa!q'Pa~P!'WO#S#oO#U#nO!}&WX#X&WX~P9yO!}&wO#X'Oa~O#X*SO~OT6iOz6gO!S6jO!b6kO!v8sO!}*UO#O*TO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!x'QX~P!'WO!}*UO!x'QX~O!x*WO~O!m#oi!o#oi#S#oi#p#qX&s#oi!x#oi#O#oiw#oi~OT#oiz#oi!S#oi!b#oi!v#oi!y#oi#W#oi#`#oi#a#oi#s#oi#z#oi#{#oi#|#oi#}#oi$O#oi$Q#oi$R#oi$S#oi$T#oi$U#oi$V#oi$W#oi$z#oi!}#oi#X#oi!n#oiV#oi!q#oi#u#oi#w#oi~P#*zO#l'SO!x#ka#S#ka#U#ka#b#ka!o#ka#O#kaw#ka!m#ka&s#ka~OPgOQ|OU^OW}O[4OOo5xOs#hOx3zOy3zO}`O!O]O!Q2^O!R}O!T4UO!U3|O!V3|O!Y2`O!c3xO!s#gO!y[O#W_O#bhO#daO#ebO#peO$T4SO$]4QO$^4SO$aqO$z2_O${!OO$}}O%O}O%V|O'g{O~O#l#oa#U#oa#b#oa~PIpOz#RO!v!yO#S#QO#z#SO#{#WO#|#XO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT#Pi!S#Pi!b#Pi!m#Pi&s#Pi!x#Pi!n#Pi~P!'WOz#RO!v!yO#S#QO#z#SO#{#WO#|#XO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT#vi!S#vi!b#vi!m#vi&s#vi!x#vi!n#vi~P!'WO!m#xi&s#xi!x#xi!n#xi~PCqO!s#gO#peO!}&^X#X&^X~O!}'^O#X'Za~O!s'uO~Ow(SO!o)WO!q*fO~O!s*jO~O#S*lO#U*mO#b*kO#l'SO~O#S*lO#U*mO#b*kO$drO~P0aO#u*oO!x$cX!}$cX~O#U*mO#b*kO~O#b*pO~O#b*rO~P0aO!}*sO!x'XX~O!x*uO~O!y*wO~O!^*{O!oXO!q*zO~O!q*}O!o'ci!m'ci&s'ci~O!q+QO#O+PO~O#b$nO!m&eX!}&eX&s&eX~O!}'{O!m'ba&s'ba~OT$kiz$ki!S$ki!b$ki!m$ki!o$ki!v$ki!y$ki#S$ki#W$ki#`$ki#a$ki#s$ki#u#fa#w#fa#z$ki#{$ki#|$ki#}$ki$O$ki$Q$ki$R$ki$S$ki$T$ki$U$ki$V$ki$W$ki$z$ki&s$ki!x$ki!}$ki#O$ki#X$ki!n$ki!q$kiV$ki~OS+^O]+aOm+^Os$aO!^+dO!_+^O!`+^O!n+hO#b$nO$aqO$drO~P0aO!s+lO~O#W+nO#`+mO#a+mO~O!s+pO#b+pO$}+pO%T+oO~O!n+qO~PCqOc%XXd%XXh%XXj%XXf%XXg%XXe%XX~PhOc+uOd+sOP%WiQ%WiS%WiU%WiW%WiX%Wi[%Wi]%Wi^%Wi`%Wia%Wib%Wik%Wim%Wio%Wip%Wiq%Wis%Wit%Wiu%Wiv%Wix%Wiy%Wi|%Wi}%Wi!O%Wi!P%Wi!Q%Wi!R%Wi!T%Wi!U%Wi!V%Wi!W%Wi!X%Wi!Y%Wi!Z%Wi![%Wi!]%Wi!^%Wi!`%Wi!a%Wi!c%Wi!m%Wi!o%Wi!s%Wi!y%Wi#W%Wi#b%Wi#d%Wi#e%Wi#p%Wi$T%Wi$]%Wi$^%Wi$a%Wi$d%Wi$l%Wi$z%Wi${%Wi$}%Wi%O%Wi%V%Wi&p%Wi'g%Wi&t%Wi!n%Wih%Wij%Wif%Wig%WiY%Wi_%Wii%Wie%Wi~Oc+yOd+vOh+xO~OY+zO_+{O!n,OO~OY+zO_+{Oi%^X~Oi,QO~Oj,RO~O!m,TO~P9yO!m,VO~Of,WO~OT6iOV,XOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO~P!'WOg,YO~O!y,ZO~OZ(wOn(xOP%liQ%liS%liU%liW%liX%li[%li]%li^%li`%lia%lib%lik%lim%lio%lip%liq%lis%lit%liu%liv%lix%liy%li|%li}%li!O%li!P%li!Q%li!R%li!T%li!U%li!V%li!W%li!X%li!Y%li!Z%li![%li!]%li!^%li!`%li!a%li!c%li!m%li!o%li!s%li!y%li#W%li#b%li#d%li#e%li#p%li$T%li$]%li$^%li$a%li$d%li$l%li$z%li${%li$}%li%O%li%V%li&p%li'g%li&t%li!n%lic%lid%lih%lij%lif%lig%liY%li_%lii%lie%li~O#u,_O~O!}({O!m%da&s%da~O!x,bO~O!s%dO!m&dX!}&dX&s&dX~O!})QO!m'`a&s'`a~OS+^OY,iOm+^Os$aO!^+dO!_+^O!`+^O$aqO$drO~O!n,lO~P#JwO!o)WO~O!o%pO!s'RO~O!s#gO#peO!m&nX!}&nX&s&nX~O!})_O!m'ka&s'ka~O!s,rO~OV,sO!n%|X!}%|X~O!},uO!n'lX~O!n,wO~O!m&UX!}&UX&s&UX#O&UX~P9yO!})iO!m&|a&s&|a#O&|a~Oz#RO#S#QO#z#SO#{#WO#|#XO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT!uq!S!uq!b!uq!m!uq!v!uq&s!uq!x!uq!n!uq~P!'WO!n,|O~PCqOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x#ia!}#ia~P!'WO!x&YX!}&YX~PAOO!})vO!x'Sa~O#O-QO~O!}-RO!n&{X~O!n-TO~O!x-UO~OT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}#Vi#X#Vi~P!'WO!x&XX!}&XX~P9yO!}*UO!x'Qa~O!x-[O~OT#jqz#jq!S#jq!b#jq!m#jq!v#jq#S#jq#u#jq#w#jq#z#jq#{#jq#|#jq#}#jq$O#jq$Q#jq$R#jq$S#jq$T#jq$U#jq$V#jq$W#jq$z#jq&s#jq!x#jq!}#jq#O#jq#X#jq!n#jq!q#jqV#jq~P!'WO#l#oi#U#oi#b#oi~P#*zOz#RO!v!yO#S#QO#z#SO#{#WO#|#XO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT#Pq!S#Pq!b#Pq!m#Pq&s#Pq!x#Pq!n#Pq~P!'WO#u-dO!x$ca!}$ca~O#U-fO#b-eO~O#b-gO~O#S-hO#U-fO#b-eO#l'SO~O#b-jO#l'SO~O#u-kO!x$ha!}$ha~O!`'mO#S'kO#U'lO#b'jO$drO!x&_X!}&_X~P0aO!}*sO!x'Xa~O!oXO#l'SO~O#S-pO#b-oO!x'[P~O!oXO!q-rO~O!q-uO!o'cq!m'cq&s'cq~O!^-wO!oXO!q-rO~O!q-{O#O-zO~OT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!m$si!}$si&s$si~P!'WO!m$jq&s$jq!x$jq!n$jq~PCqO#O-zO#l'SO~O!}-|Ow']X!o']X!m']X&s']X~O#b$nO#l'SO~OS+^O].ROm+^Os$aO!_+^O!`+^O#b$nO$aqO$drO~P0aOS+^O].ROm+^Os$aO!_+^O!`+^O#b$nO$aqO~P0aOS+^O]+aOm+^Os$aO!^+dO!_+^O!`+^O!n.ZO#b$nO$aqO$drO~P0aO!s.^O~O!s._O#b._O$}._O%T+oO~O$}.`O~O#X.aO~Oc%Xad%Xah%Xaj%Xaf%Xag%Xae%Xa~PhOc.dOd+sOP%WqQ%WqS%WqU%WqW%WqX%Wq[%Wq]%Wq^%Wq`%Wqa%Wqb%Wqk%Wqm%Wqo%Wqp%Wqq%Wqs%Wqt%Wqu%Wqv%Wqx%Wqy%Wq|%Wq}%Wq!O%Wq!P%Wq!Q%Wq!R%Wq!T%Wq!U%Wq!V%Wq!W%Wq!X%Wq!Y%Wq!Z%Wq![%Wq!]%Wq!^%Wq!`%Wq!a%Wq!c%Wq!m%Wq!o%Wq!s%Wq!y%Wq#W%Wq#b%Wq#d%Wq#e%Wq#p%Wq$T%Wq$]%Wq$^%Wq$a%Wq$d%Wq$l%Wq$z%Wq${%Wq$}%Wq%O%Wq%V%Wq&p%Wq'g%Wq&t%Wq!n%Wqh%Wqj%Wqf%Wqg%WqY%Wq_%Wqi%Wqe%Wq~Oc.iOd+vOh.hO~O!q(`O~OP6]OQ|OU^OW}O[:fOo>ROs#hOx:dOy:dO}`O!O]O!Q:kO!R}O!T:jO!U:eO!V:eO!Y:oO!c8gO!s#gO!y[O#W_O#bhO#daO#ebO#peO$T:hO$]:gO$^:hO$aqO$z:mO${!OO$}}O%O}O%V|O'g{O~O!m.lO!q.lO~OY+zO_+{O!n.nO~OY+zO_+{Oi%^a~O!x.rO~P>UO!m.tO~O!m.tO~P9yOQ|OW}O!R}O$}}O%O}O%V|O'g{O~OT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!m&ka!}&ka&s&ka~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!m$qi!}$qi&s$qi~P!'WOS+^Om+^Os$aO!_+^O!`+^O$aqO$drO~OY/PO~P$?VOS+^Om+^Os$aO!_+^O!`+^O$aqO~O!s/QO~O!n/SO~P#JwOw(SO!o)WO#l'SO~OV/VO!m&na!}&na&s&na~O!})_O!m'ki&s'ki~O!s/XO~OV/YO!n%|a!}%|a~O]/[Os/[O!s#gO#peO!n&oX!}&oX~O!},uO!n'la~OT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!m&Ua!}&Ua&s&Ua#O&Ua~P!'WOz#RO#S#QO#z#SO#{#WO#|#XO#}#YO$O#ZO$Q#]O$R#^O$S#_O$T#`O$U#aO$V#bO$W#bO$z#dOT!uy!S!uy!b!uy!m!uy!v!uy&s!uy!x!uy!n!uy~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x#hi!}#hi~P!'WO_)yO!n&VX!}&VX~P9yO!}-RO!n&{a~OT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}#Vq#X#Vq~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x#[i!}#[i~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#O/cO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!x&Xa!}&Xa~P!'WO#u/iO!x$ci!}$ci~O#b/jO~O#U/lO#b/kO~OT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x$ci!}$ci~P!'WO#u/mO!x$hi!}$hi~O!}/oO!x'[X~O#b/qO~O!x/rO~O!oXO!q/uO~O#l'SO!o'cy!m'cy&s'cy~O!m$jy&s$jy!x$jy!n$jy~PCqO#O/xO#l'SO~O!s#gO#peOw&aX!o&aX!}&aX!m&aX&s&aX~O!}-|Ow']a!o']a!m']a&s']a~OU$PO]0QO!R$PO!s$OO!v#}O#b$nO#p2XO~P$?uO!m#cO!o0VO&s#cO~O#X0YO~Oh0_O~OT:tOz:pO!S:vO!b:xO!m0`O!q0`O!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO~P!'WOY%]a_%]a!n%]ai%]a~PhO!x0bO~O!x0bO~P>UO!m0dO~OT6iOz6gO!S6jO!b6kO!v8sO!x0fO#O0eO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO~P!'WO!x0fO~O!x0gO#b0hO#l'SO~O!x0iO~O!s0jO~O!m#cO#u0lO&s#cO~O!s0mO~O!})_O!m'kq&s'kq~O!s0nO~OV0oO!n%}X!}%}X~OT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!n!|i!}!|i~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x$cq!}$cq~P!'WO#u0vO!x$cq!}$cq~O#b0wO~OT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x$hq!}$hq~P!'WO#S0zO#b0yO!x&`X!}&`X~O!}/oO!x'[a~O#l'SO!o'c!R!m'c!R&s'c!R~O!oXO!q1PO~O!m$j!R&s$j!R!x$j!R!n$j!R~PCqO#O1RO#l'SO~OP6]OU^O[9WOo>SOs#hOx9WOy9WO}`O!O]O!Q:lO!T9WO!U9WO!V9WO!Y9WO!c8hO!n1^O!s1YO!y[O#W_O#bhO#daO#ebO#peO$T:iO$]9WO$^:iO$aqO$z:nO${!OO~P$;lOh1_O~OY%[i_%[i!n%[ii%[i~PhOY%]i_%]i!n%]ii%]i~PhO!x1bO~O!x1bO~P>UO!x1eO~O!m#cO#u1iO&s#cO~O$}1jO%V1jO~O!s1kO~OV1lO!n%}a!}%}a~OT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x#]i!}#]i~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x$cy!}$cy~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x$hy!}$hy~P!'WO#b1nO~O!}/oO!x'[i~O!m$j!Z&s$j!Z!x$j!Z!n$j!Z~PCqOT:uOz:qO!S:wO!b:yO!v=nO#S#QO#z:sO#{:{O#|:}O#};PO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dO~P!'WOV1uO{1tO~P!5xOV1uO{1tOT&}Xz&}X!S&}X!b&}X!o&}X!v&}X!y&}X#S&}X#W&}X#`&}X#a&}X#s&}X#u&}X#w&}X#z&}X#{&}X#|&}X#}&}X$O&}X$Q&}X$R&}X$S&}X$T&}X$U&}X$V&}X$W&}X$z&}X~OP6]OU^O[9WOo>SOs#hOx9WOy9WO}`O!O]O!Q:lO!T9WO!U9WO!V9WO!Y9WO!c8hO!n1xO!s1YO!y[O#W_O#bhO#daO#ebO#peO$T:iO$]9WO$^:iO$aqO$z:nO${!OO~P$;lOY%[q_%[q!n%[qi%[q~PhO!x1zO~O!x%gi~PCqOe1{O~O$}1|O%V1|O~O!s2OO~OT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x$c!R!}$c!R~P!'WO!m$j!c&s$j!c!x$j!c!n$j!c~PCqO!s2QO~O!`2SO!s2RO~O!s2VO!m$xi&s$xi~O!s'WO~O!s*]O~OT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m$ka#u$ka#w$ka&s$ka!x$ka!n$ka!q$ka#X$ka!}$ka~P!'WO#S2]O~P*kO$l$tO~P#.YOT6iOz6gO!S6jO!b6kO!v8sO#O2[O#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!m'PX&s'PX!x'PX!n'PX~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#O3uO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}'PX#X'PX#u'PX#w'PX!m'PX&s'PX!x'PX!n'PXV'PX!q'PX~P!'WO#S3dO~P#.YOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m$Xa#u$Xa#w$Xa&s$Xa!x$Xa!n$Xa!q$Xa#X$Xa!}$Xa~P!'WOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m$Ya#u$Ya#w$Ya&s$Ya!x$Ya!n$Ya!q$Ya#X$Ya!}$Ya~P!'WOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m$Za#u$Za#w$Za&s$Za!x$Za!n$Za!q$Za#X$Za!}$Za~P!'WOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m$[a#u$[a#w$[a&s$[a!x$[a!n$[a!q$[a#X$[a!}$[a~P!'WOz2aO#u$[a#w$[a!q$[a#X$[a!}$[a~PNyOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m$_a#u$_a#w$_a&s$_a!x$_a!n$_a!q$_a#X$_a!}$_a~P!'WOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m$|a#u$|a#w$|a&s$|a!x$|a!n$|a!q$|a#X$|a!}$|a~P!'WOz2aO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#u#yi#w#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOz2aO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi#u#yi#w#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOT2cOz2aO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!S#yi!m#yi#u#yi#w#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOT2cOz2aO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!S#yi!b#yi!m#yi#u#yi#w#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOz2aO#S#QO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#u#yi#w#yi#z#yi#{#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOz2aO#S#QO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#u#yi#w#yi#z#yi#{#yi#|#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOz2aO#S#QO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOz2aO#S#QO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOz2aO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOz2aO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOz2aO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOz2aO$T2nO$V2pO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$U#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOz2aO$V2pO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOz2aO$S2mO$T2nO$V2pO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$U#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOz2aO$W2pO$z#dOT#yi!S#yi!b#yi!m#yi!v#yi#S#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi$V#yi&s#yi!x#yi!n#yi!q#yi#X#yi!}#yi~P!'WOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m#Ta#u#Ta#w#Ta&s#Ta!x#Ta!n#Ta!q#Ta#X#Ta!}#Ta~P!'WOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m'Pa#u'Pa#w'Pa&s'Pa!x'Pa!n'Pa!q'Pa#X'Pa!}'Pa~P!'WOz2aO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT#Pi!S#Pi!b#Pi!m#Pi#u#Pi#w#Pi&s#Pi!x#Pi!n#Pi!q#Pi#X#Pi!}#Pi~P!'WOz2aO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT#vi!S#vi!b#vi!m#vi#u#vi#w#vi&s#vi!x#vi!n#vi!q#vi#X#vi!}#vi~P!'WOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m#xi#u#xi#w#xi&s#xi!x#xi!n#xi!q#xi#X#xi!}#xi~P!'WOz2aO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT!uq!S!uq!b!uq!m!uq!v!uq#u!uq#w!uq&s!uq!x!uq!n!uq!q!uq#X!uq!}!uq~P!'WOz2aO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT#Pq!S#Pq!b#Pq!m#Pq#u#Pq#w#Pq&s#Pq!x#Pq!n#Pq!q#Pq#X#Pq!}#Pq~P!'WOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m$jq#u$jq#w$jq&s$jq!x$jq!n$jq!q$jq#X$jq!}$jq~P!'WOz2aO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dOT!uy!S!uy!b!uy!m!uy!v!uy#u!uy#w!uy&s!uy!x!uy!n!uy!q!uy#X!uy!}!uy~P!'WOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m$jy#u$jy#w$jy&s$jy!x$jy!n$jy!q$jy#X$jy!}$jy~P!'WOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m$j!R#u$j!R#w$j!R&s$j!R!x$j!R!n$j!R!q$j!R#X$j!R!}$j!R~P!'WOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m$j!Z#u$j!Z#w$j!Z&s$j!Z!x$j!Z!n$j!Z!q$j!Z#X$j!Z!}$j!Z~P!'WOT2cOz2aO!S2dO!b2eO!v4WO#S#QO#z2bO#{2fO#|2gO#}2hO$O2iO$Q2kO$R2lO$S2mO$T2nO$U2oO$V2pO$W2pO$z#dO!m$j!c#u$j!c#w$j!c&s$j!c!x$j!c!n$j!c!q$j!c#X$j!c!}$j!c~P!'WOP6]OU^O[4POo8^Os#hOx3{Oy3{O}`O!O]O!Q4aO!T4VO!U3}O!V3}O!Y4cO!c3yO!s#gO!y[O#S3vO#W_O#bhO#daO#ebO#peO$T4TO$]4RO$^4TO$aqO$z4bO${!OO~P$;lOP6]OU^O[4POo8^Os#hOx3{Oy3{O}`O!O]O!Q4aO!T4VO!U3}O!V3}O!Y4cO!c3yO!s#gO!y[O#W_O#bhO#daO#ebO#peO$T4TO$]4RO$^4TO$aqO$z4bO${!OO~P$;lO#u2uO#w2vO!q&zX#X&zX!}&zX~P0rOP6]OU^O[4POo8^Or2wOs#hOx3{Oy3{O}`O!O]O!Q4aO!T4VO!U3}O!V3}O!Y4cO!c3yO!s#gO!y[O#S2tO#U2sO#W_O#bhO#daO#ebO#peO$T4TO$]4RO$^4TO$aqO$z4bO${!OOT#xXz#xX!S#xX!b#xX!m#xX!o#xX!v#xX#`#xX#a#xX#s#xX#u#xX#w#xX#z#xX#{#xX#|#xX#}#xX$O#xX$Q#xX$R#xX$S#xX$U#xX$V#xX$W#xX&s#xX!x#xX!n#xX!q#xX#X#xX!}#xX~P$;lOP6]OU^O[4POo8^Or4xOs#hOx3{Oy3{O}`O!O]O!Q4aO!T4VO!U3}O!V3}O!Y4cO!c3yO!s#gO!y[O#S4uO#U4tO#W_O#bhO#daO#ebO#peO$T4TO$]4RO$^4TO$aqO$z4bO${!OOT#xXz#xX!S#xX!b#xX!o#xX!v#xX!}#xX#O#xX#X#xX#`#xX#a#xX#s#xX#u#xX#w#xX#z#xX#{#xX#|#xX#}#xX$O#xX$Q#xX$R#xX$S#xX$U#xX$V#xX$W#xX!m#xX&s#xX!x#xX!n#xXV#xX!q#xX~P$;lO!q3PO~P>UO!q5}O#O3gO~OT8vOz8tO!S8wO!b8xO!q3hO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO~P!'WO!q6OO#O3kO~O!q6PO#O3oO~O#O3oO#l'SO~O#O3pO#l'SO~O#O3sO#l'SO~OP6]OU^O[4POo8^Os#hOx3{Oy3{O}`O!O]O!Q4aO!T4VO!U3}O!V3}O!Y4cO!c3yO!s#gO!y[O#W_O#bhO#daO#ebO#peO$T4TO$]4RO$^4TO$aqO$l$tO$z4bO${!OO~P$;lOP6]OU^O[4POo8^Os#hOx3{Oy3{O}`O!O]O!Q4aO!T4VO!U3}O!V3}O!Y4cO!c3yO!s#gO!y[O#S5eO#W_O#bhO#daO#ebO#peO$T4TO$]4RO$^4TO$aqO$z4bO${!OO~P$;lOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}$Xa#O$Xa#X$Xa#u$Xa#w$Xa!m$Xa&s$Xa!x$Xa!n$XaV$Xa!q$Xa~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}$Ya#O$Ya#X$Ya#u$Ya#w$Ya!m$Ya&s$Ya!x$Ya!n$YaV$Ya!q$Ya~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}$Za#O$Za#X$Za#u$Za#w$Za!m$Za&s$Za!x$Za!n$ZaV$Za!q$Za~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}$[a#O$[a#X$[a#u$[a#w$[a!m$[a&s$[a!x$[a!n$[aV$[a!q$[a~P!'WOz4dO!}$[a#O$[a#X$[a#u$[a#w$[aV$[a!q$[a~PNyOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}$_a#O$_a#X$_a#u$_a#w$_a!m$_a&s$_a!x$_a!n$_aV$_a!q$_a~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}$|a#O$|a#X$|a#u$|a#w$|a!m$|a&s$|a!x$|a!n$|aV$|a!q$|a~P!'WOz4dO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#X#yi#u#yi#w#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz4dO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT#yi!S#yi!b#yi!}#yi#O#yi#X#yi#u#yi#w#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOT4fOz4dO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!S#yi!}#yi#O#yi#X#yi#u#yi#w#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOT4fOz4dO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!S#yi!b#yi!}#yi#O#yi#X#yi#u#yi#w#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz4dO#S#QO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#X#yi#u#yi#w#yi#z#yi#{#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz4dO#S#QO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#X#yi#u#yi#w#yi#z#yi#{#yi#|#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz4dO#S#QO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#X#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz4dO#S#QO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#X#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz4dO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz4dO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz4dO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz4dO$T4qO$V4sO$W4sO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$U#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz4dO$V4sO$W4sO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz4dO$S4pO$T4qO$V4sO$W4sO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$U#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz4dO$W4sO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#u#yi#w#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi$V#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}#Ta#O#Ta#X#Ta#u#Ta#w#Ta!m#Ta&s#Ta!x#Ta!n#TaV#Ta!q#Ta~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}'Pa#O'Pa#X'Pa#u'Pa#w'Pa!m'Pa&s'Pa!x'Pa!n'PaV'Pa!q'Pa~P!'WOz4dO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT#Pi!S#Pi!b#Pi!}#Pi#O#Pi#X#Pi#u#Pi#w#Pi!m#Pi&s#Pi!x#Pi!n#PiV#Pi!q#Pi~P!'WOz4dO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT#vi!S#vi!b#vi!}#vi#O#vi#X#vi#u#vi#w#vi!m#vi&s#vi!x#vi!n#viV#vi!q#vi~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}#xi#O#xi#X#xi#u#xi#w#xi!m#xi&s#xi!x#xi!n#xiV#xi!q#xi~P!'WOz4dO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT!uq!S!uq!b!uq!v!uq!}!uq#O!uq#X!uq#u!uq#w!uq!m!uq&s!uq!x!uq!n!uqV!uq!q!uq~P!'WOz4dO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT#Pq!S#Pq!b#Pq!}#Pq#O#Pq#X#Pq#u#Pq#w#Pq!m#Pq&s#Pq!x#Pq!n#PqV#Pq!q#Pq~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}$jq#O$jq#X$jq#u$jq#w$jq!m$jq&s$jq!x$jq!n$jqV$jq!q$jq~P!'WOz4dO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dOT!uy!S!uy!b!uy!v!uy!}!uy#O!uy#X!uy#u!uy#w!uy!m!uy&s!uy!x!uy!n!uyV!uy!q!uy~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}$jy#O$jy#X$jy#u$jy#w$jy!m$jy&s$jy!x$jy!n$jyV$jy!q$jy~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}$j!R#O$j!R#X$j!R#u$j!R#w$j!R!m$j!R&s$j!R!x$j!R!n$j!RV$j!R!q$j!R~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}$j!Z#O$j!Z#X$j!Z#u$j!Z#w$j!Z!m$j!Z&s$j!Z!x$j!Z!n$j!ZV$j!Z!q$j!Z~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}$j!c#O$j!c#X$j!c#u$j!c#w$j!c!m$j!c&s$j!c!x$j!c!n$j!cV$j!c!q$j!c~P!'WO#S5wO~P#.YO!y$hO#S5{O~O!x4ZO#l'SO~O!y$hO#S5|O~OT4fOz4dO!S4gO!b4hO!v6TO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!}$ka#O$ka#X$ka#u$ka#w$ka!m$ka&s$ka!x$ka!n$kaV$ka!q$ka~P!'WOT4fOz4dO!S4gO!b4hO!v6TO#O5vO#S#QO#z4eO#{4iO#|4jO#}4kO$O4lO$Q4nO$R4oO$S4pO$T4qO$U4rO$V4sO$W4sO$z#dO!m'PX#u'PX#w'PX&s'PX!x'PX!n'PX!q'PX#X'PX!}'PX~P!'WO#u4vO#w4wO!}&zX#O&zX#X&zXV&zX!q&zX~P0rO!q5QO~P>UO!q8bO#O5hO~OT8vOz8tO!S8wO!b8xO!q5iO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO~P!'WO!q8cO#O5lO~O!q8dO#O5pO~O#O5pO#l'SO~O#O5qO#l'SO~O#O5tO#l'SO~O$l$tO~P9yOo5zOs$lO~O#S7oO~P9yOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}$Xa#O$Xa#X$Xa!m$Xa&s$Xa!x$Xa!n$XaV$Xa!q$Xa~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}$Ya#O$Ya#X$Ya!m$Ya&s$Ya!x$Ya!n$YaV$Ya!q$Ya~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}$Za#O$Za#X$Za!m$Za&s$Za!x$Za!n$ZaV$Za!q$Za~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}$[a#O$[a#X$[a!m$[a&s$[a!x$[a!n$[aV$[a!q$[a~P!'WOz6gO!}$[a#O$[a#X$[aV$[a!q$[a~PNyOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}$_a#O$_a#X$_a!m$_a&s$_a!x$_a!n$_aV$_a!q$_a~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}$ka#O$ka#X$ka!m$ka&s$ka!x$ka!n$kaV$ka!q$ka~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}$|a#O$|a#X$|a!m$|a&s$|a!x$|a!n$|aV$|a!q$|a~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO!}7sO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x'jX~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO!}7uO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x&|X~P!'WOz6gO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#X#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz6gO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT#yi!S#yi!b#yi!}#yi#O#yi#X#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOT6iOz6gO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!S#yi!}#yi#O#yi#X#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOT6iOz6gO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!S#yi!b#yi!}#yi#O#yi#X#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz6gO#S#QO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#X#yi#z#yi#{#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz6gO#S#QO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#X#yi#z#yi#{#yi#|#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz6gO#S#QO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#X#yi#z#yi#{#yi#|#yi#}#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz6gO#S#QO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#X#yi#z#yi#{#yi#|#yi#}#yi$O#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz6gO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#z#yi#{#yi#|#yi#}#yi$O#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz6gO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz6gO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz6gO$T6tO$V6vO$W6vO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$U#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz6gO$V6vO$W6vO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz6gO$S6sO$T6tO$V6vO$W6vO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$U#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WOz6gO$W6vO$z#dOT#yi!S#yi!b#yi!v#yi!}#yi#O#yi#S#yi#X#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi$V#yi!m#yi&s#yi!x#yi!n#yiV#yi!q#yi~P!'WO#S7zO~P>UO!m#Ta&s#Ta!x#Ta!n#Ta~PCqO!m'Pa&s'Pa!x'Pa!n'Pa~PCqO#S;dO#U;cO!x&WX!}&WX~P9yO!}7lO!x'Oa~Oz6gO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT#Pi!S#Pi!b#Pi!}#Pi#O#Pi#X#Pi!m#Pi&s#Pi!x#Pi!n#PiV#Pi!q#Pi~P!'WOz6gO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT#vi!S#vi!b#vi!}#vi#O#vi#X#vi!m#vi&s#vi!x#vi!n#viV#vi!q#vi~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}#xi#O#xi#X#xi!m#xi&s#xi!x#xi!n#xiV#xi!q#xi~P!'WO!}7sO!x%da~O!x&UX!}&UX~P>UO!}7uO!x&|a~Oz6gO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT!uq!S!uq!b!uq!v!uq!}!uq#O!uq#X!uq!m!uq&s!uq!x!uq!n!uqV!uq!q!uq~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x#Vi!}#Vi~P!'WOz6gO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT#Pq!S#Pq!b#Pq!}#Pq#O#Pq#X#Pq!m#Pq&s#Pq!x#Pq!n#PqV#Pq!q#Pq~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}$jq#O$jq#X$jq!m$jq&s$jq!x$jq!n$jqV$jq!q$jq~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x&ka!}&ka~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x&Ua!}&Ua~P!'WOz6gO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dOT!uy!S!uy!b!uy!v!uy!}!uy#O!uy#X!uy!m!uy&s!uy!x!uy!n!uyV!uy!q!uy~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x#Vq!}#Vq~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}$jy#O$jy#X$jy!m$jy&s$jy!x$jy!n$jyV$jy!q$jy~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}$j!R#O$j!R#X$j!R!m$j!R&s$j!R!x$j!R!n$j!RV$j!R!q$j!R~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}$j!Z#O$j!Z#X$j!Z!m$j!Z&s$j!Z!x$j!Z!n$j!ZV$j!Z!q$j!Z~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!}$j!c#O$j!c#X$j!c!m$j!c&s$j!c!x$j!c!n$j!cV$j!c!q$j!c~P!'WO#S8[O~P9yO#O8ZO!m'PX&s'PX!x'PX!n'PXV'PX!q'PX~PGSO!y$hO#S8`O~O!y$hO#S8aO~O#u6zO#w6{O!}&zX#O&zX#X&zXV&zX!q&zX~P0rOr6|O#S#oO#U#nO!}#xX#O#xX#X#xXV#xX!q#xX~P2yOr;iO#S9XO#U9VOT#xXz#xX!S#xX!b#xX!m#xX!o#xX!q#xX!v#xX#`#xX#a#xX#s#xX#z#xX#{#xX#|#xX#}#xX$O#xX$Q#xX$R#xX$S#xX$U#xX$V#xX$W#xX!n#xX!}#xX~P9yOr9WO#S9WO#U9WOT#xXz#xX!S#xX!b#xX!o#xX!v#xX#`#xX#a#xX#s#xX#z#xX#{#xX#|#xX#}#xX$O#xX$Q#xX$R#xX$S#xX$U#xX$V#xX$W#xX~P9yOr9]O#S;dO#U;cOT#xXz#xX!S#xX!b#xX!o#xX!q#xX!v#xX#`#xX#a#xX#s#xX#z#xX#{#xX#|#xX#}#xX$O#xX$Q#xX$R#xX$S#xX$U#xX$V#xX$W#xX#X#xX!x#xX!}#xX~P9yO$l$tO~P>UO!q7XO~P>UOT6iOz6gO!S6jO!b6kO!v8sO#O7iO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!x'PX!}'PX~P!'WOP6]OU^O[9WOo>SOs#hOx9WOy9WO}`O!O]O!Q:lO!T9WO!U9WO!V9WO!Y9WO!c8hO!s#gO!y[O#W_O#bhO#daO#ebO#peO$T:iO$]9WO$^:iO$aqO$z:nO${!OO~P$;lO!}7lO!x'OX~O#S9yO~P>UOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q$Xa#X$Xa!x$Xa!}$Xa~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q$Ya#X$Ya!x$Ya!}$Ya~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q$Za#X$Za!x$Za!}$Za~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q$[a#X$[a!x$[a!}$[a~P!'WOz8tO$z#dOT$[a!S$[a!b$[a!q$[a!v$[a#S$[a#z$[a#{$[a#|$[a#}$[a$O$[a$Q$[a$R$[a$S$[a$T$[a$U$[a$V$[a$W$[a#X$[a!x$[a!}$[a~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q$_a#X$_a!x$_a!}$_a~P!'WO!q=dO#O7rO~OT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q$ka#X$ka!x$ka!}$ka~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q$|a#X$|a!x$|a!}$|a~P!'WOT8vOz8tO!S8wO!b8xO!q7wO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO~P!'WOz8tO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi!v#yi#X#yi!x#yi!}#yi~P!'WOz8tO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi#X#yi!x#yi!}#yi~P!'WOT8vOz8tO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!S#yi!q#yi#X#yi!x#yi!}#yi~P!'WOT8vOz8tO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!S#yi!b#yi!q#yi#X#yi!x#yi!}#yi~P!'WOz8tO#S#QO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi!v#yi#z#yi#{#yi#X#yi!x#yi!}#yi~P!'WOz8tO#S#QO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi!v#yi#z#yi#{#yi#|#yi#X#yi!x#yi!}#yi~P!'WOz8tO#S#QO$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi!v#yi#z#yi#{#yi#|#yi#}#yi#X#yi!x#yi!}#yi~P!'WOz8tO#S#QO$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi!v#yi#z#yi#{#yi#|#yi#}#yi$O#yi#X#yi!x#yi!}#yi~P!'WOz8tO$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi#X#yi!x#yi!}#yi~P!'WOz8tO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi#X#yi!x#yi!}#yi~P!'WOz8tO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi#X#yi!x#yi!}#yi~P!'WOz8tO$T9RO$V9TO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$U#yi#X#yi!x#yi!}#yi~P!'WOz8tO$V9TO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi#X#yi!x#yi!}#yi~P!'WOz8tO$S9QO$T9RO$V9TO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$U#yi#X#yi!x#yi!}#yi~P!'WOz8tO$W9TO$z#dOT#yi!S#yi!b#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi$V#yi#X#yi!x#yi!}#yi~P!'WOz8tO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT#Pi!S#Pi!b#Pi!q#Pi#X#Pi!x#Pi!}#Pi~P!'WOz8tO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT#vi!S#vi!b#vi!q#vi#X#vi!x#vi!}#vi~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q#xi#X#xi!x#xi!}#xi~P!'WO!q=eO#O7|O~Oz8tO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT!uq!S!uq!b!uq!q!uq!v!uq#X!uq!x!uq!}!uq~P!'WOz8tO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT#Pq!S#Pq!b#Pq!q#Pq#X#Pq!x#Pq!}#Pq~P!'WO!q=iO#O8TO~OT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q$jq#X$jq!x$jq!}$jq~P!'WO#O8TO#l'SO~Oz8tO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dOT!uy!S!uy!b!uy!q!uy!v!uy#X!uy!x!uy!}!uy~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q$jy#X$jy!x$jy!}$jy~P!'WO#O8UO#l'SO~OT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q$j!R#X$j!R!x$j!R!}$j!R~P!'WO#O8XO#l'SO~OT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q$j!Z#X$j!Z!x$j!Z!}$j!Z~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!q$j!c#X$j!c!x$j!c!}$j!c~P!'WO#S:bO~P>UO#O:aO!q'PX!x'PX~PGSO$l$tO~P$8YOP6]OU^O[9WOo>SOs#hOx9WOy9WO}`O!O]O!Q:lO!T9WO!U9WO!V9WO!Y9WO!c8hO!s#gO!y[O#W_O#bhO#daO#ebO#peO$T:iO$]9WO$^:iO$aqO$l$tO$z:nO${!OO~P$;lOo8_Os$lO~O#S\u003CjO~P$8YOP6]OU^O[9WOo>SOs#hOx9WOy9WO}`O!O]O!Q:lO!T9WO!U9WO!V9WO!Y9WO!c8hO!s#gO!y[O#S\u003CkO#W_O#bhO#daO#ebO#peO$T:iO$]9WO$^:iO$aqO$z:nO${!OO~P$;lOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m$Xa!q$Xa!n$Xa!}$Xa~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m$Ya!q$Ya!n$Ya!}$Ya~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m$Za!q$Za!n$Za!}$Za~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m$[a!q$[a!n$[a!}$[a~P!'WOz:pO$z#dOT$[a!S$[a!b$[a!m$[a!q$[a!v$[a#S$[a#z$[a#{$[a#|$[a#}$[a$O$[a$Q$[a$R$[a$S$[a$T$[a$U$[a$V$[a$W$[a!n$[a!}$[a~P!'WOz:qO$z#dOT$[a!S$[a!b$[a!v$[a#S$[a#z$[a#{$[a#|$[a#}$[a$O$[a$Q$[a$R$[a$S$[a$T$[a$U$[a$V$[a$W$[a~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m$_a!q$_a!n$_a!}$_a~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m$ka!q$ka!n$ka!}$ka~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m$|a!q$|a!n$|a!}$|a~P!'WOz:pO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!v#yi!n#yi!}#yi~P!'WOz:qO#S#QO#z:sO#{:{O#|:}O#};PO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT#yi!S#yi!b#yi!v#yi~P!'WOz:pO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!n#yi!}#yi~P!'WOz:qO!v=nO#S#QO#z:sO#{:{O#|:}O#};PO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT#yi!S#yi!b#yi~P!'WOT:tOz:pO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!S#yi!m#yi!q#yi!n#yi!}#yi~P!'WOT:uOz:qO!b:yO!v=nO#S#QO#z:sO#{:{O#|:}O#};PO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dO!S#yi~P!'WOT:tOz:pO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!S#yi!b#yi!m#yi!q#yi!n#yi!}#yi~P!'WOT:uOz:qO!v=nO#S#QO#z:sO#{:{O#|:}O#};PO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dO!S#yi!b#yi~P!'WOz:pO#S#QO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!v#yi#z#yi#{#yi!n#yi!}#yi~P!'WOz:qO#S#QO#|:}O#};PO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT#yi!S#yi!b#yi!v#yi#z#yi#{#yi~P!'WOz:pO#S#QO#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!v#yi#z#yi#{#yi#|#yi!n#yi!}#yi~P!'WOz:qO#S#QO#};PO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT#yi!S#yi!b#yi!v#yi#z#yi#{#yi#|#yi~P!'WOz:pO#S#QO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!v#yi#z#yi#{#yi#|#yi#}#yi!n#yi!}#yi~P!'WOz:qO#S#QO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT#yi!S#yi!b#yi!v#yi#z#yi#{#yi#|#yi#}#yi~P!'WOz:pO#S#QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!v#yi#z#yi#{#yi#|#yi#}#yi$O#yi!n#yi!}#yi~P!'WOz:qO#S#QO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT#yi!S#yi!b#yi!v#yi#z#yi#{#yi#|#yi#}#yi$O#yi~P!'WOz:pO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi!n#yi!}#yi~P!'WOz:qO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT#yi!S#yi!b#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi~P!'WOz:pO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi!n#yi!}#yi~P!'WOz:qO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT#yi!S#yi!b#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi~P!'WOz:pO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi!n#yi!}#yi~P!'WOz:qO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT#yi!S#yi!b#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi~P!'WOz:pO$T;[O$V;`O$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$U#yi!n#yi!}#yi~P!'WOz:qO$T;]O$V;aO$W;aO$z#dOT#yi!S#yi!b#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$U#yi~P!'WOz:pO$V;`O$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi!n#yi!}#yi~P!'WOz:qO$V;aO$W;aO$z#dOT#yi!S#yi!b#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi~P!'WOz:pO$S;YO$T;[O$V;`O$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$U#yi!n#yi!}#yi~P!'WOz:qO$S;ZO$T;]O$V;aO$W;aO$z#dOT#yi!S#yi!b#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$U#yi~P!'WOz:pO$W;`O$z#dOT#yi!S#yi!b#yi!m#yi!q#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi$V#yi!n#yi!}#yi~P!'WOz:qO$W;aO$z#dOT#yi!S#yi!b#yi!v#yi#S#yi#z#yi#{#yi#|#yi#}#yi$O#yi$Q#yi$R#yi$S#yi$T#yi$U#yi$V#yi~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x#Ta!}#Ta!q#Ta#X#Ta~P!'WOT8vOz8tO!S8wO!b8xO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO!x'Pa!}'Pa!q'Pa#X'Pa~P!'WOz:pO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT#Pi!S#Pi!b#Pi!m#Pi!q#Pi!n#Pi!}#Pi~P!'WOz:qO!v=nO#S#QO#z:sO#{:{O#|:}O#};PO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT#Pi!S#Pi!b#Pi~P!'WOz:pO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT#vi!S#vi!b#vi!m#vi!q#vi!n#vi!}#vi~P!'WOz:qO!v=nO#S#QO#z:sO#{:{O#|:}O#};PO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT#vi!S#vi!b#vi~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m#xi!q#xi!n#xi!}#xi~P!'WOz:pO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT!uq!S!uq!b!uq!m!uq!q!uq!v!uq!n!uq!}!uq~P!'WOz:qO#S#QO#z:sO#{:{O#|:}O#};PO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT!uq!S!uq!b!uq!v!uq~P!'WOz:pO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT#Pq!S#Pq!b#Pq!m#Pq!q#Pq!n#Pq!}#Pq~P!'WOz:qO!v=nO#S#QO#z:sO#{:{O#|:}O#};PO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT#Pq!S#Pq!b#Pq~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m$jq!q$jq!n$jq!}$jq~P!'WOz:pO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dOT!uy!S!uy!b!uy!m!uy!q!uy!v!uy!n!uy!}!uy~P!'WOz:qO#S#QO#z:sO#{:{O#|:}O#};PO$O;RO$Q;VO$R;XO$S;ZO$T;]O$U;_O$V;aO$W;aO$z#dOT!uy!S!uy!b!uy!v!uy~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m$jy!q$jy!n$jy!}$jy~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m$j!R!q$j!R!n$j!R!}$j!R~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m$j!Z!q$j!Z!n$j!Z!}$j!Z~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m$j!c!q$j!c!n$j!c!}$j!c~P!'WO#S=TO~P$8YOP6]OU^O[9WOo>SOs#hOx9WOy9WO}`O!O]O!Q:lO!T9WO!U9WO!V9WO!Y9WO!c8hO!s#gO!y[O#S=UO#W_O#bhO#daO#ebO#peO$T:iO$]9WO$^:iO$aqO$z:nO${!OO~P$;lOT6iOz6gO!S6jO!b6kO!v8sO#O=SO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO~P!'WOT6iOz6gO!S6jO!b6kO!v8sO#O=RO#S#QO#z6hO#{6lO#|6mO#}6nO$O6oO$Q6qO$R6rO$S6sO$T6tO$U6uO$V6vO$W6vO$z#dO!m'PX!q'PX!n'PX!}'PX~P!'WOT&zXz&zX!S&zX!b&zX!o&zX!q&zX!v&zX!y&zX#S&zX#W&zX#`&zX#a&zX#s&zX#z&zX#{&zX#|&zX#}&zX$O&zX$Q&zX$R&zX$S&zX$T&zX$U&zX$V&zX$W&zX$z&zX!}&zX~O#u9ZO#w9[O#X&zX!x&zX~P.8oO!y$hO#S=^O~O!q9hO~P>UO!y$hO#S=cO~O!q>OO#O9}O~OT8vOz8tO!S8wO!b8xO!q:OO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m#Ta!q#Ta!n#Ta!}#Ta~P!'WOT:tOz:pO!S:vO!b:xO!v=mO#S#QO#z:rO#{:zO#|:|O#};OO$O;QO$Q;UO$R;WO$S;YO$T;[O$U;^O$V;`O$W;`O$z#dO!m'Pa!q'Pa!n'Pa!}'Pa~P!'WO!q>PO#O:RO~O!q>QO#O:YO~O#O:YO#l'SO~O#O:ZO#l'SO~O#O:_O#l'SO~O#u;eO#w;gO!m&zX!n&zX~P.8oO#u;fO#w;hOT&zXz&zX!S&zX!b&zX!o&zX!v&zX!y&zX#S&zX#W&zX#`&zX#a&zX#s&zX#z&zX#{&zX#|&zX#}&zX$O&zX$Q&zX$R&zX$S&zX$T&zX$U&zX$V&zX$W&zX$z&zX~O!q;tO~P>UO!q;uO~P>UO!q>XO#O\u003CoO~O!q>YO#O9WO~OT8vOz8tO!S8wO!b8xO!q\u003CpO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO~P!'WOT8vOz8tO!S8wO!b8xO!q\u003CqO!v=ZO#S#QO#z8uO#{8yO#|8zO#}8{O$O8|O$Q9OO$R9PO$S9QO$T9RO$U9SO$V9TO$W9TO$z#dO~P!'WO!q>ZO#O\u003CvO~O!q>[O#O\u003C{O~O#O\u003C{O#l'SO~O#O9WO#l'SO~O#O\u003C|O#l'SO~O#O=PO#l'SO~O!y$hO#S=|O~Oo=[Os$lO~O!y$hO#S=}O~O!y$hO#S>UO~O!y$hO#S>VO~O!y$hO#S>WO~Oo={Os$lO~Oo>TOs$lO~Oo>SOs$lO~O%O$U$}$d!d$V#b%V#e'g!s#d~\\\",goto:\\\"%&y'mPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP'nP'uPP'{(OPPP(hP(OP(O*ZP*ZPP2W:j:mPP*Z:sBpPBsPBsPP:sCSCVCZ:s:sPPPC^PP:sK^!$S!$S:s!$WP!$W!$W!%UP!.]!7pP!?oP*ZP*Z*ZPPPPP!?rPPPPPPP*Z*Z*Z*ZPP*Z*ZP!E]!GRP!GV!Gy!GR!GR!HP*Z*ZP!HY!Hl!Ib!J`!Jd!J`!Jo!J}!J}!KV!KY!KY*ZPP*ZPP!K^#%[#%[#%`P#%fP(O#%j(O#&S#&V#&V#&](O#&`(O(O#&f#&i(O#&r#&u(O(O(O(O(O#&x(O(O(O(O(O(O(O(O(O#&{!KR(O(O#'_#'o#'r(O(OP#'u#'|#(S#(o#(y#)P#)Z#)b#)h#*d#4X#5T#5Z#5a#5k#5q#5w#6]#6c#6i#6o#6u#6{#7R#7]#7g#7m#7s#7}PPPPPPPP#8T#8X#8}#NO#NR#N]$(f$(r$)X$)_$)b$)e$)k$,X$5v$>_$>b$>h$>k$>n$>w$>{$?X$?k$Bk$CO$C{$K{PP%%y%%}%&Z%&p%&vQ!nQT!qV!rQUOR%x!mRVO}!hPVX!S!j!r!s!w$}%P%S%U(`+r+u.b.d.l0`0a0i1a|!hPVX!S!j!r!s!w$}%P%S%U(`+r+u.b.d.l0`0a0i1aQ%^!ZQ%g!aQ%l!eQ'd$dQ'q$iQ)[%kQ*y'tQ,](xU-n*v*x+OQ.W+cQ.{,[S/t-s-tQ0T.SS0}/s/wQ1V0RQ1o1OR2P1p0u!OPVX[_bjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!{!}#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b#k#n#o#s#t$R$S$U$y$}%P%R%S%T%U%c%}&S&W&p&s&t&w'O'U'Y'z(O(`(l({)P)i)p)t)v*P*T*U*o+P+r+u+z,T,V,X-Q-R-d-k-z.b.d.l.t/c/i/m/x0V0`0a0d0e0i0v1R1]1a2[2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3u3v3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t5v5w6T6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6x6y6z6{6|7X7i7l7o7r7s7u7w7z7|8T8U8X8Z8[8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9V9W9X9Z9[9]9h9y9}:O:R:Y:Z:_:a:b:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:};O;P;Q;R;S;T;U;V;W;X;Y;Z;[;];^;_;`;a;c;d;e;f;g;h;i;t;u\u003Cj\u003Ck\u003Co\u003Cp\u003Cq\u003Cv\u003C{\u003C|=P=R=S=T=U=Z=m=n0t!OPVX[_bjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!{!}#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b#k#n#o#s#t$R$S$U$y$}%P%R%S%T%U%c%}&S&W&p&s&t&w'O'U'Y'z(O(`(l({)P)i)p)t)v*P*T*U*o+P+r+u+z,T,V,X-Q-R-d-k-z.b.d.l.t/c/i/m/x0V0`0a0d0e0i0v1R1]1a2[2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3u3v3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t5v5w6T6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6x6y6z6{6|7X7i7l7o7r7s7u7w7z7|8T8U8X8Z8[8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9V9W9X9Z9[9]9h9y9}:O:R:Y:Z:_:a:b:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:};O;P;Q;R;S;T;U;V;W;X;Y;Z;[;];^;_;`;a;c;d;e;f;g;h;i;t;u\u003Cj\u003Ck\u003Co\u003Cp\u003Cq\u003Cv\u003C{\u003C|=P=R=S=T=U=Z=m=nQ#j]Q$}!PQ%O!QQ%P!RQ,S(kQ.b+sR.f+vR&q#jQ)z&pR/a-R0uhPVX[_bjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!{!}#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b#k#n#o#s#t$R$S$U$y$}%P%R%S%T%U%c%}&S&W&p&s&t&w'O'U'Y'z(O(`(l({)P)i)p)t)v*P*T*U*o+P+r+u+z,T,V,X-Q-R-d-k-z.b.d.l.t/c/i/m/x0V0`0a0d0e0i0v1R1]1a2[2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3u3v3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t5v5w6T6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6x6y6z6{6|7X7i7l7o7r7s7u7w7z7|8T8U8X8Z8[8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9V9W9X9Z9[9]9h9y9}:O:R:Y:Z:_:a:b:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:};O;P;Q;R;S;T;U;V;W;X;Y;Z;[;];^;_;`;a;c;d;e;f;g;h;i;t;u\u003Cj\u003Ck\u003Co\u003Cp\u003Cq\u003Cv\u003C{\u003C|=P=R=S=T=U=Z=m=nR#l^k#p_j#k#s&s&w3x3y7l8f8g8h8iR#u`T&|#t'OR-Y*U0thPVX[_bjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!{!}#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b#k#n#o#s#t$R$S$U$y$}%P%R%S%T%U%c%}&S&W&p&s&t&w'O'U'Y'z(O(`(l({)P)i)p)t)v*P*T*U*o+P+r+u+z,T,V,X-Q-R-d-k-z.b.d.l.t/c/i/m/x0V0`0a0d0e0i0v1R1]1a2[2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3u3v3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t5v5w6T6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6x6y6z6{6|7X7i7l7o7r7s7u7w7z7|8T8U8X8Z8[8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9V9W9X9Z9[9]9h9y9}:O:R:Y:Z:_:a:b:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:};O;P;Q;R;S;T;U;V;W;X;Y;Z;[;];^;_;`;a;c;d;e;f;g;h;i;t;u\u003Cj\u003Ck\u003Co\u003Cp\u003Cq\u003Cv\u003C{\u003C|=P=R=S=T=U=Z=m=nR#va-r#OZ#f#m#w$V$W$X$Y$Z$[$u$v%W%Y%[%`%s%|&O&Q&U&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&u&v&{'X'Z'[(](p)q)s)u*O*[*^+S+V,`,c,y,{,}-V-W-X-i-x.k.w/`/h/n/y0r0u0x1Q1X1d1m1q2q2r2x2y2z2{2|2}3O3Q3R3S3T3U3V3W3X3Y3Z3[3]3^3_3`3a3b3c3e3f3i3j3l3m3n3q3r3t4Y4y4z4{4|4}5O5P5R5S5T5U5V5W5X5Y5Z5[5]5^5_5`5a5b5c5d5f5g5j5k5m5n5o5r5s5u6R6V6}7O7P7Q7R7S7U7V7W7Y7Z7[7]7^7_7`7a7b7c7d7e7f7g7h7j7k7n7p7q7x7y7{7}8O8P8Q8R8S8V8W8Y8]9U9^9_9`9a9b9c9f9g9i9j9k9l9m9n9o9p9q9r9s9t9u9v9w9x9z9{:P:Q:T:V:W:[:^:`:c;j;k;l;m;n;o;p;s;v;w;x;y;z;{;|;}\u003CO\u003CP\u003CQ\u003CR\u003CS\u003CT\u003CU\u003CV\u003CW\u003CX\u003CY\u003CZ\u003C[\u003C]\u003C^\u003C_\u003C`\u003Ca\u003Cb\u003Cc\u003Cd\u003Ce\u003Cf\u003Cg\u003Ch\u003Ci\u003Cl\u003Cm\u003Cn\u003Cr\u003Cs\u003Ct\u003Cu\u003Cw\u003Cx\u003Cy\u003Cz\u003C}=O=Q=V=W=_=`=a=q=rQ']$]Y(Q$s7T9e;q;rS(U2Z6QR(X$tT&X!})v!w$Qg#}$h'S'i'm'r(P(T)Z*f*s*z*}+Q+]+`+g,Z-r-u-{.Q/u1P5}6O6P6]8b8c8d=d=e=i>O>P>Q>X>Y>Z>[3ZfPVX[_bgjklmnoprxyz!S!W!X!Y!]!e!f!g!j!r!s!w!y!z!{!}#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b#k#n#o#s#t#}$R$S$U$h$y$}%P%R%S%T%U%c%p%r%}&S&W&p&s&t&w'O'S'U'Y'^'i'm'r'z(O(P(R(S(T(`(l({)P)Z)_)c)i)p)t)v*P*T*U*f*o*s*z*}+P+Q+]+`+d+g+r+u+z,T,V,X,Z,u-Q-R-d-k-r-u-z-{-|.Q.b.d.l.t/[/c/i/m/u/x0V0`0a0d0e0i0v1P1R1]1a2[2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3u3v3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t5v5w5}6O6P6T6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6x6y6z6{6|7X7i7l7o7r7s7u7w7z7|8T8U8X8Z8[8b8c8d8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9V9W9X9Z9[9]9h9y9}:O:R:Y:Z:_:a:b:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:};O;P;Q;R;S;T;U;V;W;X;Y;Z;[;];^;_;`;a;c;d;e;f;g;h;i;t;u\u003Cj\u003Ck\u003Co\u003Cp\u003Cq\u003Cv\u003C{\u003C|=P=R=S=T=U=Z=d=e=i=m=n>O>P>Q>X>Y>Z>[3scPVX[_bdegjklmnoprxyz!S!W!X!Y!]!e!f!g!j!r!s!w!y!z!{!}#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b#k#n#o#s#t#{#}$R$S$U$h$y$}%P%R%S%T%U%c%m%n%p%r%}&S&W&p&s&t&w'O'S'U'Y'^'i'm'r'z(O(P(R(S(T(`(l({)P)Z)^)_)c)g)h)i)p)t)v*P*T*U*f*o*s*z*}+P+Q+]+`+d+g+r+u+z,T,V,X,Z,u,x-Q-R-d-k-r-u-z-{-|.Q.b.d.l.t/[/c/i/m/u/x0V0`0a0d0e0i0v1P1R1]1a2W2X2Y2[2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3u3v3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t5v5w5}6O6P6T6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6x6y6z6{6|7X7i7l7o7r7s7u7w7z7|8T8U8X8Z8[8b8c8d8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9V9W9X9Z9[9]9h9y9}:O:R:Y:Z:_:a:b:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:};O;P;Q;R;S;T;U;V;W;X;Y;Z;[;];^;_;`;a;c;d;e;f;g;h;i;t;u\u003Cj\u003Ck\u003Co\u003Cp\u003Cq\u003Cv\u003C{\u003C|=P=R=S=T=U=Z=d=e=i=m=n>O>P>Q>X>Y>Z>[0phPVX[_bjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!{!}#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b#k#n#o#s#t$R$S$U$y$}%P%R%S%T%U%c%}&S&W&p&s&t&w'O'U'Y'z(O(`(l({)P)i)p)t)v*P*T*U*o+P+r+u+z,T,V,X-Q-R-d-k-z.b.d.l.t/c/i/m/x0`0a0d0e0i0v1R1a2[2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3u3v3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t5v5w6T6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6x6y6z6{6|7X7i7l7o7r7s7u7w7z7|8T8U8X8Z8[8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9V9W9X9Z9[9]9h9y9}:O:R:Y:Z:_:a:b:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:};O;P;Q;R;S;T;U;V;W;X;Y;Z;[;];^;_;`;a;c;d;e;f;g;h;i;t;u\u003Cj\u003Ck\u003Co\u003Cp\u003Cq\u003Cv\u003C{\u003C|=P=R=S=T=U=Z=m=nT1Z0V1]R&]#P!n#[Z#f#w$V$W$X$Y$[$s$v%W%Y%[&Q&_&`&a&b&c&d&e&f'X'Z'[(])q)s*^+V,{-x/y1Q1d1q7j7k!Y2j2Z2x2y2z2{2}3O3Q3R3S3T3U3V3W3X3a3b3c3e3f3i3j3l3m3n3q3r3t!^4m2r4y4z4{4|5O5P5R5S5T5U5V5W5X5Y5b5c5d5f5g5j5k5m5n5o5r5s5u6Q6R#Q6p#m%`%s&u&v&{(p*O+S,`,c,y-V-X.w2q6}7O7P7Q7S7T7U7Y7Z7[7]7^7_7`7a7n7p7q7x7{7}8Q8S8V8W8Y8]9U:c=V=W#^8}%|&O&U)u,}-W-i/h/n0r0u0x1m4Y6V7V7W7y8O8P8R9^9_9`9a9c9e9f9g9i9j9k9l9m9n9o9p9x9z9{:P:Q:T:V:W:[:^:`\u003Cf\u003Cg=_=q=r!^;S.k/`;j;k;l;m;p;q;s;v;x;z;|\u003CO\u003CQ\u003CS\u003CU\u003Ch\u003Cl\u003Cn\u003Cr\u003Ct\u003Cw\u003Cx\u003Cz\u003C}=O=Q=`=ao;T1X;r;w;y;{;}\u003CP\u003CR\u003CT\u003CV\u003Ci\u003Cm\u003Cs\u003Cu\u003CyS$iu#hQ$qwU't$j$l&oQ'v$kS'x$m$rQ*|'uQ+O'wQ+R'yQ4X5xS4[5z5{Q4]5|Q6U8^S6W8_8`Q6X8aQ9d=YS9|=[=^Q:S=cQ=]=yS=b={=|Q=f=}Q=o>RS=p>S>VS=s>T>UR=t>WT'n$h*s!csPVXt!S!j!r!s!w$h$}%P%S%U'i(T(`)W*s+]+g+r+u,g,k.b.d.l0`0a0i1aQ$^rR*`'^Q*x'sQ-t*{R/w-wQ(W$tQ)U%hQ)n%vQ*i'fQ+k(XR-c*jQ(V$tQ)Y%jQ)m%vQ*e'eS*h'f)nS+j(W(XS-b*i*jQ.]+kQ/T,mQ/e-`R/g-cQ(U$tQ)T%hQ)V%iQ)l%vU*g'f)m)nU+i(V(W(XQ,f)UU-a*h*i*jS.[+j+kS/f-b-cQ0X.]R0t/gT+e(T+g[%e!_$b'c+a.R0QR,d)Qb$ov(T+[+]+`+g.P.Q0PR+T'{S+e(T+gT,j)W,kR0W.XT1[0V1]0w|PVX[_bjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!{!}#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b#k#n#o#s#t$R$S$U$y$}%P%R%S%T%U%c%}&S&W&p&s&t&w'O'U'Y'z(O(`(l({)P)i)p)t)v*P*T*U*o+P+r+u+z,T,V,X,_-Q-R-d-k-z.b.d.l.t/c/i/m/x0V0`0a0d0e0i0v1R1]1a2[2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3u3v3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t5v5w6T6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6x6y6z6{6|7X7i7l7o7r7s7u7w7z7|8T8U8X8Z8[8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9V9W9X9Z9[9]9h9y9}:O:R:Y:Z:_:a:b:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:};O;P;Q;R;S;T;U;V;W;X;Y;Z;[;];^;_;`;a;c;d;e;f;g;h;i;t;u\u003Cj\u003Ck\u003Co\u003Cp\u003Cq\u003Cv\u003C{\u003C|=P=R=S=T=U=Z=m=nT$x{${Q+p([R._+nT$z{${Q(b$}Q(j%PQ(o%SQ(r%UQ.j+yQ0].fQ0^.iR1g0iR(e%OX+|(c(d+},PR(f%OX(h%P%S%U0iR%S!T_%a!]%R(l,T,V.t0dR%U!UR.x,XR,[(wQ)X%jS*d'e)YS-_*e,mS/d-`/TR0s/eQ%q!fU)]%m%n%rU,o)^)g)hR/_,xR)d%pR/],uSSO!mR!oSQ!rVR%y!rQ!jPS!sV!rQ!wX[%u!j!s!w+r0a1aQ+r(`Q0a.lR1a0`Q)j%sS,z)j7vR7v7WQ-S)zR/b-SQ&x#qS*R&x7mR7m9YS*V&{&|R-Z*VQ)w&YR-P)w!l'T#|'h*n*q*v+W+[,m-`-s-v-y.P.z/s/v/z0P1O1p4^4_4`5y6Y6Z6[:U:X:]=g=h=j=u=v=w=xR*Z'T1^dPVX[_bjklmnoprxyz!S!W!X!Y!]!e!g!j!r!s!w!y!z!{!}#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b#k#n#o#s#t$R$S$U$y$}%P%R%S%T%U%c%p%}&S&W&p&s&t&w'O'U'Y'^'z(O(R(S(`(l({)P)_)c)i)p)t)v*P*T*U*o+P+d+r+u+z,T,V,X,u-Q-R-d-k-z-|.b.d.l.t/[/c/i/m/x0V0`0a0d0e0i0v1R1]1a2[2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3u3v3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t5v5w6T6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6x6y6z6{6|7X7i7l7o7r7s7u7w7z7|8T8U8X8Z8[8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9V9W9X9Z9[9]9h9y9}:O:R:Y:Z:_:a:b:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:};O;P;Q;R;S;T;U;V;W;X;Y;Z;[;];^;_;`;a;c;d;e;f;g;h;i;t;u\u003Cj\u003Ck\u003Co\u003Cp\u003Cq\u003Cv\u003C{\u003C|=P=R=S=T=U=Z=m=n`#zd#{%m)^)g,x2W2YQ#{eQ%m!fQ)^%nQ)g%rQ,x)h!v2Wg#}$h'S'i'm'r(P(T)Z*f*s*z*}+Q+]+`+g,Z-r-u-{.Q/u1P5}6O6P6]8b8c8d=d=e=i>O>P>Q>X>Y>Z>[R2Y2X|tPVX!S!j!r!s!w$}%P%S%U(`+r+u.b.d.l0`0a0i1aW$`t'i+],gS'i$h*sS+](T+gT,g)W,kQ'_$^R*a'_Q*t'oR-m*tQ/p-oS0{/p0|R0|/qQ-}+XR/|-}Q+g(TR.Y+gS+`(T+gS,h)W,kQ.Q+]W.T+`,h.Q/OR/O,gQ)R%eR,e)RQ'|$oR+U'|Q1]0VR1w1]Q${{R(^${Q+t(aR.c+tQ+w(bR.g+wQ+}(cQ,P(dT.m+},PQ(|%`S,a(|7tR7t7VQ(y%^R,^(yQ,k)WR/R,kQ)`%oS,q)`/WR/W,rQ,v)dR/^,vT!uV!rj!iPVX!j!r!s!w(`+r.l0`0a1aQ%Q!SQ(a$}W(h%P%S%U0iQ.e+uQ0Z.bR0[.d|ZPVX!S!j!r!s!w$}%P%S%U(`+r+u.b.d.l0`0a0i1aQ#f[U#m_#s&wQ#wbQ$VkQ$WlQ$XmQ$YnQ$ZoQ$[pQ$sx^$uy2_4b6e8q:m:nQ$vzQ%W!WQ%Y!XQ%[!YW%`!]%R(l,VU%s!g&p-RQ%|!yQ&O!zQ&Q!{S&U!})v^&^#R2a4d6g8t:p:qQ&_#SQ&`#TQ&a#UQ&b#VQ&c#WQ&d#XQ&e#YQ&f#ZQ&g#[Q&h#]Q&i#^Q&j#_Q&k#`Q&l#aQ&m#bQ&u#nQ&v#oS&{#t'OQ'X$RQ'Z$SQ'[$UQ(]$yQ(p%TQ)q%}Q)s&SQ)u&WQ*O&tS*['U4ZQ*^'Y^*_2[3u5v8Z:a=R=SQ+S'zQ+V(OQ,`({Q,c)PQ,y)iQ,{)pQ,})tQ-V*PQ-W*TQ-X*U^-]2]3v5w8[:b=T=UQ-i*oQ-x+PQ.k+zQ.w,XQ/`-QQ/h-dQ/n-kQ/y-zQ0r/cQ0u/iQ0x/mQ1Q/xU1X0V1]9WQ1d0eQ1m0vQ1q1RQ2Z2^Q2qjQ2r3yQ2x3zQ2y3|Q2z4OQ2{4QQ2|4SQ2}4UQ3O2`Q3Q2bQ3R2cQ3S2dQ3T2eQ3U2fQ3V2gQ3W2hQ3X2iQ3Y2jQ3Z2kQ3[2lQ3]2mQ3^2nQ3_2oQ3`2pQ3a2sQ3b2tQ3c2uQ3e2vQ3f2wQ3i3PQ3j3dQ3l3gQ3m3hQ3n3kQ3q3oQ3r3pQ3t3sQ4Y4WQ4y3{Q4z3}Q4{4PQ4|4RQ4}4TQ5O4VQ5P4cQ5R4eQ5S4fQ5T4gQ5U4hQ5V4iQ5W4jQ5X4kQ5Y4lQ5Z4mQ5[4nQ5]4oQ5^4pQ5_4qQ5`4rQ5a4sQ5b4tQ5c4uQ5d4vQ5f4wQ5g4xQ5j5QQ5k5eQ5m5hQ5n5iQ5o5lQ5r5pQ5s5qQ5u5tQ6Q4aQ6R3xQ6V6TQ6}6^Q7O6_Q7P6`Q7Q6aQ7R6bQ7S6cQ7T6dQ7U6fU7V,T.t0dQ7W%cQ7Y6hQ7Z6iQ7[6jQ7]6kQ7^6lQ7_6mQ7`6nQ7a6oQ7b6pQ7c6qQ7d6rQ7e6sQ7f6tQ7g6uQ7h6vQ7j6xQ7k6yQ7n6zQ7p6{Q7q6|Q7x7XQ7y7iQ7{7oQ7}7rQ8O7sQ8P7uQ8Q7wQ8R7zQ8S7|Q8V8TQ8W8UQ8Y8XQ8]8fU9U#k&s7lQ9^8jQ9_8kQ9`8lQ9a8mQ9b8nQ9c8oQ9e8pQ9f8rQ9g8sQ9i8uQ9j8vQ9k8wQ9l8xQ9m8yQ9n8zQ9o8{Q9p8|Q9q8}Q9r9OQ9s9PQ9t9QQ9u9RQ9v9SQ9w9TQ9x9ZQ9z9[Q9{9]Q:P9hQ:Q9yQ:T9}Q:V:OQ:W:RQ:[:YQ:^:ZQ:`:_Q:c8iQ;j:dQ;k:eQ;l:fQ;m:gQ;n:hQ;o:iQ;p:jQ;q:kQ;r:lQ;s:oQ;v:rQ;w:sQ;x:tQ;y:uQ;z:vQ;{:wQ;|:xQ;}:yQ\u003CO:zQ\u003CP:{Q\u003CQ:|Q\u003CR:}Q\u003CS;OQ\u003CT;PQ\u003CU;QQ\u003CV;RQ\u003CW;SQ\u003CX;TQ\u003CY;UQ\u003CZ;VQ\u003C[;WQ\u003C];XQ\u003C^;YQ\u003C_;ZQ\u003C`;[Q\u003Ca;]Q\u003Cb;^Q\u003Cc;_Q\u003Cd;`Q\u003Ce;aQ\u003Cf;cQ\u003Cg;dQ\u003Ch;eQ\u003Ci;fQ\u003Cl;gQ\u003Cm;hQ\u003Cn;iQ\u003Cr;tQ\u003Cs;uQ\u003Ct\u003CjQ\u003Cu\u003CkQ\u003Cw\u003CoQ\u003Cx\u003CpQ\u003Cy\u003CqQ\u003Cz\u003CvQ\u003C}\u003C{Q=O\u003C|Q=Q=PQ=V8hQ=W8gQ=_=ZQ=`9VQ=a9XQ=q=mR=r=nR){&pQ%t!gQ)O%cT)y&p-R$SiPVX[bklmnopxyz!S!W!X!Y!j!r!s!w!{#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b$R$S$U$y$}%P%S%U%}&S'Y(O(`)p+P+r+u-z.b.d.l/x0`0a0e0i1R1a2[2]6x6y!t3w'U2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3z3|4O4Q4S4U5v5w!x6S3u3v3x3y3{3}4P4R4T4V4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t$O8e_j!]!g#k#n#o#s#t%R%T&p&s&t&w'O'z(l({)P)i*P*U,V,X-R6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6z6{6|7X7l7o7r7w7|8T8U8X8Z8[8f8g8h8i#|=X!y!z!}%c&W)t)v*T*o,T-d-k.t/c/i/m0d0v4W6T7i7s7u7z8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9Z9[9]9h9y9}:O:R:Y:Z:_:a:b;c;d=Z=m=n!v=k+z-Q9V9X:d:e:f:g:h:j:k:m:o:p:r:t:v:x:z:|;O;Q;S;U;W;Y;[;^;`;e;g;i;t\u003Cj\u003Co\u003Cp\u003Cv\u003C{\u003C|=P=R=T!]=l0V1]9W:i:l:n:q:s:u:w:y:{:};P;R;T;V;X;Z;];_;a;f;h;u\u003Ck\u003Cq=S=UQ#r_Q&r#kQ&z#sR)}&sS#q_#s^$Tj3x3y8f8g8h8iS*Q&w7lT9Y#k&sQ&}#tR*X'OR&T!|R&Z!}Q&Y!}R-O)vQ#|gQ'V#}S'h$h*sQ*Y'SQ*n'iQ*q'mQ*v'rQ+W(PS+[(T+gQ,m)ZQ-`*fQ-s*zQ-v*}Q-y+QS.P+]+`Q.z,ZQ/s-rQ/v-uQ/z-{Q0P.QQ1O/uQ1p1PQ4^5}Q4_6OQ4`6PQ5y6]Q6Y8bQ6Z8cQ6[8dQ:U=dQ:X=eQ:]=iQ=g>OQ=h>PQ=j>QQ=u>XQ=v>YQ=w>ZR=x>[0t!OPVX[_bjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!{!}#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b#k#n#o#s#t$R$S$U$y$}%P%R%S%T%U%c%}&S&W&p&s&t&w'O'U'Y'z(O(`(l({)P)i)p)t)v*P*T*U*o+P+r+u+z,T,V,X-Q-R-d-k-z.b.d.l.t/c/i/m/x0V0`0a0d0e0i0v1R1]1a2[2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3u3v3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t5v5w6T6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6x6y6z6{6|7X7i7l7o7r7s7u7w7z7|8T8U8X8Z8[8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9V9W9X9Z9[9]9h9y9}:O:R:Y:Z:_:a:b:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:};O;P;Q;R;S;T;U;V;W;X;Y;Z;[;];^;_;`;a;c;d;e;f;g;h;i;t;u\u003Cj\u003Ck\u003Co\u003Cp\u003Cq\u003Cv\u003C{\u003C|=P=R=S=T=U=Z=m=n!v$Pg#}$h'S'i'm'r(P(T)Z*f*s*z*}+Q+]+`+g,Z-r-u-{.Q/u1P5}6O6P6]8b8c8d=d=e=i>O>P>Q>X>Y>Z>[S$]r'^Q%k!eS%o!f%rQ)b%pU+X(R(S+dQ,p)_Q,t)cQ/Z,uQ/{-|R0p/[|vPVX!S!j!r!s!w$}%P%S%U(`+r+u.b.d.l0`0a0i1a#U#i[bklmnopxyz!W!X!Y!{#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b$R$S$U$y%}&S'Y(O)p+P-z/x0e1R2[2]6x6yd+^(T)W+]+`+g,g,h,k.Q/O!t6w'U2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3z3|4O4Q4S4U5v5w!x;b3u3v3x3y3{3}4P4R4T4V4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t$O=z_j!]!g#k#n#o#s#t%R%T&p&s&t&w'O'z(l({)P)i*P*U,V,X-R6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6z6{6|7X7l7o7r7w7|8T8U8X8Z8[8f8g8h8i#|>]!y!z!}%c&W)t)v*T*o,T-d-k.t/c/i/m0d0v4W6T7i7s7u7z8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9Z9[9]9h9y9}:O:R:Y:Z:_:a:b;c;d=Z=m=n!v>^+z-Q9V9X:d:e:f:g:h:j:k:m:o:p:r:t:v:x:z:|;O;Q;S;U;W;Y;[;^;`;e;g;i;t\u003Cj\u003Co\u003Cp\u003Cv\u003C{\u003C|=P=R=T!]>_0V1]9W:i:l:n:q:s:u:w:y:{:};P;R;T;V;X;Z;];_;a;f;h;u\u003Ck\u003Cq=S=UR'p$hQ'o$hR-l*sR$_rR-q*wQ+Y(RQ+Z(SR.X+dT+f(T+ge+_(T)W+]+`+g,g,h,k.Q/OQ%f!_Q'b$bQ*c'cQ.U+aQ0S.RR1U0QQ#eZQ%X!WQ%Z!XQ%]!YQ'}$pQ(s%VQ(t%WQ(u%YQ(v%[Q(}%bQ)S%fQ)[%kQ)f%qQ)k%tQ*b'bQ,n)]Q-^*cQ.V+bQ.W+cQ.e+xQ.o,QQ.p,RQ.q,SQ.v,WQ.y,YQ.},bQ/U,oQ/}.OQ0T.SQ0U.UQ0W.XQ0[.hQ0k/QQ0q/_Q1S0OQ1V0RQ1W0SQ1`0_Q1h0jQ1r1TQ1s1UQ1v1[Q1y1_Q1}1jQ2T1{R2U1|Q$pvS+b(T+gU.O+[+]+`S0O.P.QR1T0P|!aPVX!S!j!r!s!w$}%P%S%U(`+r+u.b.d.l0`0a0i1aQ$dtW+c(T)W+g,kW.S+]+`,g,hT0R.Q/O0t!OPVX[_bjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!{!}#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b#k#n#o#s#t$R$S$U$y$}%P%R%S%T%U%c%}&S&W&p&s&t&w'O'U'Y'z(O(`(l({)P)i)p)t)v*P*T*U*o+P+r+u+z,T,V,X-Q-R-d-k-z.b.d.l.t/c/i/m/x0V0`0a0d0e0i0v1R1]1a2[2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3u3v3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t5v5w6T6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6x6y6z6{6|7X7i7l7o7r7s7u7w7z7|8T8U8X8Z8[8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9V9W9X9Z9[9]9h9y9}:O:R:Y:Z:_:a:b:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:};O;P;Q;R;S;T;U;V;W;X;Y;Z;[;];^;_;`;a;c;d;e;f;g;h;i;t;u\u003Cj\u003Ck\u003Co\u003Cp\u003Cq\u003Cv\u003C{\u003C|=P=R=S=T=U=Z=m=nR.|,_0w}PVX[_bjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!{!}#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#b#k#n#o#s#t$R$S$U$y$}%P%R%S%T%U%c%}&S&W&p&s&t&w'O'U'Y'z(O(`(l({)P)i)p)t)v*P*T*U*o+P+r+u+z,T,V,X,_-Q-R-d-k-z.b.d.l.t/c/i/m/x0V0`0a0d0e0i0v1R1]1a2[2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2s2t2u2v2w3P3d3g3h3k3o3p3s3u3v3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4Z4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x5Q5e5h5i5l5p5q5t5v5w6T6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6x6y6z6{6|7X7i7l7o7r7s7u7w7z7|8T8U8X8Z8[8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9T9V9W9X9Z9[9]9h9y9}:O:R:Y:Z:_:a:b:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:{:|:};O;P;Q;R;S;T;U;V;W;X;Y;Z;[;];^;_;`;a;c;d;e;f;g;h;i;t;u\u003Cj\u003Ck\u003Co\u003Cp\u003Cq\u003Cv\u003C{\u003C|=P=R=S=T=U=Z=m=nT$w{${Q(i%PQ(n%SQ(q%UR1f0iQ%b!]Q(m%RQ,U(lQ.s,TQ.u,VQ0c.tR1c0dQ%q!fR)]%rR)e%p\\\",nodeNames:\\\"⚠ ( HeredocString EscapeSequence abstract LogicOp array as Boolean break case catch clone const continue default declare do echo else elseif enddeclare endfor endforeach endif endswitch endwhile enum extends final finally fn for foreach from function global goto if implements include include_once LogicOp insteadof interface list match namespace new null LogicOp print require require_once return switch throw trait try unset use var Visibility while LogicOp yield LineComment BlockComment TextInterpolation PhpClose Text PhpOpen Template TextInterpolation EmptyStatement ; } { Block : LabelStatement Name ExpressionStatement ConditionalExpression LogicOp MatchExpression ) ( ParenthesizedExpression MatchBlock MatchArm , => AssignmentExpression ArrayExpression ValueList & VariadicUnpacking ... Pair [ ] ListExpression ValueList Pair Pair SubscriptExpression MemberExpression -> ?-> VariableName DynamicVariable $ ${ CallExpression ArgList NamedArgument SpreadArgument CastExpression UnionType LogicOp OptionalType NamedType QualifiedName \\\\\\\\ NamespaceName ScopedExpression :: ClassMemberName AssignOp UpdateExpression UpdateOp YieldExpression BinaryExpression LogicOp LogicOp LogicOp BitOp BitOp BitOp CompareOp CompareOp BitOp ArithOp ConcatOp ArithOp ArithOp IncludeExpression RequireExpression CloneExpression UnaryExpression ControlOp LogicOp PrintIntrinsic FunctionExpression static ParamList Parameter #[ Attributes Attribute VariadicParameter PropertyParameter UseList ArrowFunction NewExpression class BaseClause ClassInterfaceClause DeclarationList ConstDeclaration VariableDeclarator PropertyDeclaration VariableDeclarator MethodDeclaration UseDeclaration UseList UseInsteadOfClause UseAsClause UpdateExpression ArithOp ShellExpression ThrowExpression Integer Float String MemberExpression SubscriptExpression UnaryExpression ArithOp Interpolation String IfStatement ColonBlock SwitchStatement Block CaseStatement DefaultStatement ColonBlock WhileStatement EmptyStatement DoStatement ForStatement ForSpec SequenceExpression ForeachStatement ForSpec Pair GotoStatement ContinueStatement BreakStatement ReturnStatement TryStatement CatchDeclarator DeclareStatement EchoStatement UnsetStatement ConstDeclaration FunctionDefinition ClassDeclaration InterfaceDeclaration TraitDeclaration EnumDeclaration EnumBody EnumCase NamespaceDefinition NamespaceUseDeclaration UseGroup UseClause UseClause GlobalDeclaration FunctionStaticDeclaration Program\\\",maxTerm:304,nodeProps:[[\\\"group\\\",-36,2,8,49,81,83,85,88,93,94,102,106,107,110,111,114,118,123,126,130,132,133,147,148,149,150,153,154,164,165,179,181,182,183,184,185,191,\\\"Expression\\\",-28,74,78,80,82,192,194,199,201,202,205,208,209,210,211,212,214,215,216,217,218,219,220,221,222,225,226,230,231,\\\"Statement\\\",-3,119,121,122,\\\"Type\\\"],[\\\"isolate\\\",-4,66,67,70,191,\\\"\\\"],[\\\"openedBy\\\",69,\\\"phpOpen\\\",76,\\\"{\\\",86,\\\"(\\\",101,\\\"#[\\\"],[\\\"closedBy\\\",71,\\\"phpClose\\\",77,\\\"}\\\",87,\\\")\\\",158,\\\"]\\\"]],propSources:[phpHighlighting],skippedNodes:[0],repeatNodeCount:29,tokenData:\\\"!F|_R!]OX$zXY&^YZ'sZ]$z]^&^^p$zpq&^qr)Rrs+Pst+otu2buv5evw6rwx8Vxy>]yz>yz{?g{|@}|}Bb}!OCO!O!PDh!P!QKT!Q!R!!o!R![!$q![!]!,P!]!^!-a!^!_!-}!_!`!1S!`!a!2d!a!b!3t!b!c!7^!c!d!7z!d!e!9W!e!}!7z!}#O!;^#O#P!;z#P#Q!\u003Ch#Q#R!=U#R#S!7z#S#T!=u#T#U!7z#U#V!9W#V#o!7z#o#p!Co#p#q!D]#q#r!Er#r#s!F`#s$f$z$f$g&^$g&j!7z&j$I_$z$I_$I`&^$I`$KW$z$KW$KX&^$KX;'S$z;'S;=`&W\u003C%l?HT$z?HT?HU&^?HUO$zP%PV&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zP%kO&wPP%nWOY$zYZ%fZ!a$z!b;'S$z;'S;=`&W\u003C%l~$z~O$z~~%fP&ZP;=`\u003C%l$zV&ed&wP&vUOX$zXY&^YZ'sZ]$z]^&^^p$zpq&^q!^$z!^!_%k!_$f$z$f$g&^$g$I_$z$I_$I`&^$I`$KW$z$KW$KX&^$KX;'S$z;'S;=`&W\u003C%l?HT$z?HT?HU&^?HUO$zV'zW&wP&vUXY(dYZ(d]^(dpq(d$f$g(d$I_$I`(d$KW$KX(d?HT?HU(dU(iW&vUXY(dYZ(d]^(dpq(d$f$g(d$I_$I`(d$KW$KX(d?HT?HU(dR)YW$^Q&wPOY$zYZ%fZ!^$z!^!_%k!_!`)r!`;'S$z;'S;=`&W\u003C%lO$zR)yW$QQ&wPOY$zYZ%fZ!^$z!^!_%k!_!`*c!`;'S$z;'S;=`&W\u003C%lO$zR*jV$QQ&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zV+YV'fS&wP'gQOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zV+v]&wP!dUOY,oYZ%fZ],o]^$z^!^,o!^!_-i!_!a,o!a!b/y!b!},o!}#O1f#O;'S,o;'S;=`/s\u003C%lO,oV,vZ&wP!dUOY,oYZ%fZ],o]^$z^!^,o!^!_-i!_!a,o!a!b/y!b;'S,o;'S;=`/s\u003C%lO,oV-nZ!dUOY,oYZ%fZ],o]^$z^!a,o!a!b.a!b;'S,o;'S;=`/s\u003C%l~,o~O,o~~%fU.dWOY.|YZ/nZ].|]^/n^!`.|!a;'S.|;'S;=`/h\u003C%lO.|U/RV!dUOY.|Z].|^!a.|!a!b.a!b;'S.|;'S;=`/h\u003C%lO.|U/kP;=`\u003C%l.|U/sO!dUV/vP;=`\u003C%l,oV0OZ&wPOY,oYZ0qZ],o]^0x^!^,o!^!_-i!_!`,o!`!a$z!a;'S,o;'S;=`/s\u003C%lO,oV0xO&wP!dUV1PV&wP!dUOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zV1oZ&wP$dQ!dUOY,oYZ%fZ],o]^$z^!^,o!^!_-i!_!a,o!a!b/y!b;'S,o;'S;=`/s\u003C%lO,o_2i`&wP#dQOY$zYZ%fZ!^$z!^!_%k!_!c$z!c!}3k!}#R$z#R#S3k#S#T$z#T#o3k#o#p4w#p$g$z$g&j3k&j;'S$z;'S;=`&W\u003C%lO$z_3ra&wP#b^OY$zYZ%fZ!Q$z!Q![3k![!^$z!^!_%k!_!c$z!c!}3k!}#R$z#R#S3k#S#T$z#T#o3k#o$g$z$g&j3k&j;'S$z;'S;=`&W\u003C%lO$zV5OV&wP#eUOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR5lW&wP$VQOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W\u003C%lO$zR6]V#wQ&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zV6yY#SU&wPOY$zYZ%fZv$zvw7iw!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W\u003C%lO$zR7pV#|Q&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR8^Z&wP%VQOY8VYZ9PZw8Vwx;_x!^8V!^!_;{!_#O8V#O#P\u003Cy#P;'S8V;'S;=`>V\u003C%lO8VR9WV&wP%VQOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X\u003C%lO9mQ9rV%VQOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X\u003C%lO9mQ:^O%VQQ:aRO;'S9m;'S;=`:j;=`O9mQ:oW%VQOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`\u003C%l9m\u003C%lO9mQ;[P;=`\u003C%l9mR;fV&wP%VQOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR\u003CQ]%VQOY8VYZ9PZw8Vwx;_x!a8V!a!b9m!b#O8V#O#P\u003Cy#P;'S8V;'S;=`>V\u003C%l~8V~O8V~~%fR=OW&wPOY8VYZ9PZ!^8V!^!_;{!_;'S8V;'S;=`=h;=`\u003C%l9m\u003C%lO8VR=mW%VQOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`\u003C%l8V\u003C%lO9mR>YP;=`\u003C%l8VR>dV!yQ&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zV?QV!xU&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR?nY&wP$VQOY$zYZ%fZz$zz{@^{!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W\u003C%lO$zR@eW$WQ&wPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W\u003C%lO$zRAUY$TQ&wPOY$zYZ%fZ{$z{|At|!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W\u003C%lO$zRA{V$zQ&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zRBiV!}Q&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$z_CXZ$TQ%TW&wPOY$zYZ%fZ}$z}!OAt!O!^$z!^!_%k!_!`6U!`!aCz!a;'S$z;'S;=`&W\u003C%lO$zVDRV#`U&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zVDo[&wP$UQOY$zYZ%fZ!O$z!O!PEe!P!Q$z!Q![Fs![!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W\u003C%lO$zVEjX&wPOY$zYZ%fZ!O$z!O!PFV!P!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zVF^V#UU&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zRFz_&wP%OQOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#SJc#S#X$z#X#YGy#Y;'S$z;'S;=`&W\u003C%lO$zRHO]&wPOY$zYZ%fZ{$z{|Hw|}$z}!OHw!O!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zRH|X&wPOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zRIpZ&wP%OQOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_#R$z#R#SHw#S;'S$z;'S;=`&W\u003C%lO$zRJhX&wPOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zVK[[&wP$VQOY$zYZ%fZz$zz{LQ{!P$z!P!Q,o!Q!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W\u003C%lO$zVLVX&wPOYLQYZLrZzLQz{N_{!^LQ!^!_! s!_;'SLQ;'S;=`!!i\u003C%lOLQVLwT&wPOzMWz{Mj{;'SMW;'S;=`NX\u003C%lOMWUMZTOzMWz{Mj{;'SMW;'S;=`NX\u003C%lOMWUMmVOzMWz{Mj{!PMW!P!QNS!Q;'SMW;'S;=`NX\u003C%lOMWUNXO!eUUN[P;=`\u003C%lMWVNdZ&wPOYLQYZLrZzLQz{N_{!PLQ!P!Q! V!Q!^LQ!^!_! s!_;'SLQ;'S;=`!!i\u003C%lOLQV! ^V!eU&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zV! vZOYLQYZLrZzLQz{N_{!aLQ!a!bMW!b;'SLQ;'S;=`!!i\u003C%l~LQ~OLQ~~%fV!!lP;=`\u003C%lLQZ!!vm&wP$}YOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!d$z!d!e!&o!e!g$z!g!hGy!h!q$z!q!r!(a!r!z$z!z!{!){!{#R$z#R#S!%}#S#U$z#U#V!&o#V#X$z#X#YGy#Y#c$z#c#d!(a#d#l$z#l#m!){#m;'S$z;'S;=`&W\u003C%lO$zZ!$xa&wP$}YOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#S!%}#S#X$z#X#YGy#Y;'S$z;'S;=`&W\u003C%lO$zZ!&SX&wPOY$zYZ%fZ!Q$z!Q![!$q![!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zZ!&tY&wPOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zZ!'k[&wP$}YOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_#R$z#R#S!&o#S;'S$z;'S;=`&W\u003C%lO$zZ!(fX&wPOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zZ!)YZ&wP$}YOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_#R$z#R#S!(a#S;'S$z;'S;=`&W\u003C%lO$zZ!*Q]&wPOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#T$z#T#Z!*y#Z;'S$z;'S;=`&W\u003C%lO$zZ!+Q_&wP$}YOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#R$z#R#S!){#S#T$z#T#Z!*y#Z;'S$z;'S;=`&W\u003C%lO$zR!,WX!qQ&wPOY$zYZ%fZ![$z![!]!,s!]!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR!,zV#sQ&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zV!-hV!mU&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR!.S[$RQOY$zYZ%fZ!^$z!^!_!.x!_!`!/i!`!a*c!a!b!0]!b;'S$z;'S;=`&W\u003C%l~$z~O$z~~%fR!/PW$SQ&wPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W\u003C%lO$zR!/pX$RQ&wPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a*c!a;'S$z;'S;=`&W\u003C%lO$zP!0bR!iP!_!`!0k!r!s!0p#d#e!0pP!0pO!iPP!0sQ!j!k!0y#[#]!0yP!0|Q!r!s!0k#d#e!0kV!1ZX#uQ&wPOY$zYZ%fZ!^$z!^!_%k!_!`)r!`!a!1v!a;'S$z;'S;=`&W\u003C%lO$zV!1}V#OU&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR!2kX$RQ&wPOY$zYZ%fZ!^$z!^!_%k!_!`!3W!`!a!.x!a;'S$z;'S;=`&W\u003C%lO$zR!3_V$RQ&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zV!3{[!vQ&wPOY$zYZ%fZ}$z}!O!4q!O!^$z!^!_%k!_!`$z!`!a!6P!a!b!6m!b;'S$z;'S;=`&W\u003C%lO$zV!4vX&wPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a!5c!a;'S$z;'S;=`&W\u003C%lO$zV!5jV#aU&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zV!6WV!gU&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR!6tW#zQ&wPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W\u003C%lO$zR!7eV$]Q&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$z_!8Ra&wP!s^OY$zYZ%fZ!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W\u003C%lO$z_!9_e&wP!s^OY$zYZ%fZr$zrs!:psw$zwx8Vx!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W\u003C%lO$zR!:wV&wP'gQOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zV!;eV#WU&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zV!\u003CRV#pU&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR!\u003CoV#XQ&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR!=]W$OQ&wPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W\u003C%lO$zR!=zZ&wPOY!=uYZ!>mZ!^!=u!^!_!@u!_#O!=u#O#P!Aq#P#S!=u#S#T!B{#T;'S!=u;'S;=`!Ci\u003C%lO!=uR!>rV&wPO#O!?X#O#P!?q#P#S!?X#S#T!@j#T;'S!?X;'S;=`!@o\u003C%lO!?XQ!?[VO#O!?X#O#P!?q#P#S!?X#S#T!@j#T;'S!?X;'S;=`!@o\u003C%lO!?XQ!?tRO;'S!?X;'S;=`!?};=`O!?XQ!@QWO#O!?X#O#P!?q#P#S!?X#S#T!@j#T;'S!?X;'S;=`!@o;=`\u003C%l!?X\u003C%lO!?XQ!@oO${QQ!@rP;=`\u003C%l!?XR!@x]OY!=uYZ!>mZ!a!=u!a!b!?X!b#O!=u#O#P!Aq#P#S!=u#S#T!B{#T;'S!=u;'S;=`!Ci\u003C%l~!=u~O!=u~~%fR!AvW&wPOY!=uYZ!>mZ!^!=u!^!_!@u!_;'S!=u;'S;=`!B`;=`\u003C%l!?X\u003C%lO!=uR!BcWO#O!?X#O#P!?q#P#S!?X#S#T!@j#T;'S!?X;'S;=`!@o;=`\u003C%l!=u\u003C%lO!?XR!CSV${Q&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR!ClP;=`\u003C%l!=uV!CvV!oU&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zV!DfY#}Q#lS&wPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`#p$z#p#q!EU#q;'S$z;'S;=`&W\u003C%lO$zR!E]V#{Q&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR!EyV!nQ&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$zR!FgV$^Q&wPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W\u003C%lO$z\\\",tokenizers:[expression,interpolated,semicolon,0,1,2,3,eofToken],topRules:{\\\"Template\\\":[0,72],\\\"Program\\\":[1,232]},dynamicPrecedences:{\\\"284\\\":1},specialized:[{term:81,get:(value,stack)=>keywords$1(value)\u003C\u003C1,external:keywords$1},{term:81,get:value=>spec_Name[value]||-1}],tokenPrec:29354});const scriptText=54,StartCloseScriptTag=1,styleText=55,StartCloseStyleTag=2,textareaText=56,StartCloseTextareaTag=3,EndTag=4,SelfClosingEndTag=5,StartTag$1=6,StartScriptTag=7,StartStyleTag=8,StartTextareaTag=9,StartSelfClosingTag=10,StartCloseTag$1=11,NoMatchStartCloseTag=12,MismatchedStartCloseTag=13,missingCloseTag=57,IncompleteCloseTag=14,commentContent$1$1=58,Element$4=20,TagName=22,Attribute=23,AttributeName=24,AttributeValue=26,UnquotedAttributeValue=27,ScriptText=28,StyleText=31,TextareaText=34,OpenTag$1=36,CloseTag=37,Dialect_noMatch=0,Dialect_selfClosing=1;const selfClosers$1={area:true,base:true,br:true,col:true,command:true,embed:true,frame:true,hr:true,img:true,input:true,keygen:true,link:true,meta:true,param:true,source:true,track:true,wbr:true,menuitem:true};const implicitlyClosed={dd:true,li:true,optgroup:true,option:true,p:true,rp:true,rt:true,tbody:true,td:true,tfoot:true,th:true,tr:true};const closeOnOpen={dd:{dd:true,dt:true},dt:{dd:true,dt:true},li:{li:true},option:{option:true,optgroup:true},optgroup:{optgroup:true},p:{address:true,article:true,aside:true,blockquote:true,dir:true,div:true,dl:true,fieldset:true,footer:true,form:true,h1:true,h2:true,h3:true,h4:true,h5:true,h6:true,header:true,hgroup:true,hr:true,menu:true,nav:true,ol:true,p:true,pre:true,section:true,table:true,ul:true},rp:{rp:true,rt:true},rt:{rp:true,rt:true},tbody:{tbody:true,tfoot:true},td:{td:true,th:true},tfoot:{tbody:true},th:{td:true,th:true},thead:{tbody:true,tfoot:true},tr:{tr:true}};function nameChar$1(ch){return ch==45||ch==46||ch==58||ch>=65&&ch\u003C=90||ch==95||ch>=97&&ch\u003C=122||ch>=161;}function isSpace$1(ch){return ch==9||ch==10||ch==13||ch==32;}let cachedName$1=null,cachedInput$1=null,cachedPos$1=0;function tagNameAfter$1(input,offset){let pos=input.pos+offset;if(cachedPos$1==pos&&cachedInput$1==input)return cachedName$1;let next=input.peek(offset);while(isSpace$1(next))next=input.peek(++offset);let name=\\\"\\\";for(;;){if(!nameChar$1(next))break;name+=String.fromCharCode(next);next=input.peek(++offset);}cachedInput$1=input;cachedPos$1=pos;return cachedName$1=name?name.toLowerCase():next==question||next==bang?undefined:null;}const lessThan=60,greaterThan=62,slash$1=47,question=63,bang=33,dash$2=45;function ElementContext$1(name,parent){this.name=name;this.parent=parent;this.hash=parent?parent.hash:0;for(let i=0;i\u003Cname.length;i++)this.hash+=(this.hash\u003C\u003C4)+name.charCodeAt(i)+(name.charCodeAt(i)\u003C\u003C8);}const startTagTerms=[StartTag$1,StartSelfClosingTag,StartScriptTag,StartStyleTag,StartTextareaTag];const elementContext$1=new ContextTracker({start:null,shift(context,term,stack,input){return startTagTerms.indexOf(term)>-1?new ElementContext$1(tagNameAfter$1(input,1)||\\\"\\\",context):context;},reduce(context,term){return term==Element$4&&context?context.parent:context;},reuse(context,node,stack,input){let type=node.type.id;return type==StartTag$1||type==OpenTag$1?new ElementContext$1(tagNameAfter$1(input,1)||\\\"\\\",context):context;},hash(context){return context?context.hash:0;},strict:false});const tagStart$1=new ExternalTokenizer((input,stack)=>{if(input.next!=lessThan){if(input.next\u003C0&&stack.context)input.acceptToken(missingCloseTag);return;}input.advance();let close=input.next==slash$1;if(close)input.advance();let name=tagNameAfter$1(input,0);if(name===undefined)return;if(!name)return input.acceptToken(close?IncompleteCloseTag:StartTag$1);let parent=stack.context?stack.context.name:null;if(close){if(name==parent)return input.acceptToken(StartCloseTag$1);if(parent&&implicitlyClosed[parent])return input.acceptToken(missingCloseTag,-2);if(stack.dialectEnabled(Dialect_noMatch))return input.acceptToken(NoMatchStartCloseTag);for(let cx=stack.context;cx;cx=cx.parent)if(cx.name==name)return;input.acceptToken(MismatchedStartCloseTag);}else{if(name==\\\"script\\\")return input.acceptToken(StartScriptTag);if(name==\\\"style\\\")return input.acceptToken(StartStyleTag);if(name==\\\"textarea\\\")return input.acceptToken(StartTextareaTag);if(selfClosers$1.hasOwnProperty(name))return input.acceptToken(StartSelfClosingTag);if(parent&&closeOnOpen[parent]&&closeOnOpen[parent][name])input.acceptToken(missingCloseTag,-1);else input.acceptToken(StartTag$1);}},{contextual:true});const commentContent$2=new ExternalTokenizer(input=>{for(let dashes=0,i=0;;i++){if(input.next\u003C0){if(i)input.acceptToken(commentContent$1$1);break;}if(input.next==dash$2){dashes++;}else if(input.next==greaterThan&&dashes>=2){if(i>=3)input.acceptToken(commentContent$1$1,-2);break;}else{dashes=0;}input.advance();}});function inForeignElement(context){for(;context;context=context.parent)if(context.name==\\\"svg\\\"||context.name==\\\"math\\\")return true;return false;}const endTag=new ExternalTokenizer((input,stack)=>{if(input.next==slash$1&&input.peek(1)==greaterThan){let selfClosing=stack.dialectEnabled(Dialect_selfClosing)||inForeignElement(stack.context);input.acceptToken(selfClosing?SelfClosingEndTag:EndTag,2);}else if(input.next==greaterThan){input.acceptToken(EndTag,1);}});function contentTokenizer(tag,textToken,endToken){let lastState=2+tag.length;return new ExternalTokenizer(input=>{for(let state=0,matchedLen=0,i=0;;i++){if(input.next\u003C0){if(i)input.acceptToken(textToken);break;}if(state==0&&input.next==lessThan||state==1&&input.next==slash$1||state>=2&&state\u003ClastState&&input.next==tag.charCodeAt(state-2)){state++;matchedLen++;}else if((state==2||state==lastState)&&isSpace$1(input.next)){matchedLen++;}else if(state==lastState&&input.next==greaterThan){if(i>matchedLen)input.acceptToken(textToken,-matchedLen);else input.acceptToken(endToken,-(matchedLen-2));break;}else if((input.next==10||input.next==13)&&i){input.acceptToken(textToken,1);break;}else{state=matchedLen=0;}input.advance();}});}const scriptTokens=contentTokenizer(\\\"script\\\",scriptText,StartCloseScriptTag);const styleTokens=contentTokenizer(\\\"style\\\",styleText,StartCloseStyleTag);const textareaTokens=contentTokenizer(\\\"textarea\\\",textareaText,StartCloseTextareaTag);const htmlHighlighting=styleTags({\\\"Text RawText\\\":tags$1.content,\\\"StartTag StartCloseTag SelfClosingEndTag EndTag\\\":tags$1.angleBracket,TagName:tags$1.tagName,\\\"MismatchedCloseTag/TagName\\\":[tags$1.tagName,tags$1.invalid],AttributeName:tags$1.attributeName,\\\"AttributeValue UnquotedAttributeValue\\\":tags$1.attributeValue,Is:tags$1.definitionOperator,\\\"EntityReference CharacterReference\\\":tags$1.character,Comment:tags$1.blockComment,ProcessingInst:tags$1.processingInstruction,DoctypeDecl:tags$1.documentMeta});const parser$e=LRParser.deserialize({version:14,states:\\\",xOVO!rOOO!WQ#tO'#CqO!]Q#tO'#CzO!bQ#tO'#C}O!gQ#tO'#DQO!lQ#tO'#DSO!qOaO'#CpO!|ObO'#CpO#XOdO'#CpO$eO!rO'#CpOOO`'#Cp'#CpO$lO$fO'#DTO$tQ#tO'#DVO$yQ#tO'#DWOOO`'#Dk'#DkOOO`'#DY'#DYQVO!rOOO%OQ&rO,59]O%ZQ&rO,59fO%fQ&rO,59iO%qQ&rO,59lO%|Q&rO,59nOOOa'#D^'#D^O&XOaO'#CxO&dOaO,59[OOOb'#D_'#D_O&lObO'#C{O&wObO,59[OOOd'#D`'#D`O'POdO'#DOO'[OdO,59[OOO`'#Da'#DaO'dO!rO,59[O'kQ#tO'#DROOO`,59[,59[OOOp'#Db'#DbO'pO$fO,59oOOO`,59o,59oO'xQ#|O,59qO'}Q#|O,59rOOO`-E7W-E7WO(SQ&rO'#CsOOQW'#DZ'#DZO(bQ&rO1G.wOOOa1G.w1G.wOOO`1G/Y1G/YO(mQ&rO1G/QOOOb1G/Q1G/QO(xQ&rO1G/TOOOd1G/T1G/TO)TQ&rO1G/WOOO`1G/W1G/WO)`Q&rO1G/YOOOa-E7[-E7[O)kQ#tO'#CyOOO`1G.v1G.vOOOb-E7]-E7]O)pQ#tO'#C|OOOd-E7^-E7^O)uQ#tO'#DPOOO`-E7_-E7_O)zQ#|O,59mOOOp-E7`-E7`OOO`1G/Z1G/ZOOO`1G/]1G/]OOO`1G/^1G/^O*PQ,UO,59_OOQW-E7X-E7XOOOa7+$c7+$cOOO`7+$t7+$tOOOb7+$l7+$lOOOd7+$o7+$oOOO`7+$r7+$rO*[Q#|O,59eO*aQ#|O,59hO*fQ#|O,59kOOO`1G/X1G/XO*kO7[O'#CvO*|OMhO'#CvOOQW1G.y1G.yOOO`1G/P1G/POOO`1G/S1G/SOOO`1G/V1G/VOOOO'#D['#D[O+_O7[O,59bOOQW,59b,59bOOOO'#D]'#D]O+pOMhO,59bOOOO-E7Y-E7YOOQW1G.|1G.|OOOO-E7Z-E7Z\\\",stateData:\\\",]~O!^OS~OUSOVPOWQOXROYTO[]O][O^^O`^Oa^Ob^Oc^Ox^O{_O!dZO~OfaO~OfbO~OfcO~OfdO~OfeO~O!WfOPlP!ZlP~O!XiOQoP!ZoP~O!YlORrP!ZrP~OUSOVPOWQOXROYTOZqO[]O][O^^O`^Oa^Ob^Oc^Ox^O!dZO~O!ZrO~P#dO![sO!euO~OfvO~OfwO~OS|OT}OhyO~OS!POT}OhyO~OS!ROT}OhyO~OS!TOT}OhyO~OS}OT}OhyO~O!WfOPlX!ZlX~OP!WO!Z!XO~O!XiOQoX!ZoX~OQ!ZO!Z!XO~O!YlORrX!ZrX~OR!]O!Z!XO~O!Z!XO~P#dOf!_O~O![sO!e!aO~OS!bO~OS!cO~Oi!dOSgXTgXhgX~OS!fOT!gOhyO~OS!hOT!gOhyO~OS!iOT!gOhyO~OS!jOT!gOhyO~OS!gOT!gOhyO~Of!kO~Of!lO~Of!mO~OS!nO~Ok!qO!`!oO!b!pO~OS!rO~OS!sO~OS!tO~Oa!uOb!uOc!uO!`!wO!a!uO~Oa!xOb!xOc!xO!b!wO!c!xO~Oa!uOb!uOc!uO!`!{O!a!uO~Oa!xOb!xOc!xO!b!{O!c!xO~OT~bac!dx{!d~\\\",goto:\\\"%p!`PPPPPPPPPPPPPPPPPPPP!a!gP!mPP!yP!|#P#S#Y#]#`#f#i#l#r#x!aP!a!aP$O$U$l$r$x%O%U%[%bPPPPPPPP%hX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp\\\",nodeNames:\\\"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl\\\",maxTerm:67,context:elementContext$1,nodeProps:[[\\\"closedBy\\\",-10,1,2,3,7,8,9,10,11,12,13,\\\"EndTag\\\",6,\\\"EndTag SelfClosingEndTag\\\",-4,21,30,33,36,\\\"CloseTag\\\"],[\\\"openedBy\\\",4,\\\"StartTag StartCloseTag\\\",5,\\\"StartTag\\\",-4,29,32,35,37,\\\"OpenTag\\\"],[\\\"group\\\",-9,14,17,18,19,20,39,40,41,42,\\\"Entity\\\",16,\\\"Entity TextContent\\\",-3,28,31,34,\\\"TextContent Entity\\\"],[\\\"isolate\\\",-11,21,29,30,32,33,35,36,37,38,41,42,\\\"ltr\\\",-3,26,27,39,\\\"\\\"]],propSources:[htmlHighlighting],skippedNodes:[0],repeatNodeCount:9,tokenData:\\\"!\u003Cp!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs3_sv-_vw3}wxHYx}-_}!OH{!O!P-_!P!Q$q!Q![-_![!]Mz!]!^-_!^!_!$S!_!`!;x!`!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4U-_4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X\u003C%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!Z$|c`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z\u003C%lO$q!R&bX`P!a`!cpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y\u003C%lO&Xq'UV`P!cpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n\u003C%lO&}P'pT`POv'kw!^'k!_;'S'k;'S;=`(P\u003C%lO'kP(SP;=`\u003C%l'kp([S!cpOv(Vx;'S(V;'S;=`(h\u003C%lO(Vp(kP;=`\u003C%l(Vq(qP;=`\u003C%l&}a({W`P!a`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P\u003C%lO(t`)jT!a`Or)esv)ew;'S)e;'S;=`)y\u003C%lO)e`)|P;=`\u003C%l)ea*SP;=`\u003C%l(t!Q*^V!a`!cpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s\u003C%lO*V!Q*vP;=`\u003C%l*V!R*|P;=`\u003C%l&XW+UYkWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t\u003C%lO+PW+wP;=`\u003C%l+P!Z+}P;=`\u003C%l$q!a,]``P!a`!cp!^^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y\u003C%lO&X!_-ljhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X\u003C%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/ebhSkWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e\u003C%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0rXhSqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_\u003C%l?Ah0m?BY?Mn0mS1bP;=`\u003C%l0m[1hP;=`\u003C%l/^!V1vchS`P!a`!cpOq&Xqr1krs&}sv1kvw0mwx(tx!P1k!P!Q&X!Q!^1k!^!_*V!_!a&X!a#s1k#s$f&X$f;'S1k;'S;=`3R\u003C%l?Ah1k?Ah?BY&X?BY?Mn1k?MnO&X!V3UP;=`\u003C%l1k!_3[P;=`\u003C%l-_!Z3hV!`h`P!cpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n\u003C%lO&}!_4WihSkWc!ROX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst>]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V\u003C%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zbkWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n\u003C%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q\u003C%lO7S!R7qOa!R!R7tP;=`\u003C%l7S!Z8OYkWa!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t\u003C%lO+P!Z8qP;=`\u003C%l5u!_8{ihSkWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V\u003C%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbhSkWa!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e\u003C%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!V\u003CQchSOp7Sqr;{rs7Sst0mtw;{wx7Sx!P;{!P!Q7S!Q!];{!]!^=]!^!a7S!a#s;{#s$f7S$f;'S;{;'S;=`>P\u003C%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXhSa!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_\u003C%l?Ah0m?BY?Mn0m!V>SP;=`\u003C%l;{!_>YP;=`\u003C%l8t!_>dhhSkWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS\u003C%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TakWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq\u003C%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At\u003C%lOAY!RAtOb!R!RAwP;=`\u003C%lAY!ZBRYkWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t\u003C%lO+P!ZBtP;=`\u003C%l@O!_COhhSkWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS\u003C%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbhSkWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e\u003C%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbhSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|\u003C%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXhSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_\u003C%l?Ah0m?BY?Mn0m!VHPP;=`\u003C%lE{!_HVP;=`\u003C%lBw!ZHcW!bx`P!a`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P\u003C%lO(t!aIYlhS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X\u003C%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_khS`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X\u003C%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_X`P!a`!cp!eQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y\u003C%lO&X!aNZ!ZhSfQ`PkW!a`!cpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X\u003C%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`\u003C%lMz!R!$ZY!a`!cpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s\u003C%lO*V!R!%Q]!a`!cpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s\u003C%lO*V!R!&QX!a`!cpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s\u003C%lO*V!R!&vV!a`!cp!dPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s\u003C%lO*V!R!'dX!a`!cpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s\u003C%lO*V!R!(WX!a`!cpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s\u003C%lO*V!R!(zX!a`!cpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s\u003C%lO*V!R!)nX!a`!cpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s\u003C%lO*V!R!*bX!a`!cpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s\u003C%lO*V!R!+UX!a`!cpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s\u003C%lO*V!R!+xY!a`!cpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y\u003C%lO!+qq!,mV!cpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U\u003C%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k\u003C%lO!-SP!-kO{PP!-nP;=`\u003C%l!-Sq!-xS!cp{POv(Vx;'S(V;'S;=`(h\u003C%lO(Vq!.XP;=`\u003C%l!,ha!.aX!a`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d\u003C%lO!.[a!/TT!a`{POr)esv)ew;'S)e;'S;=`)y\u003C%lO)ea!/gP;=`\u003C%l!.[!R!/sV!a`!cp{POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s\u003C%lO*V!R!0]P;=`\u003C%l!+q!R!0gX!a`!cpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s\u003C%lO*V!R!1ZX!a`!cpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s\u003C%lO*V!R!1}X!a`!cpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s\u003C%lO*V!R!2qX!a`!cpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s\u003C%lO*V!R!3eX!a`!cpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s\u003C%lO*V!R!4XX!a`!cpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s\u003C%lO*V!R!4{Y!a`!cpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r\u003C%lO!4tq!5pV!cpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V\u003C%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q\u003C%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q\u003C%lO!6VP!7QOxPP!7TP;=`\u003C%l!6Vq!7]V!cpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V\u003C%lO!5kq!7yS!cpxPOv(Vx;'S(V;'S;=`(h\u003C%lO(Vq!8YP;=`\u003C%l!5ka!8bX!a`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V\u003C%lO!8]a!9SX!a`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V\u003C%lO!8]a!9vT!a`xPOr)esv)ew;'S)e;'S;=`)y\u003C%lO)ea!:YP;=`\u003C%l!8]!R!:dY!a`!cpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r\u003C%lO!4t!R!;]V!a`!cpxPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s\u003C%lO*V!R!;uP;=`\u003C%l!4t!V!\u003CTXiS`P!a`!cpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y\u003C%lO&X\\\",tokenizers:[scriptTokens,styleTokens,textareaTokens,endTag,tagStart$1,commentContent$2,0,1,2,3,4,5],topRules:{\\\"Document\\\":[0,15]},dialects:{noMatch:0,selfClosing:509},tokenPrec:511});function getAttrs(openTag,input){let attrs=Object.create(null);for(let _i270=0,_openTag$getChildren=openTag.getChildren(Attribute),_length270=_openTag$getChildren.length;_i270\u003C_length270;_i270++){let att=_openTag$getChildren[_i270];let name=att.getChild(AttributeName),value=att.getChild(AttributeValue)||att.getChild(UnquotedAttributeValue);if(name)attrs[input.read(name.from,name.to)]=!value?\\\"\\\":value.type.id==AttributeValue?input.read(value.from+1,value.to-1):input.read(value.from,value.to);}return attrs;}function findTagName(openTag,input){let tagNameNode=openTag.getChild(TagName);return tagNameNode?input.read(tagNameNode.from,tagNameNode.to):\\\" \\\";}function maybeNest(node,input,tags){let attrs;for(let _i271=0,_length271=tags.length;_i271\u003C_length271;_i271++){let tag=tags[_i271];if(!tag.attrs||tag.attrs(attrs||(attrs=getAttrs(node.node.parent.firstChild,input))))return{parser:tag.parser};}return null;}function configureNesting(tags=[],attributes=[]){let script=[],style=[],textarea=[],other=[];for(let _i272=0,_length272=tags.length;_i272\u003C_length272;_i272++){let tag=tags[_i272];let array=tag.tag==\\\"script\\\"?script:tag.tag==\\\"style\\\"?style:tag.tag==\\\"textarea\\\"?textarea:other;array.push(tag);}let attrs=attributes.length?Object.create(null):null;for(let _i273=0,_length273=attributes.length;_i273\u003C_length273;_i273++){let attr=attributes[_i273];(attrs[attr.name]||(attrs[attr.name]=[])).push(attr);}return parseMixed((node,input)=>{let id=node.type.id;if(id==ScriptText)return maybeNest(node,input,script);if(id==StyleText)return maybeNest(node,input,style);if(id==TextareaText)return maybeNest(node,input,textarea);if(id==Element$4&&other.length){let n=node.node,open=n.firstChild,tagName=open&&findTagName(open,input),attrs;if(tagName)for(let _i274=0,_length274=other.length;_i274\u003C_length274;_i274++){let tag=other[_i274];if(tag.tag==tagName&&(!tag.attrs||tag.attrs(attrs||(attrs=getAttrs(n,input))))){let close=n.lastChild;let to=close.type.id==CloseTag?close.from:n.to;if(to>open.to)return{parser:tag.parser,overlay:[{from:open.to,to}]};}}}if(attrs&&id==Attribute){let n=node.node,nameNode;if(nameNode=n.firstChild){let matches=attrs[input.read(nameNode.from,nameNode.to)];if(matches)for(let _i275=0,_length275=matches.length;_i275\u003C_length275;_i275++){let attr=matches[_i275];if(attr.tagName&&attr.tagName!=findTagName(n.parent,input))continue;let value=n.lastChild;if(value.type.id==AttributeValue){let from=value.from+1;let last=value.lastChild,to=value.to-(last&&last.isError?0:1);if(to>from)return{parser:attr.parser,overlay:[{from,to}]};}else if(value.type.id==UnquotedAttributeValue){return{parser:attr.parser,overlay:[{from:value.from,to:value.to}]};}}}}return null;});}const descendantOp$2=99,Unit$2=1,callee$1=100,identifier$3=101,VariableName$1=2;const space$4=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288];const colon$1=58,parenL$1=40,underscore$1=95,bracketL$1=91,dash$1=45,period$1=46,hash$2=35,percent$1=37,ampersand=38,backslash$1=92,newline$3=10;function isAlpha$3(ch){return ch>=65&&ch\u003C=90||ch>=97&&ch\u003C=122||ch>=161;}function isDigit$2(ch){return ch>=48&&ch\u003C=57;}const identifiers$1=new ExternalTokenizer((input,stack)=>{for(let inside=false,dashes=0,i=0;;i++){let{next}=input;if(isAlpha$3(next)||next==dash$1||next==underscore$1||inside&&isDigit$2(next)){if(!inside&&(next!=dash$1||i>0))inside=true;if(dashes===i&&next==dash$1)dashes++;input.advance();}else if(next==backslash$1&&input.peek(1)!=newline$3){input.advance();if(input.next>-1)input.advance();inside=true;}else{if(inside)input.acceptToken(next==parenL$1?callee$1:dashes==2&&stack.canShift(VariableName$1)?VariableName$1:identifier$3);break;}}});const descendant$2=new ExternalTokenizer(input=>{if(space$4.includes(input.peek(-1))){let{next}=input;if(isAlpha$3(next)||next==underscore$1||next==hash$2||next==period$1||next==bracketL$1||next==colon$1&&isAlpha$3(input.peek(1))||next==dash$1||next==ampersand)input.acceptToken(descendantOp$2);}});const unitToken$2=new ExternalTokenizer(input=>{if(!space$4.includes(input.peek(-1))){let{next}=input;if(next==percent$1){input.advance();input.acceptToken(Unit$2);}if(isAlpha$3(next)){do{input.advance();}while(isAlpha$3(input.next)||isDigit$2(input.next));input.acceptToken(Unit$2);}}});const cssHighlighting$1=styleTags({\\\"AtKeyword import charset namespace keyframes media supports\\\":tags$1.definitionKeyword,\\\"from to selector\\\":tags$1.keyword,NamespaceName:tags$1.namespace,KeyframeName:tags$1.labelName,KeyframeRangeName:tags$1.operatorKeyword,TagName:tags$1.tagName,ClassName:tags$1.className,PseudoClassName:tags$1.constant(tags$1.className),IdName:tags$1.labelName,\\\"FeatureName PropertyName\\\":tags$1.propertyName,AttributeName:tags$1.attributeName,NumberLiteral:tags$1.number,KeywordQuery:tags$1.keyword,UnaryQueryOp:tags$1.operatorKeyword,\\\"CallTag ValueName\\\":tags$1.atom,VariableName:tags$1.variableName,Callee:tags$1.operatorKeyword,Unit:tags$1.unit,\\\"UniversalSelector NestingSelector\\\":tags$1.definitionOperator,MatchOp:tags$1.compareOperator,\\\"ChildOp SiblingOp, LogicOp\\\":tags$1.logicOperator,BinOp:tags$1.arithmeticOperator,Important:tags$1.modifier,Comment:tags$1.blockComment,ColorLiteral:tags$1.color,\\\"ParenthesizedContent StringLiteral\\\":tags$1.string,\\\":\\\":tags$1.punctuation,\\\"PseudoOp #\\\":tags$1.derefOperator,\\\"; ,\\\":tags$1.separator,\\\"( )\\\":tags$1.paren,\\\"[ ]\\\":tags$1.squareBracket,\\\"{ }\\\":tags$1.brace});const spec_callee$1={__proto__:null,lang:32,\\\"nth-child\\\":32,\\\"nth-last-child\\\":32,\\\"nth-of-type\\\":32,\\\"nth-last-of-type\\\":32,dir:32,\\\"host-context\\\":32,url:60,\\\"url-prefix\\\":60,domain:60,regexp:60,selector:138};const spec_AtKeyword$2={__proto__:null,\\\"@import\\\":118,\\\"@media\\\":142,\\\"@charset\\\":146,\\\"@namespace\\\":150,\\\"@keyframes\\\":156,\\\"@supports\\\":168};const spec_identifier$5={__proto__:null,not:132,only:132};const parser$d=LRParser.deserialize({version:14,states:\\\":^QYQ[OOO#_Q[OOP#fOWOOOOQP'#Cd'#CdOOQP'#Cc'#CcO#kQ[O'#CfO$_QXO'#CaO$fQ[O'#ChO$qQ[O'#DTO$vQ[O'#DWOOQP'#Em'#EmO${QdO'#DgO%jQ[O'#DtO${QdO'#DvO%{Q[O'#DxO&WQ[O'#D{O&`Q[O'#ERO&nQ[O'#ETOOQS'#El'#ElOOQS'#EW'#EWQYQ[OOO&uQXO'#CdO'jQWO'#DcO'oQWO'#EsO'zQ[O'#EsQOQWOOP(UO#tO'#C_POOO)C@[)C@[OOQP'#Cg'#CgOOQP,59Q,59QO#kQ[O,59QO(aQ[O'#E[O({QWO,58{O)TQ[O,59SO$qQ[O,59oO$vQ[O,59rO(aQ[O,59uO(aQ[O,59wO(aQ[O,59xO)`Q[O'#DbOOQS,58{,58{OOQP'#Ck'#CkOOQO'#DR'#DROOQP,59S,59SO)gQWO,59SO)lQWO,59SOOQP'#DV'#DVOOQP,59o,59oOOQO'#DX'#DXO)qQ`O,59rOOQS'#Cp'#CpO${QdO'#CqO)yQvO'#CsO+ZQtO,5:ROOQO'#Cx'#CxO)lQWO'#CwO+oQWO'#CyO+tQ[O'#DOOOQS'#Ep'#EpOOQO'#Dj'#DjO+|Q[O'#DqO,[QWO'#EtO&`Q[O'#DoO,jQWO'#DrOOQO'#Eu'#EuO)OQWO,5:`O,oQpO,5:bOOQS'#Dz'#DzO,wQWO,5:dO,|Q[O,5:dOOQO'#D}'#D}O-UQWO,5:gO-ZQWO,5:mO-cQWO,5:oOOQS-E8U-E8UO${QdO,59}O-kQ[O'#E^O-xQWO,5;_O-xQWO,5;_POOO'#EV'#EVP.TO#tO,58yPOOO,58y,58yOOQP1G.l1G.lO.zQXO,5:vOOQO-E8Y-E8YOOQS1G.g1G.gOOQP1G.n1G.nO)gQWO1G.nO)lQWO1G.nOOQP1G/Z1G/ZO/XQ`O1G/^O/rQXO1G/aO0YQXO1G/cO0pQXO1G/dO1WQWO,59|O1]Q[O'#DSO1dQdO'#CoOOQP1G/^1G/^O${QdO1G/^O1kQpO,59]OOQS,59_,59_O${QdO,59aO1sQWO1G/mOOQS,59c,59cO1xQ!bO,59eOOQS'#DP'#DPOOQS'#EY'#EYO2QQ[O,59jOOQS,59j,59jO2YQWO'#DjO2eQWO,5:VO2jQWO,5:]O&`Q[O,5:XO&`Q[O'#E_O2rQWO,5;`O2}QWO,5:ZO(aQ[O,5:^OOQS1G/z1G/zOOQS1G/|1G/|OOQS1G0O1G0OO3`QWO1G0OO3eQdO'#EOOOQS1G0R1G0ROOQS1G0X1G0XOOQS1G0Z1G0ZO3pQtO1G/iOOQO,5:x,5:xO4WQ[O,5:xOOQO-E8[-E8[O4eQWO1G0yPOOO-E8T-E8TPOOO1G.e1G.eOOQP7+$Y7+$YOOQP7+$x7+$xO${QdO7+$xOOQS1G/h1G/hO4pQXO'#ErO4wQWO,59nO4|QtO'#EXO5tQdO'#EoO6OQWO,59ZO6TQpO7+$xOOQS1G.w1G.wOOQS1G.{1G.{OOQS7+%X7+%XO6]QWO1G/POOQS-E8W-E8WOOQS1G/U1G/UO${QdO1G/qOOQO1G/w1G/wOOQO1G/s1G/sO6bQWO,5:yOOQO-E8]-E8]O6pQXO1G/xOOQS7+%j7+%jO6wQYO'#CsOOQO'#EQ'#EQO7SQ`O'#EPOOQO'#EP'#EPO7_QWO'#E`O7gQdO,5:jOOQS,5:j,5:jO7rQtO'#E]O${QdO'#E]O8sQdO7+%TOOQO7+%T7+%TOOQO1G0d1G0dO9WQpO\u003C\u003CHdO9`QWO,5;^OOQP1G/Y1G/YOOQS-E8V-E8VO${QdO'#EZO9hQWO,5;ZOOQT1G.u1G.uOOQP\u003C\u003CHd\u003C\u003CHdOOQS7+$k7+$kO9pQdO7+%]OOQO7+%d7+%dOOQO,5:k,5:kO3hQdO'#EaO7_QWO,5:zOOQS,5:z,5:zOOQS-E8^-E8^OOQS1G0U1G0UO9wQtO,5:wOOQS-E8Z-E8ZOOQO\u003C\u003CHo\u003C\u003CHoOOQPAN>OAN>OO:xQdO,5:uOOQO-E8X-E8XOOQO\u003C\u003CHw\u003C\u003CHwOOQO,5:{,5:{OOQO-E8_-E8_OOQS1G0f1G0f\\\",stateData:\\\";[~O#ZOS#[QQ~OUYOXYO]VO^VOqXOxWO![aO!]ZO!i[O!k]O!m^O!p_O!v`O#XRO#bTO~OQfOUYOXYO]VO^VOqXOxWO![aO!]ZO!i[O!k]O!m^O!p_O!v`O#XeO#bTO~O#U#gP~P!ZO#[jO~O#XlO~O]qO^qOqsOtoOxrO!OtO!RvO#VuO#bnO~O!TwO~P#pO`}O#WzO#XyO~O#X!OO~O#X!QO~OQ![Ob!TOf![Oh![On!YOq!ZO#W!WO#X!SO#e!UO~Ob!^O!d!`O!g!aO#X!]O!T#hP~Oh!fOn!YO#X!eO~Oh!hO#X!hO~Ob!^O!d!`O!g!aO#X!]O~O!Y#hP~P%jO]WX]!WX^WXqWXtWXxWX!OWX!RWX!TWX#VWX#bWX~O]!mO~O!Y!nO#U#gX!S#gX~O#U#gX!S#gX~P!ZO#]!qO#^!qO#_!sO~OUYOXYO]VO^VOqXOxWO#XRO#bTO~OtoO!TwO~O`!zO#WzO#XyO~O!S#gP~P!ZOb#RO~Ob#SO~Op#TO|#UO~OP#WObgXjgX!YgX!dgX!ggX#XgXagXQgXfgXhgXngXqgXtgX!XgX#UgX#WgX#egXpgX!SgX~Ob!^Oj#XO!d!`O!g!aO#X!]O!Y#hP~Ob#[O~Op#`O#X#]O~Ob!^O!d!`O!g!aO#X#aO~Ot#eO!b#dO!T#hX!Y#hX~Ob#hO~Oj#XO!Y#jO~O!Y#kO~Oh#lOn!YO~O!T#mO~O!TwO!b#dO~O!TwO!Y#pO~O!Y#QX#U#QX!S#QX~P!ZO!Y!nO#U#ga!S#ga~O#]!qO#^!qO#_#wO~O]qO^qOqsOxrO!OtO!RvO#VuO#bnO~Ot#Oa!T#Oaa#Oa~P.`Op#yO|#zO~O]qO^qOqsOxrO#bnO~Ot}i!O}i!R}i!T}i#V}ia}i~P/aOt!Pi!O!Pi!R!Pi!T!Pi#V!Pia!Pi~P/aOt!Qi!O!Qi!R!Qi!T!Qi#V!Qia!Qi~P/aO!S#{O~Oa#fP~P(aOa#cP~P${Oa$SOj#XO~O!Y$UO~Oh$VOo$VO~Op$XO#X#]O~O]!`Xa!^X!b!^X~O]$YO~Oa$ZO!b#dO~Ot#eO!T#ha!Y#ha~O!b#dOt!ca!T!ca!Y!caa!ca~O!Y$`O~O!S$gO#X$bO#e$aO~Oj#XOt$iO!X$kO!Y!Vi#U!Vi!S!Vi~P${O!Y#Qa#U#Qa!S#Qa~P!ZO!Y!nO#U#gi!S#gi~Oa#fX~P#pOa$oO~Oj#XOQ!{Xa!{Xb!{Xf!{Xh!{Xn!{Xq!{Xt!{X#W!{X#X!{X#e!{X~Ot$qOa#cX~P${Oa$sO~Oj#XOp$tO~Oa$uO~O!b#dOt#Ra!T#Ra!Y#Ra~Oa$wO~P.`OP#WOtgX!TgX~O#e$aOt!sX!T!sX~Ot$yO!TwO~O!S$}O#X$bO#e$aO~Oj#XOQ#PXb#PXf#PXh#PXn#PXq#PXt#PX!X#PX!Y#PX#U#PX#W#PX#X#PX#e#PX!S#PX~Ot$iO!X%QO!Y!Vq#U!Vq!S!Vq~P${Oj#XOp%RO~OtoOa#fa~Ot$qOa#ca~Oa%UO~P${Oj#XOQ#Pab#Paf#Pah#Pan#Paq#Pat#Pa!X#Pa!Y#Pa#U#Pa#W#Pa#X#Pa#e#Pa!S#Pa~Oa!}at!}a~P${O#Zo#[#ej!R#e~\\\",goto:\\\"-g#jPPP#kP#nP#w$WP#w$g#wPP$mPPP$s$|$|P%`P$|P$|%z&^PPPP$|&vP&z'Q#wP'W#w'^P#wP#w#wPPP'd'y(WPP#nPP(_(_(i(_P(_P(_(_P#nP#nP#nP(l#nP(o(r(u(|#nP#nP)R)X)h)v)|*S*^*d*n*t*zPPPPPPPPPP+Q+ZP+v+yP,o,r,x-RRkQ_bOPdhw!n#skYOPdhotuvw!n#R#h#skSOPdhotuvw!n#R#h#sQmTR!tnQ{VR!xqQ!x}Q#Z!XR#x!zq![Z]!T!m#S#U#X#q#z$P$Y$i$j$q$v%Sp![Z]!T!m#S#U#X#q#z$P$Y$i$j$q$v%SU$d#m$f$yR$x$cq!XZ]!T!m#S#U#X#q#z$P$Y$i$j$q$v%Sp![Z]!T!m#S#U#X#q#z$P$Y$i$j$q$v%SQ!f^R#l!gT#^!Z#_Q|VR!yqQ!x|R#x!yQ!PWR!{rQ!RXR!|sQxUQ!wpQ#i!cQ#o!jQ#p!kQ${$eR%X$zSgPwQ!phQ#r!nR$l#sZfPhw!n#sa!b[`a!V!^!`#d#eR#b!^R!g^R!i_R#n!iS$e#m$fR%V$yV$c#m$f$yQ!rjR#v!rQdOShPwU!ldh#sR#s!nQ$P#SU$p$P$v%SQ$v$YR%S$qQ#_!ZR$W#_Q$r$PR%T$rQpUS!vp$nR$n#|Q$j#qR%P$jQ!ogS#t!o#uR#u!pQ#f!_R$^#fQ$f#mR$|$fQ$z$eR%W$z_cOPdhw!n#s^UOPdhw!n#sQ!uoQ!}tQ#OuQ#PvQ#|#RR$_#hR$Q#SQ!VZQ!d]Q#V!TQ#q!m[$O#S$P$Y$q$v%SQ$R#UQ$T#XS$h#q$jQ$m#zR%O$iR#}#RQiPR#QwQ!c[Q!kaR#Y!VU!_[a!VQ!j`Q#c!^Q#g!`Q$[#dR$]#e\\\",nodeNames:\\\"⚠ Unit VariableName Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee CallLiteral CallTag ParenthesizedContent ] [ LineNames LineName , PseudoClassName ArgList IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp } { Block Declaration PropertyName Important ; ImportStatement AtKeyword import KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports AtRule Styles\\\",maxTerm:117,nodeProps:[[\\\"isolate\\\",-2,3,24,\\\"\\\"],[\\\"openedBy\\\",17,\\\"(\\\",32,\\\"[\\\",50,\\\"{\\\"],[\\\"closedBy\\\",18,\\\")\\\",33,\\\"]\\\",51,\\\"}\\\"]],propSources:[cssHighlighting$1],skippedNodes:[0,3,87],repeatNodeCount:11,tokenData:\\\"J^~R!^OX$}X^%u^p$}pq%uqr)Xrs.Rst/utu6duv$}vw7^wx7oxy9^yz9oz{9t{|:_|}?Q}!O?c!O!P@Q!P!Q@i!Q![Ab![!]B]!]!^CX!^!_$}!_!`Cj!`!aC{!a!b$}!b!cDw!c!}$}!}#OFa#O#P$}#P#QFr#Q#R6d#R#T$}#T#UGT#U#c$}#c#dHf#d#o$}#o#pH{#p#q6d#q#rI^#r#sIo#s#y$}#y#z%u#z$f$}$f$g%u$g#BY$}#BY#BZ%u#BZ$IS$}$IS$I_%u$I_$I|$}$I|$JO%u$JO$JT$}$JT$JU%u$JU$KV$}$KV$KW%u$KW&FU$}&FU&FV%u&FV;'S$};'S;=`JW\u003C%lO$}`%QSOy%^z;'S%^;'S;=`%o\u003C%lO%^`%cSo`Oy%^z;'S%^;'S;=`%o\u003C%lO%^`%rP;=`\u003C%l%^~%zh#Z~OX%^X^'f^p%^pq'fqy%^z#y%^#y#z'f#z$f%^$f$g'f$g#BY%^#BY#BZ'f#BZ$IS%^$IS$I_'f$I_$I|%^$I|$JO'f$JO$JT%^$JT$JU'f$JU$KV%^$KV$KW'f$KW&FU%^&FU&FV'f&FV;'S%^;'S;=`%o\u003C%lO%^~'mh#Z~o`OX%^X^'f^p%^pq'fqy%^z#y%^#y#z'f#z$f%^$f$g'f$g#BY%^#BY#BZ'f#BZ$IS%^$IS$I_'f$I_$I|%^$I|$JO'f$JO$JT%^$JT$JU'f$JU$KV%^$KV$KW'f$KW&FU%^&FU&FV'f&FV;'S%^;'S;=`%o\u003C%lO%^l)[UOy%^z#]%^#]#^)n#^;'S%^;'S;=`%o\u003C%lO%^l)sUo`Oy%^z#a%^#a#b*V#b;'S%^;'S;=`%o\u003C%lO%^l*[Uo`Oy%^z#d%^#d#e*n#e;'S%^;'S;=`%o\u003C%lO%^l*sUo`Oy%^z#c%^#c#d+V#d;'S%^;'S;=`%o\u003C%lO%^l+[Uo`Oy%^z#f%^#f#g+n#g;'S%^;'S;=`%o\u003C%lO%^l+sUo`Oy%^z#h%^#h#i,V#i;'S%^;'S;=`%o\u003C%lO%^l,[Uo`Oy%^z#T%^#T#U,n#U;'S%^;'S;=`%o\u003C%lO%^l,sUo`Oy%^z#b%^#b#c-V#c;'S%^;'S;=`%o\u003C%lO%^l-[Uo`Oy%^z#h%^#h#i-n#i;'S%^;'S;=`%o\u003C%lO%^l-uS!X[o`Oy%^z;'S%^;'S;=`%o\u003C%lO%^~.UWOY.RZr.Rrs.ns#O.R#O#P.s#P;'S.R;'S;=`/o\u003C%lO.R~.sOh~~.vRO;'S.R;'S;=`/P;=`O.R~/SXOY.RZr.Rrs.ns#O.R#O#P.s#P;'S.R;'S;=`/o;=`\u003C%l.R\u003C%lO.R~/rP;=`\u003C%l.Rn/zYxQOy%^z!Q%^!Q![0j![!c%^!c!i0j!i#T%^#T#Z0j#Z;'S%^;'S;=`%o\u003C%lO%^l0oYo`Oy%^z!Q%^!Q![1_![!c%^!c!i1_!i#T%^#T#Z1_#Z;'S%^;'S;=`%o\u003C%lO%^l1dYo`Oy%^z!Q%^!Q![2S![!c%^!c!i2S!i#T%^#T#Z2S#Z;'S%^;'S;=`%o\u003C%lO%^l2ZYf[o`Oy%^z!Q%^!Q![2y![!c%^!c!i2y!i#T%^#T#Z2y#Z;'S%^;'S;=`%o\u003C%lO%^l3QYf[o`Oy%^z!Q%^!Q![3p![!c%^!c!i3p!i#T%^#T#Z3p#Z;'S%^;'S;=`%o\u003C%lO%^l3uYo`Oy%^z!Q%^!Q![4e![!c%^!c!i4e!i#T%^#T#Z4e#Z;'S%^;'S;=`%o\u003C%lO%^l4lYf[o`Oy%^z!Q%^!Q![5[![!c%^!c!i5[!i#T%^#T#Z5[#Z;'S%^;'S;=`%o\u003C%lO%^l5aYo`Oy%^z!Q%^!Q![6P![!c%^!c!i6P!i#T%^#T#Z6P#Z;'S%^;'S;=`%o\u003C%lO%^l6WSf[o`Oy%^z;'S%^;'S;=`%o\u003C%lO%^d6gUOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o\u003C%lO%^d7QS|So`Oy%^z;'S%^;'S;=`%o\u003C%lO%^b7cSXQOy%^z;'S%^;'S;=`%o\u003C%lO%^~7rWOY7oZw7owx.nx#O7o#O#P8[#P;'S7o;'S;=`9W\u003C%lO7o~8_RO;'S7o;'S;=`8h;=`O7o~8kXOY7oZw7owx.nx#O7o#O#P8[#P;'S7o;'S;=`9W;=`\u003C%l7o\u003C%lO7o~9ZP;=`\u003C%l7on9cSb^Oy%^z;'S%^;'S;=`%o\u003C%lO%^~9tOa~n9{UUQjWOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o\u003C%lO%^n:fWjW!RQOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o\u003C%lO%^l;TUo`Oy%^z!Q%^!Q![;g![;'S%^;'S;=`%o\u003C%lO%^l;nYo`#e[Oy%^z!Q%^!Q![;g![!g%^!g!h\u003C^!h#X%^#X#Y\u003C^#Y;'S%^;'S;=`%o\u003C%lO%^l\u003CcYo`Oy%^z{%^{|=R|}%^}!O=R!O!Q%^!Q![=j![;'S%^;'S;=`%o\u003C%lO%^l=WUo`Oy%^z!Q%^!Q![=j![;'S%^;'S;=`%o\u003C%lO%^l=qUo`#e[Oy%^z!Q%^!Q![=j![;'S%^;'S;=`%o\u003C%lO%^l>[[o`#e[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h\u003C^!h#X%^#X#Y\u003C^#Y;'S%^;'S;=`%o\u003C%lO%^n?VSt^Oy%^z;'S%^;'S;=`%o\u003C%lO%^l?hWjWOy%^z!O%^!O!P;O!P!Q%^!Q![>T![;'S%^;'S;=`%o\u003C%lO%^n@VU#bQOy%^z!Q%^!Q![;g![;'S%^;'S;=`%o\u003C%lO%^~@nTjWOy%^z{@}{;'S%^;'S;=`%o\u003C%lO%^~AUSo`#[~Oy%^z;'S%^;'S;=`%o\u003C%lO%^lAg[#e[Oy%^z!O%^!O!P;g!P!Q%^!Q![>T![!g%^!g!h\u003C^!h#X%^#X#Y\u003C^#Y;'S%^;'S;=`%o\u003C%lO%^bBbU]QOy%^z![%^![!]Bt!];'S%^;'S;=`%o\u003C%lO%^bB{S^Qo`Oy%^z;'S%^;'S;=`%o\u003C%lO%^nC^S!Y^Oy%^z;'S%^;'S;=`%o\u003C%lO%^dCoS|SOy%^z;'S%^;'S;=`%o\u003C%lO%^bDQU!OQOy%^z!`%^!`!aDd!a;'S%^;'S;=`%o\u003C%lO%^bDkS!OQo`Oy%^z;'S%^;'S;=`%o\u003C%lO%^bDzWOy%^z!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o\u003C%lO%^bEk[![Qo`Oy%^z}%^}!OEd!O!Q%^!Q![Ed![!c%^!c!}Ed!}#T%^#T#oEd#o;'S%^;'S;=`%o\u003C%lO%^nFfSq^Oy%^z;'S%^;'S;=`%o\u003C%lO%^nFwSp^Oy%^z;'S%^;'S;=`%o\u003C%lO%^bGWUOy%^z#b%^#b#cGj#c;'S%^;'S;=`%o\u003C%lO%^bGoUo`Oy%^z#W%^#W#XHR#X;'S%^;'S;=`%o\u003C%lO%^bHYS!bQo`Oy%^z;'S%^;'S;=`%o\u003C%lO%^bHiUOy%^z#f%^#f#gHR#g;'S%^;'S;=`%o\u003C%lO%^fIQS!TUOy%^z;'S%^;'S;=`%o\u003C%lO%^nIcS!S^Oy%^z;'S%^;'S;=`%o\u003C%lO%^fItU!RQOy%^z!_%^!_!`6y!`;'S%^;'S;=`%o\u003C%lO%^`JZP;=`\u003C%l$}\\\",tokenizers:[descendant$2,unitToken$2,identifiers$1,1,2,3,4,new LocalTokenGroup(\\\"m~RRYZ[z{a~~g~aO#^~~dP!P!Qg~lO#_~~\\\",28,105)],topRules:{\\\"StyleSheet\\\":[0,4],\\\"Styles\\\":[1,86]},specialized:[{term:100,get:value=>spec_callee$1[value]||-1},{term:58,get:value=>spec_AtKeyword$2[value]||-1},{term:101,get:value=>spec_identifier$5[value]||-1}],tokenPrec:1200});let _properties=null;function properties(){if(!_properties&&typeof document==\\\"object\\\"&&document.body){let{style}=document.body,names=[],seen=new Set();for(let prop in style)if(prop!=\\\"cssText\\\"&&prop!=\\\"cssFloat\\\"){if(typeof style[prop]==\\\"string\\\"){if(/[A-Z]/.test(prop))prop=prop.replace(/[A-Z]/g,ch=>\\\"-\\\"+ch.toLowerCase());if(!seen.has(prop)){names.push(prop);seen.add(prop);}}}_properties=names.sort().map(name=>({type:\\\"property\\\",label:name}));}return _properties||[];}const pseudoClasses=[\\\"active\\\",\\\"after\\\",\\\"any-link\\\",\\\"autofill\\\",\\\"backdrop\\\",\\\"before\\\",\\\"checked\\\",\\\"cue\\\",\\\"default\\\",\\\"defined\\\",\\\"disabled\\\",\\\"empty\\\",\\\"enabled\\\",\\\"file-selector-button\\\",\\\"first\\\",\\\"first-child\\\",\\\"first-letter\\\",\\\"first-line\\\",\\\"first-of-type\\\",\\\"focus\\\",\\\"focus-visible\\\",\\\"focus-within\\\",\\\"fullscreen\\\",\\\"has\\\",\\\"host\\\",\\\"host-context\\\",\\\"hover\\\",\\\"in-range\\\",\\\"indeterminate\\\",\\\"invalid\\\",\\\"is\\\",\\\"lang\\\",\\\"last-child\\\",\\\"last-of-type\\\",\\\"left\\\",\\\"link\\\",\\\"marker\\\",\\\"modal\\\",\\\"not\\\",\\\"nth-child\\\",\\\"nth-last-child\\\",\\\"nth-last-of-type\\\",\\\"nth-of-type\\\",\\\"only-child\\\",\\\"only-of-type\\\",\\\"optional\\\",\\\"out-of-range\\\",\\\"part\\\",\\\"placeholder\\\",\\\"placeholder-shown\\\",\\\"read-only\\\",\\\"read-write\\\",\\\"required\\\",\\\"right\\\",\\\"root\\\",\\\"scope\\\",\\\"selection\\\",\\\"slotted\\\",\\\"target\\\",\\\"target-text\\\",\\\"valid\\\",\\\"visited\\\",\\\"where\\\"].map(name=>({type:\\\"class\\\",label:name}));const values=[\\\"above\\\",\\\"absolute\\\",\\\"activeborder\\\",\\\"additive\\\",\\\"activecaption\\\",\\\"after-white-space\\\",\\\"ahead\\\",\\\"alias\\\",\\\"all\\\",\\\"all-scroll\\\",\\\"alphabetic\\\",\\\"alternate\\\",\\\"always\\\",\\\"antialiased\\\",\\\"appworkspace\\\",\\\"asterisks\\\",\\\"attr\\\",\\\"auto\\\",\\\"auto-flow\\\",\\\"avoid\\\",\\\"avoid-column\\\",\\\"avoid-page\\\",\\\"avoid-region\\\",\\\"axis-pan\\\",\\\"background\\\",\\\"backwards\\\",\\\"baseline\\\",\\\"below\\\",\\\"bidi-override\\\",\\\"blink\\\",\\\"block\\\",\\\"block-axis\\\",\\\"bold\\\",\\\"bolder\\\",\\\"border\\\",\\\"border-box\\\",\\\"both\\\",\\\"bottom\\\",\\\"break\\\",\\\"break-all\\\",\\\"break-word\\\",\\\"bullets\\\",\\\"button\\\",\\\"button-bevel\\\",\\\"buttonface\\\",\\\"buttonhighlight\\\",\\\"buttonshadow\\\",\\\"buttontext\\\",\\\"calc\\\",\\\"capitalize\\\",\\\"caps-lock-indicator\\\",\\\"caption\\\",\\\"captiontext\\\",\\\"caret\\\",\\\"cell\\\",\\\"center\\\",\\\"checkbox\\\",\\\"circle\\\",\\\"cjk-decimal\\\",\\\"clear\\\",\\\"clip\\\",\\\"close-quote\\\",\\\"col-resize\\\",\\\"collapse\\\",\\\"color\\\",\\\"color-burn\\\",\\\"color-dodge\\\",\\\"column\\\",\\\"column-reverse\\\",\\\"compact\\\",\\\"condensed\\\",\\\"contain\\\",\\\"content\\\",\\\"contents\\\",\\\"content-box\\\",\\\"context-menu\\\",\\\"continuous\\\",\\\"copy\\\",\\\"counter\\\",\\\"counters\\\",\\\"cover\\\",\\\"crop\\\",\\\"cross\\\",\\\"crosshair\\\",\\\"currentcolor\\\",\\\"cursive\\\",\\\"cyclic\\\",\\\"darken\\\",\\\"dashed\\\",\\\"decimal\\\",\\\"decimal-leading-zero\\\",\\\"default\\\",\\\"default-button\\\",\\\"dense\\\",\\\"destination-atop\\\",\\\"destination-in\\\",\\\"destination-out\\\",\\\"destination-over\\\",\\\"difference\\\",\\\"disc\\\",\\\"discard\\\",\\\"disclosure-closed\\\",\\\"disclosure-open\\\",\\\"document\\\",\\\"dot-dash\\\",\\\"dot-dot-dash\\\",\\\"dotted\\\",\\\"double\\\",\\\"down\\\",\\\"e-resize\\\",\\\"ease\\\",\\\"ease-in\\\",\\\"ease-in-out\\\",\\\"ease-out\\\",\\\"element\\\",\\\"ellipse\\\",\\\"ellipsis\\\",\\\"embed\\\",\\\"end\\\",\\\"ethiopic-abegede-gez\\\",\\\"ethiopic-halehame-aa-er\\\",\\\"ethiopic-halehame-gez\\\",\\\"ew-resize\\\",\\\"exclusion\\\",\\\"expanded\\\",\\\"extends\\\",\\\"extra-condensed\\\",\\\"extra-expanded\\\",\\\"fantasy\\\",\\\"fast\\\",\\\"fill\\\",\\\"fill-box\\\",\\\"fixed\\\",\\\"flat\\\",\\\"flex\\\",\\\"flex-end\\\",\\\"flex-start\\\",\\\"footnotes\\\",\\\"forwards\\\",\\\"from\\\",\\\"geometricPrecision\\\",\\\"graytext\\\",\\\"grid\\\",\\\"groove\\\",\\\"hand\\\",\\\"hard-light\\\",\\\"help\\\",\\\"hidden\\\",\\\"hide\\\",\\\"higher\\\",\\\"highlight\\\",\\\"highlighttext\\\",\\\"horizontal\\\",\\\"hsl\\\",\\\"hsla\\\",\\\"hue\\\",\\\"icon\\\",\\\"ignore\\\",\\\"inactiveborder\\\",\\\"inactivecaption\\\",\\\"inactivecaptiontext\\\",\\\"infinite\\\",\\\"infobackground\\\",\\\"infotext\\\",\\\"inherit\\\",\\\"initial\\\",\\\"inline\\\",\\\"inline-axis\\\",\\\"inline-block\\\",\\\"inline-flex\\\",\\\"inline-grid\\\",\\\"inline-table\\\",\\\"inset\\\",\\\"inside\\\",\\\"intrinsic\\\",\\\"invert\\\",\\\"italic\\\",\\\"justify\\\",\\\"keep-all\\\",\\\"landscape\\\",\\\"large\\\",\\\"larger\\\",\\\"left\\\",\\\"level\\\",\\\"lighter\\\",\\\"lighten\\\",\\\"line-through\\\",\\\"linear\\\",\\\"linear-gradient\\\",\\\"lines\\\",\\\"list-item\\\",\\\"listbox\\\",\\\"listitem\\\",\\\"local\\\",\\\"logical\\\",\\\"loud\\\",\\\"lower\\\",\\\"lower-hexadecimal\\\",\\\"lower-latin\\\",\\\"lower-norwegian\\\",\\\"lowercase\\\",\\\"ltr\\\",\\\"luminosity\\\",\\\"manipulation\\\",\\\"match\\\",\\\"matrix\\\",\\\"matrix3d\\\",\\\"medium\\\",\\\"menu\\\",\\\"menutext\\\",\\\"message-box\\\",\\\"middle\\\",\\\"min-intrinsic\\\",\\\"mix\\\",\\\"monospace\\\",\\\"move\\\",\\\"multiple\\\",\\\"multiple_mask_images\\\",\\\"multiply\\\",\\\"n-resize\\\",\\\"narrower\\\",\\\"ne-resize\\\",\\\"nesw-resize\\\",\\\"no-close-quote\\\",\\\"no-drop\\\",\\\"no-open-quote\\\",\\\"no-repeat\\\",\\\"none\\\",\\\"normal\\\",\\\"not-allowed\\\",\\\"nowrap\\\",\\\"ns-resize\\\",\\\"numbers\\\",\\\"numeric\\\",\\\"nw-resize\\\",\\\"nwse-resize\\\",\\\"oblique\\\",\\\"opacity\\\",\\\"open-quote\\\",\\\"optimizeLegibility\\\",\\\"optimizeSpeed\\\",\\\"outset\\\",\\\"outside\\\",\\\"outside-shape\\\",\\\"overlay\\\",\\\"overline\\\",\\\"padding\\\",\\\"padding-box\\\",\\\"painted\\\",\\\"page\\\",\\\"paused\\\",\\\"perspective\\\",\\\"pinch-zoom\\\",\\\"plus-darker\\\",\\\"plus-lighter\\\",\\\"pointer\\\",\\\"polygon\\\",\\\"portrait\\\",\\\"pre\\\",\\\"pre-line\\\",\\\"pre-wrap\\\",\\\"preserve-3d\\\",\\\"progress\\\",\\\"push-button\\\",\\\"radial-gradient\\\",\\\"radio\\\",\\\"read-only\\\",\\\"read-write\\\",\\\"read-write-plaintext-only\\\",\\\"rectangle\\\",\\\"region\\\",\\\"relative\\\",\\\"repeat\\\",\\\"repeating-linear-gradient\\\",\\\"repeating-radial-gradient\\\",\\\"repeat-x\\\",\\\"repeat-y\\\",\\\"reset\\\",\\\"reverse\\\",\\\"rgb\\\",\\\"rgba\\\",\\\"ridge\\\",\\\"right\\\",\\\"rotate\\\",\\\"rotate3d\\\",\\\"rotateX\\\",\\\"rotateY\\\",\\\"rotateZ\\\",\\\"round\\\",\\\"row\\\",\\\"row-resize\\\",\\\"row-reverse\\\",\\\"rtl\\\",\\\"run-in\\\",\\\"running\\\",\\\"s-resize\\\",\\\"sans-serif\\\",\\\"saturation\\\",\\\"scale\\\",\\\"scale3d\\\",\\\"scaleX\\\",\\\"scaleY\\\",\\\"scaleZ\\\",\\\"screen\\\",\\\"scroll\\\",\\\"scrollbar\\\",\\\"scroll-position\\\",\\\"se-resize\\\",\\\"self-start\\\",\\\"self-end\\\",\\\"semi-condensed\\\",\\\"semi-expanded\\\",\\\"separate\\\",\\\"serif\\\",\\\"show\\\",\\\"single\\\",\\\"skew\\\",\\\"skewX\\\",\\\"skewY\\\",\\\"skip-white-space\\\",\\\"slide\\\",\\\"slider-horizontal\\\",\\\"slider-vertical\\\",\\\"sliderthumb-horizontal\\\",\\\"sliderthumb-vertical\\\",\\\"slow\\\",\\\"small\\\",\\\"small-caps\\\",\\\"small-caption\\\",\\\"smaller\\\",\\\"soft-light\\\",\\\"solid\\\",\\\"source-atop\\\",\\\"source-in\\\",\\\"source-out\\\",\\\"source-over\\\",\\\"space\\\",\\\"space-around\\\",\\\"space-between\\\",\\\"space-evenly\\\",\\\"spell-out\\\",\\\"square\\\",\\\"start\\\",\\\"static\\\",\\\"status-bar\\\",\\\"stretch\\\",\\\"stroke\\\",\\\"stroke-box\\\",\\\"sub\\\",\\\"subpixel-antialiased\\\",\\\"svg_masks\\\",\\\"super\\\",\\\"sw-resize\\\",\\\"symbolic\\\",\\\"symbols\\\",\\\"system-ui\\\",\\\"table\\\",\\\"table-caption\\\",\\\"table-cell\\\",\\\"table-column\\\",\\\"table-column-group\\\",\\\"table-footer-group\\\",\\\"table-header-group\\\",\\\"table-row\\\",\\\"table-row-group\\\",\\\"text\\\",\\\"text-bottom\\\",\\\"text-top\\\",\\\"textarea\\\",\\\"textfield\\\",\\\"thick\\\",\\\"thin\\\",\\\"threeddarkshadow\\\",\\\"threedface\\\",\\\"threedhighlight\\\",\\\"threedlightshadow\\\",\\\"threedshadow\\\",\\\"to\\\",\\\"top\\\",\\\"transform\\\",\\\"translate\\\",\\\"translate3d\\\",\\\"translateX\\\",\\\"translateY\\\",\\\"translateZ\\\",\\\"transparent\\\",\\\"ultra-condensed\\\",\\\"ultra-expanded\\\",\\\"underline\\\",\\\"unidirectional-pan\\\",\\\"unset\\\",\\\"up\\\",\\\"upper-latin\\\",\\\"uppercase\\\",\\\"url\\\",\\\"var\\\",\\\"vertical\\\",\\\"vertical-text\\\",\\\"view-box\\\",\\\"visible\\\",\\\"visibleFill\\\",\\\"visiblePainted\\\",\\\"visibleStroke\\\",\\\"visual\\\",\\\"w-resize\\\",\\\"wait\\\",\\\"wave\\\",\\\"wider\\\",\\\"window\\\",\\\"windowframe\\\",\\\"windowtext\\\",\\\"words\\\",\\\"wrap\\\",\\\"wrap-reverse\\\",\\\"x-large\\\",\\\"x-small\\\",\\\"xor\\\",\\\"xx-large\\\",\\\"xx-small\\\"].map(name=>({type:\\\"keyword\\\",label:name})).concat([\\\"aliceblue\\\",\\\"antiquewhite\\\",\\\"aqua\\\",\\\"aquamarine\\\",\\\"azure\\\",\\\"beige\\\",\\\"bisque\\\",\\\"black\\\",\\\"blanchedalmond\\\",\\\"blue\\\",\\\"blueviolet\\\",\\\"brown\\\",\\\"burlywood\\\",\\\"cadetblue\\\",\\\"chartreuse\\\",\\\"chocolate\\\",\\\"coral\\\",\\\"cornflowerblue\\\",\\\"cornsilk\\\",\\\"crimson\\\",\\\"cyan\\\",\\\"darkblue\\\",\\\"darkcyan\\\",\\\"darkgoldenrod\\\",\\\"darkgray\\\",\\\"darkgreen\\\",\\\"darkkhaki\\\",\\\"darkmagenta\\\",\\\"darkolivegreen\\\",\\\"darkorange\\\",\\\"darkorchid\\\",\\\"darkred\\\",\\\"darksalmon\\\",\\\"darkseagreen\\\",\\\"darkslateblue\\\",\\\"darkslategray\\\",\\\"darkturquoise\\\",\\\"darkviolet\\\",\\\"deeppink\\\",\\\"deepskyblue\\\",\\\"dimgray\\\",\\\"dodgerblue\\\",\\\"firebrick\\\",\\\"floralwhite\\\",\\\"forestgreen\\\",\\\"fuchsia\\\",\\\"gainsboro\\\",\\\"ghostwhite\\\",\\\"gold\\\",\\\"goldenrod\\\",\\\"gray\\\",\\\"grey\\\",\\\"green\\\",\\\"greenyellow\\\",\\\"honeydew\\\",\\\"hotpink\\\",\\\"indianred\\\",\\\"indigo\\\",\\\"ivory\\\",\\\"khaki\\\",\\\"lavender\\\",\\\"lavenderblush\\\",\\\"lawngreen\\\",\\\"lemonchiffon\\\",\\\"lightblue\\\",\\\"lightcoral\\\",\\\"lightcyan\\\",\\\"lightgoldenrodyellow\\\",\\\"lightgray\\\",\\\"lightgreen\\\",\\\"lightpink\\\",\\\"lightsalmon\\\",\\\"lightseagreen\\\",\\\"lightskyblue\\\",\\\"lightslategray\\\",\\\"lightsteelblue\\\",\\\"lightyellow\\\",\\\"lime\\\",\\\"limegreen\\\",\\\"linen\\\",\\\"magenta\\\",\\\"maroon\\\",\\\"mediumaquamarine\\\",\\\"mediumblue\\\",\\\"mediumorchid\\\",\\\"mediumpurple\\\",\\\"mediumseagreen\\\",\\\"mediumslateblue\\\",\\\"mediumspringgreen\\\",\\\"mediumturquoise\\\",\\\"mediumvioletred\\\",\\\"midnightblue\\\",\\\"mintcream\\\",\\\"mistyrose\\\",\\\"moccasin\\\",\\\"navajowhite\\\",\\\"navy\\\",\\\"oldlace\\\",\\\"olive\\\",\\\"olivedrab\\\",\\\"orange\\\",\\\"orangered\\\",\\\"orchid\\\",\\\"palegoldenrod\\\",\\\"palegreen\\\",\\\"paleturquoise\\\",\\\"palevioletred\\\",\\\"papayawhip\\\",\\\"peachpuff\\\",\\\"peru\\\",\\\"pink\\\",\\\"plum\\\",\\\"powderblue\\\",\\\"purple\\\",\\\"rebeccapurple\\\",\\\"red\\\",\\\"rosybrown\\\",\\\"royalblue\\\",\\\"saddlebrown\\\",\\\"salmon\\\",\\\"sandybrown\\\",\\\"seagreen\\\",\\\"seashell\\\",\\\"sienna\\\",\\\"silver\\\",\\\"skyblue\\\",\\\"slateblue\\\",\\\"slategray\\\",\\\"snow\\\",\\\"springgreen\\\",\\\"steelblue\\\",\\\"tan\\\",\\\"teal\\\",\\\"thistle\\\",\\\"tomato\\\",\\\"turquoise\\\",\\\"violet\\\",\\\"wheat\\\",\\\"white\\\",\\\"whitesmoke\\\",\\\"yellow\\\",\\\"yellowgreen\\\"].map(name=>({type:\\\"constant\\\",label:name})));const tags=[\\\"a\\\",\\\"abbr\\\",\\\"address\\\",\\\"article\\\",\\\"aside\\\",\\\"b\\\",\\\"bdi\\\",\\\"bdo\\\",\\\"blockquote\\\",\\\"body\\\",\\\"br\\\",\\\"button\\\",\\\"canvas\\\",\\\"caption\\\",\\\"cite\\\",\\\"code\\\",\\\"col\\\",\\\"colgroup\\\",\\\"dd\\\",\\\"del\\\",\\\"details\\\",\\\"dfn\\\",\\\"dialog\\\",\\\"div\\\",\\\"dl\\\",\\\"dt\\\",\\\"em\\\",\\\"figcaption\\\",\\\"figure\\\",\\\"footer\\\",\\\"form\\\",\\\"header\\\",\\\"hgroup\\\",\\\"h1\\\",\\\"h2\\\",\\\"h3\\\",\\\"h4\\\",\\\"h5\\\",\\\"h6\\\",\\\"hr\\\",\\\"html\\\",\\\"i\\\",\\\"iframe\\\",\\\"img\\\",\\\"input\\\",\\\"ins\\\",\\\"kbd\\\",\\\"label\\\",\\\"legend\\\",\\\"li\\\",\\\"main\\\",\\\"meter\\\",\\\"nav\\\",\\\"ol\\\",\\\"output\\\",\\\"p\\\",\\\"pre\\\",\\\"ruby\\\",\\\"section\\\",\\\"select\\\",\\\"small\\\",\\\"source\\\",\\\"span\\\",\\\"strong\\\",\\\"sub\\\",\\\"summary\\\",\\\"sup\\\",\\\"table\\\",\\\"tbody\\\",\\\"td\\\",\\\"template\\\",\\\"textarea\\\",\\\"tfoot\\\",\\\"th\\\",\\\"thead\\\",\\\"tr\\\",\\\"u\\\",\\\"ul\\\"].map(name=>({type:\\\"type\\\",label:name}));const identifier$2=/^(\\\\w[\\\\w-]*|-\\\\w[\\\\w-]*|)$/,variable=/^-(-[\\\\w-]*)?$/;function isVarArg(node,doc){var _a;if(node.name==\\\"(\\\"||node.type.isError)node=node.parent||node;if(node.name!=\\\"ArgList\\\")return false;let callee=(_a=node.parent)===null||_a===void 0?void 0:_a.firstChild;if((callee===null||callee===void 0?void 0:callee.name)!=\\\"Callee\\\")return false;return doc.sliceString(callee.from,callee.to)==\\\"var\\\";}const VariablesByNode=new NodeWeakMap();const declSelector=[\\\"Declaration\\\"];function astTop(node){for(let cur=node;;){if(cur.type.isTop)return cur;if(!(cur=cur.parent))return node;}}function variableNames(doc,node,isVariable){if(node.to-node.from>4096){let known=VariablesByNode.get(node);if(known)return known;let result=[],seen=new Set(),cursor=node.cursor(IterMode.IncludeAnonymous);if(cursor.firstChild())do{for(let _i276=0,_variableNames=variableNames(doc,cursor.node,isVariable),_length276=_variableNames.length;_i276\u003C_length276;_i276++){let option=_variableNames[_i276];if(!seen.has(option.label)){seen.add(option.label);result.push(option);}}}while(cursor.nextSibling());VariablesByNode.set(node,result);return result;}else{let result=[],seen=new Set();node.cursor().iterate(node=>{var _a;if(isVariable(node)&&node.matchContext(declSelector)&&((_a=node.node.nextSibling)===null||_a===void 0?void 0:_a.name)==\\\":\\\"){let name=doc.sliceString(node.from,node.to);if(!seen.has(name)){seen.add(name);result.push({label:name,type:\\\"variable\\\"});}}});return result;}}const defineCSSCompletionSource=isVariable=>context=>{let{state,pos}=context,node=syntaxTree(state).resolveInner(pos,-1);let isDash=node.type.isError&&node.from==node.to-1&&state.doc.sliceString(node.from,node.to)==\\\"-\\\";if(node.name==\\\"PropertyName\\\"||(isDash||node.name==\\\"TagName\\\")&&/^(Block|Styles)$/.test(node.resolve(node.to).name))return{from:node.from,options:properties(),validFor:identifier$2};if(node.name==\\\"ValueName\\\")return{from:node.from,options:values,validFor:identifier$2};if(node.name==\\\"PseudoClassName\\\")return{from:node.from,options:pseudoClasses,validFor:identifier$2};if(isVariable(node)||(context.explicit||isDash)&&isVarArg(node,state.doc))return{from:isVariable(node)||isDash?node.from:pos,options:variableNames(state.doc,astTop(node),isVariable),validFor:variable};if(node.name==\\\"TagName\\\"){for(let{parent}=node;parent;parent=parent.parent)if(parent.name==\\\"Block\\\")return{from:node.from,options:properties(),validFor:identifier$2};return{from:node.from,options:tags,validFor:identifier$2};}if(!context.explicit)return null;let above=node.resolve(pos),before=above.childBefore(pos);if(before&&before.name==\\\":\\\"&&above.name==\\\"PseudoClassSelector\\\")return{from:pos,options:pseudoClasses,validFor:identifier$2};if(before&&before.name==\\\":\\\"&&above.name==\\\"Declaration\\\"||above.name==\\\"ArgList\\\")return{from:pos,options:values,validFor:identifier$2};if(above.name==\\\"Block\\\"||above.name==\\\"Styles\\\")return{from:pos,options:properties(),validFor:identifier$2};return null;};const cssCompletionSource=defineCSSCompletionSource(n=>n.name==\\\"VariableName\\\");const cssLanguage=LRLanguage.define({name:\\\"css\\\",parser:parser$d.configure({props:[indentNodeProp.add({Declaration:continuedIndent()}),foldNodeProp.add({\\\"Block KeyframeList\\\":foldInside})]}),languageData:{commentTokens:{block:{open:\\\"/*\\\",close:\\\"*/\\\"}},indentOnInput:/^\\\\s*\\\\}$/,wordChars:\\\"-\\\"}});function css(){return new LanguageSupport(cssLanguage,cssLanguage.data.of({autocomplete:cssCompletionSource}));}var _m15=Object.freeze({__proto__:null,css:css,cssCompletionSource:cssCompletionSource,cssLanguage:cssLanguage,defineCSSCompletionSource:defineCSSCompletionSource});const Targets=[\\\"_blank\\\",\\\"_self\\\",\\\"_top\\\",\\\"_parent\\\"];const Charsets=[\\\"ascii\\\",\\\"utf-8\\\",\\\"utf-16\\\",\\\"latin1\\\",\\\"latin1\\\"];const Methods=[\\\"get\\\",\\\"post\\\",\\\"put\\\",\\\"delete\\\"];const Encs=[\\\"application/x-www-form-urlencoded\\\",\\\"multipart/form-data\\\",\\\"text/plain\\\"];const Bool$1=[\\\"true\\\",\\\"false\\\"];const S={};const Tags$1={a:{attrs:{href:null,ping:null,type:null,media:null,target:Targets,hreflang:null}},abbr:S,address:S,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:[\\\"default\\\",\\\"rect\\\",\\\"circle\\\",\\\"poly\\\"]}},article:S,aside:S,audio:{attrs:{src:null,mediagroup:null,crossorigin:[\\\"anonymous\\\",\\\"use-credentials\\\"],preload:[\\\"none\\\",\\\"metadata\\\",\\\"auto\\\"],autoplay:[\\\"autoplay\\\"],loop:[\\\"loop\\\"],controls:[\\\"controls\\\"]}},b:S,base:{attrs:{href:null,target:Targets}},bdi:S,bdo:S,blockquote:{attrs:{cite:null}},body:S,br:S,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:[\\\"autofocus\\\"],disabled:[\\\"autofocus\\\"],formenctype:Encs,formmethod:Methods,formnovalidate:[\\\"novalidate\\\"],formtarget:Targets,type:[\\\"submit\\\",\\\"reset\\\",\\\"button\\\"]}},canvas:{attrs:{width:null,height:null}},caption:S,center:S,cite:S,code:S,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:[\\\"command\\\",\\\"checkbox\\\",\\\"radio\\\"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:[\\\"disabled\\\"],checked:[\\\"checked\\\"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:[\\\"disabled\\\"],multiple:[\\\"multiple\\\"]}},datalist:{attrs:{data:null}},dd:S,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:[\\\"open\\\"]}},dfn:S,div:S,dl:S,dt:S,em:S,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:[\\\"disabled\\\"],form:null,name:null}},figcaption:S,figure:S,footer:S,form:{attrs:{action:null,name:null,\\\"accept-charset\\\":Charsets,autocomplete:[\\\"on\\\",\\\"off\\\"],enctype:Encs,method:Methods,novalidate:[\\\"novalidate\\\"],target:Targets}},h1:S,h2:S,h3:S,h4:S,h5:S,h6:S,head:{children:[\\\"title\\\",\\\"base\\\",\\\"link\\\",\\\"style\\\",\\\"meta\\\",\\\"script\\\",\\\"noscript\\\",\\\"command\\\"]},header:S,hgroup:S,hr:S,html:{attrs:{manifest:null}},i:S,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:[\\\"allow-top-navigation\\\",\\\"allow-same-origin\\\",\\\"allow-forms\\\",\\\"allow-scripts\\\"],seamless:[\\\"seamless\\\"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:[\\\"anonymous\\\",\\\"use-credentials\\\"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:[\\\"audio/*\\\",\\\"video/*\\\",\\\"image/*\\\"],autocomplete:[\\\"on\\\",\\\"off\\\"],autofocus:[\\\"autofocus\\\"],checked:[\\\"checked\\\"],disabled:[\\\"disabled\\\"],formenctype:Encs,formmethod:Methods,formnovalidate:[\\\"novalidate\\\"],formtarget:Targets,multiple:[\\\"multiple\\\"],readonly:[\\\"readonly\\\"],required:[\\\"required\\\"],type:[\\\"hidden\\\",\\\"text\\\",\\\"search\\\",\\\"tel\\\",\\\"url\\\",\\\"email\\\",\\\"password\\\",\\\"datetime\\\",\\\"date\\\",\\\"month\\\",\\\"week\\\",\\\"time\\\",\\\"datetime-local\\\",\\\"number\\\",\\\"range\\\",\\\"color\\\",\\\"checkbox\\\",\\\"radio\\\",\\\"file\\\",\\\"submit\\\",\\\"image\\\",\\\"reset\\\",\\\"button\\\"]}},ins:{attrs:{cite:null,datetime:null}},kbd:S,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:[\\\"autofocus\\\"],disabled:[\\\"disabled\\\"],keytype:[\\\"RSA\\\"]}},label:{attrs:{for:null,form:null}},legend:S,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:[\\\"all\\\",\\\"16x16\\\",\\\"16x16 32x32\\\",\\\"16x16 32x32 64x64\\\"]}},map:{attrs:{name:null}},mark:S,menu:{attrs:{label:null,type:[\\\"list\\\",\\\"context\\\",\\\"toolbar\\\"]}},meta:{attrs:{content:null,charset:Charsets,name:[\\\"viewport\\\",\\\"application-name\\\",\\\"author\\\",\\\"description\\\",\\\"generator\\\",\\\"keywords\\\"],\\\"http-equiv\\\":[\\\"content-language\\\",\\\"content-type\\\",\\\"default-style\\\",\\\"refresh\\\"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:S,noscript:S,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:[\\\"typemustmatch\\\"]}},ol:{attrs:{reversed:[\\\"reversed\\\"],start:null,type:[\\\"1\\\",\\\"a\\\",\\\"A\\\",\\\"i\\\",\\\"I\\\"]},children:[\\\"li\\\",\\\"script\\\",\\\"template\\\",\\\"ul\\\",\\\"ol\\\"]},optgroup:{attrs:{disabled:[\\\"disabled\\\"],label:null}},option:{attrs:{disabled:[\\\"disabled\\\"],label:null,selected:[\\\"selected\\\"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:S,param:{attrs:{name:null,value:null}},pre:S,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:S,rt:S,ruby:S,samp:S,script:{attrs:{type:[\\\"text/javascript\\\"],src:null,async:[\\\"async\\\"],defer:[\\\"defer\\\"],charset:Charsets}},section:S,select:{attrs:{form:null,name:null,size:null,autofocus:[\\\"autofocus\\\"],disabled:[\\\"disabled\\\"],multiple:[\\\"multiple\\\"]}},slot:{attrs:{name:null}},small:S,source:{attrs:{src:null,type:null,media:null}},span:S,strong:S,style:{attrs:{type:[\\\"text/css\\\"],media:null,scoped:null}},sub:S,summary:S,sup:S,table:S,tbody:S,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:S,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:[\\\"autofocus\\\"],disabled:[\\\"disabled\\\"],readonly:[\\\"readonly\\\"],required:[\\\"required\\\"],wrap:[\\\"soft\\\",\\\"hard\\\"]}},tfoot:S,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:[\\\"row\\\",\\\"col\\\",\\\"rowgroup\\\",\\\"colgroup\\\"]}},thead:S,time:{attrs:{datetime:null}},title:S,tr:S,track:{attrs:{src:null,label:null,default:null,kind:[\\\"subtitles\\\",\\\"captions\\\",\\\"descriptions\\\",\\\"chapters\\\",\\\"metadata\\\"],srclang:null}},ul:{children:[\\\"li\\\",\\\"script\\\",\\\"template\\\",\\\"ul\\\",\\\"ol\\\"]},var:S,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:[\\\"anonymous\\\",\\\"use-credentials\\\"],preload:[\\\"auto\\\",\\\"metadata\\\",\\\"none\\\"],autoplay:[\\\"autoplay\\\"],mediagroup:[\\\"movie\\\"],muted:[\\\"muted\\\"],controls:[\\\"controls\\\"]}},wbr:S};const GlobalAttrs={accesskey:null,class:null,contenteditable:Bool$1,contextmenu:null,dir:[\\\"ltr\\\",\\\"rtl\\\",\\\"auto\\\"],draggable:[\\\"true\\\",\\\"false\\\",\\\"auto\\\"],dropzone:[\\\"copy\\\",\\\"move\\\",\\\"link\\\",\\\"string:\\\",\\\"file:\\\"],hidden:[\\\"hidden\\\"],id:null,inert:[\\\"inert\\\"],itemid:null,itemprop:null,itemref:null,itemscope:[\\\"itemscope\\\"],itemtype:null,lang:[\\\"ar\\\",\\\"bn\\\",\\\"de\\\",\\\"en-GB\\\",\\\"en-US\\\",\\\"es\\\",\\\"fr\\\",\\\"hi\\\",\\\"id\\\",\\\"ja\\\",\\\"pa\\\",\\\"pt\\\",\\\"ru\\\",\\\"tr\\\",\\\"zh\\\"],spellcheck:Bool$1,autocorrect:Bool$1,autocapitalize:Bool$1,style:null,tabindex:null,title:null,translate:[\\\"yes\\\",\\\"no\\\"],rel:[\\\"stylesheet\\\",\\\"alternate\\\",\\\"author\\\",\\\"bookmark\\\",\\\"help\\\",\\\"license\\\",\\\"next\\\",\\\"nofollow\\\",\\\"noreferrer\\\",\\\"prefetch\\\",\\\"prev\\\",\\\"search\\\",\\\"tag\\\"],role:\\\"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer\\\".split(\\\" \\\"),\\\"aria-activedescendant\\\":null,\\\"aria-atomic\\\":Bool$1,\\\"aria-autocomplete\\\":[\\\"inline\\\",\\\"list\\\",\\\"both\\\",\\\"none\\\"],\\\"aria-busy\\\":Bool$1,\\\"aria-checked\\\":[\\\"true\\\",\\\"false\\\",\\\"mixed\\\",\\\"undefined\\\"],\\\"aria-controls\\\":null,\\\"aria-describedby\\\":null,\\\"aria-disabled\\\":Bool$1,\\\"aria-dropeffect\\\":null,\\\"aria-expanded\\\":[\\\"true\\\",\\\"false\\\",\\\"undefined\\\"],\\\"aria-flowto\\\":null,\\\"aria-grabbed\\\":[\\\"true\\\",\\\"false\\\",\\\"undefined\\\"],\\\"aria-haspopup\\\":Bool$1,\\\"aria-hidden\\\":Bool$1,\\\"aria-invalid\\\":[\\\"true\\\",\\\"false\\\",\\\"grammar\\\",\\\"spelling\\\"],\\\"aria-label\\\":null,\\\"aria-labelledby\\\":null,\\\"aria-level\\\":null,\\\"aria-live\\\":[\\\"off\\\",\\\"polite\\\",\\\"assertive\\\"],\\\"aria-multiline\\\":Bool$1,\\\"aria-multiselectable\\\":Bool$1,\\\"aria-owns\\\":null,\\\"aria-posinset\\\":null,\\\"aria-pressed\\\":[\\\"true\\\",\\\"false\\\",\\\"mixed\\\",\\\"undefined\\\"],\\\"aria-readonly\\\":Bool$1,\\\"aria-relevant\\\":null,\\\"aria-required\\\":Bool$1,\\\"aria-selected\\\":[\\\"true\\\",\\\"false\\\",\\\"undefined\\\"],\\\"aria-setsize\\\":null,\\\"aria-sort\\\":[\\\"ascending\\\",\\\"descending\\\",\\\"none\\\",\\\"other\\\"],\\\"aria-valuemax\\\":null,\\\"aria-valuemin\\\":null,\\\"aria-valuenow\\\":null,\\\"aria-valuetext\\\":null};const eventAttributes=(\\\"beforeunload copy cut dragstart dragover dragleave dragenter dragend \\\"+\\\"drag paste focus blur change click load mousedown mouseenter mouseleave \\\"+\\\"mouseup keydown keyup resize scroll unload\\\").split(\\\" \\\").map(n=>\\\"on\\\"+n);for(let _i277=0,_length277=eventAttributes.length;_i277\u003C_length277;_i277++){let a=eventAttributes[_i277];GlobalAttrs[a]=null;}class Schema{constructor(extraTags,extraAttrs){this.tags=Object.assign(Object.assign({},Tags$1),extraTags);this.globalAttrs=Object.assign(Object.assign({},GlobalAttrs),extraAttrs);this.allTags=Object.keys(this.tags);this.globalAttrNames=Object.keys(this.globalAttrs);}}Schema.default=new Schema();function elementName$1(doc,tree,max=doc.length){if(!tree)return\\\"\\\";let tag=tree.firstChild;let name=tag&&tag.getChild(\\\"TagName\\\");return name?doc.sliceString(name.from,Math.min(name.to,max)):\\\"\\\";}function findParentElement$1(tree,skip=false){for(;tree;tree=tree.parent)if(tree.name==\\\"Element\\\"){if(skip)skip=false;else return tree;}return null;}function allowedChildren(doc,tree,schema){let parentInfo=schema.tags[elementName$1(doc,findParentElement$1(tree))];return(parentInfo===null||parentInfo===void 0?void 0:parentInfo.children)||schema.allTags;}function openTags(doc,tree){let open=[];for(let parent=findParentElement$1(tree);parent&&!parent.type.isTop;parent=findParentElement$1(parent.parent)){let tagName=elementName$1(doc,parent);if(tagName&&parent.lastChild.name==\\\"CloseTag\\\")break;if(tagName&&open.indexOf(tagName)\u003C0&&(tree.name==\\\"EndTag\\\"||tree.from>=parent.firstChild.to))open.push(tagName);}return open;}const identifier$1=/^[:\\\\-\\\\.\\\\w\\\\u00b7-\\\\uffff]*$/;function completeTag(state,schema,tree,from,to){let end=/\\\\s*>/.test(state.sliceDoc(to,to+5))?\\\"\\\":\\\">\\\";let parent=findParentElement$1(tree,true);return{from,to,options:allowedChildren(state.doc,parent,schema).map(tagName=>({label:tagName,type:\\\"type\\\"})).concat(openTags(state.doc,tree).map((tag,i)=>({label:\\\"/\\\"+tag,apply:\\\"/\\\"+tag+end,type:\\\"type\\\",boost:99-i}))),validFor:/^\\\\/?[:\\\\-\\\\.\\\\w\\\\u00b7-\\\\uffff]*$/};}function completeCloseTag(state,tree,from,to){let end=/\\\\s*>/.test(state.sliceDoc(to,to+5))?\\\"\\\":\\\">\\\";return{from,to,options:openTags(state.doc,tree).map((tag,i)=>({label:tag,apply:tag+end,type:\\\"type\\\",boost:99-i})),validFor:identifier$1};}function completeStartTag(state,schema,tree,pos){let options=[],level=0;for(let _i278=0,_allowedChildren=allowedChildren(state.doc,tree,schema),_length278=_allowedChildren.length;_i278\u003C_length278;_i278++){let tagName=_allowedChildren[_i278];options.push({label:\\\"\u003C\\\"+tagName,type:\\\"type\\\"});}for(let _i279=0,_openTags=openTags(state.doc,tree),_length279=_openTags.length;_i279\u003C_length279;_i279++){let open=_openTags[_i279];options.push({label:\\\"\u003C/\\\"+open+\\\">\\\",type:\\\"type\\\",boost:99-level++});}return{from:pos,to:pos,options,validFor:/^\u003C\\\\/?[:\\\\-\\\\.\\\\w\\\\u00b7-\\\\uffff]*$/};}function completeAttrName(state,schema,tree,from,to){let elt=findParentElement$1(tree),info=elt?schema.tags[elementName$1(state.doc,elt)]:null;let localAttrs=info&&info.attrs?Object.keys(info.attrs):[];let names=info&&info.globalAttrs===false?localAttrs:localAttrs.length?localAttrs.concat(schema.globalAttrNames):schema.globalAttrNames;return{from,to,options:names.map(attrName=>({label:attrName,type:\\\"property\\\"})),validFor:identifier$1};}function completeAttrValue(state,schema,tree,from,to){var _a;let nameNode=(_a=tree.parent)===null||_a===void 0?void 0:_a.getChild(\\\"AttributeName\\\");let options=[],token=undefined;if(nameNode){let attrName=state.sliceDoc(nameNode.from,nameNode.to);let attrs=schema.globalAttrs[attrName];if(!attrs){let elt=findParentElement$1(tree),info=elt?schema.tags[elementName$1(state.doc,elt)]:null;attrs=(info===null||info===void 0?void 0:info.attrs)&&info.attrs[attrName];}if(attrs){let base=state.sliceDoc(from,to).toLowerCase(),quoteStart='\\\"',quoteEnd='\\\"';if(/^['\\\"]/.test(base)){token=base[0]=='\\\"'?/^[^\\\"]*$/:/^[^']*$/;quoteStart=\\\"\\\";quoteEnd=state.sliceDoc(to,to+1)==base[0]?\\\"\\\":base[0];base=base.slice(1);from++;}else{token=/^[^\\\\s\u003C>='\\\"]*$/;}for(let _i280=0,_attrs=attrs,_length280=_attrs.length;_i280\u003C_length280;_i280++){let value=_attrs[_i280];options.push({label:value,apply:quoteStart+value+quoteEnd,type:\\\"constant\\\"});}}}return{from,to,options,validFor:token};}function htmlCompletionFor(schema,context){let{state,pos}=context,tree=syntaxTree(state).resolveInner(pos,-1),around=tree.resolve(pos);for(let scan=pos,before;around==tree&&(before=tree.childBefore(scan));){let last=before.lastChild;if(!last||!last.type.isError||last.from\u003Clast.to)break;around=tree=before;scan=last.from;}if(tree.name==\\\"TagName\\\"){return tree.parent&&/CloseTag$/.test(tree.parent.name)?completeCloseTag(state,tree,tree.from,pos):completeTag(state,schema,tree,tree.from,pos);}else if(tree.name==\\\"StartTag\\\"){return completeTag(state,schema,tree,pos,pos);}else if(tree.name==\\\"StartCloseTag\\\"||tree.name==\\\"IncompleteCloseTag\\\"){return completeCloseTag(state,tree,pos,pos);}else if(tree.name==\\\"OpenTag\\\"||tree.name==\\\"SelfClosingTag\\\"||tree.name==\\\"AttributeName\\\"){return completeAttrName(state,schema,tree,tree.name==\\\"AttributeName\\\"?tree.from:pos,pos);}else if(tree.name==\\\"Is\\\"||tree.name==\\\"AttributeValue\\\"||tree.name==\\\"UnquotedAttributeValue\\\"){return completeAttrValue(state,schema,tree,tree.name==\\\"Is\\\"?pos:tree.from,pos);}else if(context.explicit&&(around.name==\\\"Element\\\"||around.name==\\\"Text\\\"||around.name==\\\"Document\\\")){return completeStartTag(state,schema,tree,pos);}else{return null;}}function htmlCompletionSource(context){return htmlCompletionFor(Schema.default,context);}function htmlCompletionSourceWith(config){let{extraTags,extraGlobalAttributes:extraAttrs}=config;let schema=extraAttrs||extraTags?new Schema(extraTags,extraAttrs):Schema.default;return context=>htmlCompletionFor(schema,context);}const jsonParser=javascriptLanguage.parser.configure({top:\\\"SingleExpression\\\"});const defaultNesting=[{tag:\\\"script\\\",attrs:attrs=>attrs.type==\\\"text/typescript\\\"||attrs.lang==\\\"ts\\\",parser:typescriptLanguage.parser},{tag:\\\"script\\\",attrs:attrs=>attrs.type==\\\"text/babel\\\"||attrs.type==\\\"text/jsx\\\",parser:jsxLanguage.parser},{tag:\\\"script\\\",attrs:attrs=>attrs.type==\\\"text/typescript-jsx\\\",parser:tsxLanguage.parser},{tag:\\\"script\\\",attrs(attrs){return /^(importmap|speculationrules|application\\\\/(.+\\\\+)?json)$/i.test(attrs.type);},parser:jsonParser},{tag:\\\"script\\\",attrs(attrs){return!attrs.type||/^(?:text|application)\\\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(attrs.type);},parser:javascriptLanguage.parser},{tag:\\\"style\\\",attrs(attrs){return(!attrs.lang||attrs.lang==\\\"css\\\")&&(!attrs.type||/^(text\\\\/)?(x-)?(stylesheet|css)$/i.test(attrs.type));},parser:cssLanguage.parser}];const defaultAttrs=[{name:\\\"style\\\",parser:cssLanguage.parser.configure({top:\\\"Styles\\\"})}].concat(eventAttributes.map(name=>({name,parser:javascriptLanguage.parser})));const htmlPlain=LRLanguage.define({name:\\\"html\\\",parser:parser$e.configure({props:[indentNodeProp.add({Element(context){let after=/^(\\\\s*)(\u003C\\\\/)?/.exec(context.textAfter);if(context.node.to\u003C=context.pos+after[0].length)return context.continue();return context.lineIndent(context.node.from)+(after[2]?0:context.unit);},\\\"OpenTag CloseTag SelfClosingTag\\\"(context){return context.column(context.node.from)+context.unit;},Document(context){if(context.pos+/\\\\s*/.exec(context.textAfter)[0].length\u003Ccontext.node.to)return context.continue();let endElt=null,close;for(let cur=context.node;;){let last=cur.lastChild;if(!last||last.name!=\\\"Element\\\"||last.to!=cur.to)break;endElt=cur=last;}if(endElt&&!((close=endElt.lastChild)&&(close.name==\\\"CloseTag\\\"||close.name==\\\"SelfClosingTag\\\")))return context.lineIndent(endElt.from)+context.unit;return null;}}),foldNodeProp.add({Element(node){let first=node.firstChild,last=node.lastChild;if(!first||first.name!=\\\"OpenTag\\\")return null;return{from:first.to,to:last.name==\\\"CloseTag\\\"?last.from:node.to};}}),bracketMatchingHandle.add({\\\"OpenTag CloseTag\\\":node=>node.getChild(\\\"TagName\\\")})]}),languageData:{commentTokens:{block:{open:\\\"\u003C!--\\\",close:\\\"-->\\\"}},indentOnInput:/^\\\\s*\u003C\\\\/\\\\w+\\\\W$/,wordChars:\\\"-._\\\"}});const htmlLanguage=htmlPlain.configure({wrap:configureNesting(defaultNesting,defaultAttrs)});function html(config={}){let dialect=\\\"\\\",wrap;if(config.matchClosingTags===false)dialect=\\\"noMatch\\\";if(config.selfClosingTags===true)dialect=(dialect?dialect+\\\" \\\":\\\"\\\")+\\\"selfClosing\\\";if(config.nestedLanguages&&config.nestedLanguages.length||config.nestedAttributes&&config.nestedAttributes.length)wrap=configureNesting((config.nestedLanguages||[]).concat(defaultNesting),(config.nestedAttributes||[]).concat(defaultAttrs));let lang=wrap?htmlPlain.configure({wrap,dialect}):dialect?htmlLanguage.configure({dialect}):htmlLanguage;return new LanguageSupport(lang,[htmlLanguage.data.of({autocomplete:htmlCompletionSourceWith(config)}),config.autoCloseTags!==false?autoCloseTags:[],javascript().support,css().support]);}const selfClosers=new Set(\\\"area base br col command embed frame hr img input keygen link meta param source track wbr menuitem\\\".split(\\\" \\\"));const autoCloseTags=EditorView.inputHandler.of((view,from,to,text,insertTransaction)=>{if(view.composing||view.state.readOnly||from!=to||text!=\\\">\\\"&&text!=\\\"/\\\"||!htmlLanguage.isActiveAt(view.state,from,-1))return false;let base=insertTransaction(),{state}=base;let closeTags=state.changeByRange(range=>{var _a,_b,_c;let didType=state.doc.sliceString(range.from-1,range.to)==text;let{head}=range,around=syntaxTree(state).resolveInner(head-1,-1),name;if(around.name==\\\"TagName\\\"||around.name==\\\"StartTag\\\")around=around.parent;if(didType&&text==\\\">\\\"&&around.name==\\\"OpenTag\\\"){if(((_b=(_a=around.parent)===null||_a===void 0?void 0:_a.lastChild)===null||_b===void 0?void 0:_b.name)!=\\\"CloseTag\\\"&&(name=elementName$1(state.doc,around.parent,head))&&!selfClosers.has(name)){let to=head+(state.doc.sliceString(head,head+1)===\\\">\\\"?1:0);let insert=`\u003C/${name}>`;return{range,changes:{from:head,to,insert}};}}else if(didType&&text==\\\"/\\\"&&around.name==\\\"IncompleteCloseTag\\\"){let base=around.parent;if(around.from==head-2&&((_c=base.lastChild)===null||_c===void 0?void 0:_c.name)!=\\\"CloseTag\\\"&&(name=elementName$1(state.doc,base,head))&&!selfClosers.has(name)){let to=head+(state.doc.sliceString(head,head+1)===\\\">\\\"?1:0);let insert=`${name}>`;return{range:EditorSelection.cursor(head+insert.length,-1),changes:{from:head,to,insert}};}}return{range};});if(closeTags.changes.empty)return false;view.dispatch([base,state.update(closeTags,{userEvent:\\\"input.complete\\\",scrollIntoView:true})]);return true;});var _m17=Object.freeze({__proto__:null,autoCloseTags:autoCloseTags,html:html,htmlCompletionSource:htmlCompletionSource,htmlCompletionSourceWith:htmlCompletionSourceWith,htmlLanguage:htmlLanguage,htmlPlain:htmlPlain});const phpLanguage=LRLanguage.define({name:\\\"php\\\",parser:parser$f.configure({props:[indentNodeProp.add({IfStatement:continuedIndent({except:/^\\\\s*({|else\\\\b|elseif\\\\b|endif\\\\b)/}),TryStatement:continuedIndent({except:/^\\\\s*({|catch\\\\b|finally\\\\b)/}),SwitchBody:context=>{let after=context.textAfter,closed=/^\\\\s*\\\\}/.test(after),isCase=/^\\\\s*(case|default)\\\\b/.test(after);return context.baseIndent+(closed?0:isCase?1:2)*context.unit;},ColonBlock:cx=>cx.baseIndent+cx.unit,\\\"Block EnumBody DeclarationList\\\":delimitedIndent({closing:\\\"}\\\"}),ArrowFunction:cx=>cx.baseIndent+cx.unit,\\\"String BlockComment\\\":()=>null,Statement:continuedIndent({except:/^({|end(for|foreach|switch|while)\\\\b)/})}),foldNodeProp.add({\\\"Block EnumBody DeclarationList SwitchBody ArrayExpression ValueList\\\":foldInside,ColonBlock(tree){return{from:tree.from+1,to:tree.to};},BlockComment(tree){return{from:tree.from+2,to:tree.to-2};}})]}),languageData:{commentTokens:{block:{open:\\\"/*\\\",close:\\\"*/\\\"},line:\\\"//\\\"},indentOnInput:/^\\\\s*(?:case |default:|end(?:if|for(?:each)?|switch|while)|else(?:if)?|\\\\{|\\\\})$/,wordChars:\\\"$\\\",closeBrackets:{stringPrefixes:[\\\"b\\\",\\\"B\\\"]}}});function php(config={}){let support=[],base;if(config.baseLanguage===null);else if(config.baseLanguage){base=config.baseLanguage;}else{let htmlSupport=html({matchClosingTags:false});support.push(htmlSupport.support);base=htmlSupport.language;}return new LanguageSupport(phpLanguage.configure({wrap:base&&parseMixed(node=>{if(!node.type.isTop)return null;return{parser:base.parser,overlay:node=>node.name==\\\"Text\\\"};}),top:config.plain?\\\"Program\\\":\\\"Template\\\"}),support);}var _m13=Object.freeze({__proto__:null,php:php,phpLanguage:phpLanguage});const printKeyword=1,indent$1=206,dedent$1=207,newline$1=208,blankLineStart$1=209,newlineBracketed=210,eof$1=211,formatString1Content=212,formatString1Brace=2,formatString1End=213,formatString2Content=214,formatString2Brace=3,formatString2End=215,formatString1lContent=216,formatString1lBrace=4,formatString1lEnd=217,formatString2lContent=218,formatString2lBrace=5,formatString2lEnd=219,ParenL$1=26,ParenthesizedExpression=27,TupleExpression=51,ComprehensionExpression=52,BracketL$1=57,ArrayExpression=58,ArrayComprehensionExpression=59,BraceL$1=61,DictionaryExpression=62,DictionaryComprehensionExpression=63,SetExpression=64,SetComprehensionExpression=65,ArgList=67,subscript=256,FormatString=74,importList=275,TypeParamList=120,ParamList=138,SequencePattern=159,MappingPattern=160,PatternArgList=163;const newline$2=10,carriageReturn=13,space$3=32,tab=9,hash$1=35,parenOpen=40,dot=46,braceOpen=123,singleQuote=39,doubleQuote=34,backslash=92;const bracketed=new Set([ParenthesizedExpression,TupleExpression,ComprehensionExpression,importList,ArgList,ParamList,ArrayExpression,ArrayComprehensionExpression,subscript,SetExpression,SetComprehensionExpression,FormatString,DictionaryExpression,DictionaryComprehensionExpression,SequencePattern,MappingPattern,PatternArgList,TypeParamList]);function isLineBreak(ch){return ch==newline$2||ch==carriageReturn;}const newlines=new ExternalTokenizer((input,stack)=>{let prev;if(input.next\u003C0){input.acceptToken(eof$1);}else if(stack.context.depth\u003C0){if(isLineBreak(input.next))input.acceptToken(newlineBracketed,1);}else if(((prev=input.peek(-1))\u003C0||isLineBreak(prev))&&stack.canShift(blankLineStart$1)){let spaces=0;while(input.next==space$3||input.next==tab){input.advance();spaces++;}if(input.next==newline$2||input.next==carriageReturn||input.next==hash$1)input.acceptToken(blankLineStart$1,-spaces);}else if(isLineBreak(input.next)){input.acceptToken(newline$1,1);}},{contextual:true});const indentation$1=new ExternalTokenizer((input,stack)=>{let cDepth=stack.context.depth;if(cDepth\u003C0)return;let prev=input.peek(-1);if(prev==newline$2||prev==carriageReturn){let depth=0,chars=0;for(;;){if(input.next==space$3)depth++;else if(input.next==tab)depth+=8-depth%8;else break;input.advance();chars++;}if(depth!=cDepth&&input.next!=newline$2&&input.next!=carriageReturn&&input.next!=hash$1){if(depth\u003CcDepth)input.acceptToken(dedent$1,-chars);else input.acceptToken(indent$1);}}});function IndentLevel$1(parent,depth){this.parent=parent;this.depth=depth;this.hash=(parent?parent.hash+parent.hash\u003C\u003C8:0)+depth+(depth\u003C\u003C4);}const topIndent$1=new IndentLevel$1(null,0);function countIndent(space){let depth=0;for(let i=0;i\u003Cspace.length;i++)depth+=space.charCodeAt(i)==tab?8-depth%8:1;return depth;}const trackIndent$1=new ContextTracker({start:topIndent$1,reduce(context,term){return context.depth\u003C0&&bracketed.has(term)?context.parent:context;},shift(context,term,stack,input){if(term==indent$1)return new IndentLevel$1(context,countIndent(input.read(input.pos,stack.pos)));if(term==dedent$1)return context.parent;if(term==ParenL$1||term==BracketL$1||term==BraceL$1)return new IndentLevel$1(context,-1);return context;},hash(context){return context.hash;}});const legacyPrint=new ExternalTokenizer(input=>{for(let i=0;i\u003C5;i++){if(input.next!=\\\"print\\\".charCodeAt(i))return;input.advance();}if(/\\\\w/.test(String.fromCharCode(input.next)))return;for(let off=0;;off++){let next=input.peek(off);if(next==space$3||next==tab)continue;if(next!=parenOpen&&next!=dot&&next!=newline$2&&next!=carriageReturn&&next!=hash$1)input.acceptToken(printKeyword);return;}});function formatString(quote,len,content,brace,end){return new ExternalTokenizer(input=>{let start=input.pos;for(;;){if(input.next\u003C0){break;}else if(input.next==braceOpen){if(input.peek(1)==braceOpen){input.advance(2);}else{if(input.pos==start){input.acceptToken(brace,1);return;}break;}}else if(input.next==backslash){input.advance();if(input.next>=0)input.advance();}else if(input.next==quote&&(len==1||input.peek(1)==quote&&input.peek(2)==quote)){if(input.pos==start){input.acceptToken(end,len);return;}break;}else{input.advance();}}if(input.pos>start)input.acceptToken(content);});}const formatString1=formatString(singleQuote,1,formatString1Content,formatString1Brace,formatString1End);const formatString2=formatString(doubleQuote,1,formatString2Content,formatString2Brace,formatString2End);const formatString1l=formatString(singleQuote,3,formatString1lContent,formatString1lBrace,formatString1lEnd);const formatString2l=formatString(doubleQuote,3,formatString2lContent,formatString2lBrace,formatString2lEnd);const pythonHighlighting=styleTags({\\\"async \\\\\\\"*\\\\\\\" \\\\\\\"**\\\\\\\" FormatConversion FormatSpec\\\":tags$1.modifier,\\\"for while if elif else try except finally return raise break continue with pass assert await yield match case\\\":tags$1.controlKeyword,\\\"in not and or is del\\\":tags$1.operatorKeyword,\\\"from def class global nonlocal lambda\\\":tags$1.definitionKeyword,import:tags$1.moduleKeyword,\\\"with as print\\\":tags$1.keyword,Boolean:tags$1.bool,None:tags$1.null,VariableName:tags$1.variableName,\\\"CallExpression/VariableName\\\":tags$1.function(tags$1.variableName),\\\"FunctionDefinition/VariableName\\\":tags$1.function(tags$1.definition(tags$1.variableName)),\\\"ClassDefinition/VariableName\\\":tags$1.definition(tags$1.className),PropertyName:tags$1.propertyName,\\\"CallExpression/MemberExpression/PropertyName\\\":tags$1.function(tags$1.propertyName),Comment:tags$1.lineComment,Number:tags$1.number,String:tags$1.string,FormatString:tags$1.special(tags$1.string),UpdateOp:tags$1.updateOperator,\\\"ArithOp!\\\":tags$1.arithmeticOperator,BitOp:tags$1.bitwiseOperator,CompareOp:tags$1.compareOperator,AssignOp:tags$1.definitionOperator,Ellipsis:tags$1.punctuation,At:tags$1.meta,\\\"( )\\\":tags$1.paren,\\\"[ ]\\\":tags$1.squareBracket,\\\"{ }\\\":tags$1.brace,\\\".\\\":tags$1.derefOperator,\\\", ;\\\":tags$1.separator});const spec_identifier$4={__proto__:null,await:48,or:58,and:60,in:64,not:66,is:68,if:74,else:76,lambda:80,yield:98,from:100,async:106,for:108,None:178,True:180,False:180,del:194,pass:198,break:202,continue:206,return:210,raise:218,import:222,as:224,global:228,nonlocal:230,assert:234,type:239,elif:252,while:256,try:262,except:264,finally:266,with:270,def:274,class:284,match:295,case:301};const parser$c=LRParser.deserialize({version:14,states:\\\"#)WO`Q#yOOP$bOSOOO%kQ&nO'#HhOOQS'#Cq'#CqOOQS'#Cr'#CrO'ZQ#xO'#CpO(|Q&nO'#HgOOQS'#Hh'#HhOOQS'#DW'#DWOOQS'#Hg'#HgO)jQ#xO'#DaO)}Q#xO'#DhO*_Q#xO'#DlOOQS'#Dw'#DwO*rO,UO'#DwO*zO7[O'#DwO+SOWO'#DxO+_O`O'#DxO+jOpO'#DxO+uO!bO'#DxO-wQ&nO'#HXOOQS'#HX'#HXO'ZQ#xO'#HWO/ZQ&nO'#HWOOQS'#Ej'#EjO/rQ#xO'#EkOOQS'#HV'#HVO/|Q#xO'#HUOOQV'#HU'#HUO0XQ#xO'#FbOOQS'#Gj'#GjO0^Q#xO'#FaOOQV'#I_'#I_OOQV'#HT'#HTOOQV'#Fy'#FyQ`Q#yOOO'ZQ#xO'#CsO0lQ#xO'#DPO0sQ#xO'#DTO1RQ#xO'#HlO1cQ&nO'#E_O'ZQ#xO'#E`OOQS'#Eb'#EbOOQS'#Ed'#EdOOQS'#Ef'#EfO1wQ#xO'#EhO2_Q#xO'#ElO0XQ#xO'#EnO2rQ&nO'#EnO0XQ#xO'#EqO/rQ#xO'#EtO0XQ#xO'#EvO/rQ#xO'#E|O/rQ#xO'#FPO2}Q#xO'#FRO3UQ#xO'#FWO3aQ#xO'#FSO/rQ#xO'#FWO0XQ#xO'#FYO0XQ#xO'#F_O3fQ#xO'#FdP3mO#xO'#HSPOOO)CBv)CBvOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Ck'#CkOOQS'#Cl'#ClOOQS'#Cn'#CnO'ZQ#xO,59QO'ZQ#xO,59QO'ZQ#xO,59QO'ZQ#xO,59QO'ZQ#xO,59QO'ZQ#xO,59QO3xQ#xO'#DqOOQS,5:[,5:[O4]Q#xO'#HvOOQS,5:_,5:_O4jQMlO,5:_O4oQ&nO,59[O0lQ#xO,59dO0lQ#xO,59dO0lQ#xO,59dO7_Q#xO,59dO7dQ#xO,59dO7kQ#xO,59lO7rQ#xO'#HgO8xQ#xO'#HfOOQS'#Hf'#HfOOQS'#D^'#D^O9aQ#xO,59cO'ZQ#xO,59cO9oQ#xO,59cOOQS,59{,59{O9tQ#xO,5:TO'ZQ#xO,5:TOOQS,5:S,5:SO:SQ#xO,5:SO:XQ#xO,5:ZO'ZQ#xO,5:ZO'ZQ#xO,5:XOOQS,5:W,5:WO:jQ#xO,5:WO:oQ#xO,5:YOOOO'#GR'#GRO:tO,UO,5:cOOQS,5:c,5:cOOOO'#GS'#GSO:|O7[O,5:cO;UQ#xO'#DyOOOW'#GT'#GTO;fOWO,5:dOOQS,5:d,5:dO;UQ#xO'#EPOOO`'#GW'#GWO;qO`O,5:dO;UQ#xO'#EROOOp'#GX'#GXO;|OpO,5:dO;UQ#xO'#ETOOO!b'#GY'#GYO\u003CXO!bO,5:dOOQS'#GZ'#GZO\u003CdQ&nO,5:qO?UQ&nO,5=rO?oQ!LUO,5=rO@`Q&nO,5=rOOQS,5;V,5;VO@wQ#yO'#GdOBZQ#xO,5;fOOQV,5=p,5=pOBfQ&nO'#IYOB}Q#xO,5;|OOQS-E:h-E:hOOQV,5;{,5;{O3[Q#xO'#FYOOQV-E9w-E9wOCVQ&nO,59_OE^Q&nO,59kOEwQ#xO'#HiOFSQ#xO'#HiO0XQ#xO'#HiOF_Q#xO'#DVOFgQ#xO,59oOFlQ#xO'#HmO'ZQ#xO'#HmO/rQ#xO,5>WOOQS,5>W,5>WO/rQ#xO'#EZOOQS'#E['#E[OGZQ#xO'#G]OGkQ#xO,59OOGkQ#xO,59OO)pQ#xO,5:wOGyQ&nO'#HoOOQS,5:z,5:zOOQS,5;S,5;SOH^Q#xO,5;WOHoQ#xO,5;YOOQS'#G`'#G`OH}Q&nO,5;YOI]Q#xO,5;YOIbQ#xO'#I]OOQS,5;],5;]OIpQ#xO'#IXOOQS,5;`,5;`OJRQ#xO,5;bO3aQ#xO,5;hO3aQ#xO,5;kOJZQ&nO'#I`O'ZQ#xO'#I`OJeQ#xO,5;mO2}Q#xO,5;mO/rQ#xO,5;rO0XQ#xO,5;tOJjQ#yO'#E}OKvQ#{O,5;nO! [Q#xO'#IaO3aQ#xO,5;rO! gQ#xO,5;tO! oQ#xO,5;yO! zQ&nO,5\u003COO'ZQ#xO,5\u003COPOOO,5=n,5=nP!!ROSO,5=nP!!WO#xO,5=nO!${Q&nO1G.lO!%SQ&nO1G.lO!'sQ&nO1G.lO!'}Q&nO1G.lO!*hQ&nO1G.lO!*{Q&nO1G.lO!+`Q#xO'#HuO!+nQ&nO'#HXO/rQ#xO'#HuO!+xQ#xO'#HtOOQS,5:],5:]O!,QQ#xO,5:]O!,VQ#xO'#HwO!,bQ#xO'#HwO!,uQ#xO,5>bOOQS'#Du'#DuOOQS1G/y1G/yOOQS1G/O1G/OO!-uQ&nO1G/OO!-|Q&nO1G/OO0lQ#xO1G/OO!.iQ#xO1G/WOOQS'#D]'#D]O/rQ#xO,59vOOQS1G.}1G.}O!.pQ#xO1G/gO!/QQ#xO1G/gO!/YQ#xO1G/hO'ZQ#xO'#HnO!/_Q#xO'#HnO!/dQ&nO1G.}O!/tQ#xO,59kO!0zQ#xO,5>^O!1[Q#xO,5>^O!1dQ#xO1G/oO!1iQ&nO1G/oOOQS1G/n1G/nO!1yQ#xO,5>XO!2pQ#xO,5>XO/rQ#xO1G/sO!3_Q#xO1G/uO!3dQ&nO1G/uO!3tQ&nO1G/sOOQS1G/r1G/rOOQS1G/t1G/tOOOO-E:P-E:POOQS1G/}1G/}OOOO-E:Q-E:QO!4UQ#xO'#IRO/rQ#xO'#IRO!4gQ#xO,5:eOOOW-E:R-E:ROOQS1G0O1G0OO!4uQ#xO,5:kOOO`-E:U-E:UO!5TQ#xO,5:mOOOp-E:V-E:VO!5cQ#xO,5:oOOO!b-E:W-E:WOOQS-E:X-E:XO!5qQ!LUO1G3^O!6bQ&nO1G3^O'ZQ#xO,5\u003CvOOQS,5\u003Cv,5\u003CvOOQS-E:Y-E:YOOQS,5=O,5=OOOQS-E:b-E:bOOQV1G1Q1G1QO0XQ#xO'#G_O!6yQ&nO,5>tOOQS1G1h1G1hO!7bQ#xO1G1hOOQS'#DX'#DXO/rQ#xO,5>TOOQS,5>T,5>TO!7gQ#xO'#FzO!7rQ#xO,59qO!7zQ#xO1G/ZO!8UQ&nO,5>XOOQS1G3r1G3rOOQS,5:u,5:uO!8uQ#xO'#HWOOQS,5\u003Cw,5\u003CwOOQS-E:Z-E:ZO!9WQ#xO1G.jOOQS1G0c1G0cO!9fQ#xO,5>ZO!9vQ#xO,5>ZO/rQ#xO1G0rO/rQ#xO1G0rO0XQ#xO1G0tOOQS-E:^-E:^O!:XQ#xO1G0tO!:dQ#xO1G0tO!:iQ#xO,5>wO!:wQ#xO,5>wO!;VQ#xO,5>sO!;mQ#xO,5>sO!\u003COQ#xO'#ExO/rQ#xO1G0|O!\u003CZQ#xO1G0|O!\u003C`Q#{O1G1SO!?qQ#{O1G1VO!CPQ#xO,5>zO!CZQ#xO,5>zO!CcQ&nO,5>zO/rQ#xO1G1XO!CmQ#xO1G1XO3aQ#xO1G1^O! gQ#xO1G1`OOQV,5;i,5;iO!CrQ#zO,5;iO!CwQ#{O1G1YO!G]Q#xO'#GgO3aQ#xO1G1YO3aQ#xO1G1YO!GmQ#xO,5>{O!GzQ#xO,5>{O0XQ#xO,5>{OOQV1G1^1G1^O!HSQ#xO'#F[O!HeQMlO1G1`O!HmQ#xO1G1`OOQV1G1e1G1eO3aQ#xO1G1eO!HrQ#xO1G1eO!HzQ#xO'#FfOOQV1G1j1G1jO! zQ&nO1G1jPOOO1G3Y1G3YP!IPOSO1G3YOOQS,5>a,5>aOOQS'#Dr'#DrO/rQ#xO,5>aO!IUQ#xO,5>`O!IiQ#xO,5>`OOQS1G/w1G/wO!IqQ#xO,5>cO!JRQ#xO,5>cO!JZQ#xO,5>cO!JnQ#xO,5>cO!KOQ#xO,5>cOOQS1G3|1G3|OOQS7+$j7+$jO!7zQ#xO7+$rO!LqQ#xO1G/OO!LxQ#xO1G/OOOQS1G/b1G/bOOQS,5\u003Ch,5\u003ChO'ZQ#xO,5\u003ChOOQS7+%R7+%RO!MPQ#xO7+%ROOQS-E9z-E9zOOQS7+%S7+%SO!MaQ#xO,5>YO'ZQ#xO,5>YOOQS7+$i7+$iO!MfQ#xO7+%RO!MnQ#xO7+%SO!MsQ#xO1G3xOOQS7+%Z7+%ZO!NTQ#xO1G3xO!N]Q#xO7+%ZOOQS,5\u003Cg,5\u003CgO'ZQ#xO,5\u003CgO!NbQ#xO1G3sOOQS-E9y-E9yO# XQ#xO7+%_OOQS7+%a7+%aO# gQ#xO1G3sO#!UQ#xO7+%aO#!ZQ#xO1G3yO#!kQ#xO1G3yO#!sQ#xO7+%_O#!xQ#xO,5>mO##cQ#xO,5>mO##cQ#xO,5>mOOQS'#Dz'#DzO##tO$ISO'#D|O#$PO#tO'#ISOOOW1G0P1G0PO#$UQ#xO1G0PO#$^Q#xO1G0POOQS'#EQ'#EQOOO`1G0V1G0VO#$iQ#xO1G0VO#$qQ#xO1G0VOOQS'#ES'#ESOOOp1G0X1G0XO#$|Q#xO1G0XO#%UQ#xO1G0XOOQS'#EU'#EUOOO!b1G0Z1G0ZO#%aQ#xO1G0ZO#%iQ#xO1G0ZO#%tQ!LUO7+(xO#&eQ&nO1G2bP#'OQ#xO'#G[OOQS,5\u003Cy,5\u003CyOOQS-E:]-E:]OOQS7+'S7+'SOOQS1G3o1G3oOOQS,5\u003Cf,5\u003CfOOQS-E9x-E9xOOQS7+$u7+$uO#']Q#xO,5=rO#'vQ#xO,5=rO#(XQ&nO,5\u003CiO#(lQ#xO1G3uOOQS-E9{-E9{OOQS7+&^7+&^O#(|Q#xO7+&^OOQS7+&`7+&`O#)[Q#xO'#I[O0XQ#xO'#IZO#)pQ#xO7+&`OOQS,5\u003C|,5\u003C|O#){Q#xO1G4cOOQS-E:`-E:`OOQS,5\u003Cx,5\u003CxO#*ZQ#xO1G4_OOQS-E:[-E:[O0XQ#xO'#EyO#*qQ#xO'#EyO#*|Q#xO'#I^O#+UQ#xO,5;dOOQS7+&h7+&hO/rQ#xO7+&hO#+ZQ#{O7+&nO!G`Q#xO'#GeO3aQ#xO7+&nO3aQ#xO7+&qO#.lQ&nO,5=QO'ZQ#xO,5=QO#.vQ#xO1G4fOOQS-E:d-E:dO#/QQ#xO1G4fO3aQ#xO7+&sO/rQ#xO7+&sOOQV7+&x7+&xO!HeQMlO7+&zO!HmQ#xO7+&zO`Q#yO1G1TOOQV-E:e-E:eO3aQ#xO7+&tO3aQ#xO7+&tOOQV,5=R,5=RO#/YQ#xO,5=RO!G`Q#xO,5=ROOQV7+&t7+&tO#/eQ#{O7+&tO#2sQ#xO,5=SO#3OQ#xO1G4gOOQS-E:f-E:fO#3]Q#xO1G4gO#3eQ#xO'#IcO#3sQ#xO'#IcO0XQ#xO'#IcOOQS'#Ic'#IcO#4OQ#xO'#IbOOQS,5;v,5;vO#4WQ#xO,5;vO/rQ#xO'#F^OOQV7+&z7+&zO3aQ#xO7+&zOOQV7+'P7+'PO3aQ#xO7+'PO#4]Q#zO,5\u003CQOOQV7+'U7+'UPOOO7+(t7+(tO#4bQ#xO1G3{OOQS,5\u003Ck,5\u003CkO#4pQ#xO1G3zOOQS-E9}-E9}O#5TQ#xO,5\u003ClO#5`Q#xO,5\u003ClO#5sQ#xO1G3}OOQS-E:O-E:OO#6TQ#xO1G3}O#6]Q#xO1G3}O#6mQ#xO1G3}O#6TQ#xO1G3}OOQS\u003C\u003CH^\u003C\u003CH^O#6xQ&nO1G2SOOQS\u003C\u003CHm\u003C\u003CHmP#7VQ#xO'#F|O7kQ#xO1G3tO#7dQ#xO1G3tO#7iQ#xO\u003C\u003CHmOOQS\u003C\u003CHn\u003C\u003CHnO#7yQ#xO7+)dOOQS\u003C\u003CHu\u003C\u003CHuO#8ZQ&nO1G2RP#8zQ#xO'#F{O#9XQ#xO7+)eO#9iQ#xO7+)eO#9qQ#xO\u003C\u003CHyO#9vQ#xO7+)_OOQS\u003C\u003CH{\u003C\u003CH{O#:mQ#xO,5\u003CjO'ZQ#xO,5\u003CjOOQS-E9|-E9|OOQS\u003C\u003CHy\u003C\u003CHyOOQS,5\u003Cp,5\u003CpO/rQ#xO,5\u003CpO#:rQ#xO1G4XOOQS-E:S-E:SO#;]Q#xO1G4XO;UQ#xO'#D}OOOO'#GV'#GVO#;nO$ISO,5:hOOO#l,5>n,5>nOOOW7+%k7+%kO#;yQ#xO7+%kOOO`7+%q7+%qO#\u003CRQ#xO7+%qOOOp7+%s7+%sO#\u003CZQ#xO7+%sOOO!b7+%u7+%uO#\u003CcQ#xO7+%uO#\u003CkQ#xO1G3^O#=UQ#xO1G3^P'ZQ#xO'#F}O/rQ#xO\u003C\u003CIxO#=gQ#xO,5>vO#=xQ#xO,5>vO0XQ#xO,5>vO#>ZQ#xO,5>uOOQS\u003C\u003CIz\u003C\u003CIzP0XQ#xO'#GbP/rQ#xO'#G^OOQS,5;e,5;eO#>`Q#xO,5>xO#>nQ#xO,5>xOOQS1G1O1G1OOOQS\u003C\u003CJS\u003C\u003CJSOOQV-E:c-E:cO3aQ#xO\u003C\u003CJYOOQV,5=P,5=PO3aQ#xO,5=POOQV\u003C\u003CJY\u003C\u003CJYOOQV\u003C\u003CJ]\u003C\u003CJ]O#>vQ&nO1G2lP#?QQ#xO'#GfO#?XQ#xO7+*QO#?cQ#{O\u003C\u003CJ_O3aQ#xO\u003C\u003CJ_OOQV\u003C\u003CJf\u003C\u003CJfO3aQ#xO\u003C\u003CJfO!HeQMlO\u003C\u003CJfO#BqQ#{O7+&oOOQV\u003C\u003CJ`\u003C\u003CJ`O#B{Q#{O\u003C\u003CJ`OOQV1G2m1G2mO0XQ#xO1G2mO#FZQ#xO1G2mO3aQ#xO\u003C\u003CJ`O0XQ#xO1G2nP/rQ#xO'#GhO#FfQ#xO7+*RO#FsQ#xO7+*ROOQS'#F]'#F]O/rQ#xO,5>}O#F{Q#xO,5>}OOQS,5>},5>}O#GWQ#xO,5>|O#GiQ#xO,5>|OOQS1G1b1G1bOOQS,5;x,5;xOOQV\u003C\u003CJk\u003C\u003CJkO#GqQ#xO1G1lOOQS7+)g7+)gP#GvQ#xO'#GPO#HWQ#xO1G2WO#HkQ#xO1G2WO#H{Q#xO1G2WP#IWQ#xO'#GQO#IeQ#xO7+)iO#IuQ#xO7+)iO#IuQ#xO7+)iO#I}Q#xO7+)iO#J_Q#xO7+)`O7kQ#xO7+)`OOQSAN>XAN>XO#JxQ#xO\u003C\u003CMPOOQSAN>eAN>eO/rQ#xO1G2UO#KYQ&nO1G2UP#KdQ#xO'#GOOOQS1G2[1G2[P#KqQ#xO'#GUO#LOQ#xO7+)sO#LiQ#xO,5:iOOOO-E:T-E:TOOOW\u003C\u003CIV\u003C\u003CIVOOO`\u003C\u003CI]\u003C\u003CI]OOOp\u003C\u003CI_\u003C\u003CI_OOO!b\u003C\u003CIa\u003C\u003CIaO#LwQ#xO7+(xOOQSAN?dAN?dO#MbQ#xO,5\u003C{O#MvQ#xO1G4bOOQS-E:_-E:_O#NXQ#xO1G4bOOQS1G4a1G4aOOQS,5\u003C},5\u003C}O#NjQ#xO1G4dOOQS-E:a-E:aOOQVAN?tAN?tOOQV1G2k1G2kO3aQ#xOAN?yO#NxQ#{OAN?yOOQVAN@QAN@QO3aQ#xOAN@QOOQV\u003C\u003CJZ\u003C\u003CJZO3aQ#xOAN?zO3aQ#xO7+(XOOQV7+(X7+(XO0XQ#xO7+(XOOQVAN?zAN?zOOQS7+(Y7+(YO$$WQ#xO\u003C\u003CMmOOQS1G4i1G4iO/rQ#xO1G4iOOQS,5=T,5=TO$$eQ#xO1G4hOOQS-E:g-E:gOOQU'#Gk'#GkO$$vQ#zO7+'WO$%RQ#xO'#FgO$%yQ#xO7+'rO$&ZQ#xO7+'rOOQS7+'r7+'rO$&fQ#xO\u003C\u003CMTO$&vQ#xO\u003C\u003CMTO$&vQ#xO\u003C\u003CMTO$'OQ#xO'#HpOOQS\u003C\u003CLz\u003C\u003CLzO$'YQ#xO\u003C\u003CLzOOQS7+'p7+'pOOQS'#EO'#EOOOOO1G0T1G0TO$'sQ#xO1G0TO$'{Q#xO1G0TO0XQ#xO1G2gP0XQ#xO'#GaO$(WQ#xO7+)|O$(iQ#xO7+)|P!\u003COQ#xO'#GcOOQVG25eG25eO3aQ#xOG25eOOQVG25lG25lOOQVG25fG25fOOQV\u003C\u003CKs\u003C\u003CKsO3aQ#xO\u003C\u003CKsOOQS7+*T7+*TP$(zQ#xO'#GiOOQU-E:i-E:iOOQV\u003C\u003CJr\u003C\u003CJrO$)nQ&nO'#FiOOQS'#Fk'#FkO$*OQ#xO'#FjO$*pQ#xO'#FjOOQS'#Fj'#FjO$*uQ#xO'#IeO$%RQ#xO'#FqO$%RQ#xO'#FqO$+^Q#xO'#FrO$%RQ#xO'#FsO$+eQ#xO'#IfOOQS'#If'#IfO$,SQ#xO,5\u003CROOQS\u003C\u003CK^\u003C\u003CK^O$,[Q#xO\u003C\u003CK^O$,lQ#xOANBoO$,|Q#xOANBoO$-UQ#xO'#HqOOQS'#Hq'#HqO0sQ#xO'#DeO$-oQ#xO,5>[OOQSANBfANBfOOOO7+%o7+%oO$.WQ#xO7+%oOOQS7+(R7+(RO$.`Q#xO\u003C\u003CMhOOQVLD+PLD+POOQVANA_ANA_O4jQMlO'#GmO$.qQ&nO,5\u003C[O$%RQ#xO'#FuOOQS,5\u003C`,5\u003C`OOQS'#Fl'#FlO$/cQ#xO,5\u003CUO$/hQ#xO,5\u003CUOOQS'#Fo'#FoO$%RQ#xO'#GlO$0YQ#xO,5\u003CYO$0tQ#xO,5?PO$1UQ#xO,5?PO0XQ#xO,5\u003CXO$1gQ#xO,5\u003C]O$1lQ#xO,5\u003C]O$%RQ#xO'#IgO$1qQ#xO'#IgO$1vQ#xO,5\u003C^OOQS,5\u003C_,5\u003C_O'ZQ#xO'#FxOOQU1G1m1G1mO3aQ#xO1G1mOOQSAN@xAN@xO$1{Q#xOG28ZO$2]Q#xO,5:POOQS1G3v1G3vOOOO\u003C\u003CIZ\u003C\u003CIZOOQS,5=X,5=XOOQS-E:k-E:kO$2bQ&nO'#FiO$2iQ#xO'#IhO$2wQ#xO'#IhO$3PQ#xO,5\u003CaOOQS1G1p1G1pO$3UQ#xO1G1pO$3ZQ#xO,5=WOOQS-E:j-E:jO$3uQ#xO,5=[O$4^Q#xO1G4kOOQS-E:n-E:nOOQS1G1s1G1sOOQS1G1w1G1wO$4nQ#xO,5?RO$%RQ#xO,5?ROOQS1G1x1G1xO$4|Q&nO,5\u003CdOOQU7+'X7+'XO$'OQ#xO1G/kO$%RQ#xO,5\u003CbO$5TQ#xO,5?SO$5[Q#xO,5?SOOQS1G1{1G1{OOQS7+'[7+'[P$%RQ#xO'#GpO$5dQ#xO1G4mO$5nQ#xO1G4mO$5vQ#xO1G4mOOQS7+%V7+%VO$6UQ#xO1G1|O$6dQ&nO'#FiO$6kQ#xO,5=ZOOQS,5=Z,5=ZO$6yQ#xO1G4nOOQS-E:m-E:mO$%RQ#xO,5=YO$7QQ#xO,5=YO$7VQ#xO7+*XOOQS-E:l-E:lO$7aQ#xO7+*XO$%RQ#xO,5\u003CcP$%RQ#xO'#GoO$7iQ#xO1G2tO$%RQ#xO1G2tP$7wQ#xO'#GnO$8OQ#xO\u003C\u003CMsO$8YQ#xO1G1}O$8hQ#xO7+(`O7kQ#xO'#DPO7kQ#xO,59dO7kQ#xO,59dO7kQ#xO,59dO$8vQ&nO,5=rO7kQ#xO1G/OO/rQ#xO1G/ZO/rQ#xO7+$rP$9ZQ#xO'#G[O'ZQ#xO'#HWO$9hQ#xO,59dO$9mQ#xO,59dO$9tQ#xO,59oO$9yQ#xO1G/WO0sQ#xO'#DTO7kQ#xO,59l\\\",stateData:\\\"$:[~O%uOS%jOSUOS%iPQ~OPiOXfOhtOjYOquOu!UOxvO!RwO!S!QO!V!XO!W!WO!ZZO!_[O!jeO!zeO!{eO!|eO#TyO#VzO#X{O#Z|O#]}O#a!OO#c!PO#f!RO#g!RO#i!SO#k!TO#t!VO#w!YO#{!ZO#}![O$S!]O$VmO$X!^O&RRO&SRO&WSO&XWO&m]O&n^O&q_O&t`O&xaO&ybO&zcO~O%i!_O~OX!fOa!fOc!gOj!nO!Z!pO!h!rO%|!aO%}!bO&O!cO&P!dO&Q!dO&R!eO&S!eO&T!fO&U!fO&V!fO~Om&[Xn&[Xo&[Xp&[Xq&[Xr&[Xu&[X|&[X}&[X#Q&[X#o&[X%h&[X%k&[X&^&[Xi&[X!V&[X!W&[X&_&[X!Y&[X!^&[X!S&[X#d&[Xv&[X!o&[X~P$gOhtOjYO!ZZO!_[O!jeO!zeO!{eO!|eO&RRO&SRO&WSO&XWO&m]O&n^O&q_O&t`O&xaO&ybO&zcO~O|&ZX}&ZX#o&ZX%h&ZX%k&ZX&^&ZX~Om!uOn!vOo!tOp!tOq!wOr!xOu!yO#Q&ZX~P(hOX#POi#ROq1`Ox1nO!RwO~P'ZOX#TOq1`Ox1nO!Y#UO~P'ZOX#XOc#YOq1`Ox1nO!^#ZO~P'ZO&o#^O&p#`O~O&r#aO&s#`O~OQ#cO%l#dO%m#fO~OR#gO%n#hO%o#fO~OS#jO%p#kO%q#fO~OT#mO%r#nO%s#fO~OX%{Xa%{Xc%{Xj%{Xm%{Xn%{Xo%{Xp%{Xq%{Xr%{Xu%{X|%{X!Z%{X!h%{X%|%{X%}%{X&O%{X&P%{X&Q%{X&R%{X&S%{X&T%{X&U%{X&V%{Xi%{X!V%{X!W%{X~O&m]O&n^O&q_O&t`O&xaO&ybO&zcO}%{X#Q%{X#o%{X%h%{X%k%{X&^%{X&_%{X!Y%{X!^%{X!S%{X#d%{Xv%{X!o%{X~P,QO|#sO}%zX#Q%zX#o%zX%h%zX%k%zX&^%zX~Oq1`Ox1nO~P'ZO#o#vO%h#xO%k#xO~O&XWO~O!V#}O#}![O$S!]O$VmO~OquO~P'ZOX$SOc$TO&XWO}yP~OX$XOq1`Ox1nO!S$YO~P'ZO}$[O#Q$aO&^$]O#o#RX%h#RX%k#RX~OX$XOq1`Ox1nO#o#[X%h#[X%k#[X~P'ZOq1`Ox1nO#o#`X%h#`X%k#`X~P'ZO!h$gO!z$gO&XWO~OX$rO~P'ZO!W$tO#{$uO#}$vO~O}$wO~OX%OO~P'ZOU%QO%h%PO%u%RO~OX%[Oc%[Oi%^Oq1`Ox1nO~P'ZOq1`Ox1nO}%aO~P'ZO&l%cO~Oc!gOj!nO!Z!pO!h!rOXdaadamdandaodapdaqdardauda|da}da#Qda#oda%hda%kda%|da%}da&Oda&Pda&Qda&Rda&Sda&Tda&Uda&Vda&^daida!Vda!Wda&_da!Yda!^da!Sda#ddavda!oda~Op%hO~Oq%hO~P'ZOq1`O~P'ZOm1bOn1cOo1aOp1aOq1jOr1kOu1oOi&ZX!V&ZX!W&ZX&_&ZX!Y&ZX!^&ZX!S&ZX#d&ZX!o&ZX~P(hO&_%jOi&YX|&YX!V&YX!W&YX!Y&YX}&YX~Oi%lO|%mO!V%qO!W%pO~Oi%lO~O|%tO!V%qO!W%pO!Y&fX~O!Y%xO~O|%yO}%{O!V%qO!W%pO!^&aX~O!^&PO~O!^&QO~O&o#^O&p&SO~O&r#aO&s&SO~OX&VOq1`Ox1nO!RwO~P'ZOQ#cO%l#dO%m&YO~OR#gO%n#hO%o&YO~OS#jO%p#kO%q&YO~OT#mO%r#nO%s&YO~OX!yaa!yac!yaj!yam!yan!yao!yap!yaq!yar!yau!ya|!ya}!ya!Z!ya!h!ya#Q!ya#o!ya%h!ya%k!ya%|!ya%}!ya&O!ya&P!ya&Q!ya&R!ya&S!ya&T!ya&U!ya&V!ya&^!yai!ya!V!ya!W!ya&_!ya!Y!ya!^!ya!S!ya#d!yav!ya!o!ya~P#yO|&bO}%za#Q%za#o%za%h%za%k%za&^%za~P$gOX&dOquOxvO}%za#Q%za#o%za%h%za%k%za&^%za~P'ZO|&bO}%za#Q%za#o%za%h%za%k%za&^%za~OPiOXfOquOxvO!RwO!S!QO#TyO#VzO#X{O#Z|O#]}O#a!OO#c!PO#f!RO#g!RO#i!SO#k!TO#o%WX%h%WX%k%WX~P'ZO#o#vO%h&iO%k&iO~O!h&jOj&|X%h&|X#d&|X#o&|X%k&|X#c&|X~Oj!nO%h&lO~Omgangaogapgaqgargauga|ga}ga#Qga#oga%hga%kga&^gaiga!Vga!Wga&_ga!Yga!^ga!Sga#dgavga!oga~P$gOusa|sa}sa#osa%hsa%ksa&^sa~Om!uOn!vOo!tOp!tOq!wOr!xO#Qsa~PDuO&^&nO|&]X}&]X~O&XWO|&]X}&]X~O|&qO}yX~O}&sO~O|%yO#o&aX%h&aX%k&aXi&aX}&aX!^&aX!o&aX&^&aX~OX1iOq1`Ox1nO!RwO~P'ZO&^$]O#oWa%hWa%kWa~O|&|O#o&cX%h&cX%k&cXp&cX~P$gO|'PO!S'OO#o#`a%h#`a%k#`a~O#d'QO#o#ba%h#ba%k#ba~O!h$gO!z$gO#c'SO&XWO~O#c'SO~O|'UO#o'PX%h'PX%k'PX~O|'WO#o&{X%h&{X%k&{X}&{X~O!Z'YO&^'ZO~O|'_Op'SX~P$gOp'bO~OPiOXfOquOxvO!RwO!S!QO#TyO#VzO#X{O#Z|O#]}O#a!OO#c!PO#f!RO#g!RO#i!SO#k!TO%h'gO~P'ZOv'kO#x'iO#y'jOP#vaX#vah#vaj#vaq#vau#vax#va!R#va!S#va!V#va!W#va!Z#va!_#va!j#va!z#va!{#va!|#va#T#va#V#va#X#va#Z#va#]#va#a#va#c#va#f#va#g#va#i#va#k#va#t#va#w#va#{#va#}#va$S#va$V#va$X#va%e#va&R#va&S#va&W#va&X#va&m#va&n#va&q#va&t#va&x#va&y#va&z#va%g#va%k#va~O|'lO#d'nO}'TX~Oj'pO!Z'YO~Oj!nO}$wO!Z'YO~O}'vO~P$gO%h'yO~OU'zO%h'yO~OX!fOa!fOc!gOj!nO!Z!pO!h!rO&O!cO&P!dO&Q!dO&R!eO&S!eO&T!fO&U!fO&V!fOmYinYioYipYiqYirYiuYi|Yi}Yi#QYi#oYi%hYi%kYi%|Yi&^YiiYi!VYi!WYi&_Yi!YYi!^Yi!SYi#dYivYi!oYi~O%}!bO~P!!`O%}Yi~P!!`OX!fOa!fOc!gOj!nO!Z!pO!h!rO&R!eO&S!eO&T!fO&U!fO&V!fOmYinYioYipYiqYirYiuYi|Yi}Yi#QYi#oYi%hYi%kYi%|Yi%}Yi&OYi&^YiiYi!VYi!WYi&_Yi!YYi!^Yi!SYi#dYivYi!oYi~O&P!dO&Q!dO~P!%ZO&PYi&QYi~P!%ZOc!gOj!nO!Z!pO!h!rOmYinYioYipYiqYirYiuYi|Yi}Yi#QYi#oYi%hYi%kYi%|Yi%}Yi&OYi&PYi&QYi&RYi&SYi&^YiiYi!VYi!WYi&_Yi!YYi!^Yi!SYi#dYivYi!oYi~OX!fOa!fO&T!fO&U!fO&V!fO~P!(XOXYiaYi&TYi&UYi&VYi~P!(XO!V%qO!W%pOi&iX|&iX~O&^'|O&_'|O~P,QO|(OOi&hX~Oi(QO~O|(RO}(TO!Y&kX~Oq1`Ox1nO|(RO}(UO!Y&kX~P'ZO!Y(WO~Oo!tOp!tOq!wOr!xOmliuli|li}li#Qli#oli%hli%kli&^li~On!vO~P!,zOnli~P!,zOm1bOn1cOo1aOp1aOq1jOr1kO~Ov(YO~P!.TOX(_Oi(`Oq1`Ox1nO~P'ZOi(`O|(aO~Oi(cO~O!W(eO~Oi(fO|(aO!V%qO!W%pO~P$gOm1bOn1cOo1aOp1aOq1jOr1kOisa!Vsa!Wsa&_sa!Ysa!^sa!Ssa#dsavsa!osa~PDuOX(_Oq1`Ox1nO!Y&fa~P'ZO|(iO!Y&fa~O!Y(jO~O|(iO!V%qO!W%pO!Y&fa~P$gOX(nOq1`Ox1nO!^&aa#o&aa%h&aa%k&aai&aa}&aa!o&aa&^&aa~P'ZO|(oO!^&aa#o&aa%h&aa%k&aai&aa}&aa!o&aa&^&aa~O!^(rO~O|(oO!V%qO!W%pO!^&aa~P$gO|(uO!V%qO!W%pO!^&ga~P$gO|(xO}&uX!^&uX!o&uX&^&uX~O}(|O!^)OO!o)PO&^({O~O}(|O!^)SO!o)TO&^)RO~O}(|O!^)WO!o)XO&^)VO~O}(|O!^)[O!o)]O&^)ZO~OX&dOquOxvO}%zi#Q%zi#o%zi%h%zi%k%zi&^%zi~P'ZO|)_O}%zi#Q%zi#o%zi%h%zi%k%zi&^%zi~O!h&jOj&|a%h&|a#d&|a#o&|a%k&|a#c&|a~O%h)dO~OX$SOc$TO&XWO~O|&qO}ya~OquOxvO~P'ZO|(oO#o&aa%h&aa%k&aai&aa}&aa!^&aa!o&aa&^&aa~P$gO|)iO#o%zX%h%zX%k%zX&^%zX~O&^$]O#oWi%hWi%kWi~O#o&ca%h&ca%k&cap&ca~P'ZO|)lO#o&ca%h&ca%k&cap&ca~OX)pOj)rO&XWO~O#c)sO~O&XWO#o'Pa%h'Pa%k'Pa~O|)uO#o'Pa%h'Pa%k'Pa~Oq1`Ox1nO#o&{a%h&{a%k&{a}&{a~P'ZO|)xO#o&{a%h&{a%k&{a}&{a~OX)zOc)zO&XWO~O&^*PO~Ov*SO#r*ROP#piX#pih#pij#piq#piu#pix#pi!R#pi!S#pi!V#pi!W#pi!Z#pi!_#pi!j#pi!z#pi!{#pi!|#pi#T#pi#V#pi#X#pi#Z#pi#]#pi#a#pi#c#pi#f#pi#g#pi#i#pi#k#pi#t#pi#w#pi#{#pi#}#pi$S#pi$V#pi$X#pi%e#pi&R#pi&S#pi&W#pi&X#pi&m#pi&n#pi&q#pi&t#pi&x#pi&y#pi&z#pi%g#pi%k#pi~Ov*TOP#siX#sih#sij#siq#siu#six#si!R#si!S#si!V#si!W#si!Z#si!_#si!j#si!z#si!{#si!|#si#T#si#V#si#X#si#Z#si#]#si#a#si#c#si#f#si#g#si#i#si#k#si#t#si#w#si#{#si#}#si$S#si$V#si$X#si%e#si&R#si&S#si&W#si&X#si&m#si&n#si&q#si&t#si&x#si&y#si&z#si%g#si%k#si~OX*VOp'Sa~P'ZO|*WOp'Sa~O|*WOp'Sa~P$gOp*[O~O%f*`O~Ov*cO#x'iO#y*bOP#viX#vih#vij#viq#viu#vix#vi!R#vi!S#vi!V#vi!W#vi!Z#vi!_#vi!j#vi!z#vi!{#vi!|#vi#T#vi#V#vi#X#vi#Z#vi#]#vi#a#vi#c#vi#f#vi#g#vi#i#vi#k#vi#t#vi#w#vi#{#vi#}#vi$S#vi$V#vi$X#vi%e#vi&R#vi&S#vi&W#vi&X#vi&m#vi&n#vi&q#vi&t#vi&x#vi&y#vi&z#vi%g#vi%k#vi~OX*fOq1`Ox1nO}$wO~P'ZOq1`Ox1nO}'Ta~P'ZO|*jO}'Ta~OX*nOc*oOi*rO&T*pO&XWO~O}$wO'W*tO~Oj'pO~Oj!nO}$wO~O%h*yO~O%h*{O~OX%[Oc%[Oq1`Ox1nOi&ha~P'ZO|+OOi&ha~Oq1`Ox1nO}+RO!Y&ka~P'ZO|+SO!Y&ka~Oq1`Ox1nO|+SO}+VO!Y&ka~P'ZOq1`Ox1nO|+SO!Y&ka~P'ZO|+SO}+VO!Y&ka~Oo1aOp1aOq1jOr1kOilimliuli|li!Vli!Wli&_li!Yli}li!^li#oli%hli%kli!Sli#dlivli!oli&^li~On1cO~P!KZOnli~P!KZOX(_Oi+[Oq1`Ox1nO~P'ZOp+^O~Oi+[O|+`O~Oi+aO~OX(_Oq1`Ox1nO!Y&fi~P'ZO|+bO!Y&fi~O!Y+cO~OX(nOq1`Ox1nO!^&ai#o&ai%h&ai%k&aii&ai}&ai!o&ai&^&ai~P'ZO|+fO!V%qO!W%pO!^&gi~O|+iO!^&ai#o&ai%h&ai%k&aii&ai}&ai!o&ai&^&ai~O!^+jO~Oc+lOq1`Ox1nO!^&gi~P'ZO|+fO!^&gi~O!^+nO~OX+pOq1`Ox1nO}&ua!^&ua!o&ua&^&ua~P'ZO|+qO}&ua!^&ua!o&ua&^&ua~O!_+tO&w+uO!^!pX~O!^+wO~O}(|O!^+xO~O}(|O!^+xO!o+yO~O}(|O!^+zO~O}(|O!^+zO!o+{O~O}(|O!^+|O~O}(|O!^+|O!o+}O~O}(|O!^,OO~O}(|O!^,OO!o,PO~OX&dOquOxvO}%zq#Q%zq#o%zq%h%zq%k%zq&^%zq~P'ZO|%Oi}%Oi#Q%Oi#o%Oi%h%Oi%k%Oi&^%Oi~P$gOX&dOquOxvO~P'ZOX&dOq1`Ox1nO#o%za%h%za%k%za&^%za~P'ZO|,QO#o%za%h%za%k%za&^%za~O|$qa#o$qa%h$qa%k$qap$qa~P$gO#o&ci%h&ci%k&cip&ci~P'ZO|,TO#o#`q%h#`q%k#`q~O|,UO#d,WO#o'OX%h'OX%k'OXi'OX~OX,YOj)rO&XWO~O&XWO#o'Pi%h'Pi%k'Pi~Oq1`Ox1nO#o&{i%h&{i%k&{i}&{i~P'ZO}$[O|#mX!Y#mX~O|,^O!Y'QX~O!Y,`O~Ov,cO#r*ROP#pqX#pqh#pqj#pqq#pqu#pqx#pq!R#pq!S#pq!V#pq!W#pq!Z#pq!_#pq!j#pq!z#pq!{#pq!|#pq#T#pq#V#pq#X#pq#Z#pq#]#pq#a#pq#c#pq#f#pq#g#pq#i#pq#k#pq#t#pq#w#pq#{#pq#}#pq$S#pq$V#pq$X#pq%e#pq&R#pq&S#pq&W#pq&X#pq&m#pq&n#pq&q#pq&t#pq&x#pq&y#pq&z#pq%g#pq%k#pq~Op%Ya|%Ya~P$gOX*VOp'Si~P'ZO|,jOp'Si~O|,tO}$wO#d,tO~O#y,vOP#vqX#vqh#vqj#vqq#vqu#vqx#vq!R#vq!S#vq!V#vq!W#vq!Z#vq!_#vq!j#vq!z#vq!{#vq!|#vq#T#vq#V#vq#X#vq#Z#vq#]#vq#a#vq#c#vq#f#vq#g#vq#i#vq#k#vq#t#vq#w#vq#{#vq#}#vq$S#vq$V#vq$X#vq%e#vq&R#vq&S#vq&W#vq&X#vq&m#vq&n#vq&q#vq&t#vq&x#vq&y#vq&z#vq%g#vq%k#vq~O#d,wO|%[a}%[a~Oq1`Ox1nO}'Ti~P'ZO|,yO}'Ti~O}$[O&^,{Oi'VX|'VX~O&XWOi'VX|'VX~O|-POi'UX~Oi-RO~O%f-UO~O!V%qO!W%pOi&ii|&ii~OX%[Oc%[Oq1`Ox1nOi&hi~P'ZO}-XO|$ta!Y$ta~Oq1`Ox1nO}-YO|$ta!Y$ta~P'ZOq1`Ox1nO}+RO!Y&ki~P'ZO|-]O!Y&ki~Oq1`Ox1nO|-]O!Y&ki~P'ZO|-]O}-`O!Y&ki~Oi$pi|$pi!Y$pi~P$gOX(_Oq1`Ox1nO~P'ZOp-bO~OX(_Oi-cOq1`Ox1nO~P'ZOX(_Oq1`Ox1nO!Y&fq~P'ZO|$oi!^$oi#o$oi%h$oi%k$oii$oi}$oi!o$oi&^$oi~P$gOX(nOq1`Ox1nO~P'ZOc+lOq1`Ox1nO!^&gq~P'ZO|-dO!^&gq~O!^-eO~OX(nOq1`Ox1nO!^&aq#o&aq%h&aq%k&aqi&aq}&aq!o&aq&^&aq~P'ZO}-fO~OX+pOq1`Ox1nO}&ui!^&ui!o&ui&^&ui~P'ZO|-kO}&ui!^&ui!o&ui&^&ui~O!_+tO&w+uO!^!pa~O}(|O!^-nO~O}(|O!^-oO~O}(|O!^-pO~O}(|O!^-qO~OX&dOq1`Ox1nO#o%zi%h%zi%k%zi&^%zi~P'ZO|-rO#o%zi%h%zi%k%zi&^%zi~O&XWO#o'Oa%h'Oa%k'Oai'Oa~O|-uO#o'Oa%h'Oa%k'Oai'Oa~Oi-xO~OX)zOc)zO&XWO!Y'Qa~O|-zO!Y'Qa~Op%Yi|%Yi~P$gOX*VO~P'ZOX*VOp'Sq~P'ZOv.OOP#uyX#uyh#uyj#uyq#uyu#uyx#uy!R#uy!S#uy!V#uy!W#uy!Z#uy!_#uy!j#uy!z#uy!{#uy!|#uy#T#uy#V#uy#X#uy#Z#uy#]#uy#a#uy#c#uy#f#uy#g#uy#i#uy#k#uy#t#uy#w#uy#{#uy#}#uy$S#uy$V#uy$X#uy%e#uy&R#uy&S#uy&W#uy&X#uy&m#uy&n#uy&q#uy&t#uy&x#uy&y#uy&z#uy%g#uy%k#uy~O%g.SO%k.SO~P`O#y.TOP#vyX#vyh#vyj#vyq#vyu#vyx#vy!R#vy!S#vy!V#vy!W#vy!Z#vy!_#vy!j#vy!z#vy!{#vy!|#vy#T#vy#V#vy#X#vy#Z#vy#]#vy#a#vy#c#vy#f#vy#g#vy#i#vy#k#vy#t#vy#w#vy#{#vy#}#vy$S#vy$V#vy$X#vy%e#vy&R#vy&S#vy&W#vy&X#vy&m#vy&n#vy&q#vy&t#vy&x#vy&y#vy&z#vy%g#vy%k#vy~O|.WO}$wO#d.WO~Oq1`Ox1nO}'Tq~P'ZO|.ZO}'Tq~O&^,{Oi'Va|'Va~OX*nOc*oO&T*pO&XWOi'Ua~O|._Oi'Ua~O$[.cO~OX%[Oc%[Oq1`Ox1nO~P'ZOq1`Ox1nO}.dO|$ti!Y$ti~P'ZOq1`Ox1nO|$ti!Y$ti~P'ZO}.dO|$ti!Y$ti~Oq1`Ox1nO}+RO~P'ZOq1`Ox1nO}+RO!Y&kq~P'ZO|.gO!Y&kq~Oq1`Ox1nO|.gO!Y&kq~P'ZOu.jO!V%qO!W%pOi&bq!Y&bq!^&bq|&bq~P!.TOc+lOq1`Ox1nO!^&gy~P'ZO|$ri!^$ri~P$gOc+lOq1`Ox1nO~P'ZOX+pOq1`Ox1nO~P'ZOX+pOq1`Ox1nO}&uq!^&uq!o&uq&^&uq~P'ZO}(|O!^.oO!o.pO&^.nO~OX&dOq1`Ox1nO#o%zq%h%zq%k%zq&^%zq~P'ZO#d.rO|%Ta#o%Ta%h%Ta%k%Tai%Ta~O&XWO#o'Oi%h'Oi%k'Oii'Oi~O|.tO#o'Oi%h'Oi%k'Oii'Oi~OX)zOc)zO&XWO!Y'Qi~Ov.xOP#u!RX#u!Rh#u!Rj#u!Rq#u!Ru#u!Rx#u!R!R#u!R!S#u!R!V#u!R!W#u!R!Z#u!R!_#u!R!j#u!R!z#u!R!{#u!R!|#u!R#T#u!R#V#u!R#X#u!R#Z#u!R#]#u!R#a#u!R#c#u!R#f#u!R#g#u!R#i#u!R#k#u!R#t#u!R#w#u!R#{#u!R#}#u!R$S#u!R$V#u!R$X#u!R%e#u!R&R#u!R&S#u!R&W#u!R&X#u!R&m#u!R&n#u!R&q#u!R&t#u!R&x#u!R&y#u!R&z#u!R%g#u!R%k#u!R~Oq1`Ox1nO}'Ty~P'ZOX*nOc*oO&T*pO&XWOi'Ui~O$[.cO%g/QO%k/QO~OX/[Oj/YO!Z/XO!_/ZO!j/TO!{/VO!|/VO&S/SO&XWO&m]O&n^O&q_O~Oq1`Ox1nO|$tq!Y$tq~P'ZO}/aO|$tq!Y$tq~Oq1`Ox1nO}+RO!Y&ky~P'ZO|/bO!Y&ky~Oq1`Ox/fO~P'ZOu.jO!V%qO!W%pOi&by!Y&by!^&by|&by~P!.TO}(|O!^/iO~O}(|O!^/iO!o/jO~O&XWO#o'Oq%h'Oq%k'Oqi'Oq~O|/lO#o'Oq%h'Oq%k'Oqi'Oq~OX*nOc*oO&T*pO&XWO~Oj/qO!h/oO|$]X#d$]X%|$]Xi$]X~Ou$]X}$]X!Y$]X!^$]X~P$)YO&R/sO&S/sOu$^X|$^X}$^X#d$^X%|$^X!Y$^Xi$^X!^$^X~O!j/uO~O|/yO#d/{O%|/vOu'XX}'XX!Y'XXi'XX~Oc0OO~P$%_Oj/qOu'YX|'YX}'YX#d'YX%|'YX!Y'YXi'YX!^'YX~Ou0SO}$wO~Oq1`Ox1nO|$ty!Y$ty~P'ZOq1`Ox1nO}+RO!Y&k!R~P'ZO|0WO!Y&k!R~Oi&eXu&eX!V&eX!W&eX!Y&eX!^&eX|&eX~P!.TOu.jO!V%qO!W%pOi&da!Y&da!^&da|&da~O}(|O!^0ZO~O&XWO#o'Oy%h'Oy%k'Oyi'Oy~O!h/oOj$dau$da|$da}$da#d$da%|$da!Y$dai$da!^$da~O!j0bO~O&R/sO&S/sOu$^a|$^a}$^a#d$^a%|$^a!Y$^ai$^a!^$^a~O%|/vOu$ba|$ba}$ba#d$ba!Y$bai$ba!^$ba~Ou'Xa}'Xa!Y'Xai'Xa~P$%RO|0gOu'Xa}'Xa!Y'Xai'Xa~O!Y0jO~Oi0jO~O}0lO~O!^0mO~Oq1`Ox1nO}+RO!Y&k!Z~P'ZO}0pO~O&^0qO~P$)YO|0rO#d/{O%|/vOi'[X~O|0rOi'[X~Oi0tO~O!j0uO~O#d/{Ou%`a|%`a}%`a%|%`a!Y%`ai%`a!^%`a~O#d/{O%|/vOu%da|%da}%da!Y%dai%da~Ou'Xi}'Xi!Y'Xii'Xi~P$%RO|0wO#d/{O%|/vO!^'Za~O}$la~P$gOi'[a~P$%RO|1POi'[a~Oc1RO!^'Zi~P$%_O|1TO!^'Zi~O|1TO#d/{O%|/vO!^'Zi~O#d/{O%|/vOi$ji|$ji~O&^1WO~P$)YO#d/{O%|/vOi%ca|%ca~Oi'[i~P$%RO}1ZO~Oc1RO!^'Zq~P$%_O|1]O!^'Zq~O#d/{O%|/vO|%bi!^%bi~Oc1RO~P$%_Oc1RO!^'Zy~P$%_O#d/{O%|/vOi$ki|$ki~O#d/{O%|/vO|%bq!^%bq~O|,QO#o%za%h%za%k%za&^%za~P$gOX&dOq1`Ox1nO~P'ZOp1eO~Oq1eO~P'ZO}1fO~Ov1gO~P!.TO&n&q&y&z&m&t&x&X&m~\\\",goto:\\\"!@f']PPPPPPPP'^P'f+R+k,U,p-]-yP.hP'f/X/X'fPPP'f2tPPPPPP2t5kPP5kP8O8X>kPP>n?`?cPP'f'fPP?{PP'f'fPP'f'f'f'f'f@P@y'fP@|PASE^H}IRPIUIlIpIsIwIzJOJRJV'fPPPJYJc'^P'^'^P'^P'^P'^P'^P'^'^'^P'^PP'^PP'^P'^PJiJuJ}PKUK[PKUPKUKUPPPKUPMjPMsM}NTMjPKUN^PKUPNeNkPNo! T! r!!]NoNo!!c!!pNoNoNoNo!#U!#[!#_!#d!#g!#q!#w!$T!$g!$m!$w!$}!%k!%q!%w!%}!&X!&_!&e!&k!&q!&w!'Z!'e!'k!'q!'w!(R!(X!(_!(e!(k!(u!({!)V!)]!)f!)l!){!*T!*_!*fPPPPPPPPPPPPPPPPP!*l!*o!*u!+O!+Y!+ePPPPPPPPPPPP!0[!1p!5s!9WPP!9`!9r!9{!:t!:k!:}!;T!;W!;Z!;^!;f!\u003CVPPPPPPPPP!\u003CY!\u003CiPPPP!=m!=y!>V!>]!>f!>i!>l!>r!>x!?O!?RP!?Z!?d!@`!@c]jOs#v$w*`,p(TeOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!n!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(O(R(T(U(Y(_(a(e(i(n(o(u(x)_)a)i)l)x*P*R*V*W*[*`*f*j*t+O+R+S+V+]+^+`+b+e+f+i+l+p+q+t,Q,S,T,[,i,j,p,x,y,|-W-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0S0W0p1`1a1b1c1e1f1g1h1i1k1o}!hQ#r$P$b$q$}%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d!P!iQ#r$P$b$q$}%S%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d!R!jQ#r$P$b$q$}%S%T%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d!T!kQ#r$P$b$q$}%S%T%U%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d!V!lQ#r$P$b$q$}%S%T%U%V%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d!X!mQ#r$P$b$q$}%S%T%U%V%W%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d!]!mQ!s#r$P$b$q$}%S%T%U%V%W%X%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1d(TTOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!n!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(O(R(T(U(Y(_(a(e(i(n(o(u(x)_)a)i)l)x*P*R*V*W*[*`*f*j*t+O+R+S+V+]+^+`+b+e+f+i+l+p+q+t,Q,S,T,[,i,j,p,x,y,|-W-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0S0W0p1`1a1b1c1e1f1g1h1i1k1o&iVOYZ[isuw}!O!S!U!V!Z!n!p!t!u!v!x!y#c#g#j#m#s#v$Y$[$^$a$u$w%[%a%h%k%m%t%y%{&V&b&o&s'O'P'W'Z'b'i'l'}(O(R(T(U(Y(a(i(o(u(x)_)a)i)x*P*R*[*`*f*j*t+O+R+S+V+]+^+`+b+e+f+i+p+q+t,Q,T,[,p,x,y,|-W-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0W0p1`1a1b1c1e1f1g1h1k1o%sXOYZ[isw}!O!S!U!V!Z!n!p#c#g#j#m#s#v$Y$[$^$a$u$w%[%a%k%m%t%y%{&V&b&o&s'O'P'W'Z'b'i'l'}(O(R(T(U(Y(a(i(o(u(x)_)a)i)x*P*R*[*`*f*j*t+O+R+S+V+]+`+b+e+f+i+p+q+t,Q,T,[,p,x,y,|-W-X-Y-[-]-`-d-f-h-j-k-r.Z.].d.g/a/b0W1f1g1hQ$VvQ0X/fR1l1n'zeOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(R(T(U(Y(_(a(e(i(n(o(u(x)_)a)i)l)x*P*R*V*W*[*`*f*j*t+R+S+V+]+^+`+b+e+f+i+l+p+q+t,Q,S,T,[,i,j,p,x,y,|-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0S0W0p1`1a1b1c1e1f1g1h1i1k1oW#ym!P!Q$hW$Rv&q/f1nQ$j!RQ$n!TQ${![Q$|!]W%Z!n(O+O-WS&p$S$TQ'e$vQ)b&jQ)p'QU)q'S)r)sU)t'U)u,ZW){'Y,^-z.vQ*l'nW*m'p-P._/OQ,])zS-O*n*oY-t,U-u.s.t/lQ-w,WQ.U,tQ.Y,wQ.|.Wl/R.c/X/Y/[/w/y0O0g0l0q0v1R1W1ZQ/k.rQ0P/ZQ0^/qQ0i/{U0|0r1P1XX1S0w1T1[1]R&o$R!_!|YZ!U!V!p%a%m%t(R(T(U(a(i*R+R+S+V+]+`+b-X-Y-[-]-`.d.g/a/b0WR%k!{Q#QYQ&W#cQ&Z#gQ&]#jQ&_#mQ&x$^Q&{$aR-l+tT/e.j0p![!oQ!s#r$P$b$q$}%S%T%U%V%W%X%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1dQ&m#zQ't$|R*x'uR'}%ZQ%d!rR0[/o(SdOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!n!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(O(R(T(U(Y(_(a(e(i(n(o(u(x)_)a)i)l)x*P*R*V*W*[*`*f*j*t+O+R+S+V+]+^+`+b+e+f+i+l+p+q+t,Q,S,T,[,i,j,p,x,y,|-W-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0S0W0p1`1a1b1c1e1f1g1h1i1k1oS#pd#q!P/V.c/X/Y/Z/[/q/w/y0O0g0l0q0r0v0w1P1R1T1W1X1Z1[1](SdOTYZ[fistuwy}!O!S!U!V!W!Z!^!h!i!j!k!l!m!n!p!t!u!v!x!y#P#T#X#Y#c#g#j#m#s#v$X$Y$[$^$a$r$t$u$w%O%[%a%h%k%m%p%t%y%{&V&b&d&o&s&|'O'P'W'Z'_'b'i'l'}(O(R(T(U(Y(_(a(e(i(n(o(u(x)_)a)i)l)x*P*R*V*W*[*`*f*j*t+O+R+S+V+]+^+`+b+e+f+i+l+p+q+t,Q,S,T,[,i,j,p,x,y,|-W-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0S0W0p1`1a1b1c1e1f1g1h1i1k1oT#pd#qT#d`#eR)Q&Wy(}&W&Z&]&_)P)Q)T)U)X)Y)])^+y+{+},P-l.p.q/jT+u(|+vR.q-lT#ha#iR)U&ZT#kb#lR)Y&]T#nc#oR)^&_Q$`xQ,]){R,}*mX$^x$_$`&zQ'[$nQ'r${Q'u$|R*_'eQ)|'YV-y,^-z.vZlOs$w*`,pXpOs*`,pQ$x!YQ']$oQ'^$pQ'o$zQ's$|Q*]'dQ*d'iQ*g'jQ*h'kQ*u'qS*w't'uQ,d*RQ,f*SQ,g*TQ,k*ZS,m*^*vQ,q*bQ,r*cS,s*e*fQ-T*xQ-|,cQ-},eQ.P,lS.Q,n,oQ.V,uQ.X,vQ.w.OQ.y.RQ.z.TQ.{.UQ/m.xQ/n.|Q0T/_R0o0UWpOs*`,pR#|oQ'q${S*^'e'rR,o*_Q,|*mR.],}Q*v'qQ,n*^R.R,oZnOos*`,pQ'w$}R*z'xT.a-U.bu/^.c/X/Y/[/q/w/y0O0g0l0q0r0v1P1R1W1X1Zt/^.c/X/Y/[/q/w/y0O0g0l0q0r0v1P1R1W1X1ZQ0P/ZX1S0w1T1[1]!P/U.c/X/Y/Z/[/q/w/y0O0g0l0q0r0v0w1P1R1T1W1X1Z1[1]Q/t/TR0c/ug/w/W/x0_0f0k0y0{0}1Y1^1_u/].c/X/Y/[/q/w/y0O0g0l0q0r0v1P1R1W1X1ZX/r/R/]0^0|R0`/qV1O0r1P1XR0U/_QsOS$Os,pR,p*`Q&r$UR)g&rS%z#W$WS(p%z(sT(s%}&tQ%n#OQ%u#SW(b%n%u(g(kQ(g%rR(k%wQ&}$bR)m&}Q(v&OQ+g(qT+m(v+gQ(P%]R+P(PS(S%`%aY+T(S+U-^.h/cU+U(T(U(VU-^+V+W+XS.h-_-`R/c.iQ#_^R&R#_Q#b_R&T#bQ#e`R&X#eQ(y&US+r(y+sR+s(zQ+v(|R-m+vQ#iaR&[#iQ#lbR&^#lQ#ocR&`#oQ#qdR&a#qQ#tgQ&c#rW&f#t&c)j,RQ)j&wR,R1dQ$_xS&y$_&zR&z$`Q'X$lR)y'XQ&k#yR)c&kQ$h!QR'R$hQ,V)qS-v,V.uR.u-wQ'V$jR)v'VQ,_)|R-{,_Q#wkR&h#wQ*Q']R,b*QQ'`$qS*X'`*YR*Y'aQ'h$xR*a'hQ'm$yS*k'm,zR,z*lQ-Q*qR.`-QWoOs*`,pR#{oQ.b-UR/P.bd/x/W0_0f0k0y0{0}1Y1^1_R0e/xU/p/R0^0|R0]/pQ0x0kS1U0x1VR1V0yS0s0_0`R1Q0sQ/z/WR0h/zR!`PXrOs*`,pWqOs*`,pR'f$wYkOs$w*`,pR&g#v[xOs#v$w*`,pR&x$^&hQOYZ[isuw}!O!S!U!V!Z!n!p!t!u!v!x!y#c#g#j#m#s#v$Y$[$^$a$u$w%[%a%h%k%m%t%y%{&V&b&o&s'O'P'W'Z'b'i'l'}(O(R(T(U(Y(a(i(o(u(x)_)a)i)x*P*R*[*`*f*j*t+O+R+S+V+]+^+`+b+e+f+i+p+q+t,Q,T,[,p,x,y,|-W-X-Y-[-]-`-b-d-f-h-j-k-r.Z.].d.g.j/a/b0W0p1`1a1b1c1e1f1g1h1k1oQ!sTQ#rfQ$PtU$by%p(eS$q!W$tQ$}!^Q%S!hQ%T!iQ%U!jQ%V!kQ%W!lQ%X!mQ%r#PQ%w#TQ%}#XQ&O#YQ&t$XQ'a$rQ'x%OQ)`&dU)k&|)l,SW*U'_*W,i,jQ+Z(_Q+d(nQ,h*VQ-g+lQ0n0SR1d1iQ#OYQ#SZQ$o!UQ$p!VQ%`!pQ(V%a^(^%m%t(a(i+]+`+b^+Q(R+S-[-].g/b0WQ+W(TQ+X(UQ,e*RQ-Z+RQ-_+VQ.e-XQ.f-YQ.i-`Q/`.dR0V/a[gOs#v$w*`,p!^!{YZ!U!V!p%a%m%t(R(T(U(a(i*R+R+S+V+]+`+b-X-Y-[-]-`.d.g/a/b0WQ#W[Q#uiS$Ww}Q$e!OW$l!S$a'b*[S$y!Z$uW%Y!n(O+O-WY&U#c#g#j#m+t`&e#s&b)_)a)i,Q-r1hQ&u$YQ&v$[Q&w$^Q'{%[Q(]%kW(m%y(o+e+iQ(q%{Q(z&VQ)e&oS)h&s1fQ)n'OQ)o'PU)w'W)x,[Q*O'ZQ*e'iY*i'l*j,x,y.ZQ*|'}S+Y(Y1gW+k(u+f-d-hW+o(x+q-j-kQ,a*PQ,u*fQ-S*tQ-i+pQ-s,TQ.[,|Q.m-fR.}.]hUOs#s#v$w&b&s(Y)_)a*`,p%Y!zYZ[iw}!O!S!U!V!Z!n!p#c#g#j#m$Y$[$^$a$u%[%a%k%m%t%y%{&V&o'O'P'W'Z'b'i'l'}(O(R(T(U(a(i(o(u(x)i)x*P*R*[*f*j*t+O+R+S+V+]+`+b+e+f+i+p+q+t,Q,T,[,x,y,|-W-X-Y-[-]-`-d-f-h-j-k-r.Z.].d.g/a/b0W1f1g1hQ$QuW%e!t!x1a1kQ%f!uQ%g!vQ%i!yQ%s1`S(X%h1eQ(Z1bQ([1cQ-a+^Q.l-bS/d.j0pR1m1oU$Uv/f1nR)f&q[hOs#v$w*`,pa!}Y#c#g#j#m$^$a+tQ#][Q$ZwR$d}Q%o#OQ%v#SQ%|#WQ'{%YQ(h%rQ(l%wQ(t%}Q(w&OQ+h(qQ-V*|Q.k-aQ/h.lR0Y/gQ$cyQ(d%pR+_(eQ/g.jR0z0pR#VZR#[[R%_!nQ%]!nV*}(O+O-W!]!qQ!s#r$P$b$q$}%S%T%U%V%W%X%r%w%}&O&t'a'x)`)k*U+Z+d,h-g0n1dR%b!pQ&W#cQ&Z#gQ&]#jQ&_#mR-l+tQ)O&WQ)S&ZQ)W&]Q)[&_S+x)P)QS+z)T)US+|)X)YS,O)])^Q-n+yQ-o+{Q-p+}Q-q,PQ.o-lS/i.p.qR0Z/jQ$m!SQ&{$aQ*Z'bR,l*[Q#zmQ$f!PQ$i!QR'T$hQ)p'SR,Y)sQ)p'SQ,X)rR,Y)sR$k!RR)}'YXqOs*`,pQ$s!WR'c$tQ$z!ZR'd$uR*s'pQ*q'pV.^-P._/OQ/_.cQ/|/XR/}/YU/W.c/X/YQ0R/[Q0_/qQ0d/wU0f/y0g0vQ0k0OQ0y0lQ0{0qU0}0r1P1XQ1Y1RQ1^1WR1_1ZR0Q/ZR0a/q\\\",nodeNames:\\\"⚠ print { { { { Comment Script AssignStatement * BinaryExpression BitOp BitOp BitOp BitOp ArithOp ArithOp @ ArithOp ** UnaryExpression ArithOp BitOp AwaitExpression await ) ( ParenthesizedExpression BinaryExpression or and CompareOp in not is UnaryExpression ConditionalExpression if else LambdaExpression lambda ParamList VariableName AssignOp , : NamedExpression AssignOp YieldExpression yield from TupleExpression ComprehensionExpression async for LambdaExpression ] [ ArrayExpression ArrayComprehensionExpression } { DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression CallExpression ArgList AssignOp MemberExpression . PropertyName Number String FormatString FormatReplacement FormatSelfDoc FormatConversion FormatSpec FormatReplacement FormatSelfDoc FormatReplacement FormatSelfDoc FormatReplacement FormatSelfDoc FormatReplacement FormatSelfDoc ContinuedString Ellipsis None Boolean TypeDef AssignOp UpdateStatement UpdateOp ExpressionStatement DeleteStatement del PassStatement pass BreakStatement break ContinueStatement continue ReturnStatement return YieldStatement PrintStatement RaiseStatement raise ImportStatement import as ScopeStatement global nonlocal AssertStatement assert TypeDefinition type TypeParamList TypeParam StatementGroup ; IfStatement Body elif WhileStatement while ForStatement TryStatement try except finally WithStatement with FunctionDefinition def ParamList AssignOp TypeDef ClassDefinition class DecoratedStatement Decorator At MatchStatement match MatchBody MatchClause case CapturePattern LiteralPattern ArithOp ArithOp AsPattern OrPattern LogicOp AttributePattern SequencePattern MappingPattern StarPattern ClassPattern PatternArgList KeywordPattern KeywordPattern Guard\\\",maxTerm:288,context:trackIndent$1,nodeProps:[[\\\"isolate\\\",-8,6,73,74,75,79,81,83,85,\\\"\\\"],[\\\"group\\\",-15,8,93,95,96,98,100,102,104,106,107,108,110,113,116,118,\\\"Statement Statement\\\",-22,10,20,23,27,42,51,52,58,59,62,63,64,65,66,69,72,73,74,87,88,89,90,\\\"Expression\\\",-10,122,124,127,129,130,134,136,141,143,146,\\\"Statement\\\",-9,151,152,155,156,158,159,160,161,162,\\\"Pattern\\\"],[\\\"openedBy\\\",25,\\\"(\\\",56,\\\"[\\\",60,\\\"{\\\"],[\\\"closedBy\\\",26,\\\")\\\",57,\\\"]\\\",61,\\\"}\\\"]],propSources:[pythonHighlighting],skippedNodes:[0,6],repeatNodeCount:38,tokenData:\\\"%-W#sR!`OX%TXY=|Y[%T[]=|]p%Tpq=|qr@_rsDOst!+|tu%Tuv!Nnvw#!|wx#$Wxy#:Uyz#;Yz{#\u003C^{|#>x|}#@S}!O#AW!O!P#Ci!P!Q#N_!Q!R$!y!R![$&w![!]$1e!]!^$3s!^!_$4w!_!`$7c!`!a$8m!a!b%T!b!c$;U!c!d$\u003Cb!d!e$>W!e!h$\u003Cb!h!i$H[!i!t$\u003Cb!t!u%#r!u!w$\u003Cb!w!x$Fl!x!}$\u003Cb!}#O%%z#O#P?d#P#Q%'O#Q#R%(S#R#S$\u003Cb#S#T%T#T#U$\u003Cb#U#V$>W#V#Y$\u003Cb#Y#Z$H[#Z#f$\u003Cb#f#g%#r#g#i$\u003Cb#i#j$Fl#j#o$\u003Cb#o#p%)^#p#q%*S#q#r%+^#r#s%,S#s$g%T$g;'S$\u003Cb;'S;=`$>Q\u003C%lO$\u003Cb!n%^]&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T!n&^]&w!b&oSOr%Trs'Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T!n'^]&w!b&oSOr%Trs(Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T!f(^Z&w!b&oSOw(Vwx)Px#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R\u003C%lO(V!f)UZ&w!bOw(Vwx)wx#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R\u003C%lO(V!f)|Z&w!bOw(Vwx*ox#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R\u003C%lO(V!b*tT&w!bO#o*o#p#q*o#r;'S*o;'S;=`+T\u003C%lO*o!b+WP;=`\u003C%l*o!f+`W&w!bO#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`.d;=`\u003C%l+x\u003C%lO(VS+}V&oSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^\u003C%lO+xS,gVOw+xwx,|x#O+x#O#P-c#P;'S+x;'S;=`.^\u003C%lO+xS-PUOw+xx#O+x#O#P-c#P;'S+x;'S;=`.^\u003C%lO+xS-fRO;'S+x;'S;=`-o;=`O+xS-tW&oSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^;=`\u003C%l+x\u003C%lO+xS.aP;=`\u003C%l+x!f.iW&oSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^;=`\u003C%l(V\u003C%lO+x!f/UP;=`\u003C%l(V!n/`]&w!b&rWOr%Trs&Vsw%Twx0Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T!n0`]&w!b&rWOr%Trs&Vsw%Twx1Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T!j1`Z&w!b&rWOr1Xrs2Rs#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i\u003C%lO1X!j2WZ&w!bOr1Xrs2ys#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i\u003C%lO1X!j3OZ&w!bOr1Xrs*os#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i\u003C%lO1X!j3vW&w!bO#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`6z;=`\u003C%l4`\u003C%lO1XW4eV&rWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t\u003C%lO4`W4}VOr4`rs5ds#O4`#O#P5y#P;'S4`;'S;=`6t\u003C%lO4`W5gUOr4`s#O4`#O#P5y#P;'S4`;'S;=`6t\u003C%lO4`W5|RO;'S4`;'S;=`6V;=`O4`W6[W&rWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t;=`\u003C%l4`\u003C%lO4`W6wP;=`\u003C%l4`!j7PW&rWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t;=`\u003C%l1X\u003C%lO4`!j7lP;=`\u003C%l1X!n7tW&w!bO#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=P;=`\u003C%l8^\u003C%lO%T[8eX&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`\u003Cy\u003C%lO8^[9VX&oSOr8^rs9rsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`\u003Cy\u003C%lO8^[9wX&oSOr8^rs+xsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`\u003Cy\u003C%lO8^[:iX&rWOr8^rs9Qsw8^wx;Ux#O8^#O#P;v#P;'S8^;'S;=`\u003Cy\u003C%lO8^[;ZX&rWOr8^rs9Qsw8^wx4`x#O8^#O#P;v#P;'S8^;'S;=`\u003Cy\u003C%lO8^[;yRO;'S8^;'S;=`\u003CS;=`O8^[\u003CZY&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`\u003Cy;=`\u003C%l8^\u003C%lO8^[\u003C|P;=`\u003C%l8^!n=WY&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`\u003Cy;=`\u003C%l%T\u003C%lO8^!n=yP;=`\u003C%l%T#s>Xc&w!b&oS&rW%u!TOX%TXY=|Y[%T[]=|]p%Tpq=|qr%Trs&Vsw%Twx/Xx#O%T#O#P?d#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#s?i[&w!bOY%TYZ=|Z]%T]^=|^#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=P;=`\u003C%l8^\u003C%lO%T!q@hd&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`Av!`#O%T#O#P7o#P#T%T#T#UBz#U#f%T#f#gBz#g#hBz#h#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T!qBR]oR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T!qCV]!oR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#cDXa&w!b&oS&msOYE^YZ%TZ]E^]^%T^rE^rs!)|swE^wxGpx#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v\u003C%lOE^#cEia&w!b&oS&rW&msOYE^YZ%TZ]E^]^%T^rE^rsFnswE^wxGpx#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v\u003C%lOE^#cFw]&w!b&oS&msOr%Trs'Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#cGya&w!b&rW&msOYE^YZ%TZ]E^]^%T^rE^rsFnswE^wxIOx#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v\u003C%lOE^#cIXa&w!b&rW&msOYE^YZ%TZ]E^]^%T^rE^rsFnswE^wxJ^x#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v\u003C%lOE^#_Jg_&w!b&rW&msOYJ^YZ1XZ]J^]^1X^rJ^rsKfs#OJ^#O#PL`#P#oJ^#o#pL}#p#qJ^#q#rL}#r;'SJ^;'S;=`!!o\u003C%lOJ^#_KmZ&w!b&msOr1Xrs2ys#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i\u003C%lO1X#_LeW&w!bO#oJ^#o#pL}#p#qJ^#q#rL}#r;'SJ^;'S;=`! r;=`\u003C%lL}\u003C%lOJ^{MUZ&rW&msOYL}YZ4`Z]L}]^4`^rL}rsMws#OL}#O#PNc#P;'SL};'S;=`! l\u003C%lOL}{M|V&msOr4`rs5ds#O4`#O#P5y#P;'S4`;'S;=`6t\u003C%lO4`{NfRO;'SL};'S;=`No;=`OL}{Nv[&rW&msOYL}YZ4`Z]L}]^4`^rL}rsMws#OL}#O#PNc#P;'SL};'S;=`! l;=`\u003C%lL}\u003C%lOL}{! oP;=`\u003C%lL}#_! y[&rW&msOYL}YZ4`Z]L}]^4`^rL}rsMws#OL}#O#PNc#P;'SL};'S;=`! l;=`\u003C%lJ^\u003C%lOL}#_!!rP;=`\u003C%lJ^#c!!zW&w!bO#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!(q;=`\u003C%l!#d\u003C%lOE^!P!#m]&oS&rW&msOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwx!%Yx#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k\u003C%lO!#d!P!$mX&oS&msOr8^rs9rsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`\u003Cy\u003C%lO8^!P!%a]&rW&msOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwx!&Yx#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k\u003C%lO!#d!P!&a]&rW&msOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwxL}x#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k\u003C%lO!#d!P!']RO;'S!#d;'S;=`!'f;=`O!#d!P!'o^&oS&rW&msOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwx!%Yx#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k;=`\u003C%l!#d\u003C%lO!#d!P!(nP;=`\u003C%l!#d#c!(z^&oS&rW&msOY!#dYZ8^Z]!#d]^8^^r!#drs!$fsw!#dwx!%Yx#O!#d#O#P!'Y#P;'S!#d;'S;=`!(k;=`\u003C%lE^\u003C%lO!#d#c!)yP;=`\u003C%lE^#c!*V]&w!b&oS&msOr%Trs!+Osw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c!+ZZ&sW&w!b&oS&qsOw(Vwx)Px#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R\u003C%lO(V#s!,XaU!T&w!b&oS&rWOY!+|YZ%TZ]!+|]^%T^r!+|rs!-^sw!+|wx!:hx#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh\u003C%lO!+|#s!-gaU!T&w!b&oSOY!+|YZ%TZ]!+|]^%T^r!+|rs!.lsw!+|wx!:hx#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh\u003C%lO!+|#s!.uaU!T&w!b&oSOY!+|YZ%TZ]!+|]^%T^r!+|rs!/zsw!+|wx!:hx#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh\u003C%lO!+|#k!0T_U!T&w!b&oSOY!/zYZ(VZ]!/z]^(V^w!/zwx!1Sx#O!/z#O#P!4z#P#o!/z#o#p!5w#p#q!/z#q#r!5w#r;'S!/z;'S;=`!:b\u003C%lO!/z#k!1Z_U!T&w!bOY!/zYZ(VZ]!/z]^(V^w!/zwx!2Yx#O!/z#O#P!4z#P#o!/z#o#p!5w#p#q!/z#q#r!5w#r;'S!/z;'S;=`!:b\u003C%lO!/z#k!2a_U!T&w!bOY!/zYZ(VZ]!/z]^(V^w!/zwx!3`x#O!/z#O#P!4z#P#o!/z#o#p!5w#p#q!/z#q#r!5w#r;'S!/z;'S;=`!:b\u003C%lO!/z#g!3gZU!T&w!bOY!3`YZ*oZ]!3`]^*o^#o!3`#o#p!4Y#p#q!3`#q#r!4Y#r;'S!3`;'S;=`!4t\u003C%lO!3`!T!4_TU!TOY!4YZ]!4Y^;'S!4Y;'S;=`!4n\u003C%lO!4Y!T!4qP;=`\u003C%l!4Y#g!4wP;=`\u003C%l!3`#k!5R[U!T&w!bOY!/zYZ(VZ]!/z]^(V^#o!/z#o#p!5w#p#q!/z#q#r!5w#r;'S!/z;'S;=`!9s;=`\u003C%l+x\u003C%lO!/z!X!6OZU!T&oSOY!5wYZ+xZ]!5w]^+x^w!5wwx!6qx#O!5w#O#P!8a#P;'S!5w;'S;=`!9m\u003C%lO!5w!X!6vZU!TOY!5wYZ+xZ]!5w]^+x^w!5wwx!7ix#O!5w#O#P!8a#P;'S!5w;'S;=`!9m\u003C%lO!5w!X!7nZU!TOY!5wYZ+xZ]!5w]^+x^w!5wwx!4Yx#O!5w#O#P!8a#P;'S!5w;'S;=`!9m\u003C%lO!5w!X!8fWU!TOY!5wYZ+xZ]!5w]^+x^;'S!5w;'S;=`!9O;=`\u003C%l+x\u003C%lO!5w!X!9TW&oSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^;=`\u003C%l!5w\u003C%lO+x!X!9pP;=`\u003C%l!5w#k!9xW&oSOw+xwx,dx#O+x#O#P-c#P;'S+x;'S;=`.^;=`\u003C%l!/z\u003C%lO+x#k!:eP;=`\u003C%l!/z#s!:qaU!T&w!b&rWOY!+|YZ%TZ]!+|]^%T^r!+|rs!-^sw!+|wx!;vx#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh\u003C%lO!+|#s!\u003CPaU!T&w!b&rWOY!+|YZ%TZ]!+|]^%T^r!+|rs!-^sw!+|wx!=Ux#O!+|#O#P!FW#P#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Nh\u003C%lO!+|#o!=__U!T&w!b&rWOY!=UYZ1XZ]!=U]^1X^r!=Urs!>^s#O!=U#O#P!@j#P#o!=U#o#p!Ag#p#q!=U#q#r!Ag#r;'S!=U;'S;=`!FQ\u003C%lO!=U#o!>e_U!T&w!bOY!=UYZ1XZ]!=U]^1X^r!=Urs!?ds#O!=U#O#P!@j#P#o!=U#o#p!Ag#p#q!=U#q#r!Ag#r;'S!=U;'S;=`!FQ\u003C%lO!=U#o!?k_U!T&w!bOY!=UYZ1XZ]!=U]^1X^r!=Urs!3`s#O!=U#O#P!@j#P#o!=U#o#p!Ag#p#q!=U#q#r!Ag#r;'S!=U;'S;=`!FQ\u003C%lO!=U#o!@q[U!T&w!bOY!=UYZ1XZ]!=U]^1X^#o!=U#o#p!Ag#p#q!=U#q#r!Ag#r;'S!=U;'S;=`!Ec;=`\u003C%l4`\u003C%lO!=U!]!AnZU!T&rWOY!AgYZ4`Z]!Ag]^4`^r!Agrs!Bas#O!Ag#O#P!DP#P;'S!Ag;'S;=`!E]\u003C%lO!Ag!]!BfZU!TOY!AgYZ4`Z]!Ag]^4`^r!Agrs!CXs#O!Ag#O#P!DP#P;'S!Ag;'S;=`!E]\u003C%lO!Ag!]!C^ZU!TOY!AgYZ4`Z]!Ag]^4`^r!Agrs!4Ys#O!Ag#O#P!DP#P;'S!Ag;'S;=`!E]\u003C%lO!Ag!]!DUWU!TOY!AgYZ4`Z]!Ag]^4`^;'S!Ag;'S;=`!Dn;=`\u003C%l4`\u003C%lO!Ag!]!DsW&rWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t;=`\u003C%l!Ag\u003C%lO4`!]!E`P;=`\u003C%l!Ag#o!EhW&rWOr4`rs4zs#O4`#O#P5y#P;'S4`;'S;=`6t;=`\u003C%l!=U\u003C%lO4`#o!FTP;=`\u003C%l!=U#s!F_[U!T&w!bOY!+|YZ%TZ]!+|]^%T^#o!+|#o#p!GT#p#q!+|#q#r!GT#r;'S!+|;'S;=`!Mq;=`\u003C%l8^\u003C%lO!+|!a!G^]U!T&oS&rWOY!GTYZ8^Z]!GT]^8^^r!GTrs!HVsw!GTwx!JVx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk\u003C%lO!GT!a!H^]U!T&oSOY!GTYZ8^Z]!GT]^8^^r!GTrs!IVsw!GTwx!JVx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk\u003C%lO!GT!a!I^]U!T&oSOY!GTYZ8^Z]!GT]^8^^r!GTrs!5wsw!GTwx!JVx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk\u003C%lO!GT!a!J^]U!T&rWOY!GTYZ8^Z]!GT]^8^^r!GTrs!HVsw!GTwx!KVx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk\u003C%lO!GT!a!K^]U!T&rWOY!GTYZ8^Z]!GT]^8^^r!GTrs!HVsw!GTwx!Agx#O!GT#O#P!LV#P;'S!GT;'S;=`!Mk\u003C%lO!GT!a!L[WU!TOY!GTYZ8^Z]!GT]^8^^;'S!GT;'S;=`!Lt;=`\u003C%l8^\u003C%lO!GT!a!L{Y&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`\u003Cy;=`\u003C%l!GT\u003C%lO8^!a!MnP;=`\u003C%l!GT#s!MxY&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`\u003Cy;=`\u003C%l!+|\u003C%lO8^#s!NkP;=`\u003C%l!+|#b!Ny_&UQ&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#b#!T]#Qr&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#b##X_&OQ&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c#$aa&w!b&rW&msOY#%fYZ%TZ]#%f]^%T^r#%frs#&vsw#%fwx#8Ux#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O\u003C%lO#%f#c#%qa&w!b&oS&rW&msOY#%fYZ%TZ]#%f]^%T^r#%frs#&vsw#%fwx#/{x#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O\u003C%lO#%f#c#'Pa&w!b&oS&msOY#%fYZ%TZ]#%f]^%T^r#%frs#(Usw#%fwx#/{x#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O\u003C%lO#%f#c#(_a&w!b&oS&msOY#%fYZ%TZ]#%f]^%T^r#%frs#)dsw#%fwx#/{x#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O\u003C%lO#%f#Z#)m_&w!b&oS&msOY#)dYZ(VZ]#)d]^(V^w#)dwx#*lx#O#)d#O#P#+f#P#o#)d#o#p#,T#p#q#)d#q#r#,T#r;'S#)d;'S;=`#/u\u003C%lO#)d#Z#*sZ&w!b&msOw(Vwx)wx#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R\u003C%lO(V#Z#+kW&w!bO#o#)d#o#p#,T#p#q#)d#q#r#,T#r;'S#)d;'S;=`#.x;=`\u003C%l#,T\u003C%lO#)dw#,[Z&oS&msOY#,TYZ+xZ]#,T]^+x^w#,Twx#,}x#O#,T#O#P#-i#P;'S#,T;'S;=`#.r\u003C%lO#,Tw#-SV&msOw+xwx,|x#O+x#O#P-c#P;'S+x;'S;=`.^\u003C%lO+xw#-lRO;'S#,T;'S;=`#-u;=`O#,Tw#-|[&oS&msOY#,TYZ+xZ]#,T]^+x^w#,Twx#,}x#O#,T#O#P#-i#P;'S#,T;'S;=`#.r;=`\u003C%l#,T\u003C%lO#,Tw#.uP;=`\u003C%l#,T#Z#/P[&oS&msOY#,TYZ+xZ]#,T]^+x^w#,Twx#,}x#O#,T#O#P#-i#P;'S#,T;'S;=`#.r;=`\u003C%l#)d\u003C%lO#,T#Z#/xP;=`\u003C%l#)d#c#0U]&w!b&rW&msOr%Trs&Vsw%Twx0Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c#1SW&w!bO#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#6y;=`\u003C%l#1l\u003C%lO#%f!P#1u]&oS&rW&msOY#1lYZ8^Z]#1l]^8^^r#1lrs#2nsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s\u003C%lO#1l!P#2u]&oS&msOY#1lYZ8^Z]#1l]^8^^r#1lrs#3nsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s\u003C%lO#1l!P#3u]&oS&msOY#1lYZ8^Z]#1l]^8^^r#1lrs#,Tsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s\u003C%lO#1l!P#4uX&rW&msOr8^rs9Qsw8^wx;Ux#O8^#O#P;v#P;'S8^;'S;=`\u003Cy\u003C%lO8^!P#5eRO;'S#1l;'S;=`#5n;=`O#1l!P#5w^&oS&rW&msOY#1lYZ8^Z]#1l]^8^^r#1lrs#2nsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s;=`\u003C%l#1l\u003C%lO#1l!P#6vP;=`\u003C%l#1l#c#7S^&oS&rW&msOY#1lYZ8^Z]#1l]^8^^r#1lrs#2nsw#1lwx#4nx#O#1l#O#P#5b#P;'S#1l;'S;=`#6s;=`\u003C%l#%f\u003C%lO#1l#c#8RP;=`\u003C%l#%f#c#8_]&w!b&rW&msOr%Trs&Vsw%Twx#9Wx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c#9cZ&pS&w!b&rW&nsOr1Xrs2Rs#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i\u003C%lO1X#c#:a]js&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T!q#;e]iR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c#\u003CiaXs&w!b&oS&rWOr%Trs&Vsw%Twx/Xxz%Tz{#=n{!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c#=y_cR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c#?T_&Rs&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T!q#@_]|R&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#s#Ac`&Ss&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`!a#Be!a#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#O#Bp]'W`&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c#Cta!hQ&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!O%T!O!P#Dy!P!Q%T!Q![#GV![#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c#ES_&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!O%T!O!P#FR!P#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c#F^]!zs&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a#Gbi!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q![#GV![!g%T!g!h#IP!h!l%T!l!m#MZ!m#O%T#O#P7o#P#R%T#R#S#GV#S#X%T#X#Y#IP#Y#^%T#^#_#MZ#_#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a#IYc&w!b&oS&rWOr%Trs&Vsw%Twx/Xx{%T{|#Je|}%T}!O#Je!O!Q%T!Q![#Km![#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a#Jn_&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q![#Km![#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a#Kxe!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q![#Km![!l%T!l!m#MZ!m#O%T#O#P7o#P#R%T#R#S#Km#S#^%T#^#_#MZ#_#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a#Mf]!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c#Nja&TR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!P%T!P!Q$ o!Q!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#b$ z_&VQ&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a$#Uw!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!O%T!O!P$%o!P!Q%T!Q![$&w![!d%T!d!e$(w!e!g%T!g!h#IP!h!l%T!l!m#MZ!m!q%T!q!r$+m!r!z%T!z!{$.]!{#O%T#O#P7o#P#R%T#R#S$&w#S#U%T#U#V$(w#V#X%T#X#Y#IP#Y#^%T#^#_#MZ#_#c%T#c#d$+m#d#l%T#l#m$.]#m#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a$%x_&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q![#GV![#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a$'Sk!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!O%T!O!P$%o!P!Q%T!Q![$&w![!g%T!g!h#IP!h!l%T!l!m#MZ!m#O%T#O#P7o#P#R%T#R#S$&w#S#X%T#X#Y#IP#Y#^%T#^#_#MZ#_#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a$)Qb&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q!R$*Y!R!S$*Y!S#O%T#O#P7o#P#R%T#R#S$*Y#S#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a$*eb!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q!R$*Y!R!S$*Y!S#O%T#O#P7o#P#R%T#R#S$*Y#S#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a$+va&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q!Y$,{!Y#O%T#O#P7o#P#R%T#R#S$,{#S#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a$-Wa!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q!Y$,{!Y#O%T#O#P7o#P#R%T#R#S$,{#S#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a$.fe&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q![$/w![!c%T!c!i$/w!i#O%T#O#P7o#P#R%T#R#S$/w#S#T%T#T#Z$/w#Z#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a$0Se!jq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!Q%T!Q![$/w![!c%T!c!i$/w!i#O%T#O#P7o#P#R%T#R#S$/w#S#T%T#T#Z$/w#Z#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#s$1p_}!T&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`$2o!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T!q$2z]&_R&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c$4O]#os&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c$5SaoR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!^%T!^!_$6X!_!`Av!`!aAv!a#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#b$6d_&PQ&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c$7n_&^s&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`Av!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c$8x`oR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`Av!`!a$9z!a#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#b$:V_&QQ&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c$;c_aQ$VP&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#s$\u003Coe&w!b&oS&rW&l`&XsOr%Trs&Vsw%Twx/Xx!Q%T!Q![$\u003Cb![!c%T!c!}$\u003Cb!}#O%T#O#P7o#P#R%T#R#S$\u003Cb#S#T%T#T#o$\u003Cb#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$\u003Cb;'S;=`$>Q\u003C%lO$\u003Cb#s$>TP;=`\u003C%l$\u003Cb#s$>ei&w!b&oS&rW&l`&XsOr%Trs$@Ssw%Twx$C`x!Q%T!Q![$\u003Cb![!c%T!c!t$\u003Cb!t!u$Fl!u!}$\u003Cb!}#O%T#O#P7o#P#R%T#R#S$\u003Cb#S#T%T#T#f$\u003Cb#f#g$Fl#g#o$\u003Cb#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$\u003Cb;'S;=`$>Q\u003C%lO$\u003Cb#c$@]a&w!b&oS&msOYE^YZ%TZ]E^]^%T^rE^rs$AbswE^wxGpx#OE^#O#P!!u#P#oE^#o#p!#d#p#qE^#q#r!#d#r;'SE^;'S;=`!)v\u003C%lOE^#c$Ak]&w!b&oS&msOr%Trs$Bdsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#Z$BmZ&w!b&oS&qsOw(Vwx)Px#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R\u003C%lO(V#c$Cia&w!b&rW&msOY#%fYZ%TZ]#%f]^%T^r#%frs#&vsw#%fwx$Dnx#O#%f#O#P#0}#P#o#%f#o#p#1l#p#q#%f#q#r#1l#r;'S#%f;'S;=`#8O\u003C%lO#%f#c$Dw]&w!b&rW&msOr%Trs&Vsw%Twx$Epx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#_$EyZ&w!b&rW&nsOr1Xrs2Rs#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i\u003C%lO1X#s$Fye&w!b&oS&rW&l`&XsOr%Trs$@Ssw%Twx$C`x!Q%T!Q![$\u003Cb![!c%T!c!}$\u003Cb!}#O%T#O#P7o#P#R%T#R#S$\u003Cb#S#T%T#T#o$\u003Cb#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$\u003Cb;'S;=`$>Q\u003C%lO$\u003Cb#s$Hii&w!b&oS&rW&l`&XsOr%Trs$JWsw%Twx$MUx!Q%T!Q![$\u003Cb![!c%T!c!t$\u003Cb!t!u%!S!u!}$\u003Cb!}#O%T#O#P7o#P#R%T#R#S$\u003Cb#S#T%T#T#f$\u003Cb#f#g%!S#g#o$\u003Cb#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$\u003Cb;'S;=`$>Q\u003C%lO$\u003Cb#c$Ja]&w!b&oS&xsOr%Trs$KYsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c$Ka]&w!b&oSOr%Trs$LYsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#Z$LcZ&w!b&oS&zsOw(Vwx)Px#O(V#O#P+Z#P#o(V#o#p+x#p#q(V#q#r+x#r;'S(V;'S;=`/R\u003C%lO(V#c$M_]&w!b&rW&tsOr%Trs&Vsw%Twx$NWx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#c$N_]&w!b&rWOr%Trs&Vsw%Twx% Wx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#_% aZ&w!b&rW&ysOr1Xrs2Rs#O1X#O#P3q#P#o1X#o#p4`#p#q1X#q#r4`#r;'S1X;'S;=`7i\u003C%lO1X#s%!ae&w!b&oS&rW&l`&XsOr%Trs$JWsw%Twx$MUx!Q%T!Q![$\u003Cb![!c%T!c!}$\u003Cb!}#O%T#O#P7o#P#R%T#R#S$\u003Cb#S#T%T#T#o$\u003Cb#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$\u003Cb;'S;=`$>Q\u003C%lO$\u003Cb#s%$Pm&w!b&oS&rW&l`&XsOr%Trs$@Ssw%Twx$C`x!Q%T!Q![$\u003Cb![!c%T!c!h$\u003Cb!h!i%!S!i!t$\u003Cb!t!u$Fl!u!}$\u003Cb!}#O%T#O#P7o#P#R%T#R#S$\u003Cb#S#T%T#T#U$\u003Cb#U#V$Fl#V#Y$\u003Cb#Y#Z%!S#Z#o$\u003Cb#o#p8^#p#q%T#q#r8^#r$g%T$g;'S$\u003Cb;'S;=`$>Q\u003C%lO$\u003Cb#c%&V]!Zs&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T!q%'Z]!YR&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#b%(__%}Q&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T#a%)gX!_#T&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`\u003Cy\u003C%lO8^#c%*__%|R&w!b&oS&rWOr%Trs&Vsw%Twx/Xx!_%T!_!`# x!`#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T!q%+gX!^!e&oS&rWOr8^rs9Qsw8^wx:dx#O8^#O#P;v#P;'S8^;'S;=`\u003Cy\u003C%lO8^#a%,_]&Wq&w!b&oS&rWOr%Trs&Vsw%Twx/Xx#O%T#O#P7o#P#o%T#o#p8^#p#q%T#q#r8^#r;'S%T;'S;=`=v\u003C%lO%T\\\",tokenizers:[legacyPrint,indentation$1,newlines,formatString1,formatString2,formatString1l,formatString2l,0,1,2,3,4,5,6],topRules:{\\\"Script\\\":[0,7]},specialized:[{term:239,get:value=>spec_identifier$4[value]||-1}],tokenPrec:7500});const cache=new NodeWeakMap();const ScopeNodes=new Set([\\\"Script\\\",\\\"Body\\\",\\\"FunctionDefinition\\\",\\\"ClassDefinition\\\",\\\"LambdaExpression\\\",\\\"ForStatement\\\",\\\"MatchClause\\\"]);function defID(type){return(node,def,outer)=>{if(outer)return false;let id=node.node.getChild(\\\"VariableName\\\");if(id)def(id,type);return true;};}const gatherCompletions={FunctionDefinition:defID(\\\"function\\\"),ClassDefinition:defID(\\\"class\\\"),ForStatement(node,def,outer){if(outer)for(let child=node.node.firstChild;child;child=child.nextSibling){if(child.name==\\\"VariableName\\\")def(child,\\\"variable\\\");else if(child.name==\\\"in\\\")break;}},ImportStatement(_node,def){var _a,_b;let{node}=_node;let isFrom=((_a=node.firstChild)===null||_a===void 0?void 0:_a.name)==\\\"from\\\";for(let ch=node.getChild(\\\"import\\\");ch;ch=ch.nextSibling){if(ch.name==\\\"VariableName\\\"&&((_b=ch.nextSibling)===null||_b===void 0?void 0:_b.name)!=\\\"as\\\")def(ch,isFrom?\\\"variable\\\":\\\"namespace\\\");}},AssignStatement(node,def){for(let child=node.node.firstChild;child;child=child.nextSibling){if(child.name==\\\"VariableName\\\")def(child,\\\"variable\\\");else if(child.name==\\\":\\\"||child.name==\\\"AssignOp\\\")break;}},ParamList(node,def){for(let prev=null,child=node.node.firstChild;child;child=child.nextSibling){if(child.name==\\\"VariableName\\\"&&(!prev||!/\\\\*|AssignOp/.test(prev.name)))def(child,\\\"variable\\\");prev=child;}},CapturePattern:defID(\\\"variable\\\"),AsPattern:defID(\\\"variable\\\"),__proto__:null};function getScope(doc,node){let cached=cache.get(node);if(cached)return cached;let completions=[],top=true;function def(node,type){let name=doc.sliceString(node.from,node.to);completions.push({label:name,type});}node.cursor(IterMode.IncludeAnonymous).iterate(node=>{if(node.name){let gather=gatherCompletions[node.name];if(gather&&gather(node,def,top)||!top&&ScopeNodes.has(node.name))return false;top=false;}else if(node.to-node.from>8192){for(let _i281=0,_getScope=getScope(doc,node.node),_length281=_getScope.length;_i281\u003C_length281;_i281++){let c=_getScope[_i281];completions.push(c);}return false;}});cache.set(node,completions);return completions;}const Identifier$2=/^[\\\\w\\\\xa1-\\\\uffff][\\\\w\\\\d\\\\xa1-\\\\uffff]*$/;const dontComplete=[\\\"String\\\",\\\"FormatString\\\",\\\"Comment\\\",\\\"PropertyName\\\"];function localCompletionSource(context){let inner=syntaxTree(context.state).resolveInner(context.pos,-1);if(dontComplete.indexOf(inner.name)>-1)return null;let isWord=inner.name==\\\"VariableName\\\"||inner.to-inner.from\u003C20&&Identifier$2.test(context.state.sliceDoc(inner.from,inner.to));if(!isWord&&!context.explicit)return null;let options=[];for(let pos=inner;pos;pos=pos.parent){if(ScopeNodes.has(pos.name))options=options.concat(getScope(context.state.doc,pos));}return{options,from:isWord?inner.from:context.pos,validFor:Identifier$2};}const globals=[\\\"__annotations__\\\",\\\"__builtins__\\\",\\\"__debug__\\\",\\\"__doc__\\\",\\\"__import__\\\",\\\"__name__\\\",\\\"__loader__\\\",\\\"__package__\\\",\\\"__spec__\\\",\\\"False\\\",\\\"None\\\",\\\"True\\\"].map(n=>({label:n,type:\\\"constant\\\"})).concat([\\\"ArithmeticError\\\",\\\"AssertionError\\\",\\\"AttributeError\\\",\\\"BaseException\\\",\\\"BlockingIOError\\\",\\\"BrokenPipeError\\\",\\\"BufferError\\\",\\\"BytesWarning\\\",\\\"ChildProcessError\\\",\\\"ConnectionAbortedError\\\",\\\"ConnectionError\\\",\\\"ConnectionRefusedError\\\",\\\"ConnectionResetError\\\",\\\"DeprecationWarning\\\",\\\"EOFError\\\",\\\"Ellipsis\\\",\\\"EncodingWarning\\\",\\\"EnvironmentError\\\",\\\"Exception\\\",\\\"FileExistsError\\\",\\\"FileNotFoundError\\\",\\\"FloatingPointError\\\",\\\"FutureWarning\\\",\\\"GeneratorExit\\\",\\\"IOError\\\",\\\"ImportError\\\",\\\"ImportWarning\\\",\\\"IndentationError\\\",\\\"IndexError\\\",\\\"InterruptedError\\\",\\\"IsADirectoryError\\\",\\\"KeyError\\\",\\\"KeyboardInterrupt\\\",\\\"LookupError\\\",\\\"MemoryError\\\",\\\"ModuleNotFoundError\\\",\\\"NameError\\\",\\\"NotADirectoryError\\\",\\\"NotImplemented\\\",\\\"NotImplementedError\\\",\\\"OSError\\\",\\\"OverflowError\\\",\\\"PendingDeprecationWarning\\\",\\\"PermissionError\\\",\\\"ProcessLookupError\\\",\\\"RecursionError\\\",\\\"ReferenceError\\\",\\\"ResourceWarning\\\",\\\"RuntimeError\\\",\\\"RuntimeWarning\\\",\\\"StopAsyncIteration\\\",\\\"StopIteration\\\",\\\"SyntaxError\\\",\\\"SyntaxWarning\\\",\\\"SystemError\\\",\\\"SystemExit\\\",\\\"TabError\\\",\\\"TimeoutError\\\",\\\"TypeError\\\",\\\"UnboundLocalError\\\",\\\"UnicodeDecodeError\\\",\\\"UnicodeEncodeError\\\",\\\"UnicodeError\\\",\\\"UnicodeTranslateError\\\",\\\"UnicodeWarning\\\",\\\"UserWarning\\\",\\\"ValueError\\\",\\\"Warning\\\",\\\"ZeroDivisionError\\\"].map(n=>({label:n,type:\\\"type\\\"}))).concat([\\\"bool\\\",\\\"bytearray\\\",\\\"bytes\\\",\\\"classmethod\\\",\\\"complex\\\",\\\"float\\\",\\\"frozenset\\\",\\\"int\\\",\\\"list\\\",\\\"map\\\",\\\"memoryview\\\",\\\"object\\\",\\\"range\\\",\\\"set\\\",\\\"staticmethod\\\",\\\"str\\\",\\\"super\\\",\\\"tuple\\\",\\\"type\\\"].map(n=>({label:n,type:\\\"class\\\"}))).concat([\\\"abs\\\",\\\"aiter\\\",\\\"all\\\",\\\"anext\\\",\\\"any\\\",\\\"ascii\\\",\\\"bin\\\",\\\"breakpoint\\\",\\\"callable\\\",\\\"chr\\\",\\\"compile\\\",\\\"delattr\\\",\\\"dict\\\",\\\"dir\\\",\\\"divmod\\\",\\\"enumerate\\\",\\\"eval\\\",\\\"exec\\\",\\\"exit\\\",\\\"filter\\\",\\\"format\\\",\\\"getattr\\\",\\\"globals\\\",\\\"hasattr\\\",\\\"hash\\\",\\\"help\\\",\\\"hex\\\",\\\"id\\\",\\\"input\\\",\\\"isinstance\\\",\\\"issubclass\\\",\\\"iter\\\",\\\"len\\\",\\\"license\\\",\\\"locals\\\",\\\"max\\\",\\\"min\\\",\\\"next\\\",\\\"oct\\\",\\\"open\\\",\\\"ord\\\",\\\"pow\\\",\\\"print\\\",\\\"property\\\",\\\"quit\\\",\\\"repr\\\",\\\"reversed\\\",\\\"round\\\",\\\"setattr\\\",\\\"slice\\\",\\\"sorted\\\",\\\"sum\\\",\\\"vars\\\",\\\"zip\\\"].map(n=>({label:n,type:\\\"function\\\"})));const snippets=[snippetCompletion(\\\"def ${name}(${params}):\\\\n\\\\t${}\\\",{label:\\\"def\\\",detail:\\\"function\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"for ${name} in ${collection}:\\\\n\\\\t${}\\\",{label:\\\"for\\\",detail:\\\"loop\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"while ${}:\\\\n\\\\t${}\\\",{label:\\\"while\\\",detail:\\\"loop\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"try:\\\\n\\\\t${}\\\\nexcept ${error}:\\\\n\\\\t${}\\\",{label:\\\"try\\\",detail:\\\"/ except block\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"if ${}:\\\\n\\\\t\\\\n\\\",{label:\\\"if\\\",detail:\\\"block\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"if ${}:\\\\n\\\\t${}\\\\nelse:\\\\n\\\\t${}\\\",{label:\\\"if\\\",detail:\\\"/ else block\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"class ${name}:\\\\n\\\\tdef __init__(self, ${params}):\\\\n\\\\t\\\\t\\\\t${}\\\",{label:\\\"class\\\",detail:\\\"definition\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"import ${module}\\\",{label:\\\"import\\\",detail:\\\"statement\\\",type:\\\"keyword\\\"}),snippetCompletion(\\\"from ${module} import ${names}\\\",{label:\\\"from\\\",detail:\\\"import\\\",type:\\\"keyword\\\"})];const globalCompletion=ifNotIn(dontComplete,completeFromList(globals.concat(snippets)));function indentBody(context,node){let base=context.baseIndentFor(node);let line=context.lineAt(context.pos,-1),to=line.from+line.text.length;if(/^\\\\s*($|#)/.test(line.text)&&context.node.to\u003Cto+100&&!/\\\\S/.test(context.state.sliceDoc(to,context.node.to))&&context.lineIndent(context.pos,-1)\u003C=base)return null;if(/^\\\\s*(else:|elif |except |finally:)/.test(context.textAfter)&&context.lineIndent(context.pos,-1)>base)return null;return base+context.unit;}const pythonLanguage=LRLanguage.define({name:\\\"python\\\",parser:parser$c.configure({props:[indentNodeProp.add({Body:context=>{var _a;return(_a=indentBody(context,context.node))!==null&&_a!==void 0?_a:context.continue();},IfStatement:cx=>/^\\\\s*(else:|elif )/.test(cx.textAfter)?cx.baseIndent:cx.continue(),TryStatement:cx=>/^\\\\s*(except |finally:|else:)/.test(cx.textAfter)?cx.baseIndent:cx.continue(),\\\"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression\\\":delimitedIndent({closing:\\\")\\\"}),\\\"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression\\\":delimitedIndent({closing:\\\"}\\\"}),\\\"ArrayExpression ArrayComprehensionExpression\\\":delimitedIndent({closing:\\\"]\\\"}),\\\"String FormatString\\\":()=>null,Script:context=>{if(context.pos+/\\\\s*/.exec(context.textAfter)[0].length>=context.node.to){let endBody=null;for(let cur=context.node,to=cur.to;;){cur=cur.lastChild;if(!cur||cur.to!=to)break;if(cur.type.name==\\\"Body\\\")endBody=cur;}if(endBody){let bodyIndent=indentBody(context,endBody);if(bodyIndent!=null)return bodyIndent;}}return context.continue();}}),foldNodeProp.add({\\\"ArrayExpression DictionaryExpression SetExpression TupleExpression\\\":foldInside,Body:(node,state)=>({from:node.from+1,to:node.to-(node.to==state.doc.length?0:1)})})]}),languageData:{closeBrackets:{brackets:[\\\"(\\\",\\\"[\\\",\\\"{\\\",\\\"'\\\",'\\\"',\\\"'''\\\",'\\\"\\\"\\\"'],stringPrefixes:[\\\"f\\\",\\\"fr\\\",\\\"rf\\\",\\\"r\\\",\\\"u\\\",\\\"b\\\",\\\"br\\\",\\\"rb\\\",\\\"F\\\",\\\"FR\\\",\\\"RF\\\",\\\"R\\\",\\\"U\\\",\\\"B\\\",\\\"BR\\\",\\\"RB\\\"]},commentTokens:{line:\\\"#\\\"},indentOnInput:/^\\\\s*([\\\\}\\\\]\\\\)]|else:|elif |except |finally:)$/}});function python(){return new LanguageSupport(pythonLanguage,[pythonLanguage.data.of({autocomplete:localCompletionSource}),pythonLanguage.data.of({autocomplete:globalCompletion})]);}var _m14=Object.freeze({__proto__:null,globalCompletion:globalCompletion,localCompletionSource:localCompletionSource,python:python,pythonLanguage:pythonLanguage});const indent=148,dedent=149,descendantOp$1=150,InterpolationEnd=1,InterpolationContinue=2,Unit$1=3,callee=151,identifier=152,VariableName=4,InterpolationStart=5,newline=153,blankLineStart=154,eof=155,whitespace$1=156,LineComment$1=6,Comment=7,IndentedMixin=8,IndentedInclude=9,Dialect_indented=0;const space$2=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288];const colon=58,parenL=40,underscore=95,bracketL=91,dash=45,period=46,hash=35,percent=37,braceL=123,braceR=125,slash=47,asterisk=42,newlineChar=10,equals=61,plus=43,and=38;function isAlpha$2(ch){return ch>=65&&ch\u003C=90||ch>=97&&ch\u003C=122||ch>=161;}function isDigit$1(ch){return ch>=48&&ch\u003C=57;}function startOfComment(input){let next;return input.next==slash&&((next=input.peek(1))==slash||next==asterisk);}const spaces=new ExternalTokenizer((input,stack)=>{if(stack.dialectEnabled(Dialect_indented)){let prev;if(input.next\u003C0&&stack.canShift(eof)){input.acceptToken(eof);}else if(((prev=input.peek(-1))==newlineChar||prev\u003C0)&&stack.canShift(blankLineStart)){let spaces=0;while(input.next!=newlineChar&&space$2.includes(input.next)){input.advance();spaces++;}if(input.next==newlineChar||startOfComment(input))input.acceptToken(blankLineStart,-spaces);else if(spaces)input.acceptToken(whitespace$1);}else if(input.next==newlineChar){input.acceptToken(newline,1);}else if(space$2.includes(input.next)){input.advance();while(input.next!=newlineChar&&space$2.includes(input.next))input.advance();input.acceptToken(whitespace$1);}}else{let length=0;while(space$2.includes(input.next)){input.advance();length++;}if(length)input.acceptToken(whitespace$1);}},{contextual:true});const comments=new ExternalTokenizer((input,stack)=>{if(!startOfComment(input))return;input.advance();if(stack.dialectEnabled(Dialect_indented)){let indentedComment=-1;for(let off=1;;off++){let prev=input.peek(-off-1);if(prev==newlineChar||prev\u003C0){indentedComment=off+1;break;}else if(!space$2.includes(prev)){break;}}if(indentedComment>-1){let block=input.next==asterisk,end=0;input.advance();while(input.next>=0){if(input.next==newlineChar){input.advance();let indented=0;while(input.next!=newlineChar&&space$2.includes(input.next)){indented++;input.advance();}if(indented\u003CindentedComment){end=-indented-1;break;}}else if(block&&input.next==asterisk&&input.peek(1)==slash){end=2;break;}else{input.advance();}}input.acceptToken(block?Comment:LineComment$1,end);return;}}if(input.next==slash){while(input.next!=newlineChar&&input.next>=0)input.advance();input.acceptToken(LineComment$1);}else{input.advance();while(input.next>=0){let{next}=input;input.advance();if(next==asterisk&&input.next==slash){input.advance();break;}}input.acceptToken(Comment);}});const indentedMixins=new ExternalTokenizer((input,stack)=>{if((input.next==plus||input.next==equals)&&stack.dialectEnabled(Dialect_indented))input.acceptToken(input.next==equals?IndentedMixin:IndentedInclude,1);});const indentation=new ExternalTokenizer((input,stack)=>{if(!stack.dialectEnabled(Dialect_indented))return;let cDepth=stack.context.depth;if(input.next\u003C0&&cDepth){input.acceptToken(dedent);return;}let prev=input.peek(-1);if(prev==newlineChar){let depth=0;while(input.next!=newlineChar&&space$2.includes(input.next)){input.advance();depth++;}if(depth!=cDepth&&input.next!=newlineChar&&!startOfComment(input)){if(depth\u003CcDepth)input.acceptToken(dedent,-depth);else input.acceptToken(indent);}}});const identifiers=new ExternalTokenizer((input,stack)=>{for(let inside=false,dashes=0,i=0;;i++){let{next}=input;if(isAlpha$2(next)||next==dash||next==underscore||inside&&isDigit$1(next)){if(!inside&&(next!=dash||i>0))inside=true;if(dashes===i&&next==dash)dashes++;input.advance();}else if(next==hash&&input.peek(1)==braceL){input.acceptToken(InterpolationStart,2);break;}else{if(inside)input.acceptToken(next==parenL?callee:dashes==2&&stack.canShift(VariableName)?VariableName:identifier);break;}}});const interpolationEnd=new ExternalTokenizer(input=>{if(input.next==braceR){input.advance();while(isAlpha$2(input.next)||input.next==dash||input.next==underscore||isDigit$1(input.next))input.advance();if(input.next==hash&&input.peek(1)==braceL)input.acceptToken(InterpolationContinue,2);else input.acceptToken(InterpolationEnd);}});const descendant$1=new ExternalTokenizer(input=>{if(space$2.includes(input.peek(-1))){let{next}=input;if(isAlpha$2(next)||next==underscore||next==hash||next==period||next==bracketL||next==colon||next==dash||next==and)input.acceptToken(descendantOp$1);}});const unitToken$1=new ExternalTokenizer(input=>{if(!space$2.includes(input.peek(-1))){let{next}=input;if(next==percent){input.advance();input.acceptToken(Unit$1);}if(isAlpha$2(next)){do{input.advance();}while(isAlpha$2(input.next));input.acceptToken(Unit$1);}}});function IndentLevel(parent,depth){this.parent=parent;this.depth=depth;this.hash=(parent?parent.hash+parent.hash\u003C\u003C8:0)+depth+(depth\u003C\u003C4);}const topIndent=new IndentLevel(null,0);const trackIndent=new ContextTracker({start:topIndent,shift(context,term,stack,input){if(term==indent)return new IndentLevel(context,stack.pos-input.pos);if(term==dedent)return context.parent;return context;},hash(context){return context.hash;}});const cssHighlighting=styleTags({\\\"AtKeyword import charset namespace keyframes media supports include mixin use forward extend at-root\\\":tags$1.definitionKeyword,\\\"Keyword selector\\\":tags$1.keyword,\\\"ControlKeyword\\\":tags$1.controlKeyword,NamespaceName:tags$1.namespace,KeyframeName:tags$1.labelName,TagName:tags$1.tagName,\\\"ClassName Suffix\\\":tags$1.className,PseudoClassName:tags$1.constant(tags$1.className),IdName:tags$1.labelName,\\\"FeatureName PropertyName\\\":tags$1.propertyName,AttributeName:tags$1.attributeName,NumberLiteral:tags$1.number,KeywordQuery:tags$1.keyword,UnaryQueryOp:tags$1.operatorKeyword,\\\"CallTag ValueName\\\":tags$1.atom,VariableName:tags$1.variableName,SassVariableName:tags$1.special(tags$1.variableName),Callee:tags$1.operatorKeyword,Unit:tags$1.unit,\\\"UniversalSelector NestingSelector IndentedMixin IndentedInclude\\\":tags$1.definitionOperator,MatchOp:tags$1.compareOperator,\\\"ChildOp SiblingOp, LogicOp\\\":tags$1.logicOperator,BinOp:tags$1.arithmeticOperator,\\\"Important Global Default\\\":tags$1.modifier,Comment:tags$1.blockComment,LineComment:tags$1.lineComment,ColorLiteral:tags$1.color,\\\"ParenthesizedContent StringLiteral\\\":tags$1.string,\\\"InterpolationStart InterpolationContinue InterpolationEnd\\\":tags$1.meta,\\\": \\\\\\\"...\\\\\\\"\\\":tags$1.punctuation,\\\"PseudoOp #\\\":tags$1.derefOperator,\\\"; ,\\\":tags$1.separator,\\\"( )\\\":tags$1.paren,\\\"[ ]\\\":tags$1.squareBracket,\\\"{ }\\\":tags$1.brace});const spec_identifier$3={__proto__:null,not:62,only:62,using:173,with:183,without:183,hide:197,show:197,from:220,to:222,if:235,through:241,in:247};const spec_callee={__proto__:null,url:80,\\\"url-prefix\\\":80,domain:80,regexp:80,lang:94,\\\"nth-child\\\":94,\\\"nth-last-child\\\":94,\\\"nth-of-type\\\":94,\\\"nth-last-of-type\\\":94,dir:94,\\\"host-context\\\":94,selector:166};const spec_AtKeyword$1={__proto__:null,\\\"@import\\\":150,\\\"@include\\\":170,\\\"@mixin\\\":176,\\\"@function\\\":176,\\\"@use\\\":180,\\\"@extend\\\":186,\\\"@at-root\\\":190,\\\"@forward\\\":194,\\\"@media\\\":200,\\\"@charset\\\":204,\\\"@namespace\\\":208,\\\"@keyframes\\\":214,\\\"@supports\\\":226,\\\"@if\\\":230,\\\"@else\\\":232,\\\"@for\\\":238,\\\"@each\\\":244,\\\"@while\\\":250,\\\"@debug\\\":254,\\\"@warn\\\":254,\\\"@error\\\":254,\\\"@return\\\":254};const parser$b=LRParser.deserialize({version:14,states:\\\"I^Q`Q+tOOO#cQ+tOOP#jOpOOO#oQ(pO'#CjOOQ#U'#Ci'#CiO%[Q)QO'#FrO%oQ.jO'#CnO&gQ#dO'#DWO'^Q(pO'#CgO'eQ)OO'#DYO'pQ#dO'#DaO'uQ#dO'#DeOOQ#U'#Fr'#FrO'zQ(pO'#FrO(RQ(nO'#DpO%oQ.jO'#DwO%oQ.jO'#ESO%oQ.jO'#EVO%oQ.jO'#EXO(WQ)OO'#E[O(uQ)OO'#E^O%oQ.jO'#E`O)SQ)OO'#EcO%oQ.jO'#EeO)nQ)OO'#EgO)yQ#dO'#EjO*OQ)OO'#EpO*dQ)OO'#FQOOQ&Z'#Fq'#FqOOQ&Y'#FT'#FTO*nQ(nO'#FTQ`Q+tOOO%oQ.jO'#ErO*yQ(nO'#EvO+OQ)OO'#EyO%oQ.jO'#E|O%oQ.jO'#FOOOQ&Z'#F['#F[O+WQ+uO'#FyO+eQ(oO'#FyQOQ#SOOP+yO#SO'#FpPOOO)CAe)CAeOOQ#U'#Cm'#CmOOQ#U,59W,59WOOQ#i'#Cp'#CpO%oQ.jO'#CsO,XQ.wO'#CuO.qQ.^O,59YO%oQ.jO'#CzOOQ#S'#DO'#DOO/SQ(nO'#DTOOQ#i'#Fs'#FsO/XQ(nO'#C}OOQ#U'#DX'#DXOOQ#U,59r,59rO&gQ#dO,59rO/^Q)OO,59tO'pQ#dO,59{O'uQ#dO,5:PO(WQ)OO,5:TO(WQ)OO,5:VO(WQ)OO,5:WO(WQ)OO'#FZO/iQ(nO,59RO/tQ+tO'#DnO/{Q#TO'#DnOOQ&Z,59R,59ROOQ#U'#D['#D[OOQ#S'#D_'#D_OOQ#U,59t,59tO0QQ(nO,59tO0VQ(nO,59tOOQ#U'#Dc'#DcOOQ#U,59{,59{OOQ#S'#Dg'#DgO0[Q9`O,5:PO0dQ.jO,5:[O0nQ.jO,5:cO1gQ.jO,5:nO1tQ.YO,5:qO2VQ.jO,5:sOOQ#U'#Cj'#CjO2{Q(pO,5:vO3YQ(pO,5:xOOQ&Z,5:x,5:xO3aQ)OO,5:xO3fQ.jO,5:zOOQ#S'#Dz'#DzO4RQ)OO'#EPO4YQ(nO'#F{O*OQ)OO'#EOO4nQ(nO'#EQOOQ#S'#F|'#F|O/lQ(nO,5:}O2YQ.YO,5;POOQ#d'#Ei'#EiO*nQ(nO,5;RO4sQ)OO,5;ROOQ#S'#El'#ElO4{Q(nO,5;UO5QQ(nO,5;[O5]Q(nO,5;lOOQ&Z'#Fz'#FzOOQ&Y,5;o,5;oOOQ&Y-E9R-E9RO1tQ.YO,5;^O5kQ)OO,5;bO5pQ)OO'#GOO5xQ)OO,5;eO1tQ.YO,5;hO2YQ.YO,5;jOOQ&Z-E9Y-E9YO5}Q(oO,5\u003CeO6cQ+uO'#F^O5}Q(oO,5\u003CePOO#S'#FS'#FSP6yO#SO,5\u003C[POOO,5\u003C[,5\u003C[O7XQ.YO,59_OOQ#i,59a,59aO%oQ.jO,59cO%oQ.jO,59hO%oQ.jO'#FWO7gQ#WO1G.tOOQ#k1G.t1G.tO7oQ.oO,59fO:UQ! lO,59oO;RQ.jO'#DPOOQ#i,59i,59iOOQ#U1G/^1G/^OOQ#U1G/`1G/`O0QQ(nO1G/`O0VQ(nO1G/`OOQ#U1G/g1G/gO;]Q9`O1G/kO;vQ(pO1G/oO\u003CjQ(pO1G/qO=^Q(pO1G/rO>QQ(pO,5;uOOQ#S-E9X-E9XOOQ&Z1G.m1G.mO>_Q(nO,5:YO>dQ+uO,5:YO>kQ)OO'#D`O>rQ.jO'#D^OOQ#U1G/k1G/kO%oQ.jO1G/kO>yQ.kO1G/vOOQ#T1G/v1G/vO*nQ(nO1G/}O?vQ+uO'#FzOOQ&Z1G0Y1G0YO/XQ(nO1G0YOOQ&Z1G0]1G0]OOQ&Z1G0_1G0_O/XQ(nO1G0_OOQ&Z1G0b1G0bOOQ&Z1G0d1G0dOB`Q)OO1G0dOBeQ(nO1G0dOBjQ)OO1G0fOOQ&Z1G0f1G0fOBxQ.jO'#F`OCYQ(nO'#DzOCeQ(nO,5:gOCjQ(nO,5:kO*OQ)OO,5:iOCrQ)OO'#F_ODVQ(nO,5\u003CgODhQ(nO,5:jO(WQ)OO,5:lOOQ&Z1G0i1G0iOOQ&Z1G0k1G0kOOQ&Z1G0m1G0mO*nQ(nO1G0mOEPQ)OO'#EmOOQ&Z1G0p1G0pOOQ&Z1G0v1G0vOOQ&Z1G1W1G1WOE_Q+uO1G0xO%oQ.jO1G0|OGwQ)OO'#FdOHSQ)OO,5\u003CjO%oQ.jO1G1POOQ&Z1G1S1G1SOOQ&Z1G1U1G1UOH[Q(oO1G2POHpQ+uO,5;xOOQ#T,5;x,5;xOOQ#T-E9[-E9[POO#S-E9Q-E9QPOOO1G1v1G1vOOQ#i1G.y1G.yOIWQ.oO1G.}OOQ#i1G/S1G/SOKmQ.^O,5;rOOQ#W-E9U-E9UOOQ#k7+$`7+$`OLOQ(nO1G/ZOLTQ.jO'#FUOM_Q.jO'#FvONvQ.jO'#FsON}Q(nO,59kOOQ#U7+$z7+$zOOQ#U7+%V7+%VO%oQ.jO7+%VOOQ&Z1G/t1G/tO! SQ#TO1G/tO! XQ(pO'#FxO! cQ(nO,59zO! hQ.jO'#FwO! rQ(nO,59xO! wQ.YO7+%VO!!VQ.kO'#F]O%oQ.jO'#F]O!#vQ.kO7+%bOOQ#T7+%b7+%bOOQ&Z7+%i7+%iO5]Q(nO7+%tO*nQ(nO7+%yO!$jQ(nO7+&OO*OQ)OO7+&OOOQ#d-E9^-E9^OOQ&Z7+&Q7+&QO!$oQ.jO'#F}OOQ#d,5;z,5;zO%oQ.jO1G0ROOQ#S1G0V1G0VOOQ#S1G0T1G0TO!%ZQ(nO,5;yOOQ#S-E9]-E9]O!%oQ(pO1G0WOOQ&Z7+&X7+&XO!%vQ(vO'#CuO/lQ(nO'#FbO!&RQ)OO,5;XOOQ&Z,5;X,5;XO!&aQ+uO7+&dO!(yQ)OO7+&dO!)UQ.jO7+&hOOQ#d,5\u003CO,5\u003COOOQ#d-E9b-E9bO1tQ.YO7+&kOOQ#T1G1d1G1dOOQ#i7+$u7+$uOOQ#d-E9S-E9SO!)gQ.jO'#FVO!)tQ(nO,5\u003CbO!)tQ(nO,5\u003CbO%oQ.jO,5\u003CbOOQ#i1G/V1G/VO!)|Q.YO\u003C\u003CHqOOQ&Z7+%`7+%`O!*[Q)OO'#FYO!*fQ(nO,5\u003CdOOQ#U1G/f1G/fO!*nQ.jO'#FXO!*xQ(nO,5\u003CcOOQ#U1G/d1G/dOOQ#U\u003C\u003CHq\u003C\u003CHqO!+QQ.kO,5;wOOQ#e-E9Z-E9ZOOQ#T\u003C\u003CH|\u003C\u003CH|OOQ&Z\u003C\u003CI`\u003C\u003CI`OOQ&Z\u003C\u003CIe\u003C\u003CIeO*OQ)OO\u003C\u003CIjO!,qQ(nO\u003C\u003CIjO!,yQ.jO'#FaO!-^Q)OO,5\u003CiO!-oQ.jO7+%mOOQ#S7+%r7+%rOOQ#d,5;|,5;|OOQ#d-E9`-E9`OOQ&Z1G0s1G0sOOQ&Z-E9a-E9aO!(yQ)OO\u003C\u003CJOO%oQ.jO,5;}OOQ&Z\u003C\u003CJO\u003C\u003CJOO%oQ.jO\u003C\u003CJSOOQ&Z\u003C\u003CJV\u003C\u003CJVO!-vQ.jO,5;qO!.TQ.jO,5;qOOQ#S-E9T-E9TO!.[Q(nO1G1|O!.dQ.jO1G1|OOQ#UAN>]AN>]O!.nQ(pO,5;tOOQ#S-E9W-E9WO!.xQ.jO,5;sOOQ#S-E9V-E9VO!/SQ(nOAN?UO/lQ(nOAN?UO!/[Q.jO,5;{OOQ#d-E9_-E9_OOQ#S\u003C\u003CIX\u003C\u003CIXP!/vQ)OO'#FcOOQ&ZAN?jAN?jO1tQ.YO1G1iO1tQ.YOAN?nOOQ#S1G1]1G1]O%oQ.jO1G1]O!/{Q(nO7+'hO/lQ(nOG24pOOQ&ZG24pG24pOOQ&Z7+'T7+'TOOQ&ZG25YG25YO!0TQ.jO7+&wOOQ&ZLD*[LD*[\\\",stateData:\\\"!0e~O$bOSVOSUOS$`QQ~OS^OTUOWaOX`O[[O_TOc^OtXO}XO!UYO!YZO!lkO!m_O!w`O!zaO!|bO#PcO#RdO#TeO#WfO#YgO#[hO#_iO#ejO#gpO#kqO#nrO#qsO#stO$^RO$iVO~O$X$mP~P`O$`yO~Ot^Xt!eXv^X}^X!U^X!Y^X!^^X!a^X!c^X$[^X$_^X$i^X~Ot$fXv$fX}$fX!U$fX!Y$fX!^$fX!a$fX!c$fX$[$fX$_$fX$i$fX~O$^{O!i$fX$a$fXf$fXe$fX~P$gOS!UOTUO_!UOc!UOf!OOh!UOj!UOo!ROx!TO$]!SO$^}O$h!PO~O$^!WO~Ot!ZO}!ZO!U![O!Y!]O!^!^O!a!`O!c!cO$[!_O$_!dO$i!YO~Ov!aO~P&lO!P!jO$]!gO$^!fO~O$^!kO~O$^!mO~Ot!oO~P$gOt!oO~OTUO[[O_TOtXO}XO!UYO!YZO$^!tO$iVO~Of!xO!c!cO$_!dO~P(WOTUOc#POf!{Oo!}O!u#OO$^!zO!c$oP$_$oP~Oj#TOx!TO$^#SO~O$^#VO~OTUOc#POf!{Oo!}O!u#OO$^!zO~O!i$oP$a$oP~P)SO!i#ZO$_#ZO$a#ZO~Oc#_O~Oc#`O#o$rP~O$X$mX!j$mX$Z$mX~P`O!i#ZO$_#ZO$a#ZO$X$mX!j$mX$Z$mX~OU#hOV#hO$_#jO$b#hO~OR#lOPiXQiXliXmiX$iiXTiXciXfiXoiX!iiX!uiX$^iX$_iX$aiX!ciX!xiX!}iX#UiXeiXSiX_iXhiXjiXviXxiX!fiX!giX!hiX$]iX$hiX$XiXuiX!WiX#ciX#liX!jiX$ZiX~OP#qOQ#oOl#mOm#mO$i#nO~Of#sO~Of#tO~O!P#yO$]!gO$^!fO~Ov!aO!c!cO$_!dO~O!j$mP~P`O$Y$TO~Of$UO~Of$VO~O!W$WO![$XO~O!c!cO$_!dO~P%oOl#mOm#mO$i#nO!i$oP$_$oP$a$oP~P*OOl#mOm#mO!i#ZO$a#ZO$i#nO~O!c!cO!x$_O$_$]O~P1UOl#mOm#mO!c!cO$_!dO$i#nO~O!}$bO$_#ZO~P1UOt!ZO}!ZO!U![O!Y!]O!^!^O!a!`O$[!_O$i!YO~O!i#ZO$_#ZO$a#ZO~P2aOf$eO~P&lO!}$fO~O#U$iO$_#ZO~P1UOTUOc#POf!{Oo!}O!u#OO~O$^$jO~P3pOm$mOv$nO!c$oX$_$oX!i$oX$a$oX~Of$qO~Oj$uOx!TO~O!c$vO~Om$mO!c!cO$_!dO~O!c!cO!i#ZO$_$]O$a#ZO~O#b${O~Ov$|O#o$rX~O#o%OO~O!i#ZO$_#ZO$a#ZO$X$ma!j$ma$Z$ma~O!i$QX$X$QX$_$QX$a$QX!j$QX$Z$QX~P`OU#hOV#hO$_%WO$b#hO~Oe%XOl#mOm#mO$i#nO~OP%^OQ#oO~Ol#mOm#mO$i#nOPnaQnaTnacnafnaona!ina!una$^na$_na$ana!cna!xna!}na#UnaenaSna_nahnajnavnaxna!fna!gna!hna$]na$hna$Xnauna!Wna#cna#lna!jna$Zna~Oj%_Oy%_O~OS!UOTUO_!UOf!OOh!UOj!UOo!ROx!TO$]!SO$^}O$h!PO~Oc%bOe$jP~P:^O!W%eO![%fO~Ot!ZO}!ZO!U![O!Y!]O$i!YO~Ov!]i!^!]i!a!]i!c!]i$[!]i$_!]i!i!]i$a!]if!]ie!]i~P;eOv!_i!^!_i!a!_i!c!_i$[!_i$_!_i!i!_i$a!_if!_ie!_i~P;eOv!`i!^!`i!a!`i!c!`i$[!`i$_!`i!i!`i$a!`if!`ie!`i~P;eOv#}a!c#}a$_#}a~P2aO!j%gO~O$Z$mP~P`Oe$lP~P(WOe$kP~P%oOl#mOm#mOv%oO!f%qO!g%qO!h%qO$i#nO!i!di$_!di$a!di$X!di!j!di$Z!di~P%oO$Y$TOS$nXT$nXW$nXX$nX[$nX_$nXc$nXt$nX}$nX!U$nX!Y$nX!l$nX!m$nX!w$nX!z$nX!|$nX#P$nX#R$nX#T$nX#W$nX#Y$nX#[$nX#_$nX#e$nX#g$nX#k$nX#n$nX#q$nX#s$nX$X$nX$^$nX$i$nX!j$nX!i$nX$_$nX$a$nX$Z$nX~O!}%uO~Ot%vO~O!i#ZO#U$iO$_#ZO$a#ZO~O!i$qP#U$qP$_$qP$a$qP~P%oOe!nXm!nXt!pX~Ot%{O~Oe%|Om$mO~Ov$RX!c$RX$_$RX!i$RX$a$RX~P*OOv$nO!c$oa$_$oa!i$oa$a$oa~Om$mOv!ra!c!ra$_!ra!i!ra$a!rae!ra~O!j&VO#b&TO#c&TO$h&SO~O#h&XOS#fiT#fiW#fiX#fi[#fi_#fic#fit#fi}#fi!U#fi!Y#fi!l#fi!m#fi!w#fi!z#fi!|#fi#P#fi#R#fi#T#fi#W#fi#Y#fi#[#fi#_#fi#e#fi#g#fi#k#fi#n#fi#q#fi#s#fi$X#fi$^#fi$i#fi!j#fi!i#fi$_#fi$a#fi$Z#fi~Oc&ZOv$WX#o$WX~Ov$|O#o$ra~O!i#ZO$_#ZO$a#ZO$X$mi!j$mi$Z$mi~O!i$Qa$X$Qa$_$Qa$a$Qa!j$Qa$Z$Qa~P`O$i#nOPkiQkilkimkiTkickifkioki!iki!uki$^ki$_ki$aki!cki!xki!}ki#UkiekiSki_kihkijkivkixki!fki!gki!hki$]ki$hki$Xkiuki!Wki#cki#lki!jki$Zki~Ol#mOm#mO$i#nOP#zaQ#za~Oe&_O~Ol#mOm#mO$i#nOS#xXT#xX_#xXc#xXe#xXf#xXh#xXj#xXo#xXu#xXv#xXx#xX$]#xX$^#xX$h#xX~Ou&cOv&aOe$jX~P%oOS$gXT$gX_$gXc$gXe$gXf$gXh$gXj$gXl$gXm$gXo$gXu$gXv$gXx$gX$]$gX$^$gX$h$gX$i$gX~Ot&dO~PMlOe&eO~O$Z&gO~Ov&hOe$lX~P2aOe&jO~Ov&kOe$kX~P%oOe&mO~Ol#mOm#mO!W&nO$i#nO~Ol#mOm#mO$i#nOS$PXT$PX_$PXc$PXf$PXh$PXj$PXo$PXv$PXx$PX!f$PX!g$PX!h$PX!i$PX$]$PX$^$PX$_$PX$a$PX$h$PX$X$PX!j$PX$Z$PX~Ov%oO!f&qO!g&qO!h&qO!i!dq$_!dq$a!dq$X!dq!j!dq$Z!dq~P%oOt&tO~Ol#mOm#mOv&vO$i#nO!i$qX#U$qX$_$qX$a$qX~Om$mOv$Ra!c$Ra$_$Ra!i$Ra$a$Ra~Oe&yO~P2aOR#lO!ciX$_iX~O!j&|O#b&TO#c&TO$h&SO~O#h'OOS#fqT#fqW#fqX#fq[#fq_#fqc#fqt#fq}#fq!U#fq!Y#fq!l#fq!m#fq!w#fq!z#fq!|#fq#P#fq#R#fq#T#fq#W#fq#Y#fq#[#fq#_#fq#e#fq#g#fq#k#fq#n#fq#q#fq#s#fq$X#fq$^#fq$i#fq!j#fq!i#fq$_#fq$a#fq$Z#fq~O!c!cO#i'PO$_!dO~Ol#mOm#mO#c'RO#l'RO$i#nO~Oc'UOe#yXv#yX~P:^Ov&aOe$ja~Ol#mOm#mO!W'YO$i#nO~Oe#|Xv#|X~P(WOv&hOe$la~Oe#{Xv#{X~P%oOv&kOe$ka~Ol#mOm#mO$i#nOS$PaT$Pa_$Pac$Paf$Pah$Paj$Pao$Pav$Pax$Pa!f$Pa!g$Pa!h$Pa!i$Pa$]$Pa$^$Pa$_$Pa$a$Pa$h$Pa$X$Pa!j$Pa$Z$Pa~Oe'`Om$mO~Ov$TX!i$TX#U$TX$_$TX$a$TX~P%oOv&vO!i$qa#U$qa$_$qa$a$qa~Oe'cO~P%oOu'hOe#yav#ya~P%oOt'iO~PMlOv&aOe$ji~Ov&aOe$ji~P%oOe#|av#|a~P2aOe#{av#{a~P%oOe'kOm$mO~Ol#mOm#mO$i#nOv$Ta!i$Ta#U$Ta$_$Ta$a$Ta~O#i'PO~Ov&aOe$jq~Oe#yqv#yq~P%oO$h$il!al~\\\",goto:\\\"7g$sPPPPPPPPPPP$tP%O%cP%O%v%yP'iPP'iP(fP'iPP'iP'i'i)g*dPPP*mPP%O+p%OP+vP+|,S,Y%OP,`P%OP,fP%OP%O%OP,lP-}.aPPPPP$tPP']'].k']']']']P$tPP$tP$tPP$tP$tP$tPP$tP$tP$tP.n$tP.q.tPP$tP$tPPP$tPP$tPP$tP$tP$tP.w.}/T/s0R0X0_0e0k0w0}1X1_1e1k1q1wPPPPPPPPPPP1}2Q2^3TPP5W5Z5^5a5j6l6u7a7dalOPov!c#f$T%Ss[OPcdov!^!_!`!a!c#f$T$U$q%S&hsSOPcdov!^!_!`!a!c#f$T$U$q%S&hR|Tb[cd!^!_!`!a$U$q&h`]OPov!c#f$T%S!t!UU_`abegpst!O!R!o#m#n#o#t$V$X$Y$i${%O%a%f%k%o%p%{&a&d&k&v&x'P'R'T'X']'i'oe#Pfjk!p!{!}$m$n%v&t!u!UU_`abegpst!O!R!o#m#n#o#t$V$X$Y$i${%O%a%f%k%o%p%{&a&d&k&v&x'P'R'T'X']'i'o!t!UU_`abegpst!O!R!o#m#n#o#t$V$X$Y$i${%O%a%f%k%o%p%{&a&d&k&v&x'P'R'T'X']'i'oT&T$v&U!u!VU_`abegpst!O!R!o#m#n#o#t$V$X$Y$i${%O%a%f%k%o%p%{&a&d&k&v&x'P'R'T'X']'i'oQ#u!VQ%s$_R%t$b!t!UU_`abegpst!O!R!o#m#n#o#t$V$X$Y$i${%O%a%f%k%o%p%{&a&d&k&v&x'P'R'T'X']'i'oQ#ThR$u#UQ!XVR#v!YQ!hXR#w!ZQ#w!jR%d#yQ!iXR#x!ZQ#w!iR%d#xQ!lYR#z![Q!nZR#{!]Q!eWQ!wdQ$R!bQ$Z!oQ$^!qQ$`!rQ$d!vQ$r#QQ$x#XQ$y#YQ$z#^Q%P#bQ&r%sQ&z&TQ'Q&XQ'S&]Q'e'OQ'l'`Q'm'fQ'n'gR'p'kSnOoUwP!c$TQ#evQ%T#fR&^%Sa^OPov!c#f$T%SR$k!{R#UhR#WiR$w#WQ#iyR%V#iQoOR#]oQ%a#tQ%k$V^&`%a%k&x'T'X']'oQ&x%{Q'T&aQ'X&dQ']&kR'o'iQ&b%aU'V&b'W'jQ'W&cR'j'XQ#p!QR%]#pQ&l%kR'^&lQ&i%iR'[&iQ!bWR$Q!bUvP!c$TS#dv%SR%S#fQ%p$YR&p%pQ#gwQ%R#eT%U#g%RQ$o!|R&P$oQ$g!yR%w$gQ&w%yR'b&wQ&U$vR&{&UQ&W$zR&}&WQ$}#`R&[$}RzQSmOo]uPv!c#f$T%S`WOPov!c#f$T%SQ!ucQ!vdQ#|!^Q#}!_Q$O!`Q$P!aQ%i$UQ&Q$qR'Z&hQ!QUQ!p_Q!q`Q!raQ!sbQ!yeQ#RgQ#^pQ#bsQ#ctQ#k!OQ#r!RQ$Y!oQ%Y#mQ%Z#nQ%[#ol%`#t$V%a%k%{&a&d&k&x'T'X']'i'oQ%m$XS%n$Y%pQ%y$iQ&Y${Q&]%OQ&f%fQ&o%oQ'a&vQ'f'PR'g'RR%c#tR%l$VR%j$UQxPQ$S!cR%h$TQ#[nW#fw#e#g%RQ$^!qQ$a!sQ$c!uQ$h!yQ$s#RQ$t#TQ$y#YQ%Q#cQ%r$[Q%x$gQ&R$uQ&r%sR&s%tQ#QfQ#YkR$[!pU!|fk!pQ#XjQ$l!{Q$p!}Q%}$mQ&O$nQ&u%vR'_&tR%z$iR#ar\\\",nodeNames:\\\"⚠ InterpolationEnd InterpolationContinue Unit VariableName InterpolationStart LineComment Comment IndentedMixin IndentedInclude StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector SuffixedSelector Suffix Interpolation SassVariableName ValueName ) ( ParenthesizedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp LogicOp UnaryExpression LogicOp NamespacedValue CallExpression Callee ArgList : ... , CallLiteral CallTag ParenthesizedContent ClassSelector ClassName PseudoClassSelector :: PseudoClassName PseudoClassName ArgList PseudoClassName ArgList IdSelector # IdName ] AttributeSelector [ AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block { Declaration PropertyName Important Global Default ; } ImportStatement AtKeyword import KeywordQuery FeatureQuery FeatureName BinaryQuery UnaryQuery ParenthesizedQuery SelectorQuery selector IncludeStatement include Keyword MixinStatement mixin UseStatement use Keyword ExtendStatement extend RootStatement at-root ForwardStatement forward Keyword MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList Keyword Keyword SupportsStatement supports IfStatement ControlKeyword ControlKeyword Keyword ForStatement ControlKeyword Keyword EachStatement ControlKeyword Keyword WhileStatement ControlKeyword OutputStatement ControlKeyword AtRule Styles\\\",maxTerm:172,context:trackIndent,nodeProps:[[\\\"openedBy\\\",1,\\\"InterpolationStart\\\",5,\\\"InterpolationEnd\\\",21,\\\"(\\\",72,\\\"{\\\"],[\\\"isolate\\\",-3,6,7,26,\\\"\\\"],[\\\"closedBy\\\",22,\\\")\\\",65,\\\"}\\\"]],propSources:[cssHighlighting],skippedNodes:[0,6,7,130],repeatNodeCount:17,tokenData:\\\"!!]~RyOq#rqr$jrs0jst2^tu8{uv;hvw;ywx\u003C[xy=yyz>[z{>a{|>z|}Cm}!ODO!O!PDm!P!Q;h!Q![FW![!]GR!]!^G}!^!_H`!_!`Hw!`!aI`!a!b#r!b!cJa!c!}#r!}#OKy#O#P#r#P#QL[#Q#RLm#R#T#r#T#UMS#U#c#r#c#dNe#d#o#r#o#pNz#p#qLm#q#r! ]#r#s! n#s;'S#r;'S;=`!!V\u003C%lO#rW#uSOy$Rz;'S$R;'S;=`$d\u003C%lO$RW$WSyWOy$Rz;'S$R;'S;=`$d\u003C%lO$RW$gP;=`\u003C%l$RY$m[Oy$Rz!_$R!_!`%c!`#W$R#W#X%v#X#Z$R#Z#[)Z#[#]$R#]#^,V#^;'S$R;'S;=`$d\u003C%lO$RY%jSyWlQOy$Rz;'S$R;'S;=`$d\u003C%lO$RY%{UyWOy$Rz#X$R#X#Y&_#Y;'S$R;'S;=`$d\u003C%lO$RY&dUyWOy$Rz#Y$R#Y#Z&v#Z;'S$R;'S;=`$d\u003C%lO$RY&{UyWOy$Rz#T$R#T#U'_#U;'S$R;'S;=`$d\u003C%lO$RY'dUyWOy$Rz#i$R#i#j'v#j;'S$R;'S;=`$d\u003C%lO$RY'{UyWOy$Rz#`$R#`#a(_#a;'S$R;'S;=`$d\u003C%lO$RY(dUyWOy$Rz#h$R#h#i(v#i;'S$R;'S;=`$d\u003C%lO$RY(}S!hQyWOy$Rz;'S$R;'S;=`$d\u003C%lO$RY)`UyWOy$Rz#`$R#`#a)r#a;'S$R;'S;=`$d\u003C%lO$RY)wUyWOy$Rz#c$R#c#d*Z#d;'S$R;'S;=`$d\u003C%lO$RY*`UyWOy$Rz#U$R#U#V*r#V;'S$R;'S;=`$d\u003C%lO$RY*wUyWOy$Rz#T$R#T#U+Z#U;'S$R;'S;=`$d\u003C%lO$RY+`UyWOy$Rz#`$R#`#a+r#a;'S$R;'S;=`$d\u003C%lO$RY+yS!gQyWOy$Rz;'S$R;'S;=`$d\u003C%lO$RY,[UyWOy$Rz#a$R#a#b,n#b;'S$R;'S;=`$d\u003C%lO$RY,sUyWOy$Rz#d$R#d#e-V#e;'S$R;'S;=`$d\u003C%lO$RY-[UyWOy$Rz#c$R#c#d-n#d;'S$R;'S;=`$d\u003C%lO$RY-sUyWOy$Rz#f$R#f#g.V#g;'S$R;'S;=`$d\u003C%lO$RY.[UyWOy$Rz#h$R#h#i.n#i;'S$R;'S;=`$d\u003C%lO$RY.sUyWOy$Rz#T$R#T#U/V#U;'S$R;'S;=`$d\u003C%lO$RY/[UyWOy$Rz#b$R#b#c/n#c;'S$R;'S;=`$d\u003C%lO$RY/sUyWOy$Rz#h$R#h#i0V#i;'S$R;'S;=`$d\u003C%lO$RY0^S!fQyWOy$Rz;'S$R;'S;=`$d\u003C%lO$R~0mWOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W\u003C%lO0j~1[Oj~~1_RO;'S0j;'S;=`1h;=`O0j~1kXOY0jZr0jrs1Vs#O0j#O#P1[#P;'S0j;'S;=`2W;=`\u003C%l0j\u003C%lO0j~2ZP;=`\u003C%l0jZ2cY!UPOy$Rz!Q$R!Q![3R![!c$R!c!i3R!i#T$R#T#Z3R#Z;'S$R;'S;=`$d\u003C%lO$RY3WYyWOy$Rz!Q$R!Q![3v![!c$R!c!i3v!i#T$R#T#Z3v#Z;'S$R;'S;=`$d\u003C%lO$RY3{YyWOy$Rz!Q$R!Q![4k![!c$R!c!i4k!i#T$R#T#Z4k#Z;'S$R;'S;=`$d\u003C%lO$RY4rYhQyWOy$Rz!Q$R!Q![5b![!c$R!c!i5b!i#T$R#T#Z5b#Z;'S$R;'S;=`$d\u003C%lO$RY5iYhQyWOy$Rz!Q$R!Q![6X![!c$R!c!i6X!i#T$R#T#Z6X#Z;'S$R;'S;=`$d\u003C%lO$RY6^YyWOy$Rz!Q$R!Q![6|![!c$R!c!i6|!i#T$R#T#Z6|#Z;'S$R;'S;=`$d\u003C%lO$RY7TYhQyWOy$Rz!Q$R!Q![7s![!c$R!c!i7s!i#T$R#T#Z7s#Z;'S$R;'S;=`$d\u003C%lO$RY7xYyWOy$Rz!Q$R!Q![8h![!c$R!c!i8h!i#T$R#T#Z8h#Z;'S$R;'S;=`$d\u003C%lO$RY8oShQyWOy$Rz;'S$R;'S;=`$d\u003C%lO$R_9O`Oy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!_$R!_!`;T!`!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d\u003C%lO$RZ:X^yWcROy$Rz}$R}!O:Q!O!Q$R!Q![:Q![!c$R!c!}:Q!}#R$R#R#S:Q#S#T$R#T#o:Q#o;'S$R;'S;=`$d\u003C%lO$R[;[S![SyWOy$Rz;'S$R;'S;=`$d\u003C%lO$RY;mSlQOy$Rz;'S$R;'S;=`$d\u003C%lO$RZ\u003COS_ROy$Rz;'S$R;'S;=`$d\u003C%lO$R~\u003C_WOY\u003C[Zw\u003C[wx1Vx#O\u003C[#O#P\u003Cw#P;'S\u003C[;'S;=`=s\u003C%lO\u003C[~\u003CzRO;'S\u003C[;'S;=`=T;=`O\u003C[~=WXOY\u003C[Zw\u003C[wx1Vx#O\u003C[#O#P\u003Cw#P;'S\u003C[;'S;=`=s;=`\u003C%l\u003C[\u003C%lO\u003C[~=vP;=`\u003C%l\u003C[Z>OSfROy$Rz;'S$R;'S;=`$d\u003C%lO$R~>aOe~_>hU[PlQOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d\u003C%lO$RZ?RWlQ!aPOy$Rz!O$R!O!P?k!P!Q$R!Q![Bp![;'S$R;'S;=`$d\u003C%lO$RZ?pUyWOy$Rz!Q$R!Q![@S![;'S$R;'S;=`$d\u003C%lO$RZ@ZYyW$hROy$Rz!Q$R!Q![@S![!g$R!g!h@y!h#X$R#X#Y@y#Y;'S$R;'S;=`$d\u003C%lO$RZAOYyWOy$Rz{$R{|An|}$R}!OAn!O!Q$R!Q![BV![;'S$R;'S;=`$d\u003C%lO$RZAsUyWOy$Rz!Q$R!Q![BV![;'S$R;'S;=`$d\u003C%lO$RZB^UyW$hROy$Rz!Q$R!Q![BV![;'S$R;'S;=`$d\u003C%lO$RZBw[yW$hROy$Rz!O$R!O!P@S!P!Q$R!Q![Bp![!g$R!g!h@y!h#X$R#X#Y@y#Y;'S$R;'S;=`$d\u003C%lO$RZCrSvROy$Rz;'S$R;'S;=`$d\u003C%lO$RZDTWlQOy$Rz!O$R!O!P?k!P!Q$R!Q![Bp![;'S$R;'S;=`$d\u003C%lO$RZDrW$iROy$Rz!O$R!O!PE[!P!Q$R!Q![@S![;'S$R;'S;=`$d\u003C%lO$RYEaUyWOy$Rz!O$R!O!PEs!P;'S$R;'S;=`$d\u003C%lO$RYEzSuQyWOy$Rz;'S$R;'S;=`$d\u003C%lO$RZF][$hROy$Rz!O$R!O!P@S!P!Q$R!Q![Bp![!g$R!g!h@y!h#X$R#X#Y@y#Y;'S$R;'S;=`$d\u003C%lO$RZGWUtROy$Rz![$R![!]Gj!];'S$R;'S;=`$d\u003C%lO$RXGqS}PyWOy$Rz;'S$R;'S;=`$d\u003C%lO$RZHSS!iROy$Rz;'S$R;'S;=`$d\u003C%lO$RYHeUlQOy$Rz!_$R!_!`%c!`;'S$R;'S;=`$d\u003C%lO$R^H|U![SOy$Rz!_$R!_!`%c!`;'S$R;'S;=`$d\u003C%lO$RZIgV!^PlQOy$Rz!_$R!_!`%c!`!aI|!a;'S$R;'S;=`$d\u003C%lO$RXJTS!^PyWOy$Rz;'S$R;'S;=`$d\u003C%lO$RXJdWOy$Rz!c$R!c!}J|!}#T$R#T#oJ|#o;'S$R;'S;=`$d\u003C%lO$RXKT[!lPyWOy$Rz}$R}!OJ|!O!Q$R!Q![J|![!c$R!c!}J|!}#T$R#T#oJ|#o;'S$R;'S;=`$d\u003C%lO$RXLOS!YPOy$Rz;'S$R;'S;=`$d\u003C%lO$R^LaS!WUOy$Rz;'S$R;'S;=`$d\u003C%lO$R[LpUOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d\u003C%lO$RZMVUOy$Rz#b$R#b#cMi#c;'S$R;'S;=`$d\u003C%lO$RZMnUyWOy$Rz#W$R#W#XNQ#X;'S$R;'S;=`$d\u003C%lO$RZNXSmRyWOy$Rz;'S$R;'S;=`$d\u003C%lO$RZNhUOy$Rz#f$R#f#gNQ#g;'S$R;'S;=`$d\u003C%lO$RZ! PS!cROy$Rz;'S$R;'S;=`$d\u003C%lO$RZ! bS!jROy$Rz;'S$R;'S;=`$d\u003C%lO$R]! sU!aPOy$Rz!_$R!_!`;T!`;'S$R;'S;=`$d\u003C%lO$RW!!YP;=`\u003C%l#r\\\",tokenizers:[indentation,descendant$1,interpolationEnd,unitToken$1,identifiers,spaces,comments,indentedMixins,0,1,2,3],topRules:{\\\"StyleSheet\\\":[0,10],\\\"Styles\\\":[1,129]},dialects:{indented:0},specialized:[{term:152,get:value=>spec_identifier$3[value]||-1},{term:151,get:value=>spec_callee[value]||-1},{term:74,get:value=>spec_AtKeyword$1[value]||-1}],tokenPrec:2821});const sassLanguage=LRLanguage.define({name:\\\"sass\\\",parser:parser$b.configure({props:[foldNodeProp.add({Block:foldInside,Comment(node,state){return{from:node.from+2,to:state.sliceDoc(node.to-2,node.to)==\\\"*/\\\"?node.to-2:node.to};}}),indentNodeProp.add({Declaration:continuedIndent()})]}),languageData:{commentTokens:{block:{open:\\\"/*\\\",close:\\\"*/\\\"},line:\\\"//\\\"},indentOnInput:/^\\\\s*\\\\}$/,wordChars:\\\"$-\\\"}});const indentedSassLanguage=sassLanguage.configure({dialect:\\\"indented\\\",props:[indentNodeProp.add({\\\"Block RuleSet\\\":cx=>cx.baseIndent+cx.unit}),foldNodeProp.add({Block:node=>({from:node.from,to:node.to})})]});const sassCompletionSource=defineCSSCompletionSource(node=>node.name==\\\"VariableName\\\"||node.name==\\\"SassVariableName\\\");function sass(config){return new LanguageSupport((config===null||config===void 0?void 0:config.indented)?indentedSassLanguage:sassLanguage,sassLanguage.data.of({autocomplete:sassCompletionSource}));}var _m16=Object.freeze({__proto__:null,sass:sass,sassCompletionSource:sassCompletionSource,sassLanguage:sassLanguage});const whitespace=36,LineComment=1,BlockComment=2,String$1=3,Number=4,Bool=5,Null=6,ParenL=7,ParenR=8,BraceL=9,BraceR=10,BracketL=11,BracketR=12,Semi=13,Dot$1=14,Operator=15,Punctuation$1=16,SpecialVar=17,Identifier$1=18,QuotedIdentifier=19,Keyword=20,Type$1=21,Bits=22,Bytes=23,Builtin=24;function isAlpha$1(ch){return ch>=65&&ch\u003C=90||ch>=97&&ch\u003C=122||ch>=48&&ch\u003C=57;}function isHexDigit(ch){return ch>=48&&ch\u003C=57||ch>=97&&ch\u003C=102||ch>=65&&ch\u003C=70;}function readLiteral(input,endQuote,backslashEscapes){for(let escaped=false;;){if(input.next\u003C0)return;if(input.next==endQuote&&!escaped){input.advance();return;}escaped=backslashEscapes&&!escaped&&input.next==92;input.advance();}}function readDoubleDollarLiteral(input){for(;;){if(input.next\u003C0||input.peek(1)\u003C0)return;if(input.next==36&&input.peek(1)==36){input.advance(2);return;}input.advance();}}function readPLSQLQuotedLiteral(input,openDelim){let matchingDelim=\\\"[{\u003C(\\\".indexOf(String.fromCharCode(openDelim));let closeDelim=matchingDelim\u003C0?openDelim:\\\"]}>)\\\".charCodeAt(matchingDelim);for(;;){if(input.next\u003C0)return;if(input.next==closeDelim&&input.peek(1)==39){input.advance(2);return;}input.advance();}}function readWord(input,result){for(;;){if(input.next!=95&&!isAlpha$1(input.next))break;if(result!=null)result+=String.fromCharCode(input.next);input.advance();}return result;}function readWordOrQuoted(input){if(input.next==39||input.next==34||input.next==96){let quote=input.next;input.advance();readLiteral(input,quote,false);}else{readWord(input);}}function readBits(input,endQuote){while(input.next==48||input.next==49)input.advance();if(endQuote&&input.next==endQuote)input.advance();}function readNumber(input,sawDot){for(;;){if(input.next==46){if(sawDot)break;sawDot=true;}else if(input.next\u003C48||input.next>57){break;}input.advance();}if(input.next==69||input.next==101){input.advance();if(input.next==43||input.next==45)input.advance();while(input.next>=48&&input.next\u003C=57)input.advance();}}function eol(input){while(!(input.next\u003C0||input.next==10))input.advance();}function inString(ch,str){for(let i=0;i\u003Cstr.length;i++)if(str.charCodeAt(i)==ch)return true;return false;}const Space=\\\" \\\\t\\\\r\\\\n\\\";function keywords(keywords,types,builtin){let result=Object.create(null);result[\\\"true\\\"]=result[\\\"false\\\"]=Bool;result[\\\"null\\\"]=result[\\\"unknown\\\"]=Null;for(let _i282=0,_keywords$split=keywords.split(\\\" \\\"),_length282=_keywords$split.length;_i282\u003C_length282;_i282++){let kw=_keywords$split[_i282];if(kw)result[kw]=Keyword;}for(let _i283=0,_types$split=types.split(\\\" \\\"),_length283=_types$split.length;_i283\u003C_length283;_i283++){let tp=_types$split[_i283];if(tp)result[tp]=Type$1;}for(let _i284=0,_split=(builtin||\\\"\\\").split(\\\" \\\"),_length284=_split.length;_i284\u003C_length284;_i284++){let kw=_split[_i284];if(kw)result[kw]=Builtin;}return result;}const SQLTypes=\\\"array binary bit boolean char character clob date decimal double float int integer interval large national nchar nclob numeric object precision real smallint time timestamp varchar varying \\\";const SQLKeywords=\\\"absolute action add after all allocate alter and any are as asc assertion at authorization before begin between both breadth by call cascade cascaded case cast catalog check close collate collation column commit condition connect connection constraint constraints constructor continue corresponding count create cross cube current current_date current_default_transform_group current_transform_group_for_type current_path current_role current_time current_timestamp current_user cursor cycle data day deallocate declare default deferrable deferred delete depth deref desc describe descriptor deterministic diagnostics disconnect distinct do domain drop dynamic each else elseif end end-exec equals escape except exception exec execute exists exit external fetch first for foreign found from free full function general get global go goto grant group grouping handle having hold hour identity if immediate in indicator initially inner inout input insert intersect into is isolation join key language last lateral leading leave left level like limit local localtime localtimestamp locator loop map match method minute modifies module month names natural nesting new next no none not of old on only open option or order ordinality out outer output overlaps pad parameter partial path prepare preserve primary prior privileges procedure public read reads recursive redo ref references referencing relative release repeat resignal restrict result return returns revoke right role rollback rollup routine row rows savepoint schema scroll search second section select session session_user set sets signal similar size some space specific specifictype sql sqlexception sqlstate sqlwarning start state static system_user table temporary then timezone_hour timezone_minute to trailing transaction translation treat trigger under undo union unique unnest until update usage user using value values view when whenever where while with without work write year zone \\\";const defaults={backslashEscapes:false,hashComments:false,spaceAfterDashes:false,slashComments:false,doubleQuotedStrings:false,doubleDollarQuotedStrings:false,unquotedBitLiterals:false,treatBitsAsBytes:false,charSetCasts:false,plsqlQuotingMechanism:false,operatorChars:\\\"*+\\\\-%\u003C>!=&|~^/\\\",specialVar:\\\"?\\\",identifierQuotes:'\\\"',words:keywords(SQLKeywords,SQLTypes)};function dialect(spec,kws,types,builtin){let dialect={};for(let prop in defaults)dialect[prop]=(spec.hasOwnProperty(prop)?spec:defaults)[prop];if(kws)dialect.words=keywords(kws,types||\\\"\\\",builtin);return dialect;}function tokensFor(d){return new ExternalTokenizer(input=>{var _a;let{next}=input;input.advance();if(inString(next,Space)){while(inString(input.next,Space))input.advance();input.acceptToken(whitespace);}else if(next==36&&input.next==36&&d.doubleDollarQuotedStrings){readDoubleDollarLiteral(input);input.acceptToken(String$1);}else if(next==39||next==34&&d.doubleQuotedStrings){readLiteral(input,next,d.backslashEscapes);input.acceptToken(String$1);}else if(next==35&&d.hashComments||next==47&&input.next==47&&d.slashComments){eol(input);input.acceptToken(LineComment);}else if(next==45&&input.next==45&&(!d.spaceAfterDashes||input.peek(1)==32)){eol(input);input.acceptToken(LineComment);}else if(next==47&&input.next==42){input.advance();for(let depth=1;;){let cur=input.next;if(input.next\u003C0)break;input.advance();if(cur==42&&input.next==47){depth--;input.advance();if(!depth)break;}else if(cur==47&&input.next==42){depth++;input.advance();}}input.acceptToken(BlockComment);}else if((next==101||next==69)&&input.next==39){input.advance();readLiteral(input,39,true);}else if((next==110||next==78)&&input.next==39&&d.charSetCasts){input.advance();readLiteral(input,39,d.backslashEscapes);input.acceptToken(String$1);}else if(next==95&&d.charSetCasts){for(let i=0;;i++){if(input.next==39&&i>1){input.advance();readLiteral(input,39,d.backslashEscapes);input.acceptToken(String$1);break;}if(!isAlpha$1(input.next))break;input.advance();}}else if(d.plsqlQuotingMechanism&&(next==113||next==81)&&input.next==39&&input.peek(1)>0&&!inString(input.peek(1),Space)){let openDelim=input.peek(1);input.advance(2);readPLSQLQuotedLiteral(input,openDelim);input.acceptToken(String$1);}else if(next==40){input.acceptToken(ParenL);}else if(next==41){input.acceptToken(ParenR);}else if(next==123){input.acceptToken(BraceL);}else if(next==125){input.acceptToken(BraceR);}else if(next==91){input.acceptToken(BracketL);}else if(next==93){input.acceptToken(BracketR);}else if(next==59){input.acceptToken(Semi);}else if(d.unquotedBitLiterals&&next==48&&input.next==98){input.advance();readBits(input);input.acceptToken(Bits);}else if((next==98||next==66)&&(input.next==39||input.next==34)){const quoteStyle=input.next;input.advance();if(d.treatBitsAsBytes){readLiteral(input,quoteStyle,d.backslashEscapes);input.acceptToken(Bytes);}else{readBits(input,quoteStyle);input.acceptToken(Bits);}}else if(next==48&&(input.next==120||input.next==88)||(next==120||next==88)&&input.next==39){let quoted=input.next==39;input.advance();while(isHexDigit(input.next))input.advance();if(quoted&&input.next==39)input.advance();input.acceptToken(Number);}else if(next==46&&input.next>=48&&input.next\u003C=57){readNumber(input,true);input.acceptToken(Number);}else if(next==46){input.acceptToken(Dot$1);}else if(next>=48&&next\u003C=57){readNumber(input,false);input.acceptToken(Number);}else if(inString(next,d.operatorChars)){while(inString(input.next,d.operatorChars))input.advance();input.acceptToken(Operator);}else if(inString(next,d.specialVar)){if(input.next==next)input.advance();readWordOrQuoted(input);input.acceptToken(SpecialVar);}else if(inString(next,d.identifierQuotes)){readLiteral(input,next,false);input.acceptToken(QuotedIdentifier);}else if(next==58||next==44){input.acceptToken(Punctuation$1);}else if(isAlpha$1(next)){let word=readWord(input,String.fromCharCode(next));input.acceptToken(input.next==46||input.peek(-word.length-1)==46?Identifier$1:(_a=d.words[word.toLowerCase()])!==null&&_a!==void 0?_a:Identifier$1);}});}const tokens=tokensFor(defaults);const parser$1$1=LRParser.deserialize({version:14,states:\\\"%vQ]QQOOO#wQRO'#DSO$OQQO'#CwO%eQQO'#CxO%lQQO'#CyO%sQQO'#CzOOQQ'#DS'#DSOOQQ'#C}'#C}O'UQRO'#C{OOQQ'#Cv'#CvOOQQ'#C|'#C|Q]QQOOQOQQOOO'`QQO'#DOO(xQRO,59cO)PQQO,59cO)UQQO'#DSOOQQ,59d,59dO)cQQO,59dOOQQ,59e,59eO)jQQO,59eOOQQ,59f,59fO)qQQO,59fOOQQ-E6{-E6{OOQQ,59b,59bOOQQ-E6z-E6zOOQQ,59j,59jOOQQ-E6|-E6|O+VQRO1G.}O+^QQO,59cOOQQ1G/O1G/OOOQQ1G/P1G/POOQQ1G/Q1G/QP+kQQO'#C}O+rQQO1G.}O)PQQO,59cO,PQQO'#Cw\\\",stateData:\\\",[~OtOSPOSQOS~ORUOSUOTUOUUOVROXSOZTO]XO^QO_UO`UOaPObPOcPOdUOeUOfUOgUOhUO~O^]ORvXSvXTvXUvXVvXXvXZvX]vX_vX`vXavXbvXcvXdvXevXfvXgvXhvX~OsvX~P!jOa_Ob_Oc_O~ORUOSUOTUOUUOVROXSOZTO^tO_UO`UOa`Ob`Oc`OdUOeUOfUOgUOhUO~OWaO~P$ZOYcO~P$ZO[eO~P$ZORUOSUOTUOUUOVROXSOZTO^QO_UO`UOaPObPOcPOdUOeUOfUOgUOhUO~O]hOsoX~P%zOajObjOcjO~O^]ORkaSkaTkaUkaVkaXkaZka]ka_ka`kaakabkackadkaekafkagkahka~Oska~P'kO^]O~OWvXYvX[vX~P!jOWnO~P$ZOYoO~P$ZO[pO~P$ZO^]ORkiSkiTkiUkiVkiXkiZki]ki_ki`kiakibkickidkiekifkigkihki~Oski~P)xOWkaYka[ka~P'kO]hO~P$ZOWkiYki[ki~P)xOasObsOcsO~O\\\",goto:\\\"#hwPPPPPPPPPPPPPPPPPPPPPPPPPPx||||!Y!^!d!xPPP#[TYOZeUORSTWZbdfqT[OZQZORiZSWOZQbRQdSQfTZgWbdfqQ^PWk^lmrQl_Qm`RrseVORSTWZbdfq\\\",nodeNames:\\\"⚠ LineComment BlockComment String Number Bool Null ( ) { } [ ] ; . Operator Punctuation SpecialVar Identifier QuotedIdentifier Keyword Type Bits Bytes Builtin Script Statement CompositeIdentifier Parens Braces Brackets Statement\\\",maxTerm:38,nodeProps:[[\\\"isolate\\\",-4,1,2,3,19,\\\"\\\"]],skippedNodes:[0,1,2],repeatNodeCount:3,tokenData:\\\"RORO\\\",tokenizers:[0,tokens],topRules:{\\\"Script\\\":[0,25]},tokenPrec:0});function tokenBefore(tree){let cursor=tree.cursor().moveTo(tree.from,-1);while(/Comment/.test(cursor.name))cursor.moveTo(cursor.from,-1);return cursor.node;}function idName(doc,node){let text=doc.sliceString(node.from,node.to);let quoted=/^([`'\\\"])(.*)\\\\1$/.exec(text);return quoted?quoted[2]:text;}function plainID(node){return node&&(node.name==\\\"Identifier\\\"||node.name==\\\"QuotedIdentifier\\\");}function pathFor(doc,id){if(id.name==\\\"CompositeIdentifier\\\"){let path=[];for(let ch=id.firstChild;ch;ch=ch.nextSibling)if(plainID(ch))path.push(idName(doc,ch));return path;}return[idName(doc,id)];}function parentsFor(doc,node){for(let path=[];;){if(!node||node.name!=\\\".\\\")return path;let name=tokenBefore(node);if(!plainID(name))return path;path.unshift(idName(doc,name));node=tokenBefore(name);}}function sourceContext(state,startPos){let pos=syntaxTree(state).resolveInner(startPos,-1);let aliases=getAliases(state.doc,pos);if(pos.name==\\\"Identifier\\\"||pos.name==\\\"QuotedIdentifier\\\"||pos.name==\\\"Keyword\\\"){return{from:pos.from,quoted:pos.name==\\\"QuotedIdentifier\\\"?state.doc.sliceString(pos.from,pos.from+1):null,parents:parentsFor(state.doc,tokenBefore(pos)),aliases};}if(pos.name==\\\".\\\"){return{from:startPos,quoted:null,parents:parentsFor(state.doc,pos),aliases};}else{return{from:startPos,quoted:null,parents:[],empty:true,aliases};}}const EndFrom=new Set(\\\"where group having order union intersect except all distinct limit offset fetch for\\\".split(\\\" \\\"));function getAliases(doc,at){let statement;for(let parent=at;!statement;parent=parent.parent){if(!parent)return null;if(parent.name==\\\"Statement\\\")statement=parent;}let aliases=null;for(let scan=statement.firstChild,sawFrom=false,prevID=null;scan;scan=scan.nextSibling){let kw=scan.name==\\\"Keyword\\\"?doc.sliceString(scan.from,scan.to).toLowerCase():null;let alias=null;if(!sawFrom){sawFrom=kw==\\\"from\\\";}else if(kw==\\\"as\\\"&&prevID&&plainID(scan.nextSibling)){alias=idName(doc,scan.nextSibling);}else if(kw&&EndFrom.has(kw)){break;}else if(prevID&&plainID(scan)){alias=idName(doc,scan);}if(alias){if(!aliases)aliases=Object.create(null);aliases[alias]=pathFor(doc,prevID);}prevID=/Identifier$/.test(scan.name)?scan:null;}return aliases;}function maybeQuoteCompletions(quote,completions){if(!quote)return completions;return completions.map(c=>Object.assign(Object.assign({},c),{label:c.label[0]==quote?c.label:quote+c.label+quote,apply:undefined}));}const Span=/^\\\\w*$/,QuotedSpan=/^[`'\\\"]?\\\\w*[`'\\\"]?$/;function isSelfTag(namespace){return namespace.self&&typeof namespace.self.label==\\\"string\\\";}class CompletionLevel{constructor(idQuote){this.idQuote=idQuote;this.list=[];this.children=undefined;}child(name){let children=this.children||(this.children=Object.create(null));let found=children[name];if(found)return found;if(name&&!this.list.some(c=>c.label==name))this.list.push(nameCompletion(name,\\\"type\\\",this.idQuote));return children[name]=new CompletionLevel(this.idQuote);}maybeChild(name){return this.children?this.children[name]:null;}addCompletion(option){let found=this.list.findIndex(o=>o.label==option.label);if(found>-1)this.list[found]=option;else this.list.push(option);}addCompletions(completions){for(let _i285=0,_length285=completions.length;_i285\u003C_length285;_i285++){let option=completions[_i285];this.addCompletion(typeof option==\\\"string\\\"?nameCompletion(option,\\\"property\\\",this.idQuote):option);}}addNamespace(namespace){if(Array.isArray(namespace)){this.addCompletions(namespace);}else if(isSelfTag(namespace)){this.addNamespace(namespace.children);}else{this.addNamespaceObject(namespace);}}addNamespaceObject(namespace){for(let _i286=0,_Object$keys2=Object.keys(namespace),_length286=_Object$keys2.length;_i286\u003C_length286;_i286++){let name=_Object$keys2[_i286];let children=namespace[name],self=null;let parts=name.replace(/\\\\\\\\?\\\\./g,p=>p==\\\".\\\"?\\\"\\\\0\\\":p).split(\\\"\\\\0\\\");let scope=this;if(isSelfTag(children)){self=children.self;children=children.children;}for(let i=0;i\u003Cparts.length;i++){if(self&&i==parts.length-1)scope.addCompletion(self);scope=scope.child(parts[i].replace(/\\\\\\\\\\\\./g,\\\".\\\"));}scope.addNamespace(children);}}}function nameCompletion(label,type,idQuote){if(/^[a-z_][a-z_\\\\d]*$/.test(label))return{label,type};return{label,type,apply:idQuote+label+idQuote};}function completeFromSchema$1(schema,tables,schemas,defaultTableName,defaultSchemaName,dialect){var _a;let idQuote=((_a=dialect===null||dialect===void 0?void 0:dialect.spec.identifierQuotes)===null||_a===void 0?void 0:_a[0])||'\\\"';let top=new CompletionLevel(idQuote);let defaultSchema=defaultSchemaName?top.child(defaultSchemaName):null;top.addNamespace(schema);if(tables)(defaultSchema||top).addCompletions(tables);if(schemas)top.addCompletions(schemas);if(defaultSchema)top.addCompletions(defaultSchema.list);if(defaultTableName)top.addCompletions((defaultSchema||top).child(defaultTableName).list);return context=>{let{parents,from,quoted,empty,aliases}=sourceContext(context.state,context.pos);if(empty&&!context.explicit)return null;if(aliases&&parents.length==1)parents=aliases[parents[0]]||parents;let level=top;for(let _i287=0,_parents=parents,_length287=_parents.length;_i287\u003C_length287;_i287++){let name=_parents[_i287];while(!level.children||!level.children[name]){if(level==top)level=defaultSchema;else if(level==defaultSchema&&defaultTableName)level=level.child(defaultTableName);else return null;}let next=level.maybeChild(name);if(!next)return null;level=next;}let quoteAfter=quoted&&context.state.sliceDoc(context.pos,context.pos+1)==quoted;let options=level.list;if(level==top&&aliases)options=options.concat(Object.keys(aliases).map(name=>({label:name,type:\\\"constant\\\"})));return{from,to:quoteAfter?context.pos+1:undefined,options:maybeQuoteCompletions(quoted,options),validFor:quoted?QuotedSpan:Span};};}function completeKeywords(keywords,upperCase){let completions=Object.keys(keywords).map(keyword=>({label:upperCase?keyword.toUpperCase():keyword,type:keywords[keyword]==Type$1?\\\"type\\\":keywords[keyword]==Keyword?\\\"keyword\\\":\\\"variable\\\",boost:-1}));return ifNotIn([\\\"QuotedIdentifier\\\",\\\"SpecialVar\\\",\\\"String\\\",\\\"LineComment\\\",\\\"BlockComment\\\",\\\".\\\"],completeFromList(completions));}let parser$a=parser$1$1.configure({props:[indentNodeProp.add({Statement:continuedIndent()}),foldNodeProp.add({Statement(tree){return{from:tree.firstChild.to,to:tree.to};},BlockComment(tree){return{from:tree.from+2,to:tree.to-2};}}),styleTags({Keyword:tags$1.keyword,Type:tags$1.typeName,Builtin:tags$1.standard(tags$1.name),Bits:tags$1.number,Bytes:tags$1.string,Bool:tags$1.bool,Null:tags$1.null,Number:tags$1.number,String:tags$1.string,Identifier:tags$1.name,QuotedIdentifier:tags$1.special(tags$1.string),SpecialVar:tags$1.special(tags$1.name),LineComment:tags$1.lineComment,BlockComment:tags$1.blockComment,Operator:tags$1.operator,\\\"Semi Punctuation\\\":tags$1.punctuation,\\\"( )\\\":tags$1.paren,\\\"{ }\\\":tags$1.brace,\\\"[ ]\\\":tags$1.squareBracket})]});class SQLDialect{constructor(dialect,language,spec){this.dialect=dialect;this.language=language;this.spec=spec;}get extension(){return this.language.extension;}static define(spec){let d=dialect(spec,spec.keywords,spec.types,spec.builtin);let language=LRLanguage.define({name:\\\"sql\\\",parser:parser$a.configure({tokenizers:[{from:tokens,to:tokensFor(d)}]}),languageData:{commentTokens:{line:\\\"--\\\",block:{open:\\\"/*\\\",close:\\\"*/\\\"}},closeBrackets:{brackets:[\\\"(\\\",\\\"[\\\",\\\"{\\\",\\\"'\\\",'\\\"',\\\"`\\\"]}}});return new SQLDialect(d,language,spec);}}function keywordCompletionSource(dialect,upperCase=false){return completeKeywords(dialect.dialect.words,upperCase);}function keywordCompletion(dialect,upperCase=false){return dialect.language.data.of({autocomplete:keywordCompletionSource(dialect,upperCase)});}function schemaCompletionSource(config){return config.schema?completeFromSchema$1(config.schema,config.tables,config.schemas,config.defaultTable,config.defaultSchema,config.dialect||StandardSQL):()=>null;}function schemaCompletion(config){return config.schema?(config.dialect||StandardSQL).language.data.of({autocomplete:schemaCompletionSource(config)}):[];}function sql(config={}){let lang=config.dialect||StandardSQL;return new LanguageSupport(lang.language,[schemaCompletion(config),keywordCompletion(lang,!!config.upperCaseKeywords)]);}const StandardSQL=SQLDialect.define({});const PostgreSQL=SQLDialect.define({charSetCasts:true,doubleDollarQuotedStrings:true,operatorChars:\\\"+-*/\u003C>=~!@#%^&|`?\\\",specialVar:\\\"\\\",keywords:SQLKeywords+\\\"a abort abs absent access according ada admin aggregate alias also always analyse analyze array_agg array_max_cardinality asensitive assert assignment asymmetric atomic attach attribute attributes avg backward base64 begin_frame begin_partition bernoulli bit_length blocked bom c cache called cardinality catalog_name ceil ceiling chain char_length character_length character_set_catalog character_set_name character_set_schema characteristics characters checkpoint class class_origin cluster coalesce cobol collation_catalog collation_name collation_schema collect column_name columns command_function command_function_code comment comments committed concurrently condition_number configuration conflict connection_name constant constraint_catalog constraint_name constraint_schema contains content control conversion convert copy corr cost covar_pop covar_samp csv cume_dist current_catalog current_row current_schema cursor_name database datalink datatype datetime_interval_code datetime_interval_precision db debug defaults defined definer degree delimiter delimiters dense_rank depends derived detach detail dictionary disable discard dispatch dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue document dump dynamic_function dynamic_function_code element elsif empty enable encoding encrypted end_frame end_partition endexec enforced enum errcode error event every exclude excluding exclusive exp explain expression extension extract family file filter final first_value flag floor following force foreach fortran forward frame_row freeze fs functions fusion g generated granted greatest groups handler header hex hierarchy hint id ignore ilike immediately immutable implementation implicit import include including increment indent index indexes info inherit inherits inline insensitive instance instantiable instead integrity intersection invoker isnull k key_member key_type label lag last_value lead leakproof least length library like_regex link listen ln load location lock locked log logged lower m mapping matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text min minvalue mod mode more move multiset mumps name namespace nfc nfd nfkc nfkd nil normalize normalized nothing notice notify notnull nowait nth_value ntile nullable nullif nulls number occurrences_regex octet_length octets off offset oids operator options ordering others over overlay overriding owned owner p parallel parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partition pascal passing passthrough password percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding prepared print_strict_params procedural procedures program publication query quote raise range rank reassign recheck recovery refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex rename repeatable replace replica requiring reset respect restart restore result_oid returned_cardinality returned_length returned_octet_length returned_sqlstate returning reverse routine_catalog routine_name routine_schema routines row_count row_number rowtype rule scale schema_name schemas scope scope_catalog scope_name scope_schema security selective self sensitive sequence sequences serializable server server_name setof share show simple skip slice snapshot source specific_name sqlcode sqlerror sqrt stable stacked standalone statement statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time t table_name tables tablesample tablespace temp template ties token top_level_count transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex trigger_catalog trigger_name trigger_schema trim trim_array truncate trusted type types uescape unbounded uncommitted unencrypted unlink unlisten unlogged unnamed untyped upper uri use_column use_variable user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema vacuum valid validate validator value_of var_pop var_samp varbinary variable_conflict variadic verbose version versioning views volatile warning whitespace width_bucket window within wrapper xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate yes\\\",types:SQLTypes+\\\"bigint int8 bigserial serial8 varbit bool box bytea cidr circle precision float8 inet int4 json jsonb line lseg macaddr macaddr8 money numeric pg_lsn point polygon float4 int2 smallserial serial2 serial serial4 text timetz timestamptz tsquery tsvector txid_snapshot uuid xml\\\"});const MySQLKeywords=\\\"accessible algorithm analyze asensitive authors auto_increment autocommit avg avg_row_length binlog btree cache catalog_name chain change changed checkpoint checksum class_origin client_statistics coalesce code collations columns comment committed completion concurrent consistent contains contributors convert database databases day_hour day_microsecond day_minute day_second delay_key_write delayed delimiter des_key_file dev_pop dev_samp deviance directory disable discard distinctrow div dual dumpfile enable enclosed ends engine engines enum errors escaped even event events every explain extended fast field fields flush force found_rows fulltext grants handler hash high_priority hosts hour_microsecond hour_minute hour_second ignore ignore_server_ids import index index_statistics infile innodb insensitive insert_method install invoker iterate keys kill linear lines list load lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modify mutex mysql_errno no_write_to_binlog offline offset one online optimize optionally outfile pack_keys parser partition partitions password phase plugin plugins prev processlist profile profiles purge query quick range read_write rebuild recover regexp relaylog remove rename reorganize repair repeatable replace require resume rlike row_format rtree schedule schema_name schemas second_microsecond security sensitive separator serializable server share show slave slow snapshot soname spatial sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result ssl starting starts std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace terminated triggers truncate uncommitted uninstall unlock upgrade use use_frm user_resources user_statistics utc_date utc_time utc_timestamp variables views warnings xa xor year_month zerofill\\\";const MySQLTypes=SQLTypes+\\\"bool blob long longblob longtext medium mediumblob mediumint mediumtext tinyblob tinyint tinytext text bigint int1 int2 int3 int4 int8 float4 float8 varbinary varcharacter precision datetime unsigned signed\\\";const MySQLBuiltin=\\\"charset clear edit ego help nopager notee nowarning pager print prompt quit rehash source status system tee\\\";const MySQL=SQLDialect.define({operatorChars:\\\"*+-%\u003C>!=&|^\\\",charSetCasts:true,doubleQuotedStrings:true,unquotedBitLiterals:true,hashComments:true,spaceAfterDashes:true,specialVar:\\\"@?\\\",identifierQuotes:\\\"`\\\",keywords:SQLKeywords+\\\"group_concat \\\"+MySQLKeywords,types:MySQLTypes,builtin:MySQLBuiltin});const MariaSQL=SQLDialect.define({operatorChars:\\\"*+-%\u003C>!=&|^\\\",charSetCasts:true,doubleQuotedStrings:true,unquotedBitLiterals:true,hashComments:true,spaceAfterDashes:true,specialVar:\\\"@?\\\",identifierQuotes:\\\"`\\\",keywords:SQLKeywords+\\\"always generated groupby_concat hard persistent shutdown soft virtual \\\"+MySQLKeywords,types:MySQLTypes,builtin:MySQLBuiltin});const MSSQL=SQLDialect.define({keywords:SQLKeywords+\\\"trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare exec go if use index holdlock nolock nowait paglock pivot readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot tablock tablockx unpivot updlock with\\\",types:SQLTypes+\\\"bigint smallint smallmoney tinyint money real text nvarchar ntext varbinary image hierarchyid uniqueidentifier sql_variant xml\\\",builtin:\\\"binary_checksum checksum connectionproperty context_info current_request_id error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big xact_state object_id\\\",operatorChars:\\\"*+-%\u003C>!=^&|/\\\",specialVar:\\\"@\\\"});const SQLite=SQLDialect.define({keywords:SQLKeywords+\\\"abort analyze attach autoincrement conflict database detach exclusive fail glob ignore index indexed instead isnull notnull offset plan pragma query raise regexp reindex rename replace temp vacuum virtual\\\",types:SQLTypes+\\\"bool blob long longblob longtext medium mediumblob mediumint mediumtext tinyblob tinyint tinytext text bigint int2 int8 unsigned signed real\\\",builtin:\\\"auth backup bail changes clone databases dbinfo dump echo eqp explain fullschema headers help import imposter indexes iotrace lint load log mode nullvalue once print prompt quit restore save scanstats separator shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width\\\",operatorChars:\\\"*+-%\u003C>!=&|/~\\\",identifierQuotes:\\\"`\\\\\\\"\\\",specialVar:\\\"@:?$\\\"});const Cassandra=SQLDialect.define({keywords:\\\"add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime infinity NaN\\\",types:SQLTypes+\\\"ascii bigint blob counter frozen inet list map static text timeuuid tuple uuid varint\\\",slashComments:true});const PLSQL=SQLDialect.define({keywords:SQLKeywords+\\\"abort accept access add all alter and any arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body by case cast char_base check close cluster clusters colauth column comment commit compress connected constant constraint crash create current currval cursor data_base database dba deallocate debugoff debugon declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry exception exception_init exchange exclusive exists external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base of off offline on online only option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw rebuild record ref references refresh rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work\\\",builtin:\\\"appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define echo editfile embedded feedback flagger flush heading headsep instance linesize lno loboffset logsource longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar repfooter repheader serveroutput shiftinout show showmode spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout timing trimout trimspool ttitle underline verify version wrap\\\",types:SQLTypes+\\\"ascii bfile bfilename bigserial bit blob dec long number nvarchar nvarchar2 serial smallint string text uid varchar2 xml\\\",operatorChars:\\\"*/+-%\u003C>!=~\\\",doubleQuotedStrings:true,charSetCasts:true,plsqlQuotingMechanism:true});var _m18=Object.freeze({__proto__:null,Cassandra:Cassandra,MSSQL:MSSQL,MariaSQL:MariaSQL,MySQL:MySQL,PLSQL:PLSQL,PostgreSQL:PostgreSQL,SQLDialect:SQLDialect,SQLite:SQLite,StandardSQL:StandardSQL,keywordCompletion:keywordCompletion,keywordCompletionSource:keywordCompletionSource,schemaCompletion:schemaCompletion,schemaCompletionSource:schemaCompletionSource,sql:sql});const closureParamDelim=1,tpOpen=2,tpClose=3,RawString=4,Float=5;const _b=98,_e=101,_f=102,_r=114,_E=69,Zero=48,Dot=46,Plus=43,Minus=45,Hash=35,Quote=34,Pipe=124,LessThan=60,GreaterThan=62;function isNum(ch){return ch>=48&&ch\u003C=57;}function isNum_(ch){return isNum(ch)||ch==95;}const literalTokens=new ExternalTokenizer((input,stack)=>{if(isNum(input.next)){let isFloat=false;do{input.advance();}while(isNum_(input.next));if(input.next==Dot){isFloat=true;input.advance();if(isNum(input.next)){do{input.advance();}while(isNum_(input.next));}else if(input.next==Dot||input.next>0x7f||/\\\\w/.test(String.fromCharCode(input.next))){return;}}if(input.next==_e||input.next==_E){isFloat=true;input.advance();if(input.next==Plus||input.next==Minus)input.advance();if(!isNum_(input.next))return;do{input.advance();}while(isNum_(input.next));}if(input.next==_f){let after=input.peek(1);if(after==Zero+3&&input.peek(2)==Zero+2||after==Zero+6&&input.peek(2)==Zero+4){input.advance(3);isFloat=true;}else{return;}}if(isFloat)input.acceptToken(Float);}else if(input.next==_b||input.next==_r){if(input.next==_b)input.advance();if(input.next!=_r)return;input.advance();let count=0;while(input.next==Hash){count++;input.advance();}if(input.next!=Quote)return;input.advance();content:for(;;){if(input.next\u003C0)return;let isQuote=input.next==Quote;input.advance();if(isQuote){for(let i=0;i\u003Ccount;i++){if(input.next!=Hash)continue content;input.advance();}input.acceptToken(RawString);return;}}}});const closureParam=new ExternalTokenizer(input=>{if(input.next==Pipe)input.acceptToken(closureParamDelim,1);});const tpDelim=new ExternalTokenizer(input=>{if(input.next==LessThan)input.acceptToken(tpOpen,1);else if(input.next==GreaterThan)input.acceptToken(tpClose,1);});const rustHighlighting=styleTags({\\\"const macro_rules struct union enum type fn impl trait let static\\\":tags$1.definitionKeyword,\\\"mod use crate\\\":tags$1.moduleKeyword,\\\"pub unsafe async mut extern default move\\\":tags$1.modifier,\\\"for if else loop while match continue break return await\\\":tags$1.controlKeyword,\\\"as in ref\\\":tags$1.operatorKeyword,\\\"where _ crate super dyn\\\":tags$1.keyword,\\\"self\\\":tags$1.self,String:tags$1.string,Char:tags$1.character,RawString:tags$1.special(tags$1.string),Boolean:tags$1.bool,Identifier:tags$1.variableName,\\\"CallExpression/Identifier\\\":tags$1.function(tags$1.variableName),BoundIdentifier:tags$1.definition(tags$1.variableName),\\\"FunctionItem/BoundIdentifier\\\":tags$1.function(tags$1.definition(tags$1.variableName)),LoopLabel:tags$1.labelName,FieldIdentifier:tags$1.propertyName,\\\"CallExpression/FieldExpression/FieldIdentifier\\\":tags$1.function(tags$1.propertyName),Lifetime:tags$1.special(tags$1.variableName),ScopeIdentifier:tags$1.namespace,TypeIdentifier:tags$1.typeName,\\\"MacroInvocation/Identifier MacroInvocation/ScopedIdentifier/Identifier\\\":tags$1.macroName,\\\"MacroInvocation/TypeIdentifier MacroInvocation/ScopedIdentifier/TypeIdentifier\\\":tags$1.macroName,\\\"\\\\\\\"!\\\\\\\"\\\":tags$1.macroName,UpdateOp:tags$1.updateOperator,LineComment:tags$1.lineComment,BlockComment:tags$1.blockComment,Integer:tags$1.integer,Float:tags$1.float,ArithOp:tags$1.arithmeticOperator,LogicOp:tags$1.logicOperator,BitOp:tags$1.bitwiseOperator,CompareOp:tags$1.compareOperator,\\\"=\\\":tags$1.definitionOperator,\\\".. ... => ->\\\":tags$1.punctuation,\\\"( )\\\":tags$1.paren,\\\"[ ]\\\":tags$1.squareBracket,\\\"{ }\\\":tags$1.brace,\\\". DerefOp\\\":tags$1.derefOperator,\\\"&\\\":tags$1.operator,\\\", ; ::\\\":tags$1.separator,\\\"Attribute/...\\\":tags$1.meta});const spec_identifier$2={__proto__:null,self:28,super:32,crate:34,impl:46,true:72,false:72,pub:88,in:92,const:96,unsafe:104,async:108,move:110,if:114,let:118,ref:142,mut:144,_:198,else:200,match:204,as:248,return:252,await:262,break:270,continue:276,while:312,loop:316,for:320,macro_rules:327,mod:334,extern:342,struct:346,where:364,union:379,enum:382,type:390,default:395,fn:396,trait:412,use:420,static:438,dyn:476};const parser$9=LRParser.deserialize({version:14,states:\\\"$2xQ]Q_OOP$wOWOOO&sQWO'#CnO)WQWO'#I`OOQP'#I`'#I`OOQQ'#Ie'#IeO)hO`O'#C}OOQR'#Ih'#IhO)sQWO'#IuOOQO'#Hk'#HkO)xQWO'#DpOOQR'#Iw'#IwO)xQWO'#DpO*ZQWO'#DpOOQO'#Iv'#IvO,SQWO'#J`O,ZQWO'#EiOOQV'#Hp'#HpO,cQYO'#F{OOQV'#El'#ElOOQV'#Em'#EmOOQV'#En'#EnO.YQ_O'#EkO0_Q_O'#EoO2gQWOOO4QQ_O'#FPO7hQWO'#J`OOQV'#FY'#FYO7{Q_O'#F^O:WQ_O'#FaOOQO'#F`'#F`O=sQ_O'#FcO=}Q_O'#FbO@VQWO'#FgOOQO'#J`'#J`OOQV'#Io'#IoOA]Q_O'#InOEPQWO'#InOOQV'#Fw'#FwOF[QWO'#JuOFcQWO'#F|OOQO'#IO'#IOOGrQWO'#GhOOQV'#Im'#ImOOQV'#Il'#IlOOQV'#Hj'#HjQGyQ_OOOKeQ_O'#DUOKlQYO'#CqOOQP'#I_'#I_OOQV'#Hg'#HgQ]Q_OOOLuQWO'#I`ONsQYO'#DXO!!eQWO'#JuO!!lQWO'#JuO!!vQ_O'#DfO!%]Q_O'#E}O!(sQ_O'#FWO!,ZQWO'#FZO!.^QXO'#FbO!.cQ_O'#EeO!!vQ_O'#FmO!0uQWO'#FoO!0zQWO'#FoO!1PQ^O'#FqO!1WQWO'#JuO!1_QWO'#FtO!1dQWO'#FxO!2WQWO'#JjO!2_QWO'#GOO!2_QWO'#G`O!2_QWO'#GbO!2_QWO'#GsOOQO'#Ju'#JuO!2dQWO'#GhO!2lQYO'#GpO!2_QWO'#GqO!3uQ^O'#GtO!3|QWO'#GuO!4hQWO'#HOP!4sOpO'#CcPOOO)CC})CC}OOOO'#Hi'#HiO!5OO`O,59iOOQV,59i,59iO!5ZQYO,5?aOOQO-E;i-E;iOOQO,5:[,5:[OOQP,59Z,59ZO)xQWO,5:[O)xQWO,5:[O!5oQWO,5?kO!5zQYO,5;qO!6PQYO,5;TO!6hQWO,59QO!7kQXO'#CnO!7xQXO'#I`O!9SQWO'#CoO,^QWO'#EiOOQV-E;n-E;nO!9eQWO'#FsOOQV,5\u003Cg,5\u003CgO!9SQWO'#CoO!9jQWO'#CoO!9oQWO'#I`O! yQWO'#JuO!9yQWO'#J`O!:aQWO,5;VOOQO'#In'#InO!0zQWO'#DaO!\u003CaQWO'#DcO!\u003CiQWO,5;ZO.YQ_O,5;ZOOQO,5;[,5;[OOQV'#Er'#ErOOQV'#Es'#EsOOQV'#Et'#EtOOQV'#Eu'#EuOOQV'#Ev'#EvOOQV'#Ew'#EwOOQV'#Ex'#ExOOQV'#Ey'#EyO.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;fO!=PQ_O,5;kO!@gQ_O'#FROOQO,5;l,5;lO!BrQWO,5;pO.YQ_O,5;wOKlQYO,5;gO!D_QWO,5;kO!EOQWO,5;xOOQO,5;x,5;xO!E]QWO,5;xO!EbQ_O,5;xO!GmQWO'#CfO!GrQWO,5\u003CQO!G|Q_O,5\u003CQOOQO,5;{,5;{O!JjQXO'#CnO!K{QXO'#I`OOQS'#Dk'#DkOOQP'#Ir'#IrO!LuQ[O'#IrO!L}QXO'#DjO!M{QWO'#DnO!M{QWO'#DnO!N^QWO'#DnOOQP'#It'#ItO!NcQXO'#ItO# ^Q^O'#DoO# hQWO'#DrO# pQ^O'#DzO# zQ^O'#D|O#!RQWO'#EPO#!^QXO'#FdOOQP'#ES'#ESOOQP'#Iq'#IqO#!lQXO'#JfOOQP'#Je'#JeO#!tQXO,5;}O#!yQXO'#I`O!1PQ^O'#DyO!1PQ^O'#FdO##sQWO,5;|OOQO,5;|,5;|OKlQYO,5;|O#$ZQWO'#FhOOQO,5\u003CR,5\u003CROOQV,5=l,5=lO#&`QYO'#FzOOQV,5\u003Ch,5\u003ChO#&gQWO,5\u003ChO#&nQWO,5=SO!1WQWO,59rO!1dQWO,5\u003CdO#&uQWO,5=iO!2_QWO,5\u003CjO!2_QWO,5\u003CzO!2_QWO,5\u003C|O!2_QWO,5=QO#&|QWO,5=]O#'TQWO,5=SO!2_QWO,5=]O!3|QWO,5=aO#']QWO,5=jOOQO-E;|-E;|O#'hQWO'#JjOOQV-E;h-E;hO#(PQWO'#HRO#(WQ_O,59pOOQV,59p,59pO#(_QWO,59pO#(dQ_O,59pO#)SQZO'#CuO#+[QZO'#CvOOQV'#C|'#C|O#-wQWO'#HTO#.OQYO'#IdOOQO'#Hh'#HhO#.WQWO'#CwO#.WQWO'#CwO#.iQWO'#CwOOQR'#Ic'#IcO#.nQZO'#IbO#1TQYO'#HTO#1qQYO'#H[O#2}QYO'#H_OKlQYO'#H`OOQR'#Hb'#HbO#4ZQWO'#HeO#4`QYO,59]OOQR'#Ib'#IbO#5PQZO'#CtO#7[QYO'#HUO#7aQWO'#HTO#7fQYO'#CrO#8VQWO'#H]O#7fQYO'#HcOOQV-E;e-E;eO#8_QWO,59sOOQV,59{,59{O#8mQYO,5=[OOQV,59},59}O!0zQWO,59}O#;aQWO'#IpOOQO'#Ip'#IpO!1PQ^O'#DhO!0zQWO,5:QO#;hQWO,5;iO#\u003COQWO,5;rO#\u003CfQ_O,5;rOOQO,5;u,5;uO#@PQ_O,5;|O#BXQWO,5;PO!0zQWO,5\u003CXO#B`QWO,5\u003CZOOQV,5\u003CZ,5\u003CZO#BkQWO,5\u003C]O!1PQ^O'#EOOOQQ'#D_'#D_O#BsQWO,59rO#BxQWO,5\u003C`O#B}QWO,5\u003CdOOQO,5@U,5@UO#CVQWO,5=iOOQQ'#Cv'#CvO#C[QYO,5\u003CjO#CmQYO,5\u003CzO#CxQYO,5\u003C|O#DTQYO,5=_O#DcQYO,5=SO#E{QYO'#GQO#FYQYO,5=[O#FmQWO,5=[O#F{QYO,5=[O#HUQYO,5=]O#HdQWO,5=`O!1PQ^O,5=`O#HrQWO'#CnO#ITQWO'#I`OOQO'#Jy'#JyO#IfQWO'#IQO#IkQWO'#GwOOQO'#Jz'#JzO#JSQWO'#GzOOQO'#G|'#G|OOQO'#Jx'#JxO#IkQWO'#GwO#JZQWO'#GxO#J`QWO,5=aO#JeQWO,5=jO!1dQWO,5=jO#'`QWO,5=jPOOO'#Hf'#HfP#JjOpO,58}POOO,58},58}OOOO-E;g-E;gOOQV1G/T1G/TO#JuQWO1G4{O#JzQ^O'#CyPOQQ'#Cx'#CxOOQO1G/v1G/vOOQP1G.u1G.uO)xQWO1G/vO#NTQ!fO'#ETO#N[Q!fO'#EaO#NcQ!fO'#EbO$ kQWO1G1yO$!_Q_O1G1yOOQP1G5V1G5VOOQO1G1]1G1]O$&RQWO1G0oO$&WQWO'#CiO!7xQXO'#I`O!6PQYO1G.lO!5oQWO,5\u003C_O!9SQWO,59ZO!9SQWO,59ZO!5oQWO,5?kO$&iQWO1G0uO$(vQWO1G0wO$*nQWO1G0wO$+UQWO1G0wO$-YQWO1G0wO$-aQWO1G0wO$/bQWO1G0wO$/iQWO1G0wO$1jQWO1G0wO$1qQWO1G0wO$3YQWO1G1QO$5ZQWO1G1VO$5zQ_O'#JcO$8SQWO'#JcOOQO'#Jb'#JbO$8^QWO,5;mOOQO'#Dw'#DwOOQO1G1[1G1[OOQO1G1Y1G1YO$8cQWO1G1cOOQO1G1R1G1RO$8jQ_O'#HrO$:xQWO,5@OO.YQ_O1G1dOOQO1G1d1G1dO$;QQWO1G1dO$;_QWO1G1dO$;dQWO1G1eOOQO1G1l1G1lO$;lQWO1G1lOOQP,5?^,5?^O$;vQ^O,5:kO$\u003CaQXO,5:YO!M{QWO,5:YO!M{QWO,5:YO!1PQ^O,5:gO$=bQWO'#IyOOQO'#Ix'#IxO$=pQWO,5:ZO# ^Q^O,5:ZO$=uQWO'#DsOOQP,5:^,5:^O$>WQWO,5:fOOQP,5:h,5:hO!1PQ^O,5:hO!1PQ^O,5:mO$>]QYO,5\u003COO$>gQ_O'#HsO$>tQXO,5@QOOQV1G1i1G1iOOQP,5:e,5:eO$>|QXO,5\u003COO$?[QWO1G1hO$?dQWO'#CnO$?oQWO'#FiOOQO'#Fi'#FiO$?wQWO'#FjO.YQ_O'#FkOOQO'#Ji'#JiO$?|QWO'#JhOOQO'#Jg'#JgO$@UQWO,5\u003CSOOQQ'#Hv'#HvO$@ZQYO,5\u003CfOOQV,5\u003Cf,5\u003CfO$@bQYO,5\u003CfOOQV1G2S1G2SO$@iQWO1G2nO$@qQWO1G/^O$@vQWO1G2OO#CVQWO1G3TO$AOQYO1G2UO#CmQYO1G2fO#CxQYO1G2hO$AaQYO1G2lO!2_QWO1G2wO#DcQYO1G2nO#HUQYO1G2wO$AiQWO1G2{O$AnQWO1G3UO!1dQWO1G3UO$AsQWO1G3UOOQV1G/[1G/[O$A{QWO1G/[O$BQQ_O1G/[O#7aQWO,5=oO$BXQYO,5?OO$BmQWO,5?OO$BrQZO'#IeOOQO-E;f-E;fOOQR,59c,59cO#.WQWO,59cO#.WQWO,59cOOQR,5=n,5=nO$E_QYO'#HVO$FwQZO,5=oO!5oQWO,5={O$IZQWO,5=oO$IbQZO,5=vO$KqQYO,5=vO$>]QYO,5=vO$LRQWO'#KRO$L^QWO,5=xOOQR,5=y,5=yO$LcQWO,5=zO$>]QYO,5>PO$>]QYO,5>POOQO1G.w1G.wO$>]QYO1G.wO$LnQYO,5=pO$LvQZO,59^OOQR,59^,59^O$>]QYO,5=wO% YQZO,5=}OOQR,5=},5=}O%#lQWO1G/_O!6PQYO1G/_O#FYQYO1G2vO%#qQWO1G2vO%$PQYO1G2vOOQV1G/i1G/iO%%YQWO,5:SO%%bQ_O1G/lO%*kQWO1G1^O%+RQWO1G1hOOQO1G1h1G1hO$>]QYO1G1hO%+iQ^O'#EgOOQV1G0k1G0kOOQV1G1s1G1sO!!vQ_O1G1sO!0zQWO1G1uO!1PQ^O1G1wO!.cQ_O1G1wOOQP,5:j,5:jO$>]QYO1G/^OOQO'#Cn'#CnO%+vQWO1G1zOOQV1G2O1G2OO%,OQWO'#CnO%,WQWO1G3TO%,]QWO1G3TO%,bQYO'#GQO%,sQWO'#G]O%-UQYO'#G_O%.hQYO'#GXOOQV1G2U1G2UO%/wQWO1G2UO%/|QWO1G2UO$ARQWO1G2UOOQV1G2f1G2fO%/wQWO1G2fO#CpQWO1G2fO%0UQWO'#GdOOQV1G2h1G2hO%0gQWO1G2hO#C{QWO1G2hO%0lQYO'#GSO$>]QYO1G2lO$AdQWO1G2lOOQV1G2y1G2yO%1xQWO1G2yO%3hQ^O'#GkO%3rQWO1G2nO#DfQWO1G2nO%4QQYO,5\u003ClO%4[QYO,5\u003ClO%4jQYO,5\u003ClO%5XQYO,5\u003ClOOQQ,5\u003Cl,5\u003ClO!1WQWO'#JuO%5dQYO,5\u003ClO%5lQWO1G2vOOQV1G2v1G2vO%5tQWO1G2vO$>]QYO1G2vOOQV1G2w1G2wO%5tQWO1G2wO%5yQWO1G2wO#HXQWO1G2wOOQV1G2z1G2zO.YQ_O1G2zO$>]QYO1G2zO%6RQWO1G2zOOQO,5>l,5>lOOQO-E\u003CO-E\u003COOOQO,5=c,5=cOOQO,5=e,5=eOOQO,5=g,5=gOOQO,5=h,5=hO%6aQWO'#J|OOQO'#J{'#J{O%6iQWO,5=fO%6nQWO,5=cO!1dQWO,5=dOOQV1G2{1G2{O$>]QYO1G3UPOOO-E;d-E;dPOOO1G.i1G.iOOQO7+*g7+*gO%7VQYO'#IcO%7nQYO'#IfO%7yQYO'#IfO%8RQYO'#IfO%8^QYO,59eOOQO7+%b7+%bOOQP7+$a7+$aO%8cQ!fO'#JTOOQS'#EX'#EXOOQS'#EY'#EYOOQS'#EZ'#EZOOQS'#JT'#JTO%;UQWO'#EWOOQS'#E`'#E`OOQS'#JR'#JROOQS'#Hn'#HnO%;ZQ!fO,5:oOOQV,5:o,5:oOOQV'#JQ'#JQO%;bQ!fO,5:{OOQV,5:{,5:{O%;iQ!fO,5:|OOQV,5:|,5:|OOQV7+'e7+'eOOQV7+&Z7+&ZO%;pQ!fO,59TOOQO,59T,59TO%>YQWO7+$WO%>_QWO1G1yOOQV1G1y1G1yO!9SQWO1G.uO%>dQWO,5?}O%>nQ_O'#HqO%@|QWO,5?}OOQO1G1X1G1XOOQO7+&}7+&}O%AUQWO,5>^OOQO-E;p-E;pO%AcQWO7+'OO.YQ_O7+'OOOQO7+'O7+'OOOQO7+'P7+'PO%AjQWO7+'POOQO7+'W7+'WOOQP1G0V1G0VO%ArQXO1G/tO!M{QWO1G/tO%BsQXO1G0RO%CkQ^O'#HlO%C{QWO,5?eOOQP1G/u1G/uO%DWQWO1G/uO%D]QWO'#D_OOQO'#Dt'#DtO%DhQWO'#DtO%DmQWO'#I{OOQO'#Iz'#IzO%DuQWO,5:_O%DzQWO'#DtO%EPQWO'#DtOOQP1G0Q1G0QOOQP1G0S1G0SOOQP1G0X1G0XO%EXQXO1G1jO%EdQXO'#FeOOQP,5>_,5>_O!1PQ^O'#FeOOQP-E;q-E;qO$>]QYO1G1jOOQO7+'S7+'SOOQO,5\u003CT,5\u003CTO%ErQWO,5\u003CUO.YQ_O,5\u003CUO%EwQWO,5\u003CVO%FRQWO'#HtO%FdQWO,5@SOOQO1G1n1G1nOOQQ-E;t-E;tOOQV1G2Q1G2QO%FlQYO1G2QO#DcQYO7+(YO$>]QYO7+$xOOQV7+'j7+'jO%FsQWO7+(oO%FxQWO7+(oOOQV7+'p7+'pO%/wQWO7+'pO%F}QWO7+'pO%GVQWO7+'pOOQV7+(Q7+(QO%/wQWO7+(QO#CpQWO7+(QOOQV7+(S7+(SO%0gQWO7+(SO#C{QWO7+(SO$>]QYO7+(WO%GeQWO7+(WO#HUQYO7+(cO%GjQWO7+(YO#DfQWO7+(YOOQV7+(c7+(cO%5tQWO7+(cO%5yQWO7+(cO#HXQWO7+(cOOQV7+(g7+(gO$>]QYO7+(pO%GxQWO7+(pO!1dQWO7+(pOOQV7+$v7+$vO%G}QWO7+$vO%HSQZO1G3ZO%JfQWO1G4jOOQO1G4j1G4jOOQR1G.}1G.}O#.WQWO1G.}O%JkQWO'#KQOOQO'#HW'#HWO%J|QWO'#HXO%KXQWO'#KQOOQO'#KP'#KPO%KaQWO,5=qO%KfQYO'#H[O%LrQWO'#GmO%L}QYO'#CtO%MXQWO'#GmO$>]QYO1G3ZOOQR1G3g1G3gO#7aQWO1G3ZO%M^QZO1G3bO$>]QYO1G3bO& mQYO'#IVO& }QWO,5@mOOQR1G3d1G3dOOQR1G3f1G3fO.YQ_O1G3fOOQR1G3k1G3kO&!VQYO7+$cO&!_QYO'#KOOOQQ'#J}'#J}O&!gQYO1G3[O&!lQZO1G3cOOQQ7+$y7+$yO&${QWO7+$yO&%QQWO7+(bOOQV7+(b7+(bO%5tQWO7+(bO$>]QYO7+(bO#FYQYO7+(bO&%YQWO7+(bO!.cQ_O1G/nO&%hQWO7+%WO$?[QWO7+'SO&%pQWO'#EhO&%{Q^O'#EhOOQU'#Ho'#HoO&%{Q^O,5;ROOQV,5;R,5;RO&&VQWO,5;RO&&[Q^O,5;RO!0zQWO7+'_OOQV7+'a7+'aO&&iQWO7+'cO&&qQWO7+'cO&&xQWO7+$xO&'TQ!fO7+'fO&'[Q!fO7+'fOOQV7+(o7+(oO!1dQWO7+(oO&'cQYO,5\u003ClO&'nQYO,5\u003ClO!1dQWO'#GWO&'|QWO'#JpO&([QWO'#G^O!BxQWO'#G^O&(aQWO'#JpOOQO'#Jo'#JoO&(iQWO,5\u003CwOOQO'#DX'#DXO&(nQYO'#JrO&)}QWO'#JrO$>]QYO'#JrOOQO'#Jq'#JqO&*YQWO,5\u003CyO&*_QWO'#GZO#D^QWO'#G[O&*gQWO'#G[O&*oQWO'#JmOOQO'#Jl'#JlO&*zQYO'#GTOOQO,5\u003Cs,5\u003CsO&+PQWO7+'pO&+UQWO'#JtO&+dQWO'#GeO#BxQWO'#GeO&+uQWO'#JtOOQO'#Js'#JsO&+}QWO,5=OO$>]QYO'#GUO&,SQYO'#JkOOQQ,5\u003Cn,5\u003CnO&,kQWO7+(WOOQV7+(e7+(eO&.TQ^O'#D|O&._QWO'#GlO&.gQ^O'#JwOOQO'#Gn'#GnO&.nQWO'#JwOOQO'#Jv'#JvO&.vQWO,5=VO&.{QWO'#I`O&/]Q^O'#GmO&/dQWO'#IqO&/rQWO'#GmOOQV7+(Y7+(YO&/zQWO7+(YO$>]QYO7+(YO&0SQYO'#HxO&0hQYO1G2WOOQQ1G2W1G2WOOQQ,5\u003Cm,5\u003CmO$>]QYO,5\u003CqO&0pQWO,5\u003CrO&0uQWO7+(bO&1QQWO7+(fO&1XQWO7+(fOOQV7+(f7+(fO.YQ_O7+(fO$>]QYO7+(fO&1dQWO'#IRO&1nQWO,5@hOOQO1G3Q1G3QOOQO1G2}1G2}OOQO1G3P1G3POOQO1G3R1G3ROOQO1G3S1G3SOOQO1G3O1G3OO&1vQWO7+(pO$>]QYO,59fO&2RQ^O'#ISO&2xQYO,5?QOOQR1G/P1G/PO&3QQ!bO,5:pO&3VQ!fO,5:rOOQS-E;l-E;lOOQV1G0Z1G0ZOOQV1G0g1G0gOOQV1G0h1G0hO&3^QWO'#JTOOQO1G.o1G.oOOQV\u003C\u003CGr\u003C\u003CGrO&3iQWO1G5iO$5zQ_O,5>]O&3qQWO,5>]OOQO-E;o-E;oOOQO\u003C\u003CJj\u003C\u003CJjO&3{QWO\u003C\u003CJjOOQO\u003C\u003CJk\u003C\u003CJkO&4SQXO7+%`O&5TQWO,5>WOOQO-E;j-E;jOOQP7+%a7+%aO!1PQ^O,5:`O&5cQWO'#HmO&5wQWO,5?gOOQP1G/y1G/yOOQO,5:`,5:`O&6PQWO,5:`O%DzQWO,5:`O$>]QYO,5\u003CPO&6UQXO,5\u003CPO&6dQXO7+'UO.YQ_O1G1pO&6oQWO1G1pOOQO,5>`,5>`OOQO-E;r-E;rOOQV7+'l7+'lO&6yQWO\u003C\u003CKtO#DfQWO\u003C\u003CKtO&7XQWO\u003C\u003CHdOOQV\u003C\u003CLZ\u003C\u003CLZO!1dQWO\u003C\u003CLZOOQV\u003C\u003CK[\u003C\u003CK[O&7dQWO\u003C\u003CK[O%/wQWO\u003C\u003CK[O&7iQWO\u003C\u003CK[OOQV\u003C\u003CKl\u003C\u003CKlO%/wQWO\u003C\u003CKlOOQV\u003C\u003CKn\u003C\u003CKnO%0gQWO\u003C\u003CKnO&7qQWO\u003C\u003CKrO$>]QYO\u003C\u003CKrOOQV\u003C\u003CK}\u003C\u003CK}O%5tQWO\u003C\u003CK}O%5yQWO\u003C\u003CK}O#HXQWO\u003C\u003CK}OOQV\u003C\u003CKt\u003C\u003CKtO&7yQWO\u003C\u003CKtO$>]QYO\u003C\u003CKtO&8RQWO\u003C\u003CL[O$>]QYO\u003C\u003CL[O&8^QWO\u003C\u003CL[OOQV\u003C\u003CHb\u003C\u003CHbO$>]QYO7+(uOOQO7+*U7+*UOOQR7+$i7+$iO&8cQWO,5@lOOQO'#Gm'#GmO&8kQWO'#GmO&8vQYO'#IUO&8cQWO,5@lOOQR1G3]1G3]O&:cQYO,5=vO&;rQYO,5=XO&;|QWO,5=XOOQO,5=X,5=XOOQR7+(u7+(uO&\u003CRQZO7+(uO&>eQZO7+(|O&@tQWO,5>qOOQO-E\u003CT-E\u003CTO&APQWO7+)QOOQO\u003C\u003CG}\u003C\u003CG}O&AWQYO'#ITO&AcQYO,5@jOOQQ7+(v7+(vOOQQ\u003C\u003CHe\u003C\u003CHeO$>]QYO\u003C\u003CK|OOQV\u003C\u003CK|\u003C\u003CK|O&0uQWO\u003C\u003CK|O&AkQWO\u003C\u003CK|O%5tQWO\u003C\u003CK|O&AsQWO7+%YOOQV\u003C\u003CHr\u003C\u003CHrOOQO\u003C\u003CJn\u003C\u003CJnO.YQ_O,5;SO&AzQWO,5;SO.YQ_O'#EjO&BPQWO,5;SOOQU-E;m-E;mO&B[QWO1G0mOOQV1G0m1G0mO&%{Q^O1G0mOOQV\u003C\u003CJy\u003C\u003CJyO!.cQ_O\u003C\u003CJ}OOQV\u003C\u003CJ}\u003C\u003CJ}OOQV\u003C\u003CHd\u003C\u003CHdO.YQ_O\u003C\u003CHdO&BaQWO'#FvO&BfQWO\u003C\u003CKQO&BnQ!fO\u003C\u003CKQO&BuQWO\u003C\u003CKQO&BzQWO\u003C\u003CKQO&CSQ!fO\u003C\u003CKQOOQV\u003C\u003CKQ\u003C\u003CKQO&CZQWO\u003C\u003CLZO&C`QWO,5@[O$>]QYO,5\u003CxO&ChQWO,5\u003CxO&CmQWO'#H{O&C`QWO,5@[OOQV1G2c1G2cO&DRQWO,5@^O$>]QYO,5@^O&D^QYO'#H|O&EsQWO,5@^OOQO1G2e1G2eO%,nQWO,5\u003CuOOQO,5\u003Cv,5\u003CvO&E{QYO'#HzO&G_QWO,5@XO%,bQYO,5=pO$>]QYO,5\u003CoO&GjQWO,5@`O.YQ_O,5=PO&GrQWO,5=PO&G}QWO,5=PO&H`QWO'#H}O&GjQWO,5@`OOQV1G2j1G2jO&HtQYO,5\u003CpO%0lQYO,5>PO&I]QYO,5@VOOQV\u003C\u003CKr\u003C\u003CKrO&ItQWO,5=XO&KfQ^O,5:hO&KmQWO,5=XO$>]QYO,5=WO&KuQWO,5@cO&K}QWO,5@cO&MvQ^O'#IPO&KuQWO,5@cOOQO1G2q1G2qO&NTQWO,5=WO&N]QWO\u003C\u003CKtO&NkQYO,5>oO&NvQYO,5>dO' UQYO,5>dOOQQ,5>d,5>dOOQQ-E;v-E;vOOQQ7+'r7+'rO' aQYO1G2]O$>]QYO1G2^OOQV\u003C\u003CLQ\u003C\u003CLQO.YQ_O\u003C\u003CLQO' lQWO\u003C\u003CLQO' sQWO\u003C\u003CLQOOQO,5>m,5>mOOQO-E\u003CP-E\u003CPOOQV\u003C\u003CL[\u003C\u003CL[O.YQ_O\u003C\u003CL[O'!OQYO1G/QO'!ZQYO,5>nOOQQ,5>n,5>nO'!fQYO,5>nOOQQ-E\u003CQ-E\u003CQOOQS1G0[1G0[O'$tQ!fO1G0^O'%RQ!fO1G0^O'%YQWO1G3wOOQOAN@UAN@UO'%dQWO1G/zOOQO,5>X,5>XOOQO-E;k-E;kO!1PQ^O1G/zOOQO1G/z1G/zO'%oQWO1G/zO'%tQXO1G1kO$>]QYO1G1kO'&PQWO7+'[OOQVANA`ANA`O'&ZQWOANA`O$>]QYOANA`O'&cQWOANA`OOQVAN>OAN>OO.YQ_OAN>OO'&qQWOANAuOOQVAN@vAN@vO'&vQWOAN@vOOQVANAWANAWOOQVANAYANAYOOQVANA^ANA^O'&{QWOANA^OOQVANAiANAiO%5tQWOANAiO%5yQWOANAiO''TQWOANA`OOQVANAvANAvO.YQ_OANAvO''cQWOANAvO$>]QYOANAvOOQR\u003C\u003CLa\u003C\u003CLaO''nQWO1G6WO%JkQWO,5>pOOQO'#HY'#HYO''vQWO'#HZOOQO,5>p,5>pOOQO-E\u003CS-E\u003CSO'(RQYO1G2sO'(]QWO1G2sOOQO1G2s1G2sO$>]QYO\u003C\u003CLaOOQR\u003C\u003CLl\u003C\u003CLlOOQQ,5>o,5>oOOQQ-E\u003CR-E\u003CRO&0uQWOANAhOOQVANAhANAhO%5tQWOANAhO$>]QYOANAhO'(bQWO1G1rO')UQ^O1G0nO.YQ_O1G0nO'*zQWO,5;UO'+RQWO1G0nP'+WQWO'#ERP&%{Q^O'#HpOOQV7+&X7+&XO'+cQWO7+&XO&&qQWOAN@iO'+hQWOAN>OO!5oQWO,5\u003CbOOQS,5>a,5>aO'+oQWOAN@lO'+tQWOAN@lOOQS-E;s-E;sOOQVAN@lAN@lO'+|QWOAN@lOOQVANAuANAuO',UQWO1G5vO',^QWO1G2dO$>]QYO1G2dO&'|QWO,5>gOOQO,5>g,5>gOOQO-E;y-E;yO',iQWO1G5xO',qQWO1G5xO&(nQYO,5>hO',|QWO,5>hO$>]QYO,5>hOOQO-E;z-E;zO'-XQWO'#JnOOQO1G2a1G2aOOQO,5>f,5>fOOQO-E;x-E;xO&'cQYO,5\u003ClO'-gQYO1G2ZO'.RQWO1G5zO'.ZQWO1G2kO.YQ_O1G2kO'.eQWO1G2kO&+UQWO,5>iOOQO,5>i,5>iOOQO-E;{-E;{OOQQ,5>c,5>cOOQQ-E;u-E;uO'.pQWO1G2sO'/QQWO1G2rO'/]QWO1G5}O'/eQ^O,5>kOOQO'#Go'#GoOOQO,5>k,5>kO'/lQWO,5>kOOQO-E;}-E;}O$>]QYO1G2rO'/zQYO7+'xO'0VQWOANAlOOQVANAlANAlO.YQ_OANAlO'0^QWOANAvOOQS7+%x7+%xO'0eQWO7+%xO'0pQ!fO7+%xO'0}QWO7+%fO!1PQ^O7+%fO'1YQXO7+'VOOQVG26zG26zO'1eQWOG26zO'1sQWOG26zO$>]QYOG26zO'1{QWOG23jOOQVG27aG27aOOQVG26bG26bOOQVG26xG26xOOQVG27TG27TO%5tQWOG27TO'2SQWOG27bOOQVG27bG27bO.YQ_OG27bO'2ZQWOG27bOOQO1G4[1G4[OOQO7+(_7+(_OOQRANA{ANA{OOQVG27SG27SO%5tQWOG27SO&0uQWOG27SO'2fQ^O7+&YO'4PQWO7+'^O'4sQ^O7+&YO.YQ_O7+&YP.YQ_O,5;SP'6PQWO,5;SP'6UQWO,5;SOOQV\u003C\u003CIs\u003C\u003CIsOOQVG26TG26TOOQVG23jG23jOOQO1G1|1G1|OOQVG26WG26WO'6aQWOG26WP&B}QWO'#HuO'6fQWO7+(OOOQO1G4R1G4RO'6qQWO7++dO'6yQWO1G4SO$>]QYO1G4SO%,nQWO'#HyO'7UQWO,5@YO'7dQWO7+(VO.YQ_O7+(VOOQO1G4T1G4TOOQO1G4V1G4VO'7nQWO1G4VO'7|QWO7+(^OOQVG27WG27WO'8XQWOG27WOOQS\u003C\u003CId\u003C\u003CIdO'8`QWO\u003C\u003CIdO'8kQWO\u003C\u003CIQOOQVLD,fLD,fO'8vQWOLD,fO'9OQWOLD,fOOQVLD)ULD)UOOQVLD,oLD,oOOQVLD,|LD,|O'9^QWOLD,|O.YQ_OLD,|OOQVLD,nLD,nO%5tQWOLD,nO'9eQ^O\u003C\u003CItO';OQWO\u003C\u003CJxO';rQ^O\u003C\u003CItP'=OQWO1G0nP'=oQ^O1G0nP.YQ_O1G0nP'?bQWO1G0nOOQVLD+rLD+rO'?gQWO7+)nOOQO,5>e,5>eOOQO-E;w-E;wO'?rQWO\u003C\u003CKqOOQVLD,rLD,rOOQSAN?OAN?OOOQV!$(!Q!$(!QO'?|QWO!$(!QOOQV!$(!h!$(!hO'@UQWO!$(!hOOQV!$(!Y!$(!YO'@]Q^OAN?`POQU7+&Y7+&YP'AvQWO7+&YP'BgQ^O7+&YP.YQ_O7+&YOOQV!)9El!)9ElOOQV!)9FS!)9FSPOQU\u003C\u003CIt\u003C\u003CItP'DYQWO\u003C\u003CItP'DyQ^O\u003C\u003CItPOQUAN?`AN?`O'FlQWO'#CnO'FsQXO'#CnO'GlQWO'#I`O'IRQXO'#I`O'IxQWO'#DpO'IxQWO'#DpO!.cQ_O'#EkO'JZQ_O'#EoO'JbQ_O'#FPO'MfQ_O'#FbO'MmQXO'#I`O'NdQ_O'#E}O( gQ_O'#FWO'IxQWO,5:[O'IxQWO,5:[O!.cQ_O,5;ZO!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;fO(!jQ_O,5;kO(%nQWO,5;kO(&OQWO,5;|O(&VQYO'#CuO(&bQYO'#CvO(&mQWO'#CwO(&mQWO'#CwO('OQYO'#CtO('ZQWO,5;iO('bQWO,5;rO('iQ_O,5;rO((oQ_O,5;|O'IxQWO1G/vO((vQWO1G0uO(*eQWO1G0wO(*oQWO1G0wO(,dQWO1G0wO(,kQWO1G0wO(.]QWO1G0wO(.dQWO1G0wO(0UQWO1G0wO(0]QWO1G0wO(0dQWO1G1QO(0tQWO1G1VO(1UQYO'#IeO(&mQWO,59cO(&mQWO,59cO(1aQWO1G1^O(1hQWO1G1hO(&mQWO1G.}O(1oQWO'#DpO!.^QXO'#FbO(1tQWO,5;ZO(1{QWO'#Cw\\\",stateData:\\\"(2_~O&|OSUOS&}PQ~OPoOQ!QOSVOTVOZeO[lO^RO_RO`ROa!UOd[Og!nOsVOtVOuVOw!POyvO|!VO}mO!Q!dO!U!WO!W!XO!X!^O!Z!YO!]!pO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO$i!eO$m!fO$q!gO$s!hO%T!iO%V!jO%Z!kO%]!lO%^!mO%f!oO%j!qO%s!rO'Q`O'TQO'ZkO'^UO'gcO'qiO(QdO~O&}!sO~OZbX[bXdbXdlXobXwjX}bX!lbX!qbX!tbX#ObX#PbX#pbX'gbX'qbX'rbX'xbX'ybX'zbX'{bX'|bX'}bX(ObX(PbX(QbX(RbX(TbX~OybXXbX!ebX!PbXvbX#RbX~P$|OZ'SX['SXd'SXd'XXo'SXw'kXy'SX}'SX!l'SX!q'SX!t'SX#O'SX#P'SX#p'SX'g'SX'q'SX'r'SX'x'SX'y'SX'z'SX'{'SX'|'SX'}'SX(O'SX(P'SX(Q'SX(R'SX(T'SXv'SX~OX'SX!e'SX!P'SX#R'SX~P'ZOr!uO']!wO'_!uO~Od!xO~O^RO_RO`ROaRO'TQO~Od!}O~Od#PO[(SXo(SXy(SX}(SX!l(SX!q(SX!t(SX#O(SX#P(SX#p(SX'g(SX'q(SX'r(SX'x(SX'y(SX'z(SX'{(SX'|(SX'}(SX(O(SX(P(SX(Q(SX(R(SX(T(SXv(SX~OZ#OO~P*`OZ#RO[#QO~OQ!QO^#TO_#TO`#TOa#]Od#ZOg!nOyvO|!VO!Q!dO!U#^O!W!lO!]!pO$i!eO$m!fO$q!gO$s!hO%T!iO%V!jO%Z!kO%]!lO%^!mO%f!oO%j!qO%s!rO'Q#VO'T#SO~OPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdO~P)xOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!j#eO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdO~P)xO[#}Oo#xO}#zO!l#yO!q#jO!t#yO#O#xO#P#uO#p$OO'g#gO'q#yO'r#lO'x#hO'y#iO'z#iO'{#kO'|#nO'}#mO(O#|O(P#gO(Q#hO(R#fO(T#hO~OPoOQ!QOSVOTVOZeOd[OsVOtVOuVOw!PO!U#bO!W#cO!X!^O!Z!YO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO[#sXo#sXy#sX}#sX!l#sX!q#sX!t#sX#O#sX#P#sX#p#sX'g#sX'q#sX'r#sX'x#sX'y#sX'z#sX'{#sX'|#sX'}#sX(O#sX(P#sX(Q#sX(R#sX(T#sXX#sX!e#sX!P#sXv#sX#R#sX~P)xOX(SX!e(SX!P(SXw(SX#R(SX~P*`OPoOQ!QOSVOTVOX$ROZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q$UO'ZkO'^UO'gcO'qiO(QdO~P)xOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!P$XO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q$UO'ZkO'^UO'gcO'qiO(QdO~P)xOQ!QOSVOTVO[$gO^$pO_$ZO`9yOa9yOd$aOsVOtVOuVO}$eO!i$qO!l$lO!q$hO#V$lO'T$YO'^UO'g$[O~O!j$rOP(XP~P\u003CcOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Q$uO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdO~P)xOw$vO~Oo'bX#O'bX#P'bX#p'bX'r'bX'x'bX'y'bX'z'bX'{'bX'|'bX'}'bX(O'bX(P'bX(R'bX(T'bX~OP%tXQ%tXS%tXT%tXZ%tX[%tX^%tX_%tX`%tXa%tXd%tXg%tXs%tXt%tXu%tXw%tXy%tX|%tX}%tX!Q%tX!U%tX!W%tX!X%tX!Z%tX!]%tX!l%tX!q%tX!t%tX#Y%tX#r%tX#{%tX$O%tX$b%tX$d%tX$f%tX$i%tX$m%tX$q%tX$s%tX%T%tX%V%tX%Z%tX%]%tX%^%tX%f%tX%j%tX%s%tX&z%tX'Q%tX'T%tX'Z%tX'^%tX'g%tX'q%tX(Q%tXv%tX~P@[Oy$xO['bX}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bXv'bX~P@[Ow$yO!Q(iX!U(iX!W(iX$q(iX%](iX%^(iX~Oy$zO~PEsO!Q$}O!U%UO!W!lO$m%OO$q%PO$s%QO%T%RO%V%SO%Z%TO%]!lO%^%VO%f%WO%j%XO%s%YO~O!Q!lO!U!lO!W!lO$q%[O%]!lO~O%^%VO~PGaOPoOQ!QOSVOTVOZeO[lO^RO_RO`ROa!UOd[Og!nOsVOtVOuVOw!POyvO|!VO}mO!Q!dO!U!WO!W!XO!X!^O!Z!YO!]!pO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO$i!eO$m!fO$q!gO$s!hO%T!iO%V!jO%Z!kO%]!lO%^!mO%f!oO%j!qO%s!rO'Q#VO'TQO'ZkO'^UO'gcO'qiO(QdO~Ov%`O~P]OQ!QOZ%rO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaO!Q{X!U{X!W{X$m{X$q{X$s{X%T{X%V{X%Z{X%]{X%^{X%f{X%j{X%s{X~P'ZO!Q{X!U{X!W{X$m{X$q{X$s{X%T{X%V{X%Z{X%]{X%^{X%f{X%j{X%s{X~O}%}O'T{XQ{XZ{X[{X^{X_{X`{Xa{Xd{Xg{X!q{X$f{X&W{X'Z{X(Q{X~PMuOg&PO%f%WO!Q(iX!U(iX!W(iX$q(iX%](iX%^(iX~Ow!PO~P! yOw!PO!X&RO~PEvOPoOQ!QOSVOTVOZeO[lO^9qO_9qO`9qOa9qOd9tOsVOtVOuVOw!PO}mO!U#bO!W#cO!X:zO!Z!YO!]&UO!l9wO!q9vO!t9wO#Y!_O#r9zO#{9{O$O!]O$b!`O$d!bO$f!cO'T9oO'ZkO'^UO'gcO'q9wO(QdO~OPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdOo#qXy#qX#O#qX#P#qX#p#qX'r#qX'x#qX'y#qX'z#qX'{#qX'|#qX'}#qX(O#qX(P#qX(R#qX(T#qXX#qX!e#qX!P#qXv#qX#R#qX~P)xOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdOo#zXy#zX#O#zX#P#zX#p#zX'r#zX'x#zX'y#zX'z#zX'{#zX'|#zX'}#zX(O#zX(P#zX(R#zX(T#zXX#zX!e#zX!P#zXv#zX#R#zX~P)xO'ZkO[#}Xo#}Xy#}X}#}X!l#}X!q#}X!t#}X#O#}X#P#}X#p#}X'g#}X'q#}X'r#}X'x#}X'y#}X'z#}X'{#}X'|#}X'}#}X(O#}X(P#}X(Q#}X(R#}X(T#}XX#}X!e#}X!P#}Xv#}Xw#}X#R#}X~OPoO~OPoOQ!QOSVOTVOZeO[lO^9qO_9qO`9qOa9qOd9tOsVOtVOuVOw!PO}mO!U#bO!W#cO!X:zO!Z!YO!l9wO!q9vO!t9wO#Y!_O#r9zO#{9{O$O!]O$b!`O$d!bO$f!cO'T9oO'ZkO'^UO'gcO'q9wO(QdO~O!S&_O~Ow!PO~O!j&bO~P\u003CcO'T&cO~PEvOZ&eO~O'T&cO~O'^UOw(^Xy(^X!Q(^X!U(^X!W(^X$q(^X%](^X%^(^X~Oa&hO~P!1iO'T&iO~O_&nO'T&cO~OQ&oOZ&pO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaO!j&uO~P\u003CcO^&wO_&wO`&wOa&wOd'POw&|O'T&vO(Q&}O~O!i'UO!j'TO'T&cO~O&}!sO'O'VO'P'XO~Or!uO']'ZO'_!uO~OQ']O^'ia_'ia`'iaa'ia'T'ia~O['cOw'dO}'bO~OQ']O~OQ!QO^#TO_#TO`#TOa'kOd#ZO'T#SO~O['lO~OZbXdlXXbXobXPbX!SbX!ebX'rbX!PbX!ObXybX!ZbX#RbXvbX~O[bXwbX}bX~P!6mOZ'SXd'XXX'SX['SXo'SXw'SX}'SX#p'SXP'SX!S'SX!e'SX'r'SX!P'SX!O'SXy'SX!Z'SX#R'SXv'SX~O^#TO_#TO`#TOa'kO'T#SO~OZ'mO~Od'oO~OZ'SXd'XX~PMuOZ'pOX(SX!e(SX!P(SXw(SX#R(SX~P*`O[#}O}#zO(O#|O(R#fOo#_ay#_a!l#_a!q#_a!t#_a#O#_a#P#_a#p#_a'g#_a'q#_a'r#_a'x#_a'y#_a'z#_a'{#_a'|#_a'}#_a(P#_a(Q#_a(T#_aX#_a!e#_a!P#_av#_aw#_a#R#_a~Ow!PO!X&RO~Oy#caX#ca!e#ca!P#cav#ca#R#ca~P2gOPoOQ!QOSVOTVOZeOd[OsVOtVOuVOw!PO!U#bO!W#cO!X!^O!Z!YO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO[#sao#say#sa}#sa!l#sa!q#sa!t#sa#O#sa#P#sa#p#sa'g#sa'q#sa'r#sa'x#sa'y#sa'z#sa'{#sa'|#sa'}#sa(O#sa(P#sa(Q#sa(R#sa(T#saX#sa!e#sa!P#sav#sa#R#sa~P)xOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q#VO'ZkO'^UO'gcO'qiO(QdO!P(UP~P)xOu(SO#w(TO'T(RO~O[#}O}#zO!q#jO'g#gO'r#lO'x#hO'y#iO'z#iO'{#kO'|#nO'}#mO(O#|O(P#gO(Q#hO(R#fO(T#hO!l#sa!t#sa#p#sa'q#sa~Oo#xO#O#xO#P#uOy#saX#sa!e#sa!P#sav#sa#R#sa~P!B}Oy(YO!e(WOX(WX~P2gOX(ZO~OPoOQ!QOSVOTVOX(ZOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q$UO'ZkO'^UO'gcO'qiO(QdO~P)xOZ#RO~O!P(_O!e(WO~P2gOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q$UO'ZkO'^UO'gcO'qiO(QdO~P)xOZbXdlXwjX}jX!tbX'qbX~OP!RX!S!RX!e!RX'p!RX'r!RX!O!RXo!RXy!RX!P!RXX!RX!Z!RX#R!RXv!RX~P!JUOZ'SXd'XXw'kX}'kX!t'SX'q'SX~OP!`X!S!`X!e!`X'r!`X!O!`Xo!`Xy!`X!P!`XX!`X!Z!`X#R!`Xv!`X~P!KgOT(aOu(aO~O!t(bO'q(bOP!^X!S!^X!e!^X'r!^X!O!^Xo!^Xy!^X!P!^XX!^X!Z!^X#R!^Xv!^X~O^9rO_9rO`9yOa9yO'T9pO~Od(eO~O'p(fOP'hX!S'hX!e'hX'r'hX!O'hXo'hXy'hX!P'hXX'hX!Z'hX#R'hXv'hX~O!j&bO!P'lP~P\u003CcOw(kO}(jO~O!j&bOX'lP~P\u003CcO!j(oO~P\u003CcOZ'pO!t(bO'q(bO~O!S(qO'r(pOP$WX!e$WX~O!e(rOP(YX~OP(tO~OP!aX!S!aX!e!aX'r!aX!O!aXo!aXy!aX!P!aXX!aX!Z!aX#R!aXv!aX~P!KgOy$UaX$Ua!e$Ua!P$Uav$Ua#R$Ua~P2gO!l(|O'Q#VO'T(xOv(ZP~OQ!QO^#TO_#TO`#TOa#]Od#ZOg!nOyvO|!VO!Q!dO!U#^O!W!lO!]!pO$i!eO$m!fO$q!gO$s!hO%T!iO%V!jO%Z!kO%]!lO%^!mO%f!oO%j!qO%s!rO'Q`O'T#SO~Ov)TO~P#$iOy)VO~PEsO%^)WO~PGaOa)ZO~P!1iO%f)`O~PEvO_)aO'T&cO~O!i)fO!j)eO'T&cO~O'^UO!Q(^X!U(^X!W(^X$q(^X%](^X%^(^X~Ov%uX~P2gOv)gO~PGyOv)gO~Ov)gO~P]OQiXQ'XXZiXd'XX}iX#piX(PiX~ORiXwiX$fiX$|iX[iXoiXyiX!liX!qiX!tiX#OiX#PiX'giX'qiX'riX'xiX'yiX'ziX'{iX'|iX'}iX(OiX(QiX(RiX(TiX!PiX!eiXXiXPiXviX!SiX#RiX~P#(kOQjXQlXRjXZjXdlX}jX#pjX(PjXwjX$fjX$|jX[jXojXyjX!ljX!qjX!tjX#OjX#PjX'gjX'qjX'rjX'xjX'yjX'zjX'{jX'|jX'}jX(OjX(QjX(RjX(TjX!PjX!ejXXjX!SjXPjXvjX#RjX~O%^)jO~PGaOQ']Od)kO~O^)mO_)mO`)mOa)mO'T%dO~Od)qO~OQ']OZ)uO})sOR'UX#p'UX(P'UXw'UX$f'UX$|'UX['UXo'UXy'UX!l'UX!q'UX!t'UX#O'UX#P'UX'g'UX'q'UX'r'UX'x'UX'y'UX'z'UX'{'UX'|'UX'}'UX(O'UX(Q'UX(R'UX(T'UX!P'UX!e'UXX'UXP'UXv'UX!S'UX#R'UX~OQ!QO^:bO_:^O`TOaTOd:aO%^)jO'T:_O~PGaOQ!QOZ%rO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!j)yO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaOQ!QOZ%rO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!P)|O!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaO(P*OO~OR*QO#p*RO(P*PO~OQhXQ'XXZhXd'XX}hX(PhX~ORhX#phXwhX$fhX$|hX[hXohXyhX!lhX!qhX!thX#OhX#PhX'ghX'qhX'rhX'xhX'yhX'zhX'{hX'|hX'}hX(OhX(QhX(RhX(ThX!PhX!ehXXhXPhXvhX!ShX#RhX~P#4kOQ*SO~O})sO~OQ!QO^%vO_%cO`TOaTOd%jO$f%wO%^%xO'T%dO~PGaO!Q*VO!j*VO~O^*YO`*YOa*YO!O*ZO~OQ&oOZ*[O[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaO[#}Oo:YO}#zO!l:ZO!q#jO!t:ZO#O:YO#P:VO#p$OO'g#gO'q:ZO'r#lO'x#hO'y#iO'z#iO'{#kO'|#nO'}#mO(O#|O(P#gO(Q#hO(R#fO(T#hO~Ow'dX~P#9vOy#qaX#qa!e#qa!P#qav#qa#R#qa~P2gOy#zaX#za!e#za!P#zav#za#R#za~P2gOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!S&_O!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdOo#zay#za#O#za#P#za#p#za'r#za'x#za'y#za'z#za'{#za'|#za'}#za(O#za(P#za(R#za(T#zaX#za!e#za!P#zav#za#R#za~P)xOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Q*eO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdO~P)xOw*fO~P#9vO$b*iO$d*jO$f*kO~O!O*lO'r(pO~O!S*nO~O'T*oO~Ow$yOy*qO~O'T*rO~OQ*uOw*vOy*yO}*wO$|*xO~OQ*uOw*vO$|*xO~OQ*uOw+QO$|*xO~OQ*uOo+VOy+XO!S+UO~OQ*uO}+ZO~OQ!QOZ%rO[%qO^%vO`TOaTOd%jOg%yO}%pO!U!lO!W!lO!q%oO$f%wO$q%[O%]!lO%^%xO&W%{O'T%dO'Z%eO(Q%zO~OR+bO_+^O!Q+cO~P#DkO_%cO!Q!lOw&UX$|&UX(P&UX~P#DkOw$yO$f+hO$|*xO(P*PO~OQ!QOZ*[O[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaOQ*uOw$yO!S+UO$|*xO~Oo+nOy+mO!S+oO'r(pO~OdlXy!RX#pbXv!RX!e!RX~Od'XXy(mX#p'SXv(mX!e(mX~Od+qO~O^#TO_#TO`#TOa'kOw&|O'T&vO(Q+vO~Ov(oP~P!3|O#p+{O~Oy+|O~O!S+}O~O&}!sO'O'VO'P,PO~Od,QO~OSVOTVO_%cOsVOtVOuVOw!PO!Q!lO'^UO~P#DkOS,^OT,^OZ,^O['cO_,YOd,^Oo,^Os,^Ou,^Ow'dOy,^O}'bO!S,^O!e,^O!l,^O!q,[O!t,^O!y,^O#O,^O#P,^O#Q,^O#R,^O'Q,^O'Z%eO'^UO'g,ZO'r,[O'v,_O'x,ZO'y,[O'z,[O'{,[O'|,]O'},]O(O,^O(P,`O(Q,`O(R,aO~O!P,dO~P#KkOX,gO~P#KkOv,iO~P#KkOo'tX#O'tX#P'tX#p'tX'r'tX'x'tX'y'tX'z'tX'{'tX'|'tX'}'tX(O'tX(P'tX(R'tX(T'tX~Oy,jO['tX}'tX!l'tX!q'tX!t'tX'g'tX'q'tX(Q'tXv'tX~P#NjOP$giQ$giS$giT$giZ$gi[$gi^$gi_$gi`$gia$gid$gig$gis$git$giu$giw$giy$gi|$gi}$gi!Q$gi!U$gi!W$gi!X$gi!Z$gi!]$gi!l$gi!q$gi!t$gi#Y$gi#r$gi#{$gi$O$gi$b$gi$d$gi$f$gi$i$gi$m$gi$q$gi$s$gi%T$gi%V$gi%Z$gi%]$gi%^$gi%f$gi%j$gi%s$gi&z$gi'Q$gi'T$gi'Z$gi'^$gi'g$gi'q$gi(Q$giv$gi~P#NjOX,kO~O['cOo,lOw'dO}'bOX]X~Oy#ciX#ci!e#ci!P#civ#ci#R#ci~P2gO[#}O}#zO'x#hO(O#|O(Q#hO(R#fO(T#hOo#eiy#ei!l#ei!q#ei!t#ei#O#ei#P#ei#p#ei'q#ei'r#ei'y#ei'z#ei'{#ei'|#ei'}#eiX#ei!e#ei!P#eiv#ei#R#ei~O'g#ei(P#ei~P$'PO[#}O}#zO(O#|O(R#fOo#eiy#ei!l#ei!q#ei!t#ei#O#ei#P#ei#p#ei'q#ei'r#ei'y#ei'z#ei'{#ei'|#ei'}#eiX#ei!e#ei!P#eiv#ei#R#ei~O'g#ei'x#ei(P#ei(Q#ei(T#eiw#ei~P$)QO'g#gO(P#gO~P$'PO[#}O}#zO'g#gO'x#hO'y#iO'z#iO(O#|O(P#gO(Q#hO(R#fO(T#hOo#eiy#ei!l#ei!t#ei#O#ei#P#ei#p#ei'q#ei'r#ei'{#ei'|#ei'}#eiX#ei!e#ei!P#eiv#ei#R#ei~O!q#ei~P$+`O!q#jO~P$+`O[#}O}#zO!q#jO'g#gO'x#hO'y#iO'z#iO'{#kO(O#|O(P#gO(Q#hO(R#fO(T#hOo#eiy#ei!l#ei!t#ei#O#ei#P#ei#p#ei'q#ei'|#ei'}#eiX#ei!e#ei!P#eiv#ei#R#ei~O'r#ei~P$-hO'r#lO~P$-hO[#}O}#zO!q#jO#P#uO'g#gO'r#lO'x#hO'y#iO'z#iO'{#kO(O#|O(P#gO(Q#hO(R#fO(T#hOo#eiy#ei!l#ei!t#ei#O#ei#p#ei'q#ei'|#eiX#ei!e#ei!P#eiv#ei#R#ei~O'}#ei~P$/pO'}#mO~P$/pO[#}O}#zO!q#jO'g#gO'r#lO'x#hO'y#iO'z#iO'{#kO'|#nO'}#mO(O#|O(P#gO(Q#hO(R#fO(T#hO!l#ni!t#ni#p#ni'q#ni~Oo#xO#O#xO#P#uOy#niX#ni!e#ni!P#niv#ni#R#ni~P$1xO[#}O}#zO!q#jO'g#gO'r#lO'x#hO'y#iO'z#iO'{#kO'|#nO'}#mO(O#|O(P#gO(Q#hO(R#fO(T#hO!l#si!t#si#p#si'q#si~Oo#xO#O#xO#P#uOy#siX#si!e#si!P#siv#si#R#si~P$3yOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q#VO'ZkO'^UO'gcO'qiO(QdO~P)xO!e,sO!P(VX~P2gO!P,uO~OX,vO~P2gOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdOX&fX!e&fX!P&fX~P)xO!e(WOX(Wa~Oy,zO!e(WOX(WX~P2gOX,{O~O!P,|O!e(WO~O!P-OO!e(WO~P2gOSVOTVOsVOtVOuVO'^UO'g$[O~P!6POP!baZca!S!ba!e!ba!tca'qca'r!ba!O!bao!bay!ba!P!baX!ba!Z!ba#R!bav!ba~O!e-TO'r(pO!P'mXX'mX~O!P-VO~O!i-`O!j-_O!l-[O'T-XOv'nP~OX-aO~O_%cO!Q!lO~P#DkO!j-gOP&gX!e&gX~P\u003CcO!e(rOP(Ya~O!S-iO'r(pOP$Wa!e$Wa~Ow!PO(P*PO~OvbX!S!kX!ebX~O'Q#VO'T(xO~O!S-mO~O!e-oOv([X~Ov-qO~Ov-sO~P,cOv-sO~P#$iO_-uO'T&cO~O!S-vO~Ow$yOy-wO~OQ*uOw*vOy-zO}*wO$|*xO~OQ*uOo.UO~Oy._O~O!S.`O~O!j.bO'T&cO~Ov.cO~Ov.cO~PGyOQ']O^'Wa_'Wa`'Waa'Wa'T'Wa~Od.gO~OQ'XXQ'kXR'kXZ'kXd'XX}'kX#p'kX(P'kXw'kX$f'kX$|'kX['kXo'kXy'kX!l'kX!q'kX!t'kX#O'kX#P'kX'g'kX'q'kX'r'kX'x'kX'y'kX'z'kX'{'kX'|'kX'}'kX(O'kX(Q'kX(R'kX(T'kX!P'kX!e'kXX'kXP'kXv'kX!S'kX#R'kX~OQ!QOZ%rO[%qO^.rO_%cO`TOaTOd%jOg%yO}%pO!j.sO!q.pO!t.kO#V.mO$f%wO%^%xO&W%{O'Q#VO'T%dO'Z%eO(Q%zO!P(sP~PGaO#Q.tOR%wa#p%wa(P%waw%wa$f%wa$|%wa[%wao%way%wa}%wa!l%wa!q%wa!t%wa#O%wa#P%wa'g%wa'q%wa'r%wa'x%wa'y%wa'z%wa'{%wa'|%wa'}%wa(O%wa(Q%wa(R%wa(T%wa!P%wa!e%waX%waP%wav%wa!S%wa#R%wa~O%^.vO~PGaO(P*POR&Oa#p&Oaw&Oa$f&Oa$|&Oa[&Oao&Oay&Oa}&Oa!l&Oa!q&Oa!t&Oa#O&Oa#P&Oa'g&Oa'q&Oa'r&Oa'x&Oa'y&Oa'z&Oa'{&Oa'|&Oa'}&Oa(O&Oa(Q&Oa(R&Oa(T&Oa!P&Oa!e&OaX&OaP&Oav&Oa!S&Oa#R&Oa~O_%cO!Q!lO!j.xO(P*OO~P#DkO!e.yO(P*PO!P(uX~O!P.{O~OX.|Oy.}O(P*PO~O'Z%eOR(qP~OQ']O})sORfa#pfa(Pfawfa$ffa$|fa[faofayfa!lfa!qfa!tfa#Ofa#Pfa'gfa'qfa'rfa'xfa'yfa'zfa'{fa'|fa'}fa(Ofa(Qfa(Rfa(Tfa!Pfa!efaXfaPfavfa!Sfa#Rfa~OQ']O})sOR&Va#p&Va(P&Vaw&Va$f&Va$|&Va[&Vao&Vay&Va!l&Va!q&Va!t&Va#O&Va#P&Va'g&Va'q&Va'r&Va'x&Va'y&Va'z&Va'{&Va'|&Va'}&Va(O&Va(Q&Va(R&Va(T&Va!P&Va!e&VaX&VaP&Vav&Va!S&Va#R&Va~O!P/UO~Ow$yO$f/ZO$|*xO(P*PO~OQ!QOZ/[O[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaOo/^O'r(pO~O#W/_OP!YiQ!YiS!YiT!YiZ!Yi[!Yi^!Yi_!Yi`!Yia!Yid!Yig!Yio!Yis!Yit!Yiu!Yiw!Yiy!Yi|!Yi}!Yi!Q!Yi!U!Yi!W!Yi!X!Yi!Z!Yi!]!Yi!l!Yi!q!Yi!t!Yi#O!Yi#P!Yi#Y!Yi#p!Yi#r!Yi#{!Yi$O!Yi$b!Yi$d!Yi$f!Yi$i!Yi$m!Yi$q!Yi$s!Yi%T!Yi%V!Yi%Z!Yi%]!Yi%^!Yi%f!Yi%j!Yi%s!Yi&z!Yi'Q!Yi'T!Yi'Z!Yi'^!Yi'g!Yi'q!Yi'r!Yi'x!Yi'y!Yi'z!Yi'{!Yi'|!Yi'}!Yi(O!Yi(P!Yi(Q!Yi(R!Yi(T!YiX!Yi!e!Yi!P!Yiv!Yi!i!Yi!j!Yi#V!Yi#R!Yi~Oy#ziX#zi!e#zi!P#ziv#zi#R#zi~P2gOy$UiX$Ui!e$Ui!P$Uiv$Ui#R$Ui~P2gOv/eO!j&bO'Q`O~P\u003CcOw/nO}/mO~Oy!RX#pbX~Oy/oO~O#p/pO~OR+bO_+dO!Q/sO'T&iO'Z%eO~Oa/zO|!VO'Q#VO'T(ROv(cP~OQ!QOZ%rO[%qO^%vO_%cO`TOa/zOd%jOg%yO|!VO}%pO!q%oO$f%wO%^%xO&W%{O'Q#VO'T%dO'Z%eO(Q%zO!P(eP~PGaOQ!QOZ%rO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f0VO%^%xO&W%{O'T%dO'Z%eO(Q%zOw(`Py(`P~PGaOw*vO~Oy-zO$|*xO~Oa/zO|!VO'Q#VO'T*oOv(gP~Ow+QO~OQ!QOZ%rO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f0VO%^%xO&W%{O'T%dO'Z%eO(Q%zO(R0`O~PGaOy0dO~OQ!QOSVOTVO[$gO^0lO_$ZO`9yOa9yOd$aOsVOtVOuVO}$eO!i$qO!j0mO!l$lO!q0eO!t0hO'Q#VO'T$YO'Z%eO'^UO'g$[O~O#V0nO!P(jP~P%1}Ow!POy0pO#Q0rO$|*xO~OR0uO!e0sO~P#(kOR0uO!S+UO!e0sO(P*OO~OR0uOo0wO!S+UO!e0sOQ'VXZ'VX}'VX#p'VX(P'VX~OR0uOo0wO!e0sO~OR0uO!e0sO~O$f/ZO(P*PO~Ow$yO~Ow$yO$|*xO~Oo0}Oy0|O!S1OO'r(pO~O!e1POv(pX~Ov1RO~O^#TO_#TO`#TOa'kOw&|O'T&vO(Q1VO~Oo1YOQ'VXR'VXZ'VX}'VX!e'VX(P'VX~O!e1ZO(P*POR'YX~O!e1ZOR'YX~O!e1ZO(P*OOR'YX~OR1]O~O!S1^OS'wXT'wXZ'wX['wX_'wXd'wXo'wXs'wXu'wXw'wXy'wX}'wX!P'wX!e'wX!l'wX!q'wX!t'wX!y'wX#O'wX#P'wX#Q'wX#R'wX'Q'wX'Z'wX'^'wX'g'wX'r'wX'v'wX'x'wX'y'wX'z'wX'{'wX'|'wX'}'wX(O'wX(P'wX(Q'wX(R'wXX'wXv'wX~O}1_O~O!P1aO~P#KkOX1bO~P#KkOv1cO~P#KkOS,^OT,^OZ,^O['cO_1dOd,^Oo,^Os,^Ou,^Ow'dOy,^O}'bO!S,^O!e,^O!l,^O!q,[O!t,^O!y,^O#O,^O#P,^O#Q,^O#R,^O'Q,^O'Z%eO'^UO'g,ZO'r,[O'v,_O'x,ZO'y,[O'z,[O'{,[O'|,]O'},]O(O,^O(P,`O(Q,`O(R,aO~OX1fO~Oy,jO~O!e,sO!P(Va~P2gOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q#VO'ZkO'^UO'gcO'qiO(QdO!P&eX!e&eX~P)xO!e,sO!P(Va~OX&fa!e&fa!P&fa~P2gOX1kO~P2gO!P1mO!e(WO~OP!biZci!S!bi!e!bi!tci'qci'r!bi!O!bio!biy!bi!P!biX!bi!Z!bi#R!biv!bi~O'r(pOP!oi!S!oi!e!oi!O!oio!oiy!oi!P!oiX!oi!Z!oi#R!oiv!oi~O!j&bO!P&`X!e&`XX&`X~P\u003CcO!e-TO!P'maX'ma~O!P1qO~Ov!RX!S!kX!e!RX~O!S1rO~O!e1sOv'oX~Ov1uO~O'T-XO~O!j1xO'T-XO~O(P*POP$Wi!e$Wi~O!S1yO'r(pOP$XX!e$XX~O!S1|O~Ov$_a!e$_a~P2gO!l(|O'Q#VO'T(xOv&hX!e&hX~O!e-oOv([a~Ov2QO~P,cOy2UO~O#p2VO~Oy2WO$|*xO~Ow*vOy2WO}*wO$|*xO~Oo2aO~Ow!POy2fO#Q2hO$|*xO~O!S2jO~Ov2lO~O#Q2mOR%wi#p%wi(P%wiw%wi$f%wi$|%wi[%wio%wiy%wi}%wi!l%wi!q%wi!t%wi#O%wi#P%wi'g%wi'q%wi'r%wi'x%wi'y%wi'z%wi'{%wi'|%wi'}%wi(O%wi(Q%wi(R%wi(T%wi!P%wi!e%wiX%wiP%wiv%wi!S%wi#R%wi~Od2nO~O^2qO!j.sO!q2rO'Q#VO'Z%eO~O(P*PO!P%{X!e%{X~O!e2sO!P(tX~O!P2uO~OQ!QOZ%rO[%qO^2wO_%cO`TOaTOd%jOg%yO}%pO!j2xO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaO^2yO!j2xO(P*OO~O!P%aX!e%aX~P#4kO^2yO~O(P*POR&Oi#p&Oiw&Oi$f&Oi$|&Oi[&Oio&Oiy&Oi}&Oi!l&Oi!q&Oi!t&Oi#O&Oi#P&Oi'g&Oi'q&Oi'r&Oi'x&Oi'y&Oi'z&Oi'{&Oi'|&Oi'}&Oi(O&Oi(Q&Oi(R&Oi(T&Oi!P&Oi!e&OiX&OiP&Oiv&Oi!S&Oi#R&Oi~O_%cO!Q!lO!P&yX!e&yX~P#DkO!e.yO!P(ua~OR3QO(P*PO~O!e3ROR(rX~OR3TO~O(P*POR&Pi#p&Piw&Pi$f&Pi$|&Pi[&Pio&Piy&Pi}&Pi!l&Pi!q&Pi!t&Pi#O&Pi#P&Pi'g&Pi'q&Pi'r&Pi'x&Pi'y&Pi'z&Pi'{&Pi'|&Pi'}&Pi(O&Pi(Q&Pi(R&Pi(T&Pi!P&Pi!e&PiX&PiP&Piv&Pi!S&Pi#R&Pi~O!P3UO~O$f3VO(P*PO~Ow$yO$f3VO$|*xO(P*PO~Ow!PO!Z!YO~O!Z3aO#R3_O'r(pO~O!j&bO'Q#VO~P\u003CcOv3eO~Ov3eO!j&bO'Q`O~P\u003CcO!O3hO'r(pO~Ow!PO~P#9vOo3kOy3jO(P*PO~O!P3oO~P%;pOv3rO~P%;pOR0uO!S+UO!e0sO~OR0uOo0wO!S+UO!e0sO~Oa/zO|!VO'Q#VO'T(RO~O!S3uO~O!e3wOv(dX~Ov3yO~OQ!QOZ%rO[%qO^%vO_%cO`TOa/zOd%jOg%yO|!VO}%pO!q%oO$f%wO%^%xO&W%{O'Q#VO'T%dO'Z%eO(Q%zO~PGaO!e3|O(P*PO!P(fX~O!P4OO~O!S4PO(P*OO~O!S+UO(P*PO~O!e4ROw(aXy(aX~OQ4TO~Oy2WO~Oa/zO|!VO'Q#VO'T*oO~Oo4WOw*vO}*wOv%XX!e%XX~O!e4ZOv(hX~Ov4]O~O(P4_Oy(_Xw(_X$|(_XR(_Xo(_X!e(_X~Oy4aO(P*PO~OQ!QOSVOTVO[$gO^4bO_$ZO`9yOa9yOd$aOsVOtVOuVO}$eO!i$qO!l$lO!q$hO#V$lO'T$YO'^UO'g$[O~O!j4cO'Z%eO~P&,sO!S4eO'r(pO~O#V4gO~P%1}O!e4hO!P(kX~O!P4jO~O!P%aX!S!aX!e%aX'r!aX~P!KgO!j&bO~P&,sO!e4hO!P(kX!S'eX'r'eX~O^2yO!j2xO~Ow!POy2fO~O_4pO!Q/sO'T&iO'Z%eOR&lX!e&lX~OR4rO!e0sO~O!S4tO~Ow$yO$|*xO(P*PO~Oy4uO~P2gOo4vOy4uO(P*PO~Ov&uX!e&uX~P!3|O!e1POv(pa~Oo4|Oy4{O(P*PO~OSVOTVO_%cOsVOtVOuVOw!PO!Q!lO'^UOR&vX!e&vX~P#DkO!e1ZOR'Ya~O!y5SO~O!P5TO~P#KkO!S1^OX'wX#R'wX~O!e,sO!P(Vi~O!P&ea!e&ea~P2gOX5WO~P2gOP!bqZcq!S!bq!e!bq!tcq'qcq'r!bq!O!bqo!bqy!bq!P!bqX!bq!Z!bq#R!bqv!bq~O'r(pO!P&`a!e&`aX&`a~O!i-`O!j-_O!l5YO'T-XOv&aX!e&aX~O!e1sOv'oa~O!S5[O~O!S5`O'r(pOP$Xa!e$Xa~O(P*POP$Wq!e$Wq~Ov$^i!e$^i~P2gOw!POy5bO#Q5dO$|*xO~Oo5gOy5fO(P*PO~Oy5iO~Oy5iO$|*xO~Oy5mO(P*PO~Ow!POy5bO~Oo5tOy5sO(P*PO~O!S5vO~O!e2sO!P(ta~O^2yO!j2xO'Z%eO~OQ!QOZ%rO[%qO^.rO_%cO`TOaTOd%jOg%yO}%pO!j.sO!q.pO!t5zO#V5|O$f%wO%^%xO&W%{O'Q#VO'T%dO'Z%eO(Q%zO!P&xX!e&xX~PGaOQ!QOZ%rO[%qO^6OO_%cO`TOaTOd%jOg%yO}%pO!j6PO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(P*OO(Q%zO~PGaO!P%aa!e%aa~P#4kO^6QO~O#Q6ROR%wq#p%wq(P%wqw%wq$f%wq$|%wq[%wqo%wqy%wq}%wq!l%wq!q%wq!t%wq#O%wq#P%wq'g%wq'q%wq'r%wq'x%wq'y%wq'z%wq'{%wq'|%wq'}%wq(O%wq(Q%wq(R%wq(T%wq!P%wq!e%wqX%wqP%wqv%wq!S%wq#R%wq~O(P*POR&Oq#p&Oqw&Oq$f&Oq$|&Oq[&Oqo&Oqy&Oq}&Oq!l&Oq!q&Oq!t&Oq#O&Oq#P&Oq'g&Oq'q&Oq'r&Oq'x&Oq'y&Oq'z&Oq'{&Oq'|&Oq'}&Oq(O&Oq(Q&Oq(R&Oq(T&Oq!P&Oq!e&OqX&OqP&Oqv&Oq!S&Oq#R&Oq~O(P*PO!P&ya!e&ya~OX6SO~P2gO'Z%eOR&wX!e&wX~O!e3ROR(ra~O$f6YO(P*PO~Ow![q~P#9vO#R6]O~O!Z3aO#R6]O'r(pO~Ov6bO~O#R6fO~Oy6gO!P6hO~O!P6hO~P%;pOy6kO~Ov6kOy6gO~Ov6kO~P%;pOy6mO~O!e3wOv(da~O!S6pO~Oa/zO|!VO'Q#VO'T(ROv&oX!e&oX~O!e3|O(P*PO!P(fa~OQ!QOZ%rO[%qO^%vO_%cO`TOa/zOd%jOg%yO|!VO}%pO!q%oO$f%wO%^%xO&W%{O'Q#VO'T%dO'Z%eO(Q%zO!P&pX!e&pX~PGaO!e3|O!P(fa~OQ!QOZ%rO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f0VO%^%xO&W%{O'T%dO'Z%eO(Q%zOw&nX!e&nXy&nX~PGaO!e4ROw(aay(aa~O!e4ZOv(ha~Oo7SOv%Xa!e%Xa~Oo7SOw*vO}*wOv%Xa!e%Xa~Oa/zO|!VO'Q#VO'T*oOv&qX!e&qX~O(P*POy$xaw$xa$|$xaR$xao$xa!e$xa~O(P4_Oy(_aw(_a$|(_aR(_ao(_a!e(_a~O!P%aa!S!aX!e%aa'r!aX~P!KgOQ!QOSVOTVO[$gO_$ZO`9yOa9yOd$aOsVOtVOuVO}$eO!i$qO!j&bO!l$lO!q$hO#V$lO'T$YO'^UO'g$[O~O^7ZO~P&JUO^6QO!j6PO~O!e4hO!P(ka~O!e4hO!P(ka!S'eX'r'eX~OQ!QOSVOTVO[$gO^0lO_$ZO`9yOa9yOd$aOsVOtVOuVO}$eO!i$qO!j0mO!l$lO!q0eO!t7_O'Q#VO'T$YO'Z%eO'^UO'g$[O~O#V7aO!P&sX!e&sX~P&L]O!S7cO'r(pO~Ow!POy5bO$|*xO(P*PO~O!S+UOR&la!e&la~Oo0wO!S+UOR&la!e&la~Oo0wOR&la!e&la~O(P*POR$yi!e$yi~Oy7fO~P2gOo7gOy7fO(P*PO~O(P*PORni!eni~O(P*POR&va!e&va~O(P*OOR&va!e&va~OS,^OT,^OZ,^O_,^Od,^Oo,^Os,^Ou,^Oy,^O!S,^O!e,^O!l,^O!q,[O!t,^O!y,^O#O,^O#P,^O#Q,^O#R,^O'Q,^O'Z%eO'^UO'g,ZO'r,[O'x,ZO'y,[O'z,[O'{,[O'|,]O'},]O(O,^O~O(P7iO(Q7iO(R7iO~P'!qO!P7kO~P#KkO!P&ei!e&ei~P2gO'r(pOv!hi!e!hi~O!S7mO~O(P*POP$Xi!e$Xi~Ov$^q!e$^q~P2gOw!POy7oO~Ow!POy7oO#Q7rO$|*xO~Oy7tO~Oy7uO~Oy7vO(P*PO~Ow!POy7oO$|*xO(P*PO~Oo7{Oy7zO(P*PO~O!e2sO!P(ti~O(P*PO!P%}X!e%}X~O!P%ai!e%ai~P#4kO^8OO~O!e8TO['bXv$`i}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bX~P@[OQ#[iS#[iT#[i[#[i^#[i_#[i`#[ia#[id#[is#[it#[iu#[iv$`i}#[i!i#[i!j#[i!l#[i!q#[i!t'bX#V#[i'Q#[i'T#[i'^#[i'g#[i'q'bX(Q'bX~P@[O#R#^a~P2gO#R8WO~O!Z3aO#R8XO'r(pO~Ov8[O~Oy8^O~P2gOy8`O~Oy6gO!P8aO~Ov8`Oy6gO~O!e3wOv(di~O(P*POv%Qi!e%Qi~O!e3|O!P(fi~O!e3|O(P*PO!P(fi~O(P*PO!P&pa!e&pa~O(P8hOw(bX!e(bXy(bX~O(P*PO!S$wiy$wiw$wi$|$wiR$wio$wi!e$wi~O!e4ZOv(hi~Ov%Xi!e%Xi~P2gOo8kOv%Xi!e%Xi~O!P%ai!S!aX!e%ai'r!aX~P!KgO(P*PO!P%`i!e%`i~O!e4hO!P(ki~O#V8nO~P&L]O!P&sa!S'eX!e&sa'r'eX~O(P*POR$zq!e$zq~Oy8pO~P2gOy7zO~P2gO(P8rO(Q8rO(R8rO~O(P8rO(Q8rO(R8rO~P'!qO'r(pOv!hq!e!hq~O(P*POP$Xq!e$Xq~Ow!POy8uO$|*xO(P*PO~Ow!POy8uO~Oy8xO~P2gOy8zO~P2gOo8|Oy8zO(P*PO~OQ#[qS#[qT#[q[#[q^#[q_#[q`#[qa#[qd#[qs#[qt#[qu#[qv$`q}#[q!i#[q!j#[q!l#[q!q#[q#V#[q'Q#[q'T#[q'^#[q'g#[q~O!e9PO['bXv$`q}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bX~P@[Oo'bX!t'bX#O'bX#P'bX#p'bX'q'bX'r'bX'x'bX'y'bX'z'bX'{'bX'|'bX'}'bX(O'bX(P'bX(Q'bX(R'bX(T'bX~P'2fO#R9UO~O!Z3aO#R9UO'r(pO~Oy9WO~O(P*POv%Qq!e%Qq~O!e3|O!P(fq~O(P*PO!P&pi!e&pi~O(P8hOw(ba!e(bay(ba~Ov%Xq!e%Xq~P2gO!P&si!S'eX!e&si'r'eX~O(P*PO!P%`q!e%`q~Oy9]O~P2gO(P9^O(Q9^O(R9^O~O'r(pOv!hy!e!hy~Ow!POy9_O~Ow!POy9_O$|*xO(P*PO~Oy9aO~P2gOQ#[yS#[yT#[y[#[y^#[y_#[y`#[ya#[yd#[ys#[yt#[yu#[yv$`y}#[y!i#[y!j#[y!l#[y!q#[y#V#[y'Q#[y'T#[y'^#[y'g#[y~O!e9dO['bXv$`y}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bX~P@[Oo'bX!t'bX#O'bX#P'bX#p'bX'q'bX'r'bX'x'bX'y'bX'z'bX'{'bX'|'bX'}'bX(O'bX(P'bX(Q'bX(R'bX(T'bX~P'9eO!e9eO['bX}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bX~P@[OQ#[iS#[iT#[i[#[i^#[i_#[i`#[ia#[id#[is#[it#[iu#[i}#[i!i#[i!j#[i!l#[i!q#[i!t'bX#V#[i'Q#[i'T#[i'^#[i'g#[i'q'bX(Q'bX~P@[O#R9hO~O(P*PO!P&pq!e&pq~Ov%Xy!e%Xy~P2gOw!POy9iO~Oy9jO~P2gOQ#[!RS#[!RT#[!R[#[!R^#[!R_#[!R`#[!Ra#[!Rd#[!Rs#[!Rt#[!Ru#[!Rv$`!R}#[!R!i#[!R!j#[!R!l#[!R!q#[!R#V#[!R'Q#[!R'T#[!R'^#[!R'g#[!R~O!e9kO['bX}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bX~P@[OQ#[qS#[qT#[q[#[q^#[q_#[q`#[qa#[qd#[qs#[qt#[qu#[q}#[q!i#[q!j#[q!l#[q!q#[q!t'bX#V#[q'Q#[q'T#[q'^#[q'g#[q'q'bX(Q'bX~P@[O!e9nO['bX}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bX~P@[OQ#[yS#[yT#[y[#[y^#[y_#[y`#[ya#[yd#[ys#[yt#[yu#[y}#[y!i#[y!j#[y!l#[y!q#[y!t'bX#V#[y'Q#[y'T#[y'^#[y'g#[y'q'bX(Q'bX~P@[OwbX~P$|OwjX}jX!tbX'qbX~P!6mOZ'SXd'XXo'SXw'kX!t'SX'q'SX'r'SX~O['SXd'SXw'SX}'SX!l'SX!q'SX#O'SX#P'SX#p'SX'g'SX'x'SX'y'SX'z'SX'{'SX'|'SX'}'SX(O'SX(P'SX(Q'SX(R'SX(T'SX~P'GTOP'SX}'kX!S'SX!e'SX!O'SXy'SX!P'SXX'SX!Z'SX#R'SXv'SX~P'GTO^9qO_9qO`9qOa9qO'T9oO~O!j:OO~P!.cOPoOQ!QOSVOTVOZeOd9tOsVOtVOuVO!U#bO!W#cO!X:zO!Z!YO#Y!_O#r9zO#{9{O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO[#sXo#sXw#sX}#sX!l#sX!q#sX!t#sX#O#sX#P#sX#p#sX'g#sX'q#sX'r#sX'x#sX'y#sX'z#sX'{#sX'|#sX'}#sX(O#sX(P#sX(Q#sX(R#sX(T#sX~P'IxO#Q$uO~P!.cO}'kXP'SX!S'SX!e'SX!O'SXy'SX!P'SXX'SX!Z'SX#R'SXv'SX~P'GTOo#qX#O#qX#P#qX#p#qX'r#qX'x#qX'y#qX'z#qX'{#qX'|#qX'}#qX(O#qX(P#qX(R#qX(T#qX~P!.cOo#zX#O#zX#P#zX#p#zX'r#zX'x#zX'y#zX'z#zX'{#zX'|#zX'}#zX(O#zX(P#zX(R#zX(T#zX~P!.cOPoOQ!QOSVOTVOZeOd9tOsVOtVOuVO!U#bO!W#cO!X:zO!Z!YO#Y!_O#r9zO#{9{O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO[#sao#saw#sa}#sa!l#sa!q#sa!t#sa#O#sa#P#sa#p#sa'g#sa'q#sa'r#sa'x#sa'y#sa'z#sa'{#sa'|#sa'}#sa(O#sa(P#sa(Q#sa(R#sa(T#sa~P'IxOo:YO#O:YO#P:VOw#sa~P!B}Ow$Ua~P#9vOQ'XXd'XX}iX~OQlXdlX}jX~O^:sO_:sO`:sOa:sO'T:_O~OQ'XXd'XX}hX~Ow#qa~P#9vOw#za~P#9vO!S&_Oo#za#O#za#P#za#p#za'r#za'x#za'y#za'z#za'{#za'|#za'}#za(O#za(P#za(R#za(T#za~P!.cO#Q*eO~P!.cOw#ci~P#9vO[#}O}#zO'x#hO(O#|O(Q#hO(R#fO(T#hOo#eiw#ei!l#ei!q#ei!t#ei#O#ei#P#ei#p#ei'q#ei'r#ei'y#ei'z#ei'{#ei'|#ei'}#ei~O'g#ei(P#ei~P((}O'g#gO(P#gO~P((}O[#}O}#zO'g#gO'x#hO'y#iO'z#iO(O#|O(P#gO(Q#hO(R#fO(T#hOo#eiw#ei!l#ei!t#ei#O#ei#P#ei#p#ei'q#ei'r#ei'{#ei'|#ei'}#ei~O!q#ei~P(*yO!q#jO~P(*yO[#}O}#zO!q#jO'g#gO'x#hO'y#iO'z#iO'{#kO(O#|O(P#gO(Q#hO(R#fO(T#hOo#eiw#ei!l#ei!t#ei#O#ei#P#ei#p#ei'q#ei'|#ei'}#ei~O'r#ei~P(,rO'r#lO~P(,rO[#}O}#zO!q#jO#P:VO'g#gO'r#lO'x#hO'y#iO'z#iO'{#kO(O#|O(P#gO(Q#hO(R#fO(T#hOo#eiw#ei!l#ei!t#ei#O#ei#p#ei'q#ei'|#ei~O'}#ei~P(.kO'}#mO~P(.kOo:YO#O:YO#P:VOw#ni~P$1xOo:YO#O:YO#P:VOw#si~P$3yOQ'XXd'XX}'kX~Ow#zi~P#9vOw$Ui~P#9vOd9}O~Ow#ca~P#9vOd:uO~OU'x_'v'P'O'^s!y'^'T'Z~\\\",goto:\\\"$Ku(vPPPPPPP(wPP)OPP)^PPPP)d-hP0f5aP7R7R8v7R>wD_DpPDvHQPPPPPPK`P! P! _PPPPP!!VP!$oP!$oPP!&oP!(rP!(w!)n!*f!*f!*f!(w!+]P!(w!.Q!.TPP!.ZP!(w!(w!(w!(wP!(w!(wP!(w!(w!.y!/dP!/dJ}J}J}PPPP!/d!.y!/sPP!$oP!0^!0a!0g!1h!1t!3t!3t!5r!7t!1t!1t!9p!;_!=O!>k!@U!Am!CS!De!1t!1tP!1tP!1t!1t!Et!1tP!Ge!1t!1tP!Ie!1tP!1t!7t!7t!1t!7t!1t!Kl!Mt!Mw!7t!1t!Mz!M}!M}!M}!NR!$oP!$oP!$oP! P! PP!N]! P! PP!Ni# }! PP! PP#!^##c##k#$Z#$_#$e#$e#$mP#&s#&s#&y#'o#'{! PP! PP#(]#(l! PP! PPP#(x#)W#)d#)|#)^! P! PP! P! P! PP#*S#*S#*Y#*`#*S#*S! P! PP#*m#*v#+Q#+Q#,x#.l#.x#.x#.{#.{5a5a5a5a5a5a5a5aP5a#/O#/U#/p#1{#2R#2b#6^#6d#6j#6|#7W#8w#9R#9b#9h#9n#9x#:S#:Y#:g#:m#:s#:}#;]#;g#=u#>R#>`#>f#>n#>u#?PPPPPPPP#?V#BaP#F^#Jx#Ls#Nr$&^P$&aPPP$)_$)h$)z$/U$1d$1m$3fP!(w$4`$7r$:i$>T$>^$>c$>fPPP$>i$A`$A|P$BaPPPPPPPPPP$BvP$EU$EX$E[$Eb$Ee$Eh$Ek$En$Et$HO$HR$HU$HX$H[$H_$Hb$He$Hh$Hk$Hn$Jt$Jw$Jz#*S$KW$K^$Ka$Kd$Kh$Kl$Ko$KrQ!tPT'V!s'Wi!SOlm!P!T$T$W$y%b)U*f/gQ'i#QR,n'l(OSOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%X%_%b&U&Y&[&b&u&z&|'P'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n+z,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1P1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:gS(z$v-oQ*p&eQ*t&hQ-k(yQ-y)ZW0Z+Q0Y4Z7UR4Y0[&w!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#r]Ofgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hb#[b#Q$y'l(b)S)U*Z-t!h$bo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m$b%k!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g!W:y!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:|%n$_%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g$e%l!Q!n$O$u%n%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g'hZOY[fgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r%_%b%i%j&U&Y&[&b&u'a'}(W(Y(d(e(f(j(o(p(r(|)i)p)q*f*i*k*l+Z+n,s,z-R-T-g-m.i.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:x$^%l!Q!n$O$u%n%o%p%q%y%{&P&p&r(q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ&j!hQ&k!iQ&l!jQ&m!kQ&s!oQ)[%QQ)]%RQ)^%SQ)_%TQ)b%WQ+`&oS,R']1ZQ.W)`S/r*u4TR4n0s+yTOY[bfgilmop!O!P!Q!T!Y!Z![!_!`!c!n!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$O$T$W$`$a$e$g$h$q$r$u$y%X%_%b%i%j%n%o%p%q%y%{&P&U&Y&[&b&o&p&r&u&z&|'P']'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(q(r(|)S)U)i)p)q)s)x)y*O*P*R*V*Z*[*^*e*f*i*k*l*n*w*x+U+V+Z+h+n+o+z+},q,s,z-R-T-g-i-m-t-v.U.`.i.p.t.x.y.}/Z/[/^/b/d/g/{/}0`0e0g0m0r0w0}1O1P1Y1Z1h1r1y1|2a2h2j2m2s2v3V3_3a3f3h3k3u3{3|4R4U4W4_4c4e4h4t4v4|5[5`5d5g5t5v6R6Y6]6a6p6v6x7S7^7c7g7m7r7{8W8X8g8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:xQ'[!xQ'h#PQ)l%gU)r%m*T*WR.f)kQ,T']R5P1Z#t%s!Q!n$O$u%p%q&P&p&r(q)x)y*O*R*V*[*^*e*n*w+V+h+o+}-i-v.U.`.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2v3V3u3{3|4U4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)x%oQ+_&oQ,U']n,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7kS.q)s2sQ/O*PQ/Q*SQ/q*uS0Q*x4RQ0a+U[0o+Z.j0g4h5y7^Q2v.pS4d0e2rQ4m0sQ5Q1ZQ6T3RQ6z4PQ7O4TQ7X4_R9Y8h&jVOfgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u']'}(W(Y(b(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1Z1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fU&g!g%P%[o,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7k$nsOfgilm!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y'}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9z9{:O:P:Q:R:S:T:U:V:W:X:Y:eS$tp9xS&O!W#bS&Q!X#cQ&`!bQ*_&RQ*a&VS*d&[:fQ*h&^Q,T']Q-j(wQ/i*jQ0p+[S2f.X0qQ3]/_Q3^/`Q3g/hQ3i/kQ5P1ZU5b2R2g4lU7o5c5e5rQ8]6dS8u7p7qS9_8v8wR9i9`i{Ob!O!P!T$y%_%b)S)U)i-thxOb!O!P!T$y%_%b)S)U)i-tW/v*v/t3w6qQ/}*wW0[+Q0Y4Z7UQ3{/{Q6x3|R8g6v!h$do!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ&d!dQ&f!fQ&n!mW&x!q%X&|1PQ'S!rQ)X$}Q)Y%OQ)a%VU)d%Y'T'UQ*s&hS+s&z'PS-Y(k1sQ-u)WQ-x)ZS.a)e)fS0x+c/sQ1S+zQ1W+{S1v-_-`Q2k.bQ3s/pQ5]1xR5h2V${sOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$zsOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR3]/_V&T!Y!`*i!i$lo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!k$^o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!i$co!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&e^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR(l$fQ-[(kR5Y1sQ(S#|S({$v-oS-Z(k1sQ-l(yW/u*v/t3w6qS1w-_-`Q3v/vR5^1xQ'e#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,o'mk,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ'f#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,p'mR*g&]X/c*f/d/g3f!}aOb!O!P!T#z$v$y%_%b'}(y)S)U)i)s*f*v*w+Q+Z,s-o-t.j/b/d/g/t/{0Y0g1h2s3f3w3|4Z4h5y6a6q6v7U7^Q3`/aQ6_3bQ8Y6`R9V8Z${rOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#nfOfglmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!T9u!Y!_!`*i*l/^3h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#rfOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!X9u!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$srOfglmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#U#oh#d$P$Q$V$s%^&W&X'q't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b}:P&S&]/k3[6d:[:]:c:d:h:j:k:l:m:n:o:p:q:r:v:w:{#W#ph#d$P$Q$V$s%^&W&X'q'r't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b!P:Q&S&]/k3[6d:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{#S#qh#d$P$Q$V$s%^&W&X'q'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b{:R&S&]/k3[6d:[:]:c:d:h:k:l:m:n:o:p:q:r:v:w:{#Q#rh#d$P$Q$V$s%^&W&X'q'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9by:S&S&]/k3[6d:[:]:c:d:h:l:m:n:o:p:q:r:v:w:{#O#sh#d$P$Q$V$s%^&W&X'q'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bw:T&S&]/k3[6d:[:]:c:d:h:m:n:o:p:q:r:v:w:{!|#th#d$P$Q$V$s%^&W&X'q'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bu:U&S&]/k3[6d:[:]:c:d:h:n:o:p:q:r:v:w:{!x#vh#d$P$Q$V$s%^&W&X'q'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bq:W&S&]/k3[6d:[:]:c:d:h:p:q:r:v:w:{!v#wh#d$P$Q$V$s%^&W&X'q'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bo:X&S&]/k3[6d:[:]:c:d:h:q:r:v:w:{$]#{h#`#d$P$Q$V$s%^&S&W&X&]'q'r's't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n/k0z1i1l1}3P3[4w5V5a6^6d6e7R7e7h7s7y8j8q8{9[9b:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{${jOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$v!aOfgilmp!O!P!T!Y!Z!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ&Y![Q&Z!]R:e9{#rpOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hQ&[!^!W9x!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:f:zR$moR-f(rR$wqT(}$v-oQ/f*fS3d/d/gR6c3fQ3m/mQ3p/nQ6i3nR6l3qQ$zwQ)V${Q*q&fQ+f&qQ+i&sQ-w)YW.Z)b+j+k+lS/X*]+gW2b.W.[.].^U3W/Y/]0yU5o2c2d2eS6W3X3ZS7w5p5qS8Q6V6XQ8y7xS8}8R8SR9c9O^|O!O!P!T%_%b)iX)R$y)S)U-tQ&r!nQ*^&PQ*|&jQ+P&kQ+T&lQ+W&mQ+]&nQ+l&sQ-})[Q.Q)]Q.T)^Q.V)_Q.Y)aQ.^)bQ2S-uQ2e.WR4U0VU+a&o*u4TR4o0sQ+Y&mQ+k&sS.])b+l^0v+_+`/q/r4m4n7OS2d.W.^S4Q0R0SR5q2eS0R*x4RQ0a+UR7X4_U+d&o*u4TR4p0sQ*z&jQ+O&kQ+S&lQ+g&qQ+j&sS-{)[*|S.P)]+PS.S)^+TU.[)b+k+lQ/Y*]Q0X*{Q0q+[Q2X-|Q2Y-}Q2].QQ2_.TU2c.W.].^Q2g.XS3Z/]0yS5c2R4lQ5j2ZS5p2d2eQ6X3XS7q5e5rQ7x5qQ8R6VQ8v7pQ9O8SR9`8wQ0T*xR6|4RQ*y&jQ*}&kU-z)[*z*|U.O)]+O+PS2W-{-}S2[.P.QQ4X0ZQ5i2YQ5k2]R7T4YQ/w*vQ3t/tQ6r3wR8d6qQ*{&jS-|)[*|Q2Z-}Q4X0ZR7T4YQ+R&lU.R)^+S+TS2^.S.TR5l2_Q0]+QQ4V0YQ7V4ZR8l7UQ+[&nS.X)a+]S2R-u.YR5e2SQ0i+ZQ4f0gQ7`4hR8m7^Q.m)sQ0i+ZQ2p.jQ4f0gQ5|2sQ7`4hQ7}5yR8m7^Q0i+ZR4f0gX'O!q%X&|1PX&{!q%X&|1PW'O!q%X&|1PS+u&z'PR1U+z_|O!O!P!T%_%b)iQ%a!PS)h%_%bR.d)i$^%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ*U%yR*X%{$c%n!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gW)t%m%x*T*WQ.e)jR2{.vR.m)sR5|2sQ'W!sR,O'WQ!TOQ$TlQ$WmQ%b!P[%|!T$T$W%b)U/gQ)U$yR/g*f$b%i!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g[)n%i)p.i:`:t:xQ)p%jQ.i)qQ:`%nQ:t:aR:x:uQ!vUR'Y!vS!OO!TU%]!O%_)iQ%_!PR)i%b#rYOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hh!yY!|#U$`'a'n(d,q-R9s9|:gQ!|[b#Ub#Q$y'l(b)S)U*Z-t!h$`o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ'a!}Q'n#ZQ(d$aQ,q'oQ-R(e!W9s!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ9|9tR:g9}Q-U(gR1p-UQ1t-[R5Z1tQ,c'bQ,f'cQ,h'dW1`,c,f,h5UR5U1_Q/d*fS3c/d3fR3f/gfbO!O!P!T$y%_%b)S)U)i-tp#Wb'}(y.j/b/t/{0Y0g1h5y6a6q6v7U7^Q'}#zS(y$v-oQ.j)sW/b*f/d/g3fQ/t*vQ/{*wQ0Y+QQ0g+ZQ1h,sQ5y2sQ6q3wQ6v3|Q7U4ZR7^4hQ,t(OQ1g,rT1j,t1gS(X$Q([Q(^$VU,x(X(^,}R,}(`Q(s$mR-h(sQ-p)OR2P-pQ3n/mQ3q/nT6j3n3qQ)S$yS-r)S-tR-t)UQ4`0aR7Y4``0t+^+_+`+a+d/q/r7OR4q0tQ8i6zR9Z8iQ4S0TR6}4SQ3x/wQ6n3tT6s3x6nQ3}/|Q6t3zU6y3}6t8eR8e6uQ4[0]Q7Q4VT7W4[7QhzOb!O!P!T$y%_%b)S)U)i-tQ$|xW%Zz$|%f)v$b%f!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR)v%nS4i0i0nS7]4f4gT7b4i7]W&z!q%X&|1PS+r&z+zR+z'PQ1Q+wR4z1QU1[,S,T,UR5R1[S3S/Q7OR6U3SQ2t.mQ5x2pT5}2t5xQ.z)zR3O.z^_O!O!P!T%_%b)iY#Xb$y)S)U-t$l#_fgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!h$io!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'j#Q'lQ-P(bR/V*Z&v!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!{Y[#U#Z9s9tW&{!q%X&|1P['`!|!}'n'o9|9}S(c$`$aS+t&z'PU,X'a,q:gS-Q(d(eQ1T+zR1n-RS%t!Q&oQ&q!nQ(V$OQ(w$uS)w%o.pQ)z%pQ)}%qS*]&P&rQ+e&pQ,S']Q-d(qQ.l)sU.w)x)y2vS/O*O*PQ/P*RQ/T*VQ/W*[Q/]*^Q/`*eQ/l*nQ/|*wS0S*x4RQ0a+UQ0c+VQ0y+hQ0{+oQ1X+}Q1{-iQ2T-vQ2`.UQ2i.`Q2z.tQ2|.xQ2}.yQ3X/ZQ3Y/[S3z/{/}Q4^0`Q4l0rQ4s0wQ4x1OQ4}1YQ5O1ZQ5_1yQ5n2aQ5r2hQ5u2jQ5w2mQ5{2sQ6V3VQ6o3uQ6u3{Q6w3|Q7P4UQ7X4_Q7[4eQ7d4tQ7n5`Q7p5dQ7|5vQ8P6RQ8S6YQ8c6pS8f6v6xQ8o7cQ8w7rR9X8g$^%m!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)j%nQ*T%yR*W%{$y%h!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x'pWOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$x%g!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x_&y!q%X&z&|'P+z1PR,V']$zrOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!j$]o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ,T']R5P1Z_}O!O!P!T%_%b)i^|O!O!P!T%_%b)iQ#YbX)R$y)S)U-tbhO!O!T3_6]8W8X9U9hS#`f9uQ#dgQ$PiQ$QlQ$VmQ$spW%^!P%_%b)iU&S!Y!`*iQ&W!ZQ&X![Q&]!_Q'q#eQ'r#oS's#p:QQ't#qQ'u#rQ'v#sQ'w#tQ'x#uQ'y#vQ'z#wQ'{#xQ'|#yQ(O#zQ(U#}Q([$TQ(`$WQ*b&YQ*c&[Q,r'}Q,w(WQ,y(YQ-n(|Q/k*lQ0z+nQ1i,sQ1l,zQ1}-mQ3P.}Q3[/^Q4w0}Q5V1hQ5a1|Q6^3aQ6d3hQ6e3kQ7R4WQ7e4vQ7h4|Q7s5gQ7y5tQ8j7SQ8q7gQ8{7{Q9[8kQ9b8|Q:[9wQ:]9xQ:c9zQ:d9{Q:h:OQ:i:PQ:j:RQ:k:SQ:l:TQ:m:UQ:n:VQ:o:WQ:p:XQ:q:YQ:r:ZQ:v:eQ:w:fR:{9v^tO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6[3_Q8V6]Q9R8WQ9T8XQ9g9UR9m9hQ&V!YQ&^!`R/h*iQ$joQ&a!cQ&t!pU(g$e$g(jS(n$h0eQ(u$qQ(v$rQ*`&UQ*m&bQ+p&uQ-S(fS-b(o4cQ-c(pQ-e(rW/a*f/d/g3fQ/j*kW0f+Z0g4h7^Q1o-TQ1z-gQ3b/bQ4k0mQ5X1rQ7l5[Q8Z6aR8t7m!h$_o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mR-P(b'qXOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$zqOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$fo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&d^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!zY[$`$a9s9t['_!|!}(d(e9|9}W)o%i%j:`:aU,W'a-R:gW.h)p)q:t:uT2o.i:xQ(i$eQ(m$gR-W(jV(h$e$g(jR-^(kR-](k$znOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$ko!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'g#O'pj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ,m'jQ.u)uR8_6f`,b'b'c'd,c,f,h1_5UQ1e,lX3l/m/n3n3qj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ7j5TR8s7k^uO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6Z3_Q8U6]Q9Q8WQ9S8XQ9f9UR9l9hR(Q#zR(P#zQ$SlR(]$TR$ooR$noR)Q$vR)P$vQ)O$vR2O-ohwOb!O!P!T$y%_%b)S)U)i-t$l!lz!Q!n$O$u$|%f%n%o%p%q%y%{&P&o&p&r'](q)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR${xR0b+UR0W*xR0U*xR6{4PR/y*vR/x*vR0P*wR0O*wR0_+QR0^+Q%XyObxz!O!P!Q!T!n$O$u$y$|%_%b%f%n%o%p%q%y%{&P&o&p&r'](q)S)U)i)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-t-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR0k+ZR0j+ZQ'R!qQ)c%XQ+w&|R4y1PX'Q!q%X&|1PR+y&|R+x&|T/S*S4TT/R*S4TR.o)sR.n)sR){%p\\\",nodeNames:\\\"⚠ | \u003C > RawString Float LineComment BlockComment SourceFile ] InnerAttribute ! [ MetaItem self Metavariable super crate Identifier ScopedIdentifier :: QualifiedScope AbstractType impl SelfType MetaType TypeIdentifier ScopedTypeIdentifier ScopeIdentifier TypeArgList TypeBinding = Lifetime String Escape Char Boolean Integer } { Block ; ConstItem Vis pub ( in ) const BoundIdentifier : UnsafeBlock unsafe AsyncBlock async move IfExpression if LetDeclaration let LiteralPattern ArithOp MetaPattern SelfPattern ScopedIdentifier TuplePattern ScopedTypeIdentifier , StructPattern FieldPatternList FieldPattern ref mut FieldIdentifier .. RefPattern SlicePattern CapturedPattern ReferencePattern & MutPattern RangePattern ... OrPattern MacroPattern ParenthesizedTokens TokenBinding Identifier TokenRepetition ArithOp BitOp LogicOp UpdateOp CompareOp -> => ArithOp BracketedTokens BracedTokens _ else MatchExpression match MatchBlock MatchArm Attribute Guard UnaryExpression ArithOp DerefOp LogicOp ReferenceExpression TryExpression BinaryExpression ArithOp ArithOp BitOp BitOp BitOp BitOp LogicOp LogicOp AssignmentExpression TypeCastExpression as ReturnExpression return RangeExpression CallExpression ArgList AwaitExpression await FieldExpression GenericFunction BreakExpression break LoopLabel ContinueExpression continue IndexExpression ArrayExpression TupleExpression MacroInvocation UnitExpression ClosureExpression ParamList Parameter Parameter ParenthesizedExpression StructExpression FieldInitializerList ShorthandFieldInitializer FieldInitializer BaseFieldInitializer MatchArm WhileExpression while LoopExpression loop ForExpression for MacroInvocation MacroDefinition macro_rules MacroRule EmptyStatement ModItem mod DeclarationList AttributeItem ForeignModItem extern StructItem struct TypeParamList ConstrainedTypeParameter TraitBounds HigherRankedTraitBound RemovedTraitBound OptionalTypeParameter ConstParameter WhereClause where LifetimeClause TypeBoundClause FieldDeclarationList FieldDeclaration OrderedFieldDeclarationList UnionItem union EnumItem enum EnumVariantList EnumVariant TypeItem type FunctionItem default fn ParamList Parameter SelfParameter VariadicParameter VariadicParameter ImplItem TraitItem trait AssociatedType LetDeclaration UseDeclaration use ScopedIdentifier UseAsClause ScopedIdentifier UseList ScopedUseList UseWildcard ExternCrateDeclaration StaticItem static ExpressionStatement ExpressionStatement GenericType FunctionType ForLifetimes ParamList VariadicParameter Parameter VariadicParameter Parameter ReferenceType PointerType TupleType UnitType ArrayType MacroInvocation EmptyType DynamicType dyn BoundedType\\\",maxTerm:359,nodeProps:[[\\\"isolate\\\",-4,4,6,7,33,\\\"\\\"],[\\\"group\\\",-42,4,5,14,15,16,17,18,19,33,35,36,37,40,51,53,56,101,107,111,112,113,122,123,125,127,128,130,132,133,134,137,139,140,141,142,143,144,148,149,155,157,159,\\\"Expression\\\",-16,22,24,25,26,27,222,223,230,231,232,233,234,235,236,237,239,\\\"Type\\\",-20,42,161,162,165,166,169,170,172,188,190,194,196,204,205,207,208,209,217,218,220,\\\"Statement\\\",-17,49,60,62,63,64,65,68,74,75,76,77,78,80,81,83,84,99,\\\"Pattern\\\"],[\\\"openedBy\\\",9,\\\"[\\\",38,\\\"{\\\",47,\\\"(\\\"],[\\\"closedBy\\\",12,\\\"]\\\",39,\\\"}\\\",45,\\\")\\\"]],propSources:[rustHighlighting],skippedNodes:[0,6,7,240],repeatNodeCount:32,tokenData:\\\"$%h_R!XOX$nXY5gYZ6iZ]$n]^5g^p$npq5gqr7Xrs9cst:Rtu;Tuv>vvwAQwxCbxy!+Tyz!,Vz{!-X{|!/_|}!0g}!O!1i!O!P!3v!P!Q!8[!Q!R!Bw!R![!Dr![!]#+q!]!^#-{!^!_#.}!_!`#1b!`!a#3o!a!b#6S!b!c#7U!c!}#8W!}#O#:T#O#P#;V#P#Q#Cb#Q#R#Dd#R#S#8W#S#T$n#T#U#8W#U#V#El#V#f#8W#f#g#Ic#g#o#8W#o#p$ S#p#q$!U#q#r$$f#r${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s\u003C%lO$nU$u]'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$nU%uV'_Q'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s\u003C%lO&[S&aV'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s\u003C%lO&[S&yVOz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m\u003C%lO'`S'cVOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s\u003C%lO&[S'{UOz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m\u003C%lO'`S(bUOz(t{!P(t!P!Q(_!Q;'S(t;'S;=`*a\u003C%lO(tS(wVOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g\u003C%lO)^S)eV'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g\u003C%lO)^S)}UOz(tz{)z{!P(t!Q;'S(t;'S;=`*a\u003C%lO(tS*dP;=`\u003C%l(tS*jP;=`\u003C%l)^S*pP;=`\u003C%l'`S*vP;=`\u003C%l&[S+OO'PSU+T]'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m\u003C%lO+|U,R]'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$nU-P]'_QOY+|YZ-xZr+|rs'`sz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m\u003C%lO+|U-}V'_QOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s\u003C%lO&[Q.iV'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T\u003C%lO.dQ/TO'_QQ/WP;=`\u003C%l.dU/`]'_QOY0XYZ3uZr0Xrs(tsz0Xz{.d{!P0X!P!Q/Z!Q#O0X#O#P(t#P;'S0X;'S;=`4a\u003C%lO0XU0^]'_QOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g\u003C%lO1VU1`]'_Q'PS'OSOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g\u003C%lO1VU2bV'_Q'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g\u003C%lO)^U2|]'_QOY0XYZ3uZr0Xrs(tsz0Xz{2w{!P0X!P!Q.d!Q#O0X#O#P(t#P;'S0X;'S;=`4a\u003C%lO0XU3zV'_QOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g\u003C%lO)^U4dP;=`\u003C%l0XU4jP;=`\u003C%l1VU4pP;=`\u003C%l+|U4vP;=`\u003C%l$nU5QV'_Q'PSOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T\u003C%lO.d_5p]'_Q&|X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_6rV'_Q&|X'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s\u003C%lO&[_7b_ZX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`8a!`#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_8j]#PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_9lV']Q'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s\u003C%lO&[_:[]'QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_;^i'_Q'vW'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}\u003C{!}#O$n#O#P&[#P#R$n#R#S\u003C{#S#T$n#T#o\u003C{#o${$n${$|\u003C{$|4w$n4w5b\u003C{5b5i$n5i6S\u003C{6S;'S$n;'S;=`4s\u003C%lO$n_=Uj'_Q_X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![\u003C{![!c$n!c!}\u003C{!}#O$n#O#P&[#P#R$n#R#S\u003C{#S#T$n#T#o\u003C{#o${$n${$|\u003C{$|4w$n4w5b\u003C{5b5i$n5i6S\u003C{6S;'S$n;'S;=`4s\u003C%lO$n_?P_(TP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_@X]#OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_AZa!qX'_Q'OSOY$nYZ%nZr$nrs&[sv$nvwB`wz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_Bi]'}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_Cik'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q!cE^!c!}Lp!}#OE^#O#P!!l#P#RE^#R#SLp#S#TE^#T#oLp#o${E^${$|Lp$|4wE^4w5bLp5b5iE^5i6SLp6S;'SE^;'S;=`!*}\u003C%lOE^_Ee_'_Q'OSOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_Fm]'_Q'OSsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_GmX'_Q'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s\u003C%lO&[]HaV'OSsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s\u003C%lO&[]H{X'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s\u003C%lO&[_Im_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m\u003C%lO+|_Js]'_QsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_Kq_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m\u003C%lO+|_Lyl'_Q'OS'ZXOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s\u003C%lO$n_Nzj'_Q'OS'ZXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s\u003C%lO$n]!!qZ'OSOzHvz{!#d{!PHv!P!Q!$n!Q#iHv#i#j!%Z#j#lHv#l#m!'V#m;'SHv;'S;=`!*w\u003C%lOHv]!#gXOw'`wx!$Sxz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m\u003C%lO'`]!$XVsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s\u003C%lO&[]!$qWOw'`wx!$Sxz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m\u003C%lO'`]!%`^'OSOz&[z{&v{!P&[!P!Q'x!Q![!&[![!c&[!c!i!&[!i#T&[#T#Z!&[#Z#o&[#o#p!({#p;'S&[;'S;=`*s\u003C%lO&[]!&a['OSOz&[z{&v{!P&[!P!Q'x!Q![!'V![!c&[!c!i!'V!i#T&[#T#Z!'V#Z;'S&[;'S;=`*s\u003C%lO&[]!'[['OSOz&[z{&v{!P&[!P!Q'x!Q![!(Q![!c&[!c!i!(Q!i#T&[#T#Z!(Q#Z;'S&[;'S;=`*s\u003C%lO&[]!(V['OSOz&[z{&v{!P&[!P!Q'x!Q![Hv![!c&[!c!iHv!i#T&[#T#ZHv#Z;'S&[;'S;=`*s\u003C%lO&[]!)Q['OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z;'S&[;'S;=`*s\u003C%lO&[]!){^'OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z#q&[#q#rHv#r;'S&[;'S;=`*s\u003C%lO&[]!*zP;=`\u003C%lHv_!+QP;=`\u003C%lE^_!+^]}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!,`]!PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!-`_(QX'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m\u003C%lO+|_!.f]#OX'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!/h_(PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!0p]!eX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!1r`'gX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`!a!2t!a#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!2}]#QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!4P^(OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!4{!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!5U`!lX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!6W!P!Q,z!Q!_$n!_!`!7Y!`#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!6a]!tX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$nV!7c]'qP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!8c_'_Q'xXOY+|YZ-xZr+|rs'`sz+|z{!9b{!P+|!P!Q!:O!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m\u003C%lO+|_!9iV&}]'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T\u003C%lO.d_!:V]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!Aq{!P!;O!P!Q!:O!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk\u003C%lO!;O_!;V]'_QUXOY!\u003COYZ2XZr!\u003COrs!=Ssz!\u003COz{!@q{!P!\u003CO!P!Q!:O!Q#O!\u003CO#O#P!=S#P;'S!\u003CO;'S;=`!Bq\u003C%lO!\u003CO_!\u003CZ]'_QUX'PS'OSOY!\u003COYZ2XZr!\u003COrs!=Ssz!\u003COz{!@q{!P!\u003CO!P!Q!:O!Q#O!\u003CO#O#P!=S#P;'S!\u003CO;'S;=`!Bq\u003C%lO!\u003CO]!=]XUX'PS'OSOY!=SYZ)^Zz!=Sz{!=x{!P!=S!P!Q!?[!Q;'S!=S;'S;=`!@k\u003C%lO!=S]!=}XUXOY!>jYZ(tZz!>jz{!=x{!P!>j!P!Q!?|!Q;'S!>j;'S;=`!@e\u003C%lO!>j]!>oXUXOY!=SYZ)^Zz!=Sz{!=x{!P!=S!P!Q!?[!Q;'S!=S;'S;=`!@k\u003C%lO!=S]!?aXUXOY!>jYZ(tZz!>jz{!?|{!P!>j!P!Q!?[!Q;'S!>j;'S;=`!@e\u003C%lO!>jX!@RSUXOY!?|Z;'S!?|;'S;=`!@_\u003C%lO!?|X!@bP;=`\u003C%l!?|]!@hP;=`\u003C%l!>j]!@nP;=`\u003C%l!=S_!@x]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!@q{!P!;O!P!Q!Aq!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk\u003C%lO!;OZ!AxX'_QUXOY!AqYZ/OZr!Aqrs!?|s#O!Aq#O#P!?|#P;'S!Aq;'S;=`!Be\u003C%lO!AqZ!BhP;=`\u003C%l!Aq_!BnP;=`\u003C%l!;O_!BtP;=`\u003C%l!\u003CO_!CQjuX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![!Dr![#O$n#O#P&[#P#R$n#R#S!Dr#S#U$n#U#V#!}#V#]$n#]#^!FZ#^#c$n#c#d#%u#d#i$n#i#j!FZ#j#l$n#l#m#(g#m;'S$n;'S;=`4s\u003C%lO$n_!D{duX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![!Dr![#O$n#O#P&[#P#R$n#R#S!Dr#S#]$n#]#^!FZ#^#i$n#i#j!FZ#j;'S$n;'S;=`4s\u003C%lO$n_!Fbg'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!R$n!R!S!Gy!S!T$n!T!U!K_!U!W$n!W!X!Le!X!Y$n!Y!Z!J]!Z#O$n#O#P&[#P#g$n#g#h!Mk#h;'S$n;'S;=`4s\u003C%lO$n_!HQa'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!S$n!S!T!IV!T!W$n!W!X!J]!X#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!I^_'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!Y$n!Y!Z!J]!Z#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!Jf]uX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!Kf_'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!S$n!S!T!J]!T#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!Ll_'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!U$n!U!V!J]!V#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_!Mr_'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P#]$n#]#^!Nq#^;'S$n;'S;=`4s\u003C%lO$n_!Nx_'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P#n$n#n#o# w#o;'S$n;'S;=`4s\u003C%lO$n_#!O_'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P#X$n#X#Y!J]#Y;'S$n;'S;=`4s\u003C%lO$n_##Ua'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!R#$Z!R!S#$Z!S#O$n#O#P&[#P#R$n#R#S#$Z#S;'S$n;'S;=`4s\u003C%lO$n_#$deuX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!R#$Z!R!S#$Z!S#O$n#O#P&[#P#R$n#R#S#$Z#S#]$n#]#^!FZ#^#i$n#i#j!FZ#j;'S$n;'S;=`4s\u003C%lO$n_#%|`'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!Y#'O!Y#O$n#O#P&[#P#R$n#R#S#'O#S;'S$n;'S;=`4s\u003C%lO$n_#'XduX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!Y#'O!Y#O$n#O#P&[#P#R$n#R#S#'O#S#]$n#]#^!FZ#^#i$n#i#j!FZ#j;'S$n;'S;=`4s\u003C%lO$n_#(nd'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#)|![!c$n!c!i#)|!i#O$n#O#P&[#P#R$n#R#S#)|#S#T$n#T#Z#)|#Z;'S$n;'S;=`4s\u003C%lO$n_#*VhuX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#)|![!c$n!c!i#)|!i#O$n#O#P&[#P#R$n#R#S#)|#S#T$n#T#Z#)|#Z#]$n#]#^!FZ#^#i$n#i#j!FZ#j;'S$n;'S;=`4s\u003C%lO$n_#+z_!SX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![$n![!]#,y!]#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_#-S]dX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_#.U]yX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_#/W`#PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!^$n!^!_#0Y!_!`8a!`#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_#0c_'yX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_#1k`oX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`8a!`!a#2m!a#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_#2v]#RX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_#3x`#PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`8a!`!a#4z!a#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_#5T_'zX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_#6]](RX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$nV#7_]'pP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_#8cj'_Q'OS!yW'TPOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s\u003C%lO$n_#:^][X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$nU#;[Z'OSOz#;}z{#\u003Ck{!P#;}!P!Q#=V!Q#i#;}#i#j#=n#j#l#;}#l#m#?j#m;'S#;};'S;=`#C[\u003C%lO#;}U#\u003CUVrQ'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s\u003C%lO&[U#\u003CpVrQOz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m\u003C%lO'`U#=[UrQOz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m\u003C%lO'`U#=s^'OSOz&[z{&v{!P&[!P!Q'x!Q![#>o![!c&[!c!i#>o!i#T&[#T#Z#>o#Z#o&[#o#p#A`#p;'S&[;'S;=`*s\u003C%lO&[U#>t['OSOz&[z{&v{!P&[!P!Q'x!Q![#?j![!c&[!c!i#?j!i#T&[#T#Z#?j#Z;'S&[;'S;=`*s\u003C%lO&[U#?o['OSOz&[z{&v{!P&[!P!Q'x!Q![#@e![!c&[!c!i#@e!i#T&[#T#Z#@e#Z;'S&[;'S;=`*s\u003C%lO&[U#@j['OSOz&[z{&v{!P&[!P!Q'x!Q![#;}![!c&[!c!i#;}!i#T&[#T#Z#;}#Z;'S&[;'S;=`*s\u003C%lO&[U#Ae['OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z;'S&[;'S;=`*s\u003C%lO&[U#B`^'OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z#q&[#q#r#;}#r;'S&[;'S;=`*s\u003C%lO&[U#C_P;=`\u003C%l#;}_#Ck]XX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_#Dm_'{X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_#Ewl'_Q'OS!yW'TPOY$nYZ%nZr$nrs#Gosw$nwx#H]xz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s\u003C%lO$n]#GvV'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s\u003C%lO&[_#Hd_'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q#OE^#O#P!!l#P;'SE^;'S;=`!*}\u003C%lOE^_#Ink'_Q'OS!yW'TPOY$nYZ%nZr$nrs&[st#Kctz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s\u003C%lO$nV#Kji'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s\u003C%lO$nV#Mbj'_Q'OS'TPOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#MX![!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s\u003C%lO$n_$ ]]wX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_$!_a'rX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P#p$n#p#q$#d#q;'S$n;'S;=`4s\u003C%lO$n_$#m]'|X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n_$$o]vX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s\u003C%lO$n\\\",tokenizers:[closureParam,tpDelim,literalTokens,0,1,2,3],topRules:{\\\"SourceFile\\\":[0,8]},specialized:[{term:281,get:value=>spec_identifier$2[value]||-1}],tokenPrec:15596});const rustLanguage=LRLanguage.define({name:\\\"rust\\\",parser:parser$9.configure({props:[indentNodeProp.add({IfExpression:continuedIndent({except:/^\\\\s*({|else\\\\b)/}),\\\"String BlockComment\\\":()=>null,\\\"AttributeItem\\\":cx=>cx.continue(),\\\"Statement MatchArm\\\":continuedIndent()}),foldNodeProp.add(type=>{if(/(Block|edTokens|List)$/.test(type.name))return foldInside;if(type.name==\\\"BlockComment\\\")return tree=>({from:tree.from+2,to:tree.to-2});return undefined;})]}),languageData:{commentTokens:{line:\\\"//\\\",block:{open:\\\"/*\\\",close:\\\"*/\\\"}},indentOnInput:/^\\\\s*(?:\\\\{|\\\\})$/,closeBrackets:{stringPrefixes:[\\\"b\\\",\\\"r\\\",\\\"br\\\"]}}});function rust(){return new LanguageSupport(rustLanguage);}var _m19=Object.freeze({__proto__:null,rust:rust,rustLanguage:rustLanguage});const StartTag=1,StartCloseTag=2,MissingCloseTag=3,mismatchedStartCloseTag=4,incompleteStartCloseTag=5,commentContent$1=35,piContent$1=36,cdataContent$1=37,Element$3=11,OpenTag=13;function nameChar(ch){return ch==45||ch==46||ch==58||ch>=65&&ch\u003C=90||ch==95||ch>=97&&ch\u003C=122||ch>=161;}function isSpace(ch){return ch==9||ch==10||ch==13||ch==32;}let cachedName=null,cachedInput=null,cachedPos=0;function tagNameAfter(input,offset){let pos=input.pos+offset;if(cachedInput==input&&cachedPos==pos)return cachedName;while(isSpace(input.peek(offset)))offset++;let name=\\\"\\\";for(;;){let next=input.peek(offset);if(!nameChar(next))break;name+=String.fromCharCode(next);offset++;}cachedInput=input;cachedPos=pos;return cachedName=name||null;}function ElementContext(name,parent){this.name=name;this.parent=parent;this.hash=parent?parent.hash:0;for(let i=0;i\u003Cname.length;i++)this.hash+=(this.hash\u003C\u003C4)+name.charCodeAt(i)+(name.charCodeAt(i)\u003C\u003C8);}const elementContext=new ContextTracker({start:null,shift(context,term,stack,input){return term==StartTag?new ElementContext(tagNameAfter(input,1)||\\\"\\\",context):context;},reduce(context,term){return term==Element$3&&context?context.parent:context;},reuse(context,node,_stack,input){let type=node.type.id;return type==StartTag||type==OpenTag?new ElementContext(tagNameAfter(input,1)||\\\"\\\",context):context;},hash(context){return context?context.hash:0;},strict:false});const startTag=new ExternalTokenizer((input,stack)=>{if(input.next!=60)return;input.advance();if(input.next==47){input.advance();let name=tagNameAfter(input,0);if(!name)return input.acceptToken(incompleteStartCloseTag);if(stack.context&&name==stack.context.name)return input.acceptToken(StartCloseTag);for(let cx=stack.context;cx;cx=cx.parent)if(cx.name==name)return input.acceptToken(MissingCloseTag,-2);input.acceptToken(mismatchedStartCloseTag);}else if(input.next!=33&&input.next!=63){return input.acceptToken(StartTag);}},{contextual:true});function scanTo(type,end){return new ExternalTokenizer(input=>{let len=0,first=end.charCodeAt(0);scan:for(;;input.advance(),len++){if(input.next\u003C0)break;if(input.next==first){for(let i=1;i\u003Cend.length;i++)if(input.peek(i)!=end.charCodeAt(i))continue scan;break;}}if(len)input.acceptToken(type);});}const commentContent=scanTo(commentContent$1,\\\"-->\\\");const piContent=scanTo(piContent$1,\\\"?>\\\");const cdataContent=scanTo(cdataContent$1,\\\"]]>\\\");const xmlHighlighting=styleTags({Text:tags$1.content,\\\"StartTag StartCloseTag EndTag SelfCloseEndTag\\\":tags$1.angleBracket,TagName:tags$1.tagName,\\\"MismatchedCloseTag/TagName\\\":[tags$1.tagName,tags$1.invalid],AttributeName:tags$1.attributeName,AttributeValue:tags$1.attributeValue,Is:tags$1.definitionOperator,\\\"EntityReference CharacterReference\\\":tags$1.character,Comment:tags$1.blockComment,ProcessingInst:tags$1.processingInstruction,DoctypeDecl:tags$1.documentMeta,Cdata:tags$1.special(tags$1.string)});const parser$8=LRParser.deserialize({version:14,states:\\\",SOQOaOOOrOxO'#CfOzOpO'#CiO!tOaO'#CgOOOP'#Cg'#CgO!{OrO'#CrO#TOtO'#CsO#]OpO'#CtOOOP'#DS'#DSOOOP'#Cv'#CvQQOaOOOOOW'#Cw'#CwO#eOxO,59QOOOP,59Q,59QOOOO'#Cx'#CxO#mOpO,59TO#uO!bO,59TOOOP'#C{'#C{O$TOaO,59RO$[OpO'#CoOOOP,59R,59ROOOQ'#C|'#C|O$dOrO,59^OOOP,59^,59^OOOS'#C}'#C}O$lOtO,59_OOOP,59_,59_O$tOpO,59`O$|OpO,59`OOOP-E6t-E6tOOOW-E6u-E6uOOOP1G.l1G.lOOOO-E6v-E6vO%UO!bO1G.oO%UO!bO1G.oO%dOpO'#CkO%lO!bO'#CyO%zO!bO1G.oOOOP1G.o1G.oOOOP1G.w1G.wOOOP-E6y-E6yOOOP1G.m1G.mO&VOpO,59ZO&_OpO,59ZOOOQ-E6z-E6zOOOP1G.x1G.xOOOS-E6{-E6{OOOP1G.y1G.yO&gOpO1G.zO&gOpO1G.zOOOP1G.z1G.zO&oO!bO7+$ZO&}O!bO7+$ZOOOP7+$Z7+$ZOOOP7+$c7+$cO'YOpO,59VO'bOpO,59VO'jO!bO,59eOOOO-E6w-E6wO'xOpO1G.uO'xOpO1G.uOOOP1G.u1G.uO(QOpO7+$fOOOP7+$f7+$fO(YO!bO\u003C\u003CGuOOOP\u003C\u003CGu\u003C\u003CGuOOOP\u003C\u003CG}\u003C\u003CG}O'bOpO1G.qO'bOpO1G.qO(eO#tO'#CnOOOO1G.q1G.qO(sOpO7+$aOOOP7+$a7+$aOOOP\u003C\u003CHQ\u003C\u003CHQOOOPAN=aAN=aOOOPAN=iAN=iO'bOpO7+$]OOOO7+$]7+$]OOOO'#Cz'#CzO({O#tO,59YOOOO,59Y,59YOOOP\u003C\u003CG{\u003C\u003CG{OOOO\u003C\u003CGw\u003C\u003CGwOOOO-E6x-E6xOOOO1G.t1G.t\\\",stateData:\\\")Z~OPQOSVOTWOVWOWWOXWOiXOxPO}TO!PUO~OuZOw]O~O^`Oy^O~OPQOQcOSVOTWOVWOWWOXWOxPO}TO!PUO~ORdO~P!SOseO|gO~OthO!OjO~O^lOy^O~OuZOwoO~O^qOy^O~O[vO`sOdwOy^O~ORyO~P!SO^{Oy^O~OseO|}O~OthO!O!PO~O^!QOy^O~O[!SOy^O~O[!VO`sOd!WOy^O~Oa!YOy^O~Oy^O[mX`mXdmX~O[!VO`sOd!WO~O^!]Oy^O~O[!_Oy^O~O[!aOy^O~O[!cO`sOd!dOy^O~O[!cO`sOd!dO~Oa!eOy^O~Oy^Oz!gO~Oy^O[ma`madma~O[!jOy^O~O[!kOy^O~O[!lO`sOd!mO~OW!pOX!pOz!rO{!pO~O[!sOy^O~OW!pOX!pOz!vO{!pO~O\\\",goto:\\\"%[wPPPPPPPPPPxxP!OP!UPP!_!iP!oxxxP!u!{#R$Z$j$p$v$|PPPP%SXWORYbXRORYb_t`qru!T!U!bQ!h!YS!o!e!fR!t!nQdRRybXSORYbQYORmYQ[PRn[Q_QQkVjp_krz!R!T!X!Z!^!`!f!i!nQr`QzcQ!RlQ!TqQ!XsQ!ZtQ!^{Q!`!QQ!f!YQ!i!]R!n!eQu`S!UqrU![u!U!bR!b!TQ!q!gR!u!qQbRRxbQfTR|fQiUR!OiSXOYTaRb\\\",nodeNames:\\\"⚠ StartTag StartCloseTag MissingCloseTag StartCloseTag StartCloseTag Document Text EntityReference CharacterReference Cdata Element EndTag OpenTag TagName Attribute AttributeName Is AttributeValue CloseTag SelfCloseEndTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag DoctypeDecl\\\",maxTerm:47,context:elementContext,nodeProps:[[\\\"closedBy\\\",1,\\\"SelfCloseEndTag EndTag\\\",13,\\\"CloseTag MissingCloseTag\\\"],[\\\"openedBy\\\",12,\\\"StartTag StartCloseTag\\\",19,\\\"OpenTag\\\",20,\\\"StartTag\\\"],[\\\"isolate\\\",-6,13,18,19,21,22,24,\\\"\\\"]],propSources:[xmlHighlighting],skippedNodes:[0],repeatNodeCount:8,tokenData:\\\"Jy~R!XOX$nXY&kYZ&kZ]$n]^&k^p$npq&kqr$nrs'ssv$nvw(Zw}$n}!O,^!O!P$n!P!Q.m!Q![$n![!]0V!]!^$n!^!_3h!_!`El!`!aF_!a!bGQ!b!c$n!c!}0V!}#P$n#P#QHj#Q#R$n#R#S0V#S#T$n#T#o0V#o%W$n%W%o0V%o%p$n%p&a0V&a&b$n&b1p0V1p4U$n4U4d0V4d4e$n4e$IS0V$IS$I`$n$I`$Ib0V$Ib$Kh$n$Kh%#t0V%#t&/x$n&/x&Et0V&Et&FV$n&FV;'S0V;'S;:j3b;:j;=`&e\u003C%l?&r$n?&r?Ah0V?Ah?BY$n?BY?Mn0V?MnO$nX$uWVP{WOr$nrs%_sv$nw!^$n!^!_%y!_;'S$n;'S;=`&e\u003C%lO$nP%dTVPOv%_w!^%_!_;'S%_;'S;=`%s\u003C%lO%_P%vP;=`\u003C%l%_W&OT{WOr%ysv%yw;'S%y;'S;=`&_\u003C%lO%yW&bP;=`\u003C%l%yX&hP;=`\u003C%l$n_&t_VP{WyUOX$nXY&kYZ&kZ]$n]^&k^p$npq&kqr$nrs%_sv$nw!^$n!^!_%y!_;'S$n;'S;=`&e\u003C%lO$nZ'zTzYVPOv%_w!^%_!_;'S%_;'S;=`%s\u003C%lO%_~(^ast)c![!]*g!c!}*g#R#S*g#T#o*g%W%o*g%p&a*g&b1p*g4U4d*g4e$IS*g$I`$Ib*g$Kh%#t*g&/x&Et*g&FV;'S*g;'S;:j,W?&r?Ah*g?BY?Mn*g~)fQ!Q![)l#l#m)z~)oQ!Q![)l!]!^)u~)zOX~~)}R!Q![*W!c!i*W#T#Z*W~*ZS!Q![*W!]!^)u!c!i*W#T#Z*W~*jg}!O*g!O!P*g!Q![*g![!]*g!]!^,R!c!}*g#R#S*g#T#o*g$}%O*g%W%o*g%p&a*g&b1p*g1p4U*g4U4d*g4e$IS*g$I`$Ib*g$Je$Jg*g$Kh%#t*g&/x&Et*g&FV;'S*g;'S;:j,W?&r?Ah*g?BY?Mn*g~,WOW~~,ZP;=`\u003C%l*gZ,eYVP{WOr$nrs%_sv$nw}$n}!O-T!O!^$n!^!_%y!_;'S$n;'S;=`&e\u003C%lO$nZ-[YVP{WOr$nrs%_sv$nw!^$n!^!_%y!_!`$n!`!a-z!a;'S$n;'S;=`&e\u003C%lO$nZ.TW|QVP{WOr$nrs%_sv$nw!^$n!^!_%y!_;'S$n;'S;=`&e\u003C%lO$n].tYVP{WOr$nrs%_sv$nw!^$n!^!_%y!_!`$n!`!a/d!a;'S$n;'S;=`&e\u003C%lO$n]/mWdSVP{WOr$nrs%_sv$nw!^$n!^!_%y!_;'S$n;'S;=`&e\u003C%lO$n_0b!O`S^QVP{WOr$nrs%_sv$nw}$n}!O0V!O!P0V!P!Q$n!Q![0V![!]0V!]!^$n!^!_%y!_!c$n!c!}0V!}#R$n#R#S0V#S#T$n#T#o0V#o$}$n$}%O0V%O%W$n%W%o0V%o%p$n%p&a0V&a&b$n&b1p0V1p4U0V4U4d0V4d4e$n4e$IS0V$IS$I`$n$I`$Ib0V$Ib$Je$n$Je$Jg0V$Jg$Kh$n$Kh%#t0V%#t&/x$n&/x&Et0V&Et&FV$n&FV;'S0V;'S;:j3b;:j;=`&e\u003C%l?&r$n?&r?Ah0V?Ah?BY$n?BY?Mn0V?MnO$n_3eP;=`\u003C%l0VX3mW{WOq%yqr4Vsv%yw!a%y!a!bEU!b;'S%y;'S;=`&_\u003C%lO%yX4[]{WOr%ysv%yw}%y}!O5T!O!f%y!f!g6V!g!}%y!}#O;f#O#W%y#W#XAr#X;'S%y;'S;=`&_\u003C%lO%yX5YV{WOr%ysv%yw}%y}!O5o!O;'S%y;'S;=`&_\u003C%lO%yX5vT}P{WOr%ysv%yw;'S%y;'S;=`&_\u003C%lO%yX6[V{WOr%ysv%yw!q%y!q!r6q!r;'S%y;'S;=`&_\u003C%lO%yX6vV{WOr%ysv%yw!e%y!e!f7]!f;'S%y;'S;=`&_\u003C%lO%yX7bV{WOr%ysv%yw!v%y!v!w7w!w;'S%y;'S;=`&_\u003C%lO%yX7|V{WOr%ysv%yw!{%y!{!|8c!|;'S%y;'S;=`&_\u003C%lO%yX8hV{WOr%ysv%yw!r%y!r!s8}!s;'S%y;'S;=`&_\u003C%lO%yX9SV{WOr%ysv%yw!g%y!g!h9i!h;'S%y;'S;=`&_\u003C%lO%yX9nX{WOr9irs:Zsv9ivw:Zw!`9i!`!a:x!a;'S9i;'S;=`;`\u003C%lO9iP:^TO!`:Z!`!a:m!a;'S:Z;'S;=`:r\u003C%lO:ZP:rOiPP:uP;=`\u003C%l:ZX;PTiP{WOr%ysv%yw;'S%y;'S;=`&_\u003C%lO%yX;cP;=`\u003C%l9iX;kX{WOr%ysv%yw!e%y!e!f\u003CW!f#V%y#V#W?f#W;'S%y;'S;=`&_\u003C%lO%yX\u003C]V{WOr%ysv%yw!f%y!f!g\u003Cr!g;'S%y;'S;=`&_\u003C%lO%yX\u003CwV{WOr%ysv%yw!c%y!c!d=^!d;'S%y;'S;=`&_\u003C%lO%yX=cV{WOr%ysv%yw!v%y!v!w=x!w;'S%y;'S;=`&_\u003C%lO%yX=}V{WOr%ysv%yw!c%y!c!d>d!d;'S%y;'S;=`&_\u003C%lO%yX>iV{WOr%ysv%yw!}%y!}#O?O#O;'S%y;'S;=`&_\u003C%lO%yX?VT{WxPOr%ysv%yw;'S%y;'S;=`&_\u003C%lO%yX?kV{WOr%ysv%yw#W%y#W#X@Q#X;'S%y;'S;=`&_\u003C%lO%yX@VV{WOr%ysv%yw#T%y#T#U@l#U;'S%y;'S;=`&_\u003C%lO%yX@qV{WOr%ysv%yw#h%y#h#iAW#i;'S%y;'S;=`&_\u003C%lO%yXA]V{WOr%ysv%yw#T%y#T#U>d#U;'S%y;'S;=`&_\u003C%lO%yXAwV{WOr%ysv%yw#c%y#c#dB^#d;'S%y;'S;=`&_\u003C%lO%yXBcV{WOr%ysv%yw#V%y#V#WBx#W;'S%y;'S;=`&_\u003C%lO%yXB}V{WOr%ysv%yw#h%y#h#iCd#i;'S%y;'S;=`&_\u003C%lO%yXCiV{WOr%ysv%yw#m%y#m#nDO#n;'S%y;'S;=`&_\u003C%lO%yXDTV{WOr%ysv%yw#d%y#d#eDj#e;'S%y;'S;=`&_\u003C%lO%yXDoV{WOr%ysv%yw#X%y#X#Y9i#Y;'S%y;'S;=`&_\u003C%lO%yXE]T!PP{WOr%ysv%yw;'S%y;'S;=`&_\u003C%lO%yZEuWaQVP{WOr$nrs%_sv$nw!^$n!^!_%y!_;'S$n;'S;=`&e\u003C%lO$n_FhW[UVP{WOr$nrs%_sv$nw!^$n!^!_%y!_;'S$n;'S;=`&e\u003C%lO$nZGXYVP{WOr$nrs%_sv$nw!^$n!^!_%y!_!`$n!`!aGw!a;'S$n;'S;=`&e\u003C%lO$nZHQW!OQVP{WOr$nrs%_sv$nw!^$n!^!_%y!_;'S$n;'S;=`&e\u003C%lO$nZHqYVP{WOr$nrs%_sv$nw!^$n!^!_%y!_#P$n#P#QIa#Q;'S$n;'S;=`&e\u003C%lO$nZIhYVP{WOr$nrs%_sv$nw!^$n!^!_%y!_!`$n!`!aJW!a;'S$n;'S;=`&e\u003C%lO$nZJaWwQVP{WOr$nrs%_sv$nw!^$n!^!_%y!_;'S$n;'S;=`&e\u003C%lO$n\\\",tokenizers:[startTag,commentContent,piContent,cdataContent,0,1,2,3],topRules:{\\\"Document\\\":[0,6]},tokenPrec:0});function tagName(doc,tag){let name=tag&&tag.getChild(\\\"TagName\\\");return name?doc.sliceString(name.from,name.to):\\\"\\\";}function elementName(doc,tree){let tag=tree&&tree.firstChild;return!tag||tag.name!=\\\"OpenTag\\\"?\\\"\\\":tagName(doc,tag);}function attrName(doc,tag,pos){let attr=tag&&tag.getChildren(\\\"Attribute\\\").find(a=>a.from\u003C=pos&&a.to>=pos);let name=attr&&attr.getChild(\\\"AttributeName\\\");return name?doc.sliceString(name.from,name.to):\\\"\\\";}function findParentElement(tree){for(let cur=tree&&tree.parent;cur;cur=cur.parent)if(cur.name==\\\"Element\\\")return cur;return null;}function findLocation(state,pos){var _a;let at=syntaxTree(state).resolveInner(pos,-1),inTag=null;for(let cur=at;!inTag&&cur.parent;cur=cur.parent)if(cur.name==\\\"OpenTag\\\"||cur.name==\\\"CloseTag\\\"||cur.name==\\\"SelfClosingTag\\\"||cur.name==\\\"MismatchedCloseTag\\\")inTag=cur;if(inTag&&(inTag.to>pos||inTag.lastChild.type.isError)){let elt=inTag.parent;if(at.name==\\\"TagName\\\")return inTag.name==\\\"CloseTag\\\"||inTag.name==\\\"MismatchedCloseTag\\\"?{type:\\\"closeTag\\\",from:at.from,context:elt}:{type:\\\"openTag\\\",from:at.from,context:findParentElement(elt)};if(at.name==\\\"AttributeName\\\")return{type:\\\"attrName\\\",from:at.from,context:inTag};if(at.name==\\\"AttributeValue\\\")return{type:\\\"attrValue\\\",from:at.from,context:inTag};let before=at==inTag||at.name==\\\"Attribute\\\"?at.childBefore(pos):at;if((before===null||before===void 0?void 0:before.name)==\\\"StartTag\\\")return{type:\\\"openTag\\\",from:pos,context:findParentElement(elt)};if((before===null||before===void 0?void 0:before.name)==\\\"StartCloseTag\\\"&&before.to\u003C=pos)return{type:\\\"closeTag\\\",from:pos,context:elt};if((before===null||before===void 0?void 0:before.name)==\\\"Is\\\")return{type:\\\"attrValue\\\",from:pos,context:inTag};if(before)return{type:\\\"attrName\\\",from:pos,context:inTag};return null;}else if(at.name==\\\"StartCloseTag\\\"){return{type:\\\"closeTag\\\",from:pos,context:at.parent};}while(at.parent&&at.to==pos&&!((_a=at.lastChild)===null||_a===void 0?void 0:_a.type.isError))at=at.parent;if(at.name==\\\"Element\\\"||at.name==\\\"Text\\\"||at.name==\\\"Document\\\")return{type:\\\"tag\\\",from:pos,context:at.name==\\\"Element\\\"?at:findParentElement(at)};return null;}class Element$2{constructor(spec,attrs,attrValues){this.attrs=attrs;this.attrValues=attrValues;this.children=[];this.name=spec.name;this.completion=Object.assign(Object.assign({type:\\\"type\\\"},spec.completion||{}),{label:this.name});this.openCompletion=Object.assign(Object.assign({},this.completion),{label:\\\"\u003C\\\"+this.name});this.closeCompletion=Object.assign(Object.assign({},this.completion),{label:\\\"\u003C/\\\"+this.name+\\\">\\\",boost:2});this.closeNameCompletion=Object.assign(Object.assign({},this.completion),{label:this.name+\\\">\\\"});this.text=spec.textContent?spec.textContent.map(s=>({label:s,type:\\\"text\\\"})):[];}}const Identifier=/^[:\\\\-\\\\.\\\\w\\\\u00b7-\\\\uffff]*$/;function attrCompletion(spec){return Object.assign(Object.assign({type:\\\"property\\\"},spec.completion||{}),{label:spec.name});}function valueCompletion(spec){return typeof spec==\\\"string\\\"?{label:`\\\"${spec}\\\"`,type:\\\"constant\\\"}:/^\\\"/.test(spec.label)?spec:Object.assign(Object.assign({},spec),{label:`\\\"${spec.label}\\\"`});}function completeFromSchema(eltSpecs,attrSpecs){let allAttrs=[],globalAttrs=[];let attrValues=Object.create(null);for(let _i288=0,_length288=attrSpecs.length;_i288\u003C_length288;_i288++){let s=attrSpecs[_i288];let completion=attrCompletion(s);allAttrs.push(completion);if(s.global)globalAttrs.push(completion);if(s.values)attrValues[s.name]=s.values.map(valueCompletion);}let allElements=[],topElements=[];let byName=Object.create(null);for(let _i289=0,_length289=eltSpecs.length;_i289\u003C_length289;_i289++){let s=eltSpecs[_i289];let attrs=globalAttrs,attrVals=attrValues;if(s.attributes)attrs=attrs.concat(s.attributes.map(s=>{if(typeof s==\\\"string\\\")return allAttrs.find(a=>a.label==s)||{label:s,type:\\\"property\\\"};if(s.values){if(attrVals==attrValues)attrVals=Object.create(attrVals);attrVals[s.name]=s.values.map(valueCompletion);}return attrCompletion(s);}));let elt=new Element$2(s,attrs,attrVals);byName[elt.name]=elt;allElements.push(elt);if(s.top)topElements.push(elt);}if(!topElements.length)topElements=allElements;for(let i=0;i\u003CallElements.length;i++){let s=eltSpecs[i],elt=allElements[i];if(s.children){for(let _i290=0,_s$children=s.children,_length290=_s$children.length;_i290\u003C_length290;_i290++){let ch=_s$children[_i290];if(byName[ch])elt.children.push(byName[ch]);}}else{elt.children=allElements;}}return cx=>{var _a;let{doc}=cx.state,loc=findLocation(cx.state,cx.pos);if(!loc||loc.type==\\\"tag\\\"&&!cx.explicit)return null;let{type,from,context}=loc;if(type==\\\"openTag\\\"){let children=topElements;let parentName=elementName(doc,context);if(parentName){let parent=byName[parentName];children=(parent===null||parent===void 0?void 0:parent.children)||allElements;}return{from,options:children.map(ch=>ch.completion),validFor:Identifier};}else if(type==\\\"closeTag\\\"){let parentName=elementName(doc,context);return parentName?{from,to:cx.pos+(doc.sliceString(cx.pos,cx.pos+1)==\\\">\\\"?1:0),options:[((_a=byName[parentName])===null||_a===void 0?void 0:_a.closeNameCompletion)||{label:parentName+\\\">\\\",type:\\\"type\\\"}],validFor:Identifier}:null;}else if(type==\\\"attrName\\\"){let parent=byName[tagName(doc,context)];return{from,options:(parent===null||parent===void 0?void 0:parent.attrs)||globalAttrs,validFor:Identifier};}else if(type==\\\"attrValue\\\"){let attr=attrName(doc,context,from);if(!attr)return null;let parent=byName[tagName(doc,context)];let values=((parent===null||parent===void 0?void 0:parent.attrValues)||attrValues)[attr];if(!values||!values.length)return null;return{from,to:cx.pos+(doc.sliceString(cx.pos,cx.pos+1)=='\\\"'?1:0),options:values,validFor:/^\\\"[^\\\"]*\\\"?$/};}else if(type==\\\"tag\\\"){let parentName=elementName(doc,context),parent=byName[parentName];let closing=[],last=context&&context.lastChild;if(parentName&&(!last||last.name!=\\\"CloseTag\\\"||tagName(doc,last)!=parentName))closing.push(parent?parent.closeCompletion:{label:\\\"\u003C/\\\"+parentName+\\\">\\\",type:\\\"type\\\",boost:2});let options=closing.concat(((parent===null||parent===void 0?void 0:parent.children)||(context?allElements:topElements)).map(e=>e.openCompletion));if(context&&(parent===null||parent===void 0?void 0:parent.text.length)){let openTag=context.firstChild;if(openTag.to>cx.pos-20&&!/\\\\S/.test(cx.state.sliceDoc(openTag.to,cx.pos)))options=options.concat(parent.text);}return{from,options,validFor:/^\u003C\\\\/?[:\\\\-\\\\.\\\\w\\\\u00b7-\\\\uffff]*$/};}else{return null;}};}const xmlLanguage=LRLanguage.define({name:\\\"xml\\\",parser:parser$8.configure({props:[indentNodeProp.add({Element(context){let closed=/^\\\\s*\u003C\\\\//.test(context.textAfter);return context.lineIndent(context.node.from)+(closed?0:context.unit);},\\\"OpenTag CloseTag SelfClosingTag\\\"(context){return context.column(context.node.from)+context.unit;}}),foldNodeProp.add({Element(subtree){let first=subtree.firstChild,last=subtree.lastChild;if(!first||first.name!=\\\"OpenTag\\\")return null;return{from:first.to,to:last.name==\\\"CloseTag\\\"?last.from:subtree.to};}}),bracketMatchingHandle.add({\\\"OpenTag CloseTag\\\":node=>node.getChild(\\\"TagName\\\")})]}),languageData:{commentTokens:{block:{open:\\\"\u003C!--\\\",close:\\\"-->\\\"}},indentOnInput:/^\\\\s*\u003C\\\\/$/}});function xml(conf={}){return new LanguageSupport(xmlLanguage,xmlLanguage.data.of({autocomplete:completeFromSchema(conf.elements||[],conf.attributes||[])}));}var _m20=Object.freeze({__proto__:null,completeFromSchema:completeFromSchema,xml:xml,xmlLanguage:xmlLanguage});class CompositeBlock{static create(type,value,from,parentHash,end){let hash=parentHash+(parentHash\u003C\u003C8)+type+(value\u003C\u003C4)|0;return new CompositeBlock(type,value,from,hash,end,[],[]);}constructor(type,value,from,hash,end,children,positions){this.type=type;this.value=value;this.from=from;this.hash=hash;this.end=end;this.children=children;this.positions=positions;this.hashProp=[[NodeProp.contextHash,hash]];}addChild(child,pos){if(child.prop(NodeProp.contextHash)!=this.hash)child=new Tree(child.type,child.children,child.positions,child.length,this.hashProp);this.children.push(child);this.positions.push(pos);}toTree(nodeSet,end=this.end){let last=this.children.length-1;if(last>=0)end=Math.max(end,this.positions[last]+this.children[last].length+this.from);return new Tree(nodeSet.types[this.type],this.children,this.positions,end-this.from).balance({makeTree:(children,positions,length)=>new Tree(NodeType.none,children,positions,length,this.hashProp)});}}var Type;(function(Type){Type[Type[\\\"Document\\\"]=1]=\\\"Document\\\";Type[Type[\\\"CodeBlock\\\"]=2]=\\\"CodeBlock\\\";Type[Type[\\\"FencedCode\\\"]=3]=\\\"FencedCode\\\";Type[Type[\\\"Blockquote\\\"]=4]=\\\"Blockquote\\\";Type[Type[\\\"HorizontalRule\\\"]=5]=\\\"HorizontalRule\\\";Type[Type[\\\"BulletList\\\"]=6]=\\\"BulletList\\\";Type[Type[\\\"OrderedList\\\"]=7]=\\\"OrderedList\\\";Type[Type[\\\"ListItem\\\"]=8]=\\\"ListItem\\\";Type[Type[\\\"ATXHeading1\\\"]=9]=\\\"ATXHeading1\\\";Type[Type[\\\"ATXHeading2\\\"]=10]=\\\"ATXHeading2\\\";Type[Type[\\\"ATXHeading3\\\"]=11]=\\\"ATXHeading3\\\";Type[Type[\\\"ATXHeading4\\\"]=12]=\\\"ATXHeading4\\\";Type[Type[\\\"ATXHeading5\\\"]=13]=\\\"ATXHeading5\\\";Type[Type[\\\"ATXHeading6\\\"]=14]=\\\"ATXHeading6\\\";Type[Type[\\\"SetextHeading1\\\"]=15]=\\\"SetextHeading1\\\";Type[Type[\\\"SetextHeading2\\\"]=16]=\\\"SetextHeading2\\\";Type[Type[\\\"HTMLBlock\\\"]=17]=\\\"HTMLBlock\\\";Type[Type[\\\"LinkReference\\\"]=18]=\\\"LinkReference\\\";Type[Type[\\\"Paragraph\\\"]=19]=\\\"Paragraph\\\";Type[Type[\\\"CommentBlock\\\"]=20]=\\\"CommentBlock\\\";Type[Type[\\\"ProcessingInstructionBlock\\\"]=21]=\\\"ProcessingInstructionBlock\\\";Type[Type[\\\"Escape\\\"]=22]=\\\"Escape\\\";Type[Type[\\\"Entity\\\"]=23]=\\\"Entity\\\";Type[Type[\\\"HardBreak\\\"]=24]=\\\"HardBreak\\\";Type[Type[\\\"Emphasis\\\"]=25]=\\\"Emphasis\\\";Type[Type[\\\"StrongEmphasis\\\"]=26]=\\\"StrongEmphasis\\\";Type[Type[\\\"Link\\\"]=27]=\\\"Link\\\";Type[Type[\\\"Image\\\"]=28]=\\\"Image\\\";Type[Type[\\\"InlineCode\\\"]=29]=\\\"InlineCode\\\";Type[Type[\\\"HTMLTag\\\"]=30]=\\\"HTMLTag\\\";Type[Type[\\\"Comment\\\"]=31]=\\\"Comment\\\";Type[Type[\\\"ProcessingInstruction\\\"]=32]=\\\"ProcessingInstruction\\\";Type[Type[\\\"Autolink\\\"]=33]=\\\"Autolink\\\";Type[Type[\\\"HeaderMark\\\"]=34]=\\\"HeaderMark\\\";Type[Type[\\\"QuoteMark\\\"]=35]=\\\"QuoteMark\\\";Type[Type[\\\"ListMark\\\"]=36]=\\\"ListMark\\\";Type[Type[\\\"LinkMark\\\"]=37]=\\\"LinkMark\\\";Type[Type[\\\"EmphasisMark\\\"]=38]=\\\"EmphasisMark\\\";Type[Type[\\\"CodeMark\\\"]=39]=\\\"CodeMark\\\";Type[Type[\\\"CodeText\\\"]=40]=\\\"CodeText\\\";Type[Type[\\\"CodeInfo\\\"]=41]=\\\"CodeInfo\\\";Type[Type[\\\"LinkTitle\\\"]=42]=\\\"LinkTitle\\\";Type[Type[\\\"LinkLabel\\\"]=43]=\\\"LinkLabel\\\";Type[Type[\\\"URL\\\"]=44]=\\\"URL\\\";})(Type||(Type={}));class LeafBlock{constructor(start,content){this.start=start;this.content=content;this.marks=[];this.parsers=[];}}class Line{constructor(){this.text=\\\"\\\";this.baseIndent=0;this.basePos=0;this.depth=0;this.markers=[];this.pos=0;this.indent=0;this.next=-1;}forward(){if(this.basePos>this.pos)this.forwardInner();}forwardInner(){let newPos=this.skipSpace(this.basePos);this.indent=this.countIndent(newPos,this.pos,this.indent);this.pos=newPos;this.next=newPos==this.text.length?-1:this.text.charCodeAt(newPos);}skipSpace(from){return skipSpace(this.text,from);}reset(text){this.text=text;this.baseIndent=this.basePos=this.pos=this.indent=0;this.forwardInner();this.depth=1;while(this.markers.length)this.markers.pop();}moveBase(to){this.basePos=to;this.baseIndent=this.countIndent(to,this.pos,this.indent);}moveBaseColumn(indent){this.baseIndent=indent;this.basePos=this.findColumn(indent);}addMarker(elt){this.markers.push(elt);}countIndent(to,from=0,indent=0){for(let i=from;i\u003Cto;i++)indent+=this.text.charCodeAt(i)==9?4-indent%4:1;return indent;}findColumn(goal){let i=0;for(let indent=0;i\u003Cthis.text.length&&indent\u003Cgoal;i++)indent+=this.text.charCodeAt(i)==9?4-indent%4:1;return i;}scrub(){if(!this.baseIndent)return this.text;let result=\\\"\\\";for(let i=0;i\u003Cthis.basePos;i++)result+=\\\" \\\";return result+this.text.slice(this.basePos);}}function skipForList(bl,cx,line){if(line.pos==line.text.length||bl!=cx.block&&line.indent>=cx.stack[line.depth+1].value+line.baseIndent)return true;if(line.indent>=line.baseIndent+4)return false;let size=(bl.type==Type.OrderedList?isOrderedList:isBulletList)(line,cx,false);return size>0&&(bl.type!=Type.BulletList||isHorizontalRule(line,cx,false)\u003C0)&&line.text.charCodeAt(line.pos+size-1)==bl.value;}const DefaultSkipMarkup={[Type.Blockquote](bl,cx,line){if(line.next!=62)return false;line.markers.push(elt(Type.QuoteMark,cx.lineStart+line.pos,cx.lineStart+line.pos+1));line.moveBase(line.pos+(space$1(line.text.charCodeAt(line.pos+1))?2:1));bl.end=cx.lineStart+line.text.length;return true;},[Type.ListItem](bl,_cx,line){if(line.indent\u003Cline.baseIndent+bl.value&&line.next>-1)return false;line.moveBaseColumn(line.baseIndent+bl.value);return true;},[Type.OrderedList]:skipForList,[Type.BulletList]:skipForList,[Type.Document](){return true;}};function space$1(ch){return ch==32||ch==9||ch==10||ch==13;}function skipSpace(line,i=0){while(i\u003Cline.length&&space$1(line.charCodeAt(i)))i++;return i;}function skipSpaceBack(line,i,to){while(i>to&&space$1(line.charCodeAt(i-1)))i--;return i;}function isFencedCode(line){if(line.next!=96&&line.next!=126)return-1;let pos=line.pos+1;while(pos\u003Cline.text.length&&line.text.charCodeAt(pos)==line.next)pos++;if(pos\u003Cline.pos+3)return-1;if(line.next==96)for(let i=pos;i\u003Cline.text.length;i++)if(line.text.charCodeAt(i)==96)return-1;return pos;}function isBlockquote(line){return line.next!=62?-1:line.text.charCodeAt(line.pos+1)==32?2:1;}function isHorizontalRule(line,cx,breaking){if(line.next!=42&&line.next!=45&&line.next!=95)return-1;let count=1;for(let pos=line.pos+1;pos\u003Cline.text.length;pos++){let ch=line.text.charCodeAt(pos);if(ch==line.next)count++;else if(!space$1(ch))return-1;}if(breaking&&line.next==45&&isSetextUnderline(line)>-1&&line.depth==cx.stack.length)return-1;return count\u003C3?-1:1;}function inList(cx,type){for(let i=cx.stack.length-1;i>=0;i--)if(cx.stack[i].type==type)return true;return false;}function isBulletList(line,cx,breaking){return(line.next==45||line.next==43||line.next==42)&&(line.pos==line.text.length-1||space$1(line.text.charCodeAt(line.pos+1)))&&(!breaking||inList(cx,Type.BulletList)||line.skipSpace(line.pos+2)\u003Cline.text.length)?1:-1;}function isOrderedList(line,cx,breaking){let pos=line.pos,next=line.next;for(;;){if(next>=48&&next\u003C=57)pos++;else break;if(pos==line.text.length)return-1;next=line.text.charCodeAt(pos);}if(pos==line.pos||pos>line.pos+9||next!=46&&next!=41||pos\u003Cline.text.length-1&&!space$1(line.text.charCodeAt(pos+1))||breaking&&!inList(cx,Type.OrderedList)&&(line.skipSpace(pos+1)==line.text.length||pos>line.pos+1||line.next!=49))return-1;return pos+1-line.pos;}function isAtxHeading(line){if(line.next!=35)return-1;let pos=line.pos+1;while(pos\u003Cline.text.length&&line.text.charCodeAt(pos)==35)pos++;if(pos\u003Cline.text.length&&line.text.charCodeAt(pos)!=32)return-1;let size=pos-line.pos;return size>6?-1:size;}function isSetextUnderline(line){if(line.next!=45&&line.next!=61||line.indent>=line.baseIndent+4)return-1;let pos=line.pos+1;while(pos\u003Cline.text.length&&line.text.charCodeAt(pos)==line.next)pos++;let end=pos;while(pos\u003Cline.text.length&&space$1(line.text.charCodeAt(pos)))pos++;return pos==line.text.length?end:-1;}const EmptyLine=/^[ \\\\t]*$/,CommentEnd=/-->/,ProcessingEnd=/\\\\?>/;const HTMLBlockStyle=[[/^\u003C(?:script|pre|style)(?:\\\\s|>|$)/i,/\u003C\\\\/(?:script|pre|style)>/i],[/^\\\\s*\u003C!--/,CommentEnd],[/^\\\\s*\u003C\\\\?/,ProcessingEnd],[/^\\\\s*\u003C![A-Z]/,/>/],[/^\\\\s*\u003C!\\\\[CDATA\\\\[/,/\\\\]\\\\]>/],[/^\\\\s*\u003C\\\\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\\\s|\\\\/?>|$)/i,EmptyLine],[/^\\\\s*(?:\u003C\\\\/[a-z][\\\\w-]*\\\\s*>|\u003C[a-z][\\\\w-]*(\\\\s+[a-z:_][\\\\w-.]*(?:\\\\s*=\\\\s*(?:[^\\\\s\\\"'=\u003C>`]+|'[^']*'|\\\"[^\\\"]*\\\"))?)*\\\\s*>)\\\\s*$/i,EmptyLine]];function isHTMLBlock(line,_cx,breaking){if(line.next!=60)return-1;let rest=line.text.slice(line.pos);for(let i=0,e=HTMLBlockStyle.length-(breaking?1:0);i\u003Ce;i++)if(HTMLBlockStyle[i][0].test(rest))return i;return-1;}function getListIndent(line,pos){let indentAfter=line.countIndent(pos,line.pos,line.indent);let indented=line.countIndent(line.skipSpace(pos),pos,indentAfter);return indented>=indentAfter+5?indentAfter+1:indented;}function addCodeText(marks,from,to){let last=marks.length-1;if(last>=0&&marks[last].to==from&&marks[last].type==Type.CodeText)marks[last].to=to;else marks.push(elt(Type.CodeText,from,to));}const DefaultBlockParsers={LinkReference:undefined,IndentedCode(cx,line){let base=line.baseIndent+4;if(line.indent\u003Cbase)return false;let start=line.findColumn(base);let from=cx.lineStart+start,to=cx.lineStart+line.text.length;let marks=[],pendingMarks=[];addCodeText(marks,from,to);while(cx.nextLine()&&line.depth>=cx.stack.length){if(line.pos==line.text.length){addCodeText(pendingMarks,cx.lineStart-1,cx.lineStart);for(let _i291=0,_line$markers=line.markers,_length291=_line$markers.length;_i291\u003C_length291;_i291++){let m=_line$markers[_i291];pendingMarks.push(m);}}else if(line.indent\u003Cbase){break;}else{if(pendingMarks.length){for(let _i292=0,_pendingMarks=pendingMarks,_length292=_pendingMarks.length;_i292\u003C_length292;_i292++){let m=_pendingMarks[_i292];if(m.type==Type.CodeText)addCodeText(marks,m.from,m.to);else marks.push(m);}pendingMarks=[];}addCodeText(marks,cx.lineStart-1,cx.lineStart);for(let _i293=0,_line$markers2=line.markers,_length293=_line$markers2.length;_i293\u003C_length293;_i293++){let m=_line$markers2[_i293];marks.push(m);}to=cx.lineStart+line.text.length;let codeStart=cx.lineStart+line.findColumn(line.baseIndent+4);if(codeStart\u003Cto)addCodeText(marks,codeStart,to);}}if(pendingMarks.length){pendingMarks=pendingMarks.filter(m=>m.type!=Type.CodeText);if(pendingMarks.length)line.markers=pendingMarks.concat(line.markers);}cx.addNode(cx.buffer.writeElements(marks,-from).finish(Type.CodeBlock,to-from),from);return true;},FencedCode(cx,line){let fenceEnd=isFencedCode(line);if(fenceEnd\u003C0)return false;let from=cx.lineStart+line.pos,ch=line.next,len=fenceEnd-line.pos;let infoFrom=line.skipSpace(fenceEnd),infoTo=skipSpaceBack(line.text,line.text.length,infoFrom);let marks=[elt(Type.CodeMark,from,from+len)];if(infoFrom\u003CinfoTo)marks.push(elt(Type.CodeInfo,cx.lineStart+infoFrom,cx.lineStart+infoTo));for(let first=true;cx.nextLine()&&line.depth>=cx.stack.length;first=false){let i=line.pos;if(line.indent-line.baseIndent\u003C4)while(i\u003Cline.text.length&&line.text.charCodeAt(i)==ch)i++;if(i-line.pos>=len&&line.skipSpace(i)==line.text.length){for(let _i294=0,_line$markers3=line.markers,_length294=_line$markers3.length;_i294\u003C_length294;_i294++){let m=_line$markers3[_i294];marks.push(m);}marks.push(elt(Type.CodeMark,cx.lineStart+line.pos,cx.lineStart+i));cx.nextLine();break;}else{if(!first)addCodeText(marks,cx.lineStart-1,cx.lineStart);for(let _i295=0,_line$markers4=line.markers,_length295=_line$markers4.length;_i295\u003C_length295;_i295++){let m=_line$markers4[_i295];marks.push(m);}let textStart=cx.lineStart+line.basePos,textEnd=cx.lineStart+line.text.length;if(textStart\u003CtextEnd)addCodeText(marks,textStart,textEnd);}}cx.addNode(cx.buffer.writeElements(marks,-from).finish(Type.FencedCode,cx.prevLineEnd()-from),from);return true;},Blockquote(cx,line){let size=isBlockquote(line);if(size\u003C0)return false;cx.startContext(Type.Blockquote,line.pos);cx.addNode(Type.QuoteMark,cx.lineStart+line.pos,cx.lineStart+line.pos+1);line.moveBase(line.pos+size);return null;},HorizontalRule(cx,line){if(isHorizontalRule(line,cx,false)\u003C0)return false;let from=cx.lineStart+line.pos;cx.nextLine();cx.addNode(Type.HorizontalRule,from);return true;},BulletList(cx,line){let size=isBulletList(line,cx,false);if(size\u003C0)return false;if(cx.block.type!=Type.BulletList)cx.startContext(Type.BulletList,line.basePos,line.next);let newBase=getListIndent(line,line.pos+1);cx.startContext(Type.ListItem,line.basePos,newBase-line.baseIndent);cx.addNode(Type.ListMark,cx.lineStart+line.pos,cx.lineStart+line.pos+size);line.moveBaseColumn(newBase);return null;},OrderedList(cx,line){let size=isOrderedList(line,cx,false);if(size\u003C0)return false;if(cx.block.type!=Type.OrderedList)cx.startContext(Type.OrderedList,line.basePos,line.text.charCodeAt(line.pos+size-1));let newBase=getListIndent(line,line.pos+size);cx.startContext(Type.ListItem,line.basePos,newBase-line.baseIndent);cx.addNode(Type.ListMark,cx.lineStart+line.pos,cx.lineStart+line.pos+size);line.moveBaseColumn(newBase);return null;},ATXHeading(cx,line){let size=isAtxHeading(line);if(size\u003C0)return false;let off=line.pos,from=cx.lineStart+off;let endOfSpace=skipSpaceBack(line.text,line.text.length,off),after=endOfSpace;while(after>off&&line.text.charCodeAt(after-1)==line.next)after--;if(after==endOfSpace||after==off||!space$1(line.text.charCodeAt(after-1)))after=line.text.length;let buf=cx.buffer.write(Type.HeaderMark,0,size).writeElements(cx.parser.parseInline(line.text.slice(off+size+1,after),from+size+1),-from);if(after\u003Cline.text.length)buf.write(Type.HeaderMark,after-off,endOfSpace-off);let node=buf.finish(Type.ATXHeading1-1+size,line.text.length-off);cx.nextLine();cx.addNode(node,from);return true;},HTMLBlock(cx,line){let type=isHTMLBlock(line,cx,false);if(type\u003C0)return false;let from=cx.lineStart+line.pos,end=HTMLBlockStyle[type][1];let marks=[],trailing=end!=EmptyLine;while(!end.test(line.text)&&cx.nextLine()){if(line.depth\u003Ccx.stack.length){trailing=false;break;}for(let _i296=0,_line$markers5=line.markers,_length296=_line$markers5.length;_i296\u003C_length296;_i296++){let m=_line$markers5[_i296];marks.push(m);}}if(trailing)cx.nextLine();let nodeType=end==CommentEnd?Type.CommentBlock:end==ProcessingEnd?Type.ProcessingInstructionBlock:Type.HTMLBlock;let to=cx.prevLineEnd();cx.addNode(cx.buffer.writeElements(marks,-from).finish(nodeType,to-from),from);return true;},SetextHeading:undefined};class LinkReferenceParser{constructor(leaf){this.stage=0;this.elts=[];this.pos=0;this.start=leaf.start;this.advance(leaf.content);}nextLine(cx,line,leaf){if(this.stage==-1)return false;let content=leaf.content+\\\"\\\\n\\\"+line.scrub();let finish=this.advance(content);if(finish>-1&&finish\u003Ccontent.length)return this.complete(cx,leaf,finish);return false;}finish(cx,leaf){if((this.stage==2||this.stage==3)&&skipSpace(leaf.content,this.pos)==leaf.content.length)return this.complete(cx,leaf,leaf.content.length);return false;}complete(cx,leaf,len){cx.addLeafElement(leaf,elt(Type.LinkReference,this.start,this.start+len,this.elts));return true;}nextStage(elt){if(elt){this.pos=elt.to-this.start;this.elts.push(elt);this.stage++;return true;}if(elt===false)this.stage=-1;return false;}advance(content){for(;;){if(this.stage==-1){return-1;}else if(this.stage==0){if(!this.nextStage(parseLinkLabel(content,this.pos,this.start,true)))return-1;if(content.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(elt(Type.LinkMark,this.pos+this.start,this.pos+this.start+1));this.pos++;}else if(this.stage==1){if(!this.nextStage(parseURL(content,skipSpace(content,this.pos),this.start)))return-1;}else if(this.stage==2){let skip=skipSpace(content,this.pos),end=0;if(skip>this.pos){let title=parseLinkTitle(content,skip,this.start);if(title){let titleEnd=lineEnd(content,title.to-this.start);if(titleEnd>0){this.nextStage(title);end=titleEnd;}}}if(!end)end=lineEnd(content,this.pos);return end>0&&end\u003Ccontent.length?end:-1;}else{return lineEnd(content,this.pos);}}}}function lineEnd(text,pos){for(;pos\u003Ctext.length;pos++){let next=text.charCodeAt(pos);if(next==10)break;if(!space$1(next))return-1;}return pos;}class SetextHeadingParser{nextLine(cx,line,leaf){let underline=line.depth\u003Ccx.stack.length?-1:isSetextUnderline(line);let next=line.next;if(underline\u003C0)return false;let underlineMark=elt(Type.HeaderMark,cx.lineStart+line.pos,cx.lineStart+underline);cx.nextLine();cx.addLeafElement(leaf,elt(next==61?Type.SetextHeading1:Type.SetextHeading2,leaf.start,cx.prevLineEnd(),[...cx.parser.parseInline(leaf.content,leaf.start),underlineMark]));return true;}finish(){return false;}}const DefaultLeafBlocks={LinkReference(_,leaf){return leaf.content.charCodeAt(0)==91?new LinkReferenceParser(leaf):null;},SetextHeading(){return new SetextHeadingParser();}};const DefaultEndLeaf=[(_,line)=>isAtxHeading(line)>=0,(_,line)=>isFencedCode(line)>=0,(_,line)=>isBlockquote(line)>=0,(p,line)=>isBulletList(line,p,true)>=0,(p,line)=>isOrderedList(line,p,true)>=0,(p,line)=>isHorizontalRule(line,p,true)>=0,(p,line)=>isHTMLBlock(line,p,true)>=0];const scanLineResult={text:\\\"\\\",end:0};class BlockContext{constructor(parser,input,fragments,ranges){this.parser=parser;this.input=input;this.ranges=ranges;this.line=new Line();this.atEnd=false;this.reusePlaceholders=new Map();this.stoppedAt=null;this.rangeI=0;this.to=ranges[ranges.length-1].to;this.lineStart=this.absoluteLineStart=this.absoluteLineEnd=ranges[0].from;this.block=CompositeBlock.create(Type.Document,0,this.lineStart,0,0);this.stack=[this.block];this.fragments=fragments.length?new FragmentCursor(fragments,input):null;this.readLine();}get parsedPos(){return this.absoluteLineStart;}advance(){if(this.stoppedAt!=null&&this.absoluteLineStart>this.stoppedAt)return this.finish();let{line}=this;for(;;){for(let markI=0;;){let next=line.depth\u003Cthis.stack.length?this.stack[this.stack.length-1]:null;while(markI\u003Cline.markers.length&&(!next||line.markers[markI].from\u003Cnext.end)){let mark=line.markers[markI++];this.addNode(mark.type,mark.from,mark.to);}if(!next)break;this.finishContext();}if(line.pos\u003Cline.text.length)break;if(!this.nextLine())return this.finish();}if(this.fragments&&this.reuseFragment(line.basePos))return null;start:for(;;){for(let _i297=0,_this$parser$blockPar=this.parser.blockParsers,_length297=_this$parser$blockPar.length;_i297\u003C_length297;_i297++){let type=_this$parser$blockPar[_i297];if(type){let result=type(this,line);if(result!=false){if(result==true)return null;line.forward();continue start;}}}break;}let leaf=new LeafBlock(this.lineStart+line.pos,line.text.slice(line.pos));for(let _i298=0,_this$parser$leafBloc=this.parser.leafBlockParsers,_length298=_this$parser$leafBloc.length;_i298\u003C_length298;_i298++){let parse=_this$parser$leafBloc[_i298];if(parse){let parser=parse(this,leaf);if(parser)leaf.parsers.push(parser);}}lines:while(this.nextLine()){if(line.pos==line.text.length)break;if(line.indent\u003Cline.baseIndent+4){for(let _i299=0,_this$parser$endLeafB=this.parser.endLeafBlock,_length299=_this$parser$endLeafB.length;_i299\u003C_length299;_i299++){let stop=_this$parser$endLeafB[_i299];if(stop(this,line,leaf))break lines;}}for(let _i300=0,_leaf$parsers=leaf.parsers,_length300=_leaf$parsers.length;_i300\u003C_length300;_i300++){let parser=_leaf$parsers[_i300];if(parser.nextLine(this,line,leaf))return null;}leaf.content+=\\\"\\\\n\\\"+line.scrub();for(let _i301=0,_line$markers6=line.markers,_length301=_line$markers6.length;_i301\u003C_length301;_i301++){let m=_line$markers6[_i301];leaf.marks.push(m);}}this.finishLeaf(leaf);return null;}stopAt(pos){if(this.stoppedAt!=null&&this.stoppedAt\u003Cpos)throw new RangeError(\\\"Can't move stoppedAt forward\\\");this.stoppedAt=pos;}reuseFragment(start){if(!this.fragments.moveTo(this.absoluteLineStart+start,this.absoluteLineStart)||!this.fragments.matches(this.block.hash))return false;let taken=this.fragments.takeNodes(this);if(!taken)return false;this.absoluteLineStart+=taken;this.lineStart=toRelative(this.absoluteLineStart,this.ranges);this.moveRangeI();if(this.absoluteLineStart\u003Cthis.to){this.lineStart++;this.absoluteLineStart++;this.readLine();}else{this.atEnd=true;this.readLine();}return true;}get depth(){return this.stack.length;}parentType(depth=this.depth-1){return this.parser.nodeSet.types[this.stack[depth].type];}nextLine(){this.lineStart+=this.line.text.length;if(this.absoluteLineEnd>=this.to){this.absoluteLineStart=this.absoluteLineEnd;this.atEnd=true;this.readLine();return false;}else{this.lineStart++;this.absoluteLineStart=this.absoluteLineEnd+1;this.moveRangeI();this.readLine();return true;}}moveRangeI(){while(this.rangeI\u003Cthis.ranges.length-1&&this.absoluteLineStart>=this.ranges[this.rangeI].to){this.rangeI++;this.absoluteLineStart=Math.max(this.absoluteLineStart,this.ranges[this.rangeI].from);}}scanLine(start){let r=scanLineResult;r.end=start;if(start>=this.to){r.text=\\\"\\\";}else{r.text=this.lineChunkAt(start);r.end+=r.text.length;if(this.ranges.length>1){let textOffset=this.absoluteLineStart,rangeI=this.rangeI;while(this.ranges[rangeI].to\u003Cr.end){rangeI++;let nextFrom=this.ranges[rangeI].from;let after=this.lineChunkAt(nextFrom);r.end=nextFrom+after.length;r.text=r.text.slice(0,this.ranges[rangeI-1].to-textOffset)+after;textOffset=r.end-r.text.length;}}}return r;}readLine(){let{line}=this,{text,end}=this.scanLine(this.absoluteLineStart);this.absoluteLineEnd=end;line.reset(text);for(;line.depth\u003Cthis.stack.length;line.depth++){let cx=this.stack[line.depth],handler=this.parser.skipContextMarkup[cx.type];if(!handler)throw new Error(\\\"Unhandled block context \\\"+Type[cx.type]);if(!handler(cx,this,line))break;line.forward();}}lineChunkAt(pos){let next=this.input.chunk(pos),text;if(!this.input.lineChunks){let eol=next.indexOf(\\\"\\\\n\\\");text=eol\u003C0?next:next.slice(0,eol);}else{text=next==\\\"\\\\n\\\"?\\\"\\\":next;}return pos+text.length>this.to?text.slice(0,this.to-pos):text;}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1;}startContext(type,start,value=0){this.block=CompositeBlock.create(type,value,this.lineStart+start,this.block.hash,this.lineStart+this.line.text.length);this.stack.push(this.block);}startComposite(type,start,value=0){this.startContext(this.parser.getNodeType(type),start,value);}addNode(block,from,to){if(typeof block==\\\"number\\\")block=new Tree(this.parser.nodeSet.types[block],none,none,(to!==null&&to!==void 0?to:this.prevLineEnd())-from);this.block.addChild(block,from-this.block.from);}addElement(elt){this.block.addChild(elt.toTree(this.parser.nodeSet),elt.from-this.block.from);}addLeafElement(leaf,elt){this.addNode(this.buffer.writeElements(injectMarks(elt.children,leaf.marks),-elt.from).finish(elt.type,elt.to-elt.from),elt.from);}finishContext(){let cx=this.stack.pop();let top=this.stack[this.stack.length-1];top.addChild(cx.toTree(this.parser.nodeSet),cx.from-top.from);this.block=top;}finish(){while(this.stack.length>1)this.finishContext();return this.addGaps(this.block.toTree(this.parser.nodeSet,this.lineStart));}addGaps(tree){return this.ranges.length>1?injectGaps(this.ranges,0,tree.topNode,this.ranges[0].from,this.reusePlaceholders):tree;}finishLeaf(leaf){for(let _i302=0,_leaf$parsers2=leaf.parsers,_length302=_leaf$parsers2.length;_i302\u003C_length302;_i302++){let parser=_leaf$parsers2[_i302];if(parser.finish(this,leaf))return;}let inline=injectMarks(this.parser.parseInline(leaf.content,leaf.start),leaf.marks);this.addNode(this.buffer.writeElements(inline,-leaf.start).finish(Type.Paragraph,leaf.content.length),leaf.start);}elt(type,from,to,children){if(typeof type==\\\"string\\\")return elt(this.parser.getNodeType(type),from,to,children);return new TreeElement(type,from);}get buffer(){return new Buffer(this.parser.nodeSet);}}function injectGaps(ranges,rangeI,tree,offset,dummies){let rangeEnd=ranges[rangeI].to;let children=[],positions=[],start=tree.from+offset;function movePastNext(upto,inclusive){while(inclusive?upto>=rangeEnd:upto>rangeEnd){let size=ranges[rangeI+1].from-rangeEnd;offset+=size;upto+=size;rangeI++;rangeEnd=ranges[rangeI].to;}}for(let ch=tree.firstChild;ch;ch=ch.nextSibling){movePastNext(ch.from+offset,true);let from=ch.from+offset,node,reuse=dummies.get(ch.tree);if(reuse){node=reuse;}else if(ch.to+offset>rangeEnd){node=injectGaps(ranges,rangeI,ch,offset,dummies);movePastNext(ch.to+offset,false);}else{node=ch.toTree();}children.push(node);positions.push(from-start);}movePastNext(tree.to+offset,false);return new Tree(tree.type,children,positions,tree.to+offset-start,tree.tree?tree.tree.propValues:undefined);}class MarkdownParser extends Parser{constructor(nodeSet,blockParsers,leafBlockParsers,blockNames,endLeafBlock,skipContextMarkup,inlineParsers,inlineNames,wrappers){super();this.nodeSet=nodeSet;this.blockParsers=blockParsers;this.leafBlockParsers=leafBlockParsers;this.blockNames=blockNames;this.endLeafBlock=endLeafBlock;this.skipContextMarkup=skipContextMarkup;this.inlineParsers=inlineParsers;this.inlineNames=inlineNames;this.wrappers=wrappers;this.nodeTypes=Object.create(null);for(let _i303=0,_nodeSet$types=nodeSet.types,_length303=_nodeSet$types.length;_i303\u003C_length303;_i303++){let t=_nodeSet$types[_i303];this.nodeTypes[t.name]=t.id;}}createParse(input,fragments,ranges){let parse=new BlockContext(this,input,fragments,ranges);for(let _i304=0,_this$wrappers2=this.wrappers,_length304=_this$wrappers2.length;_i304\u003C_length304;_i304++){let w=_this$wrappers2[_i304];parse=w(parse,input,fragments,ranges);}return parse;}configure(spec){let config=resolveConfig(spec);if(!config)return this;let{nodeSet,skipContextMarkup}=this;let blockParsers=this.blockParsers.slice(),leafBlockParsers=this.leafBlockParsers.slice(),blockNames=this.blockNames.slice(),inlineParsers=this.inlineParsers.slice(),inlineNames=this.inlineNames.slice(),endLeafBlock=this.endLeafBlock.slice(),wrappers=this.wrappers;if(nonEmpty(config.defineNodes)){skipContextMarkup=Object.assign({},skipContextMarkup);let nodeTypes=nodeSet.types.slice(),styles;for(let _i305=0,_config$defineNodes=config.defineNodes,_length305=_config$defineNodes.length;_i305\u003C_length305;_i305++){let s=_config$defineNodes[_i305];let{name,block,composite,style}=typeof s==\\\"string\\\"?{name:s}:s;if(nodeTypes.some(t=>t.name==name))continue;if(composite)skipContextMarkup[nodeTypes.length]=(bl,cx,line)=>composite(cx,line,bl.value);let id=nodeTypes.length;let group=composite?[\\\"Block\\\",\\\"BlockContext\\\"]:!block?undefined:id>=Type.ATXHeading1&&id\u003C=Type.SetextHeading2?[\\\"Block\\\",\\\"LeafBlock\\\",\\\"Heading\\\"]:[\\\"Block\\\",\\\"LeafBlock\\\"];nodeTypes.push(NodeType.define({id,name,props:group&&[[NodeProp.group,group]]}));if(style){if(!styles)styles={};if(Array.isArray(style)||style instanceof Tag)styles[name]=style;else Object.assign(styles,style);}}nodeSet=new NodeSet(nodeTypes);if(styles)nodeSet=nodeSet.extend(styleTags(styles));}if(nonEmpty(config.props))nodeSet=nodeSet.extend(...config.props);if(nonEmpty(config.remove)){for(let _i306=0,_config$remove=config.remove,_length306=_config$remove.length;_i306\u003C_length306;_i306++){let rm=_config$remove[_i306];let block=this.blockNames.indexOf(rm),inline=this.inlineNames.indexOf(rm);if(block>-1)blockParsers[block]=leafBlockParsers[block]=undefined;if(inline>-1)inlineParsers[inline]=undefined;}}if(nonEmpty(config.parseBlock)){for(let _i307=0,_config$parseBlock=config.parseBlock,_length307=_config$parseBlock.length;_i307\u003C_length307;_i307++){let spec=_config$parseBlock[_i307];let found=blockNames.indexOf(spec.name);if(found>-1){blockParsers[found]=spec.parse;leafBlockParsers[found]=spec.leaf;}else{let pos=spec.before?findName(blockNames,spec.before):spec.after?findName(blockNames,spec.after)+1:blockNames.length-1;blockParsers.splice(pos,0,spec.parse);leafBlockParsers.splice(pos,0,spec.leaf);blockNames.splice(pos,0,spec.name);}if(spec.endLeaf)endLeafBlock.push(spec.endLeaf);}}if(nonEmpty(config.parseInline)){for(let _i308=0,_config$parseInline=config.parseInline,_length308=_config$parseInline.length;_i308\u003C_length308;_i308++){let spec=_config$parseInline[_i308];let found=inlineNames.indexOf(spec.name);if(found>-1){inlineParsers[found]=spec.parse;}else{let pos=spec.before?findName(inlineNames,spec.before):spec.after?findName(inlineNames,spec.after)+1:inlineNames.length-1;inlineParsers.splice(pos,0,spec.parse);inlineNames.splice(pos,0,spec.name);}}}if(config.wrap)wrappers=wrappers.concat(config.wrap);return new MarkdownParser(nodeSet,blockParsers,leafBlockParsers,blockNames,endLeafBlock,skipContextMarkup,inlineParsers,inlineNames,wrappers);}getNodeType(name){let found=this.nodeTypes[name];if(found==null)throw new RangeError(`Unknown node type '${name}'`);return found;}parseInline(text,offset){let cx=new InlineContext(this,text,offset);outer:for(let pos=offset;pos\u003Ccx.end;){let next=cx.char(pos);for(let _i309=0,_this$inlineParsers=this.inlineParsers,_length309=_this$inlineParsers.length;_i309\u003C_length309;_i309++){let token=_this$inlineParsers[_i309];if(token){let result=token(cx,next,pos);if(result>=0){pos=result;continue outer;}}}pos++;}return cx.resolveMarkers(0);}}function nonEmpty(a){return a!=null&&a.length>0;}function resolveConfig(spec){if(!Array.isArray(spec))return spec;if(spec.length==0)return null;let conf=resolveConfig(spec[0]);if(spec.length==1)return conf;let rest=resolveConfig(spec.slice(1));if(!rest||!conf)return conf||rest;let conc=(a,b)=>(a||none).concat(b||none);let wrapA=conf.wrap,wrapB=rest.wrap;return{props:conc(conf.props,rest.props),defineNodes:conc(conf.defineNodes,rest.defineNodes),parseBlock:conc(conf.parseBlock,rest.parseBlock),parseInline:conc(conf.parseInline,rest.parseInline),remove:conc(conf.remove,rest.remove),wrap:!wrapA?wrapB:!wrapB?wrapA:(inner,input,fragments,ranges)=>wrapA(wrapB(inner,input,fragments,ranges),input,fragments,ranges)};}function findName(names,name){let found=names.indexOf(name);if(found\u003C0)throw new RangeError(`Position specified relative to unknown parser ${name}`);return found;}let nodeTypes=[NodeType.none];for(let i=1,name;name=Type[i];i++){nodeTypes[i]=NodeType.define({id:i,name,props:i>=Type.Escape?[]:[[NodeProp.group,i in DefaultSkipMarkup?[\\\"Block\\\",\\\"BlockContext\\\"]:[\\\"Block\\\",\\\"LeafBlock\\\"]]],top:name==\\\"Document\\\"});}const none=[];class Buffer{constructor(nodeSet){this.nodeSet=nodeSet;this.content=[];this.nodes=[];}write(type,from,to,children=0){this.content.push(type,from,to,4+children*4);return this;}writeElements(elts,offset=0){for(let _i310=0,_length310=elts.length;_i310\u003C_length310;_i310++){let e=elts[_i310];e.writeTo(this,offset);}return this;}finish(type,length){return Tree.build({buffer:this.content,nodeSet:this.nodeSet,reused:this.nodes,topID:type,length});}}class Element$1{constructor(type,from,to,children=none){this.type=type;this.from=from;this.to=to;this.children=children;}writeTo(buf,offset){let startOff=buf.content.length;buf.writeElements(this.children,offset);buf.content.push(this.type,this.from+offset,this.to+offset,buf.content.length+4-startOff);}toTree(nodeSet){return new Buffer(nodeSet).writeElements(this.children,-this.from).finish(this.type,this.to-this.from);}}class TreeElement{constructor(tree,from){this.tree=tree;this.from=from;}get to(){return this.from+this.tree.length;}get type(){return this.tree.type.id;}get children(){return none;}writeTo(buf,offset){buf.nodes.push(this.tree);buf.content.push(buf.nodes.length-1,this.from+offset,this.to+offset,-1);}toTree(){return this.tree;}}function elt(type,from,to,children){return new Element$1(type,from,to,children);}const EmphasisUnderscore={resolve:\\\"Emphasis\\\",mark:\\\"EmphasisMark\\\"};const EmphasisAsterisk={resolve:\\\"Emphasis\\\",mark:\\\"EmphasisMark\\\"};const LinkStart={},ImageStart={};class InlineDelimiter{constructor(type,from,to,side){this.type=type;this.from=from;this.to=to;this.side=side;}}const Escapable=\\\"!\\\\\\\"#$%&'()*+,-./:;\u003C=>?@[\\\\\\\\]^_`{|}~\\\";let Punctuation=/[!\\\"#$%&'()*+,\\\\-.\\\\/:;\u003C=>?@\\\\[\\\\\\\\\\\\]^_`{|}~\\\\xA1\\\\u2010-\\\\u2027]/;try{Punctuation=new RegExp(\\\"[\\\\\\\\p{Pc}|\\\\\\\\p{Pd}|\\\\\\\\p{Pe}|\\\\\\\\p{Pf}|\\\\\\\\p{Pi}|\\\\\\\\p{Po}|\\\\\\\\p{Ps}]\\\",\\\"u\\\");}catch(_){}const DefaultInline={Escape(cx,next,start){if(next!=92||start==cx.end-1)return-1;let escaped=cx.char(start+1);for(let i=0;i\u003CEscapable.length;i++)if(Escapable.charCodeAt(i)==escaped)return cx.append(elt(Type.Escape,start,start+2));return-1;},Entity(cx,next,start){if(next!=38)return-1;let m=/^(?:#\\\\d+|#x[a-f\\\\d]+|\\\\w+);/i.exec(cx.slice(start+1,start+31));return m?cx.append(elt(Type.Entity,start,start+1+m[0].length)):-1;},InlineCode(cx,next,start){if(next!=96||start&&cx.char(start-1)==96)return-1;let pos=start+1;while(pos\u003Ccx.end&&cx.char(pos)==96)pos++;let size=pos-start,curSize=0;for(;pos\u003Ccx.end;pos++){if(cx.char(pos)==96){curSize++;if(curSize==size&&cx.char(pos+1)!=96)return cx.append(elt(Type.InlineCode,start,pos+1,[elt(Type.CodeMark,start,start+size),elt(Type.CodeMark,pos+1-size,pos+1)]));}else{curSize=0;}}return-1;},HTMLTag(cx,next,start){if(next!=60||start==cx.end-1)return-1;let after=cx.slice(start+1,cx.end);let url=/^(?:[a-z][-\\\\w+.]+:[^\\\\s>]+|[a-z\\\\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\\\\d](?:[a-z\\\\d-]{0,61}[a-z\\\\d])?(?:\\\\.[a-z\\\\d](?:[a-z\\\\d-]{0,61}[a-z\\\\d])?)*)>/i.exec(after);if(url){return cx.append(elt(Type.Autolink,start,start+1+url[0].length,[elt(Type.LinkMark,start,start+1),elt(Type.URL,start+1,start+url[0].length),elt(Type.LinkMark,start+url[0].length,start+1+url[0].length)]));}let comment=/^!--[^>](?:-[^-]|[^-])*?-->/i.exec(after);if(comment)return cx.append(elt(Type.Comment,start,start+1+comment[0].length));let procInst=/^\\\\?[^]*?\\\\?>/.exec(after);if(procInst)return cx.append(elt(Type.ProcessingInstruction,start,start+1+procInst[0].length));let m=/^(?:![A-Z][^]*?>|!\\\\[CDATA\\\\[[^]*?\\\\]\\\\]>|\\\\/\\\\s*[a-zA-Z][\\\\w-]*\\\\s*>|\\\\s*[a-zA-Z][\\\\w-]*(\\\\s+[a-zA-Z:_][\\\\w-.:]*(?:\\\\s*=\\\\s*(?:[^\\\\s\\\"'=\u003C>`]+|'[^']*'|\\\"[^\\\"]*\\\"))?)*\\\\s*(\\\\/\\\\s*)?>)/.exec(after);if(!m)return-1;return cx.append(elt(Type.HTMLTag,start,start+1+m[0].length));},Emphasis(cx,next,start){if(next!=95&&next!=42)return-1;let pos=start+1;while(cx.char(pos)==next)pos++;let before=cx.slice(start-1,start),after=cx.slice(pos,pos+1);let pBefore=Punctuation.test(before),pAfter=Punctuation.test(after);let sBefore=/\\\\s|^$/.test(before),sAfter=/\\\\s|^$/.test(after);let leftFlanking=!sAfter&&(!pAfter||sBefore||pBefore);let rightFlanking=!sBefore&&(!pBefore||sAfter||pAfter);let canOpen=leftFlanking&&(next==42||!rightFlanking||pBefore);let canClose=rightFlanking&&(next==42||!leftFlanking||pAfter);return cx.append(new InlineDelimiter(next==95?EmphasisUnderscore:EmphasisAsterisk,start,pos,(canOpen?1:0)|(canClose?2:0)));},HardBreak(cx,next,start){if(next==92&&cx.char(start+1)==10)return cx.append(elt(Type.HardBreak,start,start+2));if(next==32){let pos=start+1;while(cx.char(pos)==32)pos++;if(cx.char(pos)==10&&pos>=start+2)return cx.append(elt(Type.HardBreak,start,pos+1));}return-1;},Link(cx,next,start){return next==91?cx.append(new InlineDelimiter(LinkStart,start,start+1,1)):-1;},Image(cx,next,start){return next==33&&cx.char(start+1)==91?cx.append(new InlineDelimiter(ImageStart,start,start+2,1)):-1;},LinkEnd(cx,next,start){if(next!=93)return-1;for(let i=cx.parts.length-1;i>=0;i--){let part=cx.parts[i];if(part instanceof InlineDelimiter&&(part.type==LinkStart||part.type==ImageStart)){if(!part.side||cx.skipSpace(part.to)==start&&!/[(\\\\[]/.test(cx.slice(start+1,start+2))){cx.parts[i]=null;return-1;}let content=cx.takeContent(i);let link=cx.parts[i]=finishLink(cx,content,part.type==LinkStart?Type.Link:Type.Image,part.from,start+1);if(part.type==LinkStart)for(let j=0;j\u003Ci;j++){let p=cx.parts[j];if(p instanceof InlineDelimiter&&p.type==LinkStart)p.side=0;}return link.to;}}return-1;}};function finishLink(cx,content,type,start,startPos){let{text}=cx,next=cx.char(startPos),endPos=startPos;content.unshift(elt(Type.LinkMark,start,start+(type==Type.Image?2:1)));content.push(elt(Type.LinkMark,startPos-1,startPos));if(next==40){let pos=cx.skipSpace(startPos+1);let dest=parseURL(text,pos-cx.offset,cx.offset),title;if(dest){pos=cx.skipSpace(dest.to);if(pos!=dest.to){title=parseLinkTitle(text,pos-cx.offset,cx.offset);if(title)pos=cx.skipSpace(title.to);}}if(cx.char(pos)==41){content.push(elt(Type.LinkMark,startPos,startPos+1));endPos=pos+1;if(dest)content.push(dest);if(title)content.push(title);content.push(elt(Type.LinkMark,pos,endPos));}}else if(next==91){let label=parseLinkLabel(text,startPos-cx.offset,cx.offset,false);if(label){content.push(label);endPos=label.to;}}return elt(type,start,endPos,content);}function parseURL(text,start,offset){let next=text.charCodeAt(start);if(next==60){for(let pos=start+1;pos\u003Ctext.length;pos++){let ch=text.charCodeAt(pos);if(ch==62)return elt(Type.URL,start+offset,pos+1+offset);if(ch==60||ch==10)return false;}return null;}else{let depth=0,pos=start;for(let escaped=false;pos\u003Ctext.length;pos++){let ch=text.charCodeAt(pos);if(space$1(ch)){break;}else if(escaped){escaped=false;}else if(ch==40){depth++;}else if(ch==41){if(!depth)break;depth--;}else if(ch==92){escaped=true;}}return pos>start?elt(Type.URL,start+offset,pos+offset):pos==text.length?null:false;}}function parseLinkTitle(text,start,offset){let next=text.charCodeAt(start);if(next!=39&&next!=34&&next!=40)return false;let end=next==40?41:next;for(let pos=start+1,escaped=false;pos\u003Ctext.length;pos++){let ch=text.charCodeAt(pos);if(escaped)escaped=false;else if(ch==end)return elt(Type.LinkTitle,start+offset,pos+1+offset);else if(ch==92)escaped=true;}return null;}function parseLinkLabel(text,start,offset,requireNonWS){for(let escaped=false,pos=start+1,end=Math.min(text.length,pos+999);pos\u003Cend;pos++){let ch=text.charCodeAt(pos);if(escaped)escaped=false;else if(ch==93)return requireNonWS?false:elt(Type.LinkLabel,start+offset,pos+1+offset);else{if(requireNonWS&&!space$1(ch))requireNonWS=false;if(ch==91)return false;else if(ch==92)escaped=true;}}return null;}class InlineContext{constructor(parser,text,offset){this.parser=parser;this.text=text;this.offset=offset;this.parts=[];}char(pos){return pos>=this.end?-1:this.text.charCodeAt(pos-this.offset);}get end(){return this.offset+this.text.length;}slice(from,to){return this.text.slice(from-this.offset,to-this.offset);}append(elt){this.parts.push(elt);return elt.to;}addDelimiter(type,from,to,open,close){return this.append(new InlineDelimiter(type,from,to,(open?1:0)|(close?2:0)));}addElement(elt){return this.append(elt);}resolveMarkers(from){for(let i=from;i\u003Cthis.parts.length;i++){let close=this.parts[i];if(!(close instanceof InlineDelimiter&&close.type.resolve&&close.side&2))continue;let emp=close.type==EmphasisUnderscore||close.type==EmphasisAsterisk;let closeSize=close.to-close.from;let open,j=i-1;for(;j>=from;j--){let part=this.parts[j];if(part instanceof InlineDelimiter&&part.side&1&&part.type==close.type&&!(emp&&(close.side&1||part.side&2)&&(part.to-part.from+closeSize)%3==0&&((part.to-part.from)%3||closeSize%3))){open=part;break;}}if(!open)continue;let type=close.type.resolve,content=[];let start=open.from,end=close.to;if(emp){let size=Math.min(2,open.to-open.from,closeSize);start=open.to-size;end=close.from+size;type=size==1?\\\"Emphasis\\\":\\\"StrongEmphasis\\\";}if(open.type.mark)content.push(this.elt(open.type.mark,start,open.to));for(let k=j+1;k\u003Ci;k++){if(this.parts[k]instanceof Element$1)content.push(this.parts[k]);this.parts[k]=null;}if(close.type.mark)content.push(this.elt(close.type.mark,close.from,end));let element=this.elt(type,start,end,content);this.parts[j]=emp&&open.from!=start?new InlineDelimiter(open.type,open.from,start,open.side):null;let keep=this.parts[i]=emp&&close.to!=end?new InlineDelimiter(close.type,end,close.to,close.side):null;if(keep)this.parts.splice(i,0,element);else this.parts[i]=element;}let result=[];for(let i=from;i\u003Cthis.parts.length;i++){let part=this.parts[i];if(part instanceof Element$1)result.push(part);}return result;}findOpeningDelimiter(type){for(let i=this.parts.length-1;i>=0;i--){let part=this.parts[i];if(part instanceof InlineDelimiter&&part.type==type)return i;}return null;}takeContent(startIndex){let content=this.resolveMarkers(startIndex);this.parts.length=startIndex;return content;}skipSpace(from){return skipSpace(this.text,from-this.offset)+this.offset;}elt(type,from,to,children){if(typeof type==\\\"string\\\")return elt(this.parser.getNodeType(type),from,to,children);return new TreeElement(type,from);}}function injectMarks(elements,marks){if(!marks.length)return elements;if(!elements.length)return marks;let elts=elements.slice(),eI=0;for(let _i311=0,_length311=marks.length;_i311\u003C_length311;_i311++){let mark=marks[_i311];while(eI\u003Celts.length&&elts[eI].to\u003Cmark.to)eI++;if(eI\u003Celts.length&&elts[eI].from\u003Cmark.from){let e=elts[eI];if(e instanceof Element$1)elts[eI]=new Element$1(e.type,e.from,e.to,injectMarks(e.children,[mark]));}else{elts.splice(eI++,0,mark);}}return elts;}const NotLast=[Type.CodeBlock,Type.ListItem,Type.OrderedList,Type.BulletList];class FragmentCursor{constructor(fragments,input){this.fragments=fragments;this.input=input;this.i=0;this.fragment=null;this.fragmentEnd=-1;this.cursor=null;if(fragments.length)this.fragment=fragments[this.i++];}nextFragment(){this.fragment=this.i\u003Cthis.fragments.length?this.fragments[this.i++]:null;this.cursor=null;this.fragmentEnd=-1;}moveTo(pos,lineStart){while(this.fragment&&this.fragment.to\u003C=pos)this.nextFragment();if(!this.fragment||this.fragment.from>(pos?pos-1:0))return false;if(this.fragmentEnd\u003C0){let end=this.fragment.to;while(end>0&&this.input.read(end-1,end)!=\\\"\\\\n\\\")end--;this.fragmentEnd=end?end-1:0;}let c=this.cursor;if(!c){c=this.cursor=this.fragment.tree.cursor();c.firstChild();}let rPos=pos+this.fragment.offset;while(c.to\u003C=rPos)if(!c.parent())return false;for(;;){if(c.from>=rPos)return this.fragment.from\u003C=lineStart;if(!c.childAfter(rPos))return false;}}matches(hash){let tree=this.cursor.tree;return tree&&tree.prop(NodeProp.contextHash)==hash;}takeNodes(cx){let cur=this.cursor,off=this.fragment.offset,fragEnd=this.fragmentEnd-(this.fragment.openEnd?1:0);let start=cx.absoluteLineStart,end=start,blockI=cx.block.children.length;let prevEnd=end,prevI=blockI;for(;;){if(cur.to-off>fragEnd){if(cur.type.isAnonymous&&cur.firstChild())continue;break;}let pos=toRelative(cur.from-off,cx.ranges);if(cur.to-off\u003C=cx.ranges[cx.rangeI].to){cx.addNode(cur.tree,pos);}else{let dummy=new Tree(cx.parser.nodeSet.types[Type.Paragraph],[],[],0,cx.block.hashProp);cx.reusePlaceholders.set(dummy,cur.tree);cx.addNode(dummy,pos);}if(cur.type.is(\\\"Block\\\")){if(NotLast.indexOf(cur.type.id)\u003C0){end=cur.to-off;blockI=cx.block.children.length;}else{end=prevEnd;blockI=prevI;prevEnd=cur.to-off;prevI=cx.block.children.length;}}if(!cur.nextSibling())break;}while(cx.block.children.length>blockI){cx.block.children.pop();cx.block.positions.pop();}return end-start;}}function toRelative(abs,ranges){let pos=abs;for(let i=1;i\u003Cranges.length;i++){let gapFrom=ranges[i-1].to,gapTo=ranges[i].from;if(gapFrom\u003Cabs)pos-=gapTo-gapFrom;}return pos;}const markdownHighlighting=styleTags({\\\"Blockquote/...\\\":tags$1.quote,HorizontalRule:tags$1.contentSeparator,\\\"ATXHeading1/... SetextHeading1/...\\\":tags$1.heading1,\\\"ATXHeading2/... SetextHeading2/...\\\":tags$1.heading2,\\\"ATXHeading3/...\\\":tags$1.heading3,\\\"ATXHeading4/...\\\":tags$1.heading4,\\\"ATXHeading5/...\\\":tags$1.heading5,\\\"ATXHeading6/...\\\":tags$1.heading6,\\\"Comment CommentBlock\\\":tags$1.comment,Escape:tags$1.escape,Entity:tags$1.character,\\\"Emphasis/...\\\":tags$1.emphasis,\\\"StrongEmphasis/...\\\":tags$1.strong,\\\"Link/... Image/...\\\":tags$1.link,\\\"OrderedList/... BulletList/...\\\":tags$1.list,\\\"BlockQuote/...\\\":tags$1.quote,\\\"InlineCode CodeText\\\":tags$1.monospace,\\\"URL Autolink\\\":tags$1.url,\\\"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark\\\":tags$1.processingInstruction,\\\"CodeInfo LinkLabel\\\":tags$1.labelName,LinkTitle:tags$1.string,Paragraph:tags$1.content});const parser$7=new MarkdownParser(new NodeSet(nodeTypes).extend(markdownHighlighting),Object.keys(DefaultBlockParsers).map(n=>DefaultBlockParsers[n]),Object.keys(DefaultBlockParsers).map(n=>DefaultLeafBlocks[n]),Object.keys(DefaultBlockParsers),DefaultEndLeaf,DefaultSkipMarkup,Object.keys(DefaultInline).map(n=>DefaultInline[n]),Object.keys(DefaultInline),[]);function leftOverSpace(node,from,to){let ranges=[];for(let n=node.firstChild,pos=from;;n=n.nextSibling){let nextPos=n?n.from:to;if(nextPos>pos)ranges.push({from:pos,to:nextPos});if(!n)break;pos=n.to;}return ranges;}function parseCode(config){let{codeParser,htmlParser}=config;let wrap=parseMixed((node,input)=>{let id=node.type.id;if(codeParser&&(id==Type.CodeBlock||id==Type.FencedCode)){let info=\\\"\\\";if(id==Type.FencedCode){let infoNode=node.node.getChild(Type.CodeInfo);if(infoNode)info=input.read(infoNode.from,infoNode.to);}let parser=codeParser(info);if(parser)return{parser,overlay:node=>node.type.id==Type.CodeText};}else if(htmlParser&&(id==Type.HTMLBlock||id==Type.HTMLTag)){return{parser:htmlParser,overlay:leftOverSpace(node.node,node.from,node.to)};}return null;});return{wrap};}const StrikethroughDelim={resolve:\\\"Strikethrough\\\",mark:\\\"StrikethroughMark\\\"};const Strikethrough={defineNodes:[{name:\\\"Strikethrough\\\",style:{\\\"Strikethrough/...\\\":tags$1.strikethrough}},{name:\\\"StrikethroughMark\\\",style:tags$1.processingInstruction}],parseInline:[{name:\\\"Strikethrough\\\",parse(cx,next,pos){if(next!=126||cx.char(pos+1)!=126||cx.char(pos+2)==126)return-1;let before=cx.slice(pos-1,pos),after=cx.slice(pos+2,pos+3);let sBefore=/\\\\s|^$/.test(before),sAfter=/\\\\s|^$/.test(after);let pBefore=Punctuation.test(before),pAfter=Punctuation.test(after);return cx.addDelimiter(StrikethroughDelim,pos,pos+2,!sAfter&&(!pAfter||sBefore||pBefore),!sBefore&&(!pBefore||sAfter||pAfter));},after:\\\"Emphasis\\\"}]};function parseRow(cx,line,startI=0,elts,offset=0){let count=0,first=true,cellStart=-1,cellEnd=-1,esc=false;let parseCell=()=>{elts.push(cx.elt(\\\"TableCell\\\",offset+cellStart,offset+cellEnd,cx.parser.parseInline(line.slice(cellStart,cellEnd),offset+cellStart)));};for(let i=startI;i\u003Cline.length;i++){let next=line.charCodeAt(i);if(next==124&&!esc){if(!first||cellStart>-1)count++;first=false;if(elts){if(cellStart>-1)parseCell();elts.push(cx.elt(\\\"TableDelimiter\\\",i+offset,i+offset+1));}cellStart=cellEnd=-1;}else if(esc||next!=32&&next!=9){if(cellStart\u003C0)cellStart=i;cellEnd=i+1;}esc=!esc&&next==92;}if(cellStart>-1){count++;if(elts)parseCell();}return count;}function hasPipe(str,start){for(let i=start;i\u003Cstr.length;i++){let next=str.charCodeAt(i);if(next==124)return true;if(next==92)i++;}return false;}const delimiterLine=/^\\\\|?(\\\\s*:?-+:?\\\\s*\\\\|)+(\\\\s*:?-+:?\\\\s*)?$/;class TableParser{constructor(){this.rows=null;}nextLine(cx,line,leaf){if(this.rows==null){this.rows=false;let lineText;if((line.next==45||line.next==58||line.next==124)&&delimiterLine.test(lineText=line.text.slice(line.pos))){let firstRow=[],firstCount=parseRow(cx,leaf.content,0,firstRow,leaf.start);if(firstCount==parseRow(cx,lineText,line.pos))this.rows=[cx.elt(\\\"TableHeader\\\",leaf.start,leaf.start+leaf.content.length,firstRow),cx.elt(\\\"TableDelimiter\\\",cx.lineStart+line.pos,cx.lineStart+line.text.length)];}}else if(this.rows){let content=[];parseRow(cx,line.text,line.pos,content,cx.lineStart);this.rows.push(cx.elt(\\\"TableRow\\\",cx.lineStart+line.pos,cx.lineStart+line.text.length,content));}return false;}finish(cx,leaf){if(!this.rows)return false;cx.addLeafElement(leaf,cx.elt(\\\"Table\\\",leaf.start,leaf.start+leaf.content.length,this.rows));return true;}}const Table={defineNodes:[{name:\\\"Table\\\",block:true},{name:\\\"TableHeader\\\",style:{\\\"TableHeader/...\\\":tags$1.heading}},\\\"TableRow\\\",{name:\\\"TableCell\\\",style:tags$1.content},{name:\\\"TableDelimiter\\\",style:tags$1.processingInstruction}],parseBlock:[{name:\\\"Table\\\",leaf(_,leaf){return hasPipe(leaf.content,0)?new TableParser():null;},endLeaf(cx,line,leaf){if(leaf.parsers.some(p=>p instanceof TableParser)||!hasPipe(line.text,line.basePos))return false;let next=cx.scanLine(cx.absoluteLineEnd+1).text;return delimiterLine.test(next)&&parseRow(cx,line.text,line.basePos)==parseRow(cx,next,line.basePos);},before:\\\"SetextHeading\\\"}]};class TaskParser{nextLine(){return false;}finish(cx,leaf){cx.addLeafElement(leaf,cx.elt(\\\"Task\\\",leaf.start,leaf.start+leaf.content.length,[cx.elt(\\\"TaskMarker\\\",leaf.start,leaf.start+3),...cx.parser.parseInline(leaf.content.slice(3),leaf.start+3)]));return true;}}const TaskList={defineNodes:[{name:\\\"Task\\\",block:true,style:tags$1.list},{name:\\\"TaskMarker\\\",style:tags$1.atom}],parseBlock:[{name:\\\"TaskList\\\",leaf(cx,leaf){return /^\\\\[[ xX]\\\\][ \\\\t]/.test(leaf.content)&&cx.parentType().name==\\\"ListItem\\\"?new TaskParser():null;},after:\\\"SetextHeading\\\"}]};const autolinkRE=/(www\\\\.)|(https?:\\\\/\\\\/)|([\\\\w.+-]+@)|(mailto:|xmpp:)/gy;const urlRE=/[\\\\w-]+(\\\\.[\\\\w-]+)+(\\\\/[^\\\\s\u003C]*)?/gy;const lastTwoDomainWords=/[\\\\w-]+\\\\.[\\\\w-]+($|\\\\/)/;const emailRE=/[\\\\w.+-]+@[\\\\w-]+(\\\\.[\\\\w.-]+)+/gy;const xmppResourceRE=/\\\\/[a-zA-Z\\\\d@.]+/gy;function count(str,from,to,ch){let result=0;for(let i=from;i\u003Cto;i++)if(str[i]==ch)result++;return result;}function autolinkURLEnd(text,from){urlRE.lastIndex=from;let m=urlRE.exec(text);if(!m||lastTwoDomainWords.exec(m[0])[0].indexOf(\\\"_\\\")>-1)return-1;let end=from+m[0].length;for(;;){let last=text[end-1],m;if(/[?!.,:*_~]/.test(last)||last==\\\")\\\"&&count(text,from,end,\\\")\\\")>count(text,from,end,\\\"(\\\"))end--;else if(last==\\\";\\\"&&(m=/&(?:#\\\\d+|#x[a-f\\\\d]+|\\\\w+);$/.exec(text.slice(from,end))))end=from+m.index;else break;}return end;}function autolinkEmailEnd(text,from){emailRE.lastIndex=from;let m=emailRE.exec(text);if(!m)return-1;let last=m[0][m[0].length-1];return last==\\\"_\\\"||last==\\\"-\\\"?-1:from+m[0].length-(last==\\\".\\\"?1:0);}const Autolink={parseInline:[{name:\\\"Autolink\\\",parse(cx,next,absPos){let pos=absPos-cx.offset;autolinkRE.lastIndex=pos;let m=autolinkRE.exec(cx.text),end=-1;if(!m)return-1;if(m[1]||m[2]){end=autolinkURLEnd(cx.text,pos+m[0].length);}else if(m[3]){end=autolinkEmailEnd(cx.text,pos);}else{end=autolinkEmailEnd(cx.text,pos+m[0].length);if(end>-1&&m[0]==\\\"xmpp:\\\"){xmppResourceRE.lastIndex=end;m=xmppResourceRE.exec(cx.text);if(m)end=m.index+m[0].length;}}if(end\u003C0)return-1;cx.addElement(cx.elt(\\\"URL\\\",absPos,end+cx.offset));return end+cx.offset;}}]};const GFM=[Table,TaskList,Strikethrough,Autolink];function parseSubSuper(ch,node,mark){return(cx,next,pos)=>{if(next!=ch||cx.char(pos+1)==ch)return-1;let elts=[cx.elt(mark,pos,pos+1)];for(let i=pos+1;i\u003Ccx.end;i++){let next=cx.char(i);if(next==ch)return cx.addElement(cx.elt(node,pos,i+1,elts.concat(cx.elt(mark,i,i+1))));if(next==92)elts.push(cx.elt(\\\"Escape\\\",i,i++ +2));if(space$1(next))break;}return-1;};}const Superscript={defineNodes:[{name:\\\"Superscript\\\",style:tags$1.special(tags$1.content)},{name:\\\"SuperscriptMark\\\",style:tags$1.processingInstruction}],parseInline:[{name:\\\"Superscript\\\",parse:parseSubSuper(94,\\\"Superscript\\\",\\\"SuperscriptMark\\\")}]};const Subscript={defineNodes:[{name:\\\"Subscript\\\",style:tags$1.special(tags$1.content)},{name:\\\"SubscriptMark\\\",style:tags$1.processingInstruction}],parseInline:[{name:\\\"Subscript\\\",parse:parseSubSuper(126,\\\"Subscript\\\",\\\"SubscriptMark\\\")}]};const Emoji={defineNodes:[{name:\\\"Emoji\\\",style:tags$1.character}],parseInline:[{name:\\\"Emoji\\\",parse(cx,next,pos){let match;if(next!=58||!(match=/^[a-zA-Z_0-9]+:/.exec(cx.slice(pos+1,cx.end))))return-1;return cx.addElement(cx.elt(\\\"Emoji\\\",pos,pos+1+match[0].length));}}]};const data=defineLanguageFacet({commentTokens:{block:{open:\\\"\u003C!--\\\",close:\\\"-->\\\"}}});const headingProp=new NodeProp();const commonmark=parser$7.configure({props:[foldNodeProp.add(type=>{return!type.is(\\\"Block\\\")||type.is(\\\"Document\\\")||isHeading(type)!=null?undefined:(tree,state)=>({from:state.doc.lineAt(tree.from).to,to:tree.to});}),headingProp.add(isHeading),indentNodeProp.add({Document:()=>null}),languageDataProp.add({Document:data})]});function isHeading(type){let match=/^(?:ATX|Setext)Heading(\\\\d)$/.exec(type.name);return match?+match[1]:undefined;}function findSectionEnd(headerNode,level){let last=headerNode;for(;;){let next=last.nextSibling,heading;if(!next||(heading=isHeading(next.type))!=null&&heading\u003C=level)break;last=next;}return last.to;}const headerIndent=foldService.of((state,start,end)=>{for(let node=syntaxTree(state).resolveInner(end,-1);node;node=node.parent){if(node.from\u003Cstart)break;let heading=node.type.prop(headingProp);if(heading==null)continue;let upto=findSectionEnd(node,heading);if(upto>end)return{from:end,to:upto};}return null;});function mkLang(parser){return new Language(data,parser,[headerIndent],\\\"markdown\\\");}const commonmarkLanguage=mkLang(commonmark);const extended=commonmark.configure([GFM,Subscript,Superscript,Emoji,{props:[foldNodeProp.add({Table:(tree,state)=>({from:state.doc.lineAt(tree.from).to,to:tree.to})})]}]);const markdownLanguage=mkLang(extended);function getCodeParser(languages,defaultLanguage){return info=>{if(info&&languages){let found=null;info=/\\\\S*/.exec(info)[0];if(typeof languages==\\\"function\\\")found=languages(info);else found=LanguageDescription.matchLanguageName(languages,info,true);if(found instanceof LanguageDescription)return found.support?found.support.language.parser:ParseContext.getSkippingParser(found.load());else if(found)return found.parser;}return defaultLanguage?defaultLanguage.parser:null;};}class Context{constructor(node,from,to,spaceBefore,spaceAfter,type,item){this.node=node;this.from=from;this.to=to;this.spaceBefore=spaceBefore;this.spaceAfter=spaceAfter;this.type=type;this.item=item;}blank(maxWidth,trailing=true){let result=this.spaceBefore+(this.node.name==\\\"Blockquote\\\"?\\\">\\\":\\\"\\\");if(maxWidth!=null){while(result.length\u003CmaxWidth)result+=\\\" \\\";return result;}else{for(let i=this.to-this.from-result.length-this.spaceAfter.length;i>0;i--)result+=\\\" \\\";return result+(trailing?this.spaceAfter:\\\"\\\");}}marker(doc,add){let number=this.node.name==\\\"OrderedList\\\"?String(+itemNumber(this.item,doc)[2]+add):\\\"\\\";return this.spaceBefore+number+this.type+this.spaceAfter;}}function getContext(node,doc){let nodes=[];for(let cur=node;cur&&cur.name!=\\\"Document\\\";cur=cur.parent){if(cur.name==\\\"ListItem\\\"||cur.name==\\\"Blockquote\\\"||cur.name==\\\"FencedCode\\\")nodes.push(cur);}let context=[];for(let i=nodes.length-1;i>=0;i--){let node=nodes[i],match;let line=doc.lineAt(node.from),startPos=node.from-line.from;if(node.name==\\\"FencedCode\\\"){context.push(new Context(node,startPos,startPos,\\\"\\\",\\\"\\\",\\\"\\\",null));}else if(node.name==\\\"Blockquote\\\"&&(match=/^ *>( ?)/.exec(line.text.slice(startPos)))){context.push(new Context(node,startPos,startPos+match[0].length,\\\"\\\",match[1],\\\">\\\",null));}else if(node.name==\\\"ListItem\\\"&&node.parent.name==\\\"OrderedList\\\"&&(match=/^( *)\\\\d+([.)])( *)/.exec(line.text.slice(startPos)))){let after=match[3],len=match[0].length;if(after.length>=4){after=after.slice(0,after.length-4);len-=4;}context.push(new Context(node.parent,startPos,startPos+len,match[1],after,match[2],node));}else if(node.name==\\\"ListItem\\\"&&node.parent.name==\\\"BulletList\\\"&&(match=/^( *)([-+*])( {1,4}\\\\[[ xX]\\\\])?( +)/.exec(line.text.slice(startPos)))){let after=match[4],len=match[0].length;if(after.length>4){after=after.slice(0,after.length-4);len-=4;}let type=match[2];if(match[3])type+=match[3].replace(/[xX]/,' ');context.push(new Context(node.parent,startPos,startPos+len,match[1],after,type,node));}}return context;}function itemNumber(item,doc){return /^(\\\\s*)(\\\\d+)(?=[.)])/.exec(doc.sliceString(item.from,item.from+10));}function renumberList(after,doc,changes,offset=0){for(let prev=-1,node=after;;){if(node.name==\\\"ListItem\\\"){let m=itemNumber(node,doc);let number=+m[2];if(prev>=0){if(number!=prev+1)return;changes.push({from:node.from+m[1].length,to:node.from+m[0].length,insert:String(prev+2+offset)});}prev=number;}let next=node.nextSibling;if(!next)break;node=next;}}function normalizeIndent(content,state){let blank=/^[ \\\\t]*/.exec(content)[0].length;if(!blank||state.facet(indentUnit)!=\\\"\\\\t\\\")return content;let col=countColumn(content,4,blank);let space=\\\"\\\";for(let i=col;i>0;){if(i>=4){space+=\\\"\\\\t\\\";i-=4;}else{space+=\\\" \\\";i--;}}return space+content.slice(blank);}const insertNewlineContinueMarkup=({state,dispatch})=>{let tree=syntaxTree(state),{doc}=state;let dont=null,changes=state.changeByRange(range=>{if(!range.empty||!markdownLanguage.isActiveAt(state,range.from))return dont={range};let pos=range.from,line=doc.lineAt(pos);let context=getContext(tree.resolveInner(pos,-1),doc);while(context.length&&context[context.length-1].from>pos-line.from)context.pop();if(!context.length)return dont={range};let inner=context[context.length-1];if(inner.to-inner.spaceAfter.length>pos-line.from)return dont={range};let emptyLine=pos>=inner.to-inner.spaceAfter.length&&!/\\\\S/.test(line.text.slice(inner.to));if(inner.item&&emptyLine){let first=inner.node.firstChild,second=inner.node.getChild(\\\"ListItem\\\",\\\"ListItem\\\");if(first.to>=pos||second&&second.to\u003Cpos||line.from>0&&!/[^\\\\s>]/.test(doc.lineAt(line.from-1).text)){let next=context.length>1?context[context.length-2]:null;let delTo,insert=\\\"\\\";if(next&&next.item){delTo=line.from+next.from;insert=next.marker(doc,1);}else{delTo=line.from+(next?next.to:0);}let changes=[{from:delTo,to:pos,insert}];if(inner.node.name==\\\"OrderedList\\\")renumberList(inner.item,doc,changes,-2);if(next&&next.node.name==\\\"OrderedList\\\")renumberList(next.item,doc,changes);return{range:EditorSelection.cursor(delTo+insert.length),changes};}else{let insert=blankLine(context,state,line);return{range:EditorSelection.cursor(pos+insert.length+1),changes:{from:line.from,insert:insert+state.lineBreak}};}}if(inner.node.name==\\\"Blockquote\\\"&&emptyLine&&line.from){let prevLine=doc.lineAt(line.from-1),quoted=/>\\\\s*$/.exec(prevLine.text);if(quoted&"ed.index==inner.from){let changes=state.changes([{from:prevLine.from+quoted.index,to:prevLine.to},{from:line.from+inner.from,to:line.to}]);return{range:range.map(changes),changes};}}let changes=[];if(inner.node.name==\\\"OrderedList\\\")renumberList(inner.item,doc,changes);let continued=inner.item&&inner.item.from\u003Cline.from;let insert=\\\"\\\";if(!continued||/^[\\\\s\\\\d.)\\\\-+*>]*/.exec(line.text)[0].length>=inner.to){for(let i=0,e=context.length-1;i\u003C=e;i++){insert+=i==e&&!continued?context[i].marker(doc,1):context[i].blank(i\u003Ce?countColumn(line.text,4,context[i+1].from)-insert.length:null);}}let from=pos;while(from>line.from&&/\\\\s/.test(line.text.charAt(from-line.from-1)))from--;insert=normalizeIndent(insert,state);if(nonTightList(inner.node,state.doc))insert=blankLine(context,state,line)+state.lineBreak+insert;changes.push({from,to:pos,insert:state.lineBreak+insert});return{range:EditorSelection.cursor(from+insert.length+1),changes};});if(dont)return false;dispatch(state.update(changes,{scrollIntoView:true,userEvent:\\\"input\\\"}));return true;};function isMark(node){return node.name==\\\"QuoteMark\\\"||node.name==\\\"ListMark\\\";}function nonTightList(node,doc){if(node.name!=\\\"OrderedList\\\"&&node.name!=\\\"BulletList\\\")return false;let first=node.firstChild,second=node.getChild(\\\"ListItem\\\",\\\"ListItem\\\");if(!second)return false;let line1=doc.lineAt(first.to),line2=doc.lineAt(second.from);let empty=/^[\\\\s>]*$/.test(line1.text);return line1.number+(empty?0:1)\u003Cline2.number;}function blankLine(context,state,line){let insert=\\\"\\\";for(let i=0,e=context.length-2;i\u003C=e;i++){insert+=context[i].blank(i\u003Ce?countColumn(line.text,4,context[i+1].from)-insert.length:null,i\u003Ce);}return normalizeIndent(insert,state);}function contextNodeForDelete(tree,pos){let node=tree.resolveInner(pos,-1),scan=pos;if(isMark(node)){scan=node.from;node=node.parent;}for(let prev;prev=node.childBefore(scan);){if(isMark(prev)){scan=prev.from;}else if(prev.name==\\\"OrderedList\\\"||prev.name==\\\"BulletList\\\"){node=prev.lastChild;scan=node.to;}else{break;}}return node;}const deleteMarkupBackward=({state,dispatch})=>{let tree=syntaxTree(state);let dont=null,changes=state.changeByRange(range=>{let pos=range.from,{doc}=state;if(range.empty&&markdownLanguage.isActiveAt(state,range.from)){let line=doc.lineAt(pos);let context=getContext(contextNodeForDelete(tree,pos),doc);if(context.length){let inner=context[context.length-1];let spaceEnd=inner.to-inner.spaceAfter.length+(inner.spaceAfter?1:0);if(pos-line.from>spaceEnd&&!/\\\\S/.test(line.text.slice(spaceEnd,pos-line.from)))return{range:EditorSelection.cursor(line.from+spaceEnd),changes:{from:line.from+spaceEnd,to:pos}};if(pos-line.from==spaceEnd&&(!inner.item||line.from\u003C=inner.item.from||!/\\\\S/.test(line.text.slice(0,inner.to)))){let start=line.from+inner.from;if(inner.item&&inner.node.from\u003Cinner.item.from&&/\\\\S/.test(line.text.slice(inner.from,inner.to))){let insert=inner.blank(countColumn(line.text,4,inner.to)-countColumn(line.text,4,inner.from));if(start==line.from)insert=normalizeIndent(insert,state);return{range:EditorSelection.cursor(start+insert.length),changes:{from:start,to:line.from+inner.to,insert}};}if(start\u003Cpos)return{range:EditorSelection.cursor(start),changes:{from:start,to:pos}};}}}return dont={range};});if(dont)return false;dispatch(state.update(changes,{scrollIntoView:true,userEvent:\\\"delete\\\"}));return true;};const markdownKeymap=[{key:\\\"Enter\\\",run:insertNewlineContinueMarkup},{key:\\\"Backspace\\\",run:deleteMarkupBackward}];const htmlNoMatch=html({matchClosingTags:false});function markdown(config={}){let{codeLanguages,defaultCodeLanguage,addKeymap=true,base:{parser}=commonmarkLanguage,completeHTMLTags=true}=config;if(!(parser instanceof MarkdownParser))throw new RangeError(\\\"Base parser provided to `markdown` should be a Markdown parser\\\");let extensions=config.extensions?[config.extensions]:[];let support=[htmlNoMatch.support],defaultCode;if(defaultCodeLanguage instanceof LanguageSupport){support.push(defaultCodeLanguage.support);defaultCode=defaultCodeLanguage.language;}else if(defaultCodeLanguage){defaultCode=defaultCodeLanguage;}let codeParser=codeLanguages||defaultCode?getCodeParser(codeLanguages,defaultCode):undefined;extensions.push(parseCode({codeParser,htmlParser:htmlNoMatch.language.parser}));if(addKeymap)support.push(Prec.high(keymap.of(markdownKeymap)));let lang=mkLang(parser.configure(extensions));if(completeHTMLTags)support.push(lang.data.of({autocomplete:htmlTagCompletion}));return new LanguageSupport(lang,support);}function htmlTagCompletion(context){let{state,pos}=context,m=/\u003C[:\\\\-\\\\.\\\\w\\\\u00b7-\\\\uffff]*$/.exec(state.sliceDoc(pos-25,pos));if(!m)return null;let tree=syntaxTree(state).resolveInner(pos,-1);while(tree&&!tree.type.isTop){if(tree.name==\\\"CodeBlock\\\"||tree.name==\\\"FencedCode\\\"||tree.name==\\\"ProcessingInstructionBlock\\\"||tree.name==\\\"CommentBlock\\\"||tree.name==\\\"Link\\\"||tree.name==\\\"Image\\\")return null;tree=tree.parent;}return{from:pos-m[0].length,to:pos,options:htmlTagCompletions(),validFor:/^\u003C[:\\\\-\\\\.\\\\w\\\\u00b7-\\\\uffff]*$/};}let _tagCompletions=null;function htmlTagCompletions(){if(_tagCompletions)return _tagCompletions;let result=htmlCompletionSource(new CompletionContext(EditorState.create({extensions:htmlNoMatch}),0,true));return _tagCompletions=result?result.options:[];}var _m21=Object.freeze({__proto__:null,commonmarkLanguage:commonmarkLanguage,deleteMarkupBackward:deleteMarkupBackward,insertNewlineContinueMarkup:insertNewlineContinueMarkup,markdown:markdown,markdownKeymap:markdownKeymap,markdownLanguage:markdownLanguage});const lezerHighlighting=styleTags({LineComment:tags$1.lineComment,BlockComment:tags$1.blockComment,AnyChar:tags$1.character,Literal:tags$1.string,\\\"tokens from grammar as empty prop extend specialize AtName\\\":tags$1.keyword,\\\"@top @left @right @cut @external\\\":tags$1.modifier,\\\"@precedence @tokens @context @dialects @skip @detectDelim @conflict\\\":tags$1.definitionKeyword,\\\"@extend @specialize\\\":tags$1.operatorKeyword,\\\"CharSet InvertedCharSet\\\":tags$1.regexp,\\\"CharClass\\\":tags$1.atom,RuleName:tags$1.variableName,\\\"RuleDeclaration/RuleName InlineRule/RuleName TokensBody/RuleName\\\":tags$1.definition(tags$1.variableName),PrecedenceName:tags$1.labelName,Name:tags$1.name,\\\"( )\\\":tags$1.paren,\\\"[ ]\\\":tags$1.squareBracket,\\\"{ }\\\":tags$1.brace,'\\\"!\\\" ~ \\\"*\\\" + ? |':tags$1.operator});const spec_AtName={__proto__:null,\\\"@asciiLetter\\\":244,\\\"@asciiUpperCase\\\":244,\\\"@asciiLowerCase\\\":244,\\\"@digit\\\":244,\\\"@whitespace\\\":244,\\\"@eof\\\":244,\\\"@specialize\\\":76,\\\"@extend\\\":78,\\\"@top\\\":98,\\\"@precedence\\\":102,\\\"@left\\\":108,\\\"@right\\\":110,\\\"@cut\\\":112,\\\"@tokens\\\":116,\\\"@conflict\\\":126,\\\"@local\\\":134,\\\"@else\\\":142,\\\"@external\\\":146,\\\"@context\\\":172,\\\"@dialects\\\":176,\\\"@skip\\\":182,\\\"@detectDelim\\\":190};const spec_keyword={__proto__:null,tokens:136,from:148,prop:156,as:158,propSource:162,extend:166,specialize:168};const parser$6=LRParser.deserialize({version:14,states:\\\"\u003CzQ]QPOOOOQO'#Ca'#CaO}QPO'#C`OOQO'#Eq'#EqOOQO'#E`'#E`Q]QPOOOxQPO'#D^O!YQPO'#D`O!_QPO'#DgO!dQQO'#DpO!iQQO'#D{O!zQPO'#ETO#PQPO'#EVO#UQPO'#EYOOQO'#E^'#E^O#ZQPO'#CdO#fQPO'#CnO$iQPO'#CoOOQO,58z,58zO#UQPO,58zO!QQPO,58zOOQO-E8^-E8^O}QPO,59xO$pQPO'#DbOOQO,59z,59zO$xQPO'#DiOOQO,5:R,5:RO%ZQPO,5:[O!zQPO,5:bO!zQPO,5:gO!zQPO,5:jO#UQPO,5:lOOQO'#Cg'#CgO%`QQO,5:oO%eQPO'#EXOOQO,5:q,5:qO%mQPO,5:tO&eQPO'#CeO&pQPO,59OO#^QPO,59OOOQO,59O,59OOOQO,59Y,59YO&xQPO,59YO(bQPO'#EyO(oQPO'#EyOOQO'#Ey'#EyOOQO'#Cv'#CvO)nQPO'#EwO#UQPO'#C}O*[QPO'#DQOOQO'#Ex'#ExO$sQPO'#DVO!zQPO'#DYOOQO'#E{'#E{O*cQPO'#DUOOQO'#Ew'#EwO*vQPO'#EfO+ZQPO'#D[O+lQPO'#EvOOQO'#Ev'#EvOOQO,59Z,59ZO+}QPO,59ZO,SQPO'#DROOQO1G.f1G.fO#UQPO1G.fOOQO1G/d1G/dO#UQPO1G/dO!QQPO1G/dOOQO'#DX'#DXO,[QPO'#DcO,pQPO'#EgO,{QPO,59|OOQO,59|,59|O-TQPO'#DoOOQO'#E|'#E|OOQO'#Eh'#EhO-lQPO,5:TOOQO,5:T,5:TO-}QPO'#DjO.SQPO'#DlO.jQPO'#DsOOQO1G/v1G/vO.qQQO1G/|O.vQQO1G0RO/OQQO1G0UO!zQPO1G0WO/TQPO1G0ZO/YQPO'#ElO/eQPO,5:sOOQO,5:s,5:sO/mQPO'#E]OOQO1G0b1G0bO/xQPO,59POOQO,5:{,5:{OOQO1G.j1G.jO0^QPO1G.jOOQO-E8_-E8_O!zQPO'#EcO0fQPO1G.tOOQO1G.t1G.tOxQPO,59_O0nQPO'#CuOOQO,59`,59`OOQO,59i,59iO#UQPO,59iO0uQPO'#EeOOQO,59d,59dOOQO,59f,59fOOQO,59h,59hOOQO'#Ee'#EeO2VQPO,59pOOQO,59l,59lO2jQPO,59lOOQO,59q,59qOOQO,59t,59tOOQO,5;Q,5;QOOQO-E8d-E8dO2oQPO,59vOOQO1G.u1G.uOOQO,59m,59mO,VQPO,59mOOQO7+$Q7+$QOOQO7+%O7+%OO#UQPO7+%OOOQO,59},59}OOQO,5;R,5;ROOQO-E8e-E8eOOQO1G/h1G/hOOQO,5:Z,5:ZOOQO-E8f-E8fOOQO1G/o1G/oO3QQPO'#DkOOQO,5:U,5:UO3]QPO'#DnOOQO,5:W,5:WOOQO'#Ej'#EjO3eQPO,5:_OOQO,5:_,5:_OxQPO'#DtO3lQPO7+%hO3qQPO7+%mO!zQPO7+%mO3vQPO7+%pO3{QQO7+%rOOQO7+%u7+%uOOQO,5;W,5;WOOQO-E8j-E8jOOQO1G0_1G0_OOQO'#Em'#EmO4QQPO,5:wOOQO,5:w,5:wOxQPO'#CmOOQO'#Eb'#EbO4]QPO1G.kOOQO7+$U7+$UP&sQPO'#EaOOQO,5:},5:}OOQO-E8a-E8aOOQO7+$`7+$`OOQO1G.y1G.yOOQO,59a,59aO4qQPO,59aOOQO1G/T1G/TOOQO-E8c-E8cOOQO1G/W1G/WOOQO1G/X1G/XOOQO\u003C\u003CHj\u003C\u003CHjO4yQPO'#EyO5_QPO'#EiO5mQPO,5:VOOQO,5:V,5:VO5xQPO,5:YOOQO-E8h-E8hOOQO1G/y1G/yO6TQPO,5:`O6lQPO\u003C\u003CISOOQO\u003C\u003CIX\u003C\u003CIXO6qQQO\u003C\u003CIXOOQO\u003C\u003CI[\u003C\u003CI[O6vQPO\u003C\u003CI^OOQO-E8k-E8kOOQO1G0c1G0cO6{QPO,59XOOQO-E8`-E8`O#nQPO'#EdO7QQPO1G.{OOQO1G.{1G.{OOQO,5;T,5;TOOQO-E8g-E8gOOQO1G/q1G/qO7YQPO1G/tO7_QPO1G/tOOQO1G/z1G/zO7gQPO'#DyOOQOAN>nAN>nO7oQPOAN>sO6lQPOAN>xOOQO1G.s1G.sOOQO,5;O,5;OOOQO-E8b-E8bOOQO7+$g7+$gOOQO7+%`7+%`O7tQPO7+%`O7yQPO'#DzO8XQPO'#EkO8dQPO,5:eOOQO,5:e,5:eOOQOG24_G24_OOQOG24dG24dOOQO\u003C\u003CHz\u003C\u003CHzOOQO,5:f,5:fOOQO,5;V,5;VOOQO-E8i-E8iOOQO1G0P1G0P\\\",stateData:\\\"8s~O#dOSPOSQOS~O!RUO!TVO![WO!eXO!kYO!xZO!z[O!}]O#R^O#fPO~OV_O`aO#i`O~O`gO~O`iO~O!fkO~O!flO!pmO!snO!uoO!voO~O#fpO~O`rO~O`aO~OUxOYuO#fpO~O#fpO#hyO~OV_O]!SOd!SOe!SOf!SOs!ROv!`Ow!`Oz!TO}!UO!P!YO#fPO#n!OO~O_!^O~P#nO_!jO#f!fO~O]!kO_!oO!T!pO!a!qO#fPO~O`!rO~O!l!xO~O_!{O#fpO~O`!|O!R!|a!T!|a![!|a!e!|a!k!|a!x!|a!z!|a!}!|a#R!|a#b!|a#f!|a~O[#OOUXX#gXX~OU#QO#g#PO~O#g#TO#h#VO~O#i#XO]#mX_#mXd#mXe#mXf#mXk#mXm#mXo#mXs#mXv#mXw#mXz#mX}#mX!P#mX#f#mX#n#mXr#mX#g#mX#h#mX~OV_O^#WO`aO~P'QOV#mX~P'QOV_O]!SOd!SOe!SOf!SOs!ROv!`Ow!`Oz!TO}!UO#fPO#n!OO~Ok#^Om#_Oo#`O_#kX!P#kXr#kX#g#kX#h#kX~P(vOr#cO~P#nO_xX!PxXrxX#gxX#hxX~P(vO_#YX!P#YXr#YX#g#YX#h#YX~P(vO!P!YO_!OXr!OX#g!OX#h!OX~O!P!YO_#jXr#jX#g#jX#h#jX~O_#jO~OV_O#i#XO~O!W#pO!X#pO!Y#pO_!VX#f!VX#g!VX~O#g#qO_#ZX#f#ZX~O_#sO#f!fO~OV_O]!cX_!cX!T!cX!a!cX#f!cX!i!cX~O]!kO_#vO!T!pO!a!qO#fPO~O`#wO~O`#yO~O]!kO!T!pO!a!qO!i$OO#fPO~O_#}O~P.XO!l$PO~O!l$QO!q$RO~O!l$SO~O]$UO~O#g$VO_#`X#f#`X~O_$XO#fpO~O_$[O!RUO#fPO~O]$^O^$^O`$]O#fpOUXa#gXa~OU$`O#g#PO~O#g#TO#h$dO~O#h$fO~P#nOk#^Om#_Oo#`OV#XX]#XX_#XXd#XXe#XXf#XXs#XXv#XXw#XXz#XX}#XX!P#XX#f#XX#n#XXr#XX#g#XX#h#XX~O_xa!Pxarxa#gxa#hxa~P(vOr$jO~O!P!YO_!Oar!Oa#g!Oa#h!Oa~O]$nO_$pO#fPO~O]$qO#fPO~O_$sO~P.XO]$uO~O]$vO~O]$xO~O!l$yO~O_${O!RUO#fPO~O]$^O^$^O`$]O#fpOUXi#gXi~O#g%OO#h%QO~O^#WO#i#XO]#mX_#mX#f#mX#g#mX~O#g%RO]#]X_#]X#f#]X~O]$nO_%TO#fPO~O]%UO#fPO#g%VO~OV_O]!ha_!ha!T!ha!a!ha!i!ha#f!ha~O`%XO~O!l%ZO~O]%[O~O_%]O~O#g%OO#h%`O~O_%aO~O]%bO#fPO~O_%fO#fPO~O]%gO~O_%iO~OV_O_!nX#f!nX#g!nX~O#g%kO_#_X#f#_X~O_%mO#fPO~Oe#dfz#f#q~\\\",goto:\\\".d#qPPPP#r$QPP$}%nP%tPPPPP&m&q&}PPP'p(P(`(kP(kP(kP(k(kPP(k(kPP(u(|P)W(|P)_P)eP)mP)q)tPPP)mP)x){*R){P*U){)mPP*X*[P)mPP*`*f)mPP)mP)mPP)mP)mP*j)mP)m*m)mP*p*v*|+S+Y+`+g+t+z,Q,W,^,d,jPPP,pPPPP,t-Q-Z-gP.O.[SROTW!li!n!r#|T$Y!|$Z`QOTi!n!r!|#|$ZQfU`{a!P!R!W!Y#X#b%OQ$e#WY$m#w#y$o$q%VQ$t$OQ$|$]T%c%X%eQdQ`!Qa!P!R!W!Y#X#b%OQ!efQ#[{Q#l!`Q#t!kQ%W$tR%j%cQv_R#RwQqZSu_wQz`Q!tlQ!umQ!vnS!yr!zQ#f!UQ$T!wS$^#O$_Q$b#TR$w$RT$^#O$_QcQQ!bdQ!dfR#o!eQbQQt]S!acdQ!cfQ!woS#Z{!QQ#m!bS#n!d!eQ$h#[R$l#ok|a!P!R!W!Y#X#b#w#y$o$q%O%Vk}a!P!R!W!Y#X#b#w#y$o$q%O%VU#Y{|$mQ#k!`R$k#la!Sa!P!R!W!Y#X#b%OZ!Xa!R!Y#X%Oa!Va!P!R!W!Y#X#b%OS!gg!iR#e!TX!]a!R#X%OSROTT$Y!|$ZTROTRhVT!hg!iRjWX!li!n!r#|R#x!pR#z!qR!skT#{!r#|Q%Y$uR%h%[T%d%X%eRs[R!}tQTOReTQw_R#SwQ$_#OR$}$_Q#UzR$c#UQ%P$gR%_%PS#b!P!WR$i#bW!Za!R#X%OS#h!Z#iR#i![Q!igR#r!iQ!niR#u!nQ$o#wR%S$oQ#|!rR$r#|Q%e%XR%l%eQ!zrR$W!zQ$Z!|R$z$ZTSOTQ!_aQ#d!RQ$g#XR%^%OW![a!R#X%OR#g!YY!Pa!R!Y#X%OV#]!P!W#b`!Sa!P!R!W!Y#X#b%OS$n#w$oQ$q#yQ%U$qR%b%VY!Wa!R!Y#X%OV#a!P!W#bS!mi!nT#{!r#|\\\",nodeNames:\\\"⚠ LineComment BlockComment Grammar RuleDeclaration RuleName ] [ Props Prop AtName Name = Literal . } { PropEsc ParamList Body CharSet AnyChar InvertedCharSet ScopedName Call ArgList CharClass ? Optional * Repeat + Repeat1 InlineRule ) ( ParenExpression Specialization @specialize @extend Sequence PrecedenceMarker ! PrecedenceName AmbiguityMarker ~ Choice | RuleDeclaration @top PrecedenceDeclaration @precedence PrecedenceBody Precedence @left @right @cut TokensDeclaration @tokens TokensBody TokenPrecedenceDeclaration PrecedenceBody TokenConflictDeclaration @conflict ConflictBody LiteralTokenDeclaration LocalTokensDeclaration @local tokens TokensBody ElseToken @else ExternalTokensDeclaration @external from TokensBody Token ExternalPropDeclaration prop as ExternalPropSourceDeclaration propSource ExternalSpecializeDeclaration extend specialize ContextDeclaration @context DialectsDeclaration @dialects DialectBody TopSkipDeclaration @skip SkipScope SkipBody DetectDelimDeclaration @detectDelim\\\",maxTerm:125,nodeProps:[[\\\"group\\\",4,\\\"Declaration Declaration\\\",-16,5,13,20,21,22,23,24,26,28,30,32,33,36,37,40,46,\\\"Expression\\\",-16,48,50,57,60,62,65,66,72,77,80,82,85,87,90,92,94,\\\"Declaration\\\"],[\\\"openedBy\\\",6,\\\"[\\\",15,\\\"{\\\",34,\\\"(\\\"],[\\\"closedBy\\\",7,\\\"]\\\",16,\\\"}\\\",35,\\\")\\\"]],propSources:[lezerHighlighting],skippedNodes:[0,1,2],repeatNodeCount:14,tokenData:\\\"3w~R!OX^$Rpq$Rqr$vrs&ftu(^wx)zxy+myz+rz{+w{|+||},R}!O,W!O!P,}!P!Q-S!Q![,W!^!_.{!_!`/Q!`!a/V!a!b/[!b!c/a!c!},W!}#O0q#P#Q0v#R#S0{#T#o,W#o#p1n#p#q1s#q#r1x#r#s1}#y#z$R$f$g$R$g#BY,W#BY#BZ2S#BZ$IS,W$IS$I_2S$I_$I|,W$I|$JO2S$JO$JT,W$JT$JU2S$JU$KV,W$KV$KW2S$KW&FU,W&FU&FV2S&FV;'S,W;'S;=`,w\u003C%lO,W~$WY#d~X^$Rpq$R#y#z$R$f$g$R#BY#BZ$R$IS$I_$R$I|$JO$R$JT$JU$R$KV$KW$R&FU&FV$R~${Pz~!}#O%O~%RUO#O%O#O#P%e#P#Q&Z#Q;'S%O;'S;=`&`\u003C%lO%O~%hRO;'S%O;'S;=`%q;=`O%O~%tVO#O%O#O#P%e#P#Q&Z#Q;'S%O;'S;=`&`;=`\u003C%l%O\u003C%lO%O~&`Of~~&cP;=`\u003C%l%O~&kW]~OY&fZr&frs'Ts#O&f#O#P'Y#P;'S&f;'S;=`(W\u003C%lO&f~'YO]~~']RO;'S&f;'S;=`'f;=`O&f~'kX]~OY&fZr&frs'Ts#O&f#O#P'Y#P;'S&f;'S;=`(W;=`\u003C%l&f\u003C%lO&f~(ZP;=`\u003C%l&f~(aP!}#O(d~(gUO#O(d#O#P(y#P#Q)o#Q;'S(d;'S;=`)t\u003C%lO(d~(|RO;'S(d;'S;=`)V;=`O(d~)YVO#O(d#O#P(y#P#Q)o#Q;'S(d;'S;=`)t;=`\u003C%l(d\u003C%lO(d~)tOd~~)wP;=`\u003C%l(d~*PW]~OY)zZw)zwx'Tx#O)z#O#P*i#P;'S)z;'S;=`+g\u003C%lO)z~*lRO;'S)z;'S;=`*u;=`O)z~*zX]~OY)zZw)zwx'Tx#O)z#O#P*i#P;'S)z;'S;=`+g;=`\u003C%l)z\u003C%lO)z~+jP;=`\u003C%l)z~+rOs~~+wOr~~+|Om~~,ROo~~,WO#g~R,_W#fP#qQ}!O,W!Q![,W!c!},W#R#S,W#T#o,W$g;'S,W;'S;=`,w\u003C%lO,WR,zP;=`\u003C%l,W~-SO^~~-VQz{-]!P!Q.d~-`TOz-]z{-o{;'S-];'S;=`.^\u003C%lO-]~-rVOz-]z{-o{!P-]!P!Q.X!Q;'S-];'S;=`.^\u003C%lO-]~.^OQ~~.aP;=`\u003C%l-]~.iSP~OY.dZ;'S.d;'S;=`.u\u003C%lO.d~.xP;=`\u003C%l.d~/QO#i~~/VO[~~/[O#h~~/aOk~~/dW}!O/|!Q![/|!c!}/|#R#S/|#T#o/|$g;'S/|;'S;=`0k\u003C%lO/|~0RWY~}!O/|!Q![/|!c!}/|#R#S/|#T#o/|$g;'S/|;'S;=`0k\u003C%lO/|~0nP;=`\u003C%l/|~0vOV~~0{OU~R1UWeP#fP#qQ}!O,W!Q![,W!c!},W#R#S,W#T#o,W$g;'S,W;'S;=`,w\u003C%lO,W~1sO`~~1xO!P~~1}O_~~2SO}~~2]h#d~#fP#qQX^$Rpq$R}!O,W!Q![,W!c!},W#R#S,W#T#o,W#y#z$R$f$g$R$g#BY,W#BY#BZ2S#BZ$IS,W$IS$I_2S$I_$I|,W$I|$JO2S$JO$JT,W$JT$JU2S$JU$KV,W$KV$KW2S$KW&FU,W&FU&FV2S&FV;'S,W;'S;=`,w\u003C%lO,W\\\",tokenizers:[0,1],topRules:{\\\"Grammar\\\":[0,3]},specialized:[{term:10,get:value=>spec_AtName[value]||-1},{term:125,get:value=>spec_keyword[value]||-1}],tokenPrec:1086});const lezerLanguage=LRLanguage.define({name:\\\"lezer\\\",parser:parser$6.configure({props:[foldNodeProp.add({\\\"Body TokensBody SkipBody PrecedenceBody\\\":foldInside})]}),languageData:{commentTokens:{block:{open:\\\"/*\\\",close:\\\"*/\\\"},line:\\\"//\\\"},indentOnInput:/^\\\\s*\\\\}$/}});function lezer(){return new LanguageSupport(lezerLanguage);}var _m22=Object.freeze({__proto__:null,lezer:lezer,lezerLanguage:lezerLanguage});const spec_Keyword={__proto__:null,anyref:34,dataref:34,eqref:34,externref:34,i31ref:34,funcref:34,i8:34,i16:34,i32:34,i64:34,f32:34,f64:34};const parser$5=LRParser.deserialize({version:14,states:\\\"!^Q]QPOOOqQPO'#CbOOQO'#Cd'#CdOOQO'#Cl'#ClOOQO'#Ch'#ChQ]QPOOOOQO,58|,58|OxQPO,58|OOQO-E6f-E6fOOQO1G.h1G.h\\\",stateData:\\\"!P~O_OSPOSQOS~OTPOVROXROYROZROaQO~OSUO~P]OSXO~P]O\\\",goto:\\\"xaPPPPPPbPbPPPhPPPrXROPTVQTOQVPTWTVXSOPTV\\\",nodeNames:\\\"⚠ LineComment BlockComment Module ) ( App Identifier Type Keyword Number String\\\",maxTerm:17,nodeProps:[[\\\"isolate\\\",-3,1,2,11,\\\"\\\"],[\\\"openedBy\\\",4,\\\"(\\\"],[\\\"closedBy\\\",5,\\\")\\\"],[\\\"group\\\",-6,6,7,8,9,10,11,\\\"Expression\\\"]],skippedNodes:[0,1,2],repeatNodeCount:1,tokenData:\\\"0o~R^XY}YZ}]^}pq}rs!Stu#pxy'Uyz(e{|(j}!O(j!Q!R(s!R![*p!]!^.^#T#o.{~!SO_~~!VVOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j\u003C%lO!S~!qOZ~~!tRO;'S!S;'S;=`!};=`O!S~#QWOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j;=`\u003C%l!S\u003C%lO!S~#mP;=`\u003C%l!S~#siqr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~%giV~qr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~'ZPT~!]!^'^~'aTO!]'^!]!^'p!^;'S'^;'S;=`(_\u003C%lO'^~'sVOy'^yz(Yz!]'^!]!^'p!^;'S'^;'S;=`(_\u003C%lO'^~(_OQ~~(bP;=`\u003C%l'^~(jOS~~(mQ!Q!R(s!R![*p~(xUY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){#l#m+[~)aRY~!Q![)j!g!h){#X#Y){~)oSY~!Q![)j!g!h){#R#S*j#X#Y){~*OR{|*X}!O*X!Q![*_~*[P!Q![*_~*dQY~!Q![*_#R#S*X~*mP!Q![)j~*uTY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){~+XP!Q![*p~+_R!Q![+h!c!i+h#T#Z+h~+mVY~!O!P,S!Q![+h!c!i+h!r!s-P#R#S+[#T#Z+h#d#e-P~,XTY~!Q![,h!c!i,h!r!s-P#T#Z,h#d#e-P~,mUY~!Q![,h!c!i,h!r!s-P#R#S.Q#T#Z,h#d#e-P~-ST{|-c}!O-c!Q![-o!c!i-o#T#Z-o~-fR!Q![-o!c!i-o#T#Z-o~-tSY~!Q![-o!c!i-o#R#S-c#T#Z-o~.TR!Q![,h!c!i,h#T#Z,h~.aP!]!^.d~.iSP~OY.dZ;'S.d;'S;=`.u\u003C%lO.d~.xP;=`\u003C%l.d~/QiX~qr.{st.{tu.{uv.{vw.{wx.{z{.{{|.{}!O.{!O!P.{!P!Q.{!Q![.{![!].{!^!_.{!_!`.{!`!a.{!a!b.{!b!c.{!c!}.{#Q#R.{#R#S.{#S#T.{#T#o.{#p#q.{#r#s.{\\\",tokenizers:[0],topRules:{\\\"Module\\\":[0,3]},specialized:[{term:9,get:value=>spec_Keyword[value]||-1}],tokenPrec:0});const wastLanguage=LRLanguage.define({name:\\\"wast\\\",parser:parser$5.configure({props:[indentNodeProp.add({App:delimitedIndent({closing:\\\")\\\",align:false})}),foldNodeProp.add({App:foldInside,BlockComment(tree){return{from:tree.from+2,to:tree.to-2};}}),styleTags({Keyword:tags$1.keyword,Type:tags$1.typeName,Number:tags$1.number,String:tags$1.string,Identifier:tags$1.variableName,LineComment:tags$1.lineComment,BlockComment:tags$1.blockComment,\\\"( )\\\":tags$1.paren})]}),languageData:{commentTokens:{line:\\\";;\\\",block:{open:\\\"(;\\\",close:\\\";)\\\"}},closeBrackets:{brackets:[\\\"(\\\",'\\\"']}}});function wast(){return new LanguageSupport(wastLanguage);}var _m23=Object.freeze({__proto__:null,wast:wast,wastLanguage:wastLanguage});const Text=1,attributeContentSingle=33,attributeContentDouble=34,scriptAttributeContentSingle=35,scriptAttributeContentDouble=36;const text$1=new ExternalTokenizer(input=>{let start=input.pos;for(;;){if(input.next==10){input.advance();break;}else if(input.next==123&&input.peek(1)==123||input.next\u003C0){break;}input.advance();}if(input.pos>start)input.acceptToken(Text);});function attrContent(quote,token,script){return new ExternalTokenizer(input=>{let start=input.pos;while(input.next!=quote&&input.next>=0&&(script||input.next!=38&&(input.next!=123||input.peek(1)!=123)))input.advance();if(input.pos>start)input.acceptToken(token);});}const attrSingle=attrContent(39,attributeContentSingle,false);const attrDouble=attrContent(34,attributeContentDouble,false);const scriptAttrSingle=attrContent(39,scriptAttributeContentSingle,true);const scriptAttrDouble=attrContent(34,scriptAttributeContentDouble,true);const parser$4=LRParser.deserialize({version:14,states:\\\"(jOVOqOOOeQpOOOvO!bO'#CaOOOP'#Cx'#CxQVOqOOO!OQpO'#CfO!WQpO'#ClO!]QpO'#CrO!bQpO'#CsOOQO'#Cv'#CvQ!gQpOOQ!lQpOOQ!qQpOOOOOV,58{,58{O!vOpO,58{OOOP-E6v-E6vO!{QpO,59QO#TQpO,59QOOQO,59W,59WO#YQpO,59^OOQO,59_,59_O#_QpOOO#_QpOOO#gQpOOOOOV1G.g1G.gO#oQpO'#CyO#tQpO1G.lOOQO1G.l1G.lO#|QpO1G.lOOQO1G.x1G.xO$UO`O'#DUO$ZOWO'#DUOOQO'#Co'#CoQOQpOOOOQO'#Cu'#CuO$`OtO'#CwO$qOrO'#CwOOQO,59e,59eOOQO-E6w-E6wOOQO7+$W7+$WO%SQpO7+$WO%[QpO7+$WOOOO'#Cp'#CpO%aOpO,59pOOOO'#Cq'#CqO%fOpO,59pOOOS'#Cz'#CzO%kOtO,59cOOQO,59c,59cOOOQ'#C{'#C{O%|OrO,59cO&_QpO\u003C\u003CGrOOQO\u003C\u003CGr\u003C\u003CGrOOQO1G/[1G/[OOOS-E6x-E6xOOQO1G.}1G.}OOOQ-E6y-E6yOOQOAN=^AN=^\\\",stateData:\\\"&d~OvOS~OPROSQOVROWRO~OZTO[XO^VOaUOhWO~OR]OU^O~O[`O^aO~O[bO~O[cO~O[dO~ObeO~ObfO~ObgO~ORhO~O]kOwiO~O[lO~O_mO~OynOzoO~OysOztO~O[uO~O]wOwiO~O_yOwiO~OtzO~Os|O~OSQOV!OOW!OOr!OOy!QO~OSQOV!ROW!ROq!ROz!QO~O_!TOwiO~O]!UO~Oy!VO~Oz!VO~OSQOV!OOW!OOr!OOy!XO~OSQOV!ROW!ROq!ROz!XO~O]!ZO~O\\\",goto:\\\"#dyPPPPPzPPPP!WPPPPP!WPP!Z!^!a!d!dP!g!j!m!p!v#Q#WPPPPPPPP#^SROSS!Os!PT!Rt!SRYPRqeR{nR}oRZPRqfR[PRqgQSOR_SQj`SvjxRxlQ!PsR!W!PQ!StR!Y!SQpeRrf\\\",nodeNames:\\\"⚠ Text Content }} {{ Interpolation InterpolationContent Entity InvalidEntity Attribute BoundAttributeName [ Identifier ] ( ) ReferenceName # Is ExpressionAttributeValue AttributeInterpolation AttributeInterpolation EventName DirectiveName * StatementAttributeValue AttributeName AttributeValue\\\",maxTerm:42,nodeProps:[[\\\"openedBy\\\",3,\\\"{{\\\",15,\\\"(\\\"],[\\\"closedBy\\\",4,\\\"}}\\\",14,\\\")\\\"],[\\\"isolate\\\",-4,5,19,25,27,\\\"\\\"]],skippedNodes:[0],repeatNodeCount:4,tokenData:\\\"0r~RyOX#rXY$mYZ$mZ]#r]^$m^p#rpq$mqr#rrs%jst&Qtv#rvw&hwx)zxy*byz*xz{+`{}#r}!O+v!O!P-]!P!Q#r!Q![+v![!]+v!]!_#r!_!`-s!`!c#r!c!}+v!}#O.Z#O#P#r#P#Q.q#Q#R#r#R#S+v#S#T#r#T#o+v#o#p/X#p#q#r#q#r0Z#r%W#r%W;'S+v;'S;:j-V;:j;=`$g\u003C%lO+vQ#wTUQO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rQ$ZSO#q#r#r;'S#r;'S;=`$g\u003C%lO#rQ$jP;=`\u003C%l#rR$t[UQvPOX#rXY$mYZ$mZ]#r]^$m^p#rpq$mq#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR%qTyPUQO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR&XTaPUQO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR&oXUQWPOp'[pq#rq!]'[!]!^#r!^#q'[#q#r(d#r;'S'[;'S;=`)t\u003C%lO'[R'aXUQOp'[pq#rq!]'[!]!^'|!^#q'[#q#r(d#r;'S'[;'S;=`)t\u003C%lO'[R(TTVPUQO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR(gXOp'[pq#rq!]'[!]!^'|!^#q'[#q#r)S#r;'S'[;'S;=`)t\u003C%lO'[P)VUOp)Sq!])S!]!^)i!^;'S)S;'S;=`)n\u003C%lO)SP)nOVPP)qP;=`\u003C%l)SR)wP;=`\u003C%l'[R*RTzPUQO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR*iT^PUQO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR+PT_PUQO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR+gThPUQO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR+}b[PUQO}#r}!O+v!O!Q#r!Q![+v![!]+v!]!c#r!c!}+v!}#R#r#R#S+v#S#T#r#T#o+v#o#q#r#q#r$W#r%W#r%W;'S+v;'S;:j-V;:j;=`$g\u003C%lO+vR-YP;=`\u003C%l+vR-dTwPUQO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR-zTUQbPO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR.bTZPUQO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR.xT]PUQO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR/^VUQO#o#r#o#p/s#p#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#rR/zTSPUQO#q#r#q#r$W#r;'S#r;'S;=`$g\u003C%lO#r~0^TO#q#r#q#r0m#r;'S#r;'S;=`$g\u003C%lO#r~0rOR~\\\",tokenizers:[text$1,attrSingle,attrDouble,scriptAttrSingle,scriptAttrDouble,0,1],topRules:{\\\"Content\\\":[0,2],\\\"Attribute\\\":[1,9]},tokenPrec:0});const exprParser$1=javascriptLanguage.parser.configure({top:\\\"SingleExpression\\\"});const baseParser$1=parser$4.configure({props:[styleTags({Text:tags$1.content,Is:tags$1.definitionOperator,AttributeName:tags$1.attributeName,\\\"AttributeValue ExpressionAttributeValue StatementAttributeValue\\\":tags$1.attributeValue,Entity:tags$1.character,InvalidEntity:tags$1.invalid,\\\"BoundAttributeName/Identifier\\\":tags$1.attributeName,\\\"EventName/Identifier\\\":tags$1.special(tags$1.attributeName),\\\"ReferenceName/Identifier\\\":tags$1.variableName,\\\"DirectiveName/Identifier\\\":tags$1.keyword,\\\"{{ }}\\\":tags$1.brace,\\\"( )\\\":tags$1.paren,\\\"[ ]\\\":tags$1.bracket,\\\"# '*'\\\":tags$1.punctuation})]});const exprMixed$1={parser:exprParser$1},statementMixed={parser:javascriptLanguage.parser};const textParser$1=baseParser$1.configure({wrap:parseMixed((node,input)=>node.name==\\\"InterpolationContent\\\"?exprMixed$1:null)});const attrParser$1=baseParser$1.configure({wrap:parseMixed((node,input)=>{var _a;return node.name==\\\"InterpolationContent\\\"?exprMixed$1:node.name!=\\\"AttributeInterpolation\\\"?null:((_a=node.node.parent)===null||_a===void 0?void 0:_a.name)==\\\"StatementAttributeValue\\\"?statementMixed:exprMixed$1;}),top:\\\"Attribute\\\"});const textMixed$1={parser:textParser$1},attrMixed$1={parser:attrParser$1};const baseHTML$2=html();function mkAngular(language){return language.configure({wrap:parseMixed(mixAngular)},\\\"angular\\\");}const angularLanguage=mkAngular(baseHTML$2.language);function mixAngular(node,input){switch(node.name){case\\\"Attribute\\\":return /^[*#(\\\\[]|\\\\{\\\\{/.test(input.read(node.from,node.to))?attrMixed$1:null;case\\\"Text\\\":return textMixed$1;}return null;}function angular(config={}){let base=baseHTML$2;if(config.base){if(config.base.language.name!=\\\"html\\\"||!(config.base.language instanceof LRLanguage))throw new RangeError(\\\"The base option must be the result of calling html(...)\\\");base=config.base;}return new LanguageSupport(base.language==baseHTML$2.language?angularLanguage:mkAngular(base.language),[base.support,base.language.data.of({closeBrackets:{brackets:[\\\"[\\\",\\\"{\\\",'\\\"']},indentOnInput:/^\\\\s*[\\\\}\\\\]]$/})]);}var _m24=Object.freeze({__proto__:null,angular:angular,angularLanguage:angularLanguage});const parser$3=LRParser.deserialize({version:14,states:\\\"%pOVOWOOObQPOOOpOSO'#C_OOOO'#Cp'#CpQVOWOOQxQPOOO!TQQOOQ!YQPOOOOOO,58y,58yO!_OSO,58yOOOO-E6n-E6nO!dQQO'#CqQ{QPOOO!iQPOOQ{QPOOO!qQPOOOOOO1G.e1G.eOOQO,59],59]OOQO-E6o-E6oO!yOpO'#CiO#RO`O'#CiQOQPOOO#ZO#tO'#CmO#fO!bO'#CmOOQO,59T,59TO#qOpO,59TO#vO`O,59TOOOO'#Cr'#CrO#{O#tO,59XOOQO,59X,59XOOOO'#Cs'#CsO$WO!bO,59XOOQO1G.o1G.oOOOO-E6p-E6pOOQO1G.s1G.sOOOO-E6q-E6q\\\",stateData:\\\"$g~OjOS~OQROUROkQO~OWTOXUOZUO`VO~OSXOTWO~OXUO[]OlZO~OY^O~O[_O~OT`O~OYaO~OmcOodO~OmfOogO~O^iOnhO~O_jOphO~ObkOqkOrmO~OcnOsnOtmO~OnpO~OppO~ObkOqkOrrO~OcnOsnOtrO~OWX`~\\\",goto:\\\"!^hPPPiPPPPPPPPPmPPPpPPsy!Q!WTROSRe]Re_QSORYSS[T^Rb[QlfRqlQogRso\\\",nodeNames:\\\"⚠ Content Text Interpolation InterpolationContent }} Entity Attribute VueAttributeName : Identifier @ Is ScriptAttributeValue AttributeScript AttributeScript AttributeName AttributeValue Entity Entity\\\",maxTerm:36,nodeProps:[[\\\"isolate\\\",-3,3,13,17,\\\"\\\"]],skippedNodes:[0],repeatNodeCount:4,tokenData:\\\"'y~RdXY!aYZ!a]^!apq!ars!rwx!w}!O!|!O!P#t!Q![#y![!]$s!_!`%g!b!c%l!c!}#y#R#S#y#T#j#y#j#k%q#k#o#y%W;'S#y;'S;:j$m\u003C%lO#y~!fSj~XY!aYZ!a]^!apq!a~!wOm~~!|Oo~!b#RX`!b}!O!|!Q![!|![!]!|!c!}!|#R#S!|#T#o!|%W;'S!|;'S;:j#n\u003C%lO!|!b#qP;=`\u003C%l!|~#yOl~%W$QXY#t`!b}!O!|!Q![#y![!]!|!c!}#y#R#S#y#T#o#y%W;'S#y;'S;:j$m\u003C%lO#y%W$pP;=`\u003C%l#y~$zXX~`!b}!O!|!Q![!|![!]!|!c!}!|#R#S!|#T#o!|%W;'S!|;'S;:j#n\u003C%lO!|~%lO[~~%qOZ~%W%xXY#t`!b}!O&e!Q![#y![!]!|!c!}#y#R#S#y#T#o#y%W;'S#y;'S;:j$m\u003C%lO#y!b&jX`!b}!O!|!Q![!|![!]!|!c!}'V#R#S!|#T#o'V%W;'S!|;'S;:j#n\u003C%lO!|!b'^XW!b`!b}!O!|!Q![!|![!]!|!c!}'V#R#S!|#T#o'V%W;'S!|;'S;:j#n\u003C%lO!|\\\",tokenizers:[6,7,new LocalTokenGroup(\\\"b~RP#q#rU~XP#q#r[~aOT~~\\\",17,4),new LocalTokenGroup(\\\"!k~RQvwX#o#p!_~^TU~Opmq!]m!^;'Sm;'S;=`!X\u003C%lOm~pUOpmq!]m!]!^!S!^;'Sm;'S;=`!X\u003C%lOm~!XOU~~![P;=`\u003C%lm~!bP#o#p!e~!jOk~~\\\",72,2),new LocalTokenGroup(\\\"[~RPwxU~ZOp~~\\\",11,15),new LocalTokenGroup(\\\"[~RPrsU~ZOn~~\\\",11,14),new LocalTokenGroup(\\\"!e~RQvwXwx!_~^Tc~Opmq!]m!^;'Sm;'S;=`!X\u003C%lOm~pUOpmq!]m!]!^!S!^;'Sm;'S;=`!X\u003C%lOm~!XOc~~![P;=`\u003C%lm~!dOt~~\\\",66,35),new LocalTokenGroup(\\\"!e~RQrsXvw^~^Or~~cTb~Oprq!]r!^;'Sr;'S;=`!^\u003C%lOr~uUOprq!]r!]!^!X!^;'Sr;'S;=`!^\u003C%lOr~!^Ob~~!aP;=`\u003C%lr~\\\",66,33)],topRules:{\\\"Content\\\":[0,1],\\\"Attribute\\\":[1,7]},tokenPrec:157});const exprParser=javascriptLanguage.parser.configure({top:\\\"SingleExpression\\\"});const baseParser=parser$3.configure({props:[styleTags({Text:tags$1.content,Is:tags$1.definitionOperator,AttributeName:tags$1.attributeName,VueAttributeName:tags$1.keyword,Identifier:tags$1.variableName,\\\"AttributeValue ScriptAttributeValue\\\":tags$1.attributeValue,Entity:tags$1.character,\\\"{{ }}\\\":tags$1.brace,\\\"@ :\\\":tags$1.punctuation})]});const exprMixed={parser:exprParser};const textParser=baseParser.configure({wrap:parseMixed((node,input)=>node.name==\\\"InterpolationContent\\\"?exprMixed:null)});const attrParser=baseParser.configure({wrap:parseMixed((node,input)=>node.name==\\\"AttributeScript\\\"?exprMixed:null),top:\\\"Attribute\\\"});const textMixed={parser:textParser},attrMixed={parser:attrParser};const baseHTML$1=html();function makeVue(base){return base.configure({dialect:\\\"selfClosing\\\",wrap:parseMixed(mixVue)},\\\"vue\\\");}const vueLanguage=makeVue(baseHTML$1.language);function mixVue(node,input){switch(node.name){case\\\"Attribute\\\":return /^(@|:|v-)/.test(input.read(node.from,node.from+2))?attrMixed:null;case\\\"Text\\\":return textMixed;}return null;}function vue(config={}){let base=baseHTML$1;if(config.base){if(config.base.language.name!=\\\"html\\\"||!(config.base.language instanceof LRLanguage))throw new RangeError(\\\"The base option must be the result of calling html(...)\\\");base=config.base;}return new LanguageSupport(base.language==baseHTML$1.language?vueLanguage:makeVue(base.language),[base.support,base.language.data.of({closeBrackets:{brackets:[\\\"{\\\",'\\\"']}})]);}var _m25=Object.freeze({__proto__:null,vue:vue,vueLanguage:vueLanguage});const interpolationStart=1,tagStart=2,endTagStart=3,text=180,endrawTagStart=4,rawText=181,endcommentTagStart=5,commentText=182;function wordChar$1(code){return code>=65&&code\u003C=90||code>=97&&code\u003C=122;}const base=new ExternalTokenizer(input=>{let start=input.pos;for(;;){let{next}=input;if(next\u003C0)break;if(next==123){let after=input.peek(1);if(after==123){if(input.pos>start)break;input.acceptToken(interpolationStart,2);return;}else if(after==37){if(input.pos>start)break;let scan=2,size=2;for(;;){let next=input.peek(scan);if(next==32||next==10){++scan;}else if(next==35){++scan;for(;;){let comment=input.peek(scan);if(comment\u003C0||comment==10)break;scan++;}}else if(next==45&&size==2){size=++scan;}else{let end=next==101&&input.peek(scan+1)==110&&input.peek(scan+2)==100;input.acceptToken(end?endTagStart:tagStart,size);return;}}}}input.advance();if(next==10)break;}if(input.pos>start)input.acceptToken(text);});function rawTokenizer(endTag,text,tagStart){return new ExternalTokenizer(input=>{let start=input.pos;for(;;){let{next}=input;if(next==123&&input.peek(1)==37){let scan=2;for(;;scan++){let ch=input.peek(scan);if(ch!=32&&ch!=10)break;}let word=\\\"\\\";for(;;scan++){let next=input.peek(scan);if(!wordChar$1(next))break;word+=String.fromCharCode(next);}if(word==endTag){if(input.pos>start)break;input.acceptToken(tagStart,2);break;}}else if(next\u003C0){break;}input.advance();if(next==10)break;}if(input.pos>start)input.acceptToken(text);});}const comment=rawTokenizer(\\\"endcomment\\\",commentText,endcommentTagStart);const raw=rawTokenizer(\\\"endraw\\\",rawText,endrawTagStart);const spec_identifier$1={__proto__:null,contains:32,or:36,and:36,true:50,false:50,empty:52,forloop:54,tablerowloop:56,continue:58,in:128,with:194,for:196,as:198,if:234,endif:238,unless:244,endunless:248,elsif:252,else:256,case:262,endcase:266,when:270,endfor:278,tablerow:284,endtablerow:288,break:292,cycle:298,echo:302,render:306,include:312,assign:316,capture:322,endcapture:326,increment:330,decrement:334};const spec_TagName={__proto__:null,if:82,endif:86,elsif:90,else:94,unless:100,endunless:104,case:110,endcase:114,when:118,for:126,endfor:136,tablerow:142,endtablerow:146,break:150,continue:154,cycle:158,comment:164,endcomment:170,raw:176,endraw:182,echo:186,render:190,include:202,assign:206,capture:212,endcapture:216,increment:220,decrement:224,liquid:228};const parser$2=LRParser.deserialize({version:14,states:\\\"GYQYOPOOOOOP'#F{'#F{OeOXO'#CdOsQWO'#CfO!bQ`O'#DQO#{OPO'#DTO$ZOPO'#D^O$iOPO'#DcO$wOPO'#DkO%VOPO'#DsO%eOSO'#EOO%jOQO'#EUO%oOPO'#EhOOOP'#G`'#G`OOOP'#G]'#G]OOOP'#Fz'#FzQYOPOOOOOP-E9y-E9yOOQO'#Cg'#CgO&`QpO,59QO&gQpO'#G^OsQWO'#CsOOQO'#G^'#G^OOOP,59l,59lO)PQWO,59lOsQWO,59pOsQWO,59tO)WQWO,59vOsQWO,59yOsQWO,5:OOsQWO,5:SO!]QWO,5:WO!]QWO,5:`O)]QWO,5:dO)bQWO,5:fO)gQWO,5:hO)lQWO,5:kO)qQWO,5:qOsQWO,5:vOsQWO,5:xOsQWO,5;OOsQWO,5;QOsQWO,5;TOsQWO,5;XOsQWO,5;ZO+QQWO,5;]O+XOPO'#CdOOOP,59o,59oO#{OPO,59oO+gQ`O'#DWOOOP,59x,59xO$ZOPO,59xO+lQ`O'#DaOOOP,59},59}O$iOPO,59}O+qQ`O'#DfOOOP,5:V,5:VO$wOPO,5:VO+vQ`O'#DqOOOP,5:_,5:_O%VOPO,5:_O+{Q`O'#DvOOOS'#GQ'#GQO,QOSO'#ERO,YOSO,5:jOOOQ'#GR'#GRO,_OQO'#EXO,gOQO,5:pOOOP,5;S,5;SO%oOPO,5;SO,lQ`O'#EkOOOP-E9x-E9xO,qQ!bO,59SOsQWO,59VOsQWO,59VO,vQWO'#C|OOQO'#F|'#F|O,{QWO1G.lOOOP1G.l1G.lOsQWO,59VOsQWO,59ZO-TQpO,59_O-fQpO1G/WOOOP1G/W1G/WO-wQpO1G/[O.YQpO1G/`OOOP1G/b1G/bO.kQpO1G/eO.|QpO1G/jO/pQpO1G/nO/wQWO1G/rO/|QWO1G/zOOOP1G0O1G0OOOOP1G0Q1G0QO0RQWO1G0SOOOS1G0V1G0VOOOQ1G0]1G0]O0^QpO1G0bO0eQpO1G0dO1PQpO1G0jO1bQpO1G0lO1sQpO1G0oO2UQpO1G0sO2gQpO1G0uO2xQWO'#EsO3PQWO'#ExO3WQWO'#FRO3_QWO'#FYO3fQWO'#F^O3mQWO'#FqOOQO'#Ga'#GaOOQO'#GT'#GTO3tQWO1G0wOsQWO'#EtOsQWO'#EyOsQWO'#E}OOQO'#FP'#FPOsQWO'#FSOsQWO'#FWO!]QWO'#FZO!]QWO'#F_OOQO'#Fc'#FcOOQO'#Fe'#FeO3{QWO'#FfOsQWO'#FhOsQWO'#FjOsQWO'#FmOsQWO'#FoOsQWO'#FrOsQWO'#FvOsQWO'#FxOOOP1G0w1G0wOOOP1G/Z1G/ZO4QQWO,59rOOOP1G/d1G/dO4VQWO,59{OOOP1G/i1G/iO4[QWO,5:QOOOP1G/q1G/qO4aQWO,5:]OOOP1G/y1G/yO4fQWO,5:bOOOS-E:O-E:OOOOP1G0U1G0UO4kQ`O'#ESOOOQ-E:P-E:POOOP1G0[1G0[O4pQ`O'#EYOOOP1G0n1G0nO4uQWO,5;VOOQO1G.n1G.nOOQO1G.q1G.qO7ZQpO1G.qOOQO'#DO'#DOO7eQWO,59hOOQO-E9z-E9zOOOP7+$W7+$WO9_QpO1G.qO9iQpO1G.uOsQWO1G.yOOOP7+$r7+$rOOOP7+$v7+$vOOOP7+$z7+$zOOOP7+%P7+%POOOP7+%U7+%UOsQWO'#F}O\u003COQWO7+%YOOOP7+%Y7+%YOsQWO7+%^OsQWO7+%fO\u003CWQWO'#GPO\u003C]QWO7+%nOOOP7+%n7+%nO\u003CeQWO7+%nO\u003CjQWO7+%|OOOP7+%|7+%|O!]QWO'#E`OOQO'#GS'#GSO\u003CrQWO7+&OOsQWO'#E`OOOP7+&O7+&OOOOP7+&U7+&UOOOP7+&W7+&WOOOP7+&Z7+&ZOOOP7+&_7+&_OOOP7+&a7+&aOOQO,5;_,5;_O2xQWO,5;_OOQO'#Ev'#EvOOQO,5;d,5;dO3PQWO,5;dOOQO'#E{'#E{OOQO,5;m,5;mO3WQWO,5;mOOQO'#FU'#FUOOQO,5;t,5;tO3_QWO,5;tOOQO'#F['#F[OOQO,5;x,5;xO3fQWO,5;xOOQO'#Fa'#FaOOQO,5\u003C],5\u003C]O3mQWO,5\u003C]OOQO'#Ft'#FtOOQO-E:R-E:ROOOP7+&c7+&cO=QQpO,5;`O>kQpO,5;eO@UQpO,5;iOBRQpO,5;nOClQpO,5;rOE_QWO,5;uOEdQWO,5;yOEiQWO,5\u003CQOG`QpO,5\u003CSOIRQpO,5\u003CUOKRQpO,5\u003CXOMOQpO,5\u003CZON{QpO,5\u003C^O!!fQpO,5\u003CbO!$cQpO,5\u003CdOOOP1G/^1G/^OOOP1G/g1G/gOOOP1G/l1G/lOOOP1G/w1G/wOOOP1G/|1G/|O!&`QWO,5:nO!&eQWO,5:tOOOP1G0q1G0qOsQWO1G/SO!&jQpO7+$eO!&{QpO,5\u003CiOOQO-E9{-E9{OOOP\u003C\u003CHt\u003C\u003CHtO!)^QpO\u003C\u003CHxO!)eQpO\u003C\u003CIQOOQO,5\u003Ck,5\u003CkOOQO-E9}-E9}OOOP\u003C\u003CIY\u003C\u003CIYO!)lQWO\u003C\u003CIYOOOP\u003C\u003CIh\u003C\u003CIhO!)tQWO,5:zOOQO-E:Q-E:QOOOP\u003C\u003CIj\u003C\u003CIjO!)yQpO,5:zOOQO1G0y1G0yOOQO1G1O1G1OOOQO1G1X1G1XOOQO1G1`1G1`OOQO1G1d1G1dOOQO1G1w1G1wO!*hQWO1G1^OsQWO1G1aOsQWO1G1eO!,[QWO1G1lO!.OQWO1G1lO!.TQWO1G1nO!]QWO'#FlOOQO'#GU'#GUO!/wQWO1G1pOOOP1G0Y1G0YOOOP1G0`1G0`O!1kQpO7+$nOOQO\u003C\u003CHP\u003C\u003CHPOOQO'#Dp'#DpO!3nQWO'#DoOOQO'#GO'#GOO!5XQWOAN>dOOOPAN>dAN>dO!5aQWOAN>lOOOPAN>lAN>lO!5iQWOAN>tOOOPAN>tAN>tOsQWO1G0fO!]QWO1G0fO!5qQpO7+&{O!7QQpO7+'PO!8aQWO7+'WO!:TQWO,5\u003CWOOQO-E:S-E:SOsQWO,5:ZOOQO-E9|-E9|OOOPG24OG24OOOOPG24WG24WOOOPG24`G24`O!:YQpO7+&QOOQO7+&Q7+&QO!:tQWO\u003C\u003CJgO!\u003CUQWO\u003C\u003CJkO!=fQWO\u003C\u003CJrOsQWO1G1rO!?YQpO1G/uO!@|QpO7+'^\\\",stateData:\\\"!B|~O%OOSUOS~OPROQSO$zPO~O$zPOPWXQWX$yWX~OfeOifOjfOkfOlfOmfOnfOofO%RbO~OuhOvgOyiO}jO!PkO!SlO!XmO!]nO!aoO!ipO!mqO!orO!qsO!ttO!zuO#PvO#RwO#XxO#ZyO#^zO#b{O#d|O#f}O~OPROQSOR!RO$zPO~OPROQSOR!UO$zPO~OPROQSOR!XO$zPO~OPROQSOR![O$zPO~OPROQSOR!_O$zPO~O$|!`O~O${!cO~OPROQSOR!hO$zPO~O]!jO`!qOa!kOb!lOq!mO~OX!pO~P%}Od!rOX%QX]%QX`%QXa%QXb%QXq%QXh%QXv%QX!^%QX#T%QX#U%QXm%QX#i%QX#k%QX#n%QX#r%QX#t%QX#w%QX#{%QX$S%QX$W%QX$Z%QX$]%QX$_%QX$b%QX$d%QX$g%QX$k%QX$m%QX#p%QX#y%QX$i%QXe%QX%R%QX#V%QX$P%QX$U%QX~Ov!uO~PsOv!xO~Ov#OO~Ov#PO~On#QO~Ov#RO~Ov#SO~Om#nO#U#kO#i#eO#n#fO#r#gO#t#hO#w#iO#{#jO$S#lO$W#mO$Z#oO$]#pO$_#qO$b#rO$d#sO$g#tO$k#uO$m#vO~Ov#wO~P)vO$zPOPWXQWXRWX~O{#yO~O!U#{O~O!Z#}O~O!f$PO~O!k$RO~O$|!`OT!uX~OT$UO~O${!cOS!{X~OS$XO~O#`$ZO~O^$[O~O%R$_O~OX$bOq!mO~O]!jO`!qOa!kOb!lOh$eO~O]!jO`!qOa!kOb!lOv$fO~O]!jO`!qOa!kOb!lOv$gO~O]!jO`!qOa!kOb!lOv$hO~O]!jO`!qOa!kOb!lOv$iO~O]!jO`!qOa!kOb!lOv$jO~O]!jO`!qOa!kOb!lO!^$kO~Ov$mO~P/_O!b$nO~O!b$oO~Os$sOv$rO!^$pO~Ov$uO~P%}O]!jO`!qOa!kOb!lOv$zO!^$vO#T$yO#U$yO~O]!jO`!qOa!kOb!lOv${O~O]!jO`!qOa!kOb!lOv$|O~O]!jO`!qOa!kOb!lOv$}O~O]!jO`!qOa!kOb!lOv%OO~O]!jO`!qOa!kOb!lOv%PO~O#k%SO~P)vO#p%VO~P)vO#y%YO~P)vO$P%]O~P)vO$U%`O~P)vO$i%cO~P)vOv%eO~P)vOn%mO~Ov%uO~Ov%vO~Ov%wO~Ov%xO~Ov%yO~O!w%zO~O!}%{O~Ov%|O~Oa!kOX_i]_iq_ih_iv_i!^_i#T_i#U_im_i#i_i#k_i#n_i#r_i#t_i#w_i#{_i$S_i$W_i$Z_i$]_i$__i$b_i$d_i$g_i$k_i$m_i#p_i#y_i$i_ie_i%R_i#V_i$P_i$U_i~O`!qOb!lO~P4zOs%}OXpaqpavpampa#Upa#ipa#npa#rpa#tpa#wpa#{pa$Spa$Wpa$Zpa$]pa$_pa$bpa$dpa$gpa$kpa$mpa#kpa#ppa#ypa$Ppa$Upa$ipa~O`_ib_i~P4zO`!qOa!kOb!lOXci]ciqcihcivci!^ci#Tci#Ucimci#ici#kci#nci#rci#tci#wci#{ci$Sci$Wci$Zci$]ci$_ci$bci$dci$gci$kci$mci#pci#yci$icieci%Rci#Vci$Pci$Uci~Ov&RO!^$kO~On&UO~Ov&WO!^$pO~On&XO~Oq!mOv&YO~Ov&]O!^$vO#T$yO#U$yO~O]!jO`!qOa!kOb!lOm#ha#U#ha#i#ha#k#ha#n#ha#r#ha#t#ha#w#ha#{#ha$S#ha$W#ha$Z#ha$]#ha$_#ha$b#ha$d#ha$g#ha$k#ha$m#ha~O]!jO`!qOa!kOb!lOm#ma#U#ma#i#ma#n#ma#p#ma#r#ma#t#ma#w#ma#{#ma$S#ma$W#ma$Z#ma$]#ma$_#ma$b#ma$d#ma$g#ma$k#ma$m#ma~O]!jO`!qOa!kOb!lOm#qav#qa#U#qa#i#qa#n#qa#r#qa#t#qa#w#qa#{#qa$S#qa$W#qa$Z#qa$]#qa$_#qa$b#qa$d#qa$g#qa$k#qa$m#qa#k#qa#p#qa#y#qa$P#qa$U#qa$i#qa~O]!jO`!qOa!kOb!lOm#va#U#va#i#va#n#va#r#va#t#va#w#va#y#va#{#va$S#va$W#va$Z#va$]#va$_#va$b#va$d#va$g#va$k#va$m#va~Om#zav#za#U#za#i#za#n#za#r#za#t#za#w#za#{#za$S#za$W#za$Z#za$]#za$_#za$b#za$d#za$g#za$k#za$m#za#k#za#p#za#y#za$P#za$U#za$i#za~P/_O!b&fO~O!b&gO~Os&iO!^$pOm$Yav$Ya#U$Ya#i$Ya#n$Ya#r$Ya#t$Ya#w$Ya#{$Ya$S$Ya$W$Ya$Z$Ya$]$Ya$_$Ya$b$Ya$d$Ya$g$Ya$k$Ya$m$Ya#k$Ya#p$Ya#y$Ya$P$Ya$U$Ya$i$Ya~Om$[av$[a#U$[a#i$[a#n$[a#r$[a#t$[a#w$[a#{$[a$S$[a$W$[a$Z$[a$]$[a$_$[a$b$[a$d$[a$g$[a$k$[a$m$[a#k$[a#p$[a#y$[a$P$[a$U$[a$i$[a~P%}O]!jO`!qOa!kOb!lO!^&kOm$^av$^a#U$^a#i$^a#n$^a#r$^a#t$^a#w$^a#{$^a$S$^a$W$^a$Z$^a$]$^a$_$^a$b$^a$d$^a$g$^a$k$^a$m$^a#k$^a#p$^a#y$^a$P$^a$U$^a$i$^a~O]!jO`!qOa!kOb!lOm$aav$aa#U$aa#i$aa#n$aa#r$aa#t$aa#w$aa#{$aa$S$aa$W$aa$Z$aa$]$aa$_$aa$b$aa$d$aa$g$aa$k$aa$m$aa#k$aa#p$aa#y$aa$P$aa$U$aa$i$aa~O]!jO`!qOa!kOb!lOm$cav$ca#U$ca#i$ca#n$ca#r$ca#t$ca#w$ca#{$ca$S$ca$W$ca$Z$ca$]$ca$_$ca$b$ca$d$ca$g$ca$k$ca$m$ca#k$ca#p$ca#y$ca$P$ca$U$ca$i$ca~O]!jO`!qOa!kOb!lOm$fa#U$fa#i$fa#n$fa#r$fa#t$fa#w$fa#{$fa$S$fa$W$fa$Z$fa$]$fa$_$fa$b$fa$d$fa$g$fa$i$fa$k$fa$m$fa~O]!jO`!qOa!kOb!lOm$jav$ja#U$ja#i$ja#n$ja#r$ja#t$ja#w$ja#{$ja$S$ja$W$ja$Z$ja$]$ja$_$ja$b$ja$d$ja$g$ja$k$ja$m$ja#k$ja#p$ja#y$ja$P$ja$U$ja$i$ja~O]!jO`!qOa!kOb!lOm$lav$la#U$la#i$la#n$la#r$la#t$la#w$la#{$la$S$la$W$la$Z$la$]$la$_$la$b$la$d$la$g$la$k$la$m$la#k$la#p$la#y$la$P$la$U$la$i$la~Ov&nO~Ov&oO~O]!jO`!qOa!kOb!lOe&qO~O]!jO`!qOa!kOb!lOv$qa!^$qam$qa#U$qa#i$qa#n$qa#r$qa#t$qa#w$qa#{$qa$S$qa$W$qa$Z$qa$]$qa$_$qa$b$qa$d$qa$g$qa$k$qa$m$qa#k$qa#p$qa#y$qa$P$qa$U$qa$i$qa~O]!jO`!qOa!kOb!lO%R&rO~Ov&vO~P!({Ov&xO~P!({Ov&zO!^$pO~Os&{O~O]!jO`!qOa!kOb!lO#V&|Ov#Sa!^#Sa#T#Sa#U#Sa~O!^$kOm#ziv#zi#U#zi#i#zi#n#zi#r#zi#t#zi#w#zi#{#zi$S#zi$W#zi$Z#zi$]#zi$_#zi$b#zi$d#zi$g#zi$k#zi$m#zi#k#zi#p#zi#y#zi$P#zi$U#zi$i#zi~O!^$pOm$Yiv$Yi#U$Yi#i$Yi#n$Yi#r$Yi#t$Yi#w$Yi#{$Yi$S$Yi$W$Yi$Z$Yi$]$Yi$_$Yi$b$Yi$d$Yi$g$Yi$k$Yi$m$Yi#k$Yi#p$Yi#y$Yi$P$Yi$U$Yi$i$Yi~On'PO~Oq!mOm$[iv$[i#U$[i#i$[i#n$[i#r$[i#t$[i#w$[i#{$[i$S$[i$W$[i$Z$[i$]$[i$_$[i$b$[i$d$[i$g$[i$k$[i$m$[i#k$[i#p$[i#y$[i$P$[i$U$[i$i$[i~O!^&kOm$^iv$^i#U$^i#i$^i#n$^i#r$^i#t$^i#w$^i#{$^i$S$^i$W$^i$Z$^i$]$^i$_$^i$b$^i$d$^i$g$^i$k$^i$m$^i#k$^i#p$^i#y$^i$P$^i$U$^i$i$^i~O]!jO`!qOa!kOb!lOXpqqpqvpqmpq#Upq#ipq#npq#rpq#tpq#wpq#{pq$Spq$Wpq$Zpq$]pq$_pq$bpq$dpq$gpq$kpq$mpq#kpq#ppq#ypq$Ppq$Upq$ipq~Os'SOv!cX%R!cXm!cX#U!cX#i!cX#n!cX#r!cX#t!cX#w!cX#{!cX$P!cX$S!cX$W!cX$Z!cX$]!cX$_!cX$b!cX$d!cX$g!cX$k!cX$m!cX$U!cX~Ov'UO%R&rO~Ov'VO%R&rO~Ov'WO!^$pO~Om#}q#U#}q#i#}q#n#}q#r#}q#t#}q#w#}q#{#}q$P#}q$S#}q$W#}q$Z#}q$]#}q$_#}q$b#}q$d#}q$g#}q$k#}q$m#}q~P!({Om$Rq#U$Rq#i$Rq#n$Rq#r$Rq#t$Rq#w$Rq#{$Rq$S$Rq$U$Rq$W$Rq$Z$Rq$]$Rq$_$Rq$b$Rq$d$Rq$g$Rq$k$Rq$m$Rq~P!({O!^$pOm$Yqv$Yq#U$Yq#i$Yq#n$Yq#r$Yq#t$Yq#w$Yq#{$Yq$S$Yq$W$Yq$Z$Yq$]$Yq$_$Yq$b$Yq$d$Yq$g$Yq$k$Yq$m$Yq#k$Yq#p$Yq#y$Yq$P$Yq$U$Yq$i$Yq~Os'^O~O]!jO`!qOa!kOb!lOv#Sq!^#Sq#T#Sq#U#Sq~O%R&rOm#}y#U#}y#i#}y#n#}y#r#}y#t#}y#w#}y#{#}y$P#}y$S#}y$W#}y$Z#}y$]#}y$_#}y$b#}y$d#}y$g#}y$k#}y$m#}y~O%R&rOm$Ry#U$Ry#i$Ry#n$Ry#r$Ry#t$Ry#w$Ry#{$Ry$S$Ry$U$Ry$W$Ry$Z$Ry$]$Ry$_$Ry$b$Ry$d$Ry$g$Ry$k$Ry$m$Ry~O!^$pOm$Yyv$Yy#U$Yy#i$Yy#n$Yy#r$Yy#t$Yy#w$Yy#{$Yy$S$Yy$W$Yy$Z$Yy$]$Yy$_$Yy$b$Yy$d$Yy$g$Yy$k$Yy$m$Yy#k$Yy#p$Yy#y$Yy$P$Yy$U$Yy$i$Yy~O]!jO`!qOa!kOb!lOv!ci%R!cim!ci#U!ci#i!ci#n!ci#r!ci#t!ci#w!ci#{!ci$P!ci$S!ci$W!ci$Z!ci$]!ci$_!ci$b!ci$d!ci$g!ci$k!ci$m!ci$U!ci~O]!jO`!qOa!kOb!lOm$`qv$`q!^$`q#U$`q#i$`q#n$`q#r$`q#t$`q#w$`q#{$`q$S$`q$W$`q$Z$`q$]$`q$_$`q$b$`q$d$`q$g$`q$k$`q$m$`q#k$`q#p$`q#y$`q$P$`q$U$`q$i$`q~O\\\",goto:\\\"7V%UPPPPPPPP%VP%V%g&zPP&zPPP&zPPP&zPPPPPPPP'xP(QP(TPP(T(eP(uP(TP(TP(T({P)]P(T)cP)sP(TPP(T)yPP*Z*e*oP(T*uP+VP(TP(TP(TP(T+]P+m+pP(T+sP,T,WP(TP(TP,ZPPP(TP(TP(T,_P,oP(TP(TP(TP,u-VP-gP,u-mP-}P,uP,uP,u.TP.eP,uP,u.k.{P,u/RP/cP,uP,u,uP,uP,uP/i,uP,uP,u/mP/}P,uP,uP0T0s1Z1i1s2V2i2o2u2{3kPPPPPP3q4RP%V6um^OTUVWX[`!Q!T!W!Z!^!g!vdRehijlmnvwxyz{|!k!l!q!r#e#f#g#i#j#p#q#r#s#t#u#v$e$k$n$o$y%}&f&g&{'S'^Q!|oQ!}pQ%k#kQ%l#lQ&Z$vQ'Q&kR'Y&|!wfRehijlmnvwxyz{|!k!l!q!r#e#f#g#i#j#p#q#r#s#t#u#v$e$k$n$o$y%}&f&g&{'S'^]!nc!o#T$t%n&jR$`!mm]OTUVWX[`!Q!T!W!Z!^!gmTOTUVWX[`!Q!T!W!Z!^!gQ!PTR#x!QmUOTUVWX[`!Q!T!W!Z!^!gQ!SUR#z!TmVOTUVWX[`!Q!T!W!Z!^!gQ!VVR#|!WmWOTUVWX[`!Q!T!W!Z!^!ga&t&S&T&u&w&}'O'Z'[a&s&S&T&u&w&}'O'Z'[Q!YWR$O!ZmXOTUVWX[`!Q!T!W!Z!^!gQ!]XR$Q!^mYOTUVWX[`!Q!T!W!Z!^!gR!bYR$T!bmZOTUVWX[`!Q!T!W!Z!^!gR!eZR$W!eT$w#U$xm[OTUVWX[`!Q!T!W!Z!^!gQ!f[R$Y!gm#b}#[#]#^#_#`#a#d%R%U%X%[%_%bm#[}#[#]#^#_#`#a#d%R%U%X%[%_%bQ%Q#[R&_%Rm#]}#[#]#^#_#`#a#d%R%U%X%[%_%bQ%T#]R&`%Um#^}#[#]#^#_#`#a#d%R%U%X%[%_%bQ%W#^R&a%Xm#_}#[#]#^#_#`#a#d%R%U%X%[%_%bQ%Z#_R&b%[m#`}#[#]#^#_#`#a#d%R%U%X%[%_%bQ%^#`R&c%_T&l%o&mm#a}#[#]#^#_#`#a#d%R%U%X%[%_%bQ%a#aR&d%bQ`OQ!QTQ!TUQ!WVQ!ZWQ!^XQ!g[_!i`!Q!T!W!Z!^!gSQO`SaQ!Oi!OTUVWX[!Q!T!W!Z!^!gQ!ocU$a!o$t&jQ$t#TR&j%nQ$l!{S&Q$l&eR&e%jQ&u&SQ&w&TW'T&u&w'Z'[Q'Z&}R'['OQ$q#QW&V$q&h&y']Q&h%mQ&y&XR']'PQ!aYR$S!aQ!dZR$V!dQ$x#UR&[$xQ#d}Q%R#[Q%U#]Q%X#^Q%[#_Q%_#`Q%b#a_%d#d%R%U%X%[%_%bQ&m%oR'R&mm_OTUVWX[`!Q!T!W!Z!^!gQcRQ!seQ!thQ!viQ!wjQ!ylQ!zmQ!{nQ#TvQ#UwQ#VxQ#WyQ#XzQ#Y{Q#Z|Q$]!kQ$^!lQ$c!qQ$d!rQ%f#eQ%g#fQ%h#gQ%i#iQ%j#jQ%n#pQ%o#qQ%p#rQ%q#sQ%r#tQ%s#uQ%t#vQ&O$eQ&P$kQ&S$nQ&T$oQ&^$yQ&p%}Q&}&fQ'O&gQ'X&{Q'_'SR'`'^m#c}#[#]#^#_#`#a#d%R%U%X%[%_%b\\\",nodeNames:\\\"⚠ {{ {% {% {% {% InlineComment Template Text }} Interpolation VariableName MemberExpression . PropertyName BinaryExpression contains CompareOp LogicOp AssignmentExpression AssignOp ) ( RangeExpression .. BooleanLiteral empty forloop tablerowloop continue StringLiteral NumberLiteral Filter | FilterName : Tag TagName %} IfDirective Tag if EndTag endif Tag elsif Tag else UnlessDirective Tag unless EndTag endunless CaseDirective Tag case EndTag endcase Tag when , ForDirective Tag for in Parameter ParameterName EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag continue Tag cycle Comment Tag comment CommentText EndTag endcomment RawDirective Tag raw RawText EndTag endraw Tag echo Tag render RenderParameter with for as Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement Tag liquid IfDirective Tag if EndTag endif UnlessDirective Tag unless EndTag endunless Tag elsif Tag else CaseDirective Tag case EndTag endcase Tag when ForDirective Tag EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag Tag cycle Tag echo Tag render RenderParameter Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement\\\",maxTerm:189,nodeProps:[[\\\"closedBy\\\",1,\\\"}}\\\",-4,2,3,4,5,\\\"%}\\\",22,\\\")\\\"],[\\\"openedBy\\\",9,\\\"{{\\\",21,\\\"(\\\",38,\\\"{%\\\"],[\\\"group\\\",-12,11,12,15,19,23,25,26,27,28,29,30,31,\\\"Expression\\\"]],skippedNodes:[0,6],repeatNodeCount:11,tokenData:\\\")l~RlXY!yYZ!y]^!ypq!yqr#[rs#gst$Xuv$pwx${xy%hyz%m{|%r|}'^}!O'c!O!P'o!Q![&{![!](P!^!_(U!_!`(^!`!a(U!c!}(f#R#S(f#T#o(f#p#q)[#q#r)a%W;'S(f;'S;:j)U\u003C%lO(f~#OS%O~XY!yYZ!y]^!ypq!y~#_P!_!`#b~#gOa~~#jUOY#gZr#grs#|s;'S#g;'S;=`$R\u003C%lO#g~$ROn~~$UP;=`\u003C%l#g~$^SU~OY$XZ;'S$X;'S;=`$j\u003C%lO$X~$mP;=`\u003C%l$X~$sP#q#r$v~${Ov~~%OUOY${Zw${wx#|x;'S${;'S;=`%b\u003C%lO${~%eP;=`\u003C%l${~%mOf~~%rOe~P%uQ!O!P%{!Q![&{P&OP!Q![&RP&WRoP!Q![&R!g!h&a#X#Y&aP&dR{|&m}!O&m!Q![&sP&pP!Q![&sP&xPoP!Q![&sP'QSoP!O!P%{!Q![&{!g!h&a#X#Y&a~'cO!^~~'fRuv$p!O!P%{!Q![&{~'tQ]S!O!P'z!Q![&R~(POh~~(UOs~~(ZPa~!_!`#b~(cPd~!_!`#b_(oV^WuQ%RT!Q![(f!c!}(f#R#S(f#T#o(f%W;'S(f;'S;:j)U\u003C%lO(f_)XP;=`\u003C%l(f~)aOq~~)dP#q#r)g~)lOX~\\\",tokenizers:[base,raw,comment,0,1,2,3],topRules:{\\\"Template\\\":[0,7]},specialized:[{term:187,get:value=>spec_identifier$1[value]||-1},{term:37,get:value=>spec_TagName[value]||-1}],tokenPrec:0});function completions(words,type){return words.split(\\\" \\\").map(label=>({label,type}));}const Filters=completions(\\\"abs append at_least at_most capitalize ceil compact concat date default \\\"+\\\"divided_by downcase escape escape_once first floor join last lstrip map minus modulo \\\"+\\\"newline_to_br plus prepend remove remove_first replace replace_first reverse round rstrip \\\"+\\\"size slice sort sort_natural split strip strip_html strip_newlines sum times truncate \\\"+\\\"truncatewords uniq upcase url_decode url_encode where\\\",\\\"function\\\");const Tags=completions(\\\"cycle comment endcomment raw endraw echo increment decrement liquid if elsif \\\"+\\\"else endif unless endunless case endcase for endfor tablerow endtablerow break continue \\\"+\\\"assign capture endcapture render include\\\",\\\"keyword\\\");const Expressions=completions(\\\"empty forloop tablerowloop in with as contains\\\",\\\"keyword\\\");const forloop=completions(\\\"first index index0 last length rindex\\\",\\\"property\\\");const tablerowloop=completions(\\\"col col0 col_first col_last first index index0 last length rindex rindex0 row\\\",\\\"property\\\");function findContext(context){var _a;let{state,pos}=context;let node=syntaxTree(state).resolveInner(pos,-1).enterUnfinishedNodesBefore(pos);let before=((_a=node.childBefore(pos))===null||_a===void 0?void 0:_a.name)||node.name;if(node.name==\\\"FilterName\\\")return{type:\\\"filter\\\",node};if(context.explicit&&before==\\\"|\\\")return{type:\\\"filter\\\"};if(node.name==\\\"TagName\\\")return{type:\\\"tag\\\",node};if(context.explicit&&before==\\\"{%\\\")return{type:\\\"tag\\\"};if(node.name==\\\"PropertyName\\\"&&node.parent.name==\\\"MemberExpression\\\")return{type:\\\"property\\\",node,target:node.parent};if(node.name==\\\".\\\"&&node.parent.name==\\\"MemberExpression\\\")return{type:\\\"property\\\",target:node.parent};if(node.name==\\\"MemberExpression\\\"&&before==\\\".\\\")return{type:\\\"property\\\",target:node};if(node.name==\\\"VariableName\\\")return{type:\\\"expression\\\",from:node.from};let word=context.matchBefore(/[\\\\w\\\\u00c0-\\\\uffff]+$/);if(word)return{type:\\\"expression\\\",from:word.from};if(context.explicit&&node.name!=\\\"CommentText\\\"&&node.name!=\\\"StringLiteral\\\"&&node.name!=\\\"NumberLiteral\\\"&&node.name!=\\\"InlineComment\\\")return{type:\\\"expression\\\"};return null;}function resolveProperties(state,node,context,properties){let path=[];for(;;){let obj=node.getChild(\\\"Expression\\\");if(!obj)return[];if(obj.name==\\\"forloop\\\"){return path.length?[]:forloop;}else if(obj.name==\\\"tablerowloop\\\"){return path.length?[]:tablerowloop;}else if(obj.name==\\\"VariableName\\\"){path.unshift(state.sliceDoc(obj.from,obj.to));break;}else if(obj.name==\\\"MemberExpression\\\"){let name=obj.getChild(\\\"PropertyName\\\");if(name)path.unshift(state.sliceDoc(name.from,name.to));node=obj;}else{return[];}}return properties?properties(path,state,context):[];}function liquidCompletionSource(config={}){let filters=config.filters?config.filters.concat(Filters):Filters;let tags=config.tags?config.tags.concat(Tags):Tags;let exprs=config.variables?config.variables.concat(Expressions):Expressions;let{properties}=config;return context=>{var _a;let cx=findContext(context);if(!cx)return null;let from=(_a=cx.from)!==null&&_a!==void 0?_a:cx.node?cx.node.from:context.pos;let options;if(cx.type==\\\"filter\\\")options=filters;else if(cx.type==\\\"tag\\\")options=tags;else if(cx.type==\\\"expression\\\")options=exprs;else options=resolveProperties(context.state,cx.target,context,properties);return options.length?{options,from,validFor:/^[\\\\w\\\\u00c0-\\\\uffff]*$/}:null;};}const closePercentBrace=EditorView.inputHandler.of((view,from,to,text)=>{if(text!=\\\"%\\\"||from!=to||view.state.doc.sliceString(from-1,to+1)!=\\\"{}\\\")return false;view.dispatch(view.state.changeByRange(range=>({changes:{from:range.from,to:range.to,insert:\\\"%%\\\"},range:EditorSelection.cursor(range.from+1)})),{scrollIntoView:true,userEvent:\\\"input.type\\\"});return true;});function directiveIndent(except){return context=>{let back=except.test(context.textAfter);return context.lineIndent(context.node.from)+(back?0:context.unit);};}const tagLanguage=LRLanguage.define({name:\\\"liquid\\\",parser:parser$2.configure({props:[styleTags({\\\"cycle comment endcomment raw endraw echo increment decrement liquid in with as\\\":tags$1.keyword,\\\"empty forloop tablerowloop\\\":tags$1.atom,\\\"if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue\\\":tags$1.controlKeyword,\\\"assign capture endcapture\\\":tags$1.definitionKeyword,\\\"contains\\\":tags$1.operatorKeyword,\\\"render include\\\":tags$1.moduleKeyword,VariableName:tags$1.variableName,TagName:tags$1.tagName,FilterName:tags$1.function(tags$1.variableName),PropertyName:tags$1.propertyName,CompareOp:tags$1.compareOperator,AssignOp:tags$1.definitionOperator,LogicOp:tags$1.logicOperator,NumberLiteral:tags$1.number,StringLiteral:tags$1.string,BooleanLiteral:tags$1.bool,InlineComment:tags$1.lineComment,CommentText:tags$1.blockComment,\\\"{% %} {{ }}\\\":tags$1.brace,\\\"( )\\\":tags$1.paren,\\\".\\\":tags$1.derefOperator,\\\", .. : |\\\":tags$1.punctuation}),indentNodeProp.add({Tag:delimitedIndent({closing:\\\"%}\\\"}),\\\"UnlessDirective ForDirective TablerowDirective CaptureDirective\\\":directiveIndent(/^\\\\s*(\\\\{%-?\\\\s*)?end\\\\w/),IfDirective:directiveIndent(/^\\\\s*(\\\\{%-?\\\\s*)?(endif|else|elsif)\\\\b/),CaseDirective:directiveIndent(/^\\\\s*(\\\\{%-?\\\\s*)?(endcase|when)\\\\b/)}),foldNodeProp.add({\\\"UnlessDirective ForDirective TablerowDirective CaptureDirective IfDirective CaseDirective RawDirective Comment\\\"(tree){let first=tree.firstChild,last=tree.lastChild;if(!first||first.name!=\\\"Tag\\\")return null;return{from:first.to,to:last.name==\\\"EndTag\\\"?last.from:tree.to};}})]}),languageData:{commentTokens:{line:\\\"#\\\"},indentOnInput:/^\\\\s*{%-?\\\\s*(?:end|elsif|else|when|)$/}});const baseHTML=html();function makeLiquid(base){return tagLanguage.configure({wrap:parseMixed(node=>node.type.isTop?{parser:base.parser,overlay:n=>n.name==\\\"Text\\\"||n.name==\\\"RawText\\\"}:null)},\\\"liquid\\\");}const liquidLanguage=makeLiquid(baseHTML.language);function liquid(config={}){let base=config.base||baseHTML;let lang=base.language==baseHTML.language?liquidLanguage:makeLiquid(base.language);return new LanguageSupport(lang,[base.support,lang.data.of({autocomplete:liquidCompletionSource(config)}),base.language.data.of({closeBrackets:{brackets:[\\\"{\\\"]}}),closePercentBrace]);}var _m26=Object.freeze({__proto__:null,closePercentBrace:closePercentBrace,liquid:liquid,liquidCompletionSource:liquidCompletionSource,liquidLanguage:liquidLanguage});const descendantOp=110,Unit=1,openArgList=2;const space=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288];function isAlpha(ch){return ch>=65&&ch\u003C=90||ch>=97&&ch\u003C=122||ch>=161;}function isDigit(ch){return ch>=48&&ch\u003C=57;}const argList=new ExternalTokenizer((input,stack)=>{if(input.next==40){let prev=input.peek(-1);if(isAlpha(prev)||isDigit(prev)||prev==95||prev==45)input.acceptToken(openArgList,1);}});const descendant=new ExternalTokenizer(input=>{if(space.indexOf(input.peek(-1))>-1){let{next}=input;if(isAlpha(next)||next==95||next==35||next==46||next==91||next==58||next==45)input.acceptToken(descendantOp);}});const unitToken=new ExternalTokenizer(input=>{if(space.indexOf(input.peek(-1))\u003C0){let{next}=input;if(next==37){input.advance();input.acceptToken(Unit);}if(isAlpha(next)){do{input.advance();}while(isAlpha(input.next));input.acceptToken(Unit);}}});const lessHighlighting=styleTags({\\\"import charset namespace keyframes media supports when\\\":tags$1.definitionKeyword,\\\"from to selector\\\":tags$1.keyword,NamespaceName:tags$1.namespace,KeyframeName:tags$1.labelName,TagName:tags$1.tagName,ClassName:tags$1.className,PseudoClassName:tags$1.constant(tags$1.className),IdName:tags$1.labelName,\\\"FeatureName PropertyName PropertyVariable\\\":tags$1.propertyName,AttributeName:tags$1.attributeName,NumberLiteral:tags$1.number,KeywordQuery:tags$1.keyword,UnaryQueryOp:tags$1.operatorKeyword,\\\"CallTag ValueName\\\":tags$1.atom,VariableName:tags$1.variableName,\\\"AtKeyword Interpolation\\\":tags$1.special(tags$1.variableName),Callee:tags$1.operatorKeyword,Unit:tags$1.unit,\\\"UniversalSelector NestingSelector\\\":tags$1.definitionOperator,MatchOp:tags$1.compareOperator,\\\"ChildOp SiblingOp, LogicOp\\\":tags$1.logicOperator,BinOp:tags$1.arithmeticOperator,Important:tags$1.modifier,\\\"Comment LineComment\\\":tags$1.blockComment,ColorLiteral:tags$1.color,\\\"ParenthesizedContent StringLiteral\\\":tags$1.string,Escape:tags$1.special(tags$1.string),\\\": ...\\\":tags$1.punctuation,\\\"PseudoOp #\\\":tags$1.derefOperator,\\\"; ,\\\":tags$1.separator,\\\"( )\\\":tags$1.paren,\\\"[ ]\\\":tags$1.squareBracket,\\\"{ }\\\":tags$1.brace});const spec_identifier={__proto__:null,lang:40,\\\"nth-child\\\":40,\\\"nth-last-child\\\":40,\\\"nth-of-type\\\":40,\\\"nth-last-of-type\\\":40,dir:40,\\\"host-context\\\":40,and:244,or:244,not:74,only:74,url:86,\\\"url-prefix\\\":86,domain:86,regexp:86,when:117,selector:142,from:172,to:174};const spec_AtKeyword={__proto__:null,\\\"@import\\\":126,\\\"@plugin\\\":126,\\\"@media\\\":152,\\\"@charset\\\":156,\\\"@namespace\\\":160,\\\"@keyframes\\\":166,\\\"@supports\\\":178};const parser$1=LRParser.deserialize({version:14,states:\\\"@^O!gQWOOO!nQaO'#CeOOQP'#Cd'#CdO$RQWO'#CgO$xQaO'#EaO%cQWO'#CiO%kQWO'#DZO%pQWO'#D^O%uQaO'#DfOOQP'#Es'#EsO'YQWO'#DlO'yQWO'#DyO(QQWO'#D{O(xQWO'#D}O)TQWO'#EQO'bQWO'#EWO)YQ`O'#FTO)]Q`O'#FTO)hQ`O'#FTO)vQWO'#EYOOQO'#Er'#ErOOQO'#FV'#FVOOQO'#Ec'#EcO){QWO'#EqO*WQWO'#EqQOQWOOOOQP'#Ch'#ChOOQP,59R,59RO$RQWO,59RO*bQWO'#EdO+PQWO,58|O+_QWO,59TO%kQWO,59uO%pQWO,59xO*bQWO,59{O*bQWO,59}OOQO'#De'#DeO*bQWO,5:OO,bQpO'#E}O,iQWO'#DkOOQO,58|,58|O(QQWO,58|O,pQWO,5:{OOQO,5:{,5:{OOQT'#Cl'#ClO-UQeO,59TO.cQ[O,59TOOQP'#D]'#D]OOQP,59u,59uOOQO'#D_'#D_O.hQpO,59xOOQO'#EZ'#EZO.pQ`O,5;oOOQO,5;o,5;oO/OQWO,5:WO/VQWO,5:WOOQS'#Dn'#DnO/rQWO'#DsO/yQ!fO'#FRO0eQWO'#DtOOQS'#FS'#FSO+YQWO,5:eO'bQWO'#DrOOQS'#Cu'#CuO(QQWO'#CwO0jQ!hO'#CyO2^Q!fO,5:gO2oQWO'#DWOOQS'#Ex'#ExO(QQWO'#DQOOQO'#EP'#EPO2tQWO,5:iO2yQWO,5:iOOQO'#ES'#ESO3RQWO,5:lO3WQ!fO,5:rO3iQ`O'#EkO.pQ`O,5;oOOQO,5:|,5:|O3zQWO,5:tOOQO,5:},5:}O4XQWO,5;]OOQO-E8a-E8aOOQP1G.m1G.mOOQP'#Ce'#CeO5RQaO,5;OOOQP'#Df'#DfOOQO-E8b-E8bOOQO1G.h1G.hO(QQWO1G.hO5fQWO1G.hO5nQeO1G.oO.cQ[O1G.oOOQP1G/a1G/aO6{QpO1G/dO7fQaO1G/gO8cQaO1G/iO9`QaO1G/jO:]Q!fO'#FOO:yQ!fO'#ExOOQO'#FO'#FOOOQO,5;i,5;iO\u003C^QWO,5;iO\u003CiQWO,5:VO\u003CnQ!fO1G.hOOQO1G0g1G0gO=PQWO'#CnOOQP1G.o1G.oO=WQWO'#CqOOQP1G/d1G/dO(QQWO1G/dO=_Q`O1G1ZOOQO1G1Z1G1ZO=mQWO1G/rO=rQ!fO'#FQO>WQWO1G/rO>]Q!fO'#DnO>qQWO,5:ZO>vQ!fO,5:_OOQO'#DP'#DPO'bQWO,5:]O?XQWO'#DwOOQS,5:b,5:bO?`QWO,5:dO'bQWO'#EiO?gQWO,5;mO*bQWO,5:`OOQO1G0P1G0PO?uQ!fO,5:^O@aQ!fO,59cOOQS,59e,59eO(QQWO,59iOOQS,59n,59nO@rQWO,59pOOQO1G0R1G0RO@yQ#tO,59rOARQ!fO,59lOOQO1G0T1G0TOBrQWO1G0TOBwQWO'#ETOOQO1G0W1G0WOOQO1G0^1G0^OOQO,5;V,5;VOOQO-E8i-E8iOCVQ!fO1G0bOCvQWO1G0`O%kQWO'#E_O$RQWO'#E`OEZQWO'#E^OOQO1G0b1G0bPEkQWO'#EcO\u003CnQ!fO7+$SOOQO7+$S7+$SO(QQWO7+$SOOQP7+$Z7+$ZOOQP7+%O7+%OO(QQWO7+%OOEpQ!fO'#EeOF}QWO,5;jO(QQWO,5;jOOQO,5;j,5;jO+gQpO'#EgOG[QWO1G1TOOQO1G1T1G1TOOQO1G/q1G/qOGgQaO'#EvOGnQWO,59YOGsQWO'#EwOG}QWO,59]OHSQ!fO7+%OOOQO7+&u7+&uOOQO7+%^7+%^O(QQWO'#EhOHeQWO,5;lOHmQWO7+%^O(QQWO1G/uOOQS1G/y1G/yOOQS1G/w1G/wOHrQWO,5:cOHwQ!fO1G0OOOQS1G0O1G0OOIYQ!fO,5;TOOQO-E8g-E8gOItQaO1G/zOOQS1G.}1G.}OOQS1G/T1G/TOI{Q!fO1G/[OOQS1G/[1G/[OJ^QWO1G/^OOQO7+%o7+%oOJcQYO'#CyO+YQWO'#EjOJkQWO,5:oOOQO,5:o,5:oOJyQ!fO'#ElO(QQWO'#ElOL^QWO7+%|OOQO7+%|7+%|OOQO7+%z7+%zOOQO,5:y,5:yOOQO,5:z,5:zOLqQaO,5:xOOQO,5:x,5:xOOQO\u003C\u003CGn\u003C\u003CGnO\u003CnQ!fO\u003C\u003CGnOMRQ!fO\u003C\u003CHjOOQO-E8c-E8cOMdQWO1G1UOOQO,5;R,5;ROOQO-E8e-E8eOOQO7+&o7+&oOMqQWO,5;bOOQP1G.t1G.tO(QQWO'#EfOMyQWO,5;cOOQT1G.w1G.wOOQP\u003C\u003CHj\u003C\u003CHjONRQ!fO,5;SOOQO-E8f-E8fO/OQWO\u003C\u003CHxONgQWO7+%aOOQS1G/}1G/}OOQS7+%j7+%jOOQS7+%f7+%fOOQS7+$v7+$vOOQS7+$x7+$xOOQO,5;U,5;UOOQO-E8h-E8hOOQO1G0Z1G0ZONnQ!fO,5;WOOQO-E8j-E8jOOQO\u003C\u003CIh\u003C\u003CIhOOQO1G0d1G0dOOQOAN=YAN=YOOQPAN>UAN>UO!!RQWO,5;QOOQO-E8d-E8dO!!]QWOAN>dOOQS\u003C\u003CH{\u003C\u003CH{OOQOG24OG24O\\\",stateData:\\\"!!n~O#dOSROSSOS~OVXOYXO^TO_TOfaOgbOoaOpWOyVO!OUO!aYO!nZO!p[O!r]O!u^O!{_O#hPO#iRO~O#a#eP~P]O^XX^!}X_XXcXXjXXp!}XyXX!OXX!UXX!ZXX![XX!^XX#PXX#aXX#bXX#iXX#oXX#pXX#p!}X#x!}X!]XX~O#hjO~O^oO_oOcmOyqO!OpO!UrO#bsO#ilO#otO#ptO~OjvO![yO!^wO#P{O!Z#TX#a#TX!]#TX~P$WOd!OO#h|O~O#h!PO~O#h!RO~O#h!TO#p!VO#x!VO^!YX^#wX_!YXc!YXj!YXy!YX!O!YX!U!YX!Z!YX![!YX!^!YX#P!YX#a!YX#b!YX#i!YX#o!YX#p!YX!]!YX~Oj!XOn!WO~Og!^Oj!ZOo!^Op!^Ou!`O!i!]O#h!YO~O!^#uP~P'bOf!fOg!fOh!fOj!bOl!fOn!fOo!fOp!fOu!gO{!eO#h!aO#m!cO~On!iO{!eO#h!hO~O#h!kO~Op!nO#p!VO#x!VO^#wX~OjvO#p!VO#x!VO^#wX~O^!qO~O!Z!rO#a#eX!]#eX~O#a#eX!]#eX~P]OVXOYXO^TO_TOp!xOyVO!OUO#h!vO#iRO~OcmOjvO![!{O!^wO~Od#OO#h|O~Of!fOg#VOh!fOj!bOl!fOn!fOo!fOp!fOu!gO{!eO#h!aO#m!cO#s#WO~Oa#XO~P+gO!]#eP~P]O![!{O!^wO#P#]O!Z#Ta#a#Ta!]#Ta~OQ#^O^]a_]ac]aj]ay]a!O]a!U]a!Z]a![]a!^]a#P]a#a]a#b]a#i]a#o]a#p]a!]]aa]a~OQ#`O~Ow#aO!S#bO~Op!nO#p#dO#x#dO^#wa~O!Z#uP~P'bOa#tP~P(QOg!^Oj!ZOo!^Op!^Ou!`O!i!]O~O#h#hO~P/^OQ#mOc#pOr#lOy#oO#n#kO!^#uX!Z#uXa#uX~Oj#rO~OP#vOQmXrmXymX!ZmX#nmX^mXamXcmXfmXgmXhmXjmXlmXnmXomXpmXumX{mX#hmX#mmX!^mX#PmX#amXwmX!]mX~OQ#`Or#wOy#yO!Z#zO#n#kO~Oj#{O~O!Z#}O~On$OO{!eO~O!^$PO~OQ#mOr#lOy#oO!^wO#n#kO~O#h!TO^#_Xp#_X#p#_X#x#_X~O!O$WO!^wO#i$XO~P(QO!Z!rO#a#ea!]#ea~O^oO_oOyqO!OpO!UrO#bsO#ilO#otO#ptO~Oc#Waj#Wa![#Wa!^#Waa#Wa~P4dO![$_O!^wO~OQ#^O^]i_]ic]ij]iy]i!O]i!U]i!Z]i![]i!^]i#P]i#a]i#b]i#i]i#o]i#p]i!]]ia]i~Ow$aO!S$bO~O^oO_oOyqO!OpO#ilO~Oc!Tij!Ti!U!Ti!Z!Ti![!Ti!^!Ti#P!Ti#a!Ti#b!Ti#o!Ti#p!Ti!]!Tia!Ti~P7TOc!Vij!Vi!U!Vi!Z!Vi![!Vi!^!Vi#P!Vi#a!Vi#b!Vi#o!Vi#p!Vi!]!Via!Vi~P7TOc!Wij!Wi!U!Wi!Z!Wi![!Wi!^!Wi#P!Wi#a!Wi#b!Wi#o!Wi#p!Wi!]!Wia!Wi~P7TOQ#`O^$eOr#wOy#yO#n#kOa#rXc#rX!Z#rX~P(QO#s$fOQ#lX^#lXa#lXc#lXf#lXg#lXh#lXj#lXl#lXn#lXo#lXp#lXr#lXu#lXy#lX{#lX!Z#lX#h#lX#m#lX#n#lX~Oa$iOc$gO!Z$gO~O!]$jO~OQ#`Or#wOy#yO!^wO#n#kO~Oa#jP~P*bOa#kP~P(QOp!nO#p$pO#x$pO^#wi~O!Z$qO~OQ#`Oc$rOr#wOy#yO#n#kOa#tX~Oa$tO~OQ!bX^!dXa!bXr!bXy!bX#n!bX~O^$uO~OQ#mOa$vOr#lOy#oO#n#kO~Oa#uP~P'bOw$zO~P(QOc#pO!^#ua!Z#uaa#ua~OQ#mOr#lOy#oO#n#kOc!fa!^!fa!Z!faa!fa~OQ#`Oa%OOr#wOy#yO#n#kO~Ow%RO~P(QOn%SO|%SO~OQ#`Or#wOy#yO#n#kO!Zta^taatactaftagtahtajtaltantaotaptauta{ta#hta#mta!^ta#Pta#atawta!]ta~O!Z%TO~O!]%XO!x%VO!y%VO#m%UO~OQ#`Oc%ZOr#wOy#yO#P%]O#n#kO!Z#Oi#a#Oi!]#Oi~P(QO!Z%^OV!|iY!|i^!|i_!|if!|ig!|io!|ip!|iy!|i!O!|i!a!|i!n!|i!p!|i!r!|i!u!|i!{!|i#a!|i#h!|i#i!|i!]!|i~OjvO!Z#QX#a#QX!]#QX~P*bO!Z!rO~OQ#`Or#wOy#yO#n#kOa#XXc#XXf#XXg#XXh#XXj#XXl#XXn#XXo#XXp#XXu#XX{#XX!Z#XX#h#XX#m#XX~Oa#rac#ra!Z#ra~P(QOa%jOc$gO!Z$gO~Oa#jX~P$WOa%lO~Oc%mOa#kX~P(QOa%oO~OQ#`Or#wOw%pOy#yO#n#kO~Oc$rOa#ta~On%sO~Oa%uO~OQ#`Or#wOw%vOy#yO#n#kO~OQ#mOr#lOy#oO#n#kOc#]a!^#]a!Z#]aa#]a~Oa%wO~P4dOQ#`Or#wOw%xOy#yO#n#kO~Oa%yO~OP#vO!^mX~O!]%|O!x%VO!y%VO#m%UO~OQ#`Or#wOy#yO#n#kOc#`Xf#`Xg#`Xh#`Xj#`Xl#`Xn#`Xo#`Xp#`Xu#`X{#`X!Z#`X#P#`X#a#`X#h#`X#m#`X!]#`X~Oc%ZO#P&PO!Z#Oq#a#Oq!]#Oq~P(QOjvO!Z#Qa#a#Qa!]#Qa~P4dOQ#`Or#wOw&SOy#yO#n#kO~Oa#ric#ri!Z#ri~P(QOcmOa#ja~Oc%mOa#ka~OQ#`Or#wOy#yO#n#kOa#[ac#[a~Oa&WO~P(QOQ#`Or#wOy#yO#n#kOc#`af#`ag#`ah#`aj#`al#`an#`ao#`ap#`au#`a{#`a!Z#`a#P#`a#a#`a#h#`a#m#`a!]#`a~Oa#Yac#Ya~P(QO!Z&XO~Of#dpg#m|#iRSRr~\\\",goto:\\\"0^#zPPPPPP#{P$Q$^P$Q$j$QPP$sP$yPP%PPPP%jP%jP&ZPPP%jP'O%jP%jP%jP'jPP$QP(a$Q(jP$QP$Q$Q(p$QPPPP(w#{P)f)f)q)f)f)f)fP)f)t)f#{P#{P#{P){#{P*O*RPP#{P#{*U*aP*f*i*i*a*a*l*s*}+e+k+q+w+},T,_PPPP,e,k,pPP-[-_-bPPPP.u/UP/[/_/k0QP0VVdOhweXOhmrsuw#^#r$YeQOhmrsuw#^#r$YQkRQ!ulR%`$XQ}TR!}oQ#_}R$`!}Q#_!Or#x!d#U#[#f#u#|$U$]$c$o$y%Q%Y%d%e%q%}R$`#O!]!f[vy!X!b!g!q!{#U#`#b#o#w#y$U$_$b$d$e$g$m$r$u%Z%[%g%m%t&T![!f[vy!X!b!g!q!{#U#`#b#o#w#y$U$_$b$d$e$g$m$r$u%Z%[%g%m%t&TT%V$P%WY#l![!m#j#t${s#w!d#U#[#f#u#|$U$]$c$o$y%Q%Y%d%e%q%}![!f[vy!X!b!g!q!{#U#`#b#o#w#y$U$_$b$d$e$g$m$r$u%Z%[%g%m%t&TQ!i]R$O!jQ!QUQ#PpR%_$WQ!SVR#QqZuS!w$k$}%aQxSS!znzQ#s!_Q$R!mQ$V!qS$^!|#[Q%c$]Q%z%VR&R%dc!^Z_!W!Z!`#l#m#p%sR#i!ZZ#n![!m#j#t${R!j]R!l^R$Q!lU`OhwQ!UWR$S!nVeOhwR$Z!qR$Y!qShOwR!thQnSS!yn%kR%k$kQ$d#UQ$m#`Y%f$d$m%g%t&TQ%g$eQ%t$uR&T%mQ%n$mR&U%nQ$h#YR%i$hQ$s#fR%r$sQ#q![R$|#qQ%W$PR%{%WQ!o`Q#c!UT$T!o#cQ%[$UR&O%[QiOR#ZwVfOhwUSOhwQ!wmQ#RrQ#SsQ#TuQ$k#^Q$}#rR%a$YR$l#^R$n#`Q!d[S#Uv$gQ#[yQ#f!XQ#u!bQ#|!gQ$U!qQ$]!{d$c#U#`$d$e$m$u%g%m%t&TQ$o#bQ$y#oQ%P#wQ%Q#yS%Y$U%[Q%d$_Q%e$bQ%q$rR%}%ZQzSQ!pbQ!|nQ%b$YR&Q%aQ#YvR%h$gR#g!XQ!_ZQ#e!WQ$x#mR&V%sW![Z!W#m%sQ!m_Q#j!ZQ#t!`Q$w#lR${#pVcOhwSgOwR!sh\\\",nodeNames:\\\"⚠ Unit ( Comment LineComment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector ClassName PseudoClassSelector : :: PseudoClassName ) ArgList , PseudoClassName ArgList VariableName AtKeyword PropertyVariable ValueName ( ParenthesizedValue ColorLiteral NumberLiteral StringLiteral Escape Interpolation BinaryExpression BinOp LogicOp UnaryExpression UnaryQueryOp CallExpression ] SubscriptExpression [ CallLiteral CallTag ParenthesizedContent IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp InterpolatedSelector ; when } { Block ImportStatement import KeywordQuery FeatureQuery FeatureName BinaryQuery UnaryQuery ParenthesizedQuery SelectorQuery selector CallQuery ArgList SubscriptQuery MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList from to SupportsStatement supports DetachedRuleSet PropertyName Declaration Important Inclusion IdSelector ClassSelector Inclusion CallExpression\\\",maxTerm:133,nodeProps:[[\\\"isolate\\\",-3,3,4,30,\\\"\\\"],[\\\"openedBy\\\",17,\\\"(\\\",59,\\\"{\\\"],[\\\"closedBy\\\",26,\\\")\\\",60,\\\"}\\\"]],propSources:[lessHighlighting],skippedNodes:[0,3,4],repeatNodeCount:10,tokenData:\\\"!2q~R!ZOX$tX^%l^p$tpq%lqr)Ors-xst/ltu6Zuv$tvw8^wx:Uxy;syz\u003CUz{\u003CZ{|\u003Ct|}BQ}!OBc!O!PDo!P!QFY!Q![Jw![!]Kr!]!^Ln!^!_MP!_!`M{!`!aNl!a!b$t!b!c! m!c!}!&R!}#O!'y#O#P$t#P#Q!([#Q#R!(m#R#T$t#T#o!&R#o#p!)S#p#q!(m#q#r!)e#r#s!)v#s#y$t#y#z%l#z$f$t$f$g%l$g#BY$t#BY#BZ%l#BZ$IS$t$IS$I_%l$I_$I|$t$I|$JO%l$JO$JT$t$JT$JU%l$JU$KV$t$KV$KW%l$KW&FU$t&FU&FV%l&FV;'S$t;'S;=`!2k\u003C%lO$t`$wSOy%Tz;'S%T;'S;=`%f\u003C%lO%T`%YS|`Oy%Tz;'S%T;'S;=`%f\u003C%lO%T`%iP;=`\u003C%l%T~%qh#d~OX%TX^']^p%Tpq']qy%Tz#y%T#y#z']#z$f%T$f$g']$g#BY%T#BY#BZ']#BZ$IS%T$IS$I_']$I_$I|%T$I|$JO']$JO$JT%T$JT$JU']$JU$KV%T$KV$KW']$KW&FU%T&FU&FV']&FV;'S%T;'S;=`%f\u003C%lO%T~'dh#d~|`OX%TX^']^p%Tpq']qy%Tz#y%T#y#z']#z$f%T$f$g']$g#BY%T#BY#BZ']#BZ$IS%T$IS$I_']$I_$I|%T$I|$JO']$JO$JT%T$JT$JU']$JU$KV%T$KV$KW']$KW&FU%T&FU&FV']&FV;'S%T;'S;=`%f\u003C%lO%Tk)RUOy%Tz#]%T#]#^)e#^;'S%T;'S;=`%f\u003C%lO%Tk)jU|`Oy%Tz#a%T#a#b)|#b;'S%T;'S;=`%f\u003C%lO%Tk*RU|`Oy%Tz#d%T#d#e*e#e;'S%T;'S;=`%f\u003C%lO%Tk*jU|`Oy%Tz#c%T#c#d*|#d;'S%T;'S;=`%f\u003C%lO%Tk+RU|`Oy%Tz#f%T#f#g+e#g;'S%T;'S;=`%f\u003C%lO%Tk+jU|`Oy%Tz#h%T#h#i+|#i;'S%T;'S;=`%f\u003C%lO%Tk,RU|`Oy%Tz#T%T#T#U,e#U;'S%T;'S;=`%f\u003C%lO%Tk,jU|`Oy%Tz#b%T#b#c,|#c;'S%T;'S;=`%f\u003C%lO%Tk-RU|`Oy%Tz#h%T#h#i-e#i;'S%T;'S;=`%f\u003C%lO%Tk-lS#PZ|`Oy%Tz;'S%T;'S;=`%f\u003C%lO%T~-{WOY-xZr-xrs.es#O-x#O#P.j#P;'S-x;'S;=`/f\u003C%lO-x~.jOn~~.mRO;'S-x;'S;=`.v;=`O-x~.yXOY-xZr-xrs.es#O-x#O#P.j#P;'S-x;'S;=`/f;=`\u003C%l-x\u003C%lO-x~/iP;=`\u003C%l-xo/qY!OROy%Tz!Q%T!Q![0a![!c%T!c!i0a!i#T%T#T#Z0a#Z;'S%T;'S;=`%f\u003C%lO%Tm0fY|`Oy%Tz!Q%T!Q![1U![!c%T!c!i1U!i#T%T#T#Z1U#Z;'S%T;'S;=`%f\u003C%lO%Tm1ZY|`Oy%Tz!Q%T!Q![1y![!c%T!c!i1y!i#T%T#T#Z1y#Z;'S%T;'S;=`%f\u003C%lO%Tm2QYl]|`Oy%Tz!Q%T!Q![2p![!c%T!c!i2p!i#T%T#T#Z2p#Z;'S%T;'S;=`%f\u003C%lO%Tm2wYl]|`Oy%Tz!Q%T!Q![3g![!c%T!c!i3g!i#T%T#T#Z3g#Z;'S%T;'S;=`%f\u003C%lO%Tm3lY|`Oy%Tz!Q%T!Q![4[![!c%T!c!i4[!i#T%T#T#Z4[#Z;'S%T;'S;=`%f\u003C%lO%Tm4cYl]|`Oy%Tz!Q%T!Q![5R![!c%T!c!i5R!i#T%T#T#Z5R#Z;'S%T;'S;=`%f\u003C%lO%Tm5WY|`Oy%Tz!Q%T!Q![5v![!c%T!c!i5v!i#T%T#T#Z5v#Z;'S%T;'S;=`%f\u003C%lO%Tm5}Sl]|`Oy%Tz;'S%T;'S;=`%f\u003C%lO%Tm6^YOy%Tz!_%T!_!`6|!`!c%T!c!}7a!}#T%T#T#o7a#o;'S%T;'S;=`%f\u003C%lO%Td7TS!SS|`Oy%Tz;'S%T;'S;=`%f\u003C%lO%Tm7h[h]|`Oy%Tz}%T}!O7a!O!Q%T!Q![7a![!c%T!c!}7a!}#T%T#T#o7a#o;'S%T;'S;=`%f\u003C%lO%Ta8c[YPOy%Tz}%T}!O9X!O!Q%T!Q![9X![!c%T!c!}9X!}#T%T#T#o9X#o;'S%T;'S;=`%f\u003C%lO%Ta9`[YP|`Oy%Tz}%T}!O9X!O!Q%T!Q![9X![!c%T!c!}9X!}#T%T#T#o9X#o;'S%T;'S;=`%f\u003C%lO%T~:XWOY:UZw:Uwx.ex#O:U#O#P:q#P;'S:U;'S;=`;m\u003C%lO:U~:tRO;'S:U;'S;=`:};=`O:U~;QXOY:UZw:Uwx.ex#O:U#O#P:q#P;'S:U;'S;=`;m;=`\u003C%l:U\u003C%lO:U~;pP;=`\u003C%l:Uo;xSj_Oy%Tz;'S%T;'S;=`%f\u003C%lO%T~\u003CZOa~m\u003CbUVPrWOy%Tz!_%T!_!`6|!`;'S%T;'S;=`%f\u003C%lO%To\u003C{Y#pQrWOy%Tz!O%T!O!P=k!P!Q%T!Q![@p![#R%T#R#SAm#S;'S%T;'S;=`%f\u003C%lO%Tm=pU|`Oy%Tz!Q%T!Q![>S![;'S%T;'S;=`%f\u003C%lO%Tm>ZY#m]|`Oy%Tz!Q%T!Q![>S![!g%T!g!h>y!h#X%T#X#Y>y#Y;'S%T;'S;=`%f\u003C%lO%Tm?OY|`Oy%Tz{%T{|?n|}%T}!O?n!O!Q%T!Q![@V![;'S%T;'S;=`%f\u003C%lO%Tm?sU|`Oy%Tz!Q%T!Q![@V![;'S%T;'S;=`%f\u003C%lO%Tm@^U#m]|`Oy%Tz!Q%T!Q![@V![;'S%T;'S;=`%f\u003C%lO%Tm@w[#m]|`Oy%Tz!O%T!O!P>S!P!Q%T!Q![@p![!g%T!g!h>y!h#X%T#X#Y>y#Y;'S%T;'S;=`%f\u003C%lO%TbAtS#xQ|`Oy%Tz;'S%T;'S;=`%f\u003C%lO%TkBVScZOy%Tz;'S%T;'S;=`%f\u003C%lO%TmBhXrWOy%Tz}%T}!OCT!O!P=k!P!Q%T!Q![@p![;'S%T;'S;=`%f\u003C%lO%TmCYW|`Oy%Tz!c%T!c!}Cr!}#T%T#T#oCr#o;'S%T;'S;=`%f\u003C%lO%TmCy[f]|`Oy%Tz}%T}!OCr!O!Q%T!Q![Cr![!c%T!c!}Cr!}#T%T#T#oCr#o;'S%T;'S;=`%f\u003C%lO%ToDtW#iROy%Tz!O%T!O!PE^!P!Q%T!Q![>S![;'S%T;'S;=`%f\u003C%lO%TlEcU|`Oy%Tz!O%T!O!PEu!P;'S%T;'S;=`%f\u003C%lO%TlE|S#s[|`Oy%Tz;'S%T;'S;=`%f\u003C%lO%T~F_VrWOy%Tz{Ft{!P%T!P!QIl!Q;'S%T;'S;=`%f\u003C%lO%T~FyU|`OyFtyzG]z{Hd{;'SFt;'S;=`If\u003C%lOFt~G`TOzG]z{Go{;'SG];'S;=`H^\u003C%lOG]~GrVOzG]z{Go{!PG]!P!QHX!Q;'SG];'S;=`H^\u003C%lOG]~H^OR~~HaP;=`\u003C%lG]~HiW|`OyFtyzG]z{Hd{!PFt!P!QIR!Q;'SFt;'S;=`If\u003C%lOFt~IYS|`R~Oy%Tz;'S%T;'S;=`%f\u003C%lO%T~IiP;=`\u003C%lFt~IsV|`S~OYIlYZ%TZyIlyzJYz;'SIl;'S;=`Jq\u003C%lOIl~J_SS~OYJYZ;'SJY;'S;=`Jk\u003C%lOJY~JnP;=`\u003C%lJY~JtP;=`\u003C%lIlmJ|[#m]Oy%Tz!O%T!O!P>S!P!Q%T!Q![@p![!g%T!g!h>y!h#X%T#X#Y>y#Y;'S%T;'S;=`%f\u003C%lO%TkKwU^ZOy%Tz![%T![!]LZ!];'S%T;'S;=`%f\u003C%lO%TcLbS_R|`Oy%Tz;'S%T;'S;=`%f\u003C%lO%TkLsS!ZZOy%Tz;'S%T;'S;=`%f\u003C%lO%ThMUUrWOy%Tz!_%T!_!`Mh!`;'S%T;'S;=`%f\u003C%lO%ThMoS|`rWOy%Tz;'S%T;'S;=`%f\u003C%lO%TlNSW!SSrWOy%Tz!^%T!^!_Mh!_!`%T!`!aMh!a;'S%T;'S;=`%f\u003C%lO%TjNsV!UQrWOy%Tz!_%T!_!`Mh!`!a! Y!a;'S%T;'S;=`%f\u003C%lO%Tb! aS!UQ|`Oy%Tz;'S%T;'S;=`%f\u003C%lO%To! rYg]Oy%Tz!b%T!b!c!!b!c!}!#R!}#T%T#T#o!#R#o#p!$O#p;'S%T;'S;=`%f\u003C%lO%Tm!!iWg]|`Oy%Tz!c%T!c!}!#R!}#T%T#T#o!#R#o;'S%T;'S;=`%f\u003C%lO%Tm!#Y[g]|`Oy%Tz}%T}!O!#R!O!Q%T!Q![!#R![!c%T!c!}!#R!}#T%T#T#o!#R#o;'S%T;'S;=`%f\u003C%lO%To!$TW|`Oy%Tz!c%T!c!}!$m!}#T%T#T#o!$m#o;'S%T;'S;=`%f\u003C%lO%To!$r^|`Oy%Tz}%T}!O!$m!O!Q%T!Q![!$m![!c%T!c!}!$m!}#T%T#T#o!$m#o#q%T#q#r!%n#r;'S%T;'S;=`%f\u003C%lO%To!%uSp_|`Oy%Tz;'S%T;'S;=`%f\u003C%lO%To!&W[#h_Oy%Tz}%T}!O!&|!O!Q%T!Q![!&|![!c%T!c!}!&|!}#T%T#T#o!&|#o;'S%T;'S;=`%f\u003C%lO%To!'T[#h_|`Oy%Tz}%T}!O!&|!O!Q%T!Q![!&|![!c%T!c!}!&|!}#T%T#T#o!&|#o;'S%T;'S;=`%f\u003C%lO%Tk!(OSyZOy%Tz;'S%T;'S;=`%f\u003C%lO%Tm!(aSw]Oy%Tz;'S%T;'S;=`%f\u003C%lO%Td!(pUOy%Tz!_%T!_!`6|!`;'S%T;'S;=`%f\u003C%lO%Tk!)XS!^ZOy%Tz;'S%T;'S;=`%f\u003C%lO%Tk!)jS!]ZOy%Tz;'S%T;'S;=`%f\u003C%lO%To!){Y#oQOr%Trs!*ksw%Twx!.wxy%Tz!_%T!_!`6|!`;'S%T;'S;=`%f\u003C%lO%Tm!*pZ|`OY!*kYZ%TZr!*krs!+csy!*kyz!+vz#O!*k#O#P!-j#P;'S!*k;'S;=`!.q\u003C%lO!*km!+jSo]|`Oy%Tz;'S%T;'S;=`%f\u003C%lO%T]!+yWOY!+vZr!+vrs!,cs#O!+v#O#P!,h#P;'S!+v;'S;=`!-d\u003C%lO!+v]!,hOo]]!,kRO;'S!+v;'S;=`!,t;=`O!+v]!,wXOY!+vZr!+vrs!,cs#O!+v#O#P!,h#P;'S!+v;'S;=`!-d;=`\u003C%l!+v\u003C%lO!+v]!-gP;=`\u003C%l!+vm!-oU|`Oy!*kyz!+vz;'S!*k;'S;=`!.R;=`\u003C%l!+v\u003C%lO!*km!.UXOY!+vZr!+vrs!,cs#O!+v#O#P!,h#P;'S!+v;'S;=`!-d;=`\u003C%l!*k\u003C%lO!+vm!.tP;=`\u003C%l!*km!.|Z|`OY!.wYZ%TZw!.wwx!+cxy!.wyz!/oz#O!.w#O#P!1^#P;'S!.w;'S;=`!2e\u003C%lO!.w]!/rWOY!/oZw!/owx!,cx#O!/o#O#P!0[#P;'S!/o;'S;=`!1W\u003C%lO!/o]!0_RO;'S!/o;'S;=`!0h;=`O!/o]!0kXOY!/oZw!/owx!,cx#O!/o#O#P!0[#P;'S!/o;'S;=`!1W;=`\u003C%l!/o\u003C%lO!/o]!1ZP;=`\u003C%l!/om!1cU|`Oy!.wyz!/oz;'S!.w;'S;=`!1u;=`\u003C%l!/o\u003C%lO!.wm!1xXOY!/oZw!/owx!,cx#O!/o#O#P!0[#P;'S!/o;'S;=`!1W;=`\u003C%l!.w\u003C%lO!/om!2hP;=`\u003C%l!.w`!2nP;=`\u003C%l$t\\\",tokenizers:[descendant,unitToken,argList,0,1,2,3,4],topRules:{\\\"StyleSheet\\\":[0,5]},specialized:[{term:116,get:value=>spec_identifier[value]||-1},{term:23,get:value=>spec_AtKeyword[value]||-1}],tokenPrec:2180});const lessLanguage=LRLanguage.define({name:\\\"less\\\",parser:parser$1.configure({props:[indentNodeProp.add({Declaration:continuedIndent()}),foldNodeProp.add({Block:foldInside})]}),languageData:{commentTokens:{block:{open:\\\"/*\\\",close:\\\"*/\\\"},line:\\\"//\\\"},indentOnInput:/^\\\\s*\\\\}$/,wordChars:\\\"@-\\\"}});const lessCompletionSource=defineCSSCompletionSource(node=>node.name==\\\"VariableName\\\"||node.name==\\\"AtKeyword\\\");function less(){return new LanguageSupport(lessLanguage,lessLanguage.data.of({autocomplete:lessCompletionSource}));}var _m27=Object.freeze({__proto__:null,less:less,lessCompletionSource:lessCompletionSource,lessLanguage:lessLanguage});const parser=LRParser.deserialize({version:14,states:\\\"!WQVQPOOO_QPO'#CaOOQO'#Cf'#CfOOQO'#Cb'#CbQVQPOOOOQO,58{,58{OjQPO,58{OOQO-E6`-E6`OOQO1G.g1G.g\\\",stateData:\\\"u~OXOS~OQQOSPO~OQQORTOSPO~OQQORWOSPO~O\\\",goto:\\\"rZPPPPP[bPPPlXQOPSUQSOQUPTVSUXROPSU\\\",nodeNames:\\\"⚠ Program String ) ( Application\\\",maxTerm:10,nodeProps:[[\\\"openedBy\\\",3,\\\"(\\\"],[\\\"closedBy\\\",4,\\\")\\\"]],skippedNodes:[0],repeatNodeCount:1,tokenData:\\\"#q~RVXYhYZh]^hpqhrsyxy#gyz#l~mSX~XYhYZh]^hpqh~|VOryrs!cs#Oy#O#P!h#P;'Sy;'S;=`#a\u003C%lOy~!hOQ~~!kRO;'Sy;'S;=`!t;=`Oy~!wWOryrs!cs#Oy#O#P!h#P;'Sy;'S;=`#a;=`\u003C%ly\u003C%lOy~#dP;=`\u003C%ly~#lOS~~#qOR~\\\",tokenizers:[0],topRules:{\\\"Program\\\":[0,1]},tokenPrec:0});const tiddlywikiLanguage=LRLanguage.define({parser:parser.configure({props:[indentNodeProp.add({Application:delimitedIndent({closing:\\\")\\\",align:false})}),foldNodeProp.add({Application:foldInside}),styleTags({String:tags$1.string,\\\"( )\\\":tags$1.paren})]}),languageData:{}});function tiddlywiki(){return new LanguageSupport(tiddlywikiLanguage);}var _m28=Object.freeze({__proto__:null,tiddlywiki:tiddlywiki,tiddlywikiLanguage:tiddlywikiLanguage});const chalky=\\\"#e5c07b\\\",coral=\\\"#e06c75\\\",cyan=\\\"#56b6c2\\\",invalid=\\\"#ffffff\\\",ivory=\\\"#abb2bf\\\",stone=\\\"#7d8799\\\",malibu=\\\"#61afef\\\",sage=\\\"#98c379\\\",whiskey=\\\"#d19a66\\\",violet=\\\"#c678dd\\\",darkBackground=\\\"#21252b\\\",highlightBackground=\\\"#2c313a\\\",background=\\\"#282c34\\\",tooltipBackground=\\\"#353a42\\\",selection=\\\"#3E4451\\\",cursor=\\\"#528bff\\\";const color={chalky,coral,cyan,invalid,ivory,stone,malibu,sage,whiskey,violet,darkBackground,highlightBackground,background,tooltipBackground,selection,cursor};const oneDarkTheme=EditorView.theme({\\\"&\\\":{color:ivory,backgroundColor:background},\\\".cm-content\\\":{caretColor:cursor},\\\".cm-cursor, .cm-dropCursor\\\":{borderLeftColor:cursor},\\\"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection\\\":{backgroundColor:selection},\\\".cm-panels\\\":{backgroundColor:darkBackground,color:ivory},\\\".cm-panels.cm-panels-top\\\":{borderBottom:\\\"2px solid black\\\"},\\\".cm-panels.cm-panels-bottom\\\":{borderTop:\\\"2px solid black\\\"},\\\".cm-searchMatch\\\":{backgroundColor:\\\"#72a1ff59\\\",outline:\\\"1px solid #457dff\\\"},\\\".cm-searchMatch.cm-searchMatch-selected\\\":{backgroundColor:\\\"#6199ff2f\\\"},\\\".cm-activeLine\\\":{backgroundColor:\\\"#6699ff0b\\\"},\\\".cm-selectionMatch\\\":{backgroundColor:\\\"#aafe661a\\\"},\\\"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket\\\":{backgroundColor:\\\"#bad0f847\\\"},\\\".cm-gutters\\\":{backgroundColor:background,color:stone,border:\\\"none\\\"},\\\".cm-activeLineGutter\\\":{backgroundColor:highlightBackground},\\\".cm-foldPlaceholder\\\":{backgroundColor:\\\"transparent\\\",border:\\\"none\\\",color:\\\"#ddd\\\"},\\\".cm-tooltip\\\":{border:\\\"none\\\",backgroundColor:tooltipBackground},\\\".cm-tooltip .cm-tooltip-arrow:before\\\":{borderTopColor:\\\"transparent\\\",borderBottomColor:\\\"transparent\\\"},\\\".cm-tooltip .cm-tooltip-arrow:after\\\":{borderTopColor:tooltipBackground,borderBottomColor:tooltipBackground},\\\".cm-tooltip-autocomplete\\\":{\\\"& > ul > li[aria-selected]\\\":{backgroundColor:highlightBackground,color:ivory}}},{dark:true});const oneDarkHighlightStyle=HighlightStyle.define([{tag:tags$1.keyword,color:violet},{tag:[tags$1.name,tags$1.deleted,tags$1.character,tags$1.propertyName,tags$1.macroName],color:coral},{tag:[tags$1.function(tags$1.variableName),tags$1.labelName],color:malibu},{tag:[tags$1.color,tags$1.constant(tags$1.name),tags$1.standard(tags$1.name)],color:whiskey},{tag:[tags$1.definition(tags$1.name),tags$1.separator],color:ivory},{tag:[tags$1.typeName,tags$1.className,tags$1.number,tags$1.changed,tags$1.annotation,tags$1.modifier,tags$1.self,tags$1.namespace],color:chalky},{tag:[tags$1.operator,tags$1.operatorKeyword,tags$1.url,tags$1.escape,tags$1.regexp,tags$1.link,tags$1.special(tags$1.string)],color:cyan},{tag:[tags$1.meta,tags$1.comment],color:stone},{tag:tags$1.strong,fontWeight:\\\"bold\\\"},{tag:tags$1.emphasis,fontStyle:\\\"italic\\\"},{tag:tags$1.strikethrough,textDecoration:\\\"line-through\\\"},{tag:tags$1.link,color:stone,textDecoration:\\\"underline\\\"},{tag:tags$1.heading,fontWeight:\\\"bold\\\",color:coral},{tag:[tags$1.atom,tags$1.bool,tags$1.special(tags$1.variableName)],color:whiskey},{tag:[tags$1.processingInstruction,tags$1.string,tags$1.inserted],color:sage},{tag:tags$1.invalid,color:invalid}]);const oneDark=[oneDarkTheme,syntaxHighlighting(oneDarkHighlightStyle)];var _m29=Object.freeze({__proto__:null,color:color,oneDark:oneDark,oneDarkHighlightStyle:oneDarkHighlightStyle,oneDarkTheme:oneDarkTheme});class Change{constructor(fromA,toA,fromB,toB){this.fromA=fromA;this.toA=toA;this.fromB=fromB;this.toB=toB;}offset(offA,offB){return new Change(this.fromA+offA,this.toA+offA,this.fromB+offB,this.toB+offB);}}function findDiff(a,fromA,toA,b,fromB,toB){if(a==b)return[];let prefix=commonPrefix(a,fromA,toA,b,fromB,toB);let suffix=commonSuffix(a,fromA+prefix,toA,b,fromB+prefix,toB);fromA+=prefix;toA-=suffix;fromB+=prefix;toB-=suffix;let lenA=toA-fromA,lenB=toB-fromB;if(!lenA||!lenB)return[new Change(fromA,toA,fromB,toB)];if(lenA>lenB){let found=a.slice(fromA,toA).indexOf(b.slice(fromB,toB));if(found>-1)return[new Change(fromA,fromA+found,fromB,fromB),new Change(fromA+found+lenB,toA,toB,toB)];}else if(lenB>lenA){let found=b.slice(fromB,toB).indexOf(a.slice(fromA,toA));if(found>-1)return[new Change(fromA,fromA,fromB,fromB+found),new Change(toA,toA,fromB+found+lenA,toB)];}if(lenA==1||lenB==1)return[new Change(fromA,toA,fromB,toB)];let half=halfMatch(a,fromA,toA,b,fromB,toB);if(half){let[sharedA,sharedB,sharedLen]=half;return findDiff(a,fromA,sharedA,b,fromB,sharedB).concat(findDiff(a,sharedA+sharedLen,toA,b,sharedB+sharedLen,toB));}return findSnake(a,fromA,toA,b,fromB,toB);}let scanLimit=1e9;function findSnake(a,fromA,toA,b,fromB,toB){let lenA=toA-fromA,lenB=toB-fromB;if(scanLimit\u003C1e9&&Math.min(lenA,lenB)>scanLimit*16){if(Math.min(lenA,lenB)>scanLimit*64)return[new Change(fromA,toA,fromB,toB)];return crudeMatch(a,fromA,toA,b,fromB,toB);}let off=Math.ceil((lenA+lenB)/2);frontier1.reset(off);frontier2.reset(off);let match1=(x,y)=>a.charCodeAt(fromA+x)==b.charCodeAt(fromB+y);let match2=(x,y)=>a.charCodeAt(toA-x-1)==b.charCodeAt(toB-y-1);let test1=(lenA-lenB)%2!=0?frontier2:null,test2=test1?null:frontier1;for(let depth=0;depth\u003Coff;depth++){if(depth>scanLimit)return crudeMatch(a,fromA,toA,b,fromB,toB);let done=frontier1.advance(depth,lenA,lenB,off,test1,false,match1)||frontier2.advance(depth,lenA,lenB,off,test2,true,match2);if(done)return bisect(a,fromA,toA,fromA+done[0],b,fromB,toB,fromB+done[1]);}return[new Change(fromA,toA,fromB,toB)];}class Frontier{constructor(){this.vec=[];}reset(off){this.len=off\u003C\u003C1;for(let i=0;i\u003Cthis.len;i++)this.vec[i]=-1;this.vec[off+1]=0;this.start=this.end=0;}advance(depth,lenX,lenY,vOff,other,fromBack,match){for(let k=-depth+this.start;k\u003C=depth-this.end;k+=2){let off=vOff+k;let x=k==-depth||k!=depth&&this.vec[off-1]\u003Cthis.vec[off+1]?this.vec[off+1]:this.vec[off-1]+1;let y=x-k;while(x\u003ClenX&&y\u003ClenY&&match(x,y)){x++;y++;}this.vec[off]=x;if(x>lenX){this.end+=2;}else if(y>lenY){this.start+=2;}else if(other){let offOther=vOff+(lenX-lenY)-k;if(offOther>=0&&offOther\u003Cthis.len&&other.vec[offOther]!=-1){if(!fromBack){let xOther=lenX-other.vec[offOther];if(x>=xOther)return[x,y];}else{let xOther=other.vec[offOther];if(xOther>=lenX-x)return[xOther,vOff+xOther-offOther];}}}}return null;}}const frontier1=new Frontier(),frontier2=new Frontier();function bisect(a,fromA,toA,splitA,b,fromB,toB,splitB){let stop=false;if(!validIndex(a,splitA)&&++splitA==toA)stop=true;if(!validIndex(b,splitB)&&++splitB==toB)stop=true;if(stop)return[new Change(fromA,toA,fromB,toB)];return findDiff(a,fromA,splitA,b,fromB,splitB).concat(findDiff(a,splitA,toA,b,splitB,toB));}function chunkSize(lenA,lenB){let size=1,max=Math.min(lenA,lenB);while(size\u003Cmax)size=size\u003C\u003C1;return size;}function commonPrefix(a,fromA,toA,b,fromB,toB){if(fromA==toA||fromA==toB||a.charCodeAt(fromA)!=b.charCodeAt(fromB))return 0;let chunk=chunkSize(toA-fromA,toB-fromB);for(let pA=fromA,pB=fromB;;){let endA=pA+chunk,endB=pB+chunk;if(endA>toA||endB>toB||a.slice(pA,endA)!=b.slice(pB,endB)){if(chunk==1)return pA-fromA-(validIndex(a,pA)?0:1);chunk=chunk>>1;}else if(endA==toA||endB==toB){return endA-fromA;}else{pA=endA;pB=endB;}}}function commonSuffix(a,fromA,toA,b,fromB,toB){if(fromA==toA||fromB==toB||a.charCodeAt(toA-1)!=b.charCodeAt(toB-1))return 0;let chunk=chunkSize(toA-fromA,toB-fromB);for(let pA=toA,pB=toB;;){let sA=pA-chunk,sB=pB-chunk;if(sA\u003CfromA||sB\u003CfromB||a.slice(sA,pA)!=b.slice(sB,pB)){if(chunk==1)return toA-pA-(validIndex(a,pA)?0:1);chunk=chunk>>1;}else if(sA==fromA||sB==fromB){return toA-sA;}else{pA=sA;pB=sB;}}}function findMatch(a,fromA,toA,b,fromB,toB,size,divideTo){let rangeB=b.slice(fromB,toB);let best=null;for(;;){if(best||size\u003CdivideTo)return best;for(let start=fromA+size;;){if(!validIndex(a,start))start++;let end=start+size;if(!validIndex(a,end))end+=end==start+1?1:-1;if(end>=toA)break;let seed=a.slice(start,end);let found=-1;while((found=rangeB.indexOf(seed,found+1))!=-1){let prefixAfter=commonPrefix(a,end,toA,b,fromB+found+seed.length,toB);let suffixBefore=commonSuffix(a,fromA,start,b,fromB,fromB+found);let length=seed.length+prefixAfter+suffixBefore;if(!best||best[2]\u003Clength)best=[start-suffixBefore,fromB+found-suffixBefore,length];}start=end;}if(divideTo\u003C0)return best;size=size>>1;}}function halfMatch(a,fromA,toA,b,fromB,toB){let lenA=toA-fromA,lenB=toB-fromB;if(lenA\u003ClenB){let result=halfMatch(b,fromB,toB,a,fromA,toA);return result&&[result[1],result[0],result[2]];}if(lenA\u003C4||lenB*2\u003ClenA)return null;return findMatch(a,fromA,toA,b,fromB,toB,Math.floor(lenA/4),-1);}function crudeMatch(a,fromA,toA,b,fromB,toB){let lenA=toA-fromA,lenB=toB-fromB;let result;if(lenA\u003ClenB){let inv=findMatch(b,fromB,toB,a,fromA,toA,Math.floor(lenA/6),50);result=inv&&[inv[1],inv[0],inv[2]];}else{result=findMatch(a,fromA,toA,b,fromB,toB,Math.floor(lenB/6),50);}if(!result)return[new Change(fromA,toA,fromB,toB)];let[sharedA,sharedB,sharedLen]=result;return findDiff(a,fromA,sharedA,b,fromB,sharedB).concat(findDiff(a,sharedA+sharedLen,toA,b,sharedB+sharedLen,toB));}function mergeAdjacent(changes,minGap){for(let i=1;i\u003Cchanges.length;i++){let prev=changes[i-1],cur=changes[i];if(prev.toA>cur.fromA-minGap&&prev.toB>cur.fromB-minGap){changes[i-1]=new Change(prev.fromA,cur.toA,prev.fromB,cur.toB);changes.splice(i--,1);}}}function normalize(a,b,changes){for(;;){mergeAdjacent(changes,1);let moved=false;for(let i=0;i\u003Cchanges.length;i++){let ch=changes[i],pre,post;if(pre=commonPrefix(a,ch.fromA,ch.toA,b,ch.fromB,ch.toB))ch=changes[i]=new Change(ch.fromA+pre,ch.toA,ch.fromB+pre,ch.toB);if(post=commonSuffix(a,ch.fromA,ch.toA,b,ch.fromB,ch.toB))ch=changes[i]=new Change(ch.fromA,ch.toA-post,ch.fromB,ch.toB-post);let lenA=ch.toA-ch.fromA,lenB=ch.toB-ch.fromB;if(lenA&&lenB)continue;let beforeLen=ch.fromA-(i?changes[i-1].toA:0);let afterLen=(i\u003Cchanges.length-1?changes[i+1].fromA:a.length)-ch.toA;if(!beforeLen||!afterLen)continue;let text=lenA?a.slice(ch.fromA,ch.toA):b.slice(ch.fromB,ch.toB);if(beforeLen\u003C=text.length&&a.slice(ch.fromA-beforeLen,ch.fromA)==text.slice(text.length-beforeLen)){changes[i]=new Change(ch.fromA-beforeLen,ch.toA-beforeLen,ch.fromB-beforeLen,ch.toB-beforeLen);moved=true;}else if(afterLen\u003C=text.length&&a.slice(ch.toA,ch.toA+afterLen)==text.slice(0,afterLen)){changes[i]=new Change(ch.fromA+afterLen,ch.toA+afterLen,ch.fromB+afterLen,ch.toB+afterLen);moved=true;}}if(!moved)break;}return changes;}function makePresentable(changes,a,b){for(let posA=0,i=0;i\u003Cchanges.length;i++){let change=changes[i];let lenA=change.toA-change.fromA,lenB=change.toB-change.fromB;if(lenA&&lenB||lenA>3||lenB>3){let nextChangeA=i==changes.length-1?a.length:changes[i+1].fromA;let maxScanBefore=change.fromA-posA,maxScanAfter=nextChangeA-change.toA;let boundBefore=findWordBoundaryBefore(a,change.fromA,Math.min(maxScanBefore,5));let boundAfter=findWordBoundaryAfter(a,change.toA,Math.min(maxScanAfter,5));let lenBefore=change.fromA-boundBefore,lenAfter=boundAfter-change.toA;if(!lenA||!lenB){let changeLen=Math.max(lenA,lenB);let[changeText,changeFrom,changeTo]=lenA?[a,change.fromA,change.toA]:[b,change.fromB,change.toB];let indentBefore,indentLen;if(lenBefore&&lenAfter){if(changeLen>lenBefore&&a.slice(boundBefore,change.fromA)==changeText.slice(changeTo-lenBefore,changeTo)){change=changes[i]=new Change(boundBefore,boundBefore+lenA,change.fromB-lenBefore,change.toB-lenBefore);boundBefore=change.fromA;boundAfter=findWordBoundaryAfter(a,change.toA,Math.min(nextChangeA-change.toA,5));}else if(changeLen>lenAfter&&a.slice(change.toA,boundAfter)==changeText.slice(changeFrom,changeFrom+lenAfter)){change=changes[i]=new Change(boundAfter-lenA,boundAfter,change.fromB+lenAfter,change.toB+lenAfter);boundAfter=change.toA;boundBefore=findWordBoundaryBefore(a,change.fromA,Math.min(change.fromA-posA,5));}lenBefore=change.fromA-boundBefore;lenAfter=boundAfter-change.toA;}else if(!lenBefore&&!lenAfter&&(indentLen=change.fromA-(indentBefore=findIndentBefore(a,change.fromA,maxScanBefore)))&&a.slice(indentBefore,change.fromA)==changeText.slice(changeTo-indentLen,changeTo)){change=changes[i]=new Change(indentBefore,indentBefore+lenA,change.fromB-indentLen,change.toB-indentLen);}}if(lenBefore||lenAfter){change=changes[i]=new Change(change.fromA-lenBefore,change.toA+lenAfter,change.fromB-lenBefore,change.toB+lenAfter);}posA=change.toA;}}mergeAdjacent(changes,3);return changes;}let wordChar;try{wordChar=new RegExp(\\\"[\\\\\\\\p{Alphabetic}\\\\\\\\p{Number}]\\\",\\\"u\\\");}catch(_){}function asciiWordChar(code){return code>48&&code\u003C58||code>64&&code\u003C91||code>96&&code\u003C123;}function wordCharAfter(s,pos){if(pos==s.length)return 0;let next=s.charCodeAt(pos);if(next\u003C192)return asciiWordChar(next)?1:0;if(!wordChar)return 0;if(!isSurrogate1(next)||pos==s.length-1)return wordChar.test(String.fromCharCode(next))?1:0;return wordChar.test(s.slice(pos,pos+2))?2:0;}function wordCharBefore(s,pos){if(!pos)return 0;let prev=s.charCodeAt(pos-1);if(prev\u003C192)return asciiWordChar(prev)?1:0;if(!wordChar)return 0;if(!isSurrogate2(prev)||pos==1)return wordChar.test(String.fromCharCode(prev))?1:0;return wordChar.test(s.slice(pos-2,pos))?2:0;}function findWordBoundaryAfter(s,pos,max){if(pos==s.length||!wordCharBefore(s,pos))return pos;for(let cur=pos,end=pos+max;;){let size=wordCharAfter(s,cur);if(!size)return cur;cur+=size;if(cur>end)return pos;}}function findWordBoundaryBefore(s,pos,max){if(!pos||!wordCharAfter(s,pos))return pos;for(let cur=pos,end=pos-max;;){let size=wordCharBefore(s,cur);if(!size)return cur;cur-=size;if(cur\u003Cend)return pos;}}function findIndentBefore(s,pos,max){for(let cur=pos,end=pos-max;;){let next=cur?s.charCodeAt(cur-1):10;if(next==10)return cur;cur--;if(cur\u003Cend||next!=32&&next!=9)return pos;}}const isSurrogate1=code=>code>=0xD800&&code\u003C=0xDBFF;const isSurrogate2=code=>code>=0xDC00&&code\u003C=0xDFFF;function validIndex(s,index){return!index||index==s.length||!isSurrogate1(s.charCodeAt(index-1))||!isSurrogate2(s.charCodeAt(index));}function diff(a,b,config){var _a;scanLimit=((_a=config===null||config===void 0?void 0:config.scanLimit)!==null&&_a!==void 0?_a:1e9)>>1;return normalize(a,b,findDiff(a,0,a.length,b,0,b.length));}function presentableDiff(a,b,config){return makePresentable(diff(a,b,config),a,b);}const mergeConfig=Facet.define({combine:values=>values[0]});const setChunks=StateEffect.define();const ChunkField=StateField.define({create(state){return null;},update(current,tr){for(let _i312=0,_tr$effects16=tr.effects,_length312=_tr$effects16.length;_i312\u003C_length312;_i312++){let e=_tr$effects16[_i312];if(e.is(setChunks))current=e.value;}return current;}});function getChunks(state){let field=state.field(ChunkField,false);if(!field)return null;let conf=state.facet(mergeConfig);return{chunks:field,side:conf?conf.side:null};}let moveByChunk=dir=>({state,dispatch})=>{let chunks=state.field(ChunkField,false),conf=state.facet(mergeConfig);if(!chunks||!chunks.length||!conf)return false;let{head}=state.selection.main,pos=0;for(let i=chunks.length-1;i>=0;i--){let chunk=chunks[i];let[from,to]=conf.side==\\\"b\\\"?[chunk.fromB,chunk.toB]:[chunk.fromA,chunk.toA];if(to\u003Chead){pos=i+1;break;}if(from\u003C=head){if(chunks.length==1)return false;pos=i+(dir\u003C0?0:1);break;}}let next=chunks[(pos+(dir\u003C0?chunks.length-1:0))%chunks.length];let[from,to]=conf.side==\\\"b\\\"?[next.fromB,next.toB]:[next.fromA,next.toA];dispatch(state.update({selection:{anchor:from},userEvent:\\\"select.byChunk\\\",effects:EditorView.scrollIntoView(EditorSelection.range(to,from))}));return true;};const goToNextChunk=moveByChunk(1);const goToPreviousChunk=moveByChunk(-1);class Chunk{constructor(changes,fromA,toA,fromB,toB){this.changes=changes;this.fromA=fromA;this.toA=toA;this.fromB=fromB;this.toB=toB;}offset(offA,offB){return offA||offB?new Chunk(this.changes,this.fromA+offA,this.toA+offA,this.fromB+offB,this.toB+offB):this;}get endA(){return Math.max(this.fromA,this.toA-1);}get endB(){return Math.max(this.fromB,this.toB-1);}static build(a,b,conf){return toChunks(presentableDiff(a.toString(),b.toString(),conf),a,b,0,0);}static updateA(chunks,a,b,changes,conf){return updateChunks(findRangesForChange(chunks,changes,true,b.length),chunks,a,b,conf);}static updateB(chunks,a,b,changes,conf){return updateChunks(findRangesForChange(chunks,changes,false,a.length),chunks,a,b,conf);}}function fromLine(fromA,fromB,a,b){let lineA=a.lineAt(fromA),lineB=b.lineAt(fromB);return lineA.to==fromA&&lineB.to==fromB&&fromA\u003Ca.length&&fromB\u003Cb.length?[fromA+1,fromB+1]:[lineA.from,lineB.from];}function toLine(toA,toB,a,b){let lineA=a.lineAt(toA),lineB=b.lineAt(toB);return lineA.from==toA&&lineB.from==toB?[toA,toB]:[lineA.to+1,lineB.to+1];}function toChunks(changes,a,b,offA,offB){let chunks=[];for(let i=0;i\u003Cchanges.length;i++){let change=changes[i];let[fromA,fromB]=fromLine(change.fromA+offA,change.fromB+offB,a,b);let[toA,toB]=toLine(change.toA+offA,change.toB+offB,a,b);let chunk=[change.offset(-fromA+offA,-fromB+offB)];while(i\u003Cchanges.length-1){let next=changes[i+1];let[nextA,nextB]=fromLine(next.fromA+offA,next.fromB+offB,a,b);if(nextA>toA+1&&nextB>toB+1)break;chunk.push(next.offset(-fromA+offA,-fromB+offB));[toA,toB]=toLine(next.toA+offA,next.toB+offB,a,b);i++;}chunks.push(new Chunk(chunk,fromA,Math.max(fromA,toA),fromB,Math.max(fromB,toB)));}return chunks;}const updateMargin=1000;function findPos(chunks,pos,isA,start){let lo=0,hi=chunks.length;for(;;){if(lo==hi){let refA=0,refB=0;if(lo)({toA:refA,toB:refB}=chunks[lo-1]);let off=pos-(isA?refA:refB);return[refA+off,refB+off];}let mid=lo+hi>>1,chunk=chunks[mid];let[from,to]=isA?[chunk.fromA,chunk.toA]:[chunk.fromB,chunk.toB];if(from>pos)hi=mid;else if(to\u003C=pos)lo=mid+1;else return start?[chunk.fromA,chunk.fromB]:[chunk.toA,chunk.toB];}}function findRangesForChange(chunks,changes,isA,otherLen){let ranges=[];changes.iterChangedRanges((cFromA,cToA,cFromB,cToB)=>{let fromA=0,toA=isA?changes.length:otherLen;let fromB=0,toB=isA?otherLen:changes.length;if(cFromA>updateMargin)[fromA,fromB]=findPos(chunks,cFromA-updateMargin,isA,true);if(cToA\u003Cchanges.length-updateMargin)[toA,toB]=findPos(chunks,cToA+updateMargin,isA,false);let lenDiff=cToB-cFromB-(cToA-cFromA),last;let[diffA,diffB]=isA?[lenDiff,0]:[0,lenDiff];if(ranges.length&&(last=ranges[ranges.length-1]).toA>=fromA)ranges[ranges.length-1]={fromA:last.fromA,fromB:last.fromB,toA,toB,diffA:last.diffA+diffA,diffB:last.diffB+diffB};else ranges.push({fromA,toA,fromB,toB,diffA,diffB});});return ranges;}function updateChunks(ranges,chunks,a,b,conf){if(!ranges.length)return chunks;let chunkI=0,offA=0,offB=0;let result=[];for(let _i313=0,_length313=ranges.length;_i313\u003C_length313;_i313++){let range=ranges[_i313];let fromA=range.fromA+offA,toA=range.toA+offA+range.diffA;let fromB=range.fromB+offB,toB=range.toB+offB+range.diffB;while(chunkI\u003Cchunks.length){let next=chunks[chunkI];if(next.toA+offA\u003C=fromA&&next.toB+offB\u003C=fromB)result.push(next.offset(offA,offB));else if(next.fromA+offA>toA)break;chunkI++;}for(let _i314=0,_toChunks=toChunks(presentableDiff(a.sliceString(fromA,toA),b.sliceString(fromB,toB),conf),a,b,fromA,fromB),_length314=_toChunks.length;_i314\u003C_length314;_i314++){let chunk=_toChunks[_i314];result.push(chunk);}offA+=range.diffA;offB+=range.diffB;while(chunkI\u003Cchunks.length){let next=chunks[chunkI];if(next.fromA>toA+offA&&next.fromB>toB+offB)break;chunkI++;}}while(chunkI\u003Cchunks.length)result.push(chunks[chunkI++].offset(offA,offB));return result;}const decorateChunks=ViewPlugin.fromClass(class{constructor(view){({deco:this.deco,gutter:this.gutter}=getChunkDeco(view));}update(update){if(update.docChanged||update.viewportChanged||chunksChanged(update.startState,update.state)||configChanged(update.startState,update.state))({deco:this.deco,gutter:this.gutter}=getChunkDeco(update.view));}},{decorations:d=>d.deco});const changeGutter=Prec.low(gutter({class:\\\"cm-changeGutter\\\",markers:view=>{var _a;return((_a=view.plugin(decorateChunks))===null||_a===void 0?void 0:_a.gutter)||RangeSet.empty;}}));function chunksChanged(s1,s2){return s1.field(ChunkField,false)!=s2.field(ChunkField,false);}function configChanged(s1,s2){return s1.facet(mergeConfig)!=s2.facet(mergeConfig);}const changedLine=Decoration.line({class:\\\"cm-changedLine\\\"});const changedText=Decoration.mark({class:\\\"cm-changedText\\\"});const inserted=Decoration.mark({tagName:\\\"ins\\\",class:\\\"cm-insertedLine\\\"});const deleted=Decoration.mark({tagName:\\\"del\\\",class:\\\"cm-deletedLine\\\"});const changedLineGutterMarker=new class extends GutterMarker{constructor(){super(...arguments);this.elementClass=\\\"cm-changedLineGutter\\\";}}();function buildChunkDeco(chunk,doc,isA,highlight,builder,gutterBuilder){let from=isA?chunk.fromA:chunk.fromB,to=isA?chunk.toA:chunk.toB;let changeI=0;if(from!=to){builder.add(from,from,changedLine);builder.add(from,to,isA?deleted:inserted);if(gutterBuilder)gutterBuilder.add(from,from,changedLineGutterMarker);for(let iter=doc.iterRange(from,to-1),pos=from;!iter.next().done;){if(iter.lineBreak){pos++;builder.add(pos,pos,changedLine);if(gutterBuilder)gutterBuilder.add(pos,pos,changedLineGutterMarker);continue;}let lineEnd=pos+iter.value.length;if(highlight)while(changeI\u003Cchunk.changes.length){let nextChange=chunk.changes[changeI];let nextFrom=from+(isA?nextChange.fromA:nextChange.fromB);let nextTo=from+(isA?nextChange.toA:nextChange.toB);let chFrom=Math.max(pos,nextFrom),chTo=Math.min(lineEnd,nextTo);if(chFrom\u003CchTo)builder.add(chFrom,chTo,changedText);if(nextTo\u003ClineEnd)changeI++;else break;}pos=lineEnd;}}}function getChunkDeco(view){let chunks=view.state.field(ChunkField);let{side,highlightChanges,markGutter}=view.state.facet(mergeConfig),isA=side==\\\"a\\\";let builder=new RangeSetBuilder();let gutterBuilder=markGutter?new RangeSetBuilder():null;let{from,to}=view.viewport;for(let _i315=0,_length315=chunks.length;_i315\u003C_length315;_i315++){let chunk=chunks[_i315];if((isA?chunk.fromA:chunk.fromB)>=to)break;if((isA?chunk.toA:chunk.toB)>from)buildChunkDeco(chunk,view.state.doc,isA,highlightChanges,builder,gutterBuilder);}return{deco:builder.finish(),gutter:gutterBuilder&&gutterBuilder.finish()};}class Spacer extends WidgetType{constructor(height){super();this.height=height;}eq(other){return this.height==other.height;}toDOM(){let elt=document.createElement(\\\"div\\\");elt.className=\\\"cm-mergeSpacer\\\";elt.style.height=this.height+\\\"px\\\";return elt;}updateDOM(dom){dom.style.height=this.height+\\\"px\\\";return true;}get estimatedHeight(){return this.height;}ignoreEvent(){return false;}}const adjustSpacers=StateEffect.define({map:(value,mapping)=>value.map(mapping)});const Spacers=StateField.define({create:()=>Decoration.none,update:(spacers,tr)=>{for(let _i316=0,_tr$effects17=tr.effects,_length316=_tr$effects17.length;_i316\u003C_length316;_i316++){let e=_tr$effects17[_i316];if(e.is(adjustSpacers))return e.value;}return spacers.map(tr.changes);},provide:f=>EditorView.decorations.from(f)});const epsilon=.01;function updateSpacers(a,b,chunks){let buildA=new RangeSetBuilder(),buildB=new RangeSetBuilder();let spacersA=a.state.field(Spacers).iter(),spacersB=b.state.field(Spacers).iter();let posA=0,posB=0,offA=0,offB=0;for(let chunkI=0;;chunkI++){let chunk=chunkI\u003Cchunks.length?chunks[chunkI]:null;if(posA\u003C(chunk?chunk.fromA:a.state.doc.length)){let heightA=a.lineBlockAt(posA).top+offA;let heightB=b.lineBlockAt(posB).top+offB;let diff=heightA-heightB;if(diff\u003C-epsilon){offA-=diff;buildA.add(posA,posA,Decoration.widget({widget:new Spacer(-diff),block:true,side:-1}));}else if(diff>epsilon){offB+=diff;buildB.add(posB,posB,Decoration.widget({widget:new Spacer(diff),block:true,side:-1}));}}if(!chunk)break;posA=chunk.toA;posB=chunk.toB;while(spacersA.value&&spacersA.from\u003CposA){offA-=spacersA.value.spec.widget.height;spacersA.next();}while(spacersB.value&&spacersB.from\u003CposB){offB-=spacersB.value.spec.widget.height;spacersB.next();}}while(spacersA.value){offA-=spacersA.value.spec.widget.height;spacersA.next();}while(spacersB.value){offB-=spacersB.value.spec.widget.height;spacersB.next();}let docDiff=a.contentHeight+offA-(b.contentHeight+offB);if(docDiff\u003Cepsilon){buildA.add(a.state.doc.length,a.state.doc.length,Decoration.widget({widget:new Spacer(-docDiff),block:true,side:1}));}else if(docDiff>epsilon){buildB.add(b.state.doc.length,b.state.doc.length,Decoration.widget({widget:new Spacer(docDiff),block:true,side:1}));}let decoA=buildA.finish(),decoB=buildB.finish();if(!RangeSet.eq([decoA],[a.state.field(Spacers)]))a.dispatch({effects:adjustSpacers.of(decoA)});if(!RangeSet.eq([decoB],[b.state.field(Spacers)]))b.dispatch({effects:adjustSpacers.of(decoB)});}const uncollapse=StateEffect.define({map:(value,change)=>change.mapPos(value)});class CollapseWidget extends WidgetType{constructor(lines){super();this.lines=lines;}eq(other){return this.lines==other.lines;}toDOM(view){let outer=document.createElement(\\\"div\\\");outer.className=\\\"cm-collapsedLines\\\";outer.textContent=\\\"⦚ \\\"+view.state.phrase(\\\"$ unchanged lines\\\",this.lines)+\\\" ⦚\\\";outer.addEventListener(\\\"click\\\",e=>{let pos=view.posAtDOM(e.target);view.dispatch({effects:uncollapse.of(pos)});let{side,sibling}=view.state.facet(mergeConfig);if(sibling)sibling().dispatch({effects:uncollapse.of(mapPos(pos,view.state.field(ChunkField),side==\\\"a\\\"))});});return outer;}ignoreEvent(e){return e instanceof MouseEvent;}get estimatedHeight(){return 27;}}function mapPos(pos,chunks,isA){let startOur=0,startOther=0;for(let i=0;;i++){let next=i\u003Cchunks.length?chunks[i]:null;if(!next||(isA?next.fromA:next.fromB)>=pos)return startOther+(pos-startOur);[startOur,startOther]=isA?[next.toA,next.toB]:[next.toB,next.toA];}}const CollapsedRanges=StateField.define({create(state){return Decoration.none;},update(deco,tr){deco=deco.map(tr.changes);for(let _i317=0,_tr$effects18=tr.effects,_length317=_tr$effects18.length;_i317\u003C_length317;_i317++){let e=_tr$effects18[_i317];if(e.is(uncollapse))deco=deco.update({filter:from=>from!=e.value});}return deco;},provide:f=>EditorView.decorations.from(f)});function collapseUnchanged({margin=3,minSize=4}){return CollapsedRanges.init(state=>buildCollapsedRanges(state,margin,minSize));}function buildCollapsedRanges(state,margin,minLines){let builder=new RangeSetBuilder();let isA=state.facet(mergeConfig).side==\\\"a\\\";let chunks=state.field(ChunkField);let prevLine=1;for(let i=0;;i++){let chunk=i\u003Cchunks.length?chunks[i]:null;let collapseFrom=i?prevLine+margin:1;let collapseTo=chunk?state.doc.lineAt(isA?chunk.fromA:chunk.fromB).number-1-margin:state.doc.lines;let lines=collapseTo-collapseFrom+1;if(lines>=minLines){builder.add(state.doc.line(collapseFrom).from,state.doc.line(collapseTo).to,Decoration.replace({widget:new CollapseWidget(lines),block:true}));}if(!chunk)break;prevLine=state.doc.lineAt(Math.min(state.doc.length,isA?chunk.toA:chunk.toB)).number;}return builder.finish();}const externalTheme=EditorView.styleModule.of(new StyleModule({\\\".cm-mergeView\\\":{overflowY:\\\"auto\\\"},\\\".cm-mergeViewEditors\\\":{display:\\\"flex\\\",alignItems:\\\"stretch\\\"},\\\".cm-mergeViewEditor\\\":{flexGrow:1,flexBasis:0,overflow:\\\"hidden\\\"},\\\".cm-merge-revert\\\":{width:\\\"1.6em\\\",flexGrow:0,flexShrink:0,position:\\\"relative\\\"},\\\".cm-merge-revert button\\\":{position:\\\"absolute\\\",display:\\\"block\\\",width:\\\"100%\\\",boxSizing:\\\"border-box\\\",textAlign:\\\"center\\\",background:\\\"none\\\",border:\\\"none\\\",font:\\\"inherit\\\",cursor:\\\"pointer\\\"}}));const baseTheme=EditorView.baseTheme({\\\".cm-mergeView & .cm-scroller, .cm-mergeView &\\\":{height:\\\"auto !important\\\",overflowY:\\\"visible !important\\\"},\\\"&.cm-merge-a .cm-changedLine, .cm-deletedChunk\\\":{backgroundColor:\\\"rgba(160, 128, 100, .08)\\\"},\\\"&.cm-merge-b .cm-changedLine\\\":{backgroundColor:\\\"rgba(100, 160, 128, .08)\\\"},\\\"&light.cm-merge-a .cm-changedText, &light .cm-deletedChunk .cm-deletedText\\\":{background:\\\"linear-gradient(#ee443366, #ee443366) bottom/100% 2px no-repeat\\\"},\\\"&dark.cm-merge-a .cm-changedText, &dark .cm-deletedChunk .cm-deletedText\\\":{background:\\\"linear-gradient(#ffaa9966, #ffaa9966) bottom/100% 2px no-repeat\\\"},\\\"&light.cm-merge-b .cm-changedText\\\":{background:\\\"linear-gradient(#22bb2266, #22bb2266) bottom/100% 2px no-repeat\\\"},\\\"&dark.cm-merge-b .cm-changedText\\\":{background:\\\"linear-gradient(#88ff8866, #88ff8866) bottom/100% 2px no-repeat\\\"},\\\".cm-insertedLine, .cm-deletedLine\\\":{textDecoration:\\\"none\\\"},\\\".cm-deletedChunk\\\":{paddingLeft:\\\"6px\\\",\\\"& .cm-chunkButtons\\\":{position:\\\"absolute\\\",insetInlineEnd:\\\"5px\\\"},\\\"& button\\\":{border:\\\"none\\\",cursor:\\\"pointer\\\",color:\\\"white\\\",margin:\\\"0 2px\\\",borderRadius:\\\"3px\\\",\\\"&[name=accept]\\\":{background:\\\"#2a2\\\"},\\\"&[name=reject]\\\":{background:\\\"#d43\\\"}}},\\\".cm-collapsedLines\\\":{padding:\\\"5px 5px 5px 10px\\\",cursor:\\\"pointer\\\"},\\\"&light .cm-collapsedLines\\\":{color:\\\"#444\\\",background:\\\"linear-gradient(to bottom, transparent 0, #f3f3f3 30%, #f3f3f3 70%, transparent 100%)\\\"},\\\"&dark .cm-collapsedLines\\\":{color:\\\"#ddd\\\",background:\\\"linear-gradient(to bottom, transparent 0, #222 30%, #222 70%, transparent 100%)\\\"},\\\".cm-changeGutter\\\":{width:\\\"3px\\\",paddingLeft:\\\"1px\\\"},\\\"&light.cm-merge-a .cm-changedLineGutter, &light .cm-deletedLineGutter\\\":{background:\\\"#e43\\\"},\\\"&dark.cm-merge-a .cm-changedLineGutter, &dark .cm-deletedLineGutter\\\":{background:\\\"#fa9\\\"},\\\"&light.cm-merge-b .cm-changedLineGutter\\\":{background:\\\"#2b2\\\"},\\\"&dark.cm-merge-b .cm-changedLineGutter\\\":{background:\\\"#8f8\\\"}});const collapseCompartment=new Compartment(),configCompartment=new Compartment();class MergeView{constructor(config){this.revertDOM=null;this.revertToA=false;this.revertToLeft=false;this.measuring=-1;this.diffConf=config.diffConfig;let sharedExtensions=[Prec.low(decorateChunks),baseTheme,externalTheme,Spacers,EditorView.updateListener.of(update=>{if(this.measuring\u003C0&&(update.heightChanged||update.viewportChanged)&&!update.transactions.some(tr=>tr.effects.some(e=>e.is(adjustSpacers))))this.measure();})];let configA=[mergeConfig.of({side:\\\"a\\\",sibling:()=>this.b,highlightChanges:config.highlightChanges!==false,markGutter:config.gutter!==false})];if(config.gutter!==false)configA.push(changeGutter);let stateA=EditorState.create({doc:config.a.doc,selection:config.a.selection,extensions:[config.a.extensions||[],EditorView.editorAttributes.of({class:\\\"cm-merge-a\\\"}),configCompartment.of(configA),sharedExtensions]});let configB=[mergeConfig.of({side:\\\"b\\\",sibling:()=>this.a,highlightChanges:config.highlightChanges!==false,markGutter:config.gutter!==false})];if(config.gutter!==false)configB.push(changeGutter);let stateB=EditorState.create({doc:config.b.doc,selection:config.b.selection,extensions:[config.b.extensions||[],EditorView.editorAttributes.of({class:\\\"cm-merge-b\\\"}),configCompartment.of(configB),sharedExtensions]});this.chunks=Chunk.build(stateA.doc,stateB.doc,this.diffConf);let add=[ChunkField.init(()=>this.chunks),collapseCompartment.of(config.collapseUnchanged?collapseUnchanged(config.collapseUnchanged):[])];stateA=stateA.update({effects:StateEffect.appendConfig.of(add)}).state;stateB=stateB.update({effects:StateEffect.appendConfig.of(add)}).state;this.dom=document.createElement(\\\"div\\\");this.dom.className=\\\"cm-mergeView\\\";this.editorDOM=this.dom.appendChild(document.createElement(\\\"div\\\"));this.editorDOM.className=\\\"cm-mergeViewEditors\\\";let orientation=config.orientation||\\\"a-b\\\";let wrapA=document.createElement(\\\"div\\\");wrapA.className=\\\"cm-mergeViewEditor\\\";let wrapB=document.createElement(\\\"div\\\");wrapB.className=\\\"cm-mergeViewEditor\\\";this.editorDOM.appendChild(orientation==\\\"a-b\\\"?wrapA:wrapB);this.editorDOM.appendChild(orientation==\\\"a-b\\\"?wrapB:wrapA);this.a=new EditorView({state:stateA,parent:wrapA,root:config.root,dispatchTransactions:trs=>this.dispatch(trs,this.a)});this.b=new EditorView({state:stateB,parent:wrapB,root:config.root,dispatchTransactions:trs=>this.dispatch(trs,this.b)});this.setupRevertControls(!!config.revertControls,config.revertControls==\\\"b-to-a\\\",config.renderRevertControl);if(config.parent)config.parent.appendChild(this.dom);this.scheduleMeasure();}dispatch(trs,target){if(trs.some(tr=>tr.docChanged)){let last=trs[trs.length-1];let changes=trs.reduce((chs,tr)=>chs.compose(tr.changes),ChangeSet.empty(trs[0].startState.doc.length));this.chunks=target==this.a?Chunk.updateA(this.chunks,last.newDoc,this.b.state.doc,changes,this.diffConf):Chunk.updateB(this.chunks,this.a.state.doc,last.newDoc,changes,this.diffConf);target.update([...trs,last.state.update({effects:setChunks.of(this.chunks)})]);let other=target==this.a?this.b:this.a;other.update([other.state.update({effects:setChunks.of(this.chunks)})]);this.scheduleMeasure();}else{target.update(trs);}}reconfigure(config){if(\\\"diffConfig\\\"in config){this.diffConf=config.diffConfig;}if(\\\"orientation\\\"in config){let aB=config.orientation!=\\\"b-a\\\";if(aB!=(this.editorDOM.firstChild==this.a.dom.parentNode)){let domA=this.a.dom.parentNode,domB=this.b.dom.parentNode;domA.remove();domB.remove();this.editorDOM.insertBefore(aB?domA:domB,this.editorDOM.firstChild);this.editorDOM.appendChild(aB?domB:domA);this.revertToLeft=!this.revertToLeft;if(this.revertDOM)this.revertDOM.textContent=\\\"\\\";}}if(\\\"revertControls\\\"in config||\\\"renderRevertControl\\\"in config){let controls=!!this.revertDOM,toA=this.revertToA,render=this.renderRevert;if(\\\"revertControls\\\"in config){controls=!!config.revertControls;toA=config.revertControls==\\\"b-to-a\\\";}if(\\\"renderRevertControl\\\"in config)render=config.renderRevertControl;this.setupRevertControls(controls,toA,render);}let highlight=(\\\"highlightChanges\\\"in config),gutter=(\\\"gutter\\\"in config),collapse=(\\\"collapseUnchanged\\\"in config);if(highlight||gutter||collapse){let effectsA=[],effectsB=[];if(highlight||gutter){let currentConfig=this.a.state.facet(mergeConfig);let markGutter=gutter?config.gutter!==false:currentConfig.markGutter;let highlightChanges=highlight?config.highlightChanges!==false:currentConfig.highlightChanges;effectsA.push(configCompartment.reconfigure([mergeConfig.of({side:\\\"a\\\",sibling:()=>this.b,highlightChanges,markGutter}),markGutter?changeGutter:[]]));effectsB.push(configCompartment.reconfigure([mergeConfig.of({side:\\\"b\\\",sibling:()=>this.a,highlightChanges,markGutter}),markGutter?changeGutter:[]]));}if(collapse){let effect=collapseCompartment.reconfigure(config.collapseUnchanged?collapseUnchanged(config.collapseUnchanged):[]);effectsA.push(effect);effectsB.push(effect);}this.a.dispatch({effects:effectsA});this.b.dispatch({effects:effectsB});}this.scheduleMeasure();}setupRevertControls(controls,toA,render){this.revertToA=toA;this.revertToLeft=this.revertToA==(this.editorDOM.firstChild==this.a.dom.parentNode);this.renderRevert=render;if(!controls&&this.revertDOM){this.revertDOM.remove();this.revertDOM=null;}else if(controls&&!this.revertDOM){this.revertDOM=this.editorDOM.insertBefore(document.createElement(\\\"div\\\"),this.editorDOM.firstChild.nextSibling);this.revertDOM.addEventListener(\\\"mousedown\\\",e=>this.revertClicked(e));this.revertDOM.className=\\\"cm-merge-revert\\\";}else if(this.revertDOM){this.revertDOM.textContent=\\\"\\\";}}scheduleMeasure(){if(this.measuring\u003C0){let win=this.dom.ownerDocument.defaultView||window;this.measuring=win.requestAnimationFrame(()=>{this.measuring=-1;this.measure();});}}measure(){updateSpacers(this.a,this.b,this.chunks);if(this.revertDOM)this.updateRevertButtons();}updateRevertButtons(){let dom=this.revertDOM,next=dom.firstChild;let vpA=this.a.viewport,vpB=this.b.viewport;for(let i=0;i\u003Cthis.chunks.length;i++){let chunk=this.chunks[i];if(chunk.fromA>vpA.to||chunk.fromB>vpB.to)break;if(chunk.fromA\u003CvpA.from||chunk.fromB\u003CvpB.from)continue;let top=this.a.lineBlockAt(chunk.fromA).top+\\\"px\\\";while(next&&+next.dataset.chunk\u003Ci)next=rm(next);if(next&&next.dataset.chunk==String(i)){if(next.style.top!=top)next.style.top=top;next=next.nextSibling;}else{dom.insertBefore(this.renderRevertButton(top,i),next);}}while(next)next=rm(next);}renderRevertButton(top,chunk){let elt;if(this.renderRevert){elt=this.renderRevert();}else{elt=document.createElement(\\\"button\\\");let text=this.a.state.phrase(\\\"Revert this chunk\\\");elt.setAttribute(\\\"aria-label\\\",text);elt.setAttribute(\\\"title\\\",text);elt.textContent=this.revertToLeft?\\\"⇜\\\":\\\"⇝\\\";}elt.style.top=top;elt.setAttribute(\\\"data-chunk\\\",String(chunk));return elt;}revertClicked(e){let target=e.target,chunk;while(target&&target.parentNode!=this.revertDOM)target=target.parentNode;if(target&&(chunk=this.chunks[target.dataset.chunk])){let[source,dest,srcFrom,srcTo,destFrom,destTo]=this.revertToA?[this.b,this.a,chunk.fromB,chunk.toB,chunk.fromA,chunk.toA]:[this.a,this.b,chunk.fromA,chunk.toA,chunk.fromB,chunk.toB];let insert=source.state.sliceDoc(srcFrom,Math.max(srcFrom,srcTo-1));if(srcFrom!=srcTo&&destTo\u003C=dest.state.doc.length)insert+=source.state.lineBreak;dest.dispatch({changes:{from:destFrom,to:Math.min(dest.state.doc.length,destTo),insert},userEvent:\\\"revert\\\"});e.preventDefault();}}destroy(){this.a.destroy();this.b.destroy();if(this.measuring>-1)(this.dom.ownerDocument.defaultView||window).cancelAnimationFrame(this.measuring);this.dom.remove();}}function rm(elt){let next=elt.nextSibling;elt.remove();return next;}const deletedChunkGutterMarker=new class extends GutterMarker{constructor(){super(...arguments);this.elementClass=\\\"cm-deletedLineGutter\\\";}}();const unifiedChangeGutter=Prec.low(gutter({class:\\\"cm-changeGutter\\\",markers:view=>{var _a;return((_a=view.plugin(decorateChunks))===null||_a===void 0?void 0:_a.gutter)||RangeSet.empty;},widgetMarker:(view,widget)=>widget instanceof DeletionWidget?deletedChunkGutterMarker:null}));function unifiedMergeView(config){let orig=typeof config.original==\\\"string\\\"?Text$1.of(config.original.split(/\\\\r?\\\\n/)):config.original;let diffConf=config.diffConfig;return[Prec.low(decorateChunks),deletedChunks,baseTheme,EditorView.editorAttributes.of({class:\\\"cm-merge-b\\\"}),EditorState.transactionExtender.of(tr=>{let updateDoc=tr.effects.find(e=>e.is(updateOriginalDoc));if(!tr.docChanged&&!updateDoc)return null;let prev=tr.startState.field(ChunkField);let chunks=updateDoc?Chunk.updateA(prev,updateDoc.value.doc,tr.newDoc,updateDoc.value.changes,diffConf):Chunk.updateB(prev,tr.startState.field(originalDoc),tr.newDoc,tr.changes,diffConf);return{effects:setChunks.of(chunks)};}),mergeConfig.of({highlightChanges:config.highlightChanges!==false,markGutter:config.gutter!==false,syntaxHighlightDeletions:config.syntaxHighlightDeletions!==false,mergeControls:config.mergeControls!==false,side:\\\"b\\\"}),originalDoc.init(()=>orig),config.gutter!==false?unifiedChangeGutter:[],ChunkField.init(state=>Chunk.build(orig,state.doc,diffConf))];}const updateOriginalDoc=StateEffect.define();function originalDocChangeEffect(state,changes){return updateOriginalDoc.of({doc:changes.apply(state.doc),changes});}const originalDoc=StateField.define({create:()=>Text$1.empty,update(doc,tr){for(let _i318=0,_tr$effects19=tr.effects,_length318=_tr$effects19.length;_i318\u003C_length318;_i318++){let e=_tr$effects19[_i318];if(e.is(updateOriginalDoc))doc=e.value.doc;}return doc;}});function getOriginalDoc(state){return state.field(originalDoc);}const DeletionWidgets=new WeakMap();class DeletionWidget extends WidgetType{constructor(buildDOM){super();this.buildDOM=buildDOM;this.dom=null;}eq(other){return this.dom==other.dom;}toDOM(view){return this.dom||(this.dom=this.buildDOM(view));}}function deletionWidget(state,chunk){let known=DeletionWidgets.get(chunk.changes);if(known)return known;let buildDOM=view=>{let{highlightChanges,syntaxHighlightDeletions,mergeControls}=state.facet(mergeConfig);let text=view.state.field(originalDoc).sliceString(chunk.fromA,chunk.endA);let lang=syntaxHighlightDeletions&&state.facet(language);let dom=document.createElement(\\\"div\\\");dom.className=\\\"cm-deletedChunk\\\";if(mergeControls){let buttons=dom.appendChild(document.createElement(\\\"div\\\"));buttons.className=\\\"cm-chunkButtons\\\";let accept=buttons.appendChild(document.createElement(\\\"button\\\"));accept.name=\\\"accept\\\";accept.textContent=state.phrase(\\\"Accept\\\");accept.onmousedown=e=>{e.preventDefault();acceptChunk(view,view.posAtDOM(dom));};let reject=buttons.appendChild(document.createElement(\\\"button\\\"));reject.name=\\\"reject\\\";reject.textContent=state.phrase(\\\"Reject\\\");reject.onmousedown=e=>{e.preventDefault();rejectChunk(view,view.posAtDOM(dom));};}let content=dom.appendChild(document.createElement(\\\"del\\\"));let changes=chunk.changes,changeI=0,inside=false;function add(from,to,cls){for(let at=from;at\u003Cto;){let nextStop=to,nodeCls=cls+(inside?\\\" cm-deletedText\\\":\\\"\\\");if(highlightChanges&&changeI\u003Cchanges.length){let nextBound=inside?changes[changeI].toA:changes[changeI].fromA;if(nextBound\u003C=nextStop){nextStop=nextBound;if(inside)changeI++;inside=!inside;}}if(nextStop>at){let node=document.createTextNode(text.slice(at,nextStop));if(nodeCls){let span=dom.appendChild(document.createElement(\\\"span\\\"));span.className=nodeCls;content.appendChild(node);}else{content.appendChild(node);}}at=nextStop;}}if(lang){let tree=lang.parser.parse(text),pos=0;highlightTree(tree,{style:tags=>highlightingFor(state,tags)},(from,to,cls)=>{if(from>pos)add(pos,from,\\\"\\\");add(from,to,cls);pos=to;});add(pos,text.length,\\\"\\\");}else{add(0,text.length,\\\"\\\");}return dom;};let deco=Decoration.widget({block:true,side:-1,widget:new DeletionWidget(buildDOM)});DeletionWidgets.set(chunk.changes,deco);return deco;}function acceptChunk(view,pos){let{state}=view,at=pos!==null&&pos!==void 0?pos:state.selection.main.head;let chunk=view.state.field(ChunkField).find(ch=>ch.fromB\u003C=at&&ch.endB>=at);if(!chunk)return false;let insert=view.state.sliceDoc(chunk.fromB,Math.max(chunk.fromB,chunk.toB-1));let orig=view.state.field(originalDoc);if(chunk.fromB!=chunk.toB&&chunk.toA\u003C=orig.length)insert+=view.state.lineBreak;let changes=ChangeSet.of({from:chunk.fromA,to:Math.min(orig.length,chunk.toA),insert},orig.length);view.dispatch({effects:updateOriginalDoc.of({doc:changes.apply(orig),changes}),userEvent:\\\"accept\\\"});return true;}function rejectChunk(view,pos){let{state}=view,at=pos!==null&&pos!==void 0?pos:state.selection.main.head;let chunk=state.field(ChunkField).find(ch=>ch.fromB\u003C=at&&ch.endB>=at);if(!chunk)return false;let orig=state.field(originalDoc);let insert=orig.sliceString(chunk.fromA,Math.max(chunk.fromA,chunk.toA-1));if(chunk.fromA!=chunk.toA&&chunk.toB\u003C=state.doc.length)insert+=state.lineBreak;view.dispatch({changes:{from:chunk.fromB,to:Math.min(state.doc.length,chunk.toB),insert},userEvent:\\\"revert\\\"});return true;}function buildDeletedChunks(state){let builder=new RangeSetBuilder();for(let _i319=0,_state$field=state.field(ChunkField),_length319=_state$field.length;_i319\u003C_length319;_i319++){let ch=_state$field[_i319];builder.add(ch.fromB,ch.fromB,deletionWidget(state,ch));}return builder.finish();}const deletedChunks=StateField.define({create:state=>buildDeletedChunks(state),update(deco,tr){return tr.state.field(ChunkField,false)!=tr.startState.field(ChunkField,false)?buildDeletedChunks(tr.state):deco;},provide:f=>EditorView.decorations.from(f)});var _m30=Object.freeze({__proto__:null,Change:Change,Chunk:Chunk,MergeView:MergeView,acceptChunk:acceptChunk,diff:diff,getChunks:getChunks,getOriginalDoc:getOriginalDoc,goToNextChunk:goToNextChunk,goToPreviousChunk:goToPreviousChunk,originalDocChangeEffect:originalDocChangeEffect,presentableDiff:presentableDiff,rejectChunk:rejectChunk,unifiedMergeView:unifiedMergeView,updateOriginalDoc:updateOriginalDoc});window.CM={\\\"@codemirror/state\\\":_m0,\\\"@codemirror/view\\\":_m1,\\\"@codemirror/language\\\":_m2,\\\"@codemirror/commands\\\":_m3,\\\"@codemirror/search\\\":_m4,\\\"@codemirror/autocomplete\\\":_m5,\\\"@codemirror/lint\\\":_m6,\\\"@codemirror/collab\\\":_m7,\\\"codemirror\\\":_m8,\\\"@codemirror/lang-javascript\\\":_m9,\\\"@codemirror/lang-java\\\":_m10,\\\"@codemirror/lang-json\\\":_m11,\\\"@codemirror/lang-cpp\\\":_m12,\\\"@codemirror/lang-php\\\":_m13,\\\"@codemirror/lang-python\\\":_m14,\\\"@codemirror/lang-css\\\":_m15,\\\"@codemirror/lang-sass\\\":_m16,\\\"@codemirror/lang-html\\\":_m17,\\\"@codemirror/lang-sql\\\":_m18,\\\"@codemirror/lang-rust\\\":_m19,\\\"@codemirror/lang-xml\\\":_m20,\\\"@codemirror/lang-markdown\\\":_m21,\\\"@codemirror/lang-lezer\\\":_m22,\\\"@codemirror/lang-wast\\\":_m23,\\\"@codemirror/lang-angular\\\":_m24,\\\"@codemirror/lang-vue\\\":_m25,\\\"@codemirror/lang-liquid\\\":_m26,\\\"@codemirror/lang-less\\\":_m27,\\\"@codemirror/lang-tiddlywiki\\\":_m28,\\\"@codemirror/theme-one-dark\\\":_m29,\\\"@codemirror/merge\\\":_m30,\\\"@lezer/lr\\\":_m31,\\\"@lezer/common\\\":_m32,\\\"@lezer/highlight\\\":_m33,\\\"crelt\\\":_m34};})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/lib/codemirror.js\",\"module-type\":\"library\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/startup/load-codemirror-modules.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/plugins/BTC/tiddlywiki-codemirror-6/modules/startup/load-codemirror-modules.js\\r\\ntype: application/javascript\\r\\nmodule-type: startup\\r\\n\\r\\nLoad codemirror modules\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\n$tw.utils.codemirror = Object.create(null);\\r\\n\\r\\n// Export name and synchronous status\\r\\nexports.name = \\\"load-codemirror-modules\\\";\\r\\nexports.before = [\\\"load-modules\\\"];\\r\\nexports.synchronous = true;\\r\\n\\r\\nexports.startup = function() {\\r\\n\\t// Load modules\\r\\n\\t$tw.modules.applyMethods(\\\"codemirror-utils\\\",$tw.utils.codemirror);\\r\\n};\\r\\n\\r\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/startup/load-codemirror-modules.js\",\"module-type\":\"startup\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/utils/codemirror-highlight-utils.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/plugins/BTC/tiddlywiki-codemirror-6/modules/utils/codemirror-highlight-utils.js\\r\\ntype: application/javascript\\r\\nmodule-type: codemirror-utils\\r\\n\\r\\n\\\\*/\\r\\n\\r\\n(function() {\\r\\n\\r\\n// Solarized light theme adapted from: https://github.com/craftzdog/cm6-themes/blob/main/packages/solarized-light/src/index.ts\\r\\n\\r\\nvar slbase00 = \\\"#657b83\\\",\\r\\n\\tslbase01 = \\\"#586e75\\\",\\r\\n\\tslbase02 = \\\"#073642\\\",\\r\\n\\tslbase03 = \\\"#002b36\\\",\\r\\n\\tslbase0 = \\\"#839496\\\",\\r\\n\\tslbase1 = \\\"#93a1a1\\\",\\r\\n\\tslbase2 = \\\"#eee8d5\\\",\\r\\n\\tslbase3 = \\\"#fdf6e3\\\",\\r\\n\\tslbase_red = \\\"#dc322f\\\",\\r\\n\\tslbase_orange = \\\"#cb4b16\\\",\\r\\n\\tslbase_yellow = \\\"#b58900\\\",\\r\\n\\tslbase_green = \\\"#859900\\\",\\r\\n\\tslbase_cyan = \\\"#2aa198\\\",\\r\\n\\tslbase_blue = \\\"#268bd2\\\",\\r\\n\\tslbase_violet = \\\"#6c71c4\\\",\\r\\n\\tslbase_magenta = \\\"#d33682\\\";\\r\\n\\r\\nvar slinvalid = \\\"#d30102\\\";\\r\\nvar sldarkBackground = \\\"#dfd9c8\\\";\\r\\nvar slhighlightBackground = sldarkBackground;\\r\\nvar slbackground = slbase3;\\r\\nvar sltooltipBackground = slbase01;\\r\\nvar slselection = sldarkBackground;\\r\\nvar slcursor = slbase01;\\r\\n\\r\\nexports.getSolarizedLightHighlightStyle = function(HighlightStyle,tags) {\\r\\n\\r\\n\\tvar highlightStyle = HighlightStyle.define([\\r\\n\\t\\t{ tag: tags.keyword, color: slbase_green },\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.name, tags.deleted, tags.character, tags.propertyName, tags.macroName],\\r\\n\\t\\t\\tcolor: slbase_cyan\\r\\n\\t\\t},\\r\\n\\t\\t{ tag: [tags.variableName], color: slbase_blue },\\r\\n\\t\\t{ tag: [tags.function(tags.variableName)], color: slbase_blue },\\r\\n\\t\\t{ tag: [tags.labelName], color: slbase_magenta },\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.color, tags.constant(tags.name), tags.standard(tags.name)],\\r\\n\\t\\t\\tcolor: slbase_yellow\\r\\n\\t\\t},\\r\\n\\t\\t{ tag: [tags.definition(tags.name), tags.separator], color: slbase_cyan },\\r\\n\\t\\t{ tag: [tags.brace], color: slbase_magenta },\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.annotation],\\r\\n\\t\\t\\tcolor: slinvalid\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.number, tags.changed, tags.annotation, tags.modifier, tags.self, tags.namespace],\\r\\n\\t\\t\\tcolor: slbase_magenta\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.typeName, tags.className],\\r\\n\\t\\t\\tcolor: slbase_orange\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.operator, tags.operatorKeyword],\\r\\n\\t\\t\\tcolor: slbase_violet\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.tagName],\\r\\n\\t\\t\\tcolor: slbase_blue\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.squareBracket],\\r\\n\\t\\t\\tcolor: slbase_red\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.angleBracket],\\r\\n\\t\\t\\tcolor: slbase02\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.attributeName],\\r\\n\\t\\t\\tcolor: slbase1\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.regexp],\\r\\n\\t\\t\\tcolor: slinvalid\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.quote],\\r\\n\\t\\t\\tcolor: slbase_green\\r\\n\\t\\t},\\r\\n\\t\\t{ tag: [tags.string], color: slbase_yellow },\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: tags.link,\\r\\n\\t\\t\\tcolor: slbase_cyan,\\r\\n\\t\\t\\ttextDecoration: 'underline',\\r\\n\\t\\t\\ttextUnderlinePosition: 'under'\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.url, tags.escape, tags.special(tags.string)],\\r\\n\\t\\t\\tcolor: slbase_yellow\\r\\n\\t\\t},\\r\\n\\t\\t{ tag: [tags.meta], color: slbase_red },\\r\\n\\t\\t{ tag: [tags.comment], color: slbase02, fontStyle: 'italic' },\\r\\n\\t\\t{ tag: tags.strong, fontWeight: 'bold', color: slbase01 },\\r\\n\\t\\t{ tag: tags.emphasis, fontStyle: 'italic', color: slbase_green },\\r\\n\\t\\t{ tag: tags.strikethrough, textDecoration: 'line-through' },\\r\\n\\t\\t{ tag: tags.heading, fontWeight: 'bold', color: slbase_yellow },\\r\\n\\t\\t{ tag: tags.heading1, fontWeight: 'bold', color: slbase03 },\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.heading2, tags.heading3, tags.heading4],\\r\\n\\t\\t\\tfontWeight: 'bold',\\r\\n\\t\\t\\tcolor: slbase03\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.heading5, tags.heading6],\\r\\n\\t\\t\\tcolor: slbase03\\r\\n\\t\\t},\\r\\n\\t\\t{ tag: [tags.atom, tags.bool, tags.special(tags.variableName)], color: slbase_magenta },\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.processingInstruction, tags.inserted, tags.contentSeparator],\\r\\n\\t\\t\\tcolor: slbase_red\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.contentSeparator],\\r\\n\\t\\t\\tcolor: slbase_yellow\\r\\n\\t\\t},\\r\\n\\t\\t{ tag: tags.invalid, color: slbase02, borderBottom: `1px dotted ${slbase_red}` }\\r\\n\\t]);\\r\\n\\r\\n\\treturn highlightStyle;\\r\\n};\\r\\n\\r\\n// Solarized dark theme adapted from: https://github.com/craftzdog/cm6-themes/blob/main/packages/solarized-dark/src/index.ts\\r\\n\\r\\nvar sdbase00 = \\\"#002b36\\\",\\r\\n\\tsdbase01 = \\\"#073642\\\",\\r\\n\\tsdbase02 = \\\"#586e75\\\",\\r\\n\\tsdbase03 = \\\"#657b83\\\",\\r\\n\\tsdbase04 = \\\"#839496\\\",\\r\\n\\tsdbase05 = \\\"#93a1a1\\\",\\r\\n\\tsdbase06 = \\\"#eee8d5\\\",\\r\\n\\tsdbase07 = \\\"#fdf6e3\\\",\\r\\n\\tsdbase_red = \\\"#dc322f\\\",\\r\\n\\tsdbase_orange = \\\"#cb4b16\\\",\\r\\n\\tsdbase_yellow = \\\"#b58900\\\",\\r\\n\\tsdbase_green = \\\"#859900\\\",\\r\\n\\tsdbase_cyan = \\\"#2aa198\\\",\\r\\n\\tsdbase_blue = \\\"#268bd2\\\",\\r\\n\\tsdbase_violet = \\\"#6c71c4\\\",\\r\\n\\tsdbase_magenta = \\\"#d33682\\\";\\r\\n\\r\\nvar sdinvalid = \\\"#d30102\\\";\\r\\nvar sdstone = sdbase04;\\r\\nvar sddarkBackground = \\\"#00252f\\\";\\r\\nvar sdhighlightBackground = \\\"#173541\\\";\\r\\nvar sdbackground = sdbase00;\\r\\nvar sdtooltipBackground = sdbase01;\\r\\nvar sdselection = \\\"#173541\\\";\\r\\nvar sdcursor = sdbase04;\\r\\n\\r\\nexports.getSolarizedDarkHighlightStyle = function(HighlightStyle,tags) {\\r\\n\\t\\r\\n\\tvar highlightStyle = HighlightStyle.define([\\r\\n\\t\\t{ tag: tags.keyword, color: sdbase_green },\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.name, tags.deleted, tags.character, tags.propertyName, tags.macroName],\\r\\n\\t\\t\\tcolor: sdbase_cyan\\r\\n\\t\\t},\\r\\n\\t\\t{ tag: [tags.variableName], color: sdbase05 },\\r\\n\\t\\t{ tag: [tags.function(tags.variableName)], color: sdbase_blue },\\r\\n\\t\\t{ tag: [tags.labelName], color: sdbase_magenta },\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.color, tags.constant(tags.name), tags.standard(tags.name)],\\r\\n\\t\\t\\tcolor: sdbase_yellow\\r\\n\\t\\t},\\r\\n\\t\\t{ tag: [tags.definition(tags.name), tags.separator], color: sdbase_cyan },\\r\\n\\t\\t{ tag: [tags.brace], color: sdbase_magenta },\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.annotation],\\r\\n\\t\\t\\tcolor: sdinvalid\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.number, tags.changed, tags.annotation, tags.modifier, tags.self, tags.namespace],\\r\\n\\t\\t\\tcolor: sdbase_magenta\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.typeName, tags.className],\\r\\n\\t\\t\\tcolor: sdbase_orange\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.operator, tags.operatorKeyword],\\r\\n\\t\\t\\tcolor: sdbase_violet\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.tagName],\\r\\n\\t\\t\\tcolor: sdbase_blue\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.squareBracket],\\r\\n\\t\\t\\tcolor: sdbase_red\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.angleBracket],\\r\\n\\t\\t\\tcolor: sdbase02\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.attributeName],\\r\\n\\t\\t\\tcolor: sdbase05\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.regexp],\\r\\n\\t\\t\\tcolor: sdinvalid\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.quote],\\r\\n\\t\\t\\tcolor: sdbase_green\\r\\n\\t\\t},\\r\\n\\t\\t{ tag: [tags.string], color: sdbase_yellow },\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: tags.link,\\r\\n\\t\\t\\tcolor: sdbase_cyan,\\r\\n\\t\\t\\ttextDecoration: \\\"underline\\\",\\r\\n\\t\\t\\ttextUnderlinePosition: \\\"under\\\"\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.url, tags.escape, tags.special(tags.string)],\\r\\n\\t\\t\\tcolor: sdbase_yellow\\r\\n\\t\\t},\\r\\n\\t\\t{ tag: [tags.meta], color: sdbase_red },\\r\\n\\t\\t{ tag: [tags.comment], color: sdbase02, fontStyle: \\\"italic\\\" },\\r\\n\\t\\t{ tag: tags.strong, fontWeight: \\\"bold\\\", color: sdbase06 },\\r\\n\\t\\t{ tag: tags.emphasis, fontStyle: \\\"italic\\\", color: sdbase_green },\\r\\n\\t\\t{ tag: tags.strikethrough, textDecoration: \\\"line-through\\\" },\\r\\n\\t\\t{ tag: tags.heading, fontWeight: \\\"bold\\\", color: sdbase_yellow },\\r\\n\\t\\t{ tag: tags.heading1, fontWeight: \\\"bold\\\", color: sdbase07 },\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.heading2, tags.heading3, tags.heading4],\\r\\n\\t\\t\\tfontWeight: \\\"bold\\\",\\r\\n\\t\\t\\tcolor: sdbase06\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.heading5, tags.heading6],\\r\\n\\t\\t\\tcolor: sdbase06\\r\\n\\t\\t},\\r\\n\\t\\t{ tag: [tags.atom, tags.bool, tags.special(tags.variableName)], color: sdbase_magenta },\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.processingInstruction, tags.inserted, tags.contentSeparator],\\r\\n\\t\\t\\tcolor: sdbase_red\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\ttag: [tags.contentSeparator],\\r\\n\\t\\t\\tcolor: sdbase_yellow\\r\\n\\t\\t},\\r\\n\\t\\t{ tag: tags.invalid, color: sdbase02, borderBottom: `1px dotted ${sdbase_red}` }\\r\\n\\t]);\\r\\n\\r\\n\\treturn highlightStyle;\\r\\n};\\r\\n\\r\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/utils/codemirror-highlight-utils.js\",\"module-type\":\"codemirror-utils\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/utils/codemirror-misc-utils.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/plugins/BTC/tiddlywiki-codemirror-6/modules/utils/codemirror-misc-utils.js\\r\\ntype: application/javascript\\r\\nmodule-type: codemirror-utils\\r\\n\\r\\n\\\\*/\\r\\n\\r\\n(function() {\\r\\n\\r\\nexports.validateRegex = function(regex) {\\r\\n\\ttry {\\r\\n\\t\\tnew RegExp(regex);\\r\\n\\t\\treturn true;\\r\\n\\t} catch(e) {\\r\\n\\t\\treturn false;\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/utils/codemirror-misc-utils.js\",\"module-type\":\"codemirror-utils\"},\"$:/core/modules/editor/operations/text/excise.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/core/modules/editor/operations/text/excise.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\n\\r\\nText editor operation to excise the selection to a new tiddler\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"excise\\\"] = function(event,operation) {\\r\\n\\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\\r\\n\\t\\teditTiddlerTitle = this.editTitle;\\r\\n\\tif(editTiddler && editTiddler.fields[\\\"draft.of\\\"]) {\\r\\n\\t\\teditTiddlerTitle = editTiddler.fields[\\\"draft.of\\\"];\\r\\n\\t}\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\tfor(var i=0; i\u003Coperation.length; i++) {\\r\\n\\t\\t\\tvar op = operation[i];\\r\\n\\t\\t\\tvar excisionTitle = event.paramObject.title && (event.paramObject.title !== \\\"\\\") ? this.wiki.generateNewTitle(event.paramObject.title) : this.wiki.generateNewTitle(\\\"New Excision\\\");\\r\\n\\t\\t\\tthis.wiki.addTiddler(new $tw.Tiddler(\\r\\n\\t\\t\\t\\tthis.wiki.getCreationFields(),\\r\\n\\t\\t\\t\\tthis.wiki.getModificationFields(),\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\ttitle: excisionTitle,\\r\\n\\t\\t\\t\\t\\ttext: op.selection,\\r\\n\\t\\t\\t\\t\\ttags: event.paramObject.tagnew === \\\"yes\\\" ? [editTiddlerTitle] : []\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t));\\r\\n\\t\\t\\top.replacement = excisionTitle;\\r\\n\\t\\t\\tswitch(event.paramObject.type || \\\"transclude\\\") {\\r\\n\\t\\t\\t\\tcase \\\"transclude\\\":\\r\\n\\t\\t\\t\\t\\top.replacement = \\\"{{\\\" + op.replacement + \\\"}}\\\";\\r\\n\\t\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\t\\tcase \\\"link\\\":\\r\\n\\t\\t\\t\\t\\top.replacement = \\\"[[\\\" + op.replacement + \\\"]]\\\";\\r\\n\\t\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\t\\tcase \\\"macro\\\":\\r\\n\\t\\t\\t\\t\\top.replacement = \\\"\u003C\u003C\\\" + (event.paramObject.macro || \\\"translink\\\") + \\\" \\\\\\\"\\\\\\\"\\\\\\\"\\\" + op.replacement + \\\"\\\\\\\"\\\\\\\"\\\\\\\">>\\\";\\r\\n\\t\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\top.cutStart = operation[i].selStart;\\r\\n\\t\\t\\top.cutEnd = operation[i].selEnd;\\r\\n\\t\\t\\top.newSelStart = operation[i].selStart;\\r\\n\\t\\t\\top.newSelEnd = operation[i].selStart + operation[i].replacement.length;\\r\\n\\t\\t}\\r\\n\\t} else {\\r\\n\\t\\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\\\"New Excision\\\");\\r\\n\\t\\tthis.wiki.addTiddler(new $tw.Tiddler(\\r\\n\\t\\t\\tthis.wiki.getCreationFields(),\\r\\n\\t\\t\\tthis.wiki.getModificationFields(),\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\ttitle: excisionTitle,\\r\\n\\t\\t\\t\\ttext: operation.selection,\\r\\n\\t\\t\\t\\ttags: event.paramObject.tagnew === \\\"yes\\\" ? [editTiddlerTitle] : []\\r\\n\\t\\t\\t}\\r\\n\\t\\t));\\r\\n\\t\\toperation.replacement = excisionTitle;\\r\\n\\t\\tswitch(event.paramObject.type || \\\"transclude\\\") {\\r\\n\\t\\t\\tcase \\\"transclude\\\":\\r\\n\\t\\t\\t\\toperation.replacement = \\\"{{\\\" + operation.replacement + \\\"}}\\\";\\r\\n\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\tcase \\\"link\\\":\\r\\n\\t\\t\\t\\toperation.replacement = \\\"[[\\\" + operation.replacement + \\\"]]\\\";\\r\\n\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\tcase \\\"macro\\\":\\r\\n\\t\\t\\t\\toperation.replacement = \\\"\u003C\u003C\\\" + (event.paramObject.macro || \\\"translink\\\") + \\\" \\\\\\\"\\\\\\\"\\\\\\\"\\\" + operation.replacement + \\\"\\\\\\\"\\\\\\\"\\\\\\\">>\\\";\\r\\n\\t\\t\\t\\tbreak;\\r\\n\\t\\t}\\r\\n\\t\\toperation.cutStart = operation.selStart;\\r\\n\\t\\toperation.cutEnd = operation.selEnd;\\r\\n\\t\\toperation.newSelStart = operation.selStart;\\r\\n\\t\\toperation.newSelEnd = operation.selStart + operation.replacement.length;\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\\r\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/editor/operations/text/excise.js\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/focus-editor.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/core/modules/editor/operations/text/focus-editor.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\nSimply focus the Text editor\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"focus-editor\\\"] = function(event,operation) {\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\toperation.splice(0, operation.length);\\r\\n\\t\\toperation.type = \\\"focus-editor\\\";\\r\\n\\t} else {\\r\\n\\t\\toperation = null;\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/editor/operations/text/focus-editor.js\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/insert-text.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/core/modules/editor/operations/text/insert-text.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\n\\r\\nText editor operation insert text at the caret position. If there is a selection it is replaced.\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"insert-text\\\"] = function(event,operation) {\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\tfor(var i=0; i\u003Coperation.length; i++) {\\r\\n\\t\\t\\tvar op = operation[i];\\r\\n\\t\\t\\top.replacement = event.paramObject.text;\\r\\n\\t\\t\\top.cutStart = operation[i].selStart;\\r\\n\\t\\t\\top.cutEnd = operation[i].selEnd;\\r\\n\\t\\t\\top.newSelStart = operation[i].selStart + op.replacement.length;\\r\\n\\t\\t\\top.newSelEnd = op.newSelStart;\\r\\n\\t\\t}\\r\\n\\t} else {\\r\\n\\t\\toperation.replacement = event.paramObject.text;\\r\\n\\t\\toperation.cutStart = operation.selStart;\\r\\n\\t\\toperation.cutEnd = operation.selEnd;\\r\\n\\t\\toperation.newSelStart = operation.selStart + operation.replacement.length;\\r\\n\\t\\toperation.newSelEnd = operation.newSelStart;\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\\r\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/editor/operations/text/insert-text.js\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/make-link.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/core/modules/editor/operations/text/make-link.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\n\\r\\nText editor operation to make a link\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"make-link\\\"] = function(event,operation) {\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\tfor(var i=0; i\u003Coperation.length; i++) {\\r\\n\\t\\t\\tvar op = operation[i];\\r\\n\\t\\t\\tif(op.selection) {\\r\\n\\t\\t\\t\\top.replacement = \\\"[[\\\" + op.selection + \\\"|\\\" + event.paramObject.text + \\\"]]\\\";\\r\\n\\t\\t\\t\\top.cutStart = operation[i].selStart;\\r\\n\\t\\t\\t\\top.cutEnd = operation[i].selEnd;\\t\\t\\t\\t\\r\\n\\t\\t\\t} else {\\r\\n\\t\\t\\t\\top.replacement = \\\"[[\\\" + event.paramObject.text + \\\"]]\\\";\\r\\n\\t\\t\\t\\top.cutStart = operation[i].selStart;\\r\\n\\t\\t\\t\\top.cutEnd = operation[i].selEnd;\\t\\t\\t\\t\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\top.newSelStart = operation[i].selStart + op.replacement.length;\\r\\n\\t\\t\\top.newSelEnd = op.newSelStart;\\r\\n\\t\\t}\\r\\n\\t} else {\\r\\n\\t\\tif(operation.selection) {\\r\\n\\t\\t\\toperation.replacement = \\\"[[\\\" + operation.selection + \\\"|\\\" + event.paramObject.text + \\\"]]\\\";\\r\\n\\t\\t\\toperation.cutStart = operation.selStart;\\r\\n\\t\\t\\toperation.cutEnd = operation.selEnd;\\r\\n\\t\\t} else {\\r\\n\\t\\t\\toperation.replacement = \\\"[[\\\" + event.paramObject.text + \\\"]]\\\";\\r\\n\\t\\t\\toperation.cutStart = operation.selStart;\\r\\n\\t\\t\\toperation.cutEnd = operation.selEnd;\\r\\n\\t\\t}\\r\\n\\t\\toperation.newSelStart = operation.selStart + operation.replacement.length;\\r\\n\\t\\toperation.newSelEnd = operation.newSelStart;\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\\r\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/editor/operations/text/make-link.js\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/prefix-lines.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\n\\r\\nText editor operation to add a prefix to the selected lines\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"prefix-lines\\\"] = function(event,operation) {\\r\\n\\tvar targetCount = parseInt(event.paramObject.count + \\\"\\\",10);\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\tfor(var i=0; i\u003Coperation.length; i++) {\\r\\n\\t\\t\\tvar op = operation[i];\\r\\n\\t\\t\\t// Cut just past the preceding line break, or the start of the text\\r\\n\\t\\t\\top.cutStart = $tw.utils.findPrecedingLineBreak(op.text,op.selStart);\\r\\n\\t\\t\\t// Cut to just past the following line break, or to the end of the text\\r\\n\\t\\t\\top.cutEnd = $tw.utils.findFollowingLineBreak(op.text,op.selEnd);\\r\\n\\t\\t\\t// Compose the required prefix\\r\\n\\t\\t\\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\\r\\n\\t\\t\\t// Process each line\\r\\n\\t\\t\\tvar lines = op.text.substring(op.cutStart,op.cutEnd).split(/\\\\r?\\\\n/mg);\\r\\n\\t\\t\\t$tw.utils.each(lines,function(line,index) {\\r\\n\\t\\t\\t\\t// Remove and count any existing prefix characters\\r\\n\\t\\t\\t\\tvar count = 0;\\r\\n\\t\\t\\t\\twhile($tw.utils.startsWith(line,event.paramObject.character)) {\\r\\n\\t\\t\\t\\t\\tline = line.substring(event.paramObject.character.length);\\r\\n\\t\\t\\t\\t\\tcount++;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t// Remove any whitespace\\r\\n\\t\\t\\t\\twhile(line.charAt(0) === \\\" \\\") {\\r\\n\\t\\t\\t\\t\\tline = line.substring(1);\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t// We're done if we removed the exact required prefix, otherwise add it\\r\\n\\t\\t\\t\\tif(count !== targetCount) {\\r\\n\\t\\t\\t\\t\\t// Apply the prefix\\r\\n\\t\\t\\t\\t\\tline = prefix + \\\" \\\" + line;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t// Save the modified line\\r\\n\\t\\t\\t\\tlines[index] = line;\\r\\n\\t\\t\\t});\\r\\n\\t\\t\\t// Stitch the replacement text together and set the selection\\r\\n\\t\\t\\top.replacement = lines.join(\\\"\\\\n\\\");\\r\\n\\t\\t\\tif(lines.length === 1) {\\r\\n\\t\\t\\t\\top.newSelStart = op.cutStart + op.replacement.length;\\r\\n\\t\\t\\t\\top.newSelEnd = op.newSelStart;\\r\\n\\t\\t\\t} else {\\r\\n\\t\\t\\t\\top.newSelStart = op.cutStart;\\r\\n\\t\\t\\t\\top.newSelEnd = op.newSelStart + op.replacement.length;\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t} else {\\r\\n\\t\\t// Cut just past the preceding line break, or the start of the text\\r\\n\\t\\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\\r\\n\\t\\t// Cut to just past the following line break, or to the end of the text\\r\\n\\t\\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\\r\\n\\t\\t// Compose the required prefix\\r\\n\\t\\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\\r\\n\\t\\t// Process each line\\r\\n\\t\\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\\\r?\\\\n/mg);\\r\\n\\t\\t$tw.utils.each(lines,function(line,index) {\\r\\n\\t\\t\\t// Remove and count any existing prefix characters\\r\\n\\t\\t\\tvar count = 0;\\r\\n\\t\\t\\twhile($tw.utils.startsWith(line,event.paramObject.character)) {\\r\\n\\t\\t\\t\\tline = line.substring(event.paramObject.character.length);\\r\\n\\t\\t\\t\\tcount++;\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\t// Remove any whitespace\\r\\n\\t\\t\\twhile(line.charAt(0) === \\\" \\\") {\\r\\n\\t\\t\\t\\tline = line.substring(1);\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\t// We're done if we removed the exact required prefix, otherwise add it\\r\\n\\t\\t\\tif(count !== targetCount) {\\r\\n\\t\\t\\t\\t// Apply the prefix\\r\\n\\t\\t\\t\\tline = prefix + \\\" \\\" + line;\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\t// Save the modified line\\r\\n\\t\\t\\tlines[index] = line;\\r\\n\\t\\t});\\r\\n\\t\\t// Stitch the replacement text together and set the selection\\r\\n\\t\\toperation.replacement = lines.join(\\\"\\\\n\\\");\\r\\n\\t\\tif(lines.length === 1) {\\r\\n\\t\\t\\toperation.newSelStart = operation.cutStart + operation.replacement.length;\\r\\n\\t\\t\\toperation.newSelEnd = operation.newSelStart;\\r\\n\\t\\t} else {\\r\\n\\t\\t\\toperation.newSelStart = operation.cutStart;\\r\\n\\t\\t\\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\\r\\n\\t\\t}\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\\r\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/editor/operations/text/prefix-lines.js\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/replace-all.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\n\\r\\nText editor operation to replace the entire text\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"replace-all\\\"] = function(event,operation) {\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\tfor(var i=0; i\u003Coperation.length; i++) {\\r\\n\\t\\t\\tvar op = operation[i];\\r\\n\\t\\t\\top.cutStart = 0;\\r\\n\\t\\t\\top.cutEnd = op.text.length;\\r\\n\\t\\t\\top.replacement = event.paramObject.text;\\r\\n\\t\\t\\top.newSelStart = 0;\\r\\n\\t\\t\\top.newSelEnd = op.replacement.length;\\r\\n\\t\\t}\\r\\n\\t} else {\\r\\n\\t\\toperation.cutStart = 0;\\r\\n\\t\\toperation.cutEnd = operation.text.length;\\r\\n\\t\\toperation.replacement = event.paramObject.text;\\r\\n\\t\\toperation.newSelStart = 0;\\r\\n\\t\\toperation.newSelEnd = operation.replacement.length;\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\\r\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/editor/operations/text/replace-all.js\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/replace-selection.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\n\\r\\nText editor operation to replace the selection\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"replace-selection\\\"] = function(event,operation) {\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\tfor(var i=0; i\u003Coperation.length; i++) {\\r\\n\\t\\t\\tvar op = operation[i];\\r\\n\\t\\t\\top.replacement = event.paramObject.text;\\r\\n\\t\\t\\top.cutStart = operation[i].selStart;\\r\\n\\t\\t\\top.cutEnd = operation[i].selEnd;\\r\\n\\t\\t\\top.newSelStart = operation[i].selStart;\\r\\n\\t\\t\\top.newSelEnd = operation[i].selStart + op.replacement.length;\\r\\n\\t\\t}\\r\\n\\t} else {\\r\\n\\t\\toperation.replacement = event.paramObject.text;\\r\\n\\t\\toperation.cutStart = operation.selStart;\\r\\n\\t\\toperation.cutEnd = operation.selEnd;\\r\\n\\t\\toperation.newSelStart = operation.selStart;\\r\\n\\t\\toperation.newSelEnd = operation.selStart + operation.replacement.length;\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\\r\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/editor/operations/text/replace-selection.js\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/save-selection.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\n\\r\\nText editor operation to save the current selection in a specified tiddler\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"save-selection\\\"] = function(event,operation) {\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\tvar tiddler = event.paramObject.tiddler,\\r\\n\\t\\t\\tfield = event.paramObject.field || \\\"text\\\";\\r\\n\\t\\tif(tiddler && field) {\\r\\n\\t\\t\\tvar textArray = [];\\r\\n\\t\\t\\tfor(var i=0; i\u003Coperation.length; i++) {\\r\\n\\t\\t\\t\\tvar op = operation[i];\\r\\n\\t\\t\\t\\ttextArray.push(op.text.substring(op.selStart,op.selEnd));\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\tthis.wiki.setText(tiddler,field,null,textArray.join(\\\" \\\"));\\r\\n\\t\\t}\\r\\n\\t\\toperation = null;\\r\\n\\t} else {\\r\\n\\t\\tvar tiddler = event.paramObject.tiddler,\\r\\n\\t\\t\\tfield = event.paramObject.field || \\\"text\\\";\\r\\n\\t\\tif(tiddler && field) {\\r\\n\\t\\t\\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\\r\\n\\t\\t}\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\\r\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/editor/operations/text/save-selection.js\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/search.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/plugins/BTC/tiddlywiki-codemirror-6/modules/editor/operations/text/search.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\n\\r\\nText editor operation to replace the entire text\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"search\\\"] = function(event,operation) {\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\toperation.splice(0, operation.length);\\r\\n\\t\\toperation.type = \\\"search\\\";\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/editor/operations/text/search.js\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/wrap-lines.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\n\\r\\nText editor operation to wrap the selected lines with a prefix and suffix\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"wrap-lines\\\"] = function(event,operation) {\\r\\n\\tvar prefix = event.paramObject.prefix || \\\"\\\",\\r\\n\\t\\tsuffix = event.paramObject.suffix || \\\"\\\";\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\tfor(var i=0; i\u003Coperation.length; i++) {\\r\\n\\t\\t\\tvar op = operation[i];\\r\\n\\t\\t\\tif($tw.utils.endsWith(op.text.substring(0,op.selStart), prefix + \\\"\\\\n\\\") &&\\r\\n\\t\\t\\t\\t\\t$tw.utils.startsWith(op.text.substring(op.selEnd), \\\"\\\\n\\\" + suffix)) {\\r\\n\\t\\t\\t\\t// Selected text is already surrounded by prefix and suffix: Remove them\\r\\n\\t\\t\\t\\t// Cut selected text plus prefix and suffix\\r\\n\\t\\t\\t\\top.cutStart = op.selStart - (prefix.length + 1);\\r\\n\\t\\t\\t\\top.cutEnd = op.selEnd + suffix.length + 1;\\r\\n\\t\\t\\t\\t// Also cut the following newline (if there is any)\\r\\n\\t\\t\\t\\tif (op.text[op.cutEnd] === \\\"\\\\n\\\") {\\r\\n\\t\\t\\t\\t\\top.cutEnd++;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t// Replace with selection\\r\\n\\t\\t\\t\\top.replacement = op.text.substring(op.selStart,op.selEnd);\\r\\n\\t\\t\\t\\t// Select text that was in between prefix and suffix\\r\\n\\t\\t\\t\\top.newSelStart = op.cutStart;\\r\\n\\t\\t\\t\\top.newSelEnd = op.selEnd - (prefix.length + 1);\\r\\n\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t// Cut just past the preceding line break, or the start of the text\\r\\n\\t\\t\\t\\top.cutStart = $tw.utils.findPrecedingLineBreak(op.text,op.selStart);\\r\\n\\t\\t\\t\\t// Cut to just past the following line break, or to the end of the text\\r\\n\\t\\t\\t\\top.cutEnd = $tw.utils.findFollowingLineBreak(op.text,op.selEnd);\\r\\n\\t\\t\\t\\t// Add the prefix and suffix\\r\\n\\t\\t\\t\\top.replacement = prefix + \\\"\\\\n\\\" +\\r\\n\\t\\t\\t\\t\\t\\t\\top.text.substring(op.cutStart,op.cutEnd) + \\\"\\\\n\\\" +\\r\\n\\t\\t\\t\\t\\t\\t\\tsuffix + \\\"\\\\n\\\";\\r\\n\\t\\t\\t\\top.newSelStart = op.cutStart + prefix.length + 1;\\r\\n\\t\\t\\t\\top.newSelEnd = op.newSelStart + (op.cutEnd - op.cutStart);\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t} else {\\r\\n\\t\\tif($tw.utils.endsWith(operation.text.substring(0,operation.selStart), prefix + \\\"\\\\n\\\") &&\\r\\n\\t\\t\\t\\t$tw.utils.startsWith(operation.text.substring(operation.selEnd), \\\"\\\\n\\\" + suffix)) {\\r\\n\\t\\t\\t// Selected text is already surrounded by prefix and suffix: Remove them\\r\\n\\t\\t\\t// Cut selected text plus prefix and suffix\\r\\n\\t\\t\\toperation.cutStart = operation.selStart - (prefix.length + 1);\\r\\n\\t\\t\\toperation.cutEnd = operation.selEnd + suffix.length + 1;\\r\\n\\t\\t\\t// Also cut the following newline (if there is any)\\r\\n\\t\\t\\tif (operation.text[operation.cutEnd] === \\\"\\\\n\\\") {\\r\\n\\t\\t\\t\\toperation.cutEnd++;\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\t// Replace with selection\\r\\n\\t\\t\\toperation.replacement = operation.text.substring(operation.selStart,operation.selEnd);\\r\\n\\t\\t\\t// Select text that was in between prefix and suffix\\r\\n\\t\\t\\toperation.newSelStart = operation.cutStart;\\r\\n\\t\\t\\toperation.newSelEnd = operation.selEnd - (prefix.length + 1);\\r\\n\\t\\t} else {\\r\\n\\t\\t\\t// Cut just past the preceding line break, or the start of the text\\r\\n\\t\\t\\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\\r\\n\\t\\t\\t// Cut to just past the following line break, or to the end of the text\\r\\n\\t\\t\\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\\r\\n\\t\\t\\t// Add the prefix and suffix\\r\\n\\t\\t\\toperation.replacement = prefix + \\\"\\\\n\\\" +\\r\\n\\t\\t\\t\\t\\t\\toperation.text.substring(operation.cutStart,operation.cutEnd) + \\\"\\\\n\\\" +\\r\\n\\t\\t\\t\\t\\t\\tsuffix + \\\"\\\\n\\\";\\r\\n\\t\\t\\toperation.newSelStart = operation.cutStart + prefix.length + 1;\\r\\n\\t\\t\\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\\r\\n\\t\\t}\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\\r\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/editor/operations/text/wrap-lines.js\",\"module-type\":\"texteditoroperation\"},\"$:/core/modules/editor/operations/text/wrap-selection.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\n\\r\\nText editor operation to wrap the selection with the specified prefix and suffix\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"wrap-selection\\\"] = function(event,operation) {\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\tfor(var i=0; i\u003Coperation.length; i++) {\\r\\n\\t\\t\\tvar op = operation[i];\\r\\n\\t\\t\\tif(op.selStart === op.selEnd) {\\r\\n\\t\\t\\t\\t// No selection; check if we're within the prefix/suffix\\r\\n\\t\\t\\t\\tif(op.text.substring(op.selStart - event.paramObject.prefix.length,op.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\\r\\n\\t\\t\\t\\t\\t// Remove the prefix and suffix\\r\\n\\t\\t\\t\\t\\top.cutStart = operation[i].selStart - event.paramObject.prefix.length;\\r\\n\\t\\t\\t\\t\\top.cutEnd = operation[i].selEnd + event.paramObject.suffix.length;\\r\\n\\t\\t\\t\\t\\top.replacement = \\\"\\\";\\r\\n\\t\\t\\t\\t\\top.newSelStart = op.cutStart;\\r\\n\\t\\t\\t\\t\\top.newSelEnd = op.newSelStart;\\r\\n\\t\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t\\t// Wrap the cursor instead\\r\\n\\t\\t\\t\\t\\top.cutStart = operation[i].selStart;\\r\\n\\t\\t\\t\\t\\top.cutEnd = operation[i].selEnd;\\r\\n\\t\\t\\t\\t\\top.replacement = event.paramObject.prefix + event.paramObject.suffix;\\r\\n\\t\\t\\t\\t\\top.newSelStart = operation[i].selStart + event.paramObject.prefix.length;\\r\\n\\t\\t\\t\\t\\top.newSelEnd = op.newSelStart;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t} else if(op.text.substring(op.selStart,op.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && op.text.substring(op.selEnd - event.paramObject.suffix.length,op.selEnd) === event.paramObject.suffix) {\\r\\n\\t\\t\\t\\t// Prefix and suffix are already present, so remove them\\r\\n\\t\\t\\t\\top.cutStart = operation[i].selStart;\\r\\n\\t\\t\\t\\top.cutEnd = operation[i].selEnd;\\r\\n\\t\\t\\t\\top.replacement = op.selection.substring(event.paramObject.prefix.length,op.selection.length - event.paramObject.suffix.length);\\r\\n\\t\\t\\t\\top.newSelStart = operation[i].selStart;\\r\\n\\t\\t\\t\\top.newSelEnd = operation[i].selStart + op.replacement.length;\\r\\n\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t// Add the prefix and suffix\\r\\n\\t\\t\\t\\top.cutStart = operation[i].selStart;\\r\\n\\t\\t\\t\\top.cutEnd = operation[i].selEnd;\\r\\n\\t\\t\\t\\top.replacement = event.paramObject.prefix + op.selection + event.paramObject.suffix;\\r\\n\\t\\t\\t\\top.newSelStart = operation[i].selStart;\\r\\n\\t\\t\\t\\top.newSelEnd = operation[i].selStart + op.replacement.length;\\r\\n\\t\\t\\t}\\t\\t\\t\\r\\n\\t\\t}\\r\\n\\t} else {\\r\\n\\t\\tif(operation.selStart === operation.selEnd) {\\r\\n\\t\\t\\t// No selection; check if we're within the prefix/suffix\\r\\n\\t\\t\\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\\r\\n\\t\\t\\t\\t// Remove the prefix and suffix\\r\\n\\t\\t\\t\\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\\r\\n\\t\\t\\t\\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\\r\\n\\t\\t\\t\\toperation.replacement = \\\"\\\";\\r\\n\\t\\t\\t\\toperation.newSelStart = operation.cutStart;\\r\\n\\t\\t\\t\\toperation.newSelEnd = operation.newSelStart;\\r\\n\\t\\t\\t} else {\\r\\n\\t\\t\\t\\t// Wrap the cursor instead\\r\\n\\t\\t\\t\\toperation.cutStart = operation.selStart;\\r\\n\\t\\t\\t\\toperation.cutEnd = operation.selEnd;\\r\\n\\t\\t\\t\\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\\r\\n\\t\\t\\t\\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\\r\\n\\t\\t\\t\\toperation.newSelEnd = operation.newSelStart;\\r\\n\\t\\t\\t}\\r\\n\\t\\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\\r\\n\\t\\t\\t// Prefix and suffix are already present, so remove them\\r\\n\\t\\t\\toperation.cutStart = operation.selStart;\\r\\n\\t\\t\\toperation.cutEnd = operation.selEnd;\\r\\n\\t\\t\\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\\r\\n\\t\\t\\toperation.newSelStart = operation.selStart;\\r\\n\\t\\t\\toperation.newSelEnd = operation.selStart + operation.replacement.length;\\r\\n\\t\\t} else {\\r\\n\\t\\t\\t// Add the prefix and suffix\\r\\n\\t\\t\\toperation.cutStart = operation.selStart;\\r\\n\\t\\t\\toperation.cutEnd = operation.selEnd;\\r\\n\\t\\t\\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\\r\\n\\t\\t\\toperation.newSelStart = operation.selStart;\\r\\n\\t\\t\\toperation.newSelEnd = operation.selStart + operation.replacement.length;\\r\\n\\t\\t}\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\\r\\n\",\"type\":\"application/javascript\",\"title\":\"$:/core/modules/editor/operations/text/wrap-selection.js\",\"module-type\":\"texteditoroperation\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/editor/operations/text/undo.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/plugins/BTC/tiddlywiki-codemirror-6/modules/editor/operations/text/undo.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\n\\r\\nText editor operation to replace the entire text\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"undo\\\"] = function(event,operation) {\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\toperation.splice(0, operation.length);\\r\\n\\t\\toperation.type = \\\"undo\\\";\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/editor/operations/text/undo.js\",\"module-type\":\"texteditoroperation\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/editor/operations/text/redo.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/plugins/BTC/tiddlywiki-codemirror-6/modules/editor/operations/text/redo.js\\r\\ntype: application/javascript\\r\\nmodule-type: texteditoroperation\\r\\n\\r\\nText editor operation to replace the entire text\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports[\\\"redo\\\"] = function(event,operation) {\\r\\n\\tif(operation instanceof Array) {\\r\\n\\t\\toperation.splice(0, operation.length);\\r\\n\\t\\toperation.type = \\\"redo\\\";\\r\\n\\t}\\r\\n};\\r\\n\\r\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/editor/operations/text/redo.js\",\"module-type\":\"texteditoroperation\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/subclasses/editor/edit-codemirror-6.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/plugins/BTC/tiddlywiki-codemirror-6/modules/subclasses/editor/edit-text.js\\r\\ntype: application/javascript\\r\\nmodule-type: widget-subclass\\r\\n\\r\\nWidget base class\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports.baseClass = \\\"edit-codemirror-6\\\";\\r\\n\\r\\nexports.constructor = function(parseTreeNode,options) {\\r\\n\\tthis.initialise(parseTreeNode,options);\\r\\n};\\r\\n\\r\\nexports.prototype = {};\\r\\n\\r\\nexports.prototype.execute = function() {\\r\\n\\tthis.editType = this.getAttribute(\\\"type\\\");\\r\\n\\tObject.getPrototypeOf(Object.getPrototypeOf(this)).execute.call(this);\\r\\n};\\r\\n\\r\\n/*\\r\\nHandle an edit text operation message from the toolbar\\r\\n*/\\r\\nexports.prototype.handleEditTextOperationMessage = function(event) {\\r\\n\\t// Prepare information about the operation\\r\\n\\tvar operation = this.engine.createTextOperation(event.param);\\r\\n\\t// Invoke the handler for the selected operation\\r\\n\\tvar handler = this.editorOperations[event.param];\\r\\n\\tif(handler) {\\r\\n\\t\\thandler.call(this,event,operation);\\r\\n\\t}\\r\\n\\t// Execute the operation via the engine\\r\\n\\tvar newText = this.engine.executeTextOperation(operation);\\r\\n\\t// Fix the tiddler height and save changes\\r\\n\\tthis.engine.fixHeight();\\r\\n\\tthis.saveChanges(newText);\\r\\n};\\r\\n\\r\\nexports.prototype.handlePasteEvent = function(event) {\\r\\n\\tif(event.clipboardData && event.clipboardData.files && event.clipboardData.files.length) {\\r\\n\\t\\tevent.preventDefault();\\r\\n\\t\\tevent.stopPropagation();\\r\\n\\t\\tthis.dispatchDOMEvent(this.cloneEvent(event,[\\\"clipboardData\\\"]));\\r\\n\\t\\treturn true;\\r\\n\\t}\\r\\n\\treturn false;\\r\\n};\\r\\n\\r\\nexports.prototype.refresh = function(changedTiddlers) {\\r\\n\\tvar changedAttributes = this.computeAttributes();\\r\\n\\tif(changedAttributes.type || changedTiddlers[\\\"$:/config/codemirror-6/indentWithTab\\\"] || changedTiddlers[\\\"$:/config/codemirror-6/lineNumbers\\\"] || changedTiddlers[\\\"$:/config/codemirror-6/spellcheck\\\"] || changedTiddlers[\\\"$:/config/codemirror-6/highlightActiveLine\\\"] || changedTiddlers[\\\"$:/config/codemirror-6/autocorrect\\\"] || changedTiddlers[\\\"$:/state/codemirror-6/translate/\\\" + this.editTitle] || changedTiddlers[\\\"$:/config/codemirror-6/selectOnOpen\\\"] || changedTiddlers[\\\"$:/config/codemirror-6/bracketMatching\\\"] || changedTiddlers[\\\"$:/config/codemirror-6/closeBrackets\\\"] || changedTiddlers[\\\"$:/config/codemirror-6/completeAnyWord\\\"] || changedTiddlers[\\\"$:/config/codemirror-6/autocompleteIcons\\\"] || changedTiddlers[\\\"$:/config/codemirror-6/maxRenderedOptions\\\"] || changedTiddlers[\\\"$:/config/codemirror-6/tiddlerFilter\\\"] || changedTiddlers[\\\"$:/config/codemirror-6/tiddlerMatchDelimiter\\\"]) {\\r\\n\\t\\tthis.refreshSelf();\\r\\n\\t\\treturn true;\\r\\n\\t}\\r\\n\\t// Call the base class refresh function\\r\\n\\tObject.getPrototypeOf(Object.getPrototypeOf(this)).refresh.call(this,changedTiddlers);\\r\\n};\\r\\n\\r\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/subclasses/editor/edit-codemirror-6.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/subclasses/dropzone.js\":{\"text\":\"/*\\\\\\r\\ntitle: $:/plugins/BTC/tiddlywiki-codemirror-6/modules/subclasses/dropzone.js\\r\\ntype: application/javascript\\r\\nmodule-type: widget-subclass\\r\\n\\r\\nWidget base class\\r\\n\\r\\n\\\\*/\\r\\n(function(){\\r\\n\\r\\n/*jslint node: true, browser: true */\\r\\n/*global $tw: false */\\r\\n\\\"use strict\\\";\\r\\n\\r\\nexports.baseClass = \\\"dropzone\\\";\\r\\n\\r\\nexports.constructor = function(parseTreeNode,options) {\\r\\n\\tthis.initialise(parseTreeNode,options);\\r\\n};\\r\\n\\r\\nexports.prototype = {};\\r\\n\\r\\nexports.prototype.handleDragEnterEvent = function(event) {\\r\\n\\tif($tw.dragInProgress) {\\r\\n\\t\\treturn false;\\r\\n\\t}\\r\\n\\t// Tell the browser that we're ready to handle the drop\\r\\n\\tevent.preventDefault();\\r\\n\\t// Tell the browser not to ripple the drag up to any parent drop handlers\\r\\n\\tevent.stopPropagation();\\r\\n\\tif(this.filesOnly && !$tw.utils.dragEventContainsFiles(event)) {\\r\\n\\t\\treturn false;\\r\\n\\t}\\r\\n\\tthis.enterDrag(event);\\r\\n};\\r\\n\\r\\n})();\",\"type\":\"application/javascript\",\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/modules/subclasses/dropzone.js\",\"module-type\":\"widget-subclass\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/icons/redo\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/icons/redo\",\"text\":\"\u003Csvg height=\\\"24\\\" viewBox=\\\"0 -960 960 960\\\" width=\\\"24\\\">\u003Cpath d=\\\"M396-200q-97 0-166.5-63T160-420q0-94 69.5-157T396-640h252L544-744l56-56 200 200-200 200-56-56 104-104H396q-63 0-109.5 40T240-420q0 60 46.5 100T396-280h284v80H396Z\\\"/>\u003C/svg>\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/icons/undo\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/icons/undo\",\"text\":\"\u003Csvg height=\\\"24\\\" viewBox=\\\"0 -960 960 960\\\" width=\\\"24\\\">\u003Cpath d=\\\"M280-200v-80h284q63 0 109.5-40T720-420q0-60-46.5-100T564-560H312l104 104-56 56-200-200 200-200 56 56-104 104h252q97 0 166.5 63T800-420q0 94-69.5 157T564-200H280Z\\\"/>\u003C/svg>\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/license\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/license\",\"text\":\"!! This plugin is distributed under MIT license:\\n\\n```\\r\\nMIT License\\n\\nCopyright (c) 2023 Simon Huber\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\r\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\r\\nin the Software without restriction, including without limitation the rights\\r\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\r\\ncopies of the Software, and to permit persons to whom the Software is\\r\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all\\r\\ncopies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\r\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\r\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\r\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\r\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\r\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\r\\nSOFTWARE.\\n\\n```\\n\\n!! [ext[CodeMirror 6|https://codemirror.net]] is distributed under MIT license:\\n\\n```\\r\\nMIT License\\n\\nCopyright (C) 2018 by Marijn Haverbeke \u003Cmarijn@haverbeke.berlin>, Adrian\\r\\nHeine \u003Cmail@adrianheine.de>, and others\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy\\r\\nof this software and associated documentation files (the \\\"Software\\\"), to deal\\r\\nin the Software without restriction, including without limitation the rights\\r\\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\r\\ncopies of the Software, and to permit persons to whom the Software is\\r\\nfurnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in\\r\\nall copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\r\\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\r\\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\\r\\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\r\\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\r\\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\\r\\nTHE SOFTWARE.\\r\\n```\\n\\n!! [ext[Material icons|https://fonts.google.com/icons]] are distributed under Apache license:\\n\\n\\r\\n```\\n\\n Apache License\\r\\n Version 2.0, January 2004\\r\\n http://www.apache.org/licenses/\\n\\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\\n\\n 1. Definitions.\\n\\n \\\"License\\\" shall mean the terms and conditions for use, reproduction,\\r\\n and distribution as defined by Sections 1 through 9 of this document.\\n\\n \\\"Licensor\\\" shall mean the copyright owner or entity authorized by\\r\\n the copyright owner that is granting the License.\\n\\n \\\"Legal Entity\\\" shall mean the union of the acting entity and all\\r\\n other entities that control, are controlled by, or are under common\\r\\n control with that entity. For the purposes of this definition,\\r\\n \\\"control\\\" means (i) the power, direct or indirect, to cause the\\r\\n direction or management of such entity, whether by contract or\\r\\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\\r\\n outstanding shares, or (iii) beneficial ownership of such entity.\\n\\n \\\"You\\\" (or \\\"Your\\\") shall mean an individual or Legal Entity\\r\\n exercising permissions granted by this License.\\n\\n \\\"Source\\\" form shall mean the preferred form for making modifications,\\r\\n including but not limited to software source code, documentation\\r\\n source, and configuration files.\\n\\n \\\"Object\\\" form shall mean any form resulting from mechanical\\r\\n transformation or translation of a Source form, including but\\r\\n not limited to compiled object code, generated documentation,\\r\\n and conversions to other media types.\\n\\n \\\"Work\\\" shall mean the work of authorship, whether in Source or\\r\\n Object form, made available under the License, as indicated by a\\r\\n copyright notice that is included in or attached to the work\\r\\n (an example is provided in the Appendix below).\\n\\n \\\"Derivative Works\\\" shall mean any work, whether in Source or Object\\r\\n form, that is based on (or derived from) the Work and for which the\\r\\n editorial revisions, annotations, elaborations, or other modifications\\r\\n represent, as a whole, an original work of authorship. For the purposes\\r\\n of this License, Derivative Works shall not include works that remain\\r\\n separable from, or merely link (or bind by name) to the interfaces of,\\r\\n the Work and Derivative Works thereof.\\n\\n \\\"Contribution\\\" shall mean any work of authorship, including\\r\\n the original version of the Work and any modifications or additions\\r\\n to that Work or Derivative Works thereof, that is intentionally\\r\\n submitted to Licensor for inclusion in the Work by the copyright owner\\r\\n or by an individual or Legal Entity authorized to submit on behalf of\\r\\n the copyright owner. For the purposes of this definition, \\\"submitted\\\"\\r\\n means any form of electronic, verbal, or written communication sent\\r\\n to the Licensor or its representatives, including but not limited to\\r\\n communication on electronic mailing lists, source code control systems,\\r\\n and issue tracking systems that are managed by, or on behalf of, the\\r\\n Licensor for the purpose of discussing and improving the Work, but\\r\\n excluding communication that is conspicuously marked or otherwise\\r\\n designated in writing by the copyright owner as \\\"Not a Contribution.\\\"\\n\\n \\\"Contributor\\\" shall mean Licensor and any individual or Legal Entity\\r\\n on behalf of whom a Contribution has been received by Licensor and\\r\\n subsequently incorporated within the Work.\\n\\n 2. Grant of Copyright License. Subject to the terms and conditions of\\r\\n this License, each Contributor hereby grants to You a perpetual,\\r\\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\\r\\n copyright license to reproduce, prepare Derivative Works of,\\r\\n publicly display, publicly perform, sublicense, and distribute the\\r\\n Work and such Derivative Works in Source or Object form.\\n\\n 3. Grant of Patent License. Subject to the terms and conditions of\\r\\n this License, each Contributor hereby grants to You a perpetual,\\r\\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\\r\\n (except as stated in this section) patent license to make, have made,\\r\\n use, offer to sell, sell, import, and otherwise transfer the Work,\\r\\n where such license applies only to those patent claims licensable\\r\\n by such Contributor that are necessarily infringed by their\\r\\n Contribution(s) alone or by combination of their Contribution(s)\\r\\n with the Work to which such Contribution(s) was submitted. If You\\r\\n institute patent litigation against any entity (including a\\r\\n cross-claim or counterclaim in a lawsuit) alleging that the Work\\r\\n or a Contribution incorporated within the Work constitutes direct\\r\\n or contributory patent infringement, then any patent licenses\\r\\n granted to You under this License for that Work shall terminate\\r\\n as of the date such litigation is filed.\\n\\n 4. Redistribution. You may reproduce and distribute copies of the\\r\\n Work or Derivative Works thereof in any medium, with or without\\r\\n modifications, and in Source or Object form, provided that You\\r\\n meet the following conditions:\\n\\n (a) You must give any other recipients of the Work or\\r\\n Derivative Works a copy of this License; and\\n\\n (b) You must cause any modified files to carry prominent notices\\r\\n stating that You changed the files; and\\n\\n (c) You must retain, in the Source form of any Derivative Works\\r\\n that You distribute, all copyright, patent, trademark, and\\r\\n attribution notices from the Source form of the Work,\\r\\n excluding those notices that do not pertain to any part of\\r\\n the Derivative Works; and\\n\\n (d) If the Work includes a \\\"NOTICE\\\" text file as part of its\\r\\n distribution, then any Derivative Works that You distribute must\\r\\n include a readable copy of the attribution notices contained\\r\\n within such NOTICE file, excluding those notices that do not\\r\\n pertain to any part of the Derivative Works, in at least one\\r\\n of the following places: within a NOTICE text file distributed\\r\\n as part of the Derivative Works; within the Source form or\\r\\n documentation, if provided along with the Derivative Works; or,\\r\\n within a display generated by the Derivative Works, if and\\r\\n wherever such third-party notices normally appear. The contents\\r\\n of the NOTICE file are for informational purposes only and\\r\\n do not modify the License. You may add Your own attribution\\r\\n notices within Derivative Works that You distribute, alongside\\r\\n or as an addendum to the NOTICE text from the Work, provided\\r\\n that such additional attribution notices cannot be construed\\r\\n as modifying the License.\\n\\n You may add Your own copyright statement to Your modifications and\\r\\n may provide additional or different license terms and conditions\\r\\n for use, reproduction, or distribution of Your modifications, or\\r\\n for any such Derivative Works as a whole, provided Your use,\\r\\n reproduction, and distribution of the Work otherwise complies with\\r\\n the conditions stated in this License.\\n\\n 5. Submission of Contributions. Unless You explicitly state otherwise,\\r\\n any Contribution intentionally submitted for inclusion in the Work\\r\\n by You to the Licensor shall be under the terms and conditions of\\r\\n this License, without any additional terms or conditions.\\r\\n Notwithstanding the above, nothing herein shall supersede or modify\\r\\n the terms of any separate license agreement you may have executed\\r\\n with Licensor regarding such Contributions.\\n\\n 6. Trademarks. This License does not grant permission to use the trade\\r\\n names, trademarks, service marks, or product names of the Licensor,\\r\\n except as required for reasonable and customary use in describing the\\r\\n origin of the Work and reproducing the content of the NOTICE file.\\n\\n 7. Disclaimer of Warranty. Unless required by applicable law or\\r\\n agreed to in writing, Licensor provides the Work (and each\\r\\n Contributor provides its Contributions) on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\\r\\n implied, including, without limitation, any warranties or conditions\\r\\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\\r\\n PARTICULAR PURPOSE. You are solely responsible for determining the\\r\\n appropriateness of using or redistributing the Work and assume any\\r\\n risks associated with Your exercise of permissions under this License.\\n\\n 8. Limitation of Liability. In no event and under no legal theory,\\r\\n whether in tort (including negligence), contract, or otherwise,\\r\\n unless required by applicable law (such as deliberate and grossly\\r\\n negligent acts) or agreed to in writing, shall any Contributor be\\r\\n liable to You for damages, including any direct, indirect, special,\\r\\n incidental, or consequential damages of any character arising as a\\r\\n result of this License or out of the use or inability to use the\\r\\n Work (including but not limited to damages for loss of goodwill,\\r\\n work stoppage, computer failure or malfunction, or any and all\\r\\n other commercial damages or losses), even if such Contributor\\r\\n has been advised of the possibility of such damages.\\n\\n 9. Accepting Warranty or Additional Liability. While redistributing\\r\\n the Work or Derivative Works thereof, You may choose to offer,\\r\\n and charge a fee for, acceptance of support, warranty, indemnity,\\r\\n or other liability obligations and/or rights consistent with this\\r\\n License. However, in accepting such obligations, You may act only\\r\\n on Your own behalf and on Your sole responsibility, not on behalf\\r\\n of any other Contributor, and only if You agree to indemnify,\\r\\n defend, and hold each Contributor harmless for any liability\\r\\n incurred by, or claims asserted against, such Contributor by reason\\r\\n of your accepting any such warranty or additional liability.\\n\\n END OF TERMS AND CONDITIONS\\n\\n APPENDIX: How to apply the Apache License to your work.\\n\\n To apply the Apache License to your work, attach the following\\r\\n boilerplate notice, with the fields enclosed by brackets \\\"[]\\\"\\r\\n replaced with your own identifying information. (Don't include\\r\\n the brackets!) The text should be enclosed in the appropriate\\r\\n comment syntax for the file format. We also recommend that a\\r\\n file or class name and description of purpose be included on the\\r\\n same \\\"printed page\\\" as the copyright notice for easier\\r\\n identification within third-party archives.\\n\\n Copyright [yyyy] [name of copyright owner]\\n\\n Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\r\\n you may not use this file except in compliance with the License.\\r\\n You may obtain a copy of the License at\\n\\n http://www.apache.org/licenses/LICENSE-2.0\\n\\n Unless required by applicable law or agreed to in writing, software\\r\\n distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\r\\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\r\\n See the License for the specific language governing permissions and\\r\\n limitations under the License.\\r\\n ```\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/macros/colour-extend\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/macros/colour-extend\",\"tags\":\"$:/tags/Global\",\"text\":\"\\\\procedure colour-extend(name,tiddler:\\\"\\\")\\r\\n\u003C$transclude tiddler={{{ [\u003Ctiddler>!is[blank]] ~[{$:/palette}addsuffix[/extend]] }}} index=\u003C\u003Cname>>/>\\r\\n\\\\end\"},\"$:/palettes/Blanca/extend\":{\"title\":\"$:/palettes/Blanca/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(240, 244, 240, 0.75)\\r\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/Blue/extend\":{\"title\":\"$:/palettes/Blue/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(240, 244, 240, 0.75)\\r\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/ContrastDark/extend\":{\"title\":\"$:/palettes/ContrastDark/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(153, 238, 255, 0.2)\\r\\ncm-gutter-background: \u003C\u003Ccolour background>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/ContrastLight/extend\":{\"title\":\"$:/palettes/ContrastLight/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(204, 238, 255, 0.27)\\r\\ncm-gutter-background: \u003C\u003Ccolour background>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/CupertinoDark/extend\":{\"title\":\"$:/palettes/CupertinoDark/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(153, 238, 255, 0.2)\\r\\ncm-gutter-background: \u003C\u003Ccolour tag-background>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/DarkPhotos/extend\":{\"title\":\"$:/palettes/DarkPhotos/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(240, 244, 240, 0.75)\\r\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/DesertSand/extend\":{\"title\":\"$:/palettes/DesertSand/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(195, 186, 161, 0.75)\\r\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/GruvboxDark/extend\":{\"title\":\"$:/palettes/GruvboxDark/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(124, 111, 100, 0.75)\\r\\ncm-gutter-background: \u003C\u003Ccolour page-background>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour selection-background>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour selection-foreground>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/Muted/extend\":{\"title\":\"$:/palettes/Muted/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(240, 244, 240, 0.75)\\r\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/Nord/extend\":{\"title\":\"$:/palettes/Nord/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(153, 238, 255, 0.2)\\r\\ncm-gutter-background: \u003C\u003Ccolour page-background>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour selection-background>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour selection-foreground>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/Rocker/extend\":{\"title\":\"$:/palettes/Rocker/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(204, 238, 255, 0.27)\\r\\ncm-gutter-background: \u003C\u003Ccolour background>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/SolarFlare/extend\":{\"title\":\"$:/palettes/SolarFlare/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(204, 238, 255, 0.27)\\r\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/SolarizedDark/extend\":{\"title\":\"$:/palettes/SolarizedDark/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(153, 238, 255, 0.2)\\r\\ncm-gutter-background: \u003C\u003Ccolour background>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour tiddler-controls-foreground-selected>>\\r\\ncm-selection-foreground: white\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/SolarizedLight/extend\":{\"title\":\"$:/palettes/SolarizedLight/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(238, 232, 213, 0.75)\\r\\ncm-gutter-background: \u003C\u003Ccolour background>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour tiddler-controls-foreground-selected>>\\r\\ncm-selection-foreground: white\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/SpartanDay/extend\":{\"title\":\"$:/palettes/SpartanDay/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(240, 244, 240, 0.75)\\r\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/SpartanNight/extend\":{\"title\":\"$:/palettes/SpartanNight/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(153, 238, 255, 0.2)\\r\\ncm-gutter-background: \u003C\u003Ccolour page-background>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/Twilight/extend\":{\"title\":\"$:/palettes/Twilight/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(153, 238, 255, 0.2)\\r\\ncm-gutter-background: \u003C\u003Ccolour page-background>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: black\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/palettes/Vanilla/extend\":{\"title\":\"$:/palettes/Vanilla/extend\",\"type\":\"application/x-tiddler-dictionary\",\"text\":\"cm-active-line: rgba(240, 244, 240, 0.75)\\r\\ncm-gutter-background: \u003C\u003Ccolour muted-foreground>>\\r\\ncm-gutter-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-search-match: \u003C\u003Ccolour diff-insert-background>>\\r\\ncm-search-match-border: \u003C\u003Ccolour download-background>>\\r\\ncm-search-match-selected: \u003C\u003Ccolour download-background>>\\r\\ncm-selection-match: \u003C\u003Ccolour notification-background>>\\r\\ncm-matching-bracket-outline: \u003C\u003Ccolour notification-border>>\\r\\ncm-tooltip-background: \u003C\u003Ccolour background>>\\r\\ncm-tooltip-foreground: \u003C\u003Ccolour foreground>>\\r\\ncm-selection-background: \u003C\u003Ccolour primary>>\\r\\ncm-selection-foreground: \u003C\u003Ccolour tiddler-background>>\\r\\ncm-tooltip-selected-background: \u003C\u003Ccolour primary>>\\r\\ncm-tooltip-selected-foreground: \u003C\u003Ccolour background>>\\r\\ncm-caret-colour: \u003C\u003Ccolour foreground>>\\r\\ncm-fold-placeholder-foreground: \u003C\u003Ccolour foreground>>\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/readme\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/readme\",\"text\":\"!!! This plugin adds the [ext[CodeMirror 6|https://codemirror.net]] editor to [ext[TiddlyWiki|https://tiddlywiki.com]]\\n\\nSee the ''usage'' section for keyboard shortcuts\\n\\nIf you like the plugin, feel free to leave me a star on [ext[GitHub|https://github.com/BurningTreeC/tiddlywiki-codemirror-6]]\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/styles\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/styles\",\"tags\":\"$:/tags/Stylesheet\",\"text\":\"\\\\define make-editor-fullscreen()\\n\\nbody {\\r\\n\\toverflow: hidden;\\r\\n}\\n\\n.tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] {\\r\\n\\tposition: fixed;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\theight: 100vh;\\r\\n\\twidth: 100vw;\\r\\n\\tz-index: 1000;\\r\\n}\\n\\n.tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor {\\r\\n\\tposition: fixed;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\theight: 100vh;\\r\\n\\twidth: 100vw;\\r\\n\\tz-index: 1000;\\r\\n\\tbackground-color: \u003C\u003Ccolour tiddler-background>>;\\r\\n}\\n\\n.tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor > div > div:not(.tc-tiddler-preview) > .tc-edit-texteditor {\\r\\n\\toverflow-y: auto;\\r\\n}\\n\\n.tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor > div > div.tc-tiddler-preview > .tc-edit-texteditor {\\r\\n\\toverflow-y: auto;\\r\\n}\\n\\n.tc-tiddler-edit-frame .tc-dropzone-editor > div > div.tc-tiddler-preview > .tc-tiddler-preview-preview {\\r\\n\\toverflow-y: auto;\\r\\n}\\n\\n.tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor > div, .tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor > div > div.tc-tiddler-preview,\\r\\n.tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor > div > div:not(.tc-tiddler-preview), .tc-tiddler-edit-frame[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"] .tc-dropzone-editor > div > div > div .cm-editor {\\r\\n\\theight: 100%;\\r\\n}\\n\\n\\\\end\\n\\n.cm-editor {\\r\\n\\tfont-size: {{$:/config/codemirror-6/fontsize}};\\r\\n\\tcolor-scheme: {{{ [[$:/palette]get[text]!is[blank]] ~[[$:/palettes/vanilla]] +[get[color-scheme]] ~light }}};\\r\\n\\tbackground-color: \u003C\u003Ccolour tiddler-background>> !important;\\r\\n\\tcolor: \u003C\u003Ccolour foreground>> !important;\\r\\n}\\n\\n.cm-content {\\r\\n\\tcaret-color: \u003C\u003Ccolour cm-caret-colour>> !important;\\r\\n}\\n\\n.cm-scroller {\\r\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}} !important;\\r\\n\\tscroll-behavior: smooth;\\r\\n}\\n\\n.cm-activeLine, .cm-activeLineGutter {\\r\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-active-line>> !important;\\r\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\r\\n}\\n\\n.cm-editor ::selection, .cm-editor.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection {\\r\\n\\tbackground: initial !important;\\r\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-selection-background>> !important;\\r\\n\\tcolor: \u003C\u003Ccolour-extend cm-selection-foreground>> !important;\\r\\n}\\n\\n.cm-cursor, .cm-dropCursor {\\r\\n\\tborder-left-color: \u003C\u003Ccolour cm-caret-colour>> !important;\\r\\n}\\n\\n.cm-cursor, .cm-dropCursor {\\r\\n\\tborder-left: {{$:/config/codemirror-6/cursor-thickness}} solid !important;\\r\\n}\\n\\n.cm-gutters {\\r\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-gutter-background>> !important;\\r\\n\\tcolor: \u003C\u003Ccolour-extend cm-gutter-foreground>> !important;\\r\\n\\tborder: none !important;\\r\\n}\\n\\n.cm-panels {\\r\\n\\tbackground-color: \u003C\u003Ccolour tiddler-background>> !important;\\r\\n\\tcolor: \u003C\u003Ccolour foreground>> !important;\\r\\n}\\n\\n.cm-panels button[name=\\\"close\\\"] {\\r\\n\\tfont-size: 25px !important;\\r\\n\\tcursor: pointer !important;\\r\\n}\\n\\n.cm-panels.cm-panels-top: {\\r\\n\\tborder-bottom: 2px solid \u003C\u003Ccolour foreground>>;\\r\\n}\\n\\n.cm-panels.cm-panels-bottom {\\r\\n\\tborder-top: 2px solid \u003C\u003Ccolour foreground>>;\\r\\n}\\n\\n.cm-searchMatch {\\r\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-search-match>> !important;\\r\\n\\toutline: 1px solid \u003C\u003Ccolour-extend cm-search-match-border>> !important;\\r\\n}\\n\\n.cm-searchMatch.cm-searchMatch-selected {\\r\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-search-match-selected>> !important;\\r\\n}\\n\\n.cm-selectionMatch {\\r\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-selection-match>> !important;\\r\\n}\\n\\n.cm-editor.cm-focused .cm-matchingBracket, .cm-editor.cm-focused .cm-nonmatchingBracket {\\r\\n\\toutline: 1px solid \u003C\u003Ccolour-extend cm-matching-bracket-outline>> !important;\\r\\n}\\n\\n.cm-tooltip {\\r\\n\\tborder: none;\\r\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-tooltip-background>> !important;\\r\\n\\tcolor: \u003C\u003Ccolour-extend cm-tooltip-foreground>> !important;\\r\\n\\tfont-size: {{$:/config/codemirror-6/fontsize}};\\r\\n\\tz-index: 9999 !important;\\r\\n}\\n\\n.cm-tooltip-autocomplete > ul > li {\\r\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}} !important;\\r\\n\\toverflow: hidden;\\r\\n}\\n\\n.cm-tooltip-autocomplete > ul > li[aria-selected], .cm-tooltip-autocomplete > ul > li:hover {\\r\\n\\tbackground-color: \u003C\u003Ccolour-extend cm-tooltip-selected-background>> !important;\\r\\n\\tcolor: \u003C\u003Ccolour-extend cm-tooltip-selected-foreground>> !important;\\r\\n}\\n\\n.cm-tooltip .cm-tooltip-arrow:before {\\r\\n\\tborder-top-color: transparent !important;\\r\\n\\tborder-bottom-color: transparent !important;\\r\\n}\\n\\n.cm-tooltip .cm-tooltip-arrow:after {\\r\\n\\tborder-top-color: \u003C\u003Ccolour-extend cm-tooltip-background>> !important;\\r\\n\\tborder-bottom-color: \u003C\u003Ccolour-extend cm-tooltip-background>> !important;\\r\\n}\\n\\n.cm-foldPlaceholder {\\r\\n\\tbackground-color: transparent !important;\\r\\n\\tborder: none !important;\\r\\n\\tcolor: \u003C\u003Ccolour cm-fold-placeholder-foreground>> !important;\\r\\n}\\n\\n\u003C$list filter=\\\"[{$:/config/TextEditor/EditorHeight/Mode}match[fixed]]\\\" variable=\\\"ignore\\\">\\n\\n.cm-editor {\\r\\n\\theight: {{$:/config/TextEditor/EditorHeight/Height}};\\r\\n}\\n\\n\u003C/$list>\\n\\n\u003C$list filter=\\\"[{$:/config/codemirror-6/rtl}match[yes]]\\\" variable=\\\"ignore\\\">\\n\\n.cm-editor {\\r\\n\\tdirection: rtl;\\r\\n}\\n\\n\u003C/$list>\\n\\n@media(max-width:800px) {\\r\\n\\t.tc-editor-toolbar button.tc-btn-invisible:not(.tc-text-editor-toolbar-item-adjunct) {\\r\\n\\t\\tborder-radius: 0px;\\r\\n\\t\\tpadding: 6px;\\r\\n\\t}\\r\\n}\\n\\n\u003C$list filter=\\\"[all[tiddlers]prefix[$:/state/codemirror-6/fullscreen]] :filter[get[text]match[yes]] +[limit[1]]\\\" variable=\\\"fullscreenStateTiddler\\\">\\n\\n\u003C$let fullscreenTiddler={{{ [\u003CfullscreenStateTiddler>removeprefix[$:/state/codemirror-6/fullscreen/]] }}} cssEscapedTitle={{{ [\u003CfullscreenTiddler>escapecss[]] }}}>\\n\\n\u003C\u003Cmake-editor-fullscreen>>\\n\\n\u003C/$let>\\n\\n\u003C/$list>\\n\\n/** checkbox switches start **/\\r\\n/** https://www.w3schools.com/howto/howto_css_switch.asp **/\\r\\n/* The switch - the box around the slider */\\r\\nlabel.btcui-form-switch {\\r\\n\\tposition: relative;\\r\\n\\tdisplay: inline-block;\\r\\n\\twidth: 36px;\\r\\n\\theight: 12px;\\r\\n}\\n\\n/* Hide default HTML checkbox */\\r\\nlabel.btcui-form-switch input {\\r\\n\\topacity: 0;\\r\\n\\twidth: 0;\\r\\n\\theight: 0;\\r\\n}\\n\\n/* The slider */\\r\\nlabel.btcui-form-switch span {\\r\\n\\tposition: absolute;\\r\\n\\tcursor: pointer;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\tbackground-color: \u003C\u003Ccolor tiddler-controls-foreground>>;\\r\\n\\t-webkit-transition: .2s;\\r\\n\\ttransition: .2s;\\r\\n}\\n\\nlabel.btcui-form-switch span:before {\\r\\n\\tposition: absolute;\\r\\n\\tcontent: \\\"\\\";\\r\\n\\theight: 20px;\\r\\n\\twidth: 20px;\\r\\n\\tleft: -1px;\\r\\n\\ttop: -4px;\\r\\n\\tbottom: 4px;\\r\\n\\tbackground-color: \u003C\u003Ccolor background>>;\\r\\n\\t-webkit-transition: .2s;\\r\\n\\ttransition: .2s;\\r\\n\\tbox-shadow: 0 1px 3px 0 rgba(0,0,0,0.7);\\r\\n}\\n\\nlabel.btcui-form-switch input:checked + span {\\r\\n\\tbackground-color: rgba(26,115,232,0.5);\\r\\n}\\n\\nlabel.btcui-form-switch input:checked + span:before {\\r\\n\\tbackground-color: rgb(26,115,232);\\r\\n\\topacity: 1;\\r\\n}\\n\\nlabel.btcui-form-switch input:focus + span {\\r\\n\\tbox-shadow: 0 0 1px #2196F3;\\r\\n}\\n\\nlabel.btcui-form-switch input:checked + span:before {\\r\\n\\t-webkit-transform: translateX(17px);\\r\\n\\t-ms-transform: translateX(17px);\\r\\n\\ttransform: translateX(17px);\\r\\n}\\n\\nlabel.btcui-form-switch span {\\r\\n\\tborder-radius: 12px;\\r\\n}\\n\\nlabel.btcui-form-switch span:before {\\r\\n\\tborder-radius: 50%;\\r\\n}\\n\\ndiv.btcui-form-label {\\r\\n\\t\\r\\n}\\n\\n/*** checkbox switches end ***/\\n\\n/** form select elements **/\\r\\n.btcui-form-select {\\r\\n\\tappearance: none;\\r\\n\\tbackground: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='12' fill='%235F6368'%3E%3Cpath d='M0 0h24L12 12z'/%3E%3C/svg%3E\\\") calc(100% - 8px) center no-repeat;\\r\\n\\tbackground-color: rgb(241,243,244);\\r\\n\\tbackground-size: 10px;\\r\\n\\tborder: none;\\r\\n\\tborder-radius: 4px;\\r\\n\\tcolor: rgb(32,33,36);\\r\\n\\tcursor: pointer;\\r\\n\\tmax-width: 100%;\\r\\n\\toutline: none;\\r\\n\\tpadding: 6px 21px 6px 8px;\\r\\n/*\\twidth: 200px;*/\\r\\n}\\n\\ninput.btcui-form-input {\\r\\n\\tborder: 1px solid \u003C\u003Ccolor tiddler-controls-foreground>>;\\r\\n\\tborder-radius: 3px;\\r\\n\\tbackground-color: \u003C\u003Ccolour background>>;\\r\\n\\tpadding: 6px;\\r\\n\\tcolor: \u003C\u003Ccolour foreground>>;\\r\\n}\\n\\ninput.btcui-form-input:focus {\\r\\n\\toutline-color: #ccc;\\r\\n}\\n\\n\\r\\n.btc-list-group {\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\tpadding-left: 0;\\r\\n\\tmargin-bottom: 0;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\n\\n.btc-list-group-box-shadow {\\r\\n\\tbox-shadow:1px 1px 5px rgba(0, 0, 0, 0.3);\\t\\r\\n\\tborder-bottom-left-radius: .25rem;\\r\\n\\tborder-bottom-right-radius: .25rem;\\r\\n\\tborder-top-left-radius: .25rem;\\r\\n\\tborder-top-right-radius: .25rem;\\t\\t\\r\\n}\\r\\n\\t\\r\\n.btc-list-group-item {\\r\\n\\tposition: relative;\\r\\n\\tdisplay: block;\\r\\n\\tpadding: 0.75rem 1.25rem;\\r\\n\\tbackground-color: \u003C\u003Ccolor background>>;\\r\\n\\tborder: 1px solid rgba(0,0,0,.125);\\r\\n\\twidth: 100%;\\r\\n\\tcolor: #495057;\\r\\n\\ttext-align:\\tinherit;\\t\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: row;\\r\\n\\tjustify-content: space-between!important;\\r\\n\\talign-items: center!important;\\r\\n\\tword-spacing: 0.1em;\\r\\n}\\n\\n\\r\\n.btc-list-group-item+.btc-list-group-item {\\r\\n\\tborder-top-width: 0;\\r\\n}\\n\\n.btc-list-group-item:first-child {\\r\\n\\tborder-top-left-radius: .25rem;\\r\\n\\tborder-top-right-radius: .25rem;\\r\\n}\\n\\n.btc-list-group-item:last-child {\\r\\n\\tborder-bottom-left-radius: .25rem;\\r\\n\\tborder-bottom-right-radius: .25rem;\\r\\n}\\n\\n.btc-list-stream-settings {\\r\\n\\tfont-size: 90%;\\r\\n}\\n\\ninput.btc-search-input {\\r\\n display: block;\\r\\n width: 100%;\\r\\n height: calc(1.5em + .75rem + 2px);\\r\\n padding: .375rem .75rem;\\r\\n font-size: 0.8rem;\\r\\n font-weight: 400;\\r\\n line-height: 1.5;\\r\\n color: #495057;\\r\\n background-color: \u003C\u003Ccolor background>>;\\r\\n background-clip: padding-box;\\r\\n border: 1px solid #ced4da;\\r\\n border-radius: .25rem;\\r\\n transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\\r\\n margin-bottom: 0.75em;\\r\\n}\\n\\ninput.btc-search-input:focus {\\r\\ncolor: #495057;\\r\\n background-color: \u003C\u003Ccolor background>>;\\r\\n border-color: #80bdff;\\r\\n outline: 0;\\r\\n box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25);\\r\\n}\\n\\n.cm-completionIcon.cm-completionIcon-cm-tiddler:after {\\r\\n\\tcontent: '{{$:/config/codemirror-6/tiddlerCompletionIcon}}';\\r\\n}\\r\\n\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/ControlPanel/settings\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/ControlPanel/settings\",\"caption\":\"CodeMirror 6\",\"tags\":\"$:/tags/ControlPanel\",\"text\":\"\\\\define sortBySettingsGroupFilter()\\r\\n[get[settings-group]!is[blank]else[!general]] [get[settings-group-header]!is[blank]else[99]] +[join[]]\\r\\n\\\\end\\n\\n\u003C$edit-text tiddler=\\\"$:/state/codemirror-6/settings/search\\\" class=\\\"btc-search-input\\\" default=\\\"\\\" tag=\\\"input\\\" type=\\\"search\\\" placeholder=\\\"search...\\\"/>\\n\\n\u003Cdiv class=\\\"btc-list-group btc-list-group-box-shadow btc-list-stream-settings\\\">\\r\\n\u003C$list filter=\\\"[all[shadows+tiddlers]prefix[$:/config/codemirror-6/]has[settings-template]] +[search:title,caption,description{$:/state/codemirror-6/settings/search}] +[sortsub\u003CsortBySettingsGroupFilter>]\\\">\\r\\n\u003C$list filter={{{[{!!condition}!is[blank]] :else[{!!title}]}}} variable=\\\"list-condition\\\">\\r\\n\u003Cdiv class=\\\"btc-list-group-item\\\">\\r\\n\u003C$transclude tiddler={{!!settings-template}}/>\\r\\n\u003C/div>\\r\\n\u003C/$list>\\r\\n\u003C/$list>\\r\\n\u003C/div>\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/EditorToolbar/fullscreen\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/EditorToolbar/fullscreen\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/full-screen-button\",\"caption\":\"Fullscreen\",\"description\":\"toggle the fullscreen view of the editor\",\"condition\":\"[\u003CtargetTiddler>]\",\"shortcuts\":\"((editor-fullscreen))\",\"text\":\"\u003C$list filter=\\\"[[$:/state/codemirror-6/fullscreen/]addsuffix\u003CtargetTiddler>is[missing]] [[$:/state/codemirror-6/fullscreen/]addsuffix\u003CtargetTiddler>get[text]match[no]]\\\" emptyMessage=\\\"\\\"\\\"\\r\\n\u003C$action-setfield $tiddler={{{ [[$:/state/codemirror-6/fullscreen/]addsuffix\u003CstoryTiddler>] }}} text=\\\"no\\\"/>\\r\\n\\\"\\\"\\\">\\r\\n\u003C$action-setfield $tiddler={{{ [[$:/state/codemirror-6/fullscreen/]addsuffix\u003CstoryTiddler>] }}} text=\\\"yes\\\"/>\\r\\n\u003C/$list>\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/EditorToolbar/redo\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/EditorToolbar/redo\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/icons/redo\",\"caption\":\"Redo\",\"description\":\"redo the last edit / text operation\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>get[type]!prefix[image/]] [\u003CtargetTiddler>get[type]match[image/svg+xml]]\",\"text\":\"\u003C$action-sendmessage\\r\\n\\t$message=\\\"tm-edit-text-operation\\\"\\r\\n\\t$param=\\\"redo\\\"\\r\\n/>\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/EditorToolbar/search\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/EditorToolbar/search\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/core/images/advanced-search-button\",\"caption\":\"Search\",\"description\":\"toggle the visibility of the search panel\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>get[type]!prefix[image/]] [\u003CtargetTiddler>get[type]match[image/svg+xml]]\",\"text\":\"\\\\define get-focus-selector()\\r\\n[data-tiddler-title=\\\"$(cssEscapedTitle)$\\\"].tc-tiddler-edit-frame .cm-panel.cm-search input\\r\\n\\\\end\\n\\n\u003C$action-sendmessage\\r\\n\\t$message=\\\"tm-edit-text-operation\\\"\\r\\n\\t$param=\\\"search\\\"\\r\\n/>\\r\\n\u003C$set name=\\\"cssEscapedTitle\\\" value={{{ [\u003CtargetTiddler>escapecss[]] }}}>\\r\\n\u003C$action-sendmessage\\r\\n\\t$message=\\\"tm-focus-selector\\\"\\r\\n\\t$param=\u003C\u003Cget-focus-selector>>\\r\\n/>\\r\\n\u003C/$set>\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/EditorToolbar/undo\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/EditorToolbar/undo\",\"tags\":\"$:/tags/EditorToolbar\",\"icon\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/icons/undo\",\"caption\":\"Undo\",\"description\":\"undo the last edit / text operation\",\"condition\":\"[\u003CtargetTiddler>!has[type]] [\u003CtargetTiddler>get[type]!prefix[image/]] [\u003CtargetTiddler>get[type]match[image/svg+xml]]\",\"text\":\"\u003C$action-sendmessage\\r\\n\\t$message=\\\"tm-edit-text-operation\\\"\\r\\n\\t$param=\\\"undo\\\"\\r\\n/>\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/EditorToolbar/translate\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/EditorToolbar/translate\",\"tags\":\"$:/tags/EditorTools\",\"condition\":\"[{$:/config/codemirror-6/translate}match[yes]then\u003CtargetTiddler>!has[type]] [{$:/config/codemirror-6/translate}match[yes]then\u003CtargetTiddler>get[type]!prefix[image/]] [{$:/config/codemirror-6/translate}match[yes]then\u003CtargetTiddler>get[type]match[image/svg+xml]]\",\"text\":\"\u003Cdiv>\\r\\n\u003C$checkbox tiddler={{{ [[$:/state/codemirror-6/translate/]addsuffix\u003CstoryTiddler>] }}} field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\"> //translate//\u003C/$checkbox>\\r\\n\u003C/div>\"},\"$:/core/ui/EditTemplate/body/editor\":{\"title\":\"$:/core/ui/EditTemplate/body/editor\",\"text\":\"\\\\whitespace trim\\n\\n\u003C$edit\\n\\n field=\\\"text\\\"\\n class=\\\"tc-edit-texteditor tc-edit-texteditor-body\\\"\\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\\n tabindex={{$:/config/EditTabIndex}}\\n focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\\n cancelPopups=\\\"yes\\\"\\n fileDrop={{{ [{$:/config/DragAndDrop/Enable}match[no]] :else[subfilter{$:/config/Editor/EnableImportFilter}then[yes]else[no]] }}}\\n type={{!!type}}\\n\\n>\u003C$set\\n\\n name=\\\"targetTiddler\\\"\\n value=\u003C\u003CcurrentTiddler>>\\n\\n>\u003C$list\\n\\n filter=\\\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\\\"\\n\\n>\u003C$reveal\\n\\n type=\\\"nomatch\\\"\\n state=\u003C\u003Cconfig-visibility-title>>\\n text=\\\"hide\\\"\\n class=\\\"tc-text-editor-toolbar-item-wrapper\\\"\\n\\n>\u003C$transclude\\n\\n tiddler=\\\"$:/core/ui/EditTemplate/body/toolbar/button\\\"\\n mode=\\\"inline\\\"\\n\\n/>\u003C/$reveal>\u003C/$list>\u003C$list\\n\\n filter=\\\"[all[shadows+tiddlers]tag[$:/tags/EditorTools]!has[draft.of]]\\\"\\n\\n>\u003C$list\\n\\tfilter={{!!condition}}\\n\\tvariable=\\\"list-condition\\\"\\n>\u003C$transclude/>\\n\u003C/$list>\u003C/$list>\u003C/$set>\u003C/$edit>\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input-switch\",\"text\":\"\u003Clabel class=\\\"btcui-form-label\\\">\u003C$link tooltip={{!!description}}>{{!!caption}}\u003C/$link>\u003C/label>\u003C$checkbox field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" class=\\\"btcui-form-switch\\\"/>\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/input\",\"text\":\"\u003Clabel class=\\\"btcui-form-label\\\">\u003C$link tooltip={{!!description}}>{{!!caption}}\u003C/$link>\u003C/label>\\r\\n\u003C$edit-text tag=\\\"input\\\" class=\\\"btcui-form-input\\\"/>\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/select\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/ui/templates/settings/select\",\"text\":\"\u003Clabel class=\\\"btcui-form-label\\\">\u003C$link tooltip={{!!description}}>{{!!caption}}\u003C/$link>\u003C/label>\\r\\n\u003C$vars cnt={{{[enlist{!!option-names}count[]]}}}>\\r\\n\u003C$select class=\\\"btcui-form-select\\\">\\r\\n\u003C$list filter=\\\"[range\u003Ccnt>]\\\" variable=\\\"index\\\">\\r\\n\u003Coption value={{{[enlist{!!option-values}nth\u003Cindex>]}}}>\u003C$text text={{{[enlist{!!option-names}nth\u003Cindex>]}}}/>\u003C/option>\\r\\n\u003C/$list>\\r\\n\u003C/$select>\\r\\n\u003C/$vars>\"},\"$:/plugins/BTC/tiddlywiki-codemirror-6/usage\":{\"title\":\"$:/plugins/BTC/tiddlywiki-codemirror-6/usage\",\"text\":\"!!! Keyboard shortcuts\\n\\n!!!! Note that any ~TiddlyWiki global keyboard shortcut or keyboard shortcut defined in a surrounding keyboard widget gets precedence\\n\\n\\\"\\\"\\\"\\n\\n''ArrowLeft'': cursorCharLeft (selectCharLeft with Shift)\\r\\n''ArrowRight'': cursorCharRight (selectCharRight with Shift)\\r\\n''Ctrl-ArrowLeft'' (Alt-ArrowLeft on macOS): cursorGroupLeft (selectGroupLeft with Shift)\\r\\n''Ctrl-ArrowRight'' (Alt-ArrowRight on macOS): cursorGroupRight (selectGroupRight with Shift)\\r\\n''Cmd-ArrowLeft'' (on macOS): cursorLineStart (selectLineStart with Shift)\\r\\n''Cmd-ArrowRight'' (on macOS): cursorLineEnd (selectLineEnd with Shift)\\r\\n''ArrowUp'': cursorLineUp (selectLineUp with Shift)\\r\\n''ArrowDown'': cursorLineDown (selectLineDown with Shift)\\r\\n''Cmd-ArrowUp'' (on macOS): cursorDocStart (selectDocStart with Shift)\\r\\n''Cmd-ArrowDown'' (on macOS): cursorDocEnd (selectDocEnd with Shift)\\r\\n''Ctrl-ArrowUp'' (on macOS): cursorPageUp (selectPageUp with Shift)\\r\\n''Ctrl-ArrowDown'' (on macOS): cursorPageDown (selectPageDown with Shift)\\r\\n''PageUp'': cursorPageUp (selectPageUp with Shift)\\r\\n''PageDown'': cursorPageDown (selectPageDown with Shift)\\r\\n''Home'': cursorLineBoundaryBackward (selectLineBoundaryBackward with Shift)\\r\\n''End'': cursorLineBoundaryForward (selectLineBoundaryForward with Shift)\\r\\n''Ctrl-Home'' (Cmd-Home on macOS): cursorDocStart (selectDocStart with Shift)\\r\\n''Ctrl-End'' (Cmd-Home on macOS): cursorDocEnd (selectDocEnd with Shift)\\r\\n''Enter'': insertNewlineAndIndent\\r\\n''Ctrl-a'' (Cmd-a on macOS): selectAll\\r\\n''Backspace'': deleteCharBackward\\r\\n''Delete'': deleteCharForward\\r\\n''Ctrl-Backspace'' (Alt-Backspace on macOS): deleteGroupBackward\\r\\n''Ctrl-Delete'' (Alt-Delete on macOS): deleteGroupForward\\r\\n''Cmd-Backspace'' (macOS): deleteToLineStart.\\r\\n''Cmd-Delete'' (macOS): deleteToLineEnd.\\r\\n''Alt-ArrowLeft'' (Ctrl-ArrowLeft on macOS): cursorSyntaxLeft (selectSyntaxLeft with Shift)\\r\\n''Alt-ArrowRight'' (Ctrl-ArrowRight on macOS): cursorSyntaxRight (selectSyntaxRight with Shift)\\r\\n''Alt-ArrowUp'': moveLineUp\\r\\n''Alt-ArrowDow''n: moveLineDown\\r\\n''Shift-Alt-ArrowUp'': copyLineUp\\r\\n''Shift-Alt-ArrowDown'': copyLineDown\\r\\n~~Escape~~: simplifySelection //this is disabled when a surrounding keyboard widget handles it as it does in the default $:/core/ui/EditTemplate //\\r\\n~~Ctrl-Enter~~ (Cmd-Enter on macOS): insertBlankLine //this is disabled when a surrounding keyboard widget handles it as it does in the default $:/core/ui/EditTemplate //\\r\\n''Alt-l'' (Ctrl-l on macOS): selectLine\\r\\n''Ctrl-i'' (Cmd-i on macOS): selectParentSyntax\\r\\n''Ctrl-['' (Cmd-[ on macOS): indentLess\\r\\n''Ctrl-]'' (Cmd-] on macOS): indentMore\\r\\n''Ctrl-Alt-\\\\'' (Cmd-Alt-\\\\ on macOS): indentSelection\\r\\n''Shift-Ctrl-k'' (Shift-Cmd-k on macOS): deleteLine\\r\\n''Shift-Ctrl-\\\\'' (Shift-Cmd-\\\\ on macOS): cursorMatchingBracket\\r\\n''Ctrl-/'' (Cmd-/ on macOS): toggleComment.\\r\\n''Shift-Alt-a'': toggleBlockComment.\\n\\n\\\"\\\"\\\"\"}}}","revision":"0","bag":"default"} ,