Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<<importTiddlers>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<!--{{{-->
<div class='header' role='banner' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea' role='main'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
/***
|''Name''|RefreshTiddlerCommand|
|''Version''|0.3.0|
***/
//{{{
(function($) {

var cmd = config.commands.refreshTiddler = {
	text: "refresh",
	locale: {
		refreshing: "Refreshing tiddler..."
	},
	tooltip: "refresh this tiddler to be the one on the server",
	handler: function(ev, src, title) {
		var tiddler = store.getTiddler(title);
		if(!tiddler) {
			tiddler = new Tiddler(title);
			merge(tiddler.fields, config.defaultCustomFields);
		}
		$(story.getTiddler(title)).find(".viewer").
			empty().text(cmd.locale.refreshing);
		var dirtyStatus = store.isDirty();
		story.loadMissingTiddler(title, {
			"server.workspace": tiddler.fields["server.recipe"]  ? "recipes/" + tiddler.fields["server.recipe"] :
				tiddler.fields["server.workspace"] || "bags/"+tiddler.fields["server.bag"],
			"server.host": tiddler.fields["server.host"],
			"server.type": tiddler.fields["server.type"]
		}, function() {
			store.setDirty(dirtyStatus);
		});
	}
};

})(jQuery);
//}}}
[ [[top|http://softwarereview.tiddlyspace.com]] ] [ JustLinks: ]
*[[Doug McIlroy|http://www.cs.dartmouth.edu/~doug/]]
*[[TiddlyWiki -- Software As She's Developed|http://softwareas.com/tiddlywiki-internals-1-of-3-architectural-concepts]]
*[[Joel On Software|http://joelonsoftware.com/]]  - latest on the Software Academy in NYC
*on [[infrastructure debt|http://www.littlehart.net/atthekeyboard/2011/11/03/infrastructure-debt/]]
*[[bashing|http://caliban.org/bash/]]
*[[codeAcademy|http://codeacademy.com]]
*[[scratch|http://scratched.media.mit.edu/]]
*JustTcl
*[[Public Access Unix System|http://sdf.lonestar.org/]] -- unix training on the web
!!From My [[Personal Pages|http://martymcgowan.tiddlyspace.com]]:
*[[beedub -- Brent B Welch -- Tcl mentor|http://beedub.com/book/4th/]]
*[[Living Internet (history)|http://www.livinginternet.com/]]
*[[Code::Blocks|http://codeblocks.org]] -- review this IDE.
*[[ReadWriteWeb|http://www.readwriteweb.com/]] -- look for Deiter Rams
*[[GoogleEngineeringTools|http://google-engtools.blogspot.com/]]
*[[Larry on HTML standards direction|http://masinter.blogspot.com/2011/06/irreconcilable-differences.html]] -- see HTMLStandardsOutline
*[[gov on Digital Preservation|http://digitalpreservation.gov/partners/resources/tools/index.html#lockss]]
*[[on the Tcler's Wiki|http://wiki.tcl.tk/28606]]
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="72 648 70 70" 
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
	<g>
		<path d="M 77.59005 669.34003 C 71.532745 681.90424 73.714462 697.4441 84.135193 707.86475 
		C 97.315445 721.0451 118.684715 721.0451 131.8649 707.86475 
		C 145.04515 694.68457 145.04515 673.31537 131.8649 660.13513 
		C 121.4441 649.7141 105.90419 647.53253 93.339905 653.5899 L 102.047455 662.2976 
		C 109.58637 660.2373 117.987976 662.16803 123.90997 668.08997 
		C 132.69673 676.8767 132.69673 691.12317 123.90997 699.90985 
		C 115.12313 708.6966 100.87699 708.6966 92.09012 699.90985 
		C 86.168266 693.98804 84.23744 685.58643 86.297653 678.04755 Z M 72 648 L 72 668.25 L 78.75 661.49957 
		L 99.00019 681.7502 L 105.750175 675.00006 L 85.50013 654.75012 L 92.249985 648 Z" fill="black"
		class="glyph"/>
	</g>
</g>
</svg>
A [[SiteIcon|SiteIcon tiddler]]@glossary helps provide some identity to your space.  Ideally it'd be a square and a minimum of 48*48 pixels size.  You can upload your site icon using the uploader below.

<<binaryUploadPublic title:SiteIcon>>
It's time to keep a serious eye towards OnLineContent, especially of the educational nature:
*[[Java Basics -- Guide to static methods|http://www.ensta-paristech.fr/~diam/java/online/JavaBasics/methods/methods-20-define.html]]
*[[Rutgers CS111|http://remus.rutgers.edu/cs111/]]
*[[Williams CS334 -- Programming Languages|http://www.cs.williams.edu/~morgan/cs334/]]
[[node.js]]
*UnderstandingNodejs
*PhilBeevers
*NodeJsStabilityIndex
*[[dependency injection|http://martinfowler.com/articles/injection.html]]
*[[execution in the kingdom of nouns|http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html]]
*[[dillinger|http://dillinger.io/]] -- tip of the iceberg of node.js application.
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
!Notes from [[Phil Beevers|PhilBeevers]]
He's come around to JavaScript, and points to [[node.js|http://nodejs.org]]
!OnlineCourseware:
*scheme
*scratch
*python
/***
|''Name''|TiddlyFileImporter|
|''Version''|0.3.8|
|''Author''|Ben Gillies|
|''Type''|plugin|
|''Description''|Upload a TiddlyWiki file to TiddlyWeb, and import the tiddlers.|
!Usage
Upload a TiddlyWiki file to TiddlyWeb, and import the tiddlers.
!Requires
tiddlyweb
tiddlywebplugins.reflector
!Code
***/
//{{{
(function($){
if(!version.extensions.TiddlyFileImporter)
{ //# ensure that the plugin is only installed once
	version.extensions.TiddlyFileImporter = { installed: true };
}

config.macros.fileImport = {
	reflectorURI: '/reflector?csrf_token=%0',
	incorrectTypeError: 'Incorrect File Type. You must upload a TiddlyWiki',
	uploadLabel: 'Upload',
	uploadLabelPrompt: 'Import tiddlers from this TiddlyWiki',
	step1FileText: 'File:',
	step1PostText: 'In the next screen you will select the tiddlers to import.',
	step1Title: 'Step 1: Pick a TiddlyWiki to import',
	step1TypeChooser: 'Import From:',
	step3Html: ['<input type="hidden" name="markList" />',
		'<input type="hidden" checked="true" name="chkSync" />',
		'<input type="hidden" name="chkSave" />',
		'<input type="hidden" name="txtSaveTiddler" />'].join(),

	handler: function(place, macroName, params, wikifier, paramString) {
		var wizard = new Wizard();
		wizard.createWizard(place, 'Import a TiddlyWiki');
		this.restart(wizard);
	},

	restart: function(wizard) {
		var me = config.macros.fileImport;
		wizard.addStep(me.step1Title, ['<input type="hidden" ',
			'name="markList" />'].join(""));
		var markList = wizard.getElement('markList');
		var uploadWrapper = document.createElement('div');
		markList.parentNode.insertBefore(uploadWrapper, markList);
		uploadWrapper.setAttribute('refresh', 'macro');
		uploadWrapper.getAttribute('macroName', 'fileImport');
		var iframeName = 'reflectorImporter' + Math.random().toString();
		me.createForm(uploadWrapper, wizard, iframeName);
		$(uploadWrapper).append('<p>' + me.step1PostText + '</p>');
		wizard.setValue('serverType', 'tiddlyweb');
		wizard.setValue('adaptor', new config.adaptors.file());
		wizard.setValue('host', config.defaultCustomFields['server.host']);
		wizard.setValue('context', {});
		var iframe = $(['<iframe name="' + iframeName + '" ',
			'style="display: none" />'].join("")).appendTo(uploadWrapper);
		var onSubmit = function(ev) {
			var uploadType = $('select[name=uploadtype]', wizard.formElem).val();
			if (uploadType == "file") {
				// set an onload ready to hijack the form
				me.setOnLoad(uploadWrapper, wizard, iframe[0]);
				wizard.importType = 'file';
				wizard.formElem.submit();
			} else {
				var csrf_token = config.extensions.tiddlyspace.getCSRFToken();
				$.ajax({
					url: "%0/reflector?csrf_token=%1".format(
						config.defaultCustomFields["server.host"], csrf_token),
					type: "POST",
					dataType: "text",
					data: {
						uri: $("input", ".importFrom", wizard.formElem).val()
					},
					success: function(data, txtStatus, xhr) {
						wizard.POSTResponse = data;
						me.importTiddlers(uploadWrapper, wizard);
					},
					error: function(xhr, txtStatus, error) {
						displayMessage(["There was an error fetching the ",
							'url: ', txtStatus].join(""));
						me.restart(wizard);
					}
				});
				return false;
			}
		};
		wizard.setButtons([{
			caption: me.uploadLabel,
			tooltip: me.uploadLabelPrompt,
			onClick: onSubmit
		}]);
		$(wizard.formElem).submit(function(ev) {
			onSubmit(ev);
			ev.preventDefault();
		});
	},

	createForm: function(place, wizard, iframeName) {
		var form = wizard.formElem;
		var me = config.macros.fileImport;
		form.action = me.reflectorURI.format(
			config.extensions.tiddlyspace.getCSRFToken());
		form.enctype = 'multipart/form-data';
		form.encoding = 'multipart/form-data';
		form.method = 'POST';
		form.target = iframeName;
		onSelectChange = function(e) {
			var changeTo = $(this).val();
			if (changeTo == "file") {
				$(".importFrom").html('%0 <input type="file" name="file" />'.
					format(me.step1FileText));
			} else {
				$(".importFrom").html('URL: <input type="text" name="uri" />'
					+ ' Do you want <a target="_blank" href="http://faq.tiddlyspace.com/How%20do%20I%20include%2Fexclude%20spaces%3F">inclusion</a> instead?');
			}
		};
		$(place).append('<span>%0</span>'.format(me.step1TypeChooser)).
			append($(['<select name="uploadtype"><option value="file" selected="selected">file',
				'<option value="uri">url</select>'].join("")).change(onSelectChange)).
			append('<div class="importFrom">%0<input type="file" name="file" /></div>'.
					format(me.step1FileText));
	},

	setOnLoad: function(place, wizard, iframe) {
		var me = config.macros.fileImport;
		var loadHandler = function() {
			me.importTiddlers.apply(this, [place, wizard, iframe]);
		};
		iframe.onload = loadHandler;
		completeReadyStateChanges = 0;
		iframe.onreadystatechange = function() {
			if (++(completeReadyStateChanges) == 5) {
				loadHandler();
			}
		};
	},

	importTiddlers: function(place, wizard, iframe) {
		var tmpStore = new TiddlyWiki();
		var POSTedWiki = "";
		if (wizard.importType == "file") {
			try {
				POSTedWiki= iframe.contentWindow
					.document.documentElement.innerHTML;
			} catch(e) {
				displayMessage(config.macros.fileImport.incorrectTypeError);
				config.macros.fileImport.restart(wizard);
				return;
			}
			// now we are done, so remove the iframe
			$(iframe).remove();
		} else {
			POSTedWiki = wizard.POSTResponse;
		}

		tmpStore.importTiddlyWiki(POSTedWiki);
		var newTiddlers = tmpStore.getTiddlers();
		var workspace = config.defaultCustomFields['server.workspace'];
		var context = {
			status: true,
			statusText: 'OK',
			httpStatus: 200,
			adaptor: wizard.getValue('adaptor'),
			tiddlers: newTiddlers
		};
		context.adaptor.store = tmpStore;
		wizard.setValue('context', context);
		wizard.setValue('workspace', workspace);
		wizard.setValue('inFileImport', true);
		config.macros.importTiddlers.onGetTiddlerList(context, wizard);
	}
};

var _onGetTiddler = config.macros.importTiddlers.onGetTiddler;
config.macros.importTiddlers.onGetTiddler = function(context, wizard) {
	if (wizard.getValue('inFileImport')) {
		var me = config.macros.importTiddlers;
		if(!context.status)
			displayMessage("Error in importTiddlers.onGetTiddler: " + context.statusText);
		var tiddler = context.tiddler;
		var fields = tiddler.fields;
		merge(fields, config.defaultCustomFields);
		fields["server.workspace"] = wizard.getValue('workspace');
		delete fields['server.permissions'];
		delete fields['server.bag'];
		fields['server.page.revision'] = 'false';
		delete fields['server.recipe'];
		fields.changecount = 1;
		store.suspendNotifications();
		store.saveTiddler(tiddler.title, tiddler.title, tiddler.text,
			tiddler.modifier, tiddler.modified, tiddler.tags, tiddler.fields,
			false, tiddler.created);
		store.resumeNotifications();
		var remainingImports = wizard.getValue("remainingImports")-1;
		wizard.setValue("remainingImports",remainingImports);
		if(remainingImports === 0) {
			if(context.isSynchronous) {
				store.notifyAll();
				refreshDisplay();
			}
			wizard.setButtons([
					{caption: me.doneLabel, tooltip: me.donePrompt, onClick: me.onClose}
				],me.statusDoneImport);
			autoSaveChanges();
		}
	} else {
		_onGetTiddler.apply(this, arguments);
	}
};

var _onCancel = config.macros.importTiddlers.onCancel;
config.macros.importTiddlers.onCancel = function(e)
{
	var wizard = new Wizard(this);
	if (!wizard.getValue('inFileImport')) {
		return _onCancel.apply(this, arguments);
	}
	var place = wizard.clear();
	config.macros.fileImport.restart(wizard);
	return false;
};

var _step3Html = config.macros.importTiddlers.step3Html;
var _onGetTiddlerList = config.macros.importTiddlers.onGetTiddlerList;
config.macros.importTiddlers.onGetTiddlerList = function(context, wizard) {
	var fileImport = config.macros.fileImport;
	var importTiddlers = config.macros.importTiddlers;
	if (wizard.getValue('inFileImport')) {
		importTiddlers.step3Html = fileImport.step3Html;
	} else {
		importTiddlers.step3Html = _step3Html;
	}
	_onGetTiddlerList.apply(this, arguments);
};
})(jQuery);
//}}}
Thanks to Paul @ ittoolbox for this reference:

> //This is a terrible secret that we Gurus have concealed from the world for decades (despite our best efforts to publicise it) called [[Functional Decomposition|http://en.wikipedia.org/wiki/Functional_decomposition]]. There is a 9-page article on FD online in some obscure website called Wikipedia, but who would have access to such an esoteric source of knowledge?//

In the paragraph: ''Motivation for decomposition'', the points  //As to why the decomposition is valuable, the reason is twofold://  

* //Firstly, decomposition of a function into non-interacting components generally permits more economical representations of the function.//
* // ... perhaps the greatest value of functional decomposition is the insight it provides into the structure of the world.//
[ [[up|ReviewingCodeComplete]] ] ~Code-Tuning Techniques is the subject of CodeCompleteCh26.  In //26.2 Loops,  Unswitching//,   McConnell un-switches a switched loop.  In his wrap-up he points out a compromise made in behalf of performance, suggesting more is required.   Here it is.

First, the Coding Horror: ''C++ Example of a Switched Loop''
{{{
for ( i = 0; i < count; i++) {
   if ( sumType == SUMTYPE_NET ) {
      netSum = netSum + amount[ i ];
   }
   else {
      grossSum = grossSum + amount[ i ];
   }
}
}}}
Noting the test is unnecessarily repeated in the loop, he does the next obvious thing:
{{{
if ( sumType == SUMTYPE_NET ) {
    for ( i = 0; i < count; i++) {
        netSum = netSum + amount[ i ];
    }
}
else {
    for ( i = 0; i < count; i++) {
        grossSum = grossSum + amount[ i ];
   }
}
}}}
He offers:
> A hazzard distinct to this case is that the two loops have to be maintained in parallel. 
and suggests //count// may be different in the two circumstances.

Well, here are a sequence of improvements focusing on what he overlooks in creating the example.
First, recognize the code is identical except for where it's ultimately stored, So:
{{{
if ( sumType == SUMTYPE_NET ) {

    netSum = sumAmount( count );
}
else {

    grossSum = sumAmount( count );
}
}}}
Presumably, the function //sumAmount// can be written to support the needed interface.

This looks like it's half-way home.   So, the penultimate step, having set up an indexed array to hold the results
{{{
 sum[(sumType == SUMTYPE_NET)? 0: 1]  = sumAmount( count);
}}}
This uses what's often called the ''bi-conditional'' operator, a subject not too difficult to have been included in this book. {{{ p ? a: b  }}} In english:  // if ''p'' is true, return ''a'', else return ''b''//
If //sumType// could be constructed to give a small array index, not overflowing the //sum// array, then nothing is simpler than:
{{{
 sum[ sumType ] = sumAmount( count );
}}}
Possibly this is too off the mark for McConnell, but if he's really serious, he'd point out concision and performance don't have to be at odds. He seems to leave that impression.
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<title>Reply</title>
	<link rel="stylesheet" href="//tiddlyspace.com/bags/benspa_public/tiddlers/bootvelcro.css">
	<style>
		html,
		body {
			overflow: hidden;
			background-color: transparent;
		}

		#container {
			/* prevent a fouc if no images present */
			display: none;
		}

		.modal-header {
			border-bottom: none;
			padding: 5px 0 0;
			position: absolute;
			width: 100%;
			background-color: #e0e0e0;
			-webkit-border-radius: 6px 6px 0 0;
			-moz-border-radius: 6px 6px 0 0;
			border-radius: 6px 6px 0 0;
			cursor: move;
		}

		.form-actions {
			position: absolute;
			bottom: 0;
			box-sizing: border-box;
			-moz-box-sizing: border-box;
			width: 100%;
			margin: 0;
			border-radius: 0 0 6px 6px;
			background-color: #e0e0e0;
			border-top: 1px solid gray;
		}

		.form-actions input.btn {
			width: auto;
			float: right;
			margin: 0 0.2em;
		}

		.closeBtn {
			background-color: #DCE7F1 !important;
		}

		.primary {
			background-color: #09F !important;
		}

		h1 {
			margin-bottom: 9px;
			margin-top: 9px;
		}

		body {
			width: 100%;
			height: 100%;
			position: absolute;
		}

		.modal {
			margin: 10px;
			top: 0;
			left: 0;
			bottom: 0;
			width: 510px;
			position: absolute;
			box-shadow: #444 0px 0px 10px 2px;
			border-radius: 6px;
			background-color: white;
			border: 1px solid gray;
			background-color: #F0F4F8;
		}

		label em {
			cursor: pointer;
		}

		.modal-body {
			overflow: auto;
			position: absolute;
			top: 0;
			bottom: 0;
			left: 0;
			right: 0;
			margin: 65px 20px 67px;
			background-color: transparent;
		}

		.nav-tabs {
			padding-left: 1%;
			margin: 0;
			width: 99%;
			border-color: gray;
		}

		.nav-tabs > li {
			cursor: pointer;
		}

		.nav-tabs > li > a {
			line-height: 2.4em;
			font-weight: bold;
			font-size: 100%;
		}

		.nav-tabs > li.active > a{
			background-color: #F0F4F8;
			border-color: gray;
			border-bottom-color: #F0F4F8;
		}

		.active {
			display: block;
		}

		input,
		textarea,
		select,
		.uneditable-input {
			color: #606060;
		}

		.imagePicker {
			-moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
			-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
			box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
			border: 1px solid #CCC;
			height: 110px;
			overflow: auto;
			-webkit-border-radius: 3px;
			-moz-border-radius: 3px;
			border-radius: 3px;
			margin-left: 0;
		}

		.imagePicker img {
			margin: 5px;
			border: 2px solid transparent;
		}

		.imagePicker .current {
			border: 2px dotted #555;
		}

		label {
			font-weight: bold;
		}

		.form-actions label {
			float: left;
			margin-top: 0.75em;
		}

		fieldset input,
		fieldset textarea {
			width: 90%;
			border-color: gray;
		}

		@media all and (max-width: 550px) {
			.modal {
				width: 95%;
			}
		}

		#help {
			position: absolute;
			border: 0;
			right: 4px;
			top: 5px;
			text-indent: -9999px;
			color: transparent;
			height: 16px;
			width: 16px;
			background: none;
			background-image: url(/bags/common/tiddlers/help.png);
			background-repeat: no-repeat;
			background-color: white;
			z-index: 2;
			border-radius: 10px;
		}

		#help-info {
			padding: 0;
			border: 1px solid gray;
			width: 60%;
			height: 50px;
			color: #404040;
			background-color: white;
			position: absolute;
			top: 5px;
			right: 5px;
			z-index: 1;
			cursor: auto;
			border-radius: 5px;

		}

		#help-info p {
			padding: 10px 25px;
			margin-bottom: 0;
		}
	</style>
</head>
<body>
	<div id="container">
		<form action="#" class="modal">
			<div class="modal-header">
				<button id="help">help</button>
				<div id="help-info" style="display:none;"><p>
				Found something interesting? Write about it in your own space. <a href="//docs.tiddlyspace.com/Reply to this Tiddler" target="_blank">Find out more</a>
				</p></div>
				<ul class="nav nav-tabs" data-tabs="tabs">
					<li class="active" data-tab-name="post"><a href="#postForm">Reply</a></li>
				</ul>
			</div>


			<fieldset id="postForm" class="modal-body">
				<label>Title
					<input type="text" name="title">
				</label>
				<input type="hidden" name="url">
				<label>Post
					<textarea name="text" rows="8"></textarea>
				</label>
				<label>Tags
					<input type="text" name="tags" value="">
				</label>
			</fieldset>


			<div class="form-actions">
				<label class="checkbox">
					<input type="checkbox" name="private" val="private">
					keep private
				</label>
				<input type="submit" class="btn primary btn-large" value="Done">
				<input type="button" class="btn btn-large closeBtn" value="Cancel">
			</div>
		</form>
	</div>

	<script type="text/javascript"
            src="/bags/common/tiddlers/jquery.js"></script>
	<script type="text/javascript" src="/bags/tiddlyspace/tiddlers/chrjs"></script>
	<script type="text/javascript" src="/bags/common/tiddlers/_reply.js"></script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
	<title>Account</title>
	<link href="/bags/common/tiddlers/profile.css" type='text/css' rel='stylesheet' >
	<link href="/bags/common/tiddlers/admin.css" type='text/css' rel='stylesheet' >
	<link href="/bags/common/tiddlers/jquery-ui.custom.css" type='text/css' rel='stylesheet' >
</head>
<body>

<div id="container">
	<div class="main section">
		<a class="app" href="/">home</a>
		<div class="left">
		<div id="siteiconArea">
		<h2>User Icon</h2>
		<div>
			<img id="siteicon" class="siteicon">
			<form id="upload" method="POST" enctype="multipart/form-data">
				<input type="hidden" name="title" value="SiteIcon" />
				<input type="hidden" name="tags" value="excludeLists">
				<input type="hidden" name="csrf_token" class="csrf" />
				<input type="file" name="file" accept="image/*" />
				<input type="submit" value="upload" />
			</form>
			<div id="dropzone">Drop file here
				<img class="notloading" src="/bags/common/tiddlers/ajax-loader.gif" alt="submitting SiteIcon" />
			</div>
		</div>
		</div>
		<h2>Find Space</h2>
		<form class="spaceSearch">
			<input class="inputBox" type="text" placeholder="find space" />
			<a href="http://docs.tiddlyspace.com/What%20is%20a%20Space%3F" class="help"
				title="What is a space?">What is a space?</a>
			<button>view all</button>
		</form>
		<div class='list-container'>
			You are a member of the following spaces:
			<ul class='ts-space-search'>
			</ul>
		</div>
		<h2>Create New Space</h2>
		<form class="ts-spaces">
			<input class="inputBox" type="text" name="spacename" placeholder="space name"><span class="hostSuffix">.tiddlyspace.com</span>
			<input type="submit" value="Create Space" />
		</form>
		</div>
		<div class="right">
		<h2>Change Password</h2>
		<form class="ts-password">
			<input class="inputBox" placeholder="existing password" type="password" name="password">
			<input class="inputBox" placeholder="new password" type="password" name="new_password">
			<input class="inputBox" placeholder="new password"	type="password" name="new_password_confirm">
			<input type="submit" value="Change password">
		</form>
		<h2>OpenID</h2>
		<h3>Why OpenID?</h3>
		<a href="http://openid.net/"><img src="/bags/common/tiddlers/openid.png" alt="openid" ></a><br />
		Use just one username and password across hundreds of OpenID-enabled sites.<br />
		It's an open standard.<br />
		<a href="http://openid.net/what/">learn more</a>
		<ul class="ts-identities"></ul>
		<form class="ts-openid" target="_top">
			<div>
				Add an openid:
			</div>
			<input class="inputBox" type="text" name="openid" placeholder="your openid" />
			<input type="submit" value="Register" />
			<a href="http://openid.net/get-an-openid/" class="help"
			title="What is an open id?">What is an open id?</a>
		</form>
		</div>
		<div class="clear"></div>
	</div>
</div>
<script src="/bags/common/tiddlers/backstage.js"></script>
<script src='/bags/common/tiddlers/jquery.js'></script>
<script src='/bags/tiddlyspace/tiddlers/chrjs'></script>
<script src='/bags/common/tiddlers/chrjs.space'></script>
<script src='/bags/common/tiddlers/chrjs.users'></script>
<script src='/bags/common/tiddlers/chrjs.identities'></script>
<script src="/bags/common/tiddlers/jquery-ui.custom.js"></script>
<script src='/bags/common/tiddlers/jquery-form.js'></script>
<script src="/bags/common/tiddlers/siteiconupload.js"></script>
<script src='/bags/common/tiddlers/ts.js'></script>
<script src="/status.js"></script>
<script type="text/javascript">
/*
 * jQuery UI Autocomplete HTML Extension
 *
 * Copyright 2010, Scott González (http://scottgonzalez.com)
 * Dual licensed under the MIT or GPL Version 2 licenses.
 *
 * http://github.com/scottgonzalez/jquery-ui-extensions
 */
(function( $ ) {

var proto = $.ui.autocomplete.prototype,
	initSource = proto._initSource;

function filter( array, term ) {
	var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
	return $.grep( array, function(value) {
		return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );
	});
}

$.extend( proto, {
	_initSource: function() {
		if ( this.options.html && $.isArray(this.options.source) ) {
			this.source = function( request, response ) {
				response( filter( this.options.source, request.term ) );
			};
		} else {
			initSource.call( this );
		}
	},

	_renderItem: function( ul, item) {
		return $( "<li></li>" )
			.data( "item.autocomplete", item )
			.append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) )
			.appendTo( ul );
	}
});

})( jQuery );

/***
_accounts application specific javascript
***/
var link;
ts.init(function(ts) {
	if(ts.user.anon) { // redirect to homepage when user not logged in
		window.location = ts.getHost();
	} else if(ts.user.name === ts.currentSpace){
		initSiteIconUpload(ts.user.name);
	} else {
		link = $("<a />").attr("href", ts.getHost(ts.user.name) + "/_account").text("Change User Icon");
		$("#siteiconArea div").empty().append(link);
	}
	$(".hostSuffix").text("." + ts.getHost("").split("//")[1]);
	ts.getSpaces(function(spaces) {
		$("<div class='info' />").text("You have " + spaces.length + " spaces.").insertBefore($(".spaceSearch")[0]);
		$("form.spaceSearch input").autocomplete({
			html: true,
			source: function(req, response) {
				ts.getSpaces(function(spaces) {
					var selected = [];
					for(var i = 0; i < spaces.length; i++) {
						var space = spaces[i];
						if(space.name.indexOf(req.term) > -1) {
							var host = ts.getHost(space.name) ;
							var img = host + "/SiteIcon";
							selected.push({
								value: space.name,
								label: '<a href="' + host + '" target="_parent" class="autocompleteLink"><img src="' + img + '" style="height:24px;width:auto;max-height:24px;max-width:24px;"/>' + space.name + '</a>'
							});
						}
					}
					response(selected);
				});
			},
			select: function(event, ui) {
				window.top.location = ts.getHost(ui.item.value);
			}
		});

		var $ul = $('.ts-space-search');
		$.each(spaces, function(i, space) {
			$ul.append($('<li/>').html($('<a/>').attr('href', space.uri)
				.text(space.name)));
		});

		$('form.spaceSearch button').click(function(ev) {
			$('.list-container').slideToggle('fast');
			ev.preventDefault();
			return false;
		});
	});
});

if(window != window.top) {
	$("html").addClass("iframeMode");
	$("a").live("click",function(ev) {
		$(ev.target).attr("target", "_parent");
	});
}
</script>
<!--[if lt IE 8]>
<script type="text/javascript" src="/bags/common/tiddlers/json2.js"></script>
<![endif]-->
</body>
</html>
These view thingsAboutM4 serve as bookmarks for the time being:
*[[underscore m4 README|http://mcgowans.org/m4site/M4_Readme.html]]
!Upload an icon
<<tiddler spaceIcon>>
!Describe your space
If you haven't already done so, you should provide a brief decscription of yourself and what you're using this space for. To do this, just edit the [[SiteInfo]] tiddler (keeping the title the same of course).

!Change the title
<<tiddler spaceTitle>>
!Change the theme
<<tiddler colorScheme>>
!Change the menu
If you'd like to change the menu items along the top, you can edit the [[MainMenu]] tiddler.

!Change the default tiddlers
<<tiddler setDefaultTiddlers>>
!More Advanced customisations
If you know HTML and CSS, you can edit some or all of the following tiddlers to customise your space further:
* PageTemplate
* EditTemplate
* ViewTemplate
* StyleSheet
<<tiddler McConnell>>[[,|mcconnell]]
[ [[top|http://softwarereview.tiddlyspace.com]] ] [ [[Reviewing "Code Complete", 2nd Ed.|ReviewingCodeComplete]] ]
Here is the [[book's Home Page|http://www.cc2e.com/]]
And my review:
*CodeCompleteGeneral
*CodeCompleteCh14
*CodeCompleteCh26
/***
|''Name''|TiddlySpaceConfig|
|''Version''|0.7.7|
|''Description''|TiddlySpace configuration|
|''Status''|stable|
|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceConfig.js|
|''CoreVersion''|2.6.1|
|''Requires''|TiddlyWebConfig ServerSideSavingPlugin TiddlyFileImporter|
!Code
***/
//{{{
(function($) {

var tweb = config.extensions.tiddlyweb;

var recipe = config.defaultCustomFields["server.workspace"].split("recipes/")[1];
var currentSpace; // assigned later

var disabledTabs = [];

var coreBags = ["system", "tiddlyspace"];
var systemSpaces = ["plugins", "info", "images", "theme"];
systemSpaces = $.map(systemSpaces, function(item, i) {
	return "system-%0_public".format(item);
});

// hijack search macro to add custom attributes for mobile devices
var _search = config.macros.search.handler;
config.macros.search.handler = function(place, macroName, params) {
	_search.apply(this, arguments);
	$(".searchField:input", place).
		attr({ autocapitalize: "off", autocorrect: "off" });
};

// arg is either a container name or a tiddler object
// if fuzzy is truthy, space may be inferred from workspace (for new tiddlers)
// returns space object or false
var determineSpace = function(arg, fuzzy) {
	if(typeof arg == "string") { // container name
		var space = split(arg, "_", "r");
		return ["public", "private"].contains(space.type) ? space : false;
	} else if(arg) { // tiddler
		var container = determineContainer(arg, fuzzy);
		return container ? determineSpace(container.name, fuzzy) : false;
	} else {
		return false;
	}
};

// if fuzzy is truthy, container may be inferred from workspace for new tiddlers
// returns container object or false
var determineContainer = function(tiddler, fuzzy) { // TODO: expose?
	var bag = tiddler.fields["server.bag"];
	var recipe = tiddler.fields["server.recipe"]; // XXX: unused/irrelevant/redundant!?
	if(bag) {
		return { type: "bag", name: bag };
	} else if(recipe) {
		return { type: "recipe", name: recipe };
	} else if(fuzzy) { // new tiddler
		var workspace = tiddler.fields["server.workspace"];
		if(workspace) {
			var container = split(workspace, "/", "l");
			return ["bags", "recipes"].contains(container.type) ? container : false;
		} else {
			return false;
		}
	} else {
		return false;
	}
};

// hijack removeTiddlerCallback to restore tiddler from recipe cascade -- TODO: move into TiddlyWebWiki?
var sssp = config.extensions.ServerSideSavingPlugin;
var _removeTiddlerCallback = sssp.removeTiddlerCallback;
sssp.removeTiddlerCallback = function(context, userParams) {
	var title = context.tiddler.title;
	var recipe = context.tiddler.fields["server.recipe"];
	_removeTiddlerCallback.apply(this, arguments);
	if(recipe) {
		context.workspace = "recipes/" + recipe;
		var callback = function(context, userParams) {
			if(context.status) {
				var dirty = store.isDirty();
				store.saveTiddler(context.tiddler).clearChangeCount();
				store.setDirty(dirty);
			} else {
				store.notify(title, true);
			}
		};
		context.adaptor.getTiddler(title, context, null, callback);
	}
};

// splits a string once using delimiter
// mode "l" splits at the first, "r" at the last occurrence
// returns an object with members type and name
var split = function(str, sep, mode) {
	mode = mode == "r" ? "pop" : "shift"; // TODO: use +/-1 instead of "l"/"r"?
	var arr = str.split(sep);
	var type = arr.length > 1 ? arr[mode]() : null;
	return { type: type, name: arr.join(sep) };
};

var plugin = config.extensions.tiddlyspace = {
	currentSpace: determineSpace(recipe),
	coreBags: coreBags.concat(systemSpaces),

	determineSpace: determineSpace,
	isValidSpaceName: function(name) {
		return name.match(/^[a-z][0-9a-z\-]*[0-9a-z]$/) ? true : false;
	},
	getCurrentBag: function(type) {
		return "%0_%1".format(currentSpace, type);
	},
	getCurrentWorkspace: function(type) {
		return "bags/" + this.getCurrentBag(type);
	},
	// returns the URL for a space's avatar (SiteIcon) based on a server_host
	// object and an optional space name
	// optional nocors argument prevents cross-domain URLs from being generated
	getAvatar: function(host, space, nocors) {
		if(space && typeof space != "string") { // backwards compatibility -- XXX: deprecated
			space = space.name;
		}
		var subdomain = nocors ? currentSpace : space;
		host = host ? this.getHost(host, subdomain) : "";
		var bag = space ? "%0_public".format(space) : "tiddlyspace";
		return "%0/bags/%1/tiddlers/SiteIcon".format(host, bag);
	},
	// returns the URL based on a server_host object (scheme, host, port) and an
	// optional subdomain
	getHost: function(host, subdomain) {
		if(host === undefined) { // offline
			tweb.status.server_host = {}; // prevents exceptions further down the stack -- XXX: hacky workaround, breaks encapsulation
			return null;
		}
		subdomain = subdomain ? subdomain + "." : "";
		var url = "%0://%1%2".format(host.scheme, subdomain, host.host);
		var port = host.port;
		if(port && !["80", "443"].contains(port)) {
			url += ":" + port;
		}
		return url;
	},
	disableTab: function(tabTiddler) {
		if(typeof(tabTiddler) == "string") {
			disabledTabs.push(tabTiddler);
		} else {
			for(var i = 0; i < tabTiddler.length; i++) {
				plugin.disableTab(tabTiddler[i]);
			}
		}
	},
    checkSyncStatus: function(tiddler) {
		if(tiddler) {
			var title = typeof(tiddler) === "string" ? tiddler : tiddler.title;
			var el = story.getTiddler(title) || false;
			if(el) {
				refreshElements(el);
			}
		}
	},
	isDisabledTab: function(tabTitle) {
		var match = new RegExp("(?:\\[\\[([^\\]]+)\\]\\])", "mg").exec(tabTitle);
		var tabIdentifier = match ? match[1] : tabTitle;
		return disabledTabs.contains(tabIdentifier);
	},
	getCSRFToken: window.getCSRFToken || null // this may not have been processed yet
};

currentSpace = plugin.currentSpace.name;

tweb.serverPrefix = tweb.host.split("/")[3] || ""; // XXX: assumes root handler
tweb.getStatus(function(status) {
	var url = plugin.getHost(status.server_host);
	tweb.status.server_host.url = url;
	config.messages.tsVersion = status.version;
});

if(window.location.protocol == "file:") {
	// enable AutoSave by default
	config.options.chkAutoSave = config.options.chkAutoSave === undefined ?
		true : config.options.chkAutoSave;
} else {
	// set global read-only mode based on membership heuristics
	var indicator = store.getTiddler("SiteTitle") || tiddler;
	readOnly = !(recipe.split("_").pop() == "private" ||
		tweb.hasPermission("write", indicator));
	// replace TiddlyWiki's ImportTiddlers due to cross-domain restrictions
	if(config.macros.fileImport) {
		$.extend(config.macros.importTiddlers, config.macros.fileImport);
	}
}

// hijack saveChanges to ensure SystemSettings is private by default
var _saveChanges = saveChanges;
saveChanges = function(onlyIfDirty, tiddlers) {
	if(tiddlers && tiddlers.length == 1 &&
			tiddlers[0] && tiddlers[0].title == "SystemSettings") {
		var fields = tiddlers[0].fields;
		delete fields["server.recipe"];
		fields["server.bag"] = plugin.getCurrentBag("private");
		fields["server.workspace"] = plugin.getCurrentWorkspace("private");
	}
	return _saveChanges.apply(this, arguments);
};

// ensure backstage is always initialized
// required to circumvent TiddlyWiki's read-only based handling
config.macros.backstageInit = {
	init: function() {
		showBackstage = true;
	}
};

// disable evaluated macro parameters for security reasons
config.evaluateMacroParameters = "none";
var _parseParams = String.prototype.parseParams;
String.prototype.parseParams = function(defaultName, defaultValue, allowEval,
		noNames, cascadeDefaults) {
	if(config.evaluateMacroParameters == "none") {
		arguments[2] = false;
	}
	return _parseParams.apply(this, arguments);
};

var _tabsMacro = config.macros.tabs.handler;
config.macros.tabs.handler = function(place, macroName, params) {
	var newParams = [params[0]]; // keep cookie name
	for(var i = 1; i < params.length; i += 3) {
		var tabTitle = params[i + 2];
		if(!plugin.isDisabledTab(tabTitle)){
			newParams = newParams.concat(params[i], params[i + 1], tabTitle);
		}
	}
	_tabsMacro.apply(this, [place, macroName, newParams]);
};

// disable ControlView for XHRs by default
$.ajaxSetup({
	beforeSend: function(xhr) {
		xhr.setRequestHeader("X-ControlView", "false");
	}
});
// TiddlyWeb adaptor currently still uses httpReq, which needs extra magic -- XXX: obsolete this!
var _httpReq = httpReq;
httpReq = function(type, url, callback, params, headers, data, contentType,
		username, password, allowCache) {
	headers = headers || {};
	headers["X-ControlView"] = "false";
	_httpReq.apply(this, arguments);
};

// register style sheet for backstage separately (important)
store.addNotification("StyleSheetBackstage", refreshStyles);

// option for default privacy setting
config.optionsDesc.chkPrivateMode = "Set your default privacy mode to private";
config.optionsSource.chkPrivateMode = "setting";
config.options.chkPrivateMode = config.options.chkPrivateMode || false;
saveSystemSetting("chkPrivateMode", true);
config.defaultCustomFields["server.workspace"] = plugin.
	getCurrentWorkspace(config.options.chkPrivateMode ? "private" : "public");

config.paramifiers.follow = {
	onstart: function(v) {
		if(!readOnly) {
			var bag = "%0_public".format(currentSpace);
			story.displayTiddler(null, v, DEFAULT_EDIT_TEMPLATE, null, null,
				"server.bag:%0 server.workspace:bags/%0".format(bag));
			story.setTiddlerTag(v, "follow", 1);
			story.focusTiddler(v, "text");
		}
	}
};

var fImport = config.macros.fileImport;
if(fImport) {
	fImport.uploadTo = "Upload to: ";
	var _createForm = config.macros.fileImport.createForm;
	config.macros.fileImport.createForm = function(place, wizard, iframeName) {
		var container = $("<div />").text(fImport.uploadTo).appendTo(place);
		var select = $('<select name="mode" />').appendTo(container)[0];
		$('<option value="private" selected>private</a>').appendTo(select);
		$('<option value="public">public</a>').appendTo(select);
		wizard.setValue("importmode", select);
		_createForm.apply(this, [place, wizard, iframeName]);
	};

	var _onGet = config.macros.importTiddlers.onGetTiddler;
	config.macros.importTiddlers.onGetTiddler = function(context, wizard) {
		var type = $(wizard.getValue("importmode")).val();
		var ws =  plugin.getCurrentWorkspace(type);
		wizard.setValue("workspace", ws);
		_onGet.apply(this, [context, wizard]);
	};
}

config.extensions.ServerSideSavingPlugin.reportSuccess = function(msg, tiddler) {
	plugin.checkSyncStatus(tiddler);
	msg = config.extensions.ServerSideSavingPlugin.locale[msg];
	var link = "/" + encodeURIComponent(tiddler.title);
	displayMessage(msg.format([tiddler.title]), link);
};


})(jQuery);
//}}}
/***
|''Name''|TiddlyWebAdaptor|
|''Description''|adaptor for interacting with TiddlyWeb|
|''Author:''|FND|
|''Contributors''|Chris Dent, Martin Budden|
|''Version''|1.4.10|
|''Status''|stable|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/adaptors/TiddlyWebAdaptor.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''CoreVersion''|2.5|
|''Keywords''|serverSide TiddlyWeb|
!Notes
This plugin includes [[jQuery JSON|http://code.google.com/p/jquery-json/]].
!To Do
* createWorkspace
* document custom/optional context attributes (e.g. filters, query, revision) and tiddler fields (e.g. server.title, origin)
!Code
***/
//{{{
(function($) {

var adaptor = config.adaptors.tiddlyweb = function() {};

adaptor.prototype = new AdaptorBase();
adaptor.serverType = "tiddlyweb";
adaptor.serverLabel = "TiddlyWeb";
adaptor.mimeType = "application/json";

adaptor.parsingErrorMessage = "Error parsing result from server";
adaptor.noBagErrorMessage = "no bag specified for tiddler";
adaptor.locationIDErrorMessage = "no bag or recipe specified for tiddler"; // TODO: rename

// retrieve current status (requires TiddlyWeb status plugin)
adaptor.prototype.getStatus = function(context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	var uriTemplate = "%0/status";
	var uri = uriTemplate.format([context.host]);
	var req = httpReq("GET", uri, adaptor.getStatusCallback, context,
		null, null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getStatusCallback = function(status, context, responseText, uri, xhr) {
	context.status = responseText ? status : false;
	try {
		context.statusText = xhr.statusText;
	} catch(exc) { // offline (Firefox)
		context.status = false;
		context.statusText = null;
	}
	context.httpStatus = xhr.status;
	if(context.status) {
		context.serverStatus = $.evalJSON(responseText); // XXX: error handling!?
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// retrieve a list of workspaces
adaptor.prototype.getWorkspaceList = function(context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.workspaces = [];
	var uriTemplate = "%0/recipes"; // XXX: bags?
	var uri = uriTemplate.format([context.host]);
	var req = httpReq("GET", uri, adaptor.getWorkspaceListCallback,
		context, { accept: adaptor.mimeType }, null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getWorkspaceListCallback = function(status, context, responseText, uri, xhr) {
	context.status = status;
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(status) {
		try {
			var workspaces = $.evalJSON(responseText);
		} catch(ex) {
			context.status = false; // XXX: correct?
			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
			if(context.callback) {
				context.callback(context, context.userParams);
			}
			return;
		}
		context.workspaces = workspaces.map(function(itm) { return { title: itm }; });
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// retrieve a list of tiddlers
adaptor.prototype.getTiddlerList = function(context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	var uriTemplate = "%0/%1/%2/tiddlers%3";
	var params = context.filters ? "?" + context.filters : "";
	if(context.format) {
		params = context.format + params;
	}
	var workspace = adaptor.resolveWorkspace(context.workspace);
	var uri = uriTemplate.format([context.host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name), params]);
	var req = httpReq("GET", uri, adaptor.getTiddlerListCallback,
		context, merge({ accept: adaptor.mimeType }, context.headers), null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getTiddlerListCallback = function(status, context, responseText, uri, xhr) {
	context.status = status;
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(status) {
		context.tiddlers = [];
		try {
			var tiddlers = $.evalJSON(responseText); //# NB: not actual tiddler instances
		} catch(ex) {
			context.status = false; // XXX: correct?
			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
			if(context.callback) {
				context.callback(context, context.userParams);
			}
			return;
		}
		for(var i = 0; i < tiddlers.length; i++) {
			var tiddler = adaptor.toTiddler(tiddlers[i], context.host);
			context.tiddlers.push(tiddler);
		}
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// perform global search
adaptor.prototype.getSearchResults = function(context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	var uriTemplate = "%0/search?q=%1%2";
	var filterString = context.filters ? ";" + context.filters : "";
	var uri = uriTemplate.format([context.host, context.query, filterString]); // XXX: parameters need escaping?
	var req = httpReq("GET", uri, adaptor.getSearchResultsCallback,
		context, { accept: adaptor.mimeType }, null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getSearchResultsCallback = function(status, context, responseText, uri, xhr) {
	adaptor.getTiddlerListCallback(status, context, responseText, uri, xhr); // XXX: use apply?
};

// retrieve a particular tiddler's revisions
adaptor.prototype.getTiddlerRevisionList = function(title, limit, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions";
	var workspace = adaptor.resolveWorkspace(context.workspace);
	var uri = uriTemplate.format([context.host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name), adaptor.normalizeTitle(title)]);
	var req = httpReq("GET", uri, adaptor.getTiddlerRevisionListCallback,
		context, merge({ accept: adaptor.mimeType }, context.headers), null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getTiddlerRevisionListCallback = function(status, context, responseText, uri, xhr) {
	context.status = status;
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(status) {
		context.revisions = [];
		try {
			var tiddlers = $.evalJSON(responseText); //# NB: not actual tiddler instances
		} catch(ex) {
			context.status = false; // XXX: correct?
			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
			if(context.callback) {
				context.callback(context, context.userParams);
			}
			return;
		}
		for(var i = 0; i < tiddlers.length; i++) {
			var tiddler = adaptor.toTiddler(tiddlers[i], context.host);
			context.revisions.push(tiddler);
		}
		var sortField = "server.page.revision";
		context.revisions.sort(function(a, b) {
			return a.fields[sortField] < b.fields[sortField] ? 1 :
				(a.fields[sortField] == b.fields[sortField] ? 0 : -1);
		});
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// retrieve an individual tiddler revision -- XXX: breaks with standard arguments list -- XXX: convenience function; simply use getTiddler?
adaptor.prototype.getTiddlerRevision = function(title, revision, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.revision = revision;
	return this.getTiddler(title, context, userParams, callback);
};

// retrieve an individual tiddler
//# context is an object with members host and workspace
//# callback is passed the new context and userParams
adaptor.prototype.getTiddler = function(title, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.title = title;
	if(context.revision) {
		var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions/%4";
	} else {
		uriTemplate = "%0/%1/%2/tiddlers/%3";
	}
	if(!context.tiddler) {
		context.tiddler = new Tiddler(title);
	}
	context.tiddler.fields["server.type"] = adaptor.serverType;
	context.tiddler.fields["server.host"] = AdaptorBase.minHostName(context.host);
	context.tiddler.fields["server.workspace"] = context.workspace;
	var workspace = adaptor.resolveWorkspace(context.workspace);
	var uri = uriTemplate.format([context.host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name), adaptor.normalizeTitle(title),
		context.revision]);
	var req = httpReq("GET", uri, adaptor.getTiddlerCallback, context,
		merge({ accept: adaptor.mimeType }, context.headers), null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getTiddlerCallback = function(status, context, responseText, uri, xhr) {
	context.status = status;
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(status) {
		try {
			var tid = $.evalJSON(responseText);
		} catch(ex) {
			context.status = false;
			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
			if(context.callback) {
				context.callback(context, context.userParams);
			}
			return;
		}
		var tiddler = adaptor.toTiddler(tid, context.host);
		tiddler.title = context.tiddler.title;
		tiddler.fields["server.etag"] = xhr.getResponseHeader("Etag");
		// normally we'd assign context.tiddler = tiddler here - but we can't do
		// that because of IE, which triggers getTiddler in putTiddlerCallback,
		// and since ServerSideSavingPlugin foolishly relies on persistent
		// object references, we need to merge the data into the existing object
		$.extend(context.tiddler, tiddler);
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// retrieve tiddler chronicle (all revisions)
adaptor.prototype.getTiddlerChronicle = function(title, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.title = title;
	var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions?fat=1";
	var workspace = adaptor.resolveWorkspace(context.workspace);
	var uri = uriTemplate.format([context.host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name), adaptor.normalizeTitle(title)]);
	var req = httpReq("GET", uri, adaptor.getTiddlerChronicleCallback,
		context, { accept: adaptor.mimeType }, null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getTiddlerChronicleCallback = function(status, context, responseText, uri, xhr) {
	context.status = status;
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(status) {
		context.responseText = responseText;
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// store an individual tiddler
adaptor.prototype.putTiddler = function(tiddler, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.title = tiddler.title;
	context.tiddler = tiddler;
	context.host = context.host || this.fullHostName(tiddler.fields["server.host"]);
	var uriTemplate = "%0/%1/%2/tiddlers/%3";
	try {
		context.workspace = context.workspace || tiddler.fields["server.workspace"];
		var workspace = adaptor.resolveWorkspace(context.workspace);
	} catch(ex) {
		return adaptor.locationIDErrorMessage;
	}
	var uri = uriTemplate.format([context.host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name),
		adaptor.normalizeTitle(tiddler.title)]);
	var etag = adaptor.generateETag(workspace, tiddler);
	var headers = etag ? { "If-Match": etag } : null;
	var payload = {
		type: tiddler.fields["server.content-type"] || null,
		text: tiddler.text,
		tags: tiddler.tags,
		fields: $.extend({}, tiddler.fields)
	};
	delete payload.fields.changecount;
	$.each(payload.fields, function(key, value) {
		if(key.indexOf("server.") == 0) {
			delete payload.fields[key];
		}
	});
	payload = $.toJSON(payload);
	var req = httpReq("PUT", uri, adaptor.putTiddlerCallback,
		context, headers, payload, adaptor.mimeType, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.putTiddlerCallback = function(status, context, responseText, uri, xhr) {
	context.status = [204, 1223].contains(xhr.status);
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(context.status) {
		var loc = xhr.getResponseHeader("Location");
		var etag = xhr.getResponseHeader("Etag");
		if(loc && etag) {
			var bag = loc.split("/bags/").pop().split("/")[0];
			context.tiddler.fields["server.bag"] = bag;
			context.tiddler.fields["server.workspace"] = "bags/" + bag;
			var rev = etag.split("/").pop().split(/;|:/)[0];
			context.tiddler.fields["server.page.revision"] = rev;
			context.tiddler.fields["server.etag"] = etag;
			if(context.callback) {
				context.callback(context, context.userParams);
			}
		} else { // IE
			context.adaptor.getTiddler(context.tiddler.title, context,
				context.userParams, context.callback);
		}
	} else if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// store a tiddler chronicle
adaptor.prototype.putTiddlerChronicle = function(revisions, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.title = revisions[0].title;
	var headers = null;
	var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions";
	var host = context.host || this.fullHostName(tiddler.fields["server.host"]);
	var workspace = adaptor.resolveWorkspace(context.workspace);
	var uri = uriTemplate.format([host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name),
		adaptor.normalizeTitle(context.title)]);
	if(workspace.type == "bag") { // generate ETag
		var etag = [adaptor.normalizeTitle(workspace.name),
			adaptor.normalizeTitle(context.title), 0].join("/"); //# zero-revision prevents overwriting existing contents
		headers = { "If-Match": '"' + etag + '"' };
	}
	var payload = $.toJSON(revisions);
	var req = httpReq("POST", uri, adaptor.putTiddlerChronicleCallback,
		context, headers, payload, adaptor.mimeType, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.putTiddlerChronicleCallback = function(status, context, responseText, uri, xhr) {
	context.status = [204, 1223].contains(xhr.status);
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// store a collection of tiddlers (import TiddlyWiki HTML store)
adaptor.prototype.putTiddlerStore = function(store, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	var uriTemplate = "%0/%1/%2/tiddlers";
	var host = context.host;
	var workspace = adaptor.resolveWorkspace(context.workspace);
	var uri = uriTemplate.format([host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name)]);
	var req = httpReq("POST", uri, adaptor.putTiddlerStoreCallback,
		context, null, store, "text/x-tiddlywiki", null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.putTiddlerStoreCallback = function(status, context, responseText, uri, xhr) {
	context.status = [204, 1223].contains(xhr.status);
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// rename an individual tiddler or move it to a different workspace -- TODO: make {from|to}.title optional
//# from and to are objects with members title and workspace (bag; optional),
//# representing source and target tiddler, respectively
adaptor.prototype.moveTiddler = function(from, to, context, userParams, callback) { // XXX: rename parameters (old/new)?
	var self = this;
	var newTiddler = store.getTiddler(from.title) || store.getTiddler(to.title); //# local rename might already have occurred
	var oldTiddler = $.extend(true, {}, newTiddler); //# required for eventual deletion
	oldTiddler.title = from.title; //# required for original tiddler's ETag
	var _getTiddlerChronicle = function(title, context, userParams, callback) {
		return self.getTiddlerChronicle(title, context, userParams, callback);
	};
	var _putTiddlerChronicle = function(context, userParams) {
		if(!context.status) {
			return callback(context, userParams);
		}
		var revisions = $.evalJSON(context.responseText); // XXX: error handling?
		// change current title while retaining previous location
		for(var i = 0; i < revisions.length; i++) {
			delete revisions[i].revision;
			if(!revisions[i].fields.origin) { // NB: origin = "<workspace>/<title>"
				revisions[i].fields.origin = ["bags", revisions[i].bag, revisions[i].title].join("/");
			}
			revisions[i].title = to.title;
		}
		// add new revision
		var rev = $.extend({}, revisions[0]);
		$.each(newTiddler, function(i, item) {
			if(!$.isFunction(item)) {
				rev[i] = item;
			}
		});
		rev.title = to.title;
		rev.created = rev.created.convertToYYYYMMDDHHMM();
		rev.modified = new Date().convertToYYYYMMDDHHMM();
		delete rev.fields.changecount;
		revisions.unshift(rev);
		if(to.workspace) {
			context.workspace = to.workspace;
		} else if(context.workspace.substring(0, 4) != "bags") { // NB: target workspace must be a bag
			context.workspace = "bags/" + rev.bag;
		}
		var subCallback = function(context, userParams) {
			if(!context.status) {
				return callback(context, userParams);
			}
			context.adaptor.getTiddler(newTiddler.title, context, userParams, _deleteTiddler);
		};
		return self.putTiddlerChronicle(revisions, context, context.userParams, subCallback);
	};
	var _deleteTiddler = function(context, userParams) {
		if(!context.status) {
			return callback(context, userParams);
		}
		$.extend(true, newTiddler, context.tiddler);
		context.callback = null;
		return self.deleteTiddler(oldTiddler, context, context.userParams, callback);
	};
	callback = callback || function() {};
	context = this.setContext(context, userParams);
	context.host = context.host || oldTiddler.fields["server.host"];
	context.workspace = from.workspace || oldTiddler.fields["server.workspace"];
	return _getTiddlerChronicle(from.title, context, userParams, _putTiddlerChronicle);
};

// delete an individual tiddler
adaptor.prototype.deleteTiddler = function(tiddler, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.title = tiddler.title; // XXX: not required!?
	var uriTemplate = "%0/bags/%1/tiddlers/%2";
	var host = context.host || this.fullHostName(tiddler.fields["server.host"]);
	var bag = tiddler.fields["server.bag"];
	if(!bag) {
		return adaptor.noBagErrorMessage;
	}
	var uri = uriTemplate.format([host, adaptor.normalizeTitle(bag),
		adaptor.normalizeTitle(tiddler.title)]);
	var etag = adaptor.generateETag({ type: "bag", name: bag }, tiddler);
	var headers = etag ? { "If-Match": etag } : null;
	var req = httpReq("DELETE", uri, adaptor.deleteTiddlerCallback, context, headers,
		null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.deleteTiddlerCallback = function(status, context, responseText, uri, xhr) {
	context.status = [204, 1223].contains(xhr.status);
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// compare two revisions of a tiddler (requires TiddlyWeb differ plugin)
//# if context.rev1 is not specified, the latest revision will be used for comparison
//# if context.rev2 is not specified, the local revision will be sent for comparison
//# context.format is a string as determined by the TiddlyWeb differ plugin
adaptor.prototype.getTiddlerDiff = function(title, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.title = title;

	var tiddler = store.getTiddler(title);
	try {
		var workspace = adaptor.resolveWorkspace(tiddler.fields["server.workspace"]);
	} catch(ex) {
		return adaptor.locationIDErrorMessage;
	}
	var tiddlerRef = [workspace.type + "s", workspace.name, tiddler.title].join("/");

	var rev1 = context.rev1 ? [tiddlerRef, context.rev1].join("/") : tiddlerRef;
	var rev2 = context.rev2 ? [tiddlerRef, context.rev2].join("/") : null;

	var uriTemplate = "%0/diff?rev1=%1";
	if(rev2) {
		uriTemplate += "&rev2=%2";
	}
	if(context.format) {
		uriTemplate += "&format=%3";
	}
	var host = context.host || this.fullHostName(tiddler.fields["server.host"]);
	var uri = uriTemplate.format([host, adaptor.normalizeTitle(rev1),
		adaptor.normalizeTitle(rev2), context.format]);

	if(rev2) {
		var req = httpReq("GET", uri, adaptor.getTiddlerDiffCallback, context, null,
			null, null, null, null, true);
	} else {
		var payload = {
			title: tiddler.title,
			text: tiddler.text,
			modifier: tiddler.modifier,
			tags: tiddler.tags,
			fields: $.extend({}, tiddler.fields)
		}; // XXX: missing attributes!?
		payload = $.toJSON(payload);
		req = httpReq("POST", uri, adaptor.getTiddlerDiffCallback, context,
			null, payload, adaptor.mimeType, null, null, true);
	}
	return typeof req == "string" ? req : true;
};

adaptor.getTiddlerDiffCallback = function(status, context, responseText, uri, xhr) {
	context.status = status;
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	context.uri = uri;
	if(status) {
		context.diff = responseText;
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// generate tiddler information
adaptor.prototype.generateTiddlerInfo = function(tiddler) {
	var info = {};
	var uriTemplate = "%0/%1/%2/tiddlers/%3";
	var host = this.host || tiddler.fields["server.host"]; // XXX: this.host obsolete?
	host = this.fullHostName(host);
	var workspace = adaptor.resolveWorkspace(tiddler.fields["server.workspace"]);
	info.uri = uriTemplate.format([host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name),
		adaptor.normalizeTitle(tiddler.title)]);
	return info;
};

// create Tiddler instance from TiddlyWeb tiddler JSON
adaptor.toTiddler = function(json, host) {
	var created = Date.convertFromYYYYMMDDHHMM(json.created);
	var modified = Date.convertFromYYYYMMDDHHMM(json.modified);
	var fields = json.fields;
	fields["server.type"] = adaptor.serverType;
	fields["server.host"] = AdaptorBase.minHostName(host);
	fields["server.bag"] = json.bag;
	fields["server.title"] = json.title;
	if(json.recipe) {
		fields["server.recipe"] = json.recipe;
	}
	if(json.type && json.type != "None") {
		fields["server.content-type"] = json.type;
	}
	fields["server.permissions"] = json.permissions.join(", ");
	fields["server.page.revision"] = json.revision;
	fields["server.workspace"] = "bags/" + json.bag;
	var tiddler = new Tiddler(json.title);
	tiddler.assign(tiddler.title, json.text, json.modifier, modified, json.tags,
		created, json.fields, json.creator);
	return tiddler;
};

adaptor.resolveWorkspace = function(workspace) {
	var components = workspace.split("/");
	return {
		type: components[0] == "bags" ? "bag" : "recipe",
		name: components[1] || components[0]
	};
};

adaptor.generateETag = function(workspace, tiddler) {
	var revision = tiddler.fields["server.page.revision"];
	var etag = revision == "false" ? null : tiddler.fields["server.etag"];
	if(!etag && workspace.type == "bag") {
		if(typeof revision == "undefined") {
			revision = "0";
		} else if(revision == "false") {
			return null;
		}
		etag = [adaptor.normalizeTitle(workspace.name),
			adaptor.normalizeTitle(tiddler.title), revision].join("/");
		etag = '"' + etag + '"';
	}
	return etag;
};

adaptor.normalizeTitle = function(title) {
	return encodeURIComponent(title);
};

})(jQuery);


/*
 * jQuery JSON Plugin
 * version: 1.3
 * source: http://code.google.com/p/jquery-json/
 * license: MIT (http://www.opensource.org/licenses/mit-license.php)
 */
(function($){function toIntegersAtLease(n)
{return n<10?'0'+n:n;}
Date.prototype.toJSON=function(date)
{return this.getUTCFullYear()+'-'+
toIntegersAtLease(this.getUTCMonth())+'-'+
toIntegersAtLease(this.getUTCDate());};var escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};$.quoteString=function(string)
{if(escapeable.test(string))
{return'"'+string.replace(escapeable,function(a)
{var c=meta[a];if(typeof c==='string'){return c;}
c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
return'"'+string+'"';};$.toJSON=function(o,compact)
{var type=typeof(o);if(type=="undefined")
return"undefined";else if(type=="number"||type=="boolean")
return o+"";else if(o===null)
return"null";if(type=="string")
{return $.quoteString(o);}
if(type=="object"&&typeof o.toJSON=="function")
return o.toJSON(compact);if(type!="function"&&typeof(o.length)=="number")
{var ret=[];for(var i=0;i<o.length;i++){ret.push($.toJSON(o[i],compact));}
if(compact)
return"["+ret.join(",")+"]";else
return"["+ret.join(", ")+"]";}
if(type=="function"){throw new TypeError("Unable to convert object of type 'function' to json.");}
var ret=[];for(var k in o){var name;type=typeof(k);if(type=="number")
name='"'+k+'"';else if(type=="string")
name=$.quoteString(k);else
continue;var val=$.toJSON(o[k],compact);if(typeof(val)!="string"){continue;}
if(compact)
ret.push(name+":"+val);else
ret.push(name+": "+val);}
return"{"+ret.join(", ")+"}";};$.compactJSON=function(o)
{return $.toJSON(o,true);};$.evalJSON=function(src)
{return eval("("+src+")");};$.secureEvalJSON=function(src)
{var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
return eval("("+src+")");else
throw new SyntaxError("Error parsing JSON, source is not valid.");};})(jQuery);
//}}}
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
*[[Arts and Crafts of Tcl-Tk Programming|http://wiki.tcl.tk/969]]  -- like, but not exactly, a book!
!!list of Tcl subjects worth a search:
*[[argument expansion syntax|http://wiki.tcl.tk/9468]]
*[[apply|http://www.google.com/search?rls=en&q=tcl+apply]]
*[[expand|http://www.google.com/search?rls=en&q=tcl+expand]]
*[[{*} syntax|http://wiki.tcl.tk/17158]] -- useful, but ugly
/*{{{*/
.tiddler .originButton div {
	display: inline-block;
}

.tiddler .spaceSiteIcon .siteIcon {
	_display: inline; /* IE doesn't like inline-block */
}

.tiddler .originButton {
	display: block;
}

.selected .tagging,
.selected .tagging:hover {
	border: none;
	background: none;
}

.tagging {
	float: none;
	background: none;
	border: none;
}

.tagging li.listTitle {
	margin-left: 0px;
}
.tagging li {
	margin: 0 8px;
}

.tagging .tiddlyLink {
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
	-o-border-radius: 3px;
	border-radius: 3px;
	padding: 1px 2px;
	line-height: 1.2em;
}

/* for following */
#popup .siteIcon {
	float: left;
	height: 25px;
}

.content {
	width: 100%; /* IE */
	font-size: 0.9em;
}

.editorHeading {
	height: 48px;
}

.heading {
	left: 0;
	margin-bottom: 40px;
	position: relative;
	top: 32px;
}

.followButton a {
	display: block;
	margin-top: -20px;
}

.tiddler .followPlaceHolder {
	display: block;
	position: absolute;
	top: 16px;
	right: 64px;
	_right: 138px; // add width of modifierIcon
}

.tiddler .followButton {
	position: relative;
	height: 24px;
	text-align: left;
	color: #fff;
	background: [[ColorPalette::PrimaryMid]];
	padding: 10px 0px 0px 10px;
	width: 38px;
	margin: -16px -8px 24px 0;
}

/* creates the larger triangle */
.followButton:before {
	content: "\00a0";
	display: block; /* reduce the damage in FF3.0 */
	position: relative;
	bottom: -20px;
	right: 0;
	width: 0;
	height: 0;
	border-width: 0 0 20px 20px;
	border-style: solid;
	border-color: transparent [[ColorPalette::PrimaryMid]];
}

.toolbar svg {
	height: 16px;
	width: 16px;
}

.toolbar svg .glyph {
	fill: #ccc;
}

.toolbar a:hover .glyph {
	fill: black;
}

.toolbar a:active .glyph {
	fill: [[ColorPalette::Background]];
}

.originButton,
.followPlaceHolder,
.tiddler .subtitle {
	cursor: pointer;
}

.editSpaceSiteIcon .originButton {
	cursor: auto;
}

.tiddler .subtitle:hover {
	font-weight: bold;
	background: none;
}

.originButton img,
.originButton svg {
	margin-left: 0px;
}

.modifierIcon {
	position: absolute;
	width: 74px;
	top: 0px;
	right: 0px;
	_right: 74px; /* in IE6 positioning works incorrectly so use -width instead */
	text-align: right;
}

.modifierIcon img,
.modifierIcon svg {
	margin-right: 8px;
}

.tiddler .viewer {
	padding-bottom: 16px;
	margin: 0 0 0 56px;
	line-height: 1.4em;
}

.viewer pre {
	margin-left: 0;
}

.siteIcon .label {
	color: [[ColorPalette::TertiaryDark]];
}

.tiddler .spaceSiteIcon {
	float: left;
	margin-right: 0;
	margin-top: 0;
	position: relative;
	display: block;
}

.tiddler .titleBar {
	display: block;
	margin-right: 136px;
	margin-left: 56px;
}

.followButton a {
	color: [[ColorPalette::Background]];
}

.tiddler {
	position: relative;
	padding: 0;
	margin-bottom: 3em;
	border-top: 3px solid [[ColorPalette::PrimaryMid]];
	background: #fff;
}

.tiddler .editor {
	padding: 0px 8px;
}

.tiddler .heading .title {
	position: relative;
	display: block;
	word-wrap: break-word;
	font-size: 32px;
	line-height: 32px;
}
.tiddler .heading .editor.title {
	font-size: 1.7em;
	line-height: normal;
}

.tiddler .headingClear {
	clear: both;
}

.tiddler .subtitle {
	font-style: italic;
	font-size: 0.9em;
	color: #a6a59e;
	margin-top: 0;
}

.toolbar {
	position: absolute;
	padding: 0;
	top: 8px;
	right: -8px;
}

.toolbar .moreCommand.highlight {
	background: none;
}

.tiddler .toolbar .button {
	border: none;
	display: inline;
	padding: 0px;
	margin-right: 16px;
}

.tiddler .toolbar a:hover {
	background: none;
}

.tiddler .tagged .listTitle {
	display: none;
}

.revButton {
	float: right;
}

/*! EditTemplate specific*/
.tiddler .privacySettings {
	text-align: center;
}
.tiddler .privacySettings .originButton {
	display: inline;
}

.editSpaceSiteIcon, .privacyEdit {
	float: left;
}

.editSpaceSiteIcon svg,
.editSpaceSiteIcon img,
.editSpaceSiteIcon .roundelLabel {
	float: left;
}

.tagTitle {
	position: absolute;
	text-align: center;
	width: 48px;
	top: 0px;
	left: -56px;
}

.editSpaceSiteIcon .originButton img,
.editSpaceSiteIcon .originButton svg {
	height: 16px;
	margin-left: 24px;
	margin-right: 32px;
	width: 16px;
}

.tagAnnotation {
	margin-top: 8px;
	padding-bottom: 8px;
}
.annotationsBox {
	margin-top: 8px;
}

.editorFooter {
	position: relative;
	padding: 0;
	margin-top: 16px;
	margin-left: 64px;
}

.tiddler .editorFooter .editor {
	padding-left: 0px;
}

.heading .editor input {
	width: 100%;
	font-size: 1.5em;
}

.spaceSiteIcon .externalImage .image a:hover,
.modifierIcon .externalImage .image a:hover {
	background: none;
}

div.toolbar {
	visibility:hidden;
	right:-16px;
}

.selected div.toolbar {
	visibility: visible;
}

.followButton a:hover {
	background: [[ColorPalette::PrimaryMid]];
	text-decoration: underline;
}

a.image:hover {
	background: transparent;
}

@media all and (max-device-width: 480px) {
	div.toolbar {
		visibility:visible;
	}
}
@media only screen and (device-width: 768px) {
	div.toolbar {
		visibility:visible;
	}
}
@media all and (max-width: 960px) {
	.tiddler .titleBar {
		margin-left: 36px;
		margin-right: 80px;
	}

	.tiddler .heading {
		margin-bottom: 48px;
	}

	.tiddler .heading .title {
		font-size: 32px;
		line-height: 32px;
	}

	.tiddler .modifierIcon img,
	.tiddler .modifierIcon svg,
	.tiddler .spaceSiteIcon .originButton img,
	.originButton svg {
		width: 32px;
		height: 32px;
		margin-left: 0px;
		margin-right: 0px;
	}

	.tiddler .followPlaceHolder {
		right: 48px;
	}

	.tiddler .followButton {
		width: 24px;
	}

	.tiddler .viewer {
		margin: 0px 0px 0px 36px;
		padding-top: 0;
	}

	br {
		line-height: 0.5em;
	}
}
/*}}}*/
ColorPalette
StyleSheet
SiteSubtitle
GettingStarted
SiteTitle
MainMenu
SiteIcon
DefaultTiddlers
ViewTemplate
PageTemplate
SideBarOptions
EditTemplate
SiteInfo
SideBarTabs
ToolbarCommands
The title and subtitle of your space are visible to visitors and are also displayed in your browser's tabs. Click on the SiteTitle and SiteSubtitle tiddler links below to make changes.
* [[SiteTitle]]
* [[SiteSubtitle]]
better: <<tiddler ReplyHere with: txt2html_VS_markdown>>

The verdict is in.  In trial runs between [[txt2html_VS_markdown]], i've decided on [[markdown|http://daringfireball.net/projects/markdown/]].  The former [[txt2html|http://txt2html.sourceforge.net/]] is likely the more popular as it's ''sourceforge'' residence may attest.   And, searching yields at least two more variants hiding under the //txt2html// name.  More on that later.  What attributes were these two scored on?:
*convert a //natural// text file into an html page.  in this case //natural// means a text document laid out to be read as a text document, which leads to 
*no recognizable //markup//.  e.g.  
** those who recall ''troff'' will remember the //.xy// commands, or 
** in html, the target format, the plethora of //<tag> ... </tag>// syntax, or
** some other loosely disguised xML markings.
*no reliance on HTML, and
*when needed, the least obtrusive introduction of raw HTML.
The latter two requirements necessarily conflict.    Resolving local links, e.g.
{{{
    <a name="someLocalDefinition">Target Link Text
     ...
    <a href="./this_doc.html#someLocalDefinition">Link to Target Text</a>
}}}
which shouldn't be difficult, was easiest to resolve in ''markdown'', since it allowed HTML without intrusion.   It's only caveat is the the ampersand (&) and the less than bracket(<), are therefore reserved for their HTML usage, and necessarily encoded in your source text as //&amp;amp;// and //&amp;lt;//.   I didn't find this to be a problem.   //txt2html// offers a  ''link dictionary'' facility, which requires the user to understand //''reg''ular ''ex''pressions//.   This imposed a learning curve, which even a ''sed'' user, such as myself, found too high.   My solution in //txt2html// was to write my own ''sed'' post-processor, which required my breaking a rule of higher precedence.  In //markdown// the facility to create the local link is directly available.  It's drawback, is a slightly more visually bulky text document, i.e. surrendering it's natural text feeling.   But easily edited, and checked for accuracy before formatting.

Since the principal use of local document links is to enable section navigation, like a simple Table of Contents,  the editing requirements are not hard to contain.    The one rule I'd break then is to sacrifice a prinicpal, and write an ''awk'' pre-processor, using the //markdown// syntax itself, to tag the Table of Contents sections.   The idea of a TOC, by the way, runs counter to the whole notion of a text to HTML conversion, since the document should be small enough that a ToC is unnecessary.   In either contender, the reference to another document is simple enough.   In fact //txt2html// converts URI-appearing tags into links itself. 

!!Other txt2html formats
I found one which made extensive use of markup tags, even anticipating ''TeX''.  I find this appealing, but not for lightweight documents.   Another, had less of a markup flavor, and was implemented in Tcl, my personal scripting favorite, but didn't seem so natural as the two finalists.  

!!AWK pre-processor
is the ''pmkdn'' function in the //~/bin/markdownlib//, right now on [[my own server|file:///Users/applemcg/man/man1/contents.html]] maybe someday on [[github|http://github.com/applemcg]]
![[Smart file|SmartFile]]
A ''smart file'' is one whose name, rather then being assigned to a shell (or Environment) variable, has been assigned to a function.  It's defined as follows:
{{{
  $ smartF FunctionName  Path/to/File
}}}
where the ~FunctionName could be, say //~PathToFile//, using capitals to remind you where the breaks are in the actual name of the file.   
!!Properties
What properties does the smart file have?
*the function returns the name of the file
*with arguments, it executes the command, with the file as the last argument.  e.g.  {{{ PathToFile ls -l }}} executes the command {{{ ls -l Path/to/File }}}.
A challenge arises when the command may be too complex to use as as a single argument.   the easy solution is to write a function which may take other arguments, but accepts the file as the last argument.
!!Advantages
*on the command line, you are working with a name, ignoring slashes, therefore easier to type
*also on the command line, the filename (rather functionname) becomes the object of interest, and necessarily the first thing on the line, making history editing simpler.
*and in a shell file, where you once may have used //$FILENAME// in a shell variable, will use the only slightly busier code: //$(FILENAME)//, and will be challenged to start thinking less in terms of a name, and more in terms of a function.
!!Example  
Here's a code sample (bash, of course), where the function ''T'' is a shorthand for the file H:/.$(today), which, as you see, today is //H:/.20120621//
{{{
  509  fbdy smartF 
smartF () 
{ 
    eval " $1 () { \${*:-echo} $2; }"
}
  510  T grep -i smart 
smartF () 
smartF_init () 
    smartF T 'H:/.$(today)'
smartF_init

  511  ...

  512  fbdy T 
T () 
{ 
    ${*:-echo} H:/.$(today)
}
  513  T 
H:/.20120621
  514  T ls -l 
-rw-r--r-- 1 Marty.McGowan mkpasswd 4475 Jun 21 09:00 H:/.20120621
}}}
WhatsHere
LatestStuff
TableofContents

This is [[Steve McConnell|http://www.stevemcconnell.com/]], author of Code Complete, [[reviewed here|ReviewingCodeComplete]].
<!--{{{-->
<div macro='slideRevision'></div>
<div class='heading'>
	<span class="titleBar">
		<div class='title' macro='view title text'></div>
	</span>
	<span class='modifierIcon'
		macro='view modifier SiteIcon label:no height:48 width:48 preserveAspectRatio:yes'>
	</span>
	<div class='toolbar'
		macro='toolbar [[ToolbarCommands::RevisionToolbar]] icons:yes height:48 width:48 more:popup'>
	</div>
	<div class='tagClear'></div>
</div>
<div class='content'>
	<div class='viewer' macro='view text wikified'></div>
</div>
<div class='tagInfo'>
	<div class='tidTags' macro='tags'></div>
	<div class='tagging' macro='tagging'></div>
</div>
<!--}}}-->
Welcome to your brand new [[TiddlySpace]]@glossary.

To get started with this blank [[TiddlySpace]]@glossary, you'll need to modify the following [[tiddlers|Tiddler]]@glossary:
* If you don't like the color scheme click <<RandomColorPaletteButton>> to generate a new random color scheme.
* Upload a [[SiteIcon|SiteIcon tiddler]]@glossary. [[Your SiteIcon|SiteIcon]] gives your space an identity to make it recognisable to others. A good site icon will be square and at least 48*48 pixels size.
<<binaryUploadPublic title:SiteIcon>>
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the ~TiddlySpace is opened
* Many features of ~TiddlySpace are accessed via the backstage bar located at the top of the page. You can toggle it on or off using the button in the top right corner of the screen.
/***
|''Name''|TiddlySpacePublishingCommands|
|''Version''|0.8.5|
|''Status''|@@beta@@|
|''Description''|toolbar commands for drafting and publishing|
|''Author''|Jon Robson|
|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpacePublishingCommands.js|
|''CoreVersion''|2.6.1|
|''Requires''|TiddlySpaceConfig TiddlySpaceFilters|
!Usage
Provides changeToPrivate, changeToPublic and saveDraft commands
Provides TiddlySpacePublisher macro.
{{{<<TiddlySpacePublisher type:private>>}}} make lots of private tiddlers public.
{{{<<TiddlySpacePublisher type:public>>}}} make lots of public tiddlers public.
!TODO
* add public argument?
!Code
***/
//{{{
(function($) {

var tiddlyspace = config.extensions.tiddlyspace;
var originMacro = config.macros.tiddlerOrigin;

tiddlyspace.getTiddlerStatusType = function(tiddler) {
	var isShadow = store.isShadowTiddler(tiddler.title);
	var exists = store.tiddlerExists(tiddler.title);
	if(isShadow && !exists) {
		return "shadow";
	} else if(!exists) {
		return "missing";
	} else {
		var types = ["private", "public"];
		var type = "external";
		for(var i = 0; i < types.length; i++) {
			var t = types[i];
			type = config.filterHelpers.is[t](tiddler) ? t : type;
		}
		if(config.filterHelpers.is.unsynced(tiddler)) {
			type = type == "private" ? "unsyncedPrivate" : "unsyncedPublic";
		}
		return type;
	}
};

var cmd = config.commands.publishTiddler = {
	text: "make public",
	tooltip: "Change this private tiddler into a public tiddler",
	errorMsg: "Error publishing %0: %1",

	isEnabled: function(tiddler) {
		return !readOnly && config.filterHelpers.is["private"](tiddler);
	},
	handler: function(ev, src, title) {
		var tiddler = store.getTiddler(title);
		if(tiddler) {
			var newBag = cmd.toggleBag(tiddler.fields["server.bag"]);
			this.moveTiddler(tiddler, {
				title: tiddler.fields["publish.name"] || tiddler.title,
				fields: { "server.bag": newBag }
			});
		}
	},
	toggleBag: function(bag, to) {
		var newBag;
		if(typeof bag != typeof "") {
			var tiddler = bag;
			bag = tiddler.fields["server.bag"];
		}
		if(bag.indexOf("_private") > -1) { // should make use of endsWith
			to = to ? to : "public";
			newBag = bag.replace("_private", "_" + to);
		} else {
			to = to ? to : "private";
			newBag = bag.replace("_public", "_" + to);
		}
		return newBag;
	},
	copyTiddler: function(title, newTitle, newBag, callback) {
		var original = store.getTiddler(title);
		newTitle = newTitle ? newTitle : title;
		var adaptor = original.getAdaptor();
		var publish = function(original, callback) {
			var tiddler = $.extend(new Tiddler(newTitle), original);
			tiddler.fields = $.extend({}, original.fields, {
				"server.bag": newBag,
				"server.workspace": "bags/%0".format(newBag),
				"server.page.revision": "false"
			});
			delete tiddler.fields["server.title"];
			tiddler.title = newTitle;
			adaptor.putTiddler(tiddler, null, null, callback);
		};
		publish(original, callback);
	},
	moveTiddler: function(tiddler, newTiddler, callback) {
			var info = {
			copyContext: {},
			deleteContext: {}
		};
		var _dirty = store.isDirty();
		var adaptor = tiddler.getAdaptor();
		var newTitle = newTiddler.title;
		var oldTitle = tiddler.title;
		delete tiddler.fields["server.workspace"];
		var oldBag = tiddler.fields["server.bag"];
		var newBag = newTiddler.fields["server.bag"];
		var newWorkspace = "bags/%0".format(newBag);
		cmd.copyTiddler(oldTitle, newTitle, newBag, function(ctx) {
				info.copyContext = ctx;
				var context = {
					tiddler: tiddler,
					workspace: newWorkspace
				};
				store.addTiddler(ctx.tiddler);
				tiddler.title = oldTitle; // for cases where a rename occurs
				if(ctx.status) { // only do if a success
					if(oldBag != newBag) {
						adaptor.deleteTiddler(tiddler, context, {}, function(ctx) {
							info.deleteContext = ctx;
							var el;
							if(tiddler) {
								tiddler.fields["server.workspace"] = newWorkspace;
								tiddler.fields["server.bag"] = newBag;
							}
							el = el ? el : story.refreshTiddler(oldTitle, null, true);
							if(oldTitle != newTitle) {
								store.deleteTiddler(oldTitle);
								store.notify(oldTitle, true);
							}
							if(el) {
								story.displayTiddler(el, newTitle);
							}
							if(oldTitle != newTitle) {
								story.closeTiddler(oldTitle);
							}
							if(callback) {
								callback(info);
							}
							store.setDirty(_dirty);
						});
					} else {
						if(callback) {
							callback(info);
						}
					}
					refreshDisplay();
				}
		});
	}
};

var changeToPrivate = config.commands.changeToPrivate = {
	text: "make private",
	tooltip: "turn this public tiddler into a private tiddler",
	isEnabled: function(tiddler) {
		return !readOnly && config.filterHelpers.is["public"](tiddler);
	},
	handler: function(event, src, title) {
		var tiddler = store.getTiddler(title);
		var newBag = cmd.toggleBag(tiddler, "private");
		var newTiddler = { title: title, fields: { "server.bag": newBag }};
		cmd.moveTiddler(tiddler, newTiddler);
	}
};
config.commands.changeToPublic = cmd;

/* Save as draft command */
var saveDraftCmd = config.commands.saveDraft = {
	text: "save draft",
	tooltip: "Save as a private draft",
	isEnabled: function(tiddler) {
		return changeToPrivate.isEnabled(tiddler);
	},
	getDraftTitle: function(title) {
		var draftTitle;
		var draftNum = "";
		while(!draftTitle) {
			var suggestedTitle = "%0 [draft%1]".format(title, draftNum);
			if(store.getTiddler(suggestedTitle)) {
				draftNum = !draftNum ? 2 : draftNum + 1;
			} else {
				draftTitle = suggestedTitle;
			}
		}
		return draftTitle;
	},
	createDraftTiddler: function(title, gatheredFields) {
		var tiddler = store.getTiddler(title);
		var draftTitle = saveDraftCmd.getDraftTitle(title);
		var draftTiddler = new Tiddler(draftTitle);
		if(tiddler) {
			$.extend(true, draftTiddler, tiddler);
		} else {
			$.extend(draftTiddler.fields, config.defaultCustomFields);
		}
		for(var fieldName in gatheredFields) {
			if(TiddlyWiki.isStandardField(fieldName)) {
				draftTiddler[fieldName] = gatheredFields[fieldName];
			} else {
				draftTiddler.fields[fieldName] = gatheredFields[fieldName];
			}
		}
		var privateBag = tiddlyspace.getCurrentBag("private");
		var privateWorkspace = tiddlyspace.getCurrentWorkspace("private");
		draftTiddler.title = draftTitle;
		draftTiddler.fields["publish.name"] = title;
		draftTiddler.fields["server.workspace"] = privateWorkspace;
		draftTiddler.fields["server.bag"] = privateBag;
		draftTiddler.fields["server.title"] = draftTitle;
		draftTiddler.fields["server.page.revision"] = "false";
		delete draftTiddler.fields["server.etag"];
		return draftTiddler;
	},
	handler: function(ev, src, title) {
		var tiddler = store.getTiddler(title); // original tiddler
		var tidEl = story.getTiddler(title);
		var uiFields = {};
		story.gatherSaveFields(tidEl, uiFields);
		var tid = saveDraftCmd.createDraftTiddler(title, uiFields);
		tid = store.saveTiddler(tid.title, tid.title, tid.text, tid.modifier,
			new Date(), tid.tags, tid.fields);
		autoSaveChanges(null, [tid]);
		story.closeTiddler(title);
		story.displayTiddler(src, title);
		story.displayTiddler(src, tid.title);
	}
};

var macro = config.macros.TiddlySpacePublisher = {
	locale: {
		title: "Batch Publisher",
		changeStatusLabel: "Make %0",
		noTiddlersText: "No tiddlers to publish",
		changeStatusPrompt: "Make all the selected tiddlers %0.",
		description: "Change tiddlers from %0 to %1 in this space"
	},

	listViewTemplate: {
		columns: [
			{ name: "Selected", field: "Selected", rowName: "title", type: "Selector" },
			{ name: "Tiddler", field: "tiddler", title: "Tiddler", type: "Tiddler" },
			{ name: "Status", field: "status", title: "Status", type: "WikiText" }
		],
		rowClasses: []
	},

	changeStatus: function(tiddlers, status, callback) { // this is what is called when you click the publish button
		var publicBag;
		for(var i = 0; i < tiddlers.length; i++) {
			var tiddler = tiddlers[i];
			var newTiddler = {
				title: tiddler.title,
				fields: { "server.bag": cmd.toggleBag(tiddler, status) }
			};
			cmd.moveTiddler(tiddler, newTiddler, callback);
		}
	},
	getMode: function(paramString) {
		var params = paramString.parseParams("anon")[0];
		var status = params.type ?
			(["public", "private"].contains(params.type[0]) ? params.type[0] : "private") :
			"private";
		var newStatus = status == "public" ? "private" : "public";
		return [status, newStatus];
	},
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var wizard = new Wizard();
		var locale = macro.locale;
		var status = macro.getMode(paramString);
		wizard.createWizard(place, locale.title);
		wizard.addStep(macro.locale.description.format(status[0], status[1]),
			'<input type="hidden" name="markList" />');
		var markList = wizard.getElement("markList");
		var listWrapper = $("<div />").addClass("batchPublisher").
			attr("refresh", "macro").attr("macroName", macroName).
			attr("params", paramString)[0];
		markList.parentNode.insertBefore(listWrapper, markList);
		$.data(listWrapper, "wizard", wizard);
		macro.refresh(listWrapper);
	},
	getCheckedTiddlers: function(listWrapper, titlesOnly) {
		var tiddlers = [];
		$(".chkOptionInput[rowName]:checked", listWrapper).each(function(i, el) {
			var title = $(el).attr("rowName");
			if(titlesOnly) {
				tiddlers.push(title);
			} else {
				tiddlers.push(store.getTiddler(title));
			}
		});
		return tiddlers;
	},
	refresh: function(listWrapper) {
		var checked = macro.getCheckedTiddlers(listWrapper, true);
		var paramString = $(listWrapper).empty().attr("params");
		var wizard = $.data(listWrapper, "wizard");
		var locale = macro.locale;
		var params = paramString.parseParams("anon")[0];
		var publishCandidates = [];
		var status = macro.getMode(paramString);
		var pubType = status[0];
		var newPubType = status[1];
		var tiddlers = params.filter ? store.filterTiddlers(params.filter[0]) :
			store.filterTiddlers("[is[%0]]".format(pubType));
		var enabled = [];
		for(var i = 0; i < tiddlers.length; i++) {
			var tiddler = tiddlers[i];
			var title = tiddler.title;
			if(!tiddler.tags.contains("excludePublisher") && title !== "SystemSettings") {
				publishCandidates.push({ title: title, tiddler: tiddler, status: pubType});
			}
			if(checked.contains(title)) {
				enabled.push("[rowname=%0]".format(title));
			}
		}

		if(publishCandidates.length === 0) {
			createTiddlyElement(listWrapper, "em", null, null, locale.noTiddlersText);
		} else {
			var listView = ListView.create(listWrapper, publishCandidates, macro.listViewTemplate);
			wizard.setValue("listView", listView);
			var btnHandler = function(ev) {
				var tiddlers = macro.getCheckedTiddlers(listWrapper);
				var callback = function(status) {
					$(".batchPublisher").each(function(i, el) {
						macro.refresh(el);
					});
				};
				macro.changeStatus(tiddlers, newPubType, callback);
			};
			wizard.setButtons([{
				caption: locale.changeStatusLabel.format(newPubType),
				tooltip: locale.changeStatusPrompt.format(newPubType),
				onClick: btnHandler
			}]);
			$(enabled.join(",")).attr("checked", true); // retain what was checked before
		}
	}
};

})(jQuery);
//}}}
!Spaces
<<groupBy server.bag>>

!Private
<<list filter [is[private]]>>

!Public
<<list filter [is[public]]>>

!Drafts
<<list filter [is[draft]]>>
/***
|''Name''|TiddlySpaceBackstage|
|''Version''|0.8.0|
|''Description''|Provides a TiddlySpace version of the backstage and a homeLink macro|
|''Status''|@@beta@@|
|''Contributors''|Jon Lister, Jon Robson, Colm Britton|
|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceBackstage.js|
|''Requires''|TiddlySpaceConfig ImageMacroPlugin TiddlySpaceViewTypes|
!StyleSheet
.tiddler .error.annotation .button{
	display: inline-block;
}

#backstageArea {
	z-index: 49;
	color: white;
	background-color: black;
	background: -webkit-gradient(linear,left bottom,left top,color-stop(0, #222),color-stop(0.5, #333),color-stop(1, #555));
	background: -moz-linear-gradient(center bottom,#222 0%, #333 50%, #555 100%);
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff555555, endColorstr=#ff222222);
	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff555555, endColorstr=#ff222222)";
	height: 25px;
	padding: 0;
}

#backstageButton {
	overflow: hidden;
}

#backstageButton #backstageShow,
#backstageButton #backstageHide {
	margin: 0px;
	padding: 0px;
}

#backstageButton #backstageShow:hover,
#backstageButton #backstageHide:hover {
	background: none;
	color: none;
}

#backstageButton img,
#backstageButton svg {
	width: 24px;
	height: 24px;
}

#messageArea {
	top: 50px;
}

#backstageToolbar {
	position: relative;
}

#backstageArea a {
	padding: 0px;
	margin-left: 0px;
	color: white;
	background: none;
}

#backstageArea a:hover {
	background-color: white;
}

#backstage ol,
#backstage ul {
	padding: auto;
}

#backstageButton a {
	margin: 0;
}

.backstagePanelBody ul {
	padding: 5px;
	margin: 5px;
}

#backstage #backstagePanel {
	margin-left: 5%;
	padding: 0em;
	margin-right: 5%;
}

#backstageToolbar a {
	position: relative;
}

#backstageArea a.backstageSelTab,
#backstageToolbar .backstageTask {
	line-height: 25px;
	color: #767676;
}

.backstageTask .externalImage,
.backstageTask .image {
	display: inline;
}

#backstageToolbar a span {
	z-index: 2;
}

a.backstageTask {
	display: inline;
        margin-left: 1em !important;
}

.backstagePanelBody .button {
	display: inline-block;
	margin-right: 10px;
}

.backstagePanelBody {
	margin: 0 0 0 0.6em;
	padding: 0.4em 0.5em 1px 0.5em;
}

#backstage table {
	margin: auto;
}

#backstage .wizard table {
	border: 0px;
	margin: 0;
}

#backstage div  li.listLink {
	border: 0px;
	width: 78%;
	font-size: 0.7em;
}

#backstage div li.listTitle {
	font-weight: bold;
	text-decoration: underline;
	font-size: 1em;
	background: #ccc;
	width: 100%;
}

#backstage fieldset {
	border: solid 1px [[ColorPalette::Background]];
}

#backstage .viewer table,#backstage table.twtable {
	border: 0px;
}

#backstageToolbar img {
	padding: 0;
}

#backstage .wizard,
#backstage .wizardFooter {
	background: none;
}

.viewer td, .viewer tr, .twtable td, .twtable tr {
	border: 1px solid #eee;
}

#backstage .inlineList ul li {
	background-color: [[ColorPalette::Background]];
	border: solid 1px [[ColorPalette::TertiaryMid]];
	display: block;
	float: left;
	list-style: none;
	margin-right: 1em;
	padding: 0.5em;
}

.backstageClear, .inlineList form {
	clear: both;
	display: block;
	margin-top: 3em;
}

.tiddlyspaceMenu {
	text-align: center;
}

span.chunkyButton {
	display: inline-block;
	padding: 0;
	margin: 0;
	border: solid 2px #000;
	background-color: #04b;
}

span.chunkyButton a.button, span.chunkyButton a:active.button {
	white-space: nowrap;
	font-weight: bold;
	font-size: 1.8em;
	color: #fff;
	text-align: center;
	padding: 0.5em 0.5em;
	margin: 0;
	border-style: none;
	display: block;
}

span.chunkyButton:hover {
	background-color: #014;
}

span.chunkyButton a.button:hover {
	border-style: none;
	background: none;
	color: #fff;
}

#backstage .unpluggedSpaceTab .wizard,
.unpluggedSpaceTab .wizard {
	background: white;
	border: 2px solid #CCC;
	padding: 5px;
}

.syncKey .keyItem {
	border: 1px solid black;
	display: inline-block;
	margin: 0.2em;
	padding: 0.1em 0.1em 0.1em 0.1em;
}

.keyHeading {
	font-size: 2em;
	font-weight: bold;
	margin: 0.4em 0em -0.2em;
}

.unpluggedSpaceTab .putToServer,
.unpluggedSpaceTab .notChanged {
	display: none;
}

.tiddlyspaceMenu ul {
	margin: 0;
	padding: 0;
}

.tiddlyspaceMenu ul li {
	list-style: none;
}

.unsyncedChanges .unsyncedList {
	display: block;
}

.unsyncedList {
	display: none;
}
!Code
***/
//{{{
(function ($) {
    var name = "StyleSheet" + tiddler.title;
    config.shadowTiddlers[name] = "/*{{{*/\n%0\n/*}}}*/".
        format(store.getTiddlerText(tiddler.title + "##StyleSheet")); // this accesses the StyleSheet section of the current tiddler (the plugin that contains it)
    store.addNotification(name, refreshStyles);

    if (!config.extensions.tiddlyweb.status.tiddlyspace_version) { // unplugged
        config.extensions.tiddlyweb.status.tiddlyspace_version = "<unknown>";
        config.extensions.tiddlyweb.status.server_host = {
            url:config.extensions.tiddlyweb.host }; // TiddlySpaceLinkPlugin expects this
    }
    var disabled_tasks_for_nonmembers = ["tiddlers", "plugins", "batch", "sync"];

    var tweb = config.extensions.tiddlyweb;
    var tiddlyspace = config.extensions.tiddlyspace;
    var currentSpace = tiddlyspace.currentSpace.name;
    var imageMacro = config.macros.image;

    if (config.options.chkBackstage === undefined) {
        config.options.chkBackstage = false;
    }

// Set up Backstage
    config.tasks = {};
    config.tasks.status = {
        text:"status",
        tooltip:"TiddlySpace Info",
        content:"<<tiddler Backstage##Menu>>"
    };
    config.tasks.tiddlers = {
        text:"tiddlers",
        tooltip:"tiddlers control panel",
        content:"<<tiddler Backstage##BackstageTiddlers>>"
    };
    config.tasks.plugins = {
        text:"plugins",
        tooltip:"Manage installed plugins",
        content:"<<tiddler Backstage##Plugins>>"
    };
    config.tasks.batch = {
        text:"batch",
        tooltip:"Batch manage public/private tiddlers",
        content:"<<tiddler Backstage##BatchOps>>"
    };
    config.tasks.tweaks = {
        text:"tweaks",
        tooltip:"Tweak TiddlyWiki behaviors",
        content:"<<tiddler Backstage##Tweaks>>"
    };
    config.tasks.exportTiddlers = {
        text:"import/export",
        tooltip:"Import/export tiddlers from/to a TiddlyWiki",
        content:"<<tiddler Backstage##ImportExport>>"
    };
    config.tasks.sync = {
        text:"sync",
        tooltip:"Check Sync status",
        content:"<<tiddler Backstage##SpaceUnplugged>>"
    };

    if (window.location.protocol === "file:") {
        config.unplugged = true;
    }

    config.backstageTasks = ["status", "tiddlers", "plugins",
        "batch", "tweaks", "exportTiddlers", "sync"];

    config.messages.backstage.prompt = "";
// initialize state
    var _show = backstage.show;
    backstage.show = function () {
        // selectively hide backstage tasks and tabs based on user status
        var tasks = $("#backstageToolbar .backstageTask").show();
        var bs = backstage.tiddlyspace;
        if (!config.unplugged) {
            tweb.getUserInfo(function (user) {
                if (user.anon) {
                    jQuery.each(disabled_tasks_for_nonmembers, function (i, task) {
                        var taskIndex = config.backstageTasks.indexOf(task);
                        if (taskIndex !== -1) {
                            config.backstageTasks.splice(taskIndex, 1);
                        }
                    });
                    config.messages.memberStatus = bs.locale.loggedout;
                } else {
                    config.messages.memberStatus = readOnly ?
                        bs.locale.nonmember : bs.locale.member;
                }
            });
        } else {
            config.messages.memberStatus = bs.locale.unplugged;
        }

        // display backstage
        return _show.apply(this, arguments);
    };
    if (readOnly) {
        jQuery.each(disabled_tasks_for_nonmembers, function (i, task) {
            var taskIndex = config.backstageTasks.indexOf(task);
            if (taskIndex !== -1) {
                config.backstageTasks.splice(taskIndex, 1);
            }
        });
    }

    var tasks = config.tasks;
    var commonUrl = "/bags/common/tiddlers/%0";

    backstage.tiddlyspace = {
        locale:{
            member:"You are a member of this space.",
            nonmember:"You are not a member of this space.",
            loggedout:"You are currently logged out of TiddlySpace.",
            unplugged:"You are unplugged."
        },
        showButton:function () {
            var showBtn = $("#backstageShow")[0];
            var altText = $(showBtn).text();
            $(showBtn).empty();
            imageMacro.renderImage(showBtn, "backstage.svg",
                { altImage:commonUrl.format("backstage.png"), alt:altText});
        },
        hideButton:function () {
            var hideBtn = $("#backstageHide")[0];
            var altText = $(hideBtn).text();
            $(hideBtn).empty();
            imageMacro.renderImage(hideBtn, "close.svg",
                { altImage:commonUrl.format("close.png"), alt:altText, width:24, height:24 });
        }
    };

    var _init = backstage.init;
    backstage.init = function () {
        _init.apply(this, arguments);
        var init = function (user) {
            var bs = backstage.tiddlyspace;
            bs.showButton();
            bs.hideButton();
        };
        tweb.getUserInfo(init);
    };

    var home = config.macros.homeLink = {
        locale:{
            linkText:"your home space"
        },
        handler:function (place) {
            var container = $("<span />").appendTo(place)[0];
            tweb.getUserInfo(function (user) {
                if (!user.anon && user.name !== currentSpace) {
                    createSpaceLink(container, user.name, null, home.locale.linkText);
                }
            });
        }
    };

    config.macros.exportSpace = {
        handler:function (place, macroName, params) {
            var filename = params[0] ||
                "/tiddlers.wiki?download=%0.html".format(currentSpace);
            $('<a class="button">download</a>').// XXX: i18n
                attr("href", filename).appendTo(place);
        }
    };

}(jQuery));
//}}}
/***
|''Name''|RevisionsCommandPlugin|
|''Description''|provides access to tiddler revisions|
|''Author''|FND|
|''Contributors''|Martin Budden|
|''Version''|0.3.3|
|''Status''|@@beta@@|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/RevisionsCommandPlugin.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/plugins/|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''CoreVersion''|2.6.0|
|''Keywords''|serverSide|
!Usage
Extend [[ToolbarCommands]] with {{{revisions}}}.
!Revision History
!!v0.1 (2009-07-23)
* initial release (renamed from experimental ServerCommandsPlugin)
!!v0.2 (2010-03-04)
* suppressed wikification in diff view
!!v0.3 (2010-04-07)
* restored wikification in diff view
* added link to side-by-side diff view
!To Do
* strip server.* fields from revision tiddlers
* resolve naming conflicts
* i18n, l10n
* code sanitizing
* documentation
!Code
***/
//{{{
(function($) {

jQuery.twStylesheet(".diff { white-space: pre, font-family: monospace }",
	{ id: "diff" });

var cmd = config.commands.revisions = {
	type: "popup",
	hideShadow: true,
	text: "revisions",
	tooltip: "display tiddler revisions",
	revTooltip: "", // TODO: populate dynamically?
	loadLabel: "loading...",
	loadTooltip: "loading revision list",
	selectLabel: "select",
	selectTooltip: "select revision for comparison",
	selectedLabel: "selected",
	compareLabel: "compare",
	linkLabel: "side-by-side view",
	revSuffix: " [rev. #%0]",
	diffSuffix: " [diff: #%0 #%1]",
	dateFormat: "YYYY-0MM-0DD 0hh:0mm",
	listError: "revisions could not be retrieved",

	handlePopup: function(popup, title) {
		title = this.stripSuffix("rev", title);
		title = this.stripSuffix("diff", title);
		var tiddler = store.getTiddler(title);
		var type = _getField("server.type", tiddler);
		var adaptor = new config.adaptors[type]();
		var limit = null; // TODO: customizable
		var context = {
			host: _getField("server.host", tiddler),
			workspace: _getField("server.workspace", tiddler)
		};
		var loading = createTiddlyButton(popup, cmd.loadLabel, cmd.loadTooltip);
		var params = { popup: popup, loading: loading, origin: title };
		adaptor.getTiddlerRevisionList(title, limit, context, params, this.displayRevisions);
	},

	displayRevisions: function(context, userParams) {
		removeNode(userParams.loading);
		if(context.status) {
			var callback = function(ev) {
				var e = ev || window.event;
				var revision = resolveTarget(e).getAttribute("revision");
				context.adaptor.getTiddlerRevision(tiddler.title, revision, context,
					userParams, cmd.displayTiddlerRevision);
			};
			var table = createTiddlyElement(userParams.popup, "table");
			for(var i = 0; i < context.revisions.length; i++) {
				var tiddler = context.revisions[i];
				var row = createTiddlyElement(table, "tr");
				var timestamp = tiddler.modified.formatString(cmd.dateFormat);
				var revision = tiddler.fields["server.page.revision"];
				var cell = createTiddlyElement(row, "td");
				createTiddlyButton(cell, timestamp, cmd.revTooltip, callback, null,
					null, null, { revision: revision });
				cell = createTiddlyElement(row, "td", null, null, tiddler.modifier);
				cell = createTiddlyElement(row, "td");
				createTiddlyButton(cell, cmd.selectLabel, cmd.selectTooltip,
					cmd.revisionSelected, null, null, null,
					{ index:i, revision: revision, col: 2 });
				cmd.context = context; // XXX: unsafe (singleton)!?
			}
		} else {
			$("<li />").text(cmd.listError).appendTo(userParams.popup);
		}
	},

	revisionSelected: function(ev) {
		var e = ev || window.event;
		e.cancelBubble = true;
		if(e.stopPropagation) {
			e.stopPropagation();
		}
		var n = resolveTarget(e);
		var index = n.getAttribute("index");
		var col = n.getAttribute("col");
		while(!index || !col) {
			n = n.parentNode;
			index = n.getAttribute("index");
			col = n.getAttribute("col");
		}
		cmd.revision = n.getAttribute("revision");
		var table = n.parentNode.parentNode.parentNode;
		var rows = table.childNodes;
		for(var i = 0; i < rows.length; i++) {
			var c = rows[i].childNodes[col].firstChild;
			if(i == index) {
				if(c.textContent) {
					c.textContent = cmd.selectedLabel;
				} else {
					c.text = cmd.selectedLabel;
				}
			} else {
				if(c.textContent) {
					c.textContent = cmd.compareLabel;
				} else {
					c.text = cmd.compareLabel;
				}
				c.onclick = cmd.compareSelected;
			}
		}
	},

	compareSelected: function(ev) {
		var e = ev || window.event;
		var n = resolveTarget(e);
		var context = cmd.context;
		context.rev1 = n.getAttribute("revision");
		context.rev2 = cmd.revision;
		context.tiddler = context.revisions[n.getAttribute("index")];
		context.format = "unified";
		context.adaptor.getTiddlerDiff(context.tiddler.title, context,
			context.userParams, cmd.displayTiddlerDiffs);
	},

	displayTiddlerDiffs: function(context, userParams) {
		var tiddler = context.tiddler;
		tiddler.title += cmd.diffSuffix.format([context.rev1, context.rev2]);
		tiddler.text = "{{diff{\n" + context.diff + "\n}}}";
		tiddler.tags = ["diff"];
		tiddler.fields.doNotSave = "true"; // XXX: correct?
		if(!store.getTiddler(tiddler.title)) {
			store.addTiddler(tiddler);
		}
		var src = story.getTiddler(userParams.origin);
		var tiddlerEl = story.displayTiddler(src, tiddler);
		var uri = context.uri.replace("format=unified", "format=horizontal");
		var link = $('<a target="_blank" />').attr("href", uri).text(cmd.linkLabel);
		$(".viewer", tiddlerEl).prepend(link);
	},

	displayTiddlerRevision: function(context, userParams) {
		var tiddler = context.tiddler;
		tiddler.title += cmd.revSuffix.format([tiddler.fields["server.page.revision"]]);
		tiddler.fields.doNotSave = "true"; // XXX: correct?
		if(!store.getTiddler(tiddler.title)) {
			store.addTiddler(tiddler);
		}
		var src = story.getTiddler(userParams.origin);
		story.displayTiddler(src, tiddler);
	},

	stripSuffix: function(type, title) {
		var str = cmd[type + "Suffix"];
		var i = str.indexOf("%0");
		i = title.indexOf(str.substr(0, i));
		if(i != -1) {
			title = title.substr(0, i);
		}
		return title;
	}
};

var _getField = function(name, tiddler) {
	return tiddler.fields[name] || config.defaultCustomFields[name];
};

})(jQuery);
//}}}
/***
|''Description''|Sanitisation for dynamically pulling tiddlers into your space and displaying them|
!Notes
Works both inside and outside TiddlyWiki. Uses the HTML Sanitizer provided by the Google Caja project
(see http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer for more on this), which is licensed under
an Apache License (see http://www.apache.org/licenses/LICENSE-2.0).
!Code
***/
//{{{
(function($) {

var cleanURL = function(url) {
	var regexp = /^(?:http|https|mailto|ftp|irc|news):\/\//;
	return (regexp.test(url)) ? url : null;
};

$.sanitize = function(html) {
	return html_sanitize(html, cleanURL);
};

/*
 * HTML Sanitizer, provided by Google Caja
 */

/* Copyright Google Inc.
 * Licensed under the Apache Licence Version 2.0
 * Autogenerated at Tue May 17 17:39:24 BST 2011
 * @provides html4
 */var html4={};html4.atype={NONE:0,URI:1,URI_FRAGMENT:11,SCRIPT:2,STYLE:3,ID:4,IDREF:5,IDREFS:6,GLOBAL_NAME:7,LOCAL_NAME:8,CLASSES:9,FRAME_TARGET:10},html4.ATTRIBS={"*::class":9,"*::dir":0,"*::id":4,"*::lang":0,"*::onclick":2,"*::ondblclick":2,"*::onkeydown":2,"*::onkeypress":2,"*::onkeyup":2,"*::onload":2,"*::onmousedown":2,"*::onmousemove":2,"*::onmouseout":2,"*::onmouseover":2,"*::onmouseup":2,"*::style":3,"*::title":0,"a::accesskey":0,"a::coords":0,"a::href":1,"a::hreflang":0,"a::name":7,"a::onblur":2,"a::onfocus":2,"a::rel":0,"a::rev":0,"a::shape":0,"a::tabindex":0,"a::target":10,"a::type":0,"area::accesskey":0,"area::alt":0,"area::coords":0,"area::href":1,"area::nohref":0,"area::onblur":2,"area::onfocus":2,"area::shape":0,"area::tabindex":0,"area::target":10,"bdo::dir":0,"blockquote::cite":1,"br::clear":0,"button::accesskey":0,"button::disabled":0,"button::name":8,"button::onblur":2,"button::onfocus":2,"button::tabindex":0,"button::type":0,"button::value":0,"canvas::height":0,"canvas::width":0,"caption::align":0,"col::align":0,"col::char":0,"col::charoff":0,"col::span":0,"col::valign":0,"col::width":0,"colgroup::align":0,"colgroup::char":0,"colgroup::charoff":0,"colgroup::span":0,"colgroup::valign":0,"colgroup::width":0,"del::cite":1,"del::datetime":0,"dir::compact":0,"div::align":0,"dl::compact":0,"font::color":0,"font::face":0,"font::size":0,"form::accept":0,"form::action":1,"form::autocomplete":0,"form::enctype":0,"form::method":0,"form::name":7,"form::onreset":2,"form::onsubmit":2,"form::target":10,"h1::align":0,"h2::align":0,"h3::align":0,"h4::align":0,"h5::align":0,"h6::align":0,"hr::align":0,"hr::noshade":0,"hr::size":0,"hr::width":0,"iframe::align":0,"iframe::frameborder":0,"iframe::height":0,"iframe::marginheight":0,"iframe::marginwidth":0,"iframe::width":0,"img::align":0,"img::alt":0,"img::border":0,"img::height":0,"img::hspace":0,"img::ismap":0,"img::name":7,"img::src":1,"img::usemap":11,"img::vspace":0,"img::width":0,"input::accept":0,"input::accesskey":0,"input::align":0,"input::alt":0,"input::autocomplete":0,"input::checked":0,"input::disabled":0,"input::ismap":0,"input::maxlength":0,"input::name":8,"input::onblur":2,"input::onchange":2,"input::onfocus":2,"input::onselect":2,"input::readonly":0,"input::size":0,"input::src":1,"input::tabindex":0,"input::type":0,"input::usemap":11,"input::value":0,"ins::cite":1,"ins::datetime":0,"label::accesskey":0,"label::for":5,"label::onblur":2,"label::onfocus":2,"legend::accesskey":0,"legend::align":0,"li::type":0,"li::value":0,"map::name":7,"menu::compact":0,"ol::compact":0,"ol::start":0,"ol::type":0,"optgroup::disabled":0,"optgroup::label":0,"option::disabled":0,"option::label":0,"option::selected":0,"option::value":0,"p::align":0,"pre::width":0,"q::cite":1,"select::disabled":0,"select::multiple":0,"select::name":8,"select::onblur":2,"select::onchange":2,"select::onfocus":2,"select::size":0,"select::tabindex":0,"table::align":0,"table::bgcolor":0,"table::border":0,"table::cellpadding":0,"table::cellspacing":0,"table::frame":0,"table::rules":0,"table::summary":0,"table::width":0,"tbody::align":0,"tbody::char":0,"tbody::charoff":0,"tbody::valign":0,"td::abbr":0,"td::align":0,"td::axis":0,"td::bgcolor":0,"td::char":0,"td::charoff":0,"td::colspan":0,"td::headers":6,"td::height":0,"td::nowrap":0,"td::rowspan":0,"td::scope":0,"td::valign":0,"td::width":0,"textarea::accesskey":0,"textarea::cols":0,"textarea::disabled":0,"textarea::name":8,"textarea::onblur":2,"textarea::onchange":2,"textarea::onfocus":2,"textarea::onselect":2,"textarea::readonly":0,"textarea::rows":0,"textarea::tabindex":0,"tfoot::align":0,"tfoot::char":0,"tfoot::charoff":0,"tfoot::valign":0,"th::abbr":0,"th::align":0,"th::axis":0,"th::bgcolor":0,"th::char":0,"th::charoff":0,"th::colspan":0,"th::headers":6,"th::height":0,"th::nowrap":0,"th::rowspan":0,"th::scope":0,"th::valign":0,"th::width":0,"thead::align":0,"thead::char":0,"thead::charoff":0,"thead::valign":0,"tr::align":0,"tr::bgcolor":0,"tr::char":0,"tr::charoff":0,"tr::valign":0,"ul::compact":0,"ul::type":0},html4.eflags={OPTIONAL_ENDTAG:1,EMPTY:2,CDATA:4,RCDATA:8,UNSAFE:16,FOLDABLE:32,SCRIPT:64,STYLE:128},html4.ELEMENTS={a:0,abbr:0,acronym:0,address:0,applet:16,area:2,b:0,base:18,basefont:18,bdo:0,big:0,blockquote:0,body:49,br:2,button:0,canvas:0,caption:0,center:0,cite:0,code:0,col:2,colgroup:1,dd:1,del:0,dfn:0,dir:0,div:0,dl:0,dt:1,em:0,fieldset:0,font:0,form:0,frame:18,frameset:16,h1:0,h2:0,h3:0,h4:0,h5:0,h6:0,head:49,hr:2,html:49,i:0,iframe:4,img:2,input:2,ins:0,isindex:18,kbd:0,label:0,legend:0,li:1,link:18,map:0,menu:0,meta:18,nobr:0,noframes:20,noscript:20,object:16,ol:0,optgroup:0,option:1,p:1,param:18,pre:0,q:0,s:0,samp:0,script:84,select:0,small:0,span:0,strike:0,strong:0,style:148,sub:0,sup:0,table:0,tbody:1,td:1,textarea:8,tfoot:1,th:1,thead:1,title:24,tr:1,tt:0,u:0,ul:0,"var":0},html4.ueffects={NOT_LOADED:0,SAME_DOCUMENT:1,NEW_DOCUMENT:2},html4.URIEFFECTS={"a::href":2,"area::href":2,"blockquote::cite":0,"body::background":1,"del::cite":0,"form::action":2,"img::src":1,"input::src":1,"ins::cite":0,"q::cite":0},html4.ltypes={UNSANDBOXED:2,SANDBOXED:1,DATA:0},html4.LOADERTYPES={"a::href":2,"area::href":2,"blockquote::cite":2,"body::background":1,"del::cite":2,"form::action":2,"img::src":1,"input::src":1,"ins::cite":2,"q::cite":2};var html=function(a){function x(b,c,d){var e=[];w(function(b,e){for(var f=0;f<e.length;f+=2){var g=e[f],h=e[f+1],i=null,j;if((j=b+"::"+g,a.ATTRIBS.hasOwnProperty(j))||(j="*::"+g,a.ATTRIBS.hasOwnProperty(j)))i=a.ATTRIBS[j];if(i!==null)switch(i){case a.atype.NONE:break;case a.atype.SCRIPT:case a.atype.STYLE:h=null;break;case a.atype.ID:case a.atype.IDREF:case a.atype.IDREFS:case a.atype.GLOBAL_NAME:case a.atype.LOCAL_NAME:case a.atype.CLASSES:h=d?d(h):h;break;case a.atype.URI:h=c&&c(h);break;case a.atype.URI_FRAGMENT:h&&"#"===h.charAt(0)?(h=d?d(h):h,h&&(h="#"+h)):h=null;break;default:h=null}else h=null;e[f+1]=h}return e})(b,e);return e.join("")}function w(b){var c,d;return v({startDoc:function(a){c=[],d=!1},startTag:function(e,f,g){if(!d){if(!a.ELEMENTS.hasOwnProperty(e))return;var h=a.ELEMENTS[e];if(h&a.eflags.FOLDABLE)return;if(h&a.eflags.UNSAFE){d=!(h&a.eflags.EMPTY);return}f=b(e,f);if(f){h&a.eflags.EMPTY||c.push(e),g.push("<",e);for(var i=0,j=f.length;i<j;i+=2){var k=f[i],l=f[i+1];l!==null&&l!==void 0&&g.push(" ",k,'="',r(l),'"')}g.push(">")}}},endTag:function(b,e){if(d)d=!1;else{if(!a.ELEMENTS.hasOwnProperty(b))return;var f=a.ELEMENTS[b];if(!(f&(a.eflags.UNSAFE|a.eflags.EMPTY|a.eflags.FOLDABLE))){var g;if(f&a.eflags.OPTIONAL_ENDTAG)for(g=c.length;--g>=0;){var h=c[g];if(h===b)break;if(!(a.ELEMENTS[h]&a.eflags.OPTIONAL_ENDTAG))return}else for(g=c.length;--g>=0;)if(c[g]===b)break;if(g<0)return;for(var i=c.length;--i>g;){var h=c[i];a.ELEMENTS[h]&a.eflags.OPTIONAL_ENDTAG||e.push("</",h,">")}c.length=g,e.push("</",b,">")}}},pcdata:function(a,b){d||b.push(a)},rcdata:function(a,b){d||b.push(a)},cdata:function(a,b){d||b.push(a)},endDoc:function(a){for(var b=c.length;--b>=0;)a.push("</",c[b],">");c.length=0}})}function v(c){return function(d,e){d=String(d);var f=null,g=!1,h=[],j=void 0,l=void 0,m=void 0;c.startDoc&&c.startDoc(e);while(d){var n=d.match(g?t:u);d=d.substring(n[0].length);if(g){if(n[1]){var o=b(n[1]),p;if(n[2]){var q=n[3];switch(q.charCodeAt(0)){case 34:case 39:q=q.substring(1,q.length-1)}p=k(i(q))}else p=o;h.push(o,p)}else if(n[4]){l!==void 0&&(m?c.startTag&&c.startTag(j,h,e):c.endTag&&c.endTag(j,e));if(m&&l&(a.eflags.CDATA|a.eflags.RCDATA)){f===null?f=b(d):f=f.substring(f.length-d.length);var r=f.indexOf("</"+j);r<0&&(r=d.length),l&a.eflags.CDATA?c.cdata&&c.cdata(d.substring(0,r),e):c.rcdata&&c.rcdata(s(d.substring(0,r)),e),d=d.substring(r)}j=l=m=void 0,h.length=0,g=!1}}else if(n[1])c.pcdata&&c.pcdata(n[0],e);else if(n[3])m=!n[2],g=!0,j=b(n[3]),l=a.ELEMENTS.hasOwnProperty(j)?a.ELEMENTS[j]:void 0;else if(n[4])c.pcdata&&c.pcdata(n[4],e);else if(n[5]&&c.pcdata)switch(n[5]){case"<":c.pcdata("&lt;",e);break;case">":c.pcdata("&gt;",e);break;default:c.pcdata("&amp;",e)}}c.endDoc&&c.endDoc(e)}}function s(a){return a.replace(m,"&amp;$1").replace(n,"&lt;").replace(o,"&gt;")}function r(a){return a.replace(l,"&amp;").replace(n,"&lt;").replace(o,"&gt;").replace(p,"&#34;").replace(q,"&#61;")}function k(a){return a.replace(j,g)}function i(a){return a.replace(h,"")}function g(a,b){return f(b)}function f(a){a=b(a);if(c.hasOwnProperty(a))return c[a];var f=a.match(d);if(f)return String.fromCharCode(parseInt(f[1],10));if(!!(f=a.match(e)))return String.fromCharCode(parseInt(f[1],16));return""}var b;"script"==="SCRIPT".toLowerCase()?b=function(a){return a.toLowerCase()}:b=function(a){return a.replace(/[A-Z]/g,function(a){return String.fromCharCode(a.charCodeAt(0)|32)})};var c={lt:"<",gt:">",amp:"&",nbsp:"240",quot:'"',apos:"'"},d=/^#(\d+)$/,e=/^#x([0-9A-Fa-f]+)$/,h=/\0/g,j=/&(#\d+|#x[0-9A-Fa-f]+|\w+);/g,l=/&/g,m=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi,n=/</g,o=/>/g,p=/\"/g,q=/\=/g,t=new RegExp("^\\s*(?:(?:([a-z][a-z-]*)(\\s*=\\s*(\"[^\"]*\"|'[^']*'|(?=[a-z][a-z-]*\\s*=)|[^>\"'\\s]*))?)|(/?>)|[\\s\\S][^a-z\\s>]*)","i"),u=new RegExp("^(?:&(\\#[0-9]+|\\#[x][0-9a-f]+|\\w+);|<!--[\\s\\S]*?-->|<!\\w[^>]*>|<\\?[^>*]*>|<(/)?([a-z][a-z0-9]*)|([^<&>]+)|([<&>]))","i");return{escapeAttrib:r,makeHtmlSanitizer:w,makeSaxParser:v,normalizeRCData:s,sanitize:x,unescapeEntities:k}}(html4),html_sanitize=html.sanitize

// stop here if we're not in TiddlyWiki
// XXX: is this the correct way of checking for TiddlyWiki?
if (!window.TiddlyWiki || !window.store || !store instanceof TiddlyWiki) {
	return;
}

var tiddlyspace = config.extensions.tiddlyspace;

var _subWikify = Wikifier.prototype.subWikify;

var cleanedTitle = 'This section has been cleaned of any potentially harmful code';

var replaceFunctions = {
	html: function(w) {
		var sanitizedHTML, spanEl;
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			sanitizedHTML = $.sanitize(lookaheadMatch[1]);
			spanEl = createTiddlyElement(w.output, 'span', null, 'sanitized');
			spanEl.innerHTML = sanitizedHTML;
			spanEl.setAttribute('title', cleanedTitle);
			w.nextMatch = this.lookaheadRegExp.lastIndex;
		}
	},
	customFormat: function(w) {
		switch(w.matchText) {
			case '@@':
				var e = createTiddlyElement(w.output, 'span');
				var styles = config.formatterHelpers.inlineCssHelper(w);
				if (styles.length === 0) {
					e.className = 'marked';
				}
				w.subWikifyTerm(e, /(@@)/mg);
				break;
			case '{{':
				var lookaheadRegExp = /\{\{[\s]*([\w]+[\s\w]*)[\s]*\{(\n?)/mg;
				lookaheadRegExp.lastIndex = w.matchStart;
				var lookaheadMatch = lookaheadRegExp.exec(w.source);
				if(lookaheadMatch) {
					w.nextMatch = lookaheadRegExp.lastIndex;
					e = createTiddlyElement(w.output,lookaheadMatch[2] == "\n" ? "div" : "span",null,lookaheadMatch[1]);
					w.subWikifyTerm(e,/(\}\}\})/mg);
				}
				break;
		}
	}
};

Wikifier.prototype.subWikify = function(output, terminator) {
	var tid = this.tiddler,
		spaceName = tiddlyspace.currentSpace.name,
		tidSpace, recipeName, stripped;
	try {
		recipeName = tid.fields['server.recipe'] ||
			tid.fields['server.workspace'];
		tidSpace = tiddlyspace.resolveSpaceName(recipeName);
		if (tidSpace !== spaceName) {
			// external tiddler, so replace dangerous formatters
			stripped = stripHTML(tid, this.formatter);
		}
	} catch(e) {
		// do nothing. There's no tiddler, so assume it's safe (?!?!?)
	}

	_subWikify.apply(this, arguments);

	if (stripped) {
		// change back to the original function
		unstripHTML(stripped, this.formatter);
	}
};

// replace potentially unsafe formatters with versions that strip bad HTML/CSS
var stripHTML = function(tid, formatter) {
	var popped = {}, _handler;
	for (var i = 0; i < formatter.formatters.length; i++) {
		var f = formatter.formatters[i];
		if (replaceFunctions[f.name]) {
			_handler = f.handler;
			popped[f.name] = _handler;
			f.handler = replaceFunctions[f.name];
		}
	};

	return popped;
};

// put the original formatters back where they belong
var unstripHTML = function(stripped, formatter) {
	for (var i = 0; i < formatter.formatters.length; i++) {
		var f = formatter.formatters[i];
		if (stripped[f.name]) {
			f.handler = stripped[f.name];
		}
	};
};

})(jQuery);
//}}}
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
<!--{{{-->
<link rel="shortcut icon" href="/recipes/softwarereview_public/tiddlers/favicon.ico" />
<link href="/bags/softwarereview_public/tiddlers.atom" rel="alternate"
	type="application/atom+xml" title="softwarereview's public feed" />
<link rel="canonical" href="http://softwarereview.tiddlyspace.com/" />
<!--}}}-->
[[BWK|http://www.cs.princeton.edu/~bwk/]]
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
/***
|''Name''|BinaryTiddlersPlugin|
|''Description''|renders base64-encoded binary tiddlers as images or links|
|''Author''|FND|
|''Version''|0.3.2|
|''Status''|@@beta@@|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/BinaryTiddlersPlugin.js|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''CoreVersion''|2.5|
!Code
***/
//{{{
(function($) {

"use strict";

var ctfield = "server.content-type";

var plugin = config.extensions.BinaryTiddlersPlugin = {
	isWikiText: function(tiddler) {
		var ctype = tiddler.fields[ctfield];
		if(ctype) {
			if (ctype === 'text/x-tiddlywiki') {
				return true;
			}
			return !this.isBinary(tiddler) && !this.isTextual(ctype);
		} else {
			return true;
		}
	},
	// NB: pseudo-binaries are considered non-binary here
	isBinary: function(tiddler) {
		var ctype = tiddler.fields[ctfield];
		return ctype ? !this.isTextual(ctype) : false;
	},
	isTextual: function(ctype) {
		return ctype.indexOf("text/") === 0
			|| this.endsWith(ctype, "+xml")
			|| ctype === 'application/json'
			|| ctype === 'application/javascript';
	},
	endsWith: function(str, suffix) {
		return str.length >= suffix.length &&
			str.substr(str.length - suffix.length) === suffix;
	},
	isLink: function(tiddler) {
		return this.isBinary(tiddler) && tiddler.text.indexOf("<html>") !== -1;
	}
};

// Disable edit for linked tiddlers (for now)
// This will be changed to a GET then PUT
config.commands.editTiddler.isEnabled = function(tiddler) {
    var existingTest = config.commands.editTiddler.isEnabled;
    if (existingTest) {
        return existingTest && !plugin.isLink(tiddler);
    } else {
        return !plugin.isLink(tiddler);
    }
};

// hijack text viewer to add special handling for binary tiddlers
var _view = config.macros.view.views.wikified;
config.macros.view.views.wikified = function(value, place, params, wikifier,
		paramString, tiddler) {
	var ctype = tiddler.fields["server.content-type"];
	if(params[0] === "text" && ctype && ctype !== 'text/x-tiddlywiki' &&
			!tiddler.tags.contains("systemConfig") && !plugin.isLink(tiddler)) {
		var el;
		if(plugin.isBinary(tiddler)) {
			var uri = "data:%0;base64,%1".format([ctype, tiddler.text]); // TODO: fallback for legacy browsers
			if(ctype.indexOf("image/") === 0) {
				el = $("<img />").attr("alt", tiddler.title).attr("src", uri);
			} else {
				el = $("<a />").attr("href", uri).text(tiddler.title);
			}
		} else {
			el = $("<pre />").text(tiddler.text);
		}
		el.appendTo(place);
	} else {
		_view.apply(this, arguments);
	}
};

// hijack edit macro to disable editing of binary tiddlers' body
var _editHandler = config.macros.edit.handler;
config.macros.edit.handler = function(place, macroName, params, wikifier,
		paramString, tiddler) {
	if(params[0] === "text" && plugin.isBinary(tiddler)) {
		return false;
	} else {
		_editHandler.apply(this, arguments);
	}
};

// hijack autoLinkWikiWords to ignore binary tiddlers
var _autoLink = Tiddler.prototype.autoLinkWikiWords;
Tiddler.prototype.autoLinkWikiWords = function() {
	return plugin.isWikiText(this) ? _autoLink.apply(this, arguments) : false;
};

}(jQuery));
//}}}
/***
|''Name''|ImageMacroPlugin|
|''Version''|0.9.4|
|''Description''|Allows the rendering of svg images in a TiddlyWiki|
|''Author''|Osmosoft|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''Notes''|Currently only works in modern browsers (not IE)|
|''Requires''|BinaryTiddlersPlugin|
!Usage
{{{<<image SVG>>}}} will render the text of the tiddler with title SVG as an SVG image (but not in ie where it will fail silently)
!!Parameters
width/height: specify width/height parameters
link: make the image link to a given location
tiddlyLink: link to a tiddler

!Notes
Binary tiddlers in TiddlyWeb when passed through the wikifier will be shown as images.
eg. {{{<<view text wikified>>}}} on a binary tiddler will show the image.
{{{<<view fieldname image>>}}}
will render the value of the tiddler field 'fieldname' as an image. This field can contain a tid
{{{<<image SiteIcon>>}}}
will create an image tag where the tiddler has content type beginning image and not ending +xml
will attempt to create svg object in other scenarios
{{{<<image /photos/x.jpg>>}}}
will create an image tag with src /photos/x.jpg as long as there is not a tiddler called /photos/x.jpg in 
which case it will render that tiddler as an image. Note for the case of svg files it will attempt to render as an svg if possible via the image
tag. It doesn't embed the svg in the dom for security reasons as svg code can contain javascript.
!Code
***/
//{{{
(function($) {

var macro = config.macros.image = {
	shim: "/bags/common/tiddlers/shim",
	ieVersion: config.browser.isIE ? parseInt(config.browser.ieVersion[1], 10) : false,
	svgns: "http://www.w3.org/2000/svg",
	xlinkns: "http://www.w3.org/1999/xlink", 
	svgAvailable: document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"),
	_fixPrefix: 1,
	_external_cache: {},
	_image_tag_cache: {},
	_image_dimensions: {},
	locale: {
		badImage: "This image cannot be displayed."
	},
	handler: function(place, macroName, params, wikifier, paramString, tiddler){
		var imageSource = params[0];
		// collect named arguments
		var args = macro.getArguments(paramString, params);
		this.renderImage(place, imageSource, args);
	},
	init: function() {
		var startupImages = store.getTaggedTiddlers("systemImage");
		var place = $("<div />").attr("id", "systemImageArea").appendTo("body").hide()[0];
		for(var i = 0; i < startupImages.length; i++) {
			var image = startupImages[i];
			macro.renderImage(place, image.title, { idPrefix: "" });
		}
		var data = new Image();
		data.onload = function() {
			// note ie 8 only supports data uris up to 32k so cannot be relied on
			macro.supportsDataUris = this.width != 1 || this.height != 1 ? false : true;
			macro.supportsDataUris = macro.ieVersion && macro.ieVersion < 9 ? false : macro.supportsDataUris;
		};
		data.onerror = data.onload;
		data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
	},
	refreshImage: function(src) {
		var elements = macro._image_tag_cache[src] ? macro._image_tag_cache[src] : [];
		if(macro._image_dimensions[src]) {
			macro._image_dimensions[src] = false;
		}
		for(var i = 0; i < elements.length; i++) {
			var el = $(elements[i]);
			var newSrc = "%0?nocache=%1".format(src, Math.random());
			el.attr("src", newSrc); // force reload
		}
	},
	isBinaryImageType: function(contentType) {
		return (contentType && contentType.indexOf("image") === 0 &&
			contentType.indexOf("+xml") != contentType.length - 4) ? true : false;
	},
	isImageTiddler: function(tiddler) {
		return macro.isSVGTiddler(tiddler) || macro.isBinaryImageTiddler(tiddler);
	},
	isSVGTiddler: function(tiddler) {
		var type = tiddler ? tiddler.fields['server.content-type'] : false;
		return type == "image/svg+xml";
	},
	isBinaryImageTiddler: function(tiddler) {
		return macro.isBinaryImageType(tiddler.fields['server.content-type']);
	},
	renderImage: function(place, imageSource, options) {
		var imageTiddler = store.getTiddler(imageSource);
		var container;
		var classes = ["image"];
		if(options.link) {
			classes = classes.concat(["imageLink", "externalLink"]);
			container = $("<a />").attr("href", options.link).appendTo(place)[0];
		} else if(options.tiddlyLink) {
			classes.push("imageLink");
			container = createTiddlyLink(place, options.tiddlyLink, false);
		} else {
			container = $("<span />").appendTo(place)[0];
		}
		$(container).addClass(classes.join(" "));

		options = options ? options : {};
		if(imageTiddler && macro.isBinaryImageTiddler(imageTiddler)) { // handle the case where we have an image url
			return macro._renderBinaryImageTiddler(container, imageTiddler, options);
		} else if(imageTiddler){ // handle the case where we have a tiddler
			return macro._renderSVGTiddler(container, imageTiddler, options);
		} else { // we have a string representing a url
			return macro._renderBinaryImageUrl(container, imageSource, options);
		}
	},
	_renderAlternateText: function(container, options) {
		var img;
		var src = options.src || "";
		if(options.width && options.height) {
			img = $("<img />").attr("src", src).addClass("svgImageText").attr("width", options.width).
				attr("height", options.height).appendTo(container);
		}
		var alt = options.alt;
		if(img && alt) {
			img.attr("alt", alt).attr("title", alt);
		} else if(alt) {
			$(container).addClass("svgImageText").text(alt);
		}
		macro._image_tag_cache[src] = img;
	},
	_renderSVGTiddler: function(place, tiddler, options) {
		if(!options) {
			options = {};
		}
		merge(options, { tiddler: tiddler, fix: true});

		if(macro.svgAvailable) {
			this._importSVG(place, options); // display the svg
		} else if(options.altImage) {
			var image = options.altImage;
			delete options.altImage;
			this._renderBinaryImageUrl(place, image, options);
		} else {
			this._renderAlternateText(place, options); // instead of showing the image show the alternate text.
		}
	},
	_renderBinaryImageTiddler: function(place, tiddler, options) {
		var resourceURI;
		var fields = tiddler.fields;
		if(fields["server.type"] == "tiddlyweb") { // construct an accurate url for the resource
			resourceURI = "%0/%1/tiddlers/%2".format(config.defaultCustomFields["server.host"],
				fields["server.workspace"], encodeURI(fields["server.title"]));
		} else { // guess the url for the resource
			resourceURI = tiddler.title;
		}
		var ctype = fields["server.content-type"] || tiddler.type;
		var text = tiddler.text;
		if(macro.supportsDataUris && ctype && text.indexOf("<html") == -1) {
			var uri = "data:%0;base64,%1".format(ctype, text);
			options.src = resourceURI;
			return macro._renderBinaryImageUrl(place, uri, options);
		} else if(options.src) {
			return macro._renderBinaryImageUrl(place, options.src, options);
		} else {
			return macro._renderBinaryImageUrl(place, resourceURI, options);
		}
	},
	_renderImageTag: function(container, src, width, height, options) {
		var img;
		img = $("<img />").appendTo(container);
		if(height) {
			img.attr("height", height);
		}
		if(width) {
			img.attr("width", width);
		}
		if(macro.ieVersion && macro.ieVersion < 7 && macro.shim && options.ie6png) {
			$(img).css({width: userW, height: userH,
					filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%0', sizingMethod='scale')".format(src)
				}).attr("src", macro.shim);
		} else {
			img.attr("src", src);
		}
		if(!macro._image_tag_cache[options.srcUrl]) {
			macro._image_tag_cache[options.srcUrl] = [];
		}
		img = $(img).addClass(options.imageClass)[0];
		macro._image_tag_cache[options.srcUrl].push(img);
		return img;
	},
	_getDimensions: function(realDimensions, reqDimensions, preserve) {
		var w = realDimensions.width;
		var h = realDimensions.height;
		var reqh = reqDimensions.height;
		var reqw = reqDimensions.width;
		var finalw = w, finalh = h;
		var ratiow = reqw / w, ratioh = reqh / h;
		var scaledw = ratioh * w;
		var scaledh = ratiow * h;
		if(!reqw && reqh) {
			finalw = scaledw;
			finalh = reqh;
		} else if(reqw && !reqh) {
			finalw = reqw;
			finalh = scaledh;
		} else if(reqh && reqw) {
			var preserveWidth = w > h ? true : false;
			if(preserve) {
				if(preserveWidth && scaledh < reqh) {
					finalh = scaledh;
					finalw = reqw;
				} else {
					finalh = reqh;
					finalw = scaledw;
				}
			} else {
				finalw = reqw;
				finalh = reqh;
			}
		}
		return { width: parseInt(finalw, 10), height: parseInt(finalh, 10) };
	},
	_renderBinaryImageUrl: function(container, src, options) {
		var srcUrl = options.src ? options.src : src;
		srcUrl = srcUrl.indexOf("/") === -1 ? "/%0".format(srcUrl) : srcUrl; // for IE. 
		var image_dimensions = macro._image_dimensions[srcUrl];
		var image = new Image(); // due to weird scaling issues where you use just a width or just a height
		var createImageTag = function(dimensions, error) {
			if(error) {
				var altImage = options.altImage;
				if(altImage) {
					delete options.altImage;
					macro._renderBinaryImageUrl(container, altImage, options);
				} else {
					options.src = src;
					macro._renderAlternateText(container, options);
				}
			} else {
				var dim = macro._getDimensions(dimensions, { 
					width: options.width, height: options.height }, options.preserveAspectRatio);
				options.srcUrl = srcUrl;
				macro._renderImageTag(container, src, dim.width, dim.height, options);
			}
		};

		if(!image_dimensions) {
			image.onload = function() {
				var dimensions = { width: image.width, height: image.height};
				macro._image_dimensions[srcUrl] = dimensions;
				createImageTag(dimensions);
			};
			image.onerror = function() {
				createImageTag(null, true);
			};
			image.src = src;
		} else {
			createImageTag(image_dimensions);
		}
	},
	_generateIdPrefix: function(){
		return "twsvgfix_" + (this._fixPrefix++).toString() + "_";
	},
	_fixSVG: function(childNodes, idPrefix) {
		var urlPattern = /url\(\#([^\)]*)\)*/ig;
		var fixes = [
		{ attr: "id", pattern: /^(.*)$/ig },
		{ attr: "href", namespace: macro.xlinkns, pattern: /^#(.*)$/ig }
		];
		var url_fixes = ["filter", "fill", "mask", "stroke", "style"];
		for(var i = 0; i < url_fixes.length; i++) {
			fixes.push({ attr: url_fixes[i], pattern: urlPattern });
		}
		for(var t = 0; t < childNodes.length; t++) {
			var node = childNodes[t];
			for(var a = 0; a < fixes.length; a++) {
				var fix = fixes[a];
				var attr = fix.attr;
				var ns = fix.namespace || "";
				if(node.hasAttributeNS && node.hasAttributeNS(ns, attr)) {
					var v = node.getAttributeNS(ns, attr);
					fix.pattern.lastIndex = 0;
					var match = fix.pattern.exec(v);
					if(match) {
						// Make sure replacement string doesn't contain any single dollar signs
						var toReplace = match[1];
						if(toReplace.indexOf(idPrefix) !== 0 && toReplace.indexOf("twglobal_") !== 0) {
							var replacement = (idPrefix + toReplace).replace("$", "$$$$"); 
							v = v.replace(match[1], replacement);
						}
						node.setAttributeNS(ns, attr,v);
					}
				}
			}
			var children = node.childNodes;
			if(children.length > 0) {
				this._fixSVG(children, idPrefix);
			}
		}
	},
	_importSVG: function(place, options){
		options = options ? options : {};
		var svgDoc, tiddlerText = options.tiddler.text;
		if (window.DOMParser) {
			svgDoc = new DOMParser().parseFromString(tiddlerText, "application/xml").documentElement;
			var idPrefix = options.idPrefix || this._generateIdPrefix();
			this._fixSVG([svgDoc], idPrefix);
			var el = document.importNode(svgDoc, true);
			var svgHolder = document.createElementNS(macro.svgns,"svg");
			var width = options.width;
			var height = options.height;
			if(width || height) {
				if(width && height) { // set view box of containing svg element based on the svg viewbox and width and height.
					var viewBox = el.getAttribute("viewBox");
					var topLeft = "0 0";
					if(viewBox) {
						topLeft = viewBox.replace(/([0-9]*) +([0-9]*) +([0-9]*) +([0-9]*) */gi,"$1 $2");
					}
					svgHolder.setAttributeNS(macro.svgns, "viewBox", "0 0 %0 %1".format(width, height));
				} else {
					if(!width) {
						width = el.getAttribute("width");
					}
					if(!height) {
						height = el.getAttribute("height");
					}
				}
				svgHolder.setAttribute("width", width);
				svgHolder.setAttribute("height", height);

				el.setAttribute("width", "100%");
				el.setAttribute("height", "100%");
				svgHolder.setAttribute("class", "svgImage svgIcon %0".format(options.imageClass || ""));
				svgHolder.appendChild(el);
				place.appendChild(svgHolder);
			}
			else {
				var existing = el.className ? el.className.baseVal : "";
				el.setAttribute("class","svgImage %0".format(existing));
				place.appendChild(el);
			}
			// if a tiddler attribute is set this is read as a link
			$("[tiddler], [tiddlyLink]", place).attr("refresh", "link").click(function(ev) {
				var tiddler = $(ev.target).attr("tiddlyLink");
				if(tiddler) {
					story.displayTiddler(ev.target, tiddler);
				}
			});
		}
	},
	getArguments: function(paramString, params) {
		var args = paramString.parseParams("name", null, true, false, true)[0];
		var options = {};
		for(var id in args) {
			if(true) {
				var p = args[id];
				if(id == "def") {
					options[id] = p;
				} else {
					options[id] = p[0];
				}
			}
		}
		var width = isNaN(params[1]) ? false : parseInt(params[1], 10);
		var height = isNaN(params[2]) ? false : parseInt(params[2], 10);

		options.width = macro.lookupArgument(options, "width", width);
		options.height = macro.lookupArgument(options, "height", height);
		options.preserveAspectRatio = args.preserveAspectRatio && 
			args.preserveAspectRatio[0] == "yes" ? true : false;
		options.tiddlyLink = macro.lookupArgument(options, "tiddlyLink", false);
		options.link = macro.lookupArgument(options, "link", false);
		return options;
	},
	lookupArgument: function(args, id, ifEmpty) {
		return args[id] ? args[id] : ifEmpty;
	}
};

// update views
var _oldwikifiedview = config.macros.view.views.wikified;
// update wikifier to check tiddler type before rendering
merge(config.macros.view.views, {
	wikified: function(value, place, params, wikifier, paramString, tiddler) {
		if(macro.isImageTiddler(tiddler) && params[0] == "text") {
			var newplace = $("<div />").addClass("wikifiedImage").appendTo(place)[0];
			macro.renderImage(newplace, tiddler.title, { alt: macro.locale.badImage });
		} else {
			_oldwikifiedview.apply(this, arguments);
		}
	},
	image: function(value, place, params, wikifier, paramString, tiddler) {
		// a field can point to another tiddler whereas text is the current tiddler.
		var title = params[0] == "text" ? tiddler.title : value;
		var args = macro.getArguments(paramString, params);
		macro.renderImage(place, title, args);
	}
});
config.shadowTiddlers.StyleSheetImageMacro = [".wikifiedImage svg, .wikifiedImage .image { width: 80%; }",
	".svgImageText { background-color:[[ColorPalette::Error]]; color:#ddd; display: inline-block; }",
	"span.svgImageText { display: inline-block; overflow: hidden; }"
].join("");
store.addNotification("StyleSheetImageMacro", refreshStyles);

})(jQuery);
//}}}
Before THT can go “1.0”, it needs to fill a glaring hole.   As simple as it is at the outset, I’ve often run into it’s biggest problem: the absence of a debugger/syntax checker.   Now, it puts out it’s Tcl errors either to htmldef.err or  //sourceFileName//.err.   A user has to search thru those files, which can get rather long,  to find the relevant error message.
I propose to write (in Tcl, of course) a syntax checker which will detect the following errors"
*Mis-matched, or imbalance in {}, [], (),
*Improperly nested double quotes.
*Non-function names leading off sub-execution [ … ]
Catching these errors before proceeding, rather than trying to debug from the HTML output, will save considerable time.

These “tricks” can be employed and introduced into the User’s Guide:
*Embedded quotes should be entered as two single quotes ( ‘ ‘  ) in the text, then globally replaced with the escaped double quote ( \” ).
*Using the paragraph idiom:  {{{ P “ …      “; P “  …  “ }}}, where the middle sequence is repeated as often as necessary should be the only use of double quotes prior to the above conversion.
*Use the “logical comment” approach to divide and conquer the input text looking for the error:  {{{ if { 0 } { …  } }}}.  When satisfied, simply change the Zero to a One.  Leaving the construct in the text does no harm, and as a retrospective, leaves a finger-print to where the error was made.
*Also, and this is a stop-gap, but a simple “grep” of the error logs for a few key phrases like “imbalanced”, “mismatch”, … can filter the error report to focus the user on a fix.  Add this to the ‘tht’ command.

See the [[THT User Guide|http://mcgowans.org/tht/THT_UserGuide.html]]
/*{{{*/
Background: #f6e8de
Foreground: #201208
PrimaryPale: #fbf5f0
PrimaryLight: #dda47b
PrimaryMid: #9d5928
PrimaryDark: #28160a
SecondaryPale: #f3f0fb
SecondaryLight: #977bdd
SecondaryMid: #49289d
SecondaryDark: #120a28
TertiaryPale: #f0fbf6
TertiaryLight: #7bddb1
TertiaryMid: #289d68
TertiaryDark: #0a281b
Error: #f88
ColorPaletteParameters: HSL([25|52], [0.5897687940701594],[0.1|0.3882691669316184|0.6765383338632367|0.964807500794855])
/*}}}*/
Unless you're delighted with the default theme you can make some quick changes by generating a new random color palette, hit this button to cycle through some alternatives.

<<RandomColorPaletteButton saturation_pale:0.67 saturation_light:0.53
saturation_mid:0.43 saturation_dark:0.06 pale:0.99 light:0.85 mid:0.5 dark:0.31>>

You can also change the look and feel completely by installing a new theme. To do this, find one you like in the @themes space, note down the name, and include it in this space by going to the space menu. You can reach the space menu by clicking on the blue and pink circle at the top-right of the page and chooshing "THIS SPACE". Here are a few to check out:
* @pip
* @caspian-ii
* @basalt
* @simplicity
* @cheesecake
* @jelly-doughnut

(//Note that if you are using a custom TiddlySpace install, these themes may not be present.//)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   version="1.1"
   width="14pt"
   height="14pt"
   viewBox="918 510 14 14"
   id="svg3070">
  <metadata
     id="metadata3089">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs3072">
    <radialGradient
       cx="0"
       cy="0"
       r="1"
       id="Gradient"
       gradientUnits="userSpaceOnUse">
      <stop
         id="stop3075"
         style="stop-color:#ffffff;stop-opacity:1"
         offset="0" />
      <stop
         id="stop3077"
         style="stop-color:#2b2b2b;stop-opacity:1"
         offset="1" />
    </radialGradient>
    <radialGradient
       id="Obj_Gradient"
       xlink:href="#Gradient"
       gradientTransform="matrix(11.473944,0,0,11.473944,922.3752,513.7837)" />
  </defs>
  <g
     id="g3080"
     style="fill:none;stroke:none">
    <g
       id="g3082">
      <path
         d="m 929.6952,512.9018 c -2.5384,-2.53843 -6.654,-2.53843 -9.1924,0 -2.5384,2.5384 -2.5384,6.654 0,9.19238 2.5384,2.53839 6.654,2.53839 9.1924,0 2.5384,-2.53838 2.5384,-6.65398 0,-9.19238 m -4.5962,2.8407 2.07733,-2.07734 1.75547,1.75549 -2.0773,2.07735 2.0773,2.07732 -1.75547,1.75548 -2.07733,-2.07732 -2.07733,2.07732 -1.75547,-1.75548 2.0773,-2.07732 -2.0773,-2.07735 1.75547,-1.75549 z"
         id="path3084"
         style="fill:url(#Obj_Gradient)" />
      <path
         d="m 927.61447,515.38354 a 4.51205,4.2590378 0 1 1 -9.0241,0 4.51205,4.2590378 0 1 1 9.0241,0 z"
         transform="matrix(1.0218069,0,0,1.0462046,-18.063694,-21.648443)"
         id="path2394"
         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
    </g>
  </g>
</svg>
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
Its [[time for a rest|TimeForaReST]], here's a start:
Learn ''~ReST''^^*^^, [[A Tutorial|http://rest.elkstein.org/]]
Quoting for a moment:
> ROA (REST Oriented Architecture) is just a fancy name for a SOA (Service Based Architecture) using REST services.
>
> The main advantage of SOAP-based SOA over ROA is the more mature tool support; however, this could change over time. Another SOA advantages include the type-safety of XML requests (for responses, ROA can also use XML if the developers desire it).
>
> The main advantage of ROA is ease of implementation, agility of the design, and the lightweight approach to things. In a way, SOA and SOAP is for people in business suits; that's what you'll find used in the banking and finance industries. Conversely, somebody that needs something up-and-running quickly, with good performance and low overhead, is often better off using REST and ROA.
Need I say more?  A: Yes, actually: search for 
*[[thomas erl|http://www.google.com/search?q=thomas+erl]]
*[[roy fielding|http://roy.gbiv.com/untangled/]]

-----
^^*^^ REST: ''Re''presentational ''S''tate ''T''ransfer
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="100%" width="100%" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40"><metadata><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><defs><linearGradient id="lG3826" x1="7.0996" gradientUnits="userSpaceOnUse" y1="18.829" gradientTransform="matrix(1.5858347,0,0,1.8078238,1098.1851,351.13716)" x2="1.5461" y2="-0.95166"><stop stop-color="#000" offset="0"/><stop stop-color="#9c9b99" offset="1"/></linearGradient><linearGradient id="lG3828" y2="372.44" gradientUnits="userSpaceOnUse" y1="375.7" x2="1111.7" x1="1097.7"><stop style="stop-color:#ac9393;" offset="0"/><stop style="stop-color:#c8b7b7;" offset="1"/></linearGradient></defs><g transform="translate(-1080.9375,-357.3329)"><path style="stroke-width:0;stroke-miterlimit:4;fill:url(#lG3826);" d="m1080.9,357.32,39.996-0.0426-0.01,40.008c-15.507-25.519-15.36-25.95-39.988-39.965z"/><path style="stroke-dashoffset:0;stroke:#7aa3be;stroke-linecap:round;stroke-miterlimit:4;stroke-width:1.49999988;fill:#c1e6fd;" d="m1091.9,363.55c6.5716-6.4925,16.576-7.3925,23.147-0.90003,6.5717,6.4925,6.5717,17.019,0,23.511-4.4424-8.6113-12.288-15.713-23.147-22.611z"/><path style="stroke-dashoffset:0;stroke:#ce81b0;stroke-linecap:round;stroke-miterlimit:4;stroke-width:1.5;fill:#f4c4e2;" d="m1110.2,367.62c3.217,3.2168,3.217,8.4323,0,11.649-3.8194-4.2357-8.3307-8.1824-11.649-11.649,3.217-3.2168,8.4325-3.2168,11.649-0.00002z"/><path style="stroke-linejoin:bevel;stroke:#000000;stroke-linecap:round;stroke-dasharray:none;stroke-miterlimit:4;stroke-width:0.80000001;fill:url(#lG3828);" d="m1081,357.34c18.79,6.4752,32.53,16.56,39.894,39.892-11.19-17.028-14.878-19.19-27.352-14.96,6.2984-12.098,3.9371-13.19-12.542-24.932z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="506 234 68 36" width="30" height="30"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2010-09-16 14:51Z</dc:date><!-- Produced by OmniGraffle Professional 5.2.3 --></metadata><defs></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><rect width="1118" height="783"/><g><path d="M 538.68195 244.31807 C 540.43927 246.07547 540.43927 248.9247 538.68195 250.68204 C 536.92456 252.4394 534.07532 252.4394 532.318 250.68204 C 530.5606 248.9247 530.5606 246.07547 532.318 244.31807 C 534.07532 242.56075 536.92456 242.56075 538.68195 244.31807 M 511.12607 257.99356 C 511.26108 258.13019 511.39728 258.26608 511.53473 258.40121 C 527.2556 273.86606 552.74414 273.86606 568.46515 258.40121 C 568.60248 258.26617 568.73853 258.13037 568.87354 257.9938 C 568.8736 257.99374 568.8736 257.99371 568.8736 257.99362 C 568.87366 257.99371 568.87366 257.9938 568.87372 257.9939 C 570.72504 256.12051 572.35046 254.11153 573.74994 252 C 573.74994 251.99997 573.74994 251.99994 573.74994 251.99992 C 572.35046 249.8884 570.72504 247.87938 568.87372 246.00606 C 568.87366 246.00613 568.87366 246.00621 568.8736 246.00627 C 568.73865 245.86966 568.60254 245.73383 568.46515 245.5987 C 552.74414 230.13387 527.2556 230.13387 511.53473 245.5987 C 511.39728 245.73383 511.26108 245.86974 511.12613 246.00635 C 511.126 246.00624 511.126 246.00616 511.12595 246.00606 C 509.2748 247.87938 507.64954 249.88837 506.24994 251.9998 L 506.24994 251.99983 C 506.24994 251.9999 506.25 251.99992 506.25 251.99997 C 506.25 252 506.24994 252.00005 506.24994 252.00009 L 506.24994 252.00012 C 507.64954 254.11157 509.2748 256.12051 511.12595 257.9939 C 511.126 257.99377 511.126 257.99365 511.12607 257.99359 Z M 515.44916 252 C 515.8548 251.55469 516.27502 251.11778 516.71014 250.68985 C 522.16632 245.32257 529.06055 242.23206 536.17273 241.41824 C 534.6662 241.96199 533.2525 242.83762 532.04498 244.04512 C 527.65155 248.43852 527.65155 255.56163 532.04498 259.95502 C 533.2522 261.16226 534.6656 262.03778 536.17175 262.58154 C 529.05988 261.76761 522.16608 258.6771 516.71014 253.31009 C 516.2751 252.88219 515.85486 252.44528 515.44922 252 Z M 564.55054 251.99995 C 564.14502 252.44525 563.7248 252.88217 563.28973 253.31009 C 557.83368 258.67712 550.93988 261.76764 543.828 262.58157 C 545.33423 262.03781 546.74756 261.1623 547.9549 259.95502 C 552.34833 255.56163 552.34833 248.43852 547.9549 244.04512 C 546.74744 242.83765 545.33374 241.96202 543.82715 241.41824 C 550.9394 242.23206 557.83356 245.3226 563.28973 250.68985 C 563.7248 251.11775 564.14502 251.55467 564.55054 251.99995 Z M 568.8736 257.99362 C 570.7249 256.12033 572.35028 254.11139 573.74988 252.00002" fill="black" class="glyph"/></g></g></svg>
LaTex, is pronounced //Lah-tech//, or //Lay-tech// depending preference.   I just opened a copy on my iMac the other day.   
!!Useful Web Sites (from Basic Help):
!!!TeXShop Web Site:
*http://pages.uoregon.edu/koch/texshop/
!!!MacTeX Web Site:
*http://www.tug.org/mactex/
!!!TeX on Mac Wiki:
*http://mactex-wiki.tug.org/
!!!Unicode Extensions to support TeXShop's UTF-8 Unicode file preference option:
*http://www.ctan.org/tex-archive/macros/latex/contrib/supported/unicode/
!!!Context Web Site:
*http://www.pragma-ade.com/
!!!MetaPost Web Site:
*http://cm.bell-labs.com/who/hobby/MetaPost.html
!!!Comprehensive TeX Archive:
*http://www.ctan.org
*http://www.ctan.org/tex-archive
!!!TeX Users Group (TUG):
*http://www.tug.org
!!!XeTeX and XeLaTeX:
*http://scripts.sil.org/xetex
!!My own Additions
!!!emacs-mode
*http://www.emacswiki.org/emacs/LaTeX
There are a lot of interesting people using ~TiddlySpace that you might like to keep track of and interact with. There are a number of ways of doing this.

If you see a number in the speech bubble in one of your tiddlers, it means that someone is writing about the same thing as you. You can find out what they're saying by clicking on it. Likewise, if you see something interesting in someone else's space, you can respond to it and write up your own thoughts on the subject by clicking "Reply to this tiddler".

Additionally, if you find anyone interesting, or you find an interesting looking space and you'd like to know when it's changed, you can "follow" that space. To do this, simply create a tiddler with the title: {{{@space-name}}} and tag it {{{follow}}}. If you want, you can store some notes about that space in the body of the tiddler.

If you then want to know what happening, simply [[include|How do I include/exclude spaces?]]@docs the @tivity space and then visit your activity stream at [[/activity|/activity]], or just visit the @tapas space directly.

!Not sure who to follow?
Here's a few suggestions:
* @fnd
* @cdent
* @pmario
* @bengillies
* @dickon
/***
|''Name''|TiddlySpaceFollowingPlugin|
|''Version''|0.7.1|
|''Description''|Provides a following macro|
|''Author''|Jon Robson|
|''Requires''|TiddlySpaceConfig TiddlySpaceTiddlerIconsPlugin ErrorHandler|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
!Usage
Tag a tiddler with "follow" to express a list of followers.
Using the {{{<<followTiddlers X>>}}}
will reveal the number of tiddlers with name X in the set of spaces the *current* user viewing your space follows.
{{{<<following jon>>}}} will list all the users following Jon.
{{{<<followers jon>>}}} will list all the followers of jon.
{{{<linkedTiddlers>>}}} will list all tiddlers across TiddlySpace linked to the current tiddler
{{{<linkedTiddlers follow:yes>>}}} will list all tiddlers across TiddlySpace that come from your list of followers
adds spaceLink view type {{{<<view server.bag spaceLink>>}}} creates a link to the space described in server.bag
{{{<<view server.bag spaceLink title>>}}} makes a link to the tiddler with title expressed in the field title in space server.bag
If no name is given eg. {{{<<following>>}}} or {{{<<follow>>}}} it will default the current user.
!StyleSheet
.followTiddlersList li {
	list-style:none;
}

.followButton {
	width: 2em;
}

.followTiddlersList li .siteIcon {
	height:48px;
	width: 48px;
}

#sidebarTabs .followers li a,
.followers .siteIcon,
.followers .siteIcon div {
	display: inline;
}

.followTiddlersList li .externalImage, .followTiddlersList li .image {
	display: inline;
}

.scanResults li {
	list-style: none;
}
!Code
***/
//{{{
(function($) {
var LIMIT_FOLLOWING = 100;

var tweb = config.extensions.tiddlyweb;
var tiddlyspace = config.extensions.tiddlyspace;
var currentSpace = tiddlyspace.currentSpace.name;

var shadows = config.shadowTiddlers;
config.annotations.ScanTemplate = "This tiddler is the default template used in the display of tiddlers founding using the tsScan macro. To access attributes use the view macro e.g. {{{<<view title text>>}}}";
shadows.ScanTemplate = "<<view modifier SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view title link>>";
shadows.FollowersTemplate = "<<view server.bag SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view server.bag spaceLink>>";
shadows.FollowingTemplate = "<<view title SiteIcon width:24 height:24 spaceLink:yes label:no>> <<view title spaceLink>>";
shadows.FollowTiddlersBlackList = "";
shadows.FollowTiddlersHeading = "There are tiddlers in spaces you follow using the follow tag which use the title <<view title text>>";
shadows.FollowTiddlersTemplate = ["* <<view server.space SiteIcon width:24 height:24 spaceLink:yes label:no>> ",
	"<<view server.space spaceLink title external:no>> modified by <<view modifier spaceLink>> ",
	"in the <<view server.space spaceLink>> space (<<view modified date>> @ <<view modified date 0hh:0mm>>).\n"].join("");

var name = "StyleSheetFollowing";
shadows[name] = "/*{{{*/\n%0\n/*}}}*/".
	format(store.getTiddlerText(tiddler.title + "##StyleSheet"));
store.addNotification(name, refreshStyles);

// provide support for sucking in tiddlers from the server
tiddlyspace.displayServerTiddler = function(src, title, workspace, callback) {
	var adaptor = store.getTiddlers()[0].getAdaptor();
	var localTitle = tiddlyspace.getLocalTitle(title, workspace);
	var tiddler = new Tiddler(localTitle);
	tiddler.text = "Please wait while this tiddler is retrieved...";
	tiddler.fields.doNotSave = "true";
	store.addTiddler(tiddler);
	src = story.displayTiddler(src || null, tiddler.title);
	tweb.getStatus(function(status) {
		var context = {
			host: tweb.host, // TODO: inherit from source tiddler?
			workspace: workspace,
			headers: { "X-ControlView": "false" }
		};
		var getCallback = function(context, userParams) {
			var tiddler = context.tiddler;
			tiddler.title = localTitle;
			store.addTiddler(tiddler);
			story.refreshTiddler(localTitle, null, true); // overriding existing allows updating
			if(callback) {
				callback(src, tiddler);
			}
		};
		adaptor.getTiddler(title, context, null, getCallback);
	});
};

tiddlyspace.scroller = {
	runHandler: function(title, top, bottom, height) {
		var i;
		var handlers = tiddlyspace.scroller.handlers;
		var tidEl = story.getTiddler(title);
		if(tidEl) {
			var topEl = $(tidEl).offset().top + 20;
			if(top === false || (topEl > top && topEl < bottom)) {
				var h = handlers[title];
				for(i = 0; i < h.length; i++) {
					h[i]();
				}
				tiddlyspace.scroller.clearHandlers(title);
			}
		} else {
			tiddlyspace.scroller.clearHandlers(title);
		}
	},
	clearHandlers: function(title) {
		tiddlyspace.scroller.handlers[title] = [];
	},
	registerIsVisibleEvent: function(title, handler) {
		tiddlyspace.scroller.handlers[title] = tiddlyspace.scroller.handlers[title] || [];
		tiddlyspace.scroller.handlers[title].push(handler);
	},
	init: function() {
		this.handlers = {};
		this.interval = window.setInterval(function() {
			var top = $(window).scrollTop();
			var height = $(window).height();
			var bottom = top + height;
			var title;
			for(title in tiddlyspace.scroller.handlers) {
				if(title) {
					tiddlyspace.scroller.runHandler(title, top, bottom, height);
				}
			}
		}, 2000); // every 2 seconds check scroll position
	}
};
tiddlyspace.scroller.init();

var followMacro = config.macros.followTiddlers = {
	locale: {
		followListHeader: "Here are tiddlers from spaces you follow using the follow tag which use this title.",
		noTiddlersFromFollowers: "None of the spaces you follow contain a tiddler with this name.",
		errorMessage: "There was a problem retrieving tiddlers from the server. Please try again later."
	},
	init: function() {
		followMacro.lookup = {};
	},
	followTag: "follow",
	getHosts: function(callback) {
		tweb.getStatus(function(status) {
			callback(tweb.host, tiddlyspace.getHost(status.server_host, "%0"));
		});
	},
	getBlacklist: function() {
		return store.getTiddlerText("FollowTiddlersBlackList").split("\n");
	},
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var args = paramString.parseParams("anon")[0];
		var containingTiddler = story.findContainingTiddler(place).getAttribute('tiddler');
		var title = (args.anon && args.anon[0]) || tiddler.fields["server.title"] || tiddler.title;
		var tid = store.getTiddler(title);
		var user = params[1] || false;
		if(tid) {
			followMacro.makeButton(place, {
				url: "/search?q=title:%22" + encodeURIComponent(title) + "%22",
				containingTiddler: containingTiddler,
				blacklisted: followMacro.getBlacklist(), title: title, user: user,
				consultFollowRelationship: (args.follow &&
					args.follow[0] === 'false') ? false : true });
		}
	},
	makeButton: function(place, options) { // this is essentially the same code in TiddlySpaceFollowingPlugin
		var title = options.title;
		var blacklisted = options.blacklisted;
		var tiddler = store.getTiddler(title);
		var btn = $('<div class="followButton" />').addClass("notLoaded").appendTo(place)[0];
		if(blacklisted.contains(title)) {
			$(btn).remove();
			return;
		} else {
			var user = options.user;
			window.setTimeout(function() { // prevent multiple calls due to refresh
				tiddlyspace.scroller.registerIsVisibleEvent(options.containingTiddler, function() {
					var mkButton = function(followers, ignore) {
						if(!followers && !ignore) {
							$(btn).remove();
						} else {
							$("<a />").appendTo(btn);
							var scanOptions = { url: options.url,
								spaceField: options.spaceField || "bag", template: null, sort: "-modified",
								callback: function(tiddlers) {
									$(btn).removeClass("notLoaded");
									followMacro.constructInterface(btn, tiddlers);
								}
							};
							if(!ignore) {
								scanOptions.showBags = followMacro._getFollowerBags(followers);
							}
							scanOptions.hideBags = [tiddler.fields["server.bag"]];
							scanMacro.scan(null, scanOptions, user);
						}
					};
					if(options.consultFollowRelationship) {
						followMacro.getFollowers(mkButton);
					} else {
						mkButton([], true);
					}
				});
			}, 1000);
		}
	},
	constructInterface: function(container, tiddlers) {
		var txt = tiddlers.length;
		var className = txt > 0 ? "hasReplies" : "noReplies";
		var el = $(story.findContainingTiddler(container));
		$(container).empty().addClass(className);
		var btn = $("<a />").addClass("followedTiddlers").text(txt).
			click(function(ev) {
				followMacro.followingOnClick(ev);
			}).appendTo('<div class="followedTiddlers" />').appendTo(container)[0];
		$.data(btn, "tiddlers", tiddlers);
	},
	followingOnClick: function(ev) {
		var target = ev.target;
		var locale = followMacro.locale;
		var el = $('<div class="followTiddlersList" />')[0];
		var popup = Popup.create(target,"div");
		$(popup).addClass("taggedTiddlerList followList").click(function(ev) { // make it so only clicking on the document outside the popup removes the popup
			if(ev.target.parentNode != document) {
				ev.stopPropagation();
			}
		}).append(el);
		var tiddlers = $.data(target, "tiddlers") || [];
		scanMacro.template(el, tiddlers.slice(0,1), "FollowTiddlersHeading");
		scanMacro.template(el, tiddlers, "FollowTiddlersTemplate");
		if(tiddlers.length === 0) {
			$("<li />").text(locale.noTiddlersFromFollowers).appendTo(el);
		}
		Popup.show();
		ev.stopPropagation();
		return popup;
	},
	_getFollowerBags: function(followers) { // XXX: private or not?
		return $.map(followers, function(name, i) {
			return name != currentSpace ? "%0_public".format(name) : null;
		});
	},
	getFollowers: function(callback, username) {
		// returns a list of spaces being followed by the existing space
		var followersCallback = function(user) {
			if(!user.anon) {
				scanMacro.scan(null, { 
					url: "/search?q=bag:%0_public tag:%1 _limit:%2".format(user.name, followMacro.followTag, LIMIT_FOLLOWING),
					spaceField: "title", template: null, cache: true,
					callback: function(tiddlers) {
						var followers = [];
						for(var i = 0; i < tiddlers.length; i++) {
							followers.push(tiddlyspace.resolveSpaceName(tiddlers[i].title));
						}
						callback(followers);
					}
				});
			} else {
				callback(false);
			}
		};
		return !username ? tweb.getUserInfo(followersCallback) : followersCallback({ name: username });
	}
};

var scanMacro = config.macros.tsScan = {
	init: function () {
		this.scanned = {};
	},
	_tiddlerfy: function(jsontiddlers, options) {
		var tiddlers = [];
		var spaceField = options.spaceField || "bag"; // TODO: phase out use view types instead
		$.each(jsontiddlers, function(i, t) {
			var use = false;
			if(!options.showBags || (options.showBags && options.showBags.contains(t.bag))) {
				use = true;
			}
			if(options.hideBags && options.hideBags.contains(t.bag)) {
				use = false;
			}
			if(use) {
				var spaceName = t[spaceField];
				var tiddler = config.adaptors.tiddlyweb.toTiddler(t, tweb.host);
				tiddler.fields["server.space"] = tiddlyspace.resolveSpaceName(spaceName);
				tiddlers.push(tiddler);
			}
		});
		return tiddlers;
	},
	_scanCallback: function(place, jsontiddlers, options) {
		var locale = followersMacro.locale;
		var tiddlers = scanMacro._tiddlerfy(jsontiddlers, options);
		
		if(options.sort) {
			tiddlers = store.sortTiddlers(tiddlers, options.sort);
		}
		if(options.filter) {
			var _store = new TiddlyWiki();
			config.lastStore = _store;
			for(var i = 0; i < tiddlers.length; i++) {
				var clone = tiddlers[i];
				clone.title = tiddlyspace.getLocalTitle(clone.title, clone.fields['server.workspace']);
				_store.addTiddler(clone);
			}
			tiddlers = _store.filterTiddlers(options.filter);
		}
		if(place) {
			$(place).empty();
			var list = $("<ul />").appendTo(place)[0];
			scanMacro.template(list, tiddlers, options.template);
			if(tiddlers.length === 0) {
				$("<li />").text(options.emptyMessage || locale.noone).appendTo(list);
				$(list).addClass("emptyList");
			}
		}
		if(options.callback) {
			options.callback(tiddlers);
		}
	},
	constructSearchUrl: function(host, options) {
		if(options.url) {
			return options.url;
		}
		var inputs = options.searchValues;
		var tag = options.tag;
		var searchField = options.searchField || "title";
		var searchQuery = [];
		for(var i = 0; i < inputs.length; i++) {
			searchQuery.push('%0:"%1"'.format(searchField, inputs[i]));
		}
		var query = searchQuery.join(" OR ");
		query = tag ? "(%0) AND tag:%1".format(query, tag) : query;
		query = options.query ? "%0;%1;".format(query, options.query) : query;
		query = options.fat ? "%0&fat=1".format(query) : query;
		return '%0/search?q=%1'.format(host, query);
	},
	scan: function(place, options) { // TODO: make use of list macro with url filter
		var locale = followersMacro.locale;
		options.template = options.template ? options.template : "ScanTemplate";
		followMacro.getHosts(function(host, tsHost) {
			$(place).text(followersMacro.locale.pleaseWait);
			options = options ? options: {};
			var url = scanMacro.constructSearchUrl(host, options);
			if(options.cache && scanMacro.scanned[url]) {
				var tiddlers = scanMacro.scanned[url].tiddlers;
				var run = function(tiddlers) {
					scanMacro._scanCallback(place, tiddlers, options);
				};
				if(tiddlers) {
					run(tiddlers);
				} else {
					scanMacro.scanned[url].callbacks.push(run);
				}
			} else {
				var callback = function(tiddlers) {
					scanMacro._scanCallback(place, tiddlers, options);
				};
				if(scanMacro.scanned[url] && scanMacro.scanned[url].callbacks) {
					scanMacro.scanned[url].callbacks.push(callback);
				} else {
					scanMacro.scanned[url] = {
						callbacks: [callback]
					};
				}
				ajaxReq({
					url: url,
					dataType: "json",
					success: function(tiddlers) {
						scanMacro.scanned[url].tiddlers = tiddlers;
						var callbacks = scanMacro.scanned[url].callbacks;
						while(callbacks.length > 0) {
							callbacks.pop()(tiddlers);
						}
					},
					error: function(xhr) {
						$(place).empty();
						$("<span />").addClass("annotation error").text(locale.error.format(xhr.status)).appendTo(place);
					}
				});
			}
		});
	},
	template: function(place, tiddlers, template) { // TODO: make use of list macro.
		for(var i = 0; i < tiddlers.length; i++) {
			var tiddler = tiddlers[i];
			var item = $('<li class="spaceName" />').appendTo(place)[0];
			var spaceName = tiddler.fields["server.space"] || "";
			var templateText = store.getTiddlerText(template).replace(/\$1/mg, spaceName);
			wikify(templateText, item, null, tiddler);
		}
	},
	getOptions: function(paramString, tiddler) {
		var args = paramString.parseParams("name", null, true, false, true)[0];
		var options = { query: false, sort: false, tag: false, template: false, showBags: args.show || false,
			hideBags: args.hide || false, filter: false, spaceField: "bag", searchField: "title", fat: false,
			emptyMessage: false };
		for(var name in args) {
			if(name != "name") {
				if(name == "fat") {
					options[name] = true;
				} else {
					options[name] = args[name][0];
				}
			}
		}
		// if user has set searchField to modifier, then use the modifiers value if available otherwise use searchValues.
		var searchField = options.searchField;
		var searchValues = args[searchField] ? args[searchField] : args.searchValues;
		// if neither of those were used use the first parameter
		var defaultValues = tiddler ? [ tiddler.title ] : [];
		options.searchValues = searchValues ? searchValues : ( args.name ? [args.name[0]] : defaultValues);
		return options;
	},
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var container = $("<div />").addClass("scanResults resultsArea").appendTo(place)[0];
		var options = scanMacro.getOptions(paramString, tiddler);
		scanMacro.scan(container, options);
	}
};

var followersMacro = config.macros.followers = {
	locale: {
		loggedOut: "Please login to see the list of followers",
		noSupport: "We were unable to retrieve followers as your browser does not support following.",
		pleaseWait: "Please wait while we look this up...",
		error: "Error %0 occurred whilst retrieving data from server",
		noone: "None."
	},
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var locale = followersMacro.locale;
		var args = paramString.parseParams("name", null, true, false, true)[0];
		var username = args.name ? args.name[0] : false;
		var container = $('<div class="followers" />').text(locale.pleaseWait).
			appendTo(place)[0];
		var followersCallback = function(user) {
			if(user.anon) {
				$("<span />").text(locale.loggedOut).appendTo(container);
			} else {
				var options = scanMacro.getOptions(paramString);
				$.extend(options, {
					url: "/search?q=title:@%0 OR title:%0 tag:%1 _limit:%2".
						format(user.name, followMacro.followTag, LIMIT_FOLLOWING),
					spaceField: "bag",
					template: options.template ? options.template : "FollowersTemplate"
				});
				scanMacro.scan(container, options);
			}
		};
		return !username ? followersCallback({ name: currentSpace }) : followersCallback({ name: username });
	}
};

var followingMacro = config.macros.following = {
	locale: {
		pleaseWait: followersMacro.locale.pleaseWait,
		loggedOut: "Please login to see who you are following",
		noSupport: followersMacro.locale.noSupport,
		error: followersMacro.locale.error,
		noone: followersMacro.locale.noone
	},
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var locale = followingMacro.locale;
		var args = paramString.parseParams("name", null, true, false, true)[0];
		var fat = args.fat ? true : false;
		var username = args.name ? args.name[0] : false;
		var container = $('<div class="following" />').text(locale.pleaseWait).
			appendTo(place)[0];
		var followingCallback = function(user) {
			if(user.anon) {
				$("<span />").text(locale.loggedOut).appendTo(container);
			} else {
				var options = scanMacro.getOptions(paramString);
				$.extend(options, {
					url: "/search?q=bag:%0_public tag:%1 _limit:%2".format(user.name, followMacro.followTag, LIMIT_FOLLOWING),
					spaceField: "title",
					template: options.template ? options.template : "FollowingTemplate"
				});
				scanMacro.scan(container, options);
			}
		};
		return !username ? followingCallback({ name: currentSpace }) : followingCallback({ name: username });
	}
};

var linkedMacro = config.macros.linkedTiddlers = {
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var args = paramString.parseParams("anon")[0];
		var title = params[0] || tiddler.fields["server.title"] || tiddler.title;
		var tid = store.getTiddler(title);
		var containingTiddler = story.findContainingTiddler(place).getAttribute('tiddler');
		if(tid) {
			followMacro.makeButton(place, {
				spaceField: "recipe",
				url: "/bags/%0/tiddlers/%1/backlinks".format(tid.fields['server.bag'],
					encodeURIComponent(tid.title)),
				blacklisted: followMacro.getBlacklist(),
				title: title,
				containingTiddler: containingTiddler,
				user: params[1] || false,
				consultFollowRelationship: args.follow ? true : false });
		}
	}
};

if(config.options.chkFollowTiddlersIsLinkedTiddlers) {
	merge(config.macros.followTiddlers, config.macros.linkedTiddlers);
	config.shadowTiddlers.FollowTiddlersHeading = "These are the other tiddlers that link to this tiddler.";
}

})(jQuery);
//}}}
<<tiddler ReplyHere with: FunctionsITtoolbox>>
@paul,

  your _script_ is an application, standing on it's own two feet, and in need of the serious treatment and all the facilities you may invoke.

  however, in behalf of most of the learners here, the idea of a script seems too daunting, and needs simplification.  so, when i see a short sequence of commands, or a straight-forward question such as "how do i copy a file from one folder to another",  we need to think_not_ in terms of a fully-defended script, but tease out the actual requirements and make the response no more complicated than needed.

  at the risk of sounding like an apple-polisher, you do a wonderful job of steering the imprecise question to a ground where dialogue can begin.    i'm learning patience here, thank you.

  the point i'm making in the prior paragraph, and in support of the question which started this thread is when we see a sequence of three commands, and the individual wants these in a script, and how to execute the script, i'm assuming the script will be invoked from the current shell.  my practice for the last six years has been:
{{{
   $  f () { a $*; b $*; c $*; }

   $ f this that the/other
}}}
   and if "f" turns out to be useful;
{{{
   $ savef  f
}}}
  so, that in my profile:
{{{
    ... source $(yesterday)
  
    ... cp $(yesterday)  $(today)
}}}
   means
     a. i never loose a useful function, and
     b. it's there when i log in tomorrow.

  lastly,

      when a set of function start to collect around a library, tending to an application, then i don't trust them to a calendric roll call, but do this:
{{{
    $ fbdy   f g h ... x y z        > appNamelib
    $ echo appName_init  >> appNamelib
}}}
 so, that the appName_init function may source other libraries, and heaven forfend, set some environment variables.    

  cheers,

 -=*++ marty
/*{{{*/
body {
	font-size: 1em;
	font-family: helvetica, arial, sans-serif;
	background-color: #fff;
	color: [[ColorPalette::Foreground]];
}

body ul { margin: 0; }

#popup {
	background-color: [[ColorPalette::TertiaryPale]];
}

#popup.confirmationPopup, .followList {
	font-size: 0.8em;
	padding: 1em;
	border: solid 1px [[ColorPalette::SecondaryMid]];
	background-color: [[ColorPalette::SecondaryPale]];
}

.followList .listTitle {
	text-decoration: underline;
}

#popup .followTiddlersList a {
	display: inline;
	padding: 0;
}

#popup li a {
	color: [[ColorPalette::PrimaryMid]];
	font-weight: bold;
}

#popup li a:hover {
	color: [[ColorPalette::PrimaryPale]];
	background: [[ColorPalette::PrimaryMid]];
}

#popup li.listTitle {
	border-bottom: 1px solid #000;
	font-weight: bold;
	margin-bottom: 10px;
}

#popup.followList {
	margin-left: 50px;
	margin-top: -30px;
}

.followTiddlersList .label {
	display: block;
	left: 10px;
	top: 0px;
	line-height: 16px;
	position: relative;
}

#popup .followTiddlersList .siteIcon{
	height: auto;
}

#popup .followTiddlersList li{
	clear: both;
	display: block;
	height: 48px;
	margin-bottom: 8px;
	position: relative;
}

#popup .followTiddlersList a{
	display: inline;
}

#displayArea {
	margin: 0;
	top: 0px;
	left: 0px;
	width: 100%;
	position: relative;
}

.revisionCloak {
	position: absolute;
	position: fixed !important;
	height: 100%;
	width: 100%;
	top: 0;
	left: 0;
	border: 0;
	margin: 0;
	padding: 0;
	opacity: 0.5;
	filter: alpha(opacity=50);
	background-color: #000;
}

/* *** Header *** */
.header {
	position: relative;
	background-color: [[ColorPalette::PrimaryMid]];
	_width: 100%; /* ie 6 demands */
}

.headerForeground {
	background-color: [[ColorPalette::PrimaryMid]];
	float: left;
	margin: 24px 16px 0px 72px;
	padding: 0;
	position: relative;
	top: 0;
	_width: 70%; /*ie6: needed for the background to actually be transparent*/
	_background-color: transparent; /*ie6: needed to show the search box*/
}

.clearFloat {
	clear: both;
}

#contentWrapper {
	position: relative;
	padding-top: 1px;
	top: -1px;
}

#tiddlerDisplay {
	_position: relative; /* ie 6*/
}

.siteTitle {
	clear: both;
	display: block;
	font-size: 32px;
	font-weight: bold;
	line-height: 32px;
}

.siteSubtitle {
	display: block;
	font-size: 14px;
	height: 16px;
	margin-bottom: 8px;
}

#sidebarSearch {
	padding: 0;
	position: absolute;
	right: 80px;
	top: 8px;
	width: 176px;
}

#sidebarSearch .txtOptionInput {
	width: 100%;
	margin-top: 5px;
	_color: #bbb; /* ie6 danger */
}

#sidebarSearch .txtOptionInput:focus {
	color: #000;
}

#sidebarSearch .searchButton {
	display: none;
}

/* *** Menu Bar *** */

#mainMenu {
	position: static;
	text-align: left;
	margin-left: 72px;
	float: left;
	width: auto;
	padding: 0;
	font-size: 1em;
	line-height: normal;
}

#mainMenu a {
	color: #fff;
	padding: 8px;
	font-size: 0.9em;
	margin-right: 16px;
}

#mainMenu a:hover {
	background-color: [[ColorPalette::PrimaryMid]];
	color: [[ColorPalette::Background]]
}

#sidebarOptions {
	margin-right: 72px;
	float: right;
	font-size: 1.1em;
	line-height: 1.6em;
	min-height: 1em;
	padding-top: 0;
}

#sidebarOptions a {
	margin-right: 8px;
}

.confirmationPopup .button,
#sidebarOptions .button {
	cursor: pointer;
	line-height: 1.4em;
	text-align: center;
	margin-right: 8px;
	margin-left:-2px;
}

.confirmationPopup .button {
	font-size: 0.9em;
	padding: 2px;
}

#sidebarOptions .button {
	font-size: 0.7em;
	float: left;
	width: 80px;
	padding: 0px;
        color: #fff;
}

.confirmationPopup a.button,
#sidebarOptions a {
	border: none;
	margin: 0 0.2em;
	padding: 0.6em 0.25em;
	display: inline;
	color: #666;
}

.confirmationPopup a.button:hover,
#sidebarOptions a:hover {
	color: #000;
}

.confirmationPopup a.button:active,
#sidebarOptions a:active {
	border: solid 1px [[ColorPalette::PrimaryMid]];
	background-color: #fff;
	background: -webkit-gradient( linear, left bottom, left top, color-stop(0.1,rgb(200,200,200)), color-stop(1, rgb(100,100,100)));
	background: -moz-linear-gradient(center bottom , rgb(200,200,200) 10%,rgb(100,100,100) 100%) repeat scroll 0 0 transparent;
}
/* *** Sidebar *** */

#sidebar .wizard table {
	margin: 0px;
}

.tabContents .listTitle:first-child {
	margin-top: 0px;
}

#menuBar {
	background: [[ColorPalette::PrimaryLight]];
	left: 0;
	right: 0;
	position: relative;
	margin: 0;
	padding: 0.5em 0 0.5em 0;
	min-height: 1em;
	overflow: hidden;
	_width: 100%; /* for ie 6 */
}

#sidebarOptions a.button:hover {
	color: [[ColorPalette::PrimaryPale]];
    background: [[ColorPalette::PrimaryMid]];
}

#tiddlerDisplay, #searchResults {
	margin: 16px 448px 0 72px;
}

#sidebarTabs {
	position: absolute;
	right: 72px;
	width: 352px;
	top: 0;
}

#sidebarTabs .tabsetWrapper .tabset {
	width: 87px;
	border-top: 1px solid [[ColorPalette::PrimaryPale]];
	border-left: 1px solid [[ColorPalette::PrimaryPale]];
	border-bottom: 1px solid [[ColorPalette::PrimaryPale]];
	height: auto;
	float: left;
	word-wrap: break-word;
	top: 0;
	padding: 0;
}

#sidebarTabs .tabsetWrapper .tabContents {
	background-color: [[ColorPalette::PrimaryPale]];
	border: 3px solid [[ColorPalette::PrimaryMid]];
	width: 242px;
	_width: 238px;
	left: -3px;
	_left: -5px;
	position: relative;
	min-height: 34em;
	padding: 8px;
	font-size: 0.8em;
}

/* ---- Side style --- */

#sidebarTabs .tabsetWrapper .tabset .tab {
	font-size: 0.9em;
	padding: 0.7em 8px 0.5em;
	color: #fff;
	background: [[ColorPalette::PrimaryLight]];
	border: none;
	line-height: 16px;
	position: relative;
	display: block;
	margin: 0;
}

#sidebarTabs .tabsetWrapper .tabset .tabSelected {
	color: [[ColorPalette::PrimaryMid]];
	background: [[ColorPalette::PrimaryPale]];
	border-top: 3px solid [[ColorPalette::PrimaryMid]];
	border-bottom: 3px solid [[ColorPalette::PrimaryMid]];
	border-left: 3px solid [[ColorPalette::PrimaryMid]];
	z-index: 10;
	margin-top: -1px;
	font-weight: bold;
}

#sidebarTabs .tabContents li {
	border: none;
	margin-left: 0;
	word-wrap: break-word;
}

.tabContents .timeline {
	background: [[ColorPalette::PrimaryPale]];
	margin-bottom: 8px;
}

#sidebarTabs .timeline li.listTitle {
	color: #132E43;
	margin-left: 8px 0;
	padding: 0.3em 0.11em;
	font-size: 1em;
	border-bottom: none;
}

#sidebarTabs .tabContents li a {
	display: block;
	text-align: left;
	margin: 0 0 1px 0;
	padding: 0.3em 1em;
	background: [[ColorPalette::PrimaryPale]];
}

#sidebarTabs .tabsetWrapper .tabset a:hover,
#sidebarTabs .tabContents li a:hover {
	color: [[ColorPalette::PrimaryPale]];
	background: [[ColorPalette::PrimaryMid]];
}

/* Activity Stream */
#sidebarTabs .tabContents .activityStream .feedItem a {
	display: inline-block;
	padding: 0;
	background: none;
}

/* ---- Tagging box --- */
.tagInfo {
	border: 1px solid #cccccc;
	padding: 10px 15px;
	-moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
	box-shadow: 0 2px 2px rgba(0,0,0,0.2);
	color: [[ColorPalette::TertiaryMid]];
	background: -moz-linear-gradient(100% 100% 90deg, #f4f4f4, #e5e5e5);
	background: -webkit-gradient(linear, left top, right top, from(#e5e5e5), to(#f4f4f4));
	margin-top: 1em;
	font-size: 13px;
	margin: 0 0 0 56px;
}

.tagInfo ul {
	list-style: none;
	padding-left: 2.2em;
}

.tagInfo ul li {
	display: inline;
}

.tagInfo ul li.listTitle,
.tagInfo .tagging ul li.listTitle {
	color: [[ColorPalette::PrimaryMid]];
	font-size: 13px;
}

.tagInfo ul li a {
	border: none;
}

.tagInfo .tagging ul li {
	float: none;
	display: inline-block;
}

.tagInfo .tagging {
	padding: 0;
}

.viewRevision .toolbar {
	right: 48px;
	top: 8px;
}

.viewRevision .modifierIcon img,
.viewRevision .modifierIcon svg {
	margin-right: 8px;
}

.viewRevision .toolbar svg {
	width: 32px;
	height: 32px;
}

/* --- IE hacks from lattice --- */

/* ie hacks */
* html #menuBar {
	margin-bottom: 8px;
}
.toolbar .svgIconText {
	*display: inline;
}

div.tiddler .toolbar a {
	cursor: pointer;
	float: left\9;
	display: inline\9;
}

* html .toolbar {
	right: 8px;
}
* html .followButton a {
	margin-top: 0px;
	margin-right: 8px;
}
* html #tiddlerDisplay {
	margin-top: 0px;
}

/* for printing purposes */
@media print {
	#mainMenu,
	#sidebar,
	#messageArea,
	.toolbar,
	.followPlaceHolder,
	#backstageButton,
	#backstageArea,
	#sidebarTabs,
	#sidebarSearch .txtOptionInput,
	#sidebarOptions {
		display: none !important;
	}
	#displayArea {
		margin: 1em 1em 0em;
	}
	noscript {
		display:none; /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
	}
	#tiddlerDisplay {
		margin: 16px 16px;
	}
}

@media all and (max-width: 960px){
	#tiddlerDisplay,
	#searchResults {
		margin: 16px 366px 0 16px;
	}

	#mainMenu {
		margin-left: 16px;
	}

	.headerForeground {
		margin-left: 16px;
	}

	#sidebarSearch {
		right: 16px;
	}

	#sidebarOptions {
		margin-right: 16px;
	}

	#sidebarTabs {
		right: 16px;
		width: 326px;
	}

	#sidebarTabs .tabsetWrapper .tabset {
		font-size: 0.9em;
		width: 77px;
	}

	#sidebarTabs .tabsetWrapper .tabContents {
		width: 226px;
		_width: 222px;
	}

	#sidebarTabs .tabContents li a {
		font-size: 0.9em;
	}
}
/*}}}*/
[[StyleSheetTiddler]]
(function() {
var getCSRFToken = function(window) {
	// XXX: should not use RegEx - cf.
	// http://www.quirksmode.org/js/cookies.html
	// https://github.com/TiddlySpace/tiddlyspace/commit/5f4adbe009ed4bda3ce39058a3fb07de1420358d
	var regex = /^(?:.*; )?csrf_token=([^(;|$)]*)(?:;|$)/;
	var match = regex.exec(document.cookie);
	var csrf_token = null;
	if (match && (match.length === 2)) {
		csrf_token = match[1];
	}

	return csrf_token;
};

if (typeof config !== 'undefined' && config.extensions &&
		config.extensions.tiddlyspace &&
		config.extensions.tiddlyspace.getCSRFToken === null) {
	config.extensions.tiddlyspace.getCSRFToken = getCSRFToken;
} else {
	window.getCSRFToken = getCSRFToken;
}
})(window);
[[Node.js|http://nodejs.org/api/documentation.html]] has established a [[Stability Index|NodeJsStabilityIndex]] with [[Color codes|http://nodejs.org/api/documentation.html#documentation_stability_index]] for the levels.  Seems like a good idea to steal.
| N | RGB | means |
| 0 | #D60027 |Deprecated |
| 1 | #~EC5315 |Experimental  |
| 2 | #~FFD700  |Unstable |
| 3 | #~AEC516 |Stable |
| 4 | #009431 |API Frozen |
| 5 | #0084B6 |Locked |
!!SecurityStuff:
*[[Java Security Threat|http://www.infoworld.com/t/security/why-the-java-threat-rang-every-alarm-211061]]  -- Infoworld article
ToEvaluate:
*[[Vagrant|http://vagrantup.com/]] -- from //the band//.
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="434 218 68 68"
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
	<g>
		<path d="M 478.39694 232.53705 L 478.39694 232.53705 
		C 477.1145 231.85132 475.77875 231.30147 474.41058 230.88734 L 474.41058 218.24994 L 461.58942 218.24994 
		L 461.58942 230.88734 C 460.22125 231.30147 458.8855 231.85132 457.60306 232.53705 L 448.66824 223.60214 
		L 439.6022 232.66814 L 448.53717 241.60304 C 447.8515 242.8854 447.30157 244.22116 446.88745 245.58936 
		L 434.25 245.58936 L 434.25 258.41052 L 446.88745 258.41052 
		C 447.30157 259.77869 447.8515 261.11447 448.53717 262.39688 L 439.6022 271.33173 L 448.66824 280.3978 
		L 457.60306 271.46283 C 458.8855 272.14862 460.22125 272.69846 461.58942 273.11252 L 461.58942 285.74988 
		L 474.41058 285.74988 L 474.41058 273.11252 C 475.77875 272.69846 477.1145 272.14862 478.39694 271.46283 
		L 487.33176 280.3978 L 496.39767 271.33173 L 487.46286 262.39688 
		C 488.14853 261.11447 488.69836 259.77869 489.11255 258.41052 L 501.74988 258.41052 L 501.74988 245.58936 
		L 489.11255 245.58936 C 488.69836 244.22116 488.14853 242.8854 487.46286 241.60304 L 496.39767 232.66814 
		L 487.33176 223.60214 Z M 475.3328 244.66714 C 479.3825 248.71698 479.3825 255.2829 475.3328 259.33273 
		C 471.28296 263.3826 464.71704 263.3826 460.66724 259.33273 
		C 456.61737 255.2829 456.61737 248.71698 460.66724 244.66714 
		C 464.71704 240.61734 471.28296 240.61734 475.3328 244.66714" fill="#111"
		class="glyph"/>
	</g>
</g>
</svg>
<<tiddler ReplyHere with: TableOfContents>>
TableofContents in some sort of order:
*[[bitmeld]]
*ADataBaseofEverything
*IntroProgramming -- tutorials, practice
*JustLinks
*LanguageFrontier
*NamespaceEnsemble
*[[node.js]]
*NowFollowing
*OntheShellLibrary
*OurHeros3
*[[PHP @ UCC|http://ucc-php.tiddlyspace.com/]]
*[[ReST, Time for a|TimeForaReST]]
*ReviewingCodeComplete
*SecurityStuff -- starting with Java kerfuffle
*ShellsYesterday
*ToEvaluate
*OnlineCourseware
*WhatsHere

[[Reply here|mailto:mcgowan@alum.mit.edu?subject=SoftwareReview:$1]][[.|ReplyHere]]
I posted [[this reply about finding yesterday with the shell|ShellsYesterday]] to the it [[ittoolbox, shell|http://unix.ittoolbox.com/groups/technical-functional/shellscript-l/how-to-display-yesterdays-date-in-unix-shell-scripting-in-this-format-aug-13-4890522?hmid=4891213&vs=true#M4891213]] group:
>  
>Dear Mz,
>
>  thank  you.  at the risk of sounding sarcastic,  i was making a point about a solution has to be more than for one shell/OS, since i routinely port between Mac OS X, where i am now, Cygwin on a netbook and two Office PCs, and Solaris, our training servers.   
>  
>  i occasionally have to do something like this:
>  =======================================
>  bin.$ set -- $(uname -sr; echo $BASH_VERSION; )
>  bin.$ echo $*
>  Darwin 10.8.0 3.2.48(1)-release
>  bin.$ case $1.$3 in Darwin.3.2.*) echo BASH 3.2 on Mac OS X;; *) echo Not Bash on OS X;; esac
>  BASH 3.2 on Mac OS X
>  bin.$ 
>  ==============================
>  where in lieu of the benign  echo command, i insert something system specific.   in this example i tested on the OS version "Darwin" is  the  "uname -s" response, and the BASH_VERSION major.minor is  3.2.
>  
>  just occasionally, the   version of  uname has inconsistent flags,  so the _real_ challenge in my work is finding the consistent set of  command flags which work across multiple OS/Shells.
>  
>  one of the reasons i like Cygwin is it is NOT dependent on a hardware manufacturer's release of an OS on their hardware.   Mac OS X isn't bad since it's BSD based, and I say that as an AT&T System V (Unix) advocate.   
>  
>  as for finding yesterday's files.   i either put them in files with a canonical date in their directory or file name.   e.g. 
>  
>  bin.$ savef cdate
>  cdate () 
>  { 
>      date +%g%m%e_%a
>  }
>  bin.$ mkdir -p $(cdate)/logfile
>  bin.$ ls -ld $(cdate)/logfile
>  drwxr-xr-x  2 applemcg  staff  68 Aug 13 14:51 120813_Mon/logfile
>  bin.$ 
>  
>  and for those who don't have the opportunity to design the directory and file layout, my advice is "make up your own naming scheme", and link the existing files into it based on the criterion of the problem.  e.g. many have already discussed the options to "find", and the age parameters, so it seems to me, most challenges are reduced to:
>  
>   a. find the files meeting your criterion,
>   b. link them to a directory structure which satisfies your ability to access it, and
>   c. apply your query on your structure.
>  
>  It's often overlooked that the unix directory structure is a powerful information resource, and >  if the existing naming scheme doesn't meet your needs, it will cost you little time and very little space to create a more useful structure with links.
>  
>  interestingly, a colleague pointed this out to me in the last year, but Cygwin offers links on the Windows file system  (since the current API permits it!)  but Windows Explorer has no way to take advantage of the link.
>  
<<closeAll>><<permaview>><<newTiddler>>
<<slider ckLatest TableofContents "Table of Contents">>
<<tiddler GMTclock>>
<<tiddler ShellHangouts>>
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
<!--{{{-->
<div class='toolbar'
	macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'>
</div>
<div class='heading'>
	<span class='spaceSiteIcon'
		macro='tiddlerOrigin label:no spaceLink:yes height:48 width:48 preserveAspectRatio:yes'>
	</span>
	<span class="titleBar">
		<div class='title' macro='view title text'></div>
		<span class="subtitle" macro='viewRevisions page:5'>
			last modified on
			<span macro="view modified date"></span>
		</span>
		<div macro="view title replyLink"></div>
	</span>
	<span class='followPlaceHolder' macro='followTiddlers'></span>
	<span class='modifierIcon'
		macro='view modifier SiteIcon label:no spaceLink:yes height:48 width:48 preserveAspectRatio:yes'>
	</span>
	<div class='tagClear'></div>
</div>
<div class='content'>
	<div class='viewer' macro='view text wikified'></div>
</div>
<div class='tagInfo'>
	<div class='tidTags' macro='tags'></div>
	<div class='tagging' macro='tagging'></div>
</div>
<!--}}}-->
* where is the bi-conditional, pro or con?   the syntax: 
{{{   boolean ? code-if-true : code-if-false ; }}}
** -- variously called,  ternary operator, conditional operator, bi-conditinal, ..   "C++s only ternary"
** - absence is a credibility-challenging oversight
** - along with themes, there are any # of places, it adds clarity.
* why condemn FactorialRecursion? (p. 397)
**  - the first (disparaged recursive) factorial version is incomplete;  it fails as a negative example of recursion, and
**  - the use of factorial is among the easiest way to teach recursion, so, before anyone "hires someone else", ask the person who's using it "Why?"
**  - the second, and iterative example, introduces a superfluous variable, and thereby
***  -- misses an opportunity to teach a not-too-difficult to appreciate programming paradigm:  use an input argument as a loop control index, and
***  -- makes the code more, not less opaque  
* where is "concision"; it's not in the index.
**  - length of { loop, code, block, "lots of code", ... } is subordinate to "concision";  while a firm metric like lines of code is easier to measure, it's not the important one.  concision, harder to measure is easier to appreciate.  for example:  how many consecutive lines of assignments does it take to become in-concise?   i don't have an answer, but probably no more lines than the maximum # of args to a function call.
**  - why do i subordinate the //lines of code// metric to //concision//?  lines-of-code misses the point of  the problem with a long block.   an un-wrapped do-loop of any length is more concise than a few disparate function calls. remember the MM Aerospace quality mgr, who asked, "How long should a function be?"   I had no answer.  but now i know why.
*no page reference on this one, but it's in there:  //in an if-then-else test, make the boolean a positive assertion//.   the implication is to avoid cluttering the statement with error-prone negations and compounding syntax.   I disagree.  My choice is //arrange the test to put the shorter code block first//.  And a corrolary:  //if the test requires a negative, rephrase it//.   e.g. in Tcl, replace {{{  if { ! [info exists ...something...] } { ... } }}}, which uses Tcl "not" operator (''!''), with the statement {{{ if [infoNOTexists  ...something...] { ... } }}}.  This has the salutary effect of saying what you are looking for, but, in Tcl's case eliminating the the syntax necessitated extra wrapper: {{{ { ! ... } }}} -- from [[communications|OntheSenseoftheBooleaninIfThenElse]] with AlShelinsky.
!!On the PLUS side:
*+ p. 380 the "erroneous break" example
**   the statement there is akin to the cause of the Mon, [[Jan 15, 1990 long-distance telephone network disaster.|http://www.google.com/search?q=Jan%2015%2C%201990%20long-distance%20telephone%20network%20disaster.]] and i've [[posted a comment here|http://www.chronicle.su/editorial/sony-and-att-a-historical-connection/]]
*+ A mighty agreement with the 0, 1 advice:
**  any number other than ZERO or ONE in the body of the code (excepting the say, "#define NAME {value}" syntax is a Mistake
!!A General comment:
 ''it's too bad this is such a good book!''          
LatestStuff ADataBaseofEverything TableofContents MainMenu DefaultTiddlers
[[$1 $2|http://www.google.com/search?rls=en&q=$1+$2&ie=UTF-8&oe=UTF-8]]
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="301 225 48 52"
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
	<g>
		<path d="M 333.00003 234 L 306 258.75003 L 301.5 270 L 312.75 265.50003 L 339.75 240.74998 Z M 337.5 229.50002 
		L 335.24988 231.75008 L 341.99997 238.50003 L 344.24997 236.24995 Z M 342 225.00003 L 339.74988 227.25009 
		L 346.5 234.00005 L 348.75 231.75003 Z M 301.5 273.9719 C 301.5 273.9719 309.59888 277.99927 317.70013 273.97183 
		C 325.80066 269.94437 341.99997 276.65686 341.99997 276.65686 L 341.99997 273.97195 
		C 341.99997 273.97195 325.80014 267.2594 317.70013 271.28687 C 309.6 275.31451 301.5 271.28683 301.5 271.28683 Z" 
		fill="#101010" class="glyph"/>
	</g>
</g>
</svg>
/***
https://raw.github.com/tiddlyweb/chrjs/master/main.js
***/
//{{{
// TiddlyWeb adaptor
// v0.14.3

/*jslint vars: true, unparam: true, nomen: true, white: true */
/*global jQuery */

var tiddlyweb = (function($) {

"use strict";

var tw = {
	routes: {
		// host is the TiddlyWeb instance's URI (including server_prefix)
		// placeholders "_type" & "name" refer to the respective bag/recipe
		root     : "{host}/",
		bags     : "{host}/bags",
		bag      : "{host}/bags/{name}",
		recipes  : "{host}/recipes",
		recipe   : "{host}/recipes/{name}",
		tiddlers : "{host}/{_type}s/{name}/tiddlers",
		tiddler  : "{host}/{_type}s/{name}/tiddlers/{title}",
		revisions: "{host}/{_type}s/{name}/tiddlers/{title}/revisions",
		revision : "{host}/{_type}s/{name}/tiddlers/{title}/revisions/{revision}",
		search   : "{host}/search?q={query}"
	}
};

var convertTimestamp, supplant;

// host (optional) is the URI of the originating TiddlyWeb instance
tw.Resource = function(type, host) {
	if(arguments.length) { // initialization
		this._type = type;
		if(host !== false) {
			this.host = host !== undefined ? host.replace(/\/$/, "") : null;
		}
	}
};
$.extend(tw.Resource.prototype, {
	// retrieves resource from server
	// callback is passed resource, status, XHR (cf. jQuery.ajax success)
	// errback is passed XHR, error, exception, resource (cf. jQuery.ajax error)
	// filters is an optional filter string (e.g. "select=tag:foo;limit=5")
	get: function(callback, errback, filters) {
		var uri = this.route();
		if(filters) {
			var separator = uri.indexOf("?") === -1 ? "?" : ";";
			uri += separator + filters;
		}
		var self = this;
		return $.ajax({
			url: uri,
			type: "GET",
			dataType: "json",
			success: function(data, status, xhr) {
				var resource = self.parse(data);
				resource.etag = xhr.getResponseHeader("Etag");
				callback(resource, status, xhr);
			},
			error: function(xhr, error, exc) {
				errback(xhr, error, exc, self);
			}
		});
	},
	// sends resource to server
	// callback is passed data, status, XHR (cf. jQuery.ajax success)
	// errback is passed XHR, error, exception, resource (cf. jQuery.ajax error)
	put: function(callback, errback) {
		var self = this;
		var options = {
			url: this.route(),
			type: "PUT",
			contentType: "application/json",
			data: JSON.stringify(this.baseData()),
			success: function(data, status, xhr) {
				callback(self, status, xhr);
			},
			error: function(xhr, error, exc) {
				errback(xhr, error, exc, self);
			}
		};
		if(this.ajaxSetup) {
			this.ajaxSetup(options);
		}
		return $.ajax(options);
	},
	// deletes resource on server
	// callback is passed data, status, XHR (cf. jQuery.ajax success)
	// errback is passed XHR, error, exception, resource (cf. jQuery.ajax error)
	"delete": function(callback, errback) {
		var self = this;
		var options = {
			url: this.route(),
			type: "DELETE",
			success: function(data, status, xhr) {
				callback(self, status, xhr);
			},
			error: function(xhr, error, exc) {
				errback(xhr, error, exc, self);
			}
		};
		if(this.ajaxSetup) {
			this.ajaxSetup(options);
		}
		return $.ajax(options);
	},
	// returns an object carrying only the essential information of the resource
	baseData: function() {
		var data = {},
			self = this;
		$.each(this.data, function(i, item) {
			var value = self[item];
			if(value !== undefined) {
				data[item] = value;
			}
		});
		return data;
	},
	// returns corresponding instance from a raw object (if applicable)
	parse: function(data) {
		return data;
	},
	// list of accepted keys in serialization
	data: [],
	// returns resource's URI
	route: function() {
		return supplant(tw.routes[this._type], this);
	}
});

var Container = function(type, name, host) {
	if(arguments.length) { // initialization
		tw.Resource.apply(this, [type, host]);
		this.name = name;
		this.desc = "";
		this.policy = new tw.Policy({});
	}
};
Container.prototype = new tw.Resource();
$.extend(Container.prototype, {
	tiddlers: function() {
		return new tw.TiddlerCollection(this);
	},
	parse: function(data) {
		var type = tw._capitalize(this._type),
			container = new tw[type](this.name, this.host);
		data.policy = new tw.Policy(data.policy);
		return $.extend(container, data);
	},
	data: ["desc", "policy"]
});

// attribs is an object whose members are merged into the instance (e.g. query)
tw.Collection = function(type, host, attribs) {
	if(arguments.length) { // initialization
		tw.Resource.apply(this, [type, host]);
		$.extend(this, attribs);
	}
};
tw.Collection.prototype = new tw.Resource();

tw.TiddlerCollection = function(container, tiddler) {
	if(arguments.length) { // initialization
		tw.Collection.apply(this, [tiddler ? "revisions" : "tiddlers"]);
		this.container = container || null;
		this.tiddler = tiddler || null;
	}
};
tw.TiddlerCollection.prototype = new tw.Collection();
$.extend(tw.TiddlerCollection.prototype, {
	parse: function(data) {
		var container = this.container;
		return $.map(data, function(item, i) {
			var tiddler = new tw.Tiddler(item.title, container),
				bag = item.bag;
			tiddler = tw.Tiddler.prototype.parse.apply(tiddler, [item]);
			if(!tiddler.bag && bag) { // XXX: bag always present!?
				tiddler.bag = new tw.Bag(bag, container.host);
			}
			if(!tiddler.recipe && item.recipe) {
				tiddler.recipe = new tw.Recipe(item.recipe, container.host);
			}
			delete item.recipe;
			return $.extend(tiddler, item);
		});
	},
	route: function() {
		var params = this.container;
		if(this.tiddler) {
			var container = this.tiddler.bag || this.tiddler.recipe;
			params = {
				_type: container._type,
				host: container.host,
				name: container.name,
				title: this.tiddler.title
			};
		}
		return supplant(tw.routes[this._type], params);
	}
});

tw.Search = function(query, host) {
	tw.Collection.apply(this, ["search", host]);
	this.query = query;
};
tw.Search.prototype = new tw.Collection();
$.extend(tw.Search.prototype, {
	parse: function(data) {
		this.container = { // XXX: hacky
			_type: "bag",
			host: this.host
		};
		var tiddlers = tw.TiddlerCollection.prototype.parse.apply(this, arguments);
		delete this.container;
		return tiddlers;
	}
});

// title is the name of the tiddler
// container (optional) is an instance of either Bag or Recipe
// optionally accepts a single object representing tiddler attributes
tw.Tiddler = function(title, container) {
	tw.Resource.apply(this, ["tiddler", false]);
	this.title = title;
	this.bag = container && container._type === "bag" ? container : null;
	this.recipe = container && container._type === "recipe" ? container : null;
	var self = this;
	$.each(this.data, function(i, item) {
		self[item] = undefined; // exposes list of standard attributes for inspectability
	});
	if(title && title.title) { // title is an object of tiddler attributes
		$.extend(this, title);
	}
};
tw.Tiddler.prototype = new tw.Resource();
$.extend(tw.Tiddler.prototype, {
	revisions: function() {
		return new tw.TiddlerCollection(this.bag || this.recipe, this);
	},
	route: function() {
		var container = this.bag || this.recipe;
		var params = $.extend({}, this, {
			host: container ? container.host : null,
			_type: this.bag ? "bag" : (this.recipe ? "recipe" : null),
			name: container ? container.name : null
		});
		return supplant(tw.routes[this._type], params);
	},
	parse: function(data) {
		var tiddler = new tw.Tiddler(this.title),
			container = this.bag || this.recipe;
		if(data.bag) {
			tiddler.bag = new tw.Bag(data.bag, container.host);
			delete data.bag;
		}
		delete data.recipe;
		tiddler.created = data.created ? convertTimestamp(data.created) : new Date();
		delete data.created;
		tiddler.modified = data.modified ? convertTimestamp(data.modified) : new Date();
		delete data.modified;
		if(this.recipe) {
			tiddler.recipe = this.recipe;
		}
		return $.extend(tiddler, data);
	},
	data: ["created", "creator", "modifier", "modified", "tags", "type", "text",
			"fields"],
	ajaxSetup: function(options) {
		var self = this;
		if(this.etag && (options.type === "PUT" || options.type === "DELETE")) {
			options.beforeSend = function(xhr) {
				xhr.setRequestHeader("If-Match", self.etag);
			};
		}
		if(options.type === "PUT") {
			var callback = options.success;
			options.success = function(data, status, xhr) {
				var loc = xhr.getResponseHeader("Location"),
					etag = xhr.getResponseHeader("Etag");
				if(loc && etag) {
					self.etag = etag;
					if(!self.bag) {
						var bag = loc.split("/bags/").pop().split("/")[0];
						self.bag = new tw.Bag(bag, self.recipe.host);
					}
					callback(self, status, xhr);
				} else { // IE
					self.get(callback, options.error);
				}
			};
		}
	}
});

tw.Revision = function(id, tiddler) {
	var container = tiddler.bag || tiddler.recipe;
	tw.Tiddler.apply(this, [tiddler.title, container]);
	this._type = "revision";
	this.revision = id;
};
tw.Revision.prototype = new tw.Tiddler();
$.extend(tw.Revision.prototype, {
	revisions: false,
	data: false,
	put: false,
	"delete": false
});

tw.Bag = function(name, host) {
	Container.apply(this, ["bag", name, host]);
};
tw.Bag.prototype = new Container();

tw.Recipe = function(name, host) {
	Container.apply(this, ["recipe", name, host]);
	this.recipe = [];
};
tw.Recipe.prototype = new Container();
$.extend(tw.Recipe.prototype, {
	data: ["recipe"].concat(Container.prototype.data)
});

tw.Policy = function(constraints) { // TODO: validation?
	var self = this;
	$.each(this.constraints, function(i, item) {
		self[item] = constraints[item];
	});
};
tw.Policy.prototype.constraints = ["read", "write", "create", "delete",
	"manage", "accept", "owner"];

/*
 * utilities
 */

tw._capitalize = function(str) {
	return str.charAt(0).toUpperCase() + str.slice(1);
};

// convert YYYYMMDDhhmmss timestamp to Date instance
convertTimestamp = function(t) {
	if (t.match(/^\d{12,17}$/)) {
		return new Date(Date.UTC(
			parseInt(t.substr(0, 4), 10),
			parseInt(t.substr(4, 2), 10) - 1,
			parseInt(t.substr(6, 2), 10),
			parseInt(t.substr(8, 2), 10),
			parseInt(t.substr(10, 2), 10),
			parseInt(t.substr(12, 2) || "0", 10),
			parseInt(t.substr(14, 3) || "0", 10)
		));
	} else {
		return new Date(Date.parse(t));
	}
};

// adapted from Crockford (http://javascript.crockford.com/remedial.html)
supplant = function(str, obj) {
	return str.replace(/{([^{}]*)}/g, function (a, b) {
		var r = obj[b];
		r = typeof r === "string" || typeof r === "number" ? r : a;
		return $.inArray(b, ["host", "query"]) !== -1 ? r : encodeURIComponent(r); // XXX: special-casing
	});
};

return tw;

}(jQuery));
//}}}
don't know where the "time" went, but here's an [[epoch converter|http://www.epochconverter.com/]].   

And, for the record, when i "discovered" unix, it was 285267600.

Or, within the hour, i was born at -801057600
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AP8zZgAAAGYA//8zAADMMwD/mTMAAGYzAP8zMwAAADMAzP8AAADMAADMmQAAAGYAAMwzAAAAAADuzAAA3QAAALvMAACqAAAAiMwAAHcAAABVmQAARAAAACKZAAARAADuAJkA3QAAALsAmQCqAAAAiACZAHcAAABVAJkARAAAACIAZgARAADuAABm3QAAALsAAGaqAAAAiAAAZncAAABVAABmRAAAACIAAGYRAAAA7u7uM93d3QC7u7szqqqqAIiIiDN3d3cAVVVVM0RERAAiIiIzERERAAAAADMBAQEBAQEBAQEBpXl5eXl5eXl5eXmlAQEBAQEBAQEBAQEBAQEBAQEBgHl5eXl5eXl5eXl5eXl5gAEBAQEBAQEBAQEBAQEB/Xp5eXlVT04qKioqTk9VeXl5ev0BAQEBAQEBAQEBAaV5eXlPKioqKioqKioqKioqT3l5eaUBAQEBAQEBAQGAeXlVTioqKioqKioqKioqKioqTlV5eYABAQEBAQEBgHl5VSoqKioqKioqKioqKioqKioqKlV5eYABAQEBAaV5eVUqKioqKioqKioqKioqKioqKioqKlV5eaUBAQEBeXlVKioqKioqKioqKioqKioqKioqKioqKlV5eQEBAXl5eU4qKioqKioqKjExMTExMSoqKioqKioqTnl5eQEBeXlPKioqKioqKjEyMjIyMjIyMjEqKioqKioqT3l5AXp5eSoqKioqKioxMjIxBwcHBzEyMjEqKioqKioqeXl6eXlVKioqKioqMTIxBwcHBwcHBwcxMjEqKioqKipVeXl5eU8qKioqKioyMgcHBwcHBwcHBwcyMioqKioqKk95eXl5TioqKioqMTIxBwcHBwcHBwcHBzEyMSoqKioqTnl5eXkqKioqKioxMgcHBwcHBwcHBwcHBzIxKioqKioqeXl5eSoqKioqKjEyBwcHBwcHBwcHBwcHMjEqKioqKip5eXl5KioqKioqMTIHBwcHBwcHBwcHBwcyMSoqKioqKnl5eXkqKioqKioxMgcHBwcHBwcHBwcHBzIxKioqKioqeXl5eU4qKioqKjEyMQcHBwcHBwcHBwcxMjEqKioqKk55eXl5TyoqKioqKjIyBwcHBwcHBwcHBzIyKioqKioqT3l5eXlVKioqKioqMTIxBwcHBwcHBwcxMjEqKioqKipVeXl6eXkqKioqKioqMTIyMQcHBwcxMjIxKioqKioqKnl5egF5eU8qKioqKioqMTIyMjIyMjIyMSoqKioqKipPeXkBAXl5eU4qKioqKioqKjExMTExMSoqKioqKioqTnl5eQEBAXl5VSoqKioqKioqKioqKioqKioqKioqKipVeXkBAQEB+nl5VSoqKioqKioqKioqKioqKioqKioqVXl5+gEBAQEBenl5VSoqKioqKioqKioqKioqKioqKlV5eXoBAQEBAQEBeXl5VU4qKioqKioqKioqKioqKk5VeXl5AQEBAQEBAQEBenl5eU8qKioqKioqKioqKipPeXl5egEBAQEBAQEBAQEB+nl5eXlVT04qKioqTk9VeXl5efoBAQEBAQEBAQEBAQEBAXl5eXl5eXl5eXl5eXl5eXkBAQEBAQEBAQEBAQEBAQEBAQF6eXl5eXl5eXl5eXoBAQEBAQEBAQEB/+AH//+AAf/+AAB//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADgAAAAYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAHAAAADwAAAA+AAAAfwAAAP+AAAH/wAAD/+AAB//4AB///gB/8oAAAAIAAAAEAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAwAAAAMAAAADAAAABG1bSA61m3JXuqB4mbuhd8m9o3jqvaF4+b2hePm9o3jqu6F3ybqgeJm1m3JXbVtIDgAAAAQAAAADAAAAAwAAAAMAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAUAAAAGAAAACI98Wye0nXWavKF4876kev++pHr/vqR6/76kev++pHr/vqR6/76kev++pHr/vqR6/76kev+8oXjztJ11mo98WycAAAAIAAAABgAAAAUAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAQAAAAHAAAAChwcHBKulnGJvaN5+L6kev++pHr/y7GJ/9/Fnv/s1K7/9t25//rivv/64r7/9t25/+zUrv/fxZ7/y7GJ/76kev++pHr/vaN5+K6WcYkcHBwSAAAACgAAAAcAAAAEAAAAAgAAAAEAAAAAAAAAAAAAAAEAAAADAAAABwAAAAtuYkUst552z76kev++pHr+1LuS//Latf/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD/8tq1/9S7kv++pHr+vqR6/7eeds9uYkUsAAAACwAAAAcAAAADAAAAAQAAAAAAAAABAAAAAgAAAAQAAAAIi3hbNbqgd+a+pHr/xayD/+3Vr//85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+3Vr//FrIP/vqR6/7qgd+aJdVg0AAAACAAAAAQAAAACAAAAAQAAAAEAAAACAAAABIl8WSW8oXjlvqR6/8yyiv/54Lz//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//ngvP/Msor/vqR6/7yheOWJfFklAAAABAAAAAIAAAABAAAAAAAAAAFfXz8Iu6F4zL6kev/Msor/+uK+//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//rivv/Msor/vqR6/7uheMxfXz8IAAAAAQAAAAAAAAAAAAAAAbqid4K+pHr/xayD//ngvP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//fgvP/FrIP/vqR6/7qid4IAAAABAAAAAAAAAAC3l28gvaN5+L6kev7t1a///OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+/Twv/Qq8f/u5HK/7OGzP+zhsz/u5HK/9Crx//v08L//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+3Vr/++pHr+vaN5+LeXbyAAAAAAAAAAALuheJa+pHr/1LuS//zlwP/85cD//OXA//zlwP/85cD//OXA//riwP/Pq8f/r4HM/6+Bzf+vgc3/r4HN/6+Bzf+vgc3/r4HN/6+BzP/Pq8f/+uLA//zlwP/85cD//OXA//zlwP/85cD//OXA/9S5kv++pHr/u6F4lgAAAACii3MLvKF4876kev/y2rX//OXA//zlwP/85cD//OXA//zlwP/64sD/w5vJ/6+Bzf+vg83/w5vc/9W06v/dwPD/3cDw/9W06v/Dm9z/r4PN/6+Bzf/Dm8n/+uLA//zlwP/85cD//OXA//zlwP/85cD/8tq1/76kev+8oXjzootzC72feFW+pHr/y7GJ//zlwP/85cD//OXA//zlwP/85cD//OXA/8+rx/+vgc3/tIfQ/9a16//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Wtev/tIfQ/6+Bzf/Pq8f//OXA//zlwP/85cD//OXA//zlwP/85cD/y7GJ/76kev+9n3hVvaF4mL6kev/fxZ7//OXA//zlwP/85cD//OXA//zlwP/v08L/r4HM/6+Dzf/Wtev/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Wtev/r4PN/6+BzP/v08L//OXA//zlwP/85cD//OXA//zlwP/fxZ7/vqR6/72heJi8oXfIvqR6/+zUrv/85cD//OXA//zlwP/85cD//OXA/9Crx/+vgc3/w5vc/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Dm9z/r4HN/9Crx//85cD//OXA//zlwP/85cD//OXA/+zUrv++pHr/vKF3yL2jeOq+pHr/9t25//zlwP/85cD//OXA//zlwP/85cD/u5HK/6+Bzf/VtOr/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/9W06v+vgc3/u5HK//zlwP/85cD//OXA//zlwP/85cD/9t25/76kev+9o3jqvaF4+b6kev/64r7//OXA//zlwP/85cD//OXA//zlwP+zhsz/r4HN/93A8P/hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/3cDw/6+Bzf+zhsz//OXA//zlwP/85cD//OXA//zlwP/64r7/vqR6/72hePm9oXj5vqR6//rivv/85cD//OXA//zlwP/85cD//OXA/7OGzP+vgc3/3cDw/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//dwPD/r4HN/7OGzP/85cD//OXA//zlwP/85cD//OXA//rivv++pHr/vaF4+b2jeOq+pHr/9t25//zlwP/85cD//OXA//zlwP/85cD/u5HK/6+Bzf/VtOr/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/9W06v+vgc3/u5HK//zlwP/85cD//OXA//zlwP/85cD/9t25/76kev+9o3jqvKF3yL6kev/s1K7//OXA//zlwP/85cD//OXA//zlwP/Qq8f/r4HN/8Ob3P/hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/w5vc/6+Bzf/Qq8f//OXA//zlwP/85cD//OXA//zlwP/s1K7/vqR6/7yhd8i9oXiYvqR6/9/Fnv/85cD//OXA//zlwP/85cD//OXA/+/Twv+vgcz/r4PN/9a16//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/9a16/+vg83/r4HM/+/Twv/85cD//OXA//zlwP/85cD//OXA/9/Fnv++pHr/vaF4mL2feFW+pHr/y7GJ//zlwP/85cD//OXA//zlwP/85cD//OXA/8+rx/+vgc3/tIfQ/9a16//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Wtev/tIfQ/6+Bzf/Pq8f//OXA//zlwP/85cD//OXA//zlwP/85cD/y7GJ/76kev+9n3hVootzC7yhePO+pHr/8tq1//zlwP/85cD//OXA//zlwP/85cD/+uLA/8Obyf+vgc3/r4PN/8Ob3P/VtOr/3cDw/93A8P/VtOr/w5vc/6+Dzf+vgc3/w5vJ//riwP/85cD//OXA//zlwP/85cD//OXA//Latf++pHr/vKF486KLcwsAAAAAu6N3l76kev/Uu5L//OXA//zlwP/85cD//OXA//zlwP/85cD/+uLA/8+rx/+vgcz/r4HN/6+Bzf+vgc3/r4HN/6+Bzf+vgc3/r4HM/8+rx//64sD//OXA//zlwP/85cD//OXA//zlwP/85cD/1LmS/76kev+7oXiWAAAAAAAAAAC3l28gvaN5+L6kev7t1a///OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+/Twv/Qq8f/u5HK/7OGzP+zhsz/u5HK/9Crx//v08L//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+3Vr/++pHr+vaN5+LeXbyAAAAAAAAAAAAAAAAC6oneCvqR6/8Wsg//54Lz//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/34Lz/xayD/76kev+6oneCAAAAAAAAAAAAAAAAAAAAAH9/VQa8oHjLvqR6/8yyiv/64r7//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD/+uK+/8yyiv++pHr/vKB4y39/VQYAAAAAAAAAAAAAAAAAAAAAAAAAALKhbh67o3nkvqR6/8yyiv/54Lz//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//ngvP/Msor/vqR6/7ujeeSyoW4eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALqbdim7o3nkvqR6/8Wsg//t1a///OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/t1a//xayD/76kev+7o3nkupt2KQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALKhbh68oHjLvqR6/76kev7Uu5L/8tq1//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/y2rX/1LmS/76kev6+pHr/vKB4y7Khbh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/VQa6oneCvaN5+L6kev++pHr/y7GJ/9/Fnv/s1K7/9t25//rivv/64r7/9t25/+zUrv/fxZ7/y7GJ/76kev++pHr/vaN5+Lqid4J/f1UGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3l28gu6F4lryhePO+pHr/vqR6/76kev++pHr/vqR6/76kev++pHr/vqR6/76kev++pHr/vKF487uheJa3l28gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAootzC72feFW9oXiYvKF3yL2jeOq9oXj5vaF4+b2jeOq8oXfIvaF4mL2feFWii3MLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gB///gAH//gAAf/wAAD/4AAAf8AAAD+AAAAfAAAADwAAAA4AAAAGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/gAAB/8AAA//gAAf/+AAf//4Af/
Growing from our recent memory of SingleSource for documentation, and having a pilot version of [[Author-It|http://www.author-it.com/]], I'm collecting free alternatives, with a bias towards a LMS.
!!requirements (attributes):
#free
#multi-platform (incl Mac OS X)
#open API, e.g. export/import, curl, REST, ...
#ease of integrating author's writing, including questions (see below), and screen-,  snap-, video - shots on a drag-and-drop interface.  SHOUTING: ''no Cut-and-Paste, no Downloading, minimal distraction from content creation''
# ...
#SCORM - compliant
# ...
!!alphabetically:
*[[Authoring System(s) -- Wikipedia|http://en.wikipedia.org/wiki/Authoring_systems]]
**[[List of LMS|http://en.wikipedia.org/wiki/List_of_learning_management_systems]] -- basis of much of what follows
*[[BigWig Introduction|http://www.brics.dk/bigwig/introduction/]]
**[[the <bigwig> project|http://www.brics.dk/bigwig/publications/bigwig/]]
*[[Chamillo|http://www.chamilo.org/]] -- built on ...
*[[Dokeos|http://en.wikipedia.org/wiki/Dokeos]]
*[[Drupal|http://drupal.org]] -- //only// a CMS
*[[Hollywood|http://www.hollywood-mal.com/]] --  interesting, too Amiga-ish?
*[[Latex|http://www.latex-project.org/]] and LaTex
*[[SCORM|http://en.wikipedia.org/wiki/SCORM]]
 
!!by my level of interest:
 
/***
|''Name''|BinaryUploadPlugin|
|''Version''|0.3.16|
|''Author''|Ben Gillies and Jon Robson|
|''Type''|plugin|
|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/BinaryUploadPlugin.js|
|''Description''|Upload a binary file to TiddlyWeb|
|''CoreVersion''|2.6.1|
|''Requires''|TiddlySpaceConfig TiddlyWebConfig|
!Usage
{{{
<<binaryUpload bag:<name> edit:tags edit:title tags:<default tags> title:<title> >>
}}}
* {{{bag:<name>}}}: optional; if left out, the file will be saved to the current workspace
* {{{edit:tags}}}: specifies that you want to tag the file being uploaded
* {{{edit:title}}}: specifies that you want to set the title to something other than the filename
* {{{tags:<default tags>}}}: specifies a default set of tags to apply to the file (requires {{{edit:tags}}} to be set)
* {{{title:<title>}}}: predefines the title of the binary tiddler
!Requires
TiddlyWeb
tiddlywebplugins.form
!Code
***/
//{{{
(function($) {

var tiddlyspace = config.extensions.tiddlyspace;

var macro = config.macros.binaryUpload = {
	locale: {
		titleDefaultValue: "Please enter a title...",
		tagsDefaultValue: "Please enter some tags...",
		titlePrefix: "title: ",
		tagsPrefix: "tags: ",
		loadSuccess: 'Tiddler %0 successfully uploaded',
		loadError: "An error occurred when uploading the tiddler %0",
		uploadInProgress: "Please wait while the file is uploaded...",
		membersOnly: "Only members can upload."
	},
	renderInputFields: function(container, options) {
		var locale = macro.locale;
		var editableFields = options.edit;
		var includeFields = {
			tags:  editableFields && editableFields.contains("tags") ? true : false,
			title: editableFields && editableFields.contains("title") ? true : false
		};
		var fields = ["title", "tags"];
		for(var i = 0; i < fields.length; i++) {
			var fieldName = fields[i];
			var userDefault = options[fieldName];
			var defaultValue = userDefault ? userDefault[0] : false;
			if(includeFields[fieldName] || defaultValue) {
				var localeDefault = locale["%0DefaultValue".format(fieldName)];
				var className = defaultValue ? "userInput" : "userInput notEdited";
				var inputEl;
				var val = defaultValue || localeDefault || "";
				var iContainer = $("<div />").addClass("binaryUpload%0".format(fieldName)).
					appendTo(container);
				if(defaultValue && !includeFields[fieldName]) {
					var label = locale["%0Prefix".format(fieldName)];
					$("<span />").text(label).appendTo(iContainer);
					$("<span />").addClass("disabledInput").text(val).appendTo(iContainer);
					inputEl = $("<input />").attr("type", "hidden");
				} else {
					inputEl = $("<input />").attr("type", "text");
				}
				inputEl.attr("name", fieldName).
					addClass("%0Edit".format(fieldName)).
					val(val).addClass(className).appendTo(iContainer);
			}
		}
	},
	getTiddlerName: function(fileName) {
		var fStart = fileName.lastIndexOf("\\");
		var fStart2 = fileName.lastIndexOf("/");
		fStart = fStart < fStart2 ? fStart2 : fStart;
		fileName = fileName.substr(fStart+1);
		return fileName;
	},
	errorHandler: function(fileName) {
		displayMessage("upload of file %0 failed".format(fileName));
	},
	uploadFile: function(place, baseURL, workspace, options) {
		var pleaseWait = $(".uploadProgress", place);
		var iframeName = options.target;
		var form = $("form", place);
		var existingVal = $("input[name=title]", form).val();
		var fileName = existingVal || $('input:file', form).val();
		if(!fileName) {
			return false; // the user hasn't selected a file yet
		}
		fileName = macro.getTiddlerName(fileName);
		$("input[name=title]", place).val(fileName);
		// we need to go somewhere afterwards to ensure the onload event triggers
		var redirectTo = "/%0/tiddlers.txt?select=title:%1".
			format(workspace, fileName);
		var token = tiddlyspace ? tiddlyspace.getCSRFToken() : "";
		var action = "%0?csrf_token=%1&redirect=%2"
			.format(baseURL, token, redirectTo);
		form[0].action = action; // dont use jquery to work with ie
		form[0].target = iframeName;
		// do not refactor following line... won't work in IE6 otherwise
		$(place).append($('<iframe name="' + iframeName + '" id="' + iframeName + '"/>').css('display','none'));
		macro.iFrameLoader(iframeName, function() {
			var content = document.getElementById(iframeName).contentWindow.document.documentElement;
			if($(content).text().indexOf(fileName) > -1) {
				options.callback(place, fileName, workspace, baseURL);
			} else {
				macro.errorHandler(fileName);
			}
			form.show(1000);
			pleaseWait.hide(1000);
		});
		form.hide(1000);
		pleaseWait.show(1000);
		return true;
	},
	createUploadForm: function(place, options) {
		var locale = macro.locale;
		if(readOnly) {
			$('<div class="annotation" />').text(locale.membersOnly).
				appendTo(place);
			return;
		}
		var bag = options.bag;
		options.callback = options.callback ? options.callback :
			function(place, fileName, workspace, baseurl) {
				macro.displayFile(place, fileName, workspace);
				displayMessage(locale.loadSuccess.format(fileName));
				$("input[type=text]", place).val("");
			};
		var defaults = config.defaultCustomFields;
		place = $("<div />").addClass("container").appendTo(place)[0];
		var workspace = bag ? "bags/%0".format(bag) : config.defaultCustomFields["server.workspace"];
		var baseURL = defaults["server.host"];
		baseURL += (baseURL[baseURL.length - 1] !== "/") ? "/" : "";
		baseURL = "%0%1/tiddlers".format(baseURL, workspace);
		//create the upload form, complete with invisible iframe
		var iframeName = "binaryUploadiframe%0".format(Math.random());
		// do not refactor following line of code to work in IE6.
		var form = $('<form action="%0" method="POST" enctype="multipart/form-data" />'.
					format(baseURL)).addClass("binaryUploadForm").
			appendTo(place)[0];
		macro.renderInputFields(form, options);
		$(form).
			append('<div class="binaryUploadFile"><input type="file" name="file" /></div>').
			append('<div class="binaryUploadSubmit"><input type="submit" value="Upload" disabled /></div>').
			submit(function(ev) {
				this.target = iframeName;
				options.target = iframeName;
				macro.uploadFile(place, baseURL, workspace, options);
			})
			.find('[type="file"]').bind('change', function() {
				$(form).find('[type="submit"]').prop('disabled', false);
			}).end();
		$('<div />').addClass("uploadProgress").text(locale.uploadInProgress).hide().appendTo(place);
		$("input[name=file]", place).change(function(ev) {
			var target = $(ev.target);
			var fileName = target.val();
			var title = $("input[type=text][name=title]", place);
			if(!title.val()) {
				title.val(fileName);
			}
		});
	},
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		params = paramString.parseParams(null, null, true);
		macro.createUploadForm(place, params[0]);
	},
	iFrameLoader: function(iframeName, callback) {
		var iframe = document.getElementById(iframeName); //jQuery doesn't seem to want to do this!?
		var locale = macro.locale;
		$(".userInput").addClass("notEdited"); // reset editing
		var finishedLoading = function() {
			callback();
		};
		var iFrameLoadHandler = function() {
			finishedLoading.apply();
			return;
		};

		iframe.onload = iFrameLoadHandler;
		//IE
		completeReadyStateChanges = 0;
		iframe.onreadystatechange = function() {
			if (++(completeReadyStateChanges) == 3) {
				iFrameLoadHandler();
			}
		};
	},
	displayFile: function(place, title, workspace) {
		var adaptor = store.getTiddlers()[0].getAdaptor();
		var context = {
			workspace: workspace,
			host: config.defaultCustomFields['server.host']
		};
		adaptor.getTiddler(title, context, null, function(context) {
			if(context.status) {
				store.addTiddler(context.tiddler);
				story.displayTiddler(place, title);
				var image = config.macros.image;
				if(image && image.refreshImage) {
					image.refreshImage("/%0/tiddlers/%1".format(workspace, title));
					image.refreshImage(title);
					image.refreshImage("/%0".format(title));
					image.refreshImage("%0/%1/tiddlers/%2".format(config.extensions.tiddlyweb.host, workspace, title));
				}
			} else {
				displayMessage(macro.locale.loadError.format(title));
			}
		});
	}
};

if(tiddlyspace) {
	config.macros.binaryUploadPublic = {
		handler: function(place, macroName, params, wikifier, paramString, tiddler) {
			var options = paramString.parseParams(null, null, true)[0];
			var bag = tiddlyspace.getCurrentBag("public");
			options.bag = bag;
			macro.createUploadForm(place, options);
		}
	};
	config.messages.privacySetting = config.options.chkPrivateMode ?
		"private" : "public";
	config.macros.binaryUpload.defaultWorkspace = tiddlyspace.
		getCurrentWorkspace(config.messages.privacySetting);
}

})(jQuery);
//}}}
* [[cyberciti shell primer|http://www.cyberciti.biz/howto/shell-primer-configuring-your-linux-unix-osx-environment/]]
* [[cyberciti into to [uni/linu]X|http://bash.cyberciti.biz/guide/Main_Page]]
* proper treatment of [[shell filenames|http://www.dwheeler.com/essays/filenames-in-shell.html]]
* [[shellcheck|http://www.shellcheck.net/]]
* [[Pauls Awk Practice|http://unix.ittoolbox.com/groups/technical-functional/shellscript-l/calculate-number-of-char-use-in-string-5686799]]
![[People|people]] tags
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8"/>
	<title>TiddlySpace Apps</title>
	<link rel="stylesheet" href="/bags/common/tiddlers/reset.css" />
	<link rel="stylesheet" href="/bags/common/tiddlers/appspage.css" />
	<!--[if lt IE 7 ]>
	<link rel="stylesheet" href="/bags/common/tiddlers/appspageie6.css" />
	<![endif]-->
</head>
<body>
	
	<div id="wrapper">
		<div id="TSbar"></div>
		<div id="main-content">
			<div id="space-details">
				<a href="/_space"><img class="siteicon"></a>
				<div id="title-subtitle">
					<h1 class="spaceaddress">
						<span class="spaceName"></span><span class="hostName"></span>
					</h1>
					<p class="tagline"><span class="subTitle"></span><a class="managespaces" href="/_space">manage space</a></p>
				</div>
			</div>
			<div id="holder">
				<div id="appswitcher-wrapper">
					<div id="appswitcher">
						<h2>Your Apps</h2>
						<ul id="app-list">
							<li class="htmlserialisation">
								<a href="/tiddlers.html?select=tag:!excludeLists;sort=-modified">
									<img src="/bags/common/tiddlers/browse_read_blue.png" alt="Icon for the HTML Serialisation" class="app-img" />
									BROWSE
								</a>
							</li>
							<li class="tiddlywiki">
								<a href="/tiddlers.wiki">
									<img src="/bags/common/tiddlers/tiddlywiki2_blue.png" alt="Icon for TiddlyWiki" class="app-img" />
									TIDDLYWIKI
								</a>
							</li>
						</ul>
						<div id="addapp">
							<button class="inactive">Add More!</button>
						</div>
					</div>
					<div id="app-desc">
						<ul>
							<li class="htmlserialisationdesc"><p>an easy to understand HTML representation of your content.</p></li>
							<li class="tiddlywikidesc"><p>use TiddlyWiki to create, edit and organise your content.</p></li>
						</ul>
					</div>
					<div style="clear: both;"></div>
				</div>
			</div>
		</div>
		<div id="footer"><!-- ie doesn't support footer tag -->
			<div id="footer-content">
				<div class="links">
					<a href="http://blog.tiddlyspace.com">blog</a>
					<a href="http://featured.tiddlyspace.com">featured</a>
					<a href="http://docs.tiddlyspace.com">documentation</a>
					<a href="https://github.com/TiddlySpace/tiddlyspace">source</a>
				</div>
				<p>TiddlySpace 2011, created by <a href="http://osmosoft.com">Osmosoft</a></p>
			</div>
		</div>
	</div>
	
	<script type="text/javascript" src="/bags/common/tiddlers/backstage.js"></script>
	<script type="text/javascript" src="/bags/common/tiddlers/jquery.js"></script>
	<script type="text/javascript" src="/bags/tiddlyspace/tiddlers/chrjs"></script>
	<script type="text/javascript" src="/bags/common/tiddlers/chrjs-store.js"></script>
	<script type="text/javascript" src="/bags/common/tiddlers/jquery-json.js"></script>
	<script type="text/javascript" src="/bags/common/tiddlers/appspage.js"></script>
</body>
</html>
<!--{{{-->
<div class='header'>
	<div id='sidebarSearch'>
		<span macro='search'></span>
	</div>
	<div class='headerForeground'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
	<div class='clearFloat'></div>
</div>

<div id='menuBar'>
	<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
</div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<!--}}}-->
/***
|''Name''|TiddlySpaceInitialization|
|''Version''|0.7.3|
|''Description''|Initializes new TiddlySpaces the first time they are created|
|''Status''|@@beta@@|
|''Source''|http://github.com/TiddlySpace/tiddlyspace/blob/master/src/plugins/TiddlySpaceInit.js|
|''CoreVersion''|2.6.1|
|''Requires''|TiddlySpaceConfig RandomColorPalettePlugin chrjs ImageMacroPlugin|
!TODO
* robust error notification and recovery
!MarkupPreHead
<!--{{{-->
<link href="/bags/%0_public/tiddlers.atom" rel="alternate"
	type="application/atom+xml" title="%0's public feed" />
<link rel="canonical" href="%1/" />
<!--}}}-->
!Code
***/
//{{{
(function($) {

var versionField = "tiddlyspaceinit_version";
var markupPreHead = store.getTiddlerText(tiddler.title + "##MarkupPreHead", "");
var tiddlyspace = config.extensions.tiddlyspace;
var currentSpace = tiddlyspace.currentSpace;
var tweb = config.extensions.tiddlyweb;

var plugin = config.extensions.TiddlySpaceInit = {
	version: "0.6",
	SiteTitle: "%0",
	SiteSubtitle: "a TiddlySpace",
	flagTitle: "%0SetupFlag",
	flagWarning: "Please do not modify this tiddler; it was created " +
		"automatically upon space creation.",

	dispatch: function(ev) {
		var title = plugin.flagTitle.format([currentSpace.name]);
		config.annotations[title] = plugin.flagWarning;
		if(currentSpace.type != "private") {
			return;
		}
		var tiddlers = [];
		var tid = store.getTiddler(title);
		if(tid) {
			curVersion = parseFloat(tid.fields[versionField]);
			reqVersion = parseFloat(plugin.version);
			if(curVersion < reqVersion) {
				plugin.update(curVersion, tid);
				tid.fields[versionField] = plugin.version;
				tid.incChangeCount();
				tid = store.saveTiddler(tid);
				tiddlers.push(tid);
			}
		} else { // first run
			tid = new Tiddler(title);
			tid.tags = ["excludeLists", "excludeSearch", "excludePublisher"];
			tid.fields = $.extend({}, config.defaultCustomFields);
			tid.fields[versionField] = plugin.version;
			tid.text = "@@%0@@".format([plugin.flagWarning]);
			tid = store.saveTiddler(tid);
			tiddlers = tiddlers.concat(plugin.firstRun(), tid);
		}
		autoSaveChanges(null, tiddlers);
	},
	update: function(curVersion, flagTiddler) {
		if(curVersion < 0.2) {
			this.createAvatar();
		}
		if(curVersion < 0.3) {
			flagTiddler.tags.pushUnique("excludePublisher"); // XXX: never persisted
		}
		if(curVersion < 0.5) { // v0.4 was faulty
			this.setupMarkupPreHead();
		}
		if(curVersion < 0.6) {
			this.purgeSystemSettings();
		}
	},
	pubTid: {
		tags: ["excludeLists", "excludeSearch"],
		fields: $.extend({}, config.defaultCustomFields, {
			"server.workspace": tiddlyspace.getCurrentWorkspace("public")
		})
	},
	makeTiddlerIfNot: function(tiddler) {
		if (!store.tiddlerExists(tiddler.title)) {
			$.extend(true, tiddler, plugin.pubTid);
			return [store.saveTiddler(tiddler)];
		} else {
			return [];
		}
	},
	firstRun: function() {
		var tiddlers = [];
		// generate Site*itle
		$.each(["SiteTitle", "SiteSubtitle"], function(i, item) {
			var tid = new Tiddler(item);
			tid.text = plugin[item].format([currentSpace.name]);
			tiddlers.push.apply(tiddlers,
				plugin.makeTiddlerIfNot(tid));
		});
		// generate public ColorPalette
		var tid = new Tiddler("ColorPalette");
		tid.text = config.macros.RandomColorPalette.generatePalette({
			saturation_pale: 0.67, saturation_light: 0.53,
			saturation_mid: 0.43, saturation_dark: 0.06,
			pale: 0.99, light: 0.85, mid: 0.5, dark: 0.31
		},
			false);
		tiddlers.push.apply(tiddlers, plugin.makeTiddlerIfNot(tid));
		this.createAvatar();
		this.setupMarkupPreHead();
		return tiddlers;
	},
	// remove _cookie slices (TiddlyWiki 2.6.2 beta 6 remnants)
	purgeSystemSettings: function() {
		var ss = store.getTiddler("SystemSettings");
		if(ss) {
			var lines = ss.text.split("\n");
			var persistentOptions = $.grep(lines, function(line, i) {
				return line.indexOf("_cookie:") == -1;
			});
			ss.text = persistentOptions.join("\n");
			ss = store.saveTiddler(ss);
			autoSaveChanges(null, [ss]);
		}
	},
	createAvatar: function() {
		var avatar = "SiteIcon";
		var host = tweb.host;
		var notify = function(xhr, error, exc) {
			displayMessage("ERROR: could not create avatar - " + // TODO: i18n
				"%0: %1".format([xhr.statusText, xhr.responseText]));
			// TODO: resolve!?
		};

		var pubBag = tiddlyspace.getCurrentBag("public");
		var tid = new tiddlyweb.Tiddler(avatar);
		tid.bag = new tiddlyweb.Bag(pubBag, host);

		var callback = function(data, status, xhr) {}; // avatar already exists; do nothing
		var errback = function(xhr, error, exc) {
			if(xhr.status != 404) {
				return;
			}
			// copy default avatar
			var _notify = function(tid, status, xhr) {
				displayMessage("created avatar"); // TODO: i18n
				var image = config.macros.image;
				if(image && image.refreshImage) {
					var uri = "/%0/tiddlers/SiteIcon".
						format(tiddlyspace.getCurrentWorkspace("public"));
					image.refreshImage(uri);
					image.refreshImage("SiteIcon");
				}
			};
			var _callback = function(tid, status, xhr) {
				tid.title = avatar;
				tid.bag.name = pubBag;
				delete tid.etag;
				tid.put(_notify, notify); // TODO: add to current session document (via adaptor?)
			};
			tweb.getUserInfo(function(user) {
				var avatarTitle = currentSpace.name == user.name ?
					"defaultUserIcon" : "defaultSiteIcon";
				var tid = new tiddlyweb.Tiddler(avatarTitle);
				tid.bag = new tiddlyweb.Bag("common", host);
				tid.get(_callback, notify);
			});
		};
		tid.get(callback, errback);
	},
	savePublicTiddlerText: function(title, text, pubWorkspace) {
		var tid = new Tiddler(title);
		tid.text = text;
		tid.tags = ["excludeLists"];
		tid.fields = $.extend({}, config.defaultCustomFields);
		tid.fields["server.workspace"] = pubWorkspace;
		tid.fields["server.page.revision"] = "false";
		tid = store.saveTiddler(tid);
		autoSaveChanges(null, [tid]);
	},
	setupMarkupPreHead: function() {
		var pubWorkspace = tiddlyspace.getCurrentWorkspace("public");
		var existing = store.getTiddler("MarkupPreHead");
		if(!existing || existing.fields["server.workspace"] != pubWorkspace) {
			var context = this;
			tweb.getStatus(function(status) {
				var text = markupPreHead.format(currentSpace.name,
					tiddlyspace.getHost(status.server_host, currentSpace.name));
				context.savePublicTiddlerText("MarkupPreHead", text,
					pubWorkspace);
			});
		}
		// also set up DefaultTiddlers
		var title = "DefaultTiddlers";
		existing = store.getTiddler(title) || new Tiddler(title);
		if(existing.fields["server.workspace"] != pubWorkspace) {
			var text = existing.text || store.getShadowTiddlerText(title);
			this.savePublicTiddlerText(title, text, pubWorkspace);
		}
	}
};

$(document).bind("startup", plugin.dispatch);

})(jQuery);
//}}}
iVBORw0KGgoAAAANSUhEUgAAADEAAAAwCAYAAAC4wJK5AAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAACvZJREFUeNrtWWtsW+UZfs6JnfgaO47jOInTXJrSNEkvdOUm2jEXJJC2VaUrEhpopNImfkzA/rAN+NNJY5vGj20a0n4wBIEixsaAafuxSUWG0a6wAqW59ZamaWInTmInduw4ji/n7P2+4+M48SVuWmA/eCXrnGMff+d9vvf9nvd5vwN8Zf8fJlzvAEc9Hs2yD/eJMu6SIXUIELbJQCv9VLXyFGEesjxBx//IsnRZEMXjv3jI/dmXDuLp1zy7IONRcu4BuqzdwIMvy5CPpQTxj79+2O39QkE884pnryzIv6HTPWt/q6iogNlsgkFXBV2VDkKFgEQiCUlKIxKNIRZbQiqVWvu3ZQjy61JS/NmvjrjHPlcQR//sMSWWpT/QXx6kS436vdFgQGNjPerr7NDrdBBFsegYsiwjEonCO+XHzGwAy8uJ3J8XaewfVbrw8lG3O3XDQTxzzHM7OfAXOnWp39lsVmxpa4XVatlQCkiShEn/DK5OeBGNLq4AFXC8Kik8cPSIO3TDQDx9zPMwTeFL6uzr9Tr0dG7lIG6EsehM+CZxceQK0ul0hgdwFZJw+NnvuT8uZ4yKMgBQCkHHrl2NTuze2QOj0XDj6JE8tlRXo6HegdBChFJsmX1tpek9dOeh3rdPvN03t2EQT73qOShAfk0F0NHeips62kvm/PWYVqtBU4MTi4uLiC7G2FcGwnfgjkO9fz35Vt/CNYP46UueVlGU/06nJnbdedNmtLVs4rP2uRYtGt9JEckBYqUp+/rdB3pffe9vfUUXe8FpFTR8DdjZ+SZXE1qaXV9oBd7R0wV7bY16uWdZg+euKRJPv+r5Ps334+ycDbS9u7PsCKRSaWKbGVy64sXZoVFcGJnAyJVJBIJhxBMJWMzGstKRPa+2pga+qWnOYvT0W+862Hvy3+/0ja4LgkmIdIRTqZU9bM/undBqNGUBYM6+f6ofE5OzCIWjvMglkyl+DEcWMTU9h0ujPp77tTXV646n0VDhNJngn55RqXf33Y/3vvBeX59UMp0SPjxIUoLpHjQ3NVLVrVqfIiUZJz8axCdnL/JIqKavImfNOph02lWR+vTsJQ42995ixjLBYbeplz1xL+4pCHiVQ5AfYYnDotDW0lxWBE78d5CKVlCZEVHA/h3NuG1rA5xWA79mNhtewocXpvDuZ+NIpiWa3Tmc+ngYe2/tgSCWTtWO9jbMBOZ4PSG2/Al99c+i6fTjYx5XhYzfMl+cDjuaqCaUk0IXL3uzM//Egd24o7MBZn3lqnVkpGhsbapBh9OMQCCIFouMTbolaBZ8EMJTkOd9kBcobZbCfCqFCoqeqLhWWVlJ6RlGbCnO1kbrHd/pfXEt5WYjoZWlg/R3jZJKTesCSNOC6x8ezUbgh9/chbb6wrkei8Xg8/kwOTmJXXU5KS0TayYzzJmMQ45HIIeneckWrQ0QbMSKWj2llY3IYV5xWOIp9XJBEJIsbhYEmSagQrZYzOvS0ZWrfr5wme3raioIgDHL2NgYJiYm+HmusRk2m8200LVZoNFoVLmPUkeanwRCUxBtzaiz1+P8xcuZVSzdVRQEAdjLQ6/XC+XQ4FxoJaJ7u/Mjx+TD4OAgFhZW7rNYLKR4G0l32TiIvOiSdpqZmeFRi0QiCpjgOKooQiaDHlGS8qSpbi+1sDkrmU3l6aL5UDS7FtgiXqWpqeL29/cjHo8r9+j1aG9vh8PhKK2BqB9paCBScDrh9Xp5FHn/sTiPbosWpxmGjJ/FQNiRYaZyTE0lQ6Umy0LMmONnzpyh35P8uq6uDp2dncT7mrIrNiOF5uZmDnpgYIBHxSwmsY2E8/C8ouVKyg41R8sRbDyXEynKYzm7BlgKqQDq6+vR3d19TQByrYrq1I4dO3gkmTVQwBuNZWinRDJR1gNqrFwbYmk5BX+IizUefp7LrOmurcW2bduuWzSytbN9+3aearxuEH94PB57sXRiCaxLJcvrDG3Was5QvOAN+fDtPc2chdQHd3V1FQUQHQtgbsCLpekwUrEEREpJI9WR2ptbYHTV5N1vNBrR1taGkZERaJVpZ0Xvybxit+/+Rx6mamKXqDSSal13+iwWI9dCLIUmAhE4K2NIxJWIsAgw+lxri955jP7pI0yfvIQlfxjJSBzpeBKpxWV+HTxzFfHZCCwd9VTwVieJiXQUY60MVbf39vb+ri+jo1buFOUPeXosxYXcnrcokxAB7OhqV9YH1ZdISGnAqqlLs9vtefdHRmcx8soJ7mzuAtZSdc8lhtDwJLz/GizIXIyeM8bkxLfy00kS34cg97LT6dkAITeuC6SjrZHUaRC6eBCqHy6XKy+NktFlXHnzNKSUUvCMtdWwtTqho2iq90YDYUwPX0Wa0plFxP61VhgaV/fxjHrHx8fVy3vp886qSKREHGcHLtiCc2UvPCbiXDbdSh9Qm7+PxpxiacMj5axF487N0BMx5II12S1wbF0RnYFPxgquDXWBU9b35LGTsgsnv8nOw+EFqrSR8jidQuCwKJLdYDAUpNMwKdhsMdrcUHTBmxxWiBrFyUXffOF7TCb1tLMgxYqS+KJ6fuHyaPk8uLy49gGrO76YQtsaYiGNrrJkkavQKiCkRGGWVGuGWpzzQPz8EfdxtnnFtdFciOv48nbC0lknCjYtBsXxdDLNc76kOl5W0q5Cpy17DvM1hig8pq6N/uFzclzZB1pnlIqMFEkW/NncVpfdKFuYChYPaCSWrf76unVb2GhREL/8rvu8LAvPKzOXEobOXeAPL60PjFnlWshYEVM7uMCoH/GFWGFROT67AryjrmhvkrHzJbdsqtJ4ig68brBm5OzAUEkgok4pbKwfUJXrqvFsRtTdotQUmeT2xKeXMD8xk02tFOX/7EUvFjJtrs5RjZpuV8H+hD0jE9XSII4ecccpCPdTBR9T6kYQ/YPDeY1N1gwrm8rT09MFb2m6twcWal1VIMzp0Q8GMHpyEFdODHBQ6lpoPbi7YO8dDAZzfThZEgSz5464/SkI+2goLpD8MwGcOv0pq+j5rGKi2iAq1Do1NZXdGF5rbYdvQYN7G90qZtdIKp7IRplpqNZDe6B3Ft5pV7UZL2ui+GZZG8qsId93uPdd6t1ZX2tje0jeST8VHBHV5pxixY4yzVAszJsY1pNYrdaCFGpqqUXtzk1cG0nEVqwuaKv1sPW4sOnAzVwIFrJQKMRVcgb8W/v37+8rCwSzD97q87O9UEnELqY02KyxdeKfnuW+s5cszGlBX63sWEgp/kAGIofTV+ugKi3M7XVcWjhu24y6PW2o7nBAo68s+i6DdYoq+9HzHiXxN76h112Zrf7f86337E6dBg1OBxrrHajWSpC9A7w3Zt+zPqBQRK7VhoaGeO+diebzbrf7sbLfTxSISv+dB3rfEESZSrPQxXdQaJaYRPFN+XF1KgC5ohJWbYqyS+KLnIFhsnwjzREb+9y5c1kAbKuLxnmAopC4rhePqj35ksep0Uq9giw8lNExWdHUShA3W1YGr6mpwZYtW7iAK9cYlZ4/fz7bKZJ5CQAFwT2y4RePJdPsFU+PIEr3SJLYktn6aXXoYe+iTMoQUVbhsr6bHVU1uvbVF3Oa7XSw2c+pTUUB3DAQxYx64U5y5AWm2NeyFIsK+6hpxook26NaW4vo//+ghfwDAuDf8IvHGwTmG+TcE+TwferrszLsY7r/WXL+nXXbgS/yDRDbpSAwh+n0NnKwJyOnXZlNikAmbd6j4xtMG7mv8X32V/Zl2/8AlGCJNTw3pK8AAAAASUVORK5CYII=
On this site, I review software and (hope to) promote better practice.  For starters, here's a post ReviewingCodeComplete.  The book is too highly touted for me to accept all the praise at face value.  My bottom line on the book is //It's too bad this is such a good book!//.   See the review.

In my recent background, from '06 to'12 I'd been a tech trainer, and grown to appreciate my company's use of Tcl.   There are a few sites in the Tcl community to share your work, so, I'll make references here to postings on the Tcl sites.

In over 35 years of practice in the industry, a job I'd like to have had, and never seen anyone employed to do is that of ''code editor''.   A great lesson of my life is the better part of a year I managed //code reviews// for AT&T's wireless lab.  More on that as the occasion allows.

At the moment, my current initiative is [[Shell Functions|http://shellfunctions.tiddlyspace.com]], with it's book on [[Leanpub|http://leanpub.com/shellfunctions]]

Or, see the TableofContents


@@Please do not modify this tiddler; it was created automatically upon space creation.@@
|~ViewToolbar|+editTiddler +cloneTiddler > fields refreshTiddler changeToPublic changeToPrivate revisions syncing permalink references jump closeOthers < closeTiddler|
|~EditToolbar|+saveTiddler saveDraft -cancelTiddler deleteTiddler|
|~RevisionToolbar|> fields revert|
[[This note|OntheShellLibrary]] spells out my requirements for a shell library architecture which has evolved in my practice this year (2011).  The attributes and needs become apparent as we explore these requirements:
*write in the [[bash shell]] -- portable to Solaris, Linux, Cygwin, Mac Os X, ...
*keep the functions brief -- preferring one-liners
*group them in files with names:  //descriptiveName//''lib'' -- all end in lib.
*the files reside in a ''./bin'' directory, found on the user's PATH Environment variable,
*on ''source''ing a library file, there are limited side-effects (discussed below)
*libraries are ''source''d in a hierarchy:
**c_lib may //source b_lib//, and 
**b_lib may //source a_lib//, etc...
*the libraries contain tools to:
**list functions in a single library,
**list libraries which define a function.
**...
!!then the ~APPlication
Since the main purpose of a shell library is to build packages, there comes a moment in the life of a package when it's time to break free of the dependance on subordinate libraries and stand on its own two feet.  The problem is all the hooks into lower level libraries.   I'm looking for a way to retain the modularity of the libraries, yet be able to pick up a package and take it elsewhere without having to deliver the entire sub-structure, so here's a set of requirements:
*a library (e.g. //name//''lib'') must be converted to the equivalent application (e.g. //name//''app'') such that the library may be recovered from the application.
*the application becomes the primary file
*a set of functions added to the application:
**list the names of functions copied from underlying libraries
**list the libraries which supplied the copied functions
**list the names of function suffixes which may be restored to a library version by replacing //name//app with //name//lib. (e.g. the ''help'' suffix, in //name//app_help may be everywhere replaced with //name//lib_help to restore the library copy).
*the library is reconstructed from the application by:
**removing the definitions of the copied functions
**restoring a statement to source the library which supplied the copied functions
**restoring the //name//app_//suf// functions to //name//lib_//suf// functions, and
**removing any residual //name//app_//suf// functions.

This practice relies heavily on the naming convention:  // name [ ''app'' | ''lib'' ] _ suf  //.  Another consideration, one I was using heavily last year (2011) was to treat the //suf// functions as part of a (possibly) large shell ''case'' statement.   This had the advantage of allowing a certain object-orientation, where many of the sub-functions may be handled by something quite generic.  That approach, however seems to further bind an application to another underlying library.  While this may be useful in building systems, it seems to run counter to the goal of a single application.

My current application is taking my ''backup'' practice (in bklib) and turn it into an application in support of my versioning library, qvs.  This in turn is motivated by my struggle to make sense of [[git]], and it's practice of branching.      I first need a method which tracks a single developer's history, where a moment in the past is easily restored.  In this model, "branching" is eliminated in favor of "integration". (see IntegratingShellLibraries)




The LanguageFrontier purports to keep an eye on new thoughts and developments in programming language:
*here's [[Grace|http://gracelang.org/]],
*[[scratch|http://scratched.media.mit.edu/]],
*and [[Self|http://en.wikipedia.org/wiki/Self_(programming_language)]] -- notice the absence of //new// from the list of criteria.
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
 -- opinions on the software practice
It's time for me to Hunt_forSpellcheck.  When I invoke the emacs "spell" check command {{{ {meta}-$ }}}, i see 
> //Searching for program: no such file or directory, ispell//
Let me log my experience in trying to fix that.
* searchlight "ispell" -- returned a vim buffer pointing at the file /Applications/Lispworks Personal 5.1/Library/lib ... /editor:commands:spell-word.lisb,v  (an RCS) file which says it //will call the unix-command (default - "spell")//  but there is no "spell" command (which spell) on my Mac OS X Yosemite 10.10.1, so next visit some emacs help pages
* some of the ''ispell'' references, where it seems ''aspell'' and ''hunspell'' are newer.
** https://edivad.wordpress.com/2007/03/20/emacs-widows-and-ispell/  = try ''aspell''
** [[GNU Aspell|http://www.emacswiki.org/emacs/InteractiveSpell#toc4]]
** hence GNU [[Aspell site|http://aspell.net/]]    and following the "latest version" -- July 2011, i see i've a copy in my ~/Downloads.   let's see what obtains there
* finder to Downloads, 
* unzip, untar into ~Downloads/aspell
* cd aspell.*.1 
* {{{ ./configure && make }}}  of which here's a sample of the log:
{{{
    In file included from ./common/posib_err.hpp:13:
    ./common/errors.hpp:17:36: error: redefinition of 'aerror_other' with a different type: 'const     acommon::ErrorInfo *const' vs
          'const struct AspellErrorInfo *const'
    extern "C" const ErrorInfo * const aerror_other;
                                   ^
    ./interfaces/cc/aspell.h:240:45: note: previous definition is here
    extern const struct AspellErrorInfo * const aerror_other;
                                            ^
}}}
* so, it's time to look for an OS X binary
* which brings us to my old friend [[moodle|https://docs.moodle.org/20/en/Configuring_aspell_on_Mac_OS_X]]
* who instructs to use [[macports|http://www.macports.org/]] -- hopefully a keeper of a bookmark?!
** where I'm downloading Xcode 6.1.1 for Mac OS X 10.10
** now wed, 2/25, and installing MacPorts
** start a //fresh// terminal session
** run the ''sudo port ..'' commands, one for ''aspell'' the other for the ''en''glish dictionary
* on the helper, there is this link to add [[custom words|https://docs.moodle.org/20/en/spell_check#Mac_OS_2]] to your dictionary, but first, let's see it run in emacs.
* ''//hooray !! //'' -- {{{ emacs .clipboard }}}:  //now is hte// followed by the afore mentioned  meta-$, replies "loading ispell"; time to see if there is a better emacs for this OS.


better: <<tiddler ReplyHere with:  OnFilesandPipes>>

A letter to the ~ITToolbox OnFilesandPipes

when writing functions, it is possible, using the otherwise messy  ''cat ... | (PIPE) ...'' to make the command interaction more regular.

the cases divide over those commands which take both named files or standard input as a default behaviour and those which take either, but not both named files and standard input.  here are the idioms for functions to make the user interaction entirely uniform, i.e. the function behaves universally, taking either named files or the standard input.

for example,''sed'' is a well-behaved and needs little help:
{{{
  $ foo2bar () { sed 's/foo/bar/g' $*; }
}}}
a function which converts all instances of //foo// to //bar//, may be used in a pipe:
{{{
   $ process generating foo | foo2bar
}}}
or with file arguments, either way:
{{{
  $ foo2bar fileWithFoo     # or
  $ foo2bar < fileWithFoo
}}}
since the underlying command handles both.  The ''$*'' ( dollar -- aster ) is the idiom, which says //any named file arguments, so that one can use multiple file names//, and is often useful.  

alternatively, there are some commands, ''tr'' being one of the more noticeable, which only reads the standard input.   In cases of this sort, writing a function is a useful wrap on the behaviour.   favorites of mine are lc, uc, and UC, representing lower-case, upper-case and ~Upper-Case respectively.  the last two are identical, since i can't seem to uniformly recall which way i've defined it.    In any case, you'd like the uniform behaviour of pipes and named files.  So, ...
{{{
 $ lc () { cat ${*:--} | tr A-Z a-z; }
}}}
is required, and may be used:
{{{
  $ lc filea fileb filec ...
  $ cat filea fileb filec ... | lc
  $ lc < filea
  $ process generating caps | lc      
}}}
such as, if you need something on the command line:
{{{
  $ echo "My Name is Jose Jimenez" | lc
}}}
In this case, the idiom  {{{ ${*:--} }}} has a slightly different reading:  //using any named file arguments, and if none, default to the standard input (the {{{ :-- }}} part of the idiom)//.  this works, since ''cat'', among other well-behaved commands, takes "-" as an alias for //read the standard input//.  

I find having this regular behaviour at hand saves me more time in development than the overhead of the extra process.  At some point, this later need may take precedence.
/***
|''Name''|TiddlySpaceRevisionView|
|''Description''|Show tiddler revisions in a stack of cards view|
|''Author''|BenGillies|
|''Version''|0.2.0|
|''Status''|beta|
|''Source''|http://github.com/TiddlySpace/tiddlyspace|
|''CodeRepository''|http://github.com/TiddlySpace/tiddlyspace|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''CoreVersion''|2.6.0|
|''Requires''|TiddlyWebAdaptor|
!Usage
The viewRevisions macro can be attached to any element, which should be passed
in as a parameter.

For example:

&lt;&lt;viewRevisions page:10 link:"<<view modified date>>"&gt;&gt;

would show the revisions "stack of cards" view, 10 at a time, when the modified
date is clicked.
!Code
***/
//{{{
(function($) {

var me = config.macros.viewRevisions = {
	revisionTemplate: "RevisionTemplate",
	revSuffix: " [rev. #%0]", // text to append to each tiddler title
	defaultPageSize: 5, // default number of revisions to show
	defaultLinkText: "View Revisions", // when there's nothing else to use
	offsetTop: 30, // in px
	offsetLeft: 10, // in px
	shiftDownDelay: 50, // in ms
	visibleSlideAmount: 20, // amount of revisions to show on left hand edge after sliding
	zIndex: 100, // default z-index
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		params = paramString.parseParams(null, null, true)[0];
		var tiddlerElem = story.findContainingTiddler(place);

		var revButton;
		var pageSize = parseInt(params.page[0], 10) || me.defaultPageSize;
		var linkObj = params.link ? params.link[0] || me.defaultLinkText : false;
		if(linkObj) {
			revButton = $('<span class="button openRevisions" />')
				.appendTo(place);
			wikify(linkObj, revButton[0], null, tiddler);
		} else {
			revButton = place;
		}

		$(revButton).click(function() {
			if (!$(tiddlerElem).hasClass("revisions")) {
				me.showRevisions(tiddlerElem, tiddler, pageSize);
			} else {
				me.closeRevisions(tiddlerElem);
			}
		});
	},

	// initialisation for revision view
	showRevisions: function(tiddlerElem, tiddler, pageSize) {
		var context = {
			host: tiddler.fields["server.host"],
			workspace: tiddler.fields["server.workspace"]
		};
		$(tiddlerElem).addClass("revisions").attr("revName", tiddler.title);
		// ensure toolbar commands deactivate RevisionsView
		$("a", ".toolbar", tiddlerElem).each(function(index, btn) {
			var _onclick = btn.onclick;
			btn.onclick = function(e) {
				me.closeRevisions(tiddlerElem);
				_onclick.apply(this, arguments);
			};
		});
		// ensure default action deactivates RevisionsView
		var _ondblclick = tiddlerElem.ondblclick;
		tiddlerElem.ondblclick = function(e) {
			me.closeRevisions(tiddlerElem);
			_ondblclick.apply(this, arguments);
		};
		var type = tiddler.fields["server.type"];
		var adaptor = new config.adaptors[type]();
		var userParams = {
			tiddlerElem: tiddlerElem,
			pageSize: pageSize,
			title: tiddler.title
		};
		me.createCloak(tiddlerElem);
		adaptor.getTiddlerRevisionList(tiddler.title, null, context, userParams,
				function(context, userParams) {
					// strip the current revision
					context.revisions.shift();
					me.expandStack(context, userParams);
				});
	},

	// fetch the actual revision and put it in the tiddler div
	showRevision: function(place, revision, callback) {
		var context = {
			host: revision.fields["server.host"],
			workspace: revision.fields["server.workspace"]
		};
		var userParams = {
			revElem: place
		};
		var type = revision.fields["server.type"];
		var adaptor = new config.adaptors[type]();
		var revNo = revision.fields["server.page.revision"];
		adaptor.getTiddlerRevision(revision.title, revNo, context, userParams,
			function(context, userParams) {
				var tiddler = context.tiddler;
				tiddler.title += me.revSuffix
					.format([$(place).attr("revision")]);
				tiddler.fields.doNotSave = true;
				if (store.getTiddler(tiddler.title)) {
					store.deleteTiddler(tiddler.title);
				}
				store.addTiddler(tiddler);

				//now, populate the existing div
				var revElem = userParams.revElem;
				$(revElem).attr("id", story.tiddlerId(tiddler.title));
				$(revElem).attr("refresh", "tiddler");
				var getTemplate = function() {
					var themeName = config.options.txtTheme;
					if (themeName) {
						return store.getTiddlerSlice(themeName,
							me.revisionTemplate) || me.revisionTemplate ||
							"ViewTemplate";
					} else {
						return (store.getTiddler(me.revisionTemplate)) ?
							me.revisionTemplate : "ViewTemplate";
					}
				};
				var template = getTemplate();
				story.refreshTiddler(tiddler.title, template, true);
				callback(tiddler);
			});
	},

	createCloak: function(promoteElem) {
		var el = $(promoteElem);
		// cache styles for resetting later
		el.data({
			top: el.css("top"),
			left: el.css("left"),
			zIndex: el.css("z-index")
		});

		$('<div class="revisionCloak" />').css("z-index", me.zIndex)
			.click(function() {
				me.closeRevisions(promoteElem);
			})
			.appendTo(document.body);

		el.css("z-index", me.zIndex + 1);
	},

	// clean up, removing all evidence of revision view
	closeRevisions: function(promoteElem) {
		var el = $(promoteElem);
		// revert the original tiddler back to its previous state
		el.removeAttr("revName").removeClass("revisions").css({
			top: el.data("top"),
			left: el.data("left"),
			zIndex: el.data("zIndex")
		});

		// remove any revisions still in the store
		var revisions = $(".revisions");
		revisions.each(function(index, revision) {
			var revAttributes = revision.attributes;
			if ((revAttributes.revname) &&
					(revAttributes.revision)) {
				var revName = revAttributes.revname.value;
				var revNo = revAttributes.revision.value;
				var title = revName + me.revSuffix.format([revNo]);

				if (store.getTiddler(title)) {
					store.deleteTiddler(title);
				}
			}
		});

		// delete the previous revisions
		revisions.remove();

		// remove the cloak
		$(".revisionCloak").remove();
	},

	// calback from getting list of revisions
	expandStack: function(context, userParams) {
		var pageSize = userParams.pageSize;

		var from = userParams.from || 0;
		var tiddlerElem = userParams.tiddlerElem;

		userParams.defaultHeight = $(tiddlerElem).height();
		userParams.defaultWidth = $(tiddlerElem).width();
		if (from < context.revisions.length) {
			me.displayNextRevision(tiddlerElem, userParams, context, from,
				from + pageSize - 1);
		}
	},

	// place the next div above and behind the previous one
	displayNextRevision: function(tiddlerElem, userParams, context, from, to) {
		var revision = context.revisions[from];
		var callback = function() {
			var revText = revBtn.getRevisionText(tiddlerElem, revision);
			tiddlerElem = me.createRevisionObject(tiddlerElem, context,
				userParams, revText);
			$(tiddlerElem)
				.attr("revision", (context.revisions.length - from));
			if ((from < to) && ((from + 1) < context.revisions.length)){
				me.displayNextRevision(tiddlerElem, userParams, context,
					from + 1, to);
			} else if ((context.revisions.length - 1) > to) {
				me.showMoreButton(tiddlerElem, context, userParams, to + 1);
			}
		};
		me.shiftVisibleDown(userParams.title, callback);
	},

	createRevisionObject: function(tiddlerElem, context, userParams, text) {
		var newPosition = me.calculatePosition(tiddlerElem, context);
		return $('<div class="revisions tiddler" />')
			.css({
				position: "absolute",
				top: newPosition.top,
				left: newPosition.left,
				"z-index": me.zIndex + 1,
				height: userParams.defaultHeight,
				width: userParams.defaultWidth
			})
			.attr("revName", userParams.title)
			.append(text)
			.insertBefore(tiddlerElem);
	},

	// move the already present revisions down by 1 to fit the next one in
	shiftVisibleDown: function(title, callback) {
		var revisions = $("[revName='%0'].revisions".format([title]));
		var revisionCount = revisions.length;

		$(revisions).animate({top: "+=" + me.offsetTop},
				me.shiftDownDelay, function() {
					revisionCount -= 1;
					if ((callback) && (!revisionCount)) {
						callback();
					}
				});
	},

	// where we put the new revision
	calculatePosition: function(elem, context) {
		var offset = $(elem).offset();
		var currentPosition = $(elem).position();
		var newPosition = {
			top: currentPosition.top - me.offsetTop
		};
		if ((context.restrictLeft) ||
				((offset.left - me.offsetLeft) <
				$("#contentWrapper").offset().left)) {
			newPosition.left = $(elem).position().left;
			context.restrictLeft = true;
		} else {
			newPosition.left = currentPosition.left - me.offsetLeft;
		}
		return newPosition;
	},

	// equivalent of displayNextRevision, but for the more button
	showMoreButton: function(tiddlerElem, context, userParams, moreIndex) {
		userParams.from = moreIndex + 1;
		me.shiftVisibleDown(userParams.title, function() {
			var btn = me.createRevisionObject(tiddlerElem, context, userParams,
				"");

			var more = createTiddlyButton(btn[0], "more...", "show more revisions",
				function() {
					if ($(".viewRevision").length) {
						return;
					}
					userParams.tiddlerElem = btn[0];
					$(btn).text("")
						.append(revBtn
							.getRevisionText(btn[0], context.revisions[moreIndex]))
						.attr("revision", context.revisions.length - moreIndex);
					me.expandStack(context, userParams);
				});
			$(more).css("float", "right");
		});
	},

	stripRevFromTitle: function(revisionTitle) {
		return revisionTitle.split(/ ?\[rev\. #[0-9]+\]$/)[0];
	},

	onClickRevision: function(revElem, revision, callback) {
		// don't do anything if we are still loading
		if ($(".revisions").hasClass("loading")) {
			return null;
		}

		var origTitle = me.stripRevFromTitle(revision.title);
		if ($(revElem).hasClass("viewRevision")) {
			$(".revisions").addClass("loading");
			me.slideIn(revElem, revision, origTitle, function() {
				store.deleteTiddler(revision.title);
				revision.title = origTitle;
				$(revElem).text("").append(revBtn.getRevisionText(revElem,
						revision))
					.removeAttr("tags").removeAttr("tiddler")
					.removeAttr("refresh").removeAttr("template")
					.removeAttr("id");
				$(".revisions").removeClass("loading");
				if (callback) {
					callback();
				}
			});
			$(revElem).removeAttr("prevPos").removeClass("viewRevision");
		} else {
			var viewRevision = function() {
				var prevPos = $(revElem).position().left;
				$(revElem).addClass("viewRevision").attr("prevPos", prevPos);
				$(".revisions").addClass("loading");
				me.showRevision(revElem, revision, function(rev) {
					me.slideOut(revElem, rev, origTitle, function() {
						$(".revisions").removeClass("loading");
					});
				});
			};
			// make sure another revision isn't already out
			if ($(".viewRevision").length) {
				var newRevElem = $(".viewRevision")[0];
				var newRevision = store.getTiddler($(newRevElem)
					.attr("tiddler"));
				me.onClickRevision(newRevElem, newRevision, viewRevision);
			} else {
				viewRevision();
			}
		}
	},

	slideOut: function(revElem, revision, title, callback) {
		var leftMostPos = $("[revName='%0'].revisions".format([title]))
			.offset().left;
		var width = $(revElem).width();
		var originalLeftPos = $(story.getTiddler(title))
			.position().left;

		var slideAmount = leftMostPos + width - me.visibleSlideAmount;
		$("[revName='%0'].revisions:not(.viewRevision)".format([title]))
			.animate({left: "-=" + slideAmount}, 1000);
		$(revElem)
			.attr("baseHeight", $(revElem).css("height"))
			.css("height", "auto")
			.animate({left: originalLeftPos}, 1000, callback);
	},

	slideIn: function(revElem, revision, title, callback) {
		var slideAmount = $(revElem).offset().left -
			$(story.getTiddler(title)).offset().left;
		var origRevPos = $(revElem).attr("prevPos");

		$("[revName='%0'].revisions:not(.viewRevision)".format([title]))
			.animate({left: "+=" + slideAmount}, 1000);
		$(revElem).animate({left: origRevPos}, 1000, function() {
			$(revElem)
				.css("height", $(revElem).attr("baseHeight"))
				.removeAttr("baseHeight");
			callback();
		});
	}
};

var revBtn;
config.macros.slideRevision = revBtn = {
	btnText: "created by %0 at %1 on %2",
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var btn = revBtn.getRevisionText(place, tiddler);
		$(place).append(btn);
	},

	getRevisionText: function(place, revision) {
		var text = revBtn.btnText.format([revision.modifier,
			revision.modified.formatString("0hh:0mm"),
			revision.modified.formatString("0DD MMM YYYY")]);
		var btn = $('<a href="javascript:;" class="button revButton" />')
			.text(text)
			.click(function() {
				var revElem = story.findContainingTiddler(this);
				me.onClickRevision(revElem, revision);
			});
		return btn;
	}
};

})(jQuery);
//}}}
[[StyleSheetTiddlySpace]]
<!doctype html>
<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->
<!-- saved from url=(0021)http://tiddlywiki.com -->
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />		<!-- Force IE standards mode for Intranet and HTA - should be the first meta -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="application-name" content="TiddlyWiki" />
<meta name="generator" content="TiddlyWiki" />
<meta name="tiddlywiki-version" content="5.1.12" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="mobile-web-app-capable" content="yes"/>
<meta name="format-detection" content="telephone=no" />
<meta name="copyright" content="TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)

Copyright © Jeremy Ruston 2004-2007
Copyright © UnaMesa Association 2007-2016

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

Neither the name of the UnaMesa Association nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, 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.
" />
<link id="faviconLink" rel="shortcut icon" href="favicon.ico">
<title>TiddlyWiki in the Sky — for TiddlyWeb</title>
<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~--><!--~~ Raw markup ~~-->

</head>
<body class="tc-body">
<!--~~ Static styles ~~-->
<div id="styleArea">
<style data-tiddler-title="$:/boot/boot.css" data-tiddler-type="text/css" type="text/css">/*
Basic styles used before we boot up the parsing engine
*/

/*
Error message and password prompt
*/

.tc-password-wrapper, .tc-error-form {
    font-family: sans-serif;
	z-index: 20000;
	position: fixed;
	text-align: center;
	width: 200px;
	top: 4em;
    left: 50%;
    margin-left: -144px; /* - width/2 - paddingHorz/2 - border */
	padding: 16px 16px 16px 16px;
	border-radius: 8px;
}

.tc-error-form {
	color: #fff;
	text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);
	background-color: rgb(255, 75, 75);
	border: 8px solid rgb(255, 0, 0);
	width: 480px;
    margin-left: -244px; /* - width/2 - paddingHorz/2 - border */
}

.tc-error-form div {
	padding-bottom: 1em;
}

.tc-error-prompt {
	color: #000;
	text-shadow: none;
}

.tc-password-wrapper {
	color: #000;
	text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
	background-color: rgb(197, 235, 183);
	border: 8px solid rgb(164, 197, 152);
}

.tc-password-wrapper form {
	text-align: left;
}

.tc-password-wrapper h1 {
	font-size: 16px;
	line-height: 20px;
	padding-bottom: 16px;
}

.tc-password-wrapper input {
	width: 100%;
}
</style>
</div>
<!--~~ Static content for Google and browsers without JavaScript ~~-->
<noscript>
<div id="splashArea">


<p>This <a class="tc-tiddlylink-external" href="http://tiddlywiki.com" rel="noopener noreferrer" target="_blank">TiddlyWiki</a> contains the following tiddlers:</p><p><ul>

<li>$:/core</li>

<li>$:/DefaultTiddlers</li>

<li>$:/isEncrypted</li>

<li>$:/plugins/tiddlywiki/tiddlyweb</li>

<li>$:/SiteSubtitle</li>

<li>$:/SiteTitle</li>

<li>$:/StoryList</li>

<li>$:/temp/info-plugin</li>

<li>$:/themes/tiddlywiki/snowwhite</li>

<li>$:/themes/tiddlywiki/vanilla</li>

<li>TiddlerListTemplate</li>

<li>TiddlyWiki5 for TiddlyWeb</li>

</ul>
</p>



</div>
</noscript>
<!--~~ Ordinary tiddlers ~~-->

<div id="storeArea" style="display:none;">
<div author="JeremyRuston" core-version="&gt;=5.0.0" dependents="" description="TiddlyWiki5 core" list="readme" plugin-priority="0" plugin-type="plugin" title="$:/core" type="application/json" version="5.1.12" revision="0" bag="default">
<pre>{
    &quot;tiddlers&quot;: {
        &quot;$:/Acknowledgements&quot;: {
            &quot;title&quot;: &quot;$:/Acknowledgements&quot;,
            &quot;type&quot;: &quot;text/vnd.tiddlywiki&quot;,
            &quot;text&quot;: &quot;TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n&quot;
        },
        &quot;$:/core/copyright.txt&quot;: {
            &quot;title&quot;: &quot;$:/core/copyright.txt&quot;,
            &quot;type&quot;: &quot;text/plain&quot;,
            &quot;text&quot;: &quot;TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright © Jeremy Ruston 2004-2007\nCopyright © UnaMesa Association 2007-2016\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this\nlist of conditions and the following disclaimer in the documentation and/or other\nmaterials provided with the distribution.\n\nNeither the name of the UnaMesa Association nor the names of its contributors may be\nused to endorse or promote products derived from this software without specific\nprior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n&quot;
        },
        &quot;$:/core/icon&quot;: {
            &quot;title&quot;: &quot;$:/core/icon&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;&lt;path d=\&quot;M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\&quot; fill-rule=\&quot;evenodd\&quot;/&gt;&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/advanced-search-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/advanced-search-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-advanced-search-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M74.5651535,87.9848361 C66.9581537,93.0488876 57.8237115,96 48,96 C21.490332,96 0,74.509668 0,48 C0,21.490332 21.490332,0 48,0 C74.509668,0 96,21.490332 96,48 C96,57.8541369 93.0305793,67.0147285 87.9377231,74.6357895 L122.284919,108.982985 C125.978897,112.676963 125.973757,118.65366 122.284271,122.343146 C118.593975,126.033442 112.613238,126.032921 108.92411,122.343793 L74.5651535,87.9848361 Z M48,80 C65.673112,80 80,65.673112 80,48 C80,30.326888 65.673112,16 48,16 C30.326888,16 16,30.326888 16,48 C16,65.673112 30.326888,80 48,80 Z\&quot;&gt;&lt;/path&gt;\n        &lt;circle cx=\&quot;48\&quot; cy=\&quot;48\&quot; r=\&quot;8\&quot;&gt;&lt;/circle&gt;\n        &lt;circle cx=\&quot;28\&quot; cy=\&quot;48\&quot; r=\&quot;8\&quot;&gt;&lt;/circle&gt;\n        &lt;circle cx=\&quot;68\&quot; cy=\&quot;48\&quot; r=\&quot;8\&quot;&gt;&lt;/circle&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/auto-height&quot;: {
            &quot;title&quot;: &quot;$:/core/images/auto-height&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-auto-height tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;path d=\&quot;M67.9867828,114.356363 L67.9579626,99.8785426 C67.9550688,98.4248183 67.1636987,97.087107 65.8909901,96.3845863 L49.9251455,87.5716209 L47.992126,95.0735397 L79.8995411,95.0735397 C84.1215894,95.0735397 85.4638131,89.3810359 81.686497,87.4948823 L49.7971476,71.5713518 L48.0101917,79.1500092 L79.992126,79.1500092 C84.2093753,79.1500092 85.5558421,73.4676733 81.7869993,71.5753162 L49.805065,55.517008 L48.0101916,63.0917009 L79.9921259,63.0917015 C84.2035118,63.0917016 85.5551434,57.4217887 81.7966702,55.5218807 L65.7625147,47.4166161 L67.9579705,50.9864368 L67.9579705,35.6148245 L77.1715737,44.8284272 C78.7336709,46.3905243 81.2663308,46.3905243 82.8284279,44.8284271 C84.390525,43.2663299 84.390525,40.7336699 82.8284278,39.1715728 L66.8284271,23.1715728 C65.2663299,21.6094757 62.73367,21.6094757 61.1715729,23.1715729 L45.1715729,39.1715729 C43.6094757,40.73367 43.6094757,43.26633 45.1715729,44.8284271 C46.73367,46.3905243 49.26633,46.3905243 50.8284271,44.8284271 L59.9579705,35.6988837 L59.9579705,50.9864368 C59.9579705,52.495201 60.806922,53.8755997 62.1534263,54.5562576 L78.1875818,62.6615223 L79.9921261,55.0917015 L48.0101917,55.0917009 C43.7929424,55.0917008 42.4464755,60.7740368 46.2153183,62.6663939 L78.1972526,78.7247021 L79.992126,71.1500092 L48.0101917,71.1500092 C43.7881433,71.1500092 42.4459197,76.842513 46.2232358,78.7286665 L78.1125852,94.6521971 L79.8995411,87.0735397 L47.992126,87.0735397 C43.8588276,87.0735397 42.4404876,92.5780219 46.0591064,94.5754586 L62.024951,103.388424 L59.9579785,99.8944677 L59.9867142,114.32986 L50.8284271,105.171573 C49.26633,103.609476 46.73367,103.609476 45.1715729,105.171573 C43.6094757,106.73367 43.6094757,109.26633 45.1715729,110.828427 L61.1715729,126.828427 C62.73367,128.390524 65.2663299,128.390524 66.8284271,126.828427 L82.8284278,110.828427 C84.390525,109.26633 84.390525,106.73367 82.8284279,105.171573 C81.2663308,103.609476 78.7336709,103.609476 77.1715737,105.171573 L67.9867828,114.356363 L67.9867828,114.356363 Z M16,20 L112,20 C114.209139,20 116,18.209139 116,16 C116,13.790861 114.209139,12 112,12 L16,12 C13.790861,12 12,13.790861 12,16 C12,18.209139 13.790861,20 16,20 L16,20 Z\&quot;&gt;&lt;/path&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/blank&quot;: {
            &quot;title&quot;: &quot;$:/core/images/blank&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-blank tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/bold&quot;: {
            &quot;title&quot;: &quot;$:/core/images/bold&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-bold tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M41.1456583,51.8095238 L41.1456583,21.8711485 L67.4985994,21.8711485 C70.0084159,21.8711485 72.4285598,22.0802967 74.7591036,22.4985994 C77.0896475,22.9169022 79.1512515,23.6638602 80.9439776,24.7394958 C82.7367036,25.8151314 84.170863,27.3090474 85.2464986,29.2212885 C86.3221342,31.1335296 86.859944,33.5835518 86.859944,36.5714286 C86.859944,41.9496067 85.2465147,45.8337882 82.0196078,48.2240896 C78.792701,50.614391 74.6694929,51.8095238 69.6498599,51.8095238 L41.1456583,51.8095238 Z M13,0 L13,128 L75.0280112,128 C80.7647346,128 86.3519803,127.28292 91.789916,125.848739 C97.2278517,124.414559 102.068139,122.203563 106.310924,119.215686 C110.553709,116.22781 113.929959,112.373506 116.439776,107.652661 C118.949592,102.931816 120.204482,97.3445701 120.204482,90.8907563 C120.204482,82.8832466 118.262391,76.0411115 114.378151,70.3641457 C110.493911,64.6871798 104.607883,60.7133634 96.719888,58.442577 C102.456611,55.6937304 106.788968,52.1680887 109.717087,47.8655462 C112.645206,43.5630037 114.109244,38.1849062 114.109244,31.7310924 C114.109244,25.7553389 113.123259,20.7357813 111.151261,16.6722689 C109.179262,12.6087565 106.400578,9.35201972 102.815126,6.90196078 C99.2296739,4.45190185 94.927196,2.68908101 89.907563,1.61344538 C84.8879301,0.537809748 79.3305627,0 73.2352941,0 L13,0 Z M41.1456583,106.128852 L41.1456583,70.9915966 L71.8011204,70.9915966 C77.896389,70.9915966 82.7964334,72.3958776 86.5014006,75.2044818 C90.2063677,78.0130859 92.0588235,82.7039821 92.0588235,89.2773109 C92.0588235,92.6237329 91.4911355,95.3725383 90.3557423,97.5238095 C89.2203491,99.6750808 87.6965548,101.378145 85.7843137,102.633053 C83.8720726,103.887961 81.661077,104.784311 79.1512605,105.322129 C76.641444,105.859947 74.0121519,106.128852 71.2633053,106.128852 L41.1456583,106.128852 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/cancel-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/cancel-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-cancel-button tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;\n\t&lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n\t    &lt;path d=\&quot;M64,76.3137085 L47.0294734,93.2842351 C43.9038742,96.4098343 38.8399231,96.4084656 35.7157288,93.2842712 C32.5978915,90.166434 32.5915506,85.0947409 35.7157649,81.9705266 L52.6862915,65 L35.7157649,48.0294734 C32.5901657,44.9038742 32.5915344,39.8399231 35.7157288,36.7157288 C38.833566,33.5978915 43.9052591,33.5915506 47.0294734,36.7157649 L64,53.6862915 L80.9705266,36.7157649 C84.0961258,33.5901657 89.1600769,33.5915344 92.2842712,36.7157288 C95.4021085,39.833566 95.4084494,44.9052591 92.2842351,48.0294734 L75.3137085,65 L92.2842351,81.9705266 C95.4098343,85.0961258 95.4084656,90.1600769 92.2842712,93.2842712 C89.166434,96.4021085 84.0947409,96.4084494 80.9705266,93.2842351 L64,76.3137085 Z M64,129 C99.346224,129 128,100.346224 128,65 C128,29.653776 99.346224,1 64,1 C28.653776,1 1.13686838e-13,29.653776 1.13686838e-13,65 C1.13686838e-13,100.346224 28.653776,129 64,129 Z M64,113 C90.509668,113 112,91.509668 112,65 C112,38.490332 90.509668,17 64,17 C37.490332,17 16,38.490332 16,65 C16,91.509668 37.490332,113 64,113 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/chevron-down&quot;: {
            &quot;title&quot;: &quot;$:/core/images/chevron-down&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-chevron-down tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n\t&lt;g fill-rule=\&quot;evenodd\&quot; transform=\&quot;translate(64.000000, 40.500000) rotate(-270.000000) translate(-64.000000, -40.500000) translate(-22.500000, -26.500000)\&quot;&gt;\n        &lt;path d=\&quot;M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\&quot; transform=\&quot;translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\&quot; transform=\&quot;translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \&quot;&gt;&lt;/path&gt;\n\t&lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/chevron-left&quot;: {
            &quot;title&quot;: &quot;$:/core/images/chevron-left&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-chevron-left tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot; version=\&quot;1.1\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot; transform=\&quot;translate(92.500000, 64.000000) rotate(-180.000000) translate(-92.500000, -64.000000) translate(6.000000, -3.000000)\&quot;&gt;\n        &lt;path d=\&quot;M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\&quot; transform=\&quot;translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\&quot; transform=\&quot;translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/chevron-right&quot;: {
            &quot;title&quot;: &quot;$:/core/images/chevron-right&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-chevron-right tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot; transform=\&quot;translate(-48.000000, -3.000000)\&quot;&gt;\n        &lt;path d=\&quot;M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\&quot; transform=\&quot;translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\&quot; transform=\&quot;translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/chevron-up&quot;: {
            &quot;title&quot;: &quot;$:/core/images/chevron-up&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-chevron-up tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n\t&lt;g fill-rule=\&quot;evenodd\&quot; transform=\&quot;translate(64.000000, 89.500000) rotate(-90.000000) translate(-64.000000, -89.500000) translate(-22.500000, 22.500000)\&quot;&gt;\n        &lt;path d=\&quot;M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\&quot; transform=\&quot;translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\&quot; transform=\&quot;translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \&quot;&gt;&lt;/path&gt;\n\t&lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/clone-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/clone-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-clone-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M32.2650915,96 L32.2650915,120.002359 C32.2650915,124.419334 35.8432884,128 40.2627323,128 L120.002359,128 C124.419334,128 128,124.421803 128,120.002359 L128,40.2627323 C128,35.8457573 124.421803,32.2650915 120.002359,32.2650915 L96,32.2650915 L96,48 L108.858899,48 C110.519357,48 111.853018,49.3405131 111.853018,50.9941198 L111.853018,108.858899 C111.853018,110.519357 110.512505,111.853018 108.858899,111.853018 L50.9941198,111.853018 C49.333661,111.853018 48,110.512505 48,108.858899 L48,96 L32.2650915,96 Z\&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M40,56 L32.0070969,56 C27.5881712,56 24,52.418278 24,48 C24,43.5907123 27.5848994,40 32.0070969,40 L40,40 L40,32.0070969 C40,27.5881712 43.581722,24 48,24 C52.4092877,24 56,27.5848994 56,32.0070969 L56,40 L63.9929031,40 C68.4118288,40 72,43.581722 72,48 C72,52.4092877 68.4151006,56 63.9929031,56 L56,56 L56,63.9929031 C56,68.4118288 52.418278,72 48,72 C43.5907123,72 40,68.4151006 40,63.9929031 L40,56 Z M7.9992458,0 C3.58138434,0 0,3.5881049 0,7.9992458 L0,88.0007542 C0,92.4186157 3.5881049,96 7.9992458,96 L88.0007542,96 C92.4186157,96 96,92.4118951 96,88.0007542 L96,7.9992458 C96,3.58138434 92.4118951,0 88.0007542,0 L7.9992458,0 Z M19.0010118,16 C17.3435988,16 16,17.336731 16,19.0010118 L16,76.9989882 C16,78.6564012 17.336731,80 19.0010118,80 L76.9989882,80 C78.6564012,80 80,78.663269 80,76.9989882 L80,19.0010118 C80,17.3435988 78.663269,16 76.9989882,16 L19.0010118,16 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/close-all-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/close-all-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-close-all-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot; transform=\&quot;translate(-23.000000, -23.000000)\&quot;&gt;\n        &lt;path d=\&quot;M43,131 L22.9976794,131 C18.5827987,131 15,127.418278 15,123 C15,118.590712 18.5806831,115 22.9976794,115 L43,115 L43,94.9976794 C43,90.5827987 46.581722,87 51,87 C55.4092877,87 59,90.5806831 59,94.9976794 L59,115 L79.0023206,115 C83.4172013,115 87,118.581722 87,123 C87,127.409288 83.4193169,131 79.0023206,131 L59,131 L59,151.002321 C59,155.417201 55.418278,159 51,159 C46.5907123,159 43,155.419317 43,151.002321 L43,131 Z\&quot; transform=\&quot;translate(51.000000, 123.000000) rotate(-45.000000) translate(-51.000000, -123.000000) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M43,59 L22.9976794,59 C18.5827987,59 15,55.418278 15,51 C15,46.5907123 18.5806831,43 22.9976794,43 L43,43 L43,22.9976794 C43,18.5827987 46.581722,15 51,15 C55.4092877,15 59,18.5806831 59,22.9976794 L59,43 L79.0023206,43 C83.4172013,43 87,46.581722 87,51 C87,55.4092877 83.4193169,59 79.0023206,59 L59,59 L59,79.0023206 C59,83.4172013 55.418278,87 51,87 C46.5907123,87 43,83.4193169 43,79.0023206 L43,59 Z\&quot; transform=\&quot;translate(51.000000, 51.000000) rotate(-45.000000) translate(-51.000000, -51.000000) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M115,59 L94.9976794,59 C90.5827987,59 87,55.418278 87,51 C87,46.5907123 90.5806831,43 94.9976794,43 L115,43 L115,22.9976794 C115,18.5827987 118.581722,15 123,15 C127.409288,15 131,18.5806831 131,22.9976794 L131,43 L151.002321,43 C155.417201,43 159,46.581722 159,51 C159,55.4092877 155.419317,59 151.002321,59 L131,59 L131,79.0023206 C131,83.4172013 127.418278,87 123,87 C118.590712,87 115,83.4193169 115,79.0023206 L115,59 Z\&quot; transform=\&quot;translate(123.000000, 51.000000) rotate(-45.000000) translate(-123.000000, -51.000000) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M115,131 L94.9976794,131 C90.5827987,131 87,127.418278 87,123 C87,118.590712 90.5806831,115 94.9976794,115 L115,115 L115,94.9976794 C115,90.5827987 118.581722,87 123,87 C127.409288,87 131,90.5806831 131,94.9976794 L131,115 L151.002321,115 C155.417201,115 159,118.581722 159,123 C159,127.409288 155.419317,131 151.002321,131 L131,131 L131,151.002321 C131,155.417201 127.418278,159 123,159 C118.590712,159 115,155.419317 115,151.002321 L115,131 Z\&quot; transform=\&quot;translate(123.000000, 123.000000) rotate(-45.000000) translate(-123.000000, -123.000000) \&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/close-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/close-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-close-button tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M65.0864256,75.4091629 L14.9727349,125.522854 C11.8515951,128.643993 6.78104858,128.64922 3.65685425,125.525026 C0.539017023,122.407189 0.5336324,117.334539 3.65902635,114.209145 L53.7727171,64.0954544 L3.65902635,13.9817637 C0.537886594,10.8606239 0.532659916,5.79007744 3.65685425,2.6658831 C6.77469148,-0.451954124 11.8473409,-0.457338747 14.9727349,2.66805521 L65.0864256,52.7817459 L115.200116,2.66805521 C118.321256,-0.453084553 123.391803,-0.458311231 126.515997,2.6658831 C129.633834,5.78372033 129.639219,10.8563698 126.513825,13.9817637 L76.4001341,64.0954544 L126.513825,114.209145 C129.634965,117.330285 129.640191,122.400831 126.515997,125.525026 C123.39816,128.642863 118.32551,128.648248 115.200116,125.522854 L65.0864256,75.4091629 L65.0864256,75.4091629 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;\n&quot;
        },
        &quot;$:/core/images/close-others-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/close-others-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-close-others-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z M64,96 C81.673112,96 96,81.673112 96,64 C96,46.326888 81.673112,32 64,32 C46.326888,32 32,46.326888 32,64 C32,81.673112 46.326888,96 64,96 Z M64,80 C72.836556,80 80,72.836556 80,64 C80,55.163444 72.836556,48 64,48 C55.163444,48 48,55.163444 48,64 C48,72.836556 55.163444,80 64,80 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/delete-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/delete-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-delete-button tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot; transform=\&quot;translate(12.000000, 0.000000)\&quot;&gt;\n        &lt;rect x=\&quot;0\&quot; y=\&quot;11\&quot; width=\&quot;105\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;28\&quot; y=\&quot;0\&quot; width=\&quot;48\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;8\&quot; y=\&quot;16\&quot; width=\&quot;16\&quot; height=\&quot;112\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;8\&quot; y=\&quot;112\&quot; width=\&quot;88\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;80\&quot; y=\&quot;16\&quot; width=\&quot;16\&quot; height=\&quot;112\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;56\&quot; y=\&quot;16\&quot; width=\&quot;16\&quot; height=\&quot;112\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;32\&quot; y=\&quot;16\&quot; width=\&quot;16\&quot; height=\&quot;112\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/done-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/done-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-done-button tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M3.52445141,76.8322939 C2.07397484,75.3828178 1.17514421,73.3795385 1.17514421,71.1666288 L1.17514421,23.1836596 C1.17514421,18.7531992 4.75686621,15.1751442 9.17514421,15.1751442 C13.5844319,15.1751442 17.1751442,18.7606787 17.1751442,23.1836596 L17.1751442,63.1751442 L119.173716,63.1751442 C123.590457,63.1751442 127.175144,66.7568662 127.175144,71.1751442 C127.175144,75.5844319 123.592783,79.1751442 119.173716,79.1751442 L9.17657227,79.1751442 C6.96796403,79.1751442 4.9674142,78.279521 3.51911285,76.8315312 Z\&quot; id=\&quot;Rectangle-285\&quot; transform=\&quot;translate(64.175144, 47.175144) rotate(-45.000000) translate(-64.175144, -47.175144) \&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/down-arrow&quot;: {
            &quot;title&quot;: &quot;$:/core/images/down-arrow&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-down-arrow tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;\n    &lt;path d=\&quot;M109.35638,81.3533152 C107.923899,82.7869182 105.94502,83.6751442 103.759224,83.6751442 L24.5910645,83.6751442 C20.225873,83.6751442 16.6751442,80.1307318 16.6751442,75.7584775 C16.6751442,71.3951199 20.2192225,67.8418109 24.5910645,67.8418109 L95.8418109,67.8418109 L95.8418109,-3.40893546 C95.8418109,-7.77412698 99.3862233,-11.3248558 103.758478,-11.3248558 C108.121835,-11.3248558 111.675144,-7.78077754 111.675144,-3.40893546 L111.675144,75.7592239 C111.675144,77.9416955 110.789142,79.9205745 109.356651,81.3538862 Z\&quot; transform=\&quot;translate(64.175144, 36.175144) rotate(45.000000) translate(-64.175144, -36.175144) \&quot;&gt;&lt;/path&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/download-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/download-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-download-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;&lt;g fill-rule=\&quot;evenodd\&quot;&gt;&lt;path class=\&quot;tc-image-download-button-ring\&quot; d=\&quot;M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\&quot;/&gt;&lt;path d=\&quot;M34.3496823,66.4308767 L61.2415823,93.634668 C63.0411536,95.4551107 65.9588502,95.4551107 67.7584215,93.634668 L94.6503215,66.4308767 C96.4498928,64.610434 96.4498928,61.6588981 94.6503215,59.8384554 C93.7861334,58.9642445 92.6140473,58.4731195 91.3919019,58.4731195 L82.9324098,58.4731195 C80.3874318,58.4731195 78.3243078,56.3860674 78.3243078,53.8115729 L78.3243078,38.6615466 C78.3243078,36.0870521 76.2611837,34 73.7162058,34 L55.283798,34 C52.7388201,34 50.675696,36.0870521 50.675696,38.6615466 L50.675696,38.6615466 L50.675696,53.8115729 C50.675696,56.3860674 48.612572,58.4731195 46.0675941,58.4731195 L37.608102,58.4731195 C35.063124,58.4731195 33,60.5601716 33,63.134666 C33,64.3709859 33.4854943,65.5566658 34.3496823,66.4308767 L34.3496823,66.4308767 Z\&quot;/&gt;&lt;/g&gt;&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/edit-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/edit-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-edit-button tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M116.870058,45.3431458 L108.870058,45.3431458 L108.870058,45.3431458 L108.870058,61.3431458 L116.870058,61.3431458 L116.870058,45.3431458 Z M124.870058,45.3431458 L127.649881,45.3431458 C132.066101,45.3431458 135.656854,48.9248678 135.656854,53.3431458 C135.656854,57.7524334 132.07201,61.3431458 127.649881,61.3431458 L124.870058,61.3431458 L124.870058,45.3431458 Z M100.870058,45.3431458 L15.6638275,45.3431458 C15.5064377,45.3431458 15.3501085,45.3476943 15.1949638,45.3566664 L15.1949638,45.3566664 C15.0628002,45.3477039 14.928279,45.3431458 14.7913977,45.3431458 C6.68160973,45.3431458 -8.34314575,53.3431458 -8.34314575,53.3431458 C-8.34314575,53.3431458 6.85614548,61.3431458 14.7913977,61.3431458 C14.9266533,61.3431458 15.0596543,61.3384973 15.190398,61.3293588 C15.3470529,61.3385075 15.5049057,61.3431458 15.6638275,61.3431458 L100.870058,61.3431458 L100.870058,45.3431458 L100.870058,45.3431458 Z\&quot; transform=\&quot;translate(63.656854, 53.343146) rotate(-45.000000) translate(-63.656854, -53.343146) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M35.1714596,124.189544 C41.9594858,123.613403 49.068777,121.917633 58.85987,118.842282 C60.6854386,118.268877 62.4306907,117.705515 65.1957709,116.802278 C81.1962861,111.575575 87.0734839,109.994907 93.9414474,109.655721 C102.29855,109.242993 107.795169,111.785371 111.520478,118.355045 C112.610163,120.276732 115.051363,120.951203 116.97305,119.861518 C118.894737,118.771832 119.569207,116.330633 118.479522,114.408946 C113.146151,105.003414 104.734907,101.112919 93.5468356,101.66546 C85.6716631,102.054388 79.4899908,103.716944 62.7116783,109.197722 C59.9734132,110.092199 58.2519873,110.64787 56.4625698,111.20992 C37.002649,117.322218 25.6914684,118.282267 16.8654804,112.957098 C14.9739614,111.815848 12.5154166,112.424061 11.3741667,114.31558 C10.2329168,116.207099 10.84113,118.665644 12.7326489,119.806894 C19.0655164,123.627836 26.4866335,124.926678 35.1714596,124.189544 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/erase&quot;: {
            &quot;title&quot;: &quot;$:/core/images/erase&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-erase tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M60.0870401,127.996166 L123.102318,64.980888 C129.636723,58.4464827 129.629513,47.8655877 123.098967,41.3350425 L99.4657866,17.7018617 C92.927448,11.1635231 82.3486358,11.1698163 75.8199411,17.698511 L4.89768189,88.6207702 C-1.63672343,95.1551755 -1.6295126,105.736071 4.90103262,112.266616 L20.6305829,127.996166 L60.0870401,127.996166 Z M25.1375576,120.682546 L10.812569,106.357558 C7.5455063,103.090495 7.54523836,97.793808 10.8048093,94.5342371 L46.2691086,59.0699377 L81.7308914,94.5317205 L55.5800654,120.682546 L25.1375576,120.682546 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/excise&quot;: {
            &quot;title&quot;: &quot;$:/core/images/excise&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-excise tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M56,107.313709 L53.6568542,109.656854 C50.5326599,112.781049 45.4673401,112.781049 42.3431457,109.656854 C39.2189514,106.53266 39.2189514,101.46734 42.3431458,98.3431457 L58.3431458,82.3431457 C61.4673401,79.2189514 66.5326599,79.2189514 69.6568542,82.3431458 L85.6568542,98.3431458 C88.7810486,101.46734 88.7810486,106.53266 85.6568542,109.656854 C82.5326599,112.781049 77.4673401,112.781049 74.3431458,109.656854 L72,107.313708 L72,121.597798 C72,125.133636 68.418278,128 64,128 C59.581722,128 56,125.133636 56,121.597798 L56,107.313709 Z M0,40.0070969 C0,35.5848994 3.59071231,32 8,32 C12.418278,32 16,35.5881712 16,40.0070969 L16,71.9929031 C16,76.4151006 12.4092877,80 8,80 C3.581722,80 0,76.4118288 0,71.9929031 L0,40.0070969 Z M32,40.0070969 C32,35.5848994 35.5907123,32 40,32 C44.418278,32 48,35.5881712 48,40.0070969 L48,71.9929031 C48,76.4151006 44.4092877,80 40,80 C35.581722,80 32,76.4118288 32,71.9929031 L32,40.0070969 Z M80,40.0070969 C80,35.5848994 83.5907123,32 88,32 C92.418278,32 96,35.5881712 96,40.0070969 L96,71.9929031 C96,76.4151006 92.4092877,80 88,80 C83.581722,80 80,76.4118288 80,71.9929031 L80,40.0070969 Z M56,8.00709688 C56,3.58489938 59.5907123,0 64,0 C68.418278,0 72,3.58817117 72,8.00709688 L72,39.9929031 C72,44.4151006 68.4092877,48 64,48 C59.581722,48 56,44.4118288 56,39.9929031 L56,8.00709688 Z M112,40.0070969 C112,35.5848994 115.590712,32 120,32 C124.418278,32 128,35.5881712 128,40.0070969 L128,71.9929031 C128,76.4151006 124.409288,80 120,80 C115.581722,80 112,76.4118288 112,71.9929031 L112,40.0070969 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/export-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/export-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-export-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M8.00348646,127.999999 C8.00464867,128 8.00581094,128 8.00697327,128 L119.993027,128 C122.205254,128 124.207939,127.101378 125.657096,125.651198 L125.656838,125.65759 C127.104563,124.210109 128,122.21009 128,119.999949 L128,56.0000511 C128,51.5817449 124.409288,48 120,48 C115.581722,48 112,51.5797863 112,56.0000511 L112,112 L16,112 L16,56.0000511 C16,51.5817449 12.4092877,48 8,48 C3.581722,48 7.10542736e-15,51.5797863 7.10542736e-15,56.0000511 L7.10542736e-15,119.999949 C7.10542736e-15,124.418255 3.59071231,128 8,128 C8.00116233,128 8.0023246,128 8.00348681,127.999999 Z M56.6235633,27.3113724 L47.6580188,36.2769169 C44.5333664,39.4015692 39.4634864,39.4061295 36.339292,36.2819351 C33.2214548,33.1640979 33.2173444,28.0901742 36.3443103,24.9632084 L58.9616908,2.34582788 C60.5248533,0.782665335 62.5748436,0.000361191261 64.624516,2.38225238e-14 L64.6193616,0.00151809229 C66.6695374,0.000796251595 68.7211167,0.781508799 70.2854358,2.34582788 L92.9028163,24.9632084 C96.0274686,28.0878607 96.0320289,33.1577408 92.9078345,36.2819351 C89.7899973,39.3997724 84.7160736,39.4038827 81.5891078,36.2769169 L72.6235633,27.3113724 L72.6235633,88.5669606 C72.6235633,92.9781015 69.0418413,96.5662064 64.6235633,96.5662064 C60.2142756,96.5662064 56.6235633,92.984822 56.6235633,88.5669606 L56.6235633,27.3113724 L56.6235633,27.3113724 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/file&quot;: {
            &quot;title&quot;: &quot;$:/core/images/file&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-file tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;nonzero\&quot;&gt;\n        &lt;path d=\&quot;M111.96811,30.5 L112,30.5 L112,119.999079 C112,124.417866 108.419113,128 104.000754,128 L23.9992458,128 C19.5813843,128 16,124.417687 16,119.999079 L16,8.00092105 C16,3.58213437 19.5808867,0 23.9992458,0 L81,0 L81,0.0201838424 C83.1589869,-0.071534047 85.3482153,0.707077645 86.9982489,2.35711116 L109.625176,24.9840387 C111.151676,26.510538 111.932942,28.4998414 111.96811,30.5 L111.96811,30.5 Z M81,8 L24,8 L24,120 L104,120 L104,30.5 L89.0003461,30.5 C84.5818769,30.5 81,26.9216269 81,22.4996539 L81,8 Z\&quot;&gt;&lt;/path&gt;\n        &lt;rect x=\&quot;32\&quot; y=\&quot;36\&quot; width=\&quot;64\&quot; height=\&quot;8\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;32\&quot; y=\&quot;52\&quot; width=\&quot;64\&quot; height=\&quot;8\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;32\&quot; y=\&quot;68\&quot; width=\&quot;64\&quot; height=\&quot;8\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;32\&quot; y=\&quot;84\&quot; width=\&quot;64\&quot; height=\&quot;8\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;32\&quot; y=\&quot;100\&quot; width=\&quot;64\&quot; height=\&quot;8\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;32\&quot; y=\&quot;20\&quot; width=\&quot;40\&quot; height=\&quot;8\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/fixed-height&quot;: {
            &quot;title&quot;: &quot;$:/core/images/fixed-height&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-fixed-height tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M60,35.6568542 L50.8284271,44.8284271 C49.26633,46.3905243 46.73367,46.3905243 45.1715729,44.8284271 C43.6094757,43.26633 43.6094757,40.73367 45.1715729,39.1715729 L61.1715729,23.1715729 C62.73367,21.6094757 65.2663299,21.6094757 66.8284271,23.1715728 L82.8284278,39.1715728 C84.390525,40.7336699 84.390525,43.2663299 82.8284279,44.8284271 C81.2663308,46.3905243 78.7336709,46.3905243 77.1715737,44.8284272 L68,35.6568539 L68,93.3431461 L77.1715737,84.1715728 C78.7336709,82.6094757 81.2663308,82.6094757 82.8284279,84.1715729 C84.390525,85.7336701 84.390525,88.2663301 82.8284278,89.8284272 L66.8284271,105.828427 C65.2663299,107.390524 62.73367,107.390524 61.1715729,105.828427 L45.1715729,89.8284271 C43.6094757,88.26633 43.6094757,85.73367 45.1715729,84.1715729 C46.73367,82.6094757 49.26633,82.6094757 50.8284271,84.1715729 L60,93.3431458 L60,35.6568542 L60,35.6568542 Z M16,116 L112,116 C114.209139,116 116,114.209139 116,112 C116,109.790861 114.209139,108 112,108 L16,108 C13.790861,108 12,109.790861 12,112 C12,114.209139 13.790861,116 16,116 L16,116 Z M16,20 L112,20 C114.209139,20 116,18.209139 116,16 C116,13.790861 114.209139,12 112,12 L16,12 C13.790861,12 12,13.790861 12,16 C12,18.209139 13.790861,20 16,20 L16,20 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/fold-all-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/fold-all-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-fold-all tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;rect x=\&quot;0\&quot; y=\&quot;0\&quot; width=\&quot;128\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;0\&quot; y=\&quot;64\&quot; width=\&quot;128\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;path d=\&quot;M64.0292774,58.6235628 C61.9791013,58.6242848 59.9275217,57.8435723 58.3632024,56.279253 L35.7458219,33.6618725 C32.6211696,30.5372202 32.6166093,25.4673401 35.7408036,22.3431458 C38.8586409,19.2253085 43.9325646,19.2211982 47.0595304,22.348164 L64.0250749,39.3137085 L80.9906194,22.348164 C84.1152717,19.2235117 89.1851518,19.2189514 92.3093461,22.3431458 C95.4271834,25.460983 95.4312937,30.5349067 92.3043279,33.6618725 L69.6869474,56.279253 C68.1237851,57.8424153 66.0737951,58.6247195 64.0241231,58.6250809 Z\&quot; transform=\&quot;translate(64.024316, 39.313708) scale(1, -1) translate(-64.024316, -39.313708) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M64.0292774,123.621227 C61.9791013,123.621949 59.9275217,122.841236 58.3632024,121.276917 L35.7458219,98.6595365 C32.6211696,95.5348842 32.6166093,90.4650041 35.7408036,87.3408098 C38.8586409,84.2229725 43.9325646,84.2188622 47.0595304,87.345828 L64.0250749,104.311373 L80.9906194,87.345828 C84.1152717,84.2211757 89.1851518,84.2166154 92.3093461,87.3408098 C95.4271834,90.458647 95.4312937,95.5325707 92.3043279,98.6595365 L69.6869474,121.276917 C68.1237851,122.840079 66.0737951,123.622383 64.0241231,123.622745 Z\&quot; transform=\&quot;translate(64.024316, 104.311372) scale(1, -1) translate(-64.024316, -104.311372) \&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/fold-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/fold-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-fold tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;rect x=\&quot;0\&quot; y=\&quot;0\&quot; width=\&quot;128\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;path d=\&quot;M64.0292774,63.6235628 C61.9791013,63.6242848 59.9275217,62.8435723 58.3632024,61.279253 L35.7458219,38.6618725 C32.6211696,35.5372202 32.6166093,30.4673401 35.7408036,27.3431458 C38.8586409,24.2253085 43.9325646,24.2211982 47.0595304,27.348164 L64.0250749,44.3137085 L80.9906194,27.348164 C84.1152717,24.2235117 89.1851518,24.2189514 92.3093461,27.3431458 C95.4271834,30.460983 95.4312937,35.5349067 92.3043279,38.6618725 L69.6869474,61.279253 C68.1237851,62.8424153 66.0737951,63.6247195 64.0241231,63.6250809 Z\&quot; transform=\&quot;translate(64.024316, 44.313708) scale(1, -1) translate(-64.024316, -44.313708) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M64.0049614,105.998482 C61.9547853,105.999204 59.9032057,105.218491 58.3388864,103.654172 L35.7215059,81.0367916 C32.5968535,77.9121393 32.5922933,72.8422592 35.7164876,69.7180649 C38.8343248,66.6002276 43.9082485,66.5961173 47.0352144,69.7230831 L64.0007589,86.6886276 L80.9663034,69.7230831 C84.0909557,66.5984308 89.1608358,66.5938705 92.2850301,69.7180649 C95.4028673,72.8359021 95.4069777,77.9098258 92.2800119,81.0367916 L69.6626314,103.654172 C68.099469,105.217334 66.0494791,105.999639 63.999807,106 Z\&quot; transform=\&quot;translate(64.000000, 86.688628) scale(1, -1) translate(-64.000000, -86.688628) \&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/fold-others-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/fold-others-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-fold-others tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;rect x=\&quot;0\&quot; y=\&quot;56.0314331\&quot; width=\&quot;128\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;path d=\&quot;M101.657101,104.948818 C100.207918,103.498614 98.2051847,102.599976 95.9929031,102.599976 L72,102.599976 L72,78.6070725 C72,76.3964271 71.1036108,74.3936927 69.6545293,72.9441002 L69.6571005,72.9488183 C68.2079177,71.4986143 66.2051847,70.5999756 63.9929031,70.5999756 L32.0070969,70.5999756 C27.5881712,70.5999756 24,74.1816976 24,78.5999756 C24,83.0092633 27.5848994,86.5999756 32.0070969,86.5999756 L56,86.5999756 L56,110.592879 C56,112.803524 56.8963895,114.806259 58.3454713,116.255852 L58.3429,116.251133 C59.7920828,117.701337 61.7948156,118.599976 64.0070969,118.599976 L88,118.599976 L88,142.592879 C88,147.011804 91.581722,150.599976 96,150.599976 C100.409288,150.599976 104,147.015076 104,142.592879 L104,110.607072 C104,108.396427 103.103611,106.393693 101.654529,104.9441 Z\&quot; transform=\&quot;translate(64.000000, 110.599976) rotate(-45.000000) translate(-64.000000, -110.599976) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M101.725643,11.7488671 C100.27646,10.2986632 98.2737272,9.40002441 96.0614456,9.40002441 L72.0685425,9.40002441 L72.0685425,-14.5928787 C72.0685425,-16.8035241 71.1721533,-18.8062584 69.7230718,-20.255851 L69.725643,-20.2511329 C68.2764602,-21.7013368 66.2737272,-22.5999756 64.0614456,-22.5999756 L32.0756394,-22.5999756 C27.6567137,-22.5999756 24.0685425,-19.0182536 24.0685425,-14.5999756 C24.0685425,-10.1906879 27.6534419,-6.59997559 32.0756394,-6.59997559 L56.0685425,-6.59997559 L56.0685425,17.3929275 C56.0685425,19.6035732 56.964932,21.6063078 58.4140138,23.0559004 L58.4114425,23.0511823 C59.8606253,24.5013859 61.8633581,25.4000244 64.0756394,25.4000244 L88.0685425,25.4000244 L88.0685425,49.3929275 C88.0685425,53.8118532 91.6502645,57.4000244 96.0685425,57.4000244 C100.47783,57.4000244 104.068542,53.815125 104.068542,49.3929275 L104.068542,17.4071213 C104.068542,15.1964759 103.172153,13.1937416 101.723072,11.744149 Z\&quot; transform=\&quot;translate(64.068542, 17.400024) scale(1, -1) rotate(-45.000000) translate(-64.068542, -17.400024) \&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/folder&quot;: {
            &quot;title&quot;: &quot;$:/core/images/folder&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-folder tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M55.6943257,128.000004 L7.99859666,128.000004 C3.5810937,128.000004 0,124.413822 0,119.996384 L0,48.0036243 C0,43.5833471 3.58387508,40.0000044 7.99859666,40.0000044 L16,40.0000044 L16,31.9999914 C16,27.5817181 19.5783731,24 24.0003461,24 L55.9996539,24 C60.4181231,24 64,27.5800761 64,31.9999914 L64,40.0000044 L104.001403,40.0000044 C108.418906,40.0000044 112,43.5861868 112,48.0036243 L112,59.8298353 L104,59.7475921 L104,51.9994189 C104,49.7887607 102.207895,48.0000044 99.9972215,48.0000044 L56,48.0000044 L56,36.0000255 C56,33.7898932 54.2072328,32 51.9957423,32 L28.0042577,32 C25.7890275,32 24,33.7908724 24,36.0000255 L24,48.0000044 L12.0027785,48.0000044 C9.78987688,48.0000044 8,49.7906032 8,51.9994189 L8,116.00059 C8,118.211248 9.79210499,120.000004 12.0027785,120.000004 L58.7630167,120.000004 L55.6943257,128.000004 L55.6943257,128.000004 Z\&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M23.8728955,55.5 L119.875702,55.5 C124.293205,55.5 126.87957,59.5532655 125.650111,64.5630007 L112.305967,118.936999 C111.077582,123.942356 106.497904,128 102.083183,128 L6.08037597,128 C1.66287302,128 -0.923492342,123.946735 0.305967145,118.936999 L13.650111,64.5630007 C14.878496,59.5576436 19.4581739,55.5 23.8728955,55.5 L23.8728955,55.5 L23.8728955,55.5 Z M25.6530124,64 L113.647455,64 C115.858129,64 117.151473,66.0930612 116.538306,68.6662267 L105.417772,115.333773 C104.803671,117.910859 102.515967,120 100.303066,120 L12.3086228,120 C10.0979492,120 8.8046054,117.906939 9.41777189,115.333773 L20.5383062,68.6662267 C21.1524069,66.0891409 23.4401107,64 25.6530124,64 L25.6530124,64 L25.6530124,64 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/full-screen-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/full-screen-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-full-screen-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g&gt;\n        &lt;g&gt;\n            &lt;path d=\&quot;M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\&quot;&gt;&lt;/path&gt;\n        &lt;/g&gt;\n        &lt;g transform=\&quot;translate(104.000000, 104.000000) rotate(-180.000000) translate(-104.000000, -104.000000) translate(80.000000, 80.000000)\&quot;&gt;\n            &lt;path d=\&quot;M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\&quot;&gt;&lt;/path&gt;\n        &lt;/g&gt;\n        &lt;g transform=\&quot;translate(24.000000, 104.000000) rotate(-90.000000) translate(-24.000000, -104.000000) translate(0.000000, 80.000000)\&quot;&gt;\n            &lt;path d=\&quot;M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\&quot;&gt;&lt;/path&gt;\n        &lt;/g&gt;\n        &lt;g transform=\&quot;translate(104.000000, 24.000000) rotate(90.000000) translate(-104.000000, -24.000000) translate(80.000000, 0.000000)\&quot;&gt;\n            &lt;path d=\&quot;M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\&quot;&gt;&lt;/path&gt;\n        &lt;/g&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/github&quot;: {
            &quot;title&quot;: &quot;$:/core/images/github&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-github tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n        &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n            &lt;path d=\&quot;M63.9383506,1.60695328 C28.6017227,1.60695328 -0.055756057,30.2970814 -0.055756057,65.6906208 C-0.055756057,94.003092 18.2804728,118.019715 43.7123154,126.493393 C46.9143781,127.083482 48.0812647,125.104717 48.0812647,123.405261 C48.0812647,121.886765 48.02626,117.85449 47.9948287,112.508284 C30.1929317,116.379268 26.4368926,103.916587 26.4368926,103.916587 C23.5255693,96.5129372 19.3294921,94.5420399 19.3294921,94.5420399 C13.5186324,90.5687739 19.7695302,90.6474524 19.7695302,90.6474524 C26.1933001,91.099854 29.5721638,97.2525155 29.5721638,97.2525155 C35.2808718,107.044059 44.5531024,104.215566 48.1991321,102.575118 C48.7806109,98.4366275 50.4346826,95.612068 52.2616263,94.0109598 C38.0507543,92.3941159 23.1091047,86.8944862 23.1091047,62.3389152 C23.1091047,55.3443933 25.6039634,49.6205298 29.6978889,45.1437211 C29.0378318,43.5229433 26.8415704,37.0044266 30.3265147,28.1845627 C30.3265147,28.1845627 35.6973364,26.4615028 47.9241083,34.7542205 C53.027764,33.330139 58.5046663,32.6220321 63.9462084,32.5944947 C69.3838216,32.6220321 74.856795,33.330139 79.9683085,34.7542205 C92.1872225,26.4615028 97.5501864,28.1845627 97.5501864,28.1845627 C101.042989,37.0044266 98.8467271,43.5229433 98.190599,45.1437211 C102.292382,49.6205298 104.767596,55.3443933 104.767596,62.3389152 C104.767596,86.9574291 89.8023734,92.3744463 75.5482834,93.9598188 C77.8427675,95.9385839 79.8897303,99.8489072 79.8897303,105.828476 C79.8897303,114.392635 79.8111521,121.304544 79.8111521,123.405261 C79.8111521,125.120453 80.966252,127.114954 84.2115327,126.489459 C109.623731,117.996111 127.944244,93.9952241 127.944244,65.6906208 C127.944244,30.2970814 99.2867652,1.60695328 63.9383506,1.60695328\&quot;&gt;&lt;/path&gt;\n        &lt;/g&gt;\n    &lt;/svg&gt;\n&quot;
        },
        &quot;$:/core/images/globe&quot;: {
            &quot;title&quot;: &quot;$:/core/images/globe&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-globe tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M72.8111354,37.1275855 C72.8111354,37.9789875 72.8111354,38.8303894 72.8111354,39.6817913 C72.8111354,41.8784743 73.7885604,46.5631866 72.8111354,48.5143758 C71.3445471,51.4420595 68.1617327,52.0543531 66.4170946,54.3812641 C65.2352215,55.9575873 61.7987417,64.9821523 62.7262858,67.3005778 C66.6959269,77.2228204 74.26087,70.4881886 80.6887657,76.594328 C81.5527211,77.415037 83.5758191,78.8666631 83.985137,79.8899578 C87.2742852,88.1128283 76.4086873,94.8989524 87.7419325,106.189751 C88.9872885,107.430443 91.555495,102.372895 91.8205061,101.575869 C92.6726866,99.0129203 98.5458765,96.1267309 100.908882,94.5234439 C102.928056,93.1534443 105.782168,91.8557166 107.236936,89.7775886 C109.507391,86.5342557 108.717505,82.2640435 110.334606,79.0328716 C112.473794,74.7585014 114.163418,69.3979002 116.332726,65.0674086 C120.230862,57.2857361 121.054075,67.1596684 121.400359,67.5059523 C121.757734,67.8633269 122.411167,67.5059523 122.916571,67.5059523 C123.011132,67.5059523 124.364019,67.6048489 124.432783,67.5059523 C125.0832,66.5705216 123.390209,49.5852316 123.114531,48.2089091 C121.710578,41.1996597 116.17083,32.4278331 111.249523,27.7092761 C104.975994,21.6942076 104.160516,11.5121686 92.9912146,12.7547535 C92.7872931,12.7774397 87.906794,22.9027026 85.2136766,26.2672064 C81.486311,30.9237934 82.7434931,22.1144904 78.6876623,22.1144904 C78.6065806,22.1144904 77.5045497,22.0107615 77.4353971,22.1144904 C76.8488637,22.9942905 75.9952305,26.0101404 75.1288269,26.5311533 C74.8635477,26.6906793 73.4071369,26.2924966 73.2826811,26.5311533 C71.0401728,30.8313939 81.5394677,28.7427264 79.075427,34.482926 C76.7225098,39.9642538 72.747373,32.4860199 72.747373,43.0434079\&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M44.4668556,7.01044608 C54.151517,13.1403033 45.1489715,19.2084878 47.1611905,23.2253896 C48.8157833,26.5283781 51.4021933,28.6198851 48.8753629,33.038878 C46.8123257,36.6467763 42.0052989,37.0050492 39.251679,39.7621111 C36.2115749,42.8060154 33.7884281,48.7028116 32.4624592,52.6732691 C30.8452419,57.5158356 47.0088721,59.5388126 44.5246867,63.6811917 C43.1386839,65.9923513 37.7785192,65.1466282 36.0880227,63.8791519 C34.9234453,63.0059918 32.4946425,63.3331166 31.6713597,62.0997342 C29.0575851,58.1839669 29.4107339,54.0758543 28.0457962,49.9707786 C27.1076833,47.1493864 21.732611,47.8501656 20.2022714,49.3776393 C19.6790362,49.8998948 19.8723378,51.1703278 19.8723378,51.8829111 C19.8723378,57.1682405 26.9914913,55.1986414 26.9914913,58.3421973 C26.9914913,72.9792302 30.9191897,64.8771867 38.1313873,69.6793121 C48.1678018,76.3618966 45.9763926,76.981595 53.0777543,84.0829567 C56.7511941,87.7563965 60.8192437,87.7689005 62.503478,93.3767069 C64.1046972,98.7081071 53.1759798,98.7157031 50.786754,100.825053 C49.663965,101.816317 47.9736094,104.970571 46.5680513,105.439676 C44.7757187,106.037867 43.334221,105.93607 41.6242359,107.219093 C39.1967302,109.040481 37.7241465,112.151588 37.6034934,112.030935 C35.4555278,109.88297 34.0848666,96.5511248 33.7147244,93.7726273 C33.1258872,89.3524817 28.1241923,88.2337027 26.7275443,84.7420826 C25.1572737,80.8164061 28.2518481,75.223612 25.599097,70.9819941 C19.0797019,60.557804 13.7775712,56.4811506 10.2493953,44.6896152 C9.3074899,41.5416683 13.5912267,38.1609942 15.1264825,35.8570308 C17.0029359,33.0410312 17.7876232,30.0028946 19.8723378,27.2224065 C22.146793,24.1888519 40.8551166,9.46076832 43.8574051,8.63490613 L44.4668556,7.01044608 Z\&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M64,126 C98.2416545,126 126,98.2416545 126,64 C126,29.7583455 98.2416545,2 64,2 C29.7583455,2 2,29.7583455 2,64 C2,98.2416545 29.7583455,126 64,126 Z M64,120 C94.927946,120 120,94.927946 120,64 C120,33.072054 94.927946,8 64,8 C33.072054,8 8,33.072054 8,64 C8,94.927946 33.072054,120 64,120 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/heading-1&quot;: {
            &quot;title&quot;: &quot;$:/core/images/heading-1&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-heading-1 tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M14,30 L27.25,30 L27.25,60.104 L61.7,60.104 L61.7,30 L74.95,30 L74.95,105.684 L61.7,105.684 L61.7,71.552 L27.25,71.552 L27.25,105.684 L14,105.684 L14,30 Z M84.3350766,43.78 C86.8790893,43.78 89.3523979,43.5680021 91.7550766,43.144 C94.1577553,42.7199979 96.3307336,42.0133383 98.2740766,41.024 C100.21742,40.0346617 101.87807,38.7626744 103.256077,37.208 C104.634084,35.6533256 105.535075,33.7453446 105.959077,31.484 L115.817077,31.484 L115.817077,105.684 L102.567077,105.684 L102.567077,53.32 L84.3350766,53.32 L84.3350766,43.78 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/heading-2&quot;: {
            &quot;title&quot;: &quot;$:/core/images/heading-2&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-heading-2 tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M125.519077,105.684 L74.8510766,105.684 C74.9217436,99.5359693 76.4057288,94.1653563 79.3030766,89.572 C82.2004244,84.9786437 86.1577182,80.986017 91.1750766,77.594 C93.5777553,75.8273245 96.0863969,74.113675 98.7010766,72.453 C101.315756,70.792325 103.718399,69.0080095 105.909077,67.1 C108.099754,65.1919905 109.901736,63.1250111 111.315077,60.899 C112.728417,58.6729889 113.47041,56.1113478 113.541077,53.214 C113.541077,51.8713266 113.382078,50.4403409 113.064077,48.921 C112.746075,47.4016591 112.127748,45.9883399 111.209077,44.681 C110.290405,43.3736601 109.018418,42.2783377 107.393077,41.395 C105.767735,40.5116622 103.647756,40.07 101.033077,40.07 C98.6303979,40.07 96.6340846,40.5469952 95.0440766,41.501 C93.4540687,42.4550048 92.1820814,43.762325 91.2280766,45.423 C90.2740719,47.083675 89.5674123,49.0446554 89.1080766,51.306 C88.648741,53.5673446 88.3837436,56.0053203 88.3130766,58.62 L76.2290766,58.62 C76.2290766,54.5213128 76.7767378,50.7230175 77.8720766,47.225 C78.9674154,43.7269825 80.610399,40.7060127 82.8010766,38.162 C84.9917542,35.6179873 87.6593942,33.6216739 90.8040766,32.173 C93.948759,30.7243261 97.6057224,30 101.775077,30 C106.297766,30 110.078395,30.7419926 113.117077,32.226 C116.155758,33.7100074 118.611401,35.5826554 120.484077,37.844 C122.356753,40.1053446 123.681739,42.5609868 124.459077,45.211 C125.236414,47.8610133 125.625077,50.3873213 125.625077,52.79 C125.625077,55.7580148 125.165748,58.4433213 124.247077,60.846 C123.328405,63.2486787 122.091751,65.4569899 120.537077,67.471 C118.982402,69.4850101 117.215753,71.3399915 115.237077,73.036 C113.2584,74.7320085 111.209087,76.3219926 109.089077,77.806 C106.969066,79.2900074 104.849087,80.7033266 102.729077,82.046 C100.609066,83.3886734 98.6480856,84.7313266 96.8460766,86.074 C95.0440676,87.4166734 93.47175,88.8123261 92.1290766,90.261 C90.7864032,91.7096739 89.8677458,93.2466585 89.3730766,94.872 L125.519077,94.872 L125.519077,105.684 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/heading-3&quot;: {
            &quot;title&quot;: &quot;$:/core/images/heading-3&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-heading-3 tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M94.8850766,62.224 C96.8637532,62.294667 98.8424001,62.1533351 100.821077,61.8 C102.799753,61.4466649 104.566402,60.8283378 106.121077,59.945 C107.675751,59.0616623 108.930072,57.8426744 109.884077,56.288 C110.838081,54.7333256 111.315077,52.8253446 111.315077,50.564 C111.315077,47.3839841 110.237421,44.8400095 108.082077,42.932 C105.926733,41.0239905 103.153094,40.07 99.7610766,40.07 C97.641066,40.07 95.8037511,40.4939958 94.2490766,41.342 C92.6944022,42.1900042 91.4047484,43.3383261 90.3800766,44.787 C89.3554048,46.2356739 88.5957458,47.860991 88.1010766,49.663 C87.6064075,51.465009 87.3944096,53.3199905 87.4650766,55.228 L75.3810766,55.228 C75.5224107,51.623982 76.1937373,48.2850154 77.3950766,45.211 C78.596416,42.1369846 80.2393995,39.4693446 82.3240766,37.208 C84.4087537,34.9466554 86.9350618,33.1800064 89.9030766,31.908 C92.8710915,30.6359936 96.2277246,30 99.9730766,30 C102.870424,30 105.714729,30.4239958 108.506077,31.272 C111.297424,32.1200042 113.806065,33.3566585 116.032077,34.982 C118.258088,36.6073415 120.042403,38.6743208 121.385077,41.183 C122.72775,43.6916792 123.399077,46.5713171 123.399077,49.822 C123.399077,53.5673521 122.551085,56.8356527 120.855077,59.627 C119.159068,62.4183473 116.509095,64.4499936 112.905077,65.722 L112.905077,65.934 C117.145098,66.7820042 120.448731,68.8843166 122.816077,72.241 C125.183422,75.5976835 126.367077,79.6786426 126.367077,84.484 C126.367077,88.017351 125.660417,91.1796527 124.247077,93.971 C122.833736,96.7623473 120.925755,99.129657 118.523077,101.073 C116.120398,103.016343 113.329093,104.517995 110.149077,105.578 C106.969061,106.638005 103.612428,107.168 100.079077,107.168 C95.7683884,107.168 92.005426,106.549673 88.7900766,105.313 C85.5747272,104.076327 82.8894207,102.327345 80.7340766,100.066 C78.5787325,97.8046554 76.9357489,95.0840159 75.8050766,91.904 C74.6744043,88.7239841 74.0737436,85.1906861 74.0030766,81.304 L86.0870766,81.304 C85.9457426,85.8266893 87.0587315,89.5896517 89.4260766,92.593 C91.7934218,95.5963483 95.3443863,97.098 100.079077,97.098 C104.107097,97.098 107.481396,95.9496782 110.202077,93.653 C112.922757,91.3563219 114.283077,88.0880212 114.283077,83.848 C114.283077,80.9506522 113.717749,78.6540085 112.587077,76.958 C111.456404,75.2619915 109.972419,73.9723378 108.135077,73.089 C106.297734,72.2056623 104.230755,71.6580011 101.934077,71.446 C99.6373985,71.2339989 97.2877553,71.163333 94.8850766,71.234 L94.8850766,62.224 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/heading-4&quot;: {
            &quot;title&quot;: &quot;$:/core/images/heading-4&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-heading-4 tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M8,30 L21.25,30 L21.25,60.104 L55.7,60.104 L55.7,30 L68.95,30 L68.95,105.684 L55.7,105.684 L55.7,71.552 L21.25,71.552 L21.25,105.684 L8,105.684 L8,30 Z M84.5890766,78.548 L107.061077,78.548 L107.061077,45.9 L106.849077,45.9 L84.5890766,78.548 Z M128.049077,88.088 L118.509077,88.088 L118.509077,105.684 L107.061077,105.684 L107.061077,88.088 L75.2610766,88.088 L75.2610766,76.11 L107.061077,31.484 L118.509077,31.484 L118.509077,78.548 L128.049077,78.548 L128.049077,88.088 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/heading-5&quot;: {
            &quot;title&quot;: &quot;$:/core/images/heading-5&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-heading-5 tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M83.7550766,31.484 L122.127077,31.484 L122.127077,42.296 L92.7650766,42.296 L88.9490766,61.164 L89.1610766,61.376 C90.7864181,59.5386575 92.8533974,58.1430048 95.3620766,57.189 C97.8707558,56.2349952 100.361731,55.758 102.835077,55.758 C106.509762,55.758 109.795729,56.3763272 112.693077,57.613 C115.590424,58.8496729 118.0284,60.5809889 120.007077,62.807 C121.985753,65.0330111 123.487405,67.6653181 124.512077,70.704 C125.536748,73.7426819 126.049077,77.028649 126.049077,80.562 C126.049077,83.5300148 125.572081,86.5863176 124.618077,89.731 C123.664072,92.8756824 122.144754,95.7376538 120.060077,98.317 C117.9754,100.896346 115.30776,103.016325 112.057077,104.677 C108.806394,106.337675 104.919766,107.168 100.397077,107.168 C96.7930586,107.168 93.454092,106.691005 90.3800766,105.737 C87.3060613,104.782995 84.6030883,103.35201 82.2710766,101.444 C79.939065,99.5359905 78.0840835,97.1863473 76.7060766,94.395 C75.3280697,91.6036527 74.5684107,88.3353521 74.4270766,84.59 L86.5110766,84.59 C86.8644117,88.6180201 88.2423979,91.7096559 90.6450766,93.865 C93.0477553,96.0203441 96.2277235,97.098 100.185077,97.098 C102.729089,97.098 104.884401,96.6740042 106.651077,95.826 C108.417752,94.9779958 109.848738,93.8120074 110.944077,92.328 C112.039415,90.8439926 112.816741,89.1126766 113.276077,87.134 C113.735412,85.1553234 113.965077,83.0353446 113.965077,80.774 C113.965077,78.7246564 113.682413,76.763676 113.117077,74.891 C112.55174,73.018324 111.703749,71.3753404 110.573077,69.962 C109.442404,68.5486596 107.976086,67.4180042 106.174077,66.57 C104.372068,65.7219958 102.269755,65.298 99.8670766,65.298 C97.3230639,65.298 94.9380878,65.7749952 92.7120766,66.729 C90.4860655,67.6830048 88.8784149,69.4673203 87.8890766,72.082 L75.8050766,72.082 L83.7550766,31.484 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/heading-6&quot;: {
            &quot;title&quot;: &quot;$:/core/images/heading-6&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-heading-6 tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M112.587077,50.246 C112.304409,47.2073181 111.226753,44.751676 109.354077,42.879 C107.481401,41.006324 104.955093,40.07 101.775077,40.07 C99.584399,40.07 97.6940846,40.4763293 96.1040766,41.289 C94.5140687,42.1016707 93.1714154,43.1793266 92.0760766,44.522 C90.9807378,45.8646734 90.0974133,47.401658 89.4260766,49.133 C88.7547399,50.864342 88.2070787,52.6839905 87.7830766,54.592 C87.3590745,56.5000095 87.0587442,58.390324 86.8820766,60.263 C86.7054091,62.135676 86.5464107,63.8846585 86.4050766,65.51 L86.6170766,65.722 C88.2424181,62.7539852 90.4860623,60.5456739 93.3480766,59.097 C96.2100909,57.6483261 99.3017267,56.924 102.623077,56.924 C106.297762,56.924 109.583729,57.5599936 112.481077,58.832 C115.378424,60.1040064 117.834067,61.8529889 119.848077,64.079 C121.862087,66.3050111 123.399071,68.9373181 124.459077,71.976 C125.519082,75.0146819 126.049077,78.300649 126.049077,81.834 C126.049077,85.438018 125.466082,88.7769846 124.300077,91.851 C123.134071,94.9250154 121.455754,97.6103219 119.265077,99.907 C117.074399,102.203678 114.459758,103.987994 111.421077,105.26 C108.382395,106.532006 105.025762,107.168 101.351077,107.168 C95.9097161,107.168 91.4400941,106.16101 87.9420766,104.147 C84.4440591,102.13299 81.6880867,99.3770175 79.6740766,95.879 C77.6600666,92.3809825 76.2644138,88.2823568 75.4870766,83.583 C74.7097394,78.8836432 74.3210766,73.8133605 74.3210766,68.372 C74.3210766,63.9199777 74.7980719,59.4326893 75.7520766,54.91 C76.7060814,50.3873107 78.278399,46.2710186 80.4690766,42.561 C82.6597542,38.8509815 85.5393921,35.8300117 89.1080766,33.498 C92.6767611,31.1659883 97.0757171,30 102.305077,30 C105.273091,30 108.064397,30.4946617 110.679077,31.484 C113.293756,32.4733383 115.608067,33.8513245 117.622077,35.618 C119.636087,37.3846755 121.27907,39.5046543 122.551077,41.978 C123.823083,44.4513457 124.529743,47.2073181 124.671077,50.246 L112.587077,50.246 Z M100.927077,97.098 C103.117754,97.098 105.025735,96.6563378 106.651077,95.773 C108.276418,94.8896623 109.636738,93.7413404 110.732077,92.328 C111.827415,90.9146596 112.640074,89.271676 113.170077,87.399 C113.700079,85.526324 113.965077,83.6006766 113.965077,81.622 C113.965077,79.6433234 113.700079,77.7353425 113.170077,75.898 C112.640074,74.0606575 111.827415,72.4530069 110.732077,71.075 C109.636738,69.6969931 108.276418,68.5840042 106.651077,67.736 C105.025735,66.8879958 103.117754,66.464 100.927077,66.464 C98.736399,66.464 96.8107516,66.8703293 95.1500766,67.683 C93.4894017,68.4956707 92.0937489,69.5909931 90.9630766,70.969 C89.8324043,72.3470069 88.9844128,73.9546575 88.4190766,75.792 C87.8537405,77.6293425 87.5710766,79.5726564 87.5710766,81.622 C87.5710766,83.6713436 87.8537405,85.6146575 88.4190766,87.452 C88.9844128,89.2893425 89.8324043,90.9323261 90.9630766,92.381 C92.0937489,93.8296739 93.4894017,94.9779958 95.1500766,95.826 C96.8107516,96.6740042 98.736399,97.098 100.927077,97.098 L100.927077,97.098 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/help&quot;: {
            &quot;title&quot;: &quot;$:/core/images/help&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-help tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M36.0548906,111.44117 C30.8157418,115.837088 20.8865444,118.803477 9.5,118.803477 C7.86465619,118.803477 6.25937294,118.742289 4.69372699,118.624467 C12.612543,115.984876 18.7559465,110.02454 21.0611049,102.609942 C8.74739781,92.845129 1.04940554,78.9359851 1.04940554,63.5 C1.04940554,33.9527659 29.2554663,10 64.0494055,10 C98.8433448,10 127.049406,33.9527659 127.049406,63.5 C127.049406,93.0472341 98.8433448,117 64.0494055,117 C53.9936953,117 44.48824,114.999337 36.0548906,111.44117 L36.0548906,111.44117 Z M71.4042554,77.5980086 C71.406883,77.2865764 71.4095079,76.9382011 71.4119569,76.5610548 C71.4199751,75.3262169 71.4242825,74.0811293 71.422912,72.9158546 C71.4215244,71.736154 71.4143321,70.709635 71.4001396,69.8743525 C71.4078362,68.5173028 71.9951951,67.7870427 75.1273009,65.6385471 C75.2388969,65.5619968 76.2124091,64.8981068 76.5126553,64.6910879 C79.6062455,62.5580654 81.5345849,60.9050204 83.2750652,58.5038955 C85.6146327,55.2762841 86.8327108,51.426982 86.8327108,46.8554323 C86.8327108,33.5625756 76.972994,24.9029551 65.3778484,24.9029551 C54.2752771,24.9029551 42.8794554,34.5115163 41.3121702,47.1975534 C40.9043016,50.4989536 43.2499725,53.50591 46.5513726,53.9137786 C49.8527728,54.3216471 52.8597292,51.9759763 53.2675978,48.6745761 C54.0739246,42.1479456 60.2395837,36.9492759 65.3778484,36.9492759 C70.6427674,36.9492759 74.78639,40.5885487 74.78639,46.8554323 C74.78639,50.4892974 73.6853224,52.008304 69.6746221,54.7736715 C69.4052605,54.9593956 68.448509,55.6118556 68.3131127,55.7047319 C65.6309785,57.5445655 64.0858213,58.803255 62.6123358,60.6352315 C60.5044618,63.2559399 59.3714208,66.3518252 59.3547527,69.9487679 C59.3684999,70.8407274 59.3752803,71.8084521 59.3765995,72.9300232 C59.3779294,74.0607297 59.3737237,75.2764258 59.36589,76.482835 C59.3634936,76.8518793 59.3609272,77.1924914 59.3583633,77.4963784 C59.3568319,77.6778944 59.3556368,77.8074256 59.3549845,77.8730928 C59.3219814,81.1994287 61.9917551,83.9227111 65.318091,83.9557142 C68.644427,83.9887173 71.3677093,81.3189435 71.4007124,77.9926076 C71.4014444,77.9187458 71.402672,77.7856841 71.4042554,77.5980086 Z M65.3778489,102.097045 C69.5359735,102.097045 72.9067994,98.7262189 72.9067994,94.5680944 C72.9067994,90.4099698 69.5359735,87.0391439 65.3778489,87.0391439 C61.2197243,87.0391439 57.8488984,90.4099698 57.8488984,94.5680944 C57.8488984,98.7262189 61.2197243,102.097045 65.3778489,102.097045 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/home-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/home-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-home-button tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M112.9847,119.501583 C112.99485,119.336814 113,119.170705 113,119.003406 L113,67.56802 C116.137461,70.5156358 121.076014,70.4518569 124.133985,67.3938855 C127.25818,64.2696912 127.260618,59.2068102 124.131541,56.0777326 L70.3963143,2.34250601 C68.8331348,0.779326498 66.7828947,-0.000743167069 64.7337457,1.61675364e-05 C62.691312,-0.00409949529 60.6426632,0.777559815 59.077717,2.34250601 L33,28.420223 L33,28.420223 L33,8.00697327 C33,3.58484404 29.4092877,0 25,0 C20.581722,0 17,3.59075293 17,8.00697327 L17,44.420223 L5.3424904,56.0777326 C2.21694607,59.2032769 2.22220878,64.2760483 5.34004601,67.3938855 C8.46424034,70.5180798 13.5271213,70.5205187 16.6561989,67.3914411 L17,67.04764 L17,119.993027 C17,119.994189 17.0000002,119.995351 17.0000007,119.996514 C17.0000002,119.997675 17,119.998838 17,120 C17,124.418278 20.5881049,128 24.9992458,128 L105.000754,128 C109.418616,128 113,124.409288 113,120 C113,119.832611 112.99485,119.666422 112.9847,119.501583 Z M97,112 L97,51.5736087 L97,51.5736087 L64.7370156,19.3106244 L33,51.04764 L33,112 L97,112 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/import-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/import-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-import-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M105.449437,94.2138951 C105.449437,94.2138951 110.049457,94.1897106 110.049457,99.4026111 C110.049457,104.615512 105.163246,104.615511 105.163246,104.615511 L45.0075072,105.157833 C45.0075072,105.157833 0.367531803,106.289842 0.367532368,66.6449212 C0.367532934,27.0000003 45.0428249,27.0000003 45.0428249,27.0000003 L105.532495,27.0000003 C105.532495,27.0000003 138.996741,25.6734987 138.996741,55.1771866 C138.996741,84.6808745 105.727102,82.8457535 105.727102,82.8457535 L56.1735087,82.8457535 C56.1735087,82.8457535 22.6899229,85.1500223 22.6899229,66.0913753 C22.6899229,47.0327282 56.1735087,49.3383013 56.1735087,49.3383013 L105.727102,49.3383013 C105.727102,49.3383013 111.245209,49.3383024 111.245209,54.8231115 C111.245209,60.3079206 105.727102,60.5074524 105.727102,60.5074524 L56.1735087,60.5074524 C56.1735087,60.5074524 37.48913,60.5074528 37.48913,66.6449195 C37.48913,72.7823862 56.1735087,71.6766023 56.1735087,71.6766023 L105.727102,71.6766029 C105.727102,71.6766029 127.835546,73.1411469 127.835546,55.1771866 C127.835546,35.5304025 105.727102,38.3035317 105.727102,38.3035317 L45.0428249,38.3035317 C45.0428249,38.3035317 11.5287276,38.3035313 11.5287276,66.6449208 C11.5287276,94.9863103 45.0428244,93.9579678 45.0428244,93.9579678 L105.449437,94.2138951 Z\&quot; transform=\&quot;translate(69.367532, 66.000000) rotate(-45.000000) translate(-69.367532, -66.000000) \&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/info-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/info-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-info-button tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;g transform=\&quot;translate(0.049406, 0.000000)\&quot;&gt;\n            &lt;path d=\&quot;M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\&quot;&gt;&lt;/path&gt;\n            &lt;circle cx=\&quot;64\&quot; cy=\&quot;32\&quot; r=\&quot;8\&quot;&gt;&lt;/circle&gt;\n            &lt;rect x=\&quot;56\&quot; y=\&quot;48\&quot; width=\&quot;16\&quot; height=\&quot;56\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;/g&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/italic&quot;: {
            &quot;title&quot;: &quot;$:/core/images/italic&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-italic tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n         &lt;polygon points=\&quot;66.7114846 0 89.1204482 0 62.4089636 128 40 128\&quot;&gt;&lt;/polygon&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/left-arrow&quot;: {
            &quot;created&quot;: &quot;20150315234410875&quot;,
            &quot;modified&quot;: &quot;20150315235324760&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;title&quot;: &quot;$:/core/images/left-arrow&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-left-arrow tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;path transform=\&quot;rotate(135, 63.8945, 64.1752)\&quot; d=\&quot;m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25075c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056z\&quot;/&gt;\n&lt;/svg&gt;\n&quot;
        },
        &quot;$:/core/images/line-width&quot;: {
            &quot;title&quot;: &quot;$:/core/images/line-width&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-line-width tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M128,-97 L112.992786,-97 C112.452362,-97 112,-96.5522847 112,-96 C112,-95.4438648 112.444486,-95 112.992786,-95 L128,-95 L128,-97 Z M128,-78.6794919 L111.216185,-88.3696322 C110.748163,-88.6398444 110.132549,-88.4782926 109.856406,-88 C109.578339,-87.5183728 109.741342,-86.9117318 110.216185,-86.6375814 L128,-76.3700908 L128,-78.6794919 Z M78.6794919,-128 L88.3696322,-111.216185 C88.6437826,-110.741342 88.4816272,-110.134474 88,-109.856406 C87.5217074,-109.580264 86.9077936,-109.748163 86.6375814,-110.216185 L76.3700908,-128 L78.6794919,-128 Z M97,-128 L97,-112.992786 C97,-112.444486 96.5561352,-112 96,-112 C95.4477153,-112 95,-112.452362 95,-112.992786 L95,-128 L97,-128 Z M115.629909,-128 L105.362419,-110.216185 C105.088268,-109.741342 104.481627,-109.578339 104,-109.856406 C103.521707,-110.132549 103.360156,-110.748163 103.630368,-111.216185 L113.320508,-128 L115.629909,-128 Z M128,-113.320508 L111.216185,-103.630368 C110.741342,-103.356217 110.134474,-103.518373 109.856406,-104 C109.580264,-104.478293 109.748163,-105.092206 110.216185,-105.362419 L128,-115.629909 L128,-113.320508 Z M48,-96 C48,-96.5522847 48.4523621,-97 48.9927864,-97 L79.0072136,-97 C79.5555144,-97 80,-96.5561352 80,-96 C80,-95.4477153 79.5476379,-95 79.0072136,-95 L48.9927864,-95 C48.4444856,-95 48,-95.4438648 48,-96 Z M54.4307806,-120 C54.706923,-120.478293 55.3225377,-120.639844 55.7905589,-120.369632 L81.7838153,-105.362419 C82.2586577,-105.088268 82.4216611,-104.481627 82.1435935,-104 C81.8674512,-103.521707 81.2518365,-103.360156 80.7838153,-103.630368 L54.7905589,-118.637581 C54.3157165,-118.911732 54.152713,-119.518373 54.4307806,-120 Z M104,-82.1435935 C104.478293,-82.4197359 105.092206,-82.2518365 105.362419,-81.7838153 L120.369632,-55.7905589 C120.643783,-55.3157165 120.481627,-54.7088482 120,-54.4307806 C119.521707,-54.1546382 118.907794,-54.3225377 118.637581,-54.7905589 L103.630368,-80.7838153 C103.356217,-81.2586577 103.518373,-81.865526 104,-82.1435935 Z M96,-80 C96.5522847,-80 97,-79.5476379 97,-79.0072136 L97,-48.9927864 C97,-48.4444856 96.5561352,-48 96,-48 C95.4477153,-48 95,-48.4523621 95,-48.9927864 L95,-79.0072136 C95,-79.5555144 95.4438648,-80 96,-80 Z M88,-82.1435935 C88.4782926,-81.8674512 88.6398444,-81.2518365 88.3696322,-80.7838153 L73.3624186,-54.7905589 C73.0882682,-54.3157165 72.4816272,-54.152713 72,-54.4307806 C71.5217074,-54.706923 71.3601556,-55.3225377 71.6303678,-55.7905589 L86.6375814,-81.7838153 C86.9117318,-82.2586577 87.5183728,-82.4216611 88,-82.1435935 Z M82.1435935,-88 C82.4197359,-87.5217074 82.2518365,-86.9077936 81.7838153,-86.6375814 L55.7905589,-71.6303678 C55.3157165,-71.3562174 54.7088482,-71.5183728 54.4307806,-72 C54.1546382,-72.4782926 54.3225377,-73.0922064 54.7905589,-73.3624186 L80.7838153,-88.3696322 C81.2586577,-88.6437826 81.865526,-88.4816272 82.1435935,-88 Z M1.30626177e-08,-41.9868843 L15.0170091,-57.9923909 L20.7983821,-52.9749272 L44.7207091,-81.2095939 L73.4260467,-42.1002685 L85.984793,-56.6159488 L104.48741,-34.0310661 L127.969109,-47.4978019 L127.969109,7.99473128e-07 L1.30626177e-08,7.99473128e-07 L1.30626177e-08,-41.9868843 Z M96,-84 C102.627417,-84 108,-89.372583 108,-96 C108,-102.627417 102.627417,-108 96,-108 C89.372583,-108 84,-102.627417 84,-96 C84,-89.372583 89.372583,-84 96,-84 Z\&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M16,18 L112,18 C113.104569,18 114,17.1045695 114,16 C114,14.8954305 113.104569,14 112,14 L16,14 C14.8954305,14 14,14.8954305 14,16 C14,17.1045695 14.8954305,18 16,18 L16,18 Z M16,35 L112,35 C114.209139,35 116,33.209139 116,31 C116,28.790861 114.209139,27 112,27 L16,27 C13.790861,27 12,28.790861 12,31 C12,33.209139 13.790861,35 16,35 L16,35 Z M16,56 L112,56 C115.313708,56 118,53.3137085 118,50 C118,46.6862915 115.313708,44 112,44 L16,44 C12.6862915,44 10,46.6862915 10,50 C10,53.3137085 12.6862915,56 16,56 L16,56 Z M16,85 L112,85 C117.522847,85 122,80.5228475 122,75 C122,69.4771525 117.522847,65 112,65 L16,65 C10.4771525,65 6,69.4771525 6,75 C6,80.5228475 10.4771525,85 16,85 L16,85 Z M16,128 L112,128 C120.836556,128 128,120.836556 128,112 C128,103.163444 120.836556,96 112,96 L16,96 C7.163444,96 0,103.163444 0,112 C0,120.836556 7.163444,128 16,128 L16,128 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/link&quot;: {
            &quot;title&quot;: &quot;$:/core/images/link&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-link tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M128.719999,57.568543 C130.219553,53.8628171 131.045202,49.8121445 131.045202,45.5685425 C131.045202,27.8915447 116.718329,13.5685425 99.0452364,13.5685425 L67.0451674,13.5685425 C49.3655063,13.5685425 35.0452019,27.8954305 35.0452019,45.5685425 C35.0452019,63.2455403 49.3720745,77.5685425 67.0451674,77.5685425 L99.0452364,77.5685425 C100.406772,77.5685425 101.748384,77.4835732 103.065066,77.3186499 C96.4792444,73.7895096 91.1190212,68.272192 87.7873041,61.5685425 L67.0506214,61.5685425 C58.2110723,61.5685425 51.0452019,54.4070414 51.0452019,45.5685425 C51.0452019,36.7319865 58.2005234,29.5685425 67.0506214,29.5685425 L99.0397824,29.5685425 C107.879331,29.5685425 115.045202,36.7300436 115.045202,45.5685425 C115.045202,48.9465282 113.99957,52.0800164 112.21335,54.6623005 C114.314383,56.4735917 117.050039,57.5685425 120.041423,57.5685425 L128.720003,57.5685425 Z\&quot; transform=\&quot;translate(83.045202, 45.568542) rotate(-225.000000) translate(-83.045202, -45.568542)\&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M-0.106255113,71.0452019 C-1.60580855,74.7509276 -2.43145751,78.8016001 -2.43145751,83.0452019 C-2.43145751,100.7222 11.8954151,115.045202 29.568508,115.045202 L61.568577,115.045202 C79.2482381,115.045202 93.5685425,100.718314 93.5685425,83.0452019 C93.5685425,65.3682041 79.2416699,51.0452019 61.568577,51.0452019 L29.568508,51.0452019 C28.206973,51.0452019 26.8653616,51.1301711 25.5486799,51.2950943 C32.1345,54.8242347 37.4947231,60.3415524 40.8264403,67.0452019 L61.563123,67.0452019 C70.4026721,67.0452019 77.5685425,74.206703 77.5685425,83.0452019 C77.5685425,91.8817579 70.413221,99.0452019 61.563123,99.0452019 L29.573962,99.0452019 C20.7344129,99.0452019 13.5685425,91.8837008 13.5685425,83.0452019 C13.5685425,79.6672162 14.6141741,76.533728 16.4003949,73.9514439 C14.2993609,72.1401527 11.5637054,71.0452019 8.5723215,71.0452019 L-0.106255113,71.0452019 Z\&quot; transform=\&quot;translate(45.568542, 83.045202) rotate(-225.000000) translate(-45.568542, -83.045202)\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/list-bullet&quot;: {
            &quot;title&quot;: &quot;$:/core/images/list-bullet&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-list-bullet tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M11.6363636,40.2727273 C18.0629498,40.2727273 23.2727273,35.0629498 23.2727273,28.6363636 C23.2727273,22.2097775 18.0629498,17 11.6363636,17 C5.20977746,17 0,22.2097775 0,28.6363636 C0,35.0629498 5.20977746,40.2727273 11.6363636,40.2727273 Z M11.6363636,75.1818182 C18.0629498,75.1818182 23.2727273,69.9720407 23.2727273,63.5454545 C23.2727273,57.1188684 18.0629498,51.9090909 11.6363636,51.9090909 C5.20977746,51.9090909 0,57.1188684 0,63.5454545 C0,69.9720407 5.20977746,75.1818182 11.6363636,75.1818182 Z M11.6363636,110.090909 C18.0629498,110.090909 23.2727273,104.881132 23.2727273,98.4545455 C23.2727273,92.0279593 18.0629498,86.8181818 11.6363636,86.8181818 C5.20977746,86.8181818 0,92.0279593 0,98.4545455 C0,104.881132 5.20977746,110.090909 11.6363636,110.090909 Z M34.9090909,22.8181818 L128,22.8181818 L128,34.4545455 L34.9090909,34.4545455 L34.9090909,22.8181818 Z M34.9090909,57.7272727 L128,57.7272727 L128,69.3636364 L34.9090909,69.3636364 L34.9090909,57.7272727 Z M34.9090909,92.6363636 L128,92.6363636 L128,104.272727 L34.9090909,104.272727 L34.9090909,92.6363636 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/list-number&quot;: {
            &quot;title&quot;: &quot;$:/core/images/list-number&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-list-number tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M33.8390805,22.3563218 L128,22.3563218 L128,34.1264368 L33.8390805,34.1264368 L33.8390805,22.3563218 Z M33.8390805,57.6666667 L128,57.6666667 L128,69.4367816 L33.8390805,69.4367816 L33.8390805,57.6666667 Z M33.8390805,92.9770115 L128,92.9770115 L128,104.747126 L33.8390805,104.747126 L33.8390805,92.9770115 Z M0.379509711,42.6307008 L0.379509711,40.4082314 L1.37821948,40.4082314 C2.20382368,40.4082314 2.82301754,40.268077 3.23581964,39.9877642 C3.64862174,39.7074513 3.85501969,39.0400498 3.85501969,37.9855395 L3.85501969,22.7686318 C3.85501969,21.3270228 3.66193774,20.4327047 3.27576803,20.0856507 C2.88959832,19.7385967 1.79768657,19.5650723 0,19.5650723 L0,17.4226919 C3.50215975,17.2758613 6.25191314,16.4683055 8.24934266,15 L10.3666074,15 L10.3666074,37.865406 C10.3666074,38.786434 10.5164123,39.4404875 10.8160268,39.8275862 C11.1156412,40.2146849 11.764796,40.4082314 12.7635108,40.4082314 L13.7622206,40.4082314 L13.7622206,42.6307008 L0.379509711,42.6307008 Z M0.0798967812,77.9873934 L0.0798967812,76.0852799 C7.27064304,69.5312983 10.8659622,63.5046623 10.8659622,58.005191 C10.8659622,56.4434479 10.5397203,55.195407 9.88722667,54.2610308 C9.23473303,53.3266546 8.36253522,52.8594735 7.27060709,52.8594735 C6.3784219,52.8594735 5.61608107,53.1764892 4.98356173,53.8105302 C4.35104238,54.4445712 4.03478745,55.1753759 4.03478745,56.0029663 C4.03478745,56.9773871 4.28113339,57.8316611 4.77383268,58.5658139 C4.88036225,58.7259926 4.93362624,58.8461249 4.93362624,58.9262143 C4.93362624,59.0730449 4.77383427,59.2065252 4.45424555,59.3266593 C4.2411864,59.4067486 3.70188852,59.6336652 2.83633573,60.0074156 C1.99741533,60.3811661 1.47809145,60.5680386 1.2783485,60.5680386 C1.03865696,60.5680386 0.765679018,60.1976307 0.459406492,59.4568039 C0.153133966,58.715977 0,57.9184322 0,57.0641453 C0,55.1153036 0.848894811,53.5202138 2.5467099,52.2788283 C4.24452499,51.0374428 6.34512352,50.4167594 8.84856852,50.4167594 C11.3120649,50.4167594 13.3793735,51.0874979 15.0505562,52.4289952 C16.7217389,53.7704924 17.5573177,55.5224215 17.5573177,57.684835 C17.5573177,58.9662652 17.2743527,60.2076321 16.7084144,61.4089729 C16.142476,62.6103138 14.7875733,64.4623531 12.6436656,66.9651465 C10.4997579,69.4679398 8.40914641,71.7804862 6.3717683,73.902855 L17.8169822,73.902855 L16.7982982,79.6292176 L14.6810335,79.6292176 C14.7609307,79.3489048 14.8008787,79.0952922 14.8008787,78.8683723 C14.8008787,78.4812736 14.7010087,78.237672 14.5012658,78.1375603 C14.3015228,78.0374485 13.9020429,77.9873934 13.3028141,77.9873934 L0.0798967812,77.9873934 Z M12.2042333,97.1935484 C13.9486551,97.2335931 15.4400468,97.8309175 16.6784531,98.9855395 C17.9168594,100.140162 18.5360532,101.75861 18.5360532,103.840934 C18.5360532,106.830938 17.4041935,109.233584 15.14044,111.048943 C12.8766866,112.864303 10.1402492,113.771969 6.93104577,113.771969 C4.92030005,113.771969 3.26245842,113.388213 1.95747114,112.62069 C0.652483855,111.853166 0,110.848727 0,109.607341 C0,108.833144 0.26964894,108.209124 0.808954909,107.735261 C1.34826088,107.261399 1.93749375,107.024472 2.57667119,107.024472 C3.21584864,107.024472 3.73850152,107.224692 4.14464552,107.625139 C4.55078953,108.025586 4.92696644,108.67964 5.27318756,109.587319 C5.73925445,110.855401 6.51158227,111.489433 7.59019421,111.489433 C8.85523291,111.489433 9.87723568,111.012241 10.6562332,110.057842 C11.4352307,109.103444 11.8247236,107.371536 11.8247236,104.862069 C11.8247236,103.153495 11.7048796,101.838714 11.4651881,100.917686 C11.2254966,99.9966584 10.6728827,99.5361513 9.80732989,99.5361513 C9.22141723,99.5361513 8.62219737,99.843156 8.00965231,100.457175 C7.51695303,100.951059 7.07752513,101.197998 6.69135542,101.197998 C6.3584505,101.197998 6.08880156,101.051169 5.88240051,100.757508 C5.67599946,100.463847 5.57280049,100.183539 5.57280049,99.916574 C5.57280049,99.5962164 5.67599946,99.3225818 5.88240051,99.0956618 C6.08880156,98.8687419 6.57150646,98.5016711 7.33052967,97.9944383 C10.2068282,96.0722929 11.6449559,93.9766521 11.6449559,91.7074527 C11.6449559,90.5194601 11.3386879,89.615131 10.7261429,88.9944383 C10.1135978,88.3737455 9.37455999,88.0634038 8.5090072,88.0634038 C7.71003539,88.0634038 6.98431355,88.3270274 6.33181991,88.8542825 C5.67932627,89.3815377 5.35308434,90.0122321 5.35308434,90.7463849 C5.35308434,91.3871 5.60608828,91.9810874 6.11210376,92.5283648 C6.28521432,92.7285883 6.3717683,92.8954387 6.3717683,93.028921 C6.3717683,93.1490551 5.80250943,93.4560598 4.6639746,93.9499444 C3.52543978,94.4438289 2.80970494,94.6907675 2.51674861,94.6907675 C2.10394651,94.6907675 1.76771758,94.3570667 1.50805174,93.6896552 C1.24838591,93.0222436 1.11855494,92.4082342 1.11855494,91.8476085 C1.11855494,90.0989901 2.04734573,88.6240327 3.90495518,87.4226919 C5.76256463,86.2213511 7.86982116,85.6206897 10.226788,85.6206897 C12.2907985,85.6206897 14.0784711,86.0678487 15.5898594,86.9621802 C17.1012478,87.8565117 17.8569306,89.0778566 17.8569306,90.6262514 C17.8569306,91.987771 17.2876717,93.2491599 16.1491369,94.4104561 C15.0106021,95.5717522 13.6956474,96.4994404 12.2042333,97.1935484 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/locked-padlock&quot;: {
            &quot;title&quot;: &quot;$:/core/images/locked-padlock&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-locked-padlock tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M96.4723753,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L32.0000269,64 C32.0028554,48.2766389 32.3030338,16.2688026 64.1594984,16.2688041 C95.9543927,16.2688056 96.4648869,48.325931 96.4723753,64 Z M80.5749059,64 L48.4413579,64 C48.4426205,47.71306 48.5829272,31.9999996 64.1595001,31.9999996 C79.8437473,31.9999996 81.1369461,48.1359182 80.5749059,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/mail&quot;: {
            &quot;title&quot;: &quot;$:/core/images/mail&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-mail tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M122.826782,104.894066 C121.945525,105.22777 120.990324,105.41043 119.993027,105.41043 L8.00697327,105.41043 C7.19458381,105.41043 6.41045219,105.289614 5.67161357,105.064967 L5.67161357,105.064967 L39.8346483,70.9019325 L60.6765759,91.7438601 C61.6118278,92.679112 62.8865166,93.0560851 64.0946097,92.8783815 C65.2975108,93.0473238 66.5641085,92.6696979 67.4899463,91.7438601 L88.5941459,70.6396605 C88.6693095,70.7292352 88.7490098,70.8162939 88.8332479,70.9005321 L122.826782,104.894066 Z M127.903244,98.6568194 C127.966933,98.2506602 128,97.8343714 128,97.4103789 L128,33.410481 C128,32.7414504 127.917877,32.0916738 127.763157,31.4706493 L94.2292399,65.0045665 C94.3188145,65.0797417 94.4058701,65.1594458 94.4901021,65.2436778 L127.903244,98.6568194 Z M0.205060636,99.2178117 C0.0709009529,98.6370366 0,98.0320192 0,97.4103789 L0,33.410481 C0,32.694007 0.0944223363,31.9995312 0.27147538,31.3387595 L0.27147538,31.3387595 L34.1777941,65.2450783 L0.205060636,99.2178117 L0.205060636,99.2178117 Z M5.92934613,25.6829218 C6.59211333,25.5051988 7.28862283,25.4104299 8.00697327,25.4104299 L119.993027,25.4104299 C120.759109,25.4104299 121.500064,25.5178649 122.201605,25.7184927 L122.201605,25.7184927 L64.0832611,83.8368368 L5.92934613,25.6829218 L5.92934613,25.6829218 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/menu-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/menu-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-menu-button tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;\n    &lt;rect x=\&quot;0\&quot; y=\&quot;16\&quot; width=\&quot;128\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n    &lt;rect x=\&quot;0\&quot; y=\&quot;56\&quot; width=\&quot;128\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n    &lt;rect x=\&quot;0\&quot; y=\&quot;96\&quot; width=\&quot;128\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/mono-block&quot;: {
            &quot;title&quot;: &quot;$:/core/images/mono-block&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-mono-block tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M23.9653488,32.9670593 L24.3217888,32.9670593 C25.0766067,32.9670593 25.6497006,33.1592554 26.0410876,33.5436534 C26.4324747,33.9280514 26.6281653,34.4906619 26.6281653,35.2315017 C26.6281653,36.0562101 26.4219913,36.6502709 26.009637,37.0137017 C25.5972828,37.3771326 24.9158602,37.5588453 23.9653488,37.5588453 L17.6542639,37.5588453 C16.6897744,37.5588453 16.0048573,37.380627 15.5994921,37.0241852 C15.1941269,36.6677435 14.9914474,36.0701882 14.9914474,35.2315017 C14.9914474,34.4207713 15.1941269,33.8406885 15.5994921,33.4912358 C16.0048573,33.141783 16.6897744,32.9670593 17.6542639,32.9670593 L18.388111,32.9670593 L17.5284616,30.5139133 L8.47069195,30.5139133 L7.5691084,32.9670593 L8.30295547,32.9670593 C9.25346691,32.9670593 9.93488953,33.1452775 10.3472438,33.5017193 C10.759598,33.8581611 10.965772,34.4347494 10.965772,35.2315017 C10.965772,36.0562101 10.759598,36.6502709 10.3472438,37.0137017 C9.93488953,37.3771326 9.25346691,37.5588453 8.30295547,37.5588453 L2.89345418,37.5588453 C1.92896463,37.5588453 1.24404754,37.3771326 0.838682371,37.0137017 C0.433317198,36.6502709 0.230637652,36.0562101 0.230637652,35.2315017 C0.230637652,34.4906619 0.426328248,33.9280514 0.817715312,33.5436534 C1.20910238,33.1592554 1.78219626,32.9670593 2.53701417,32.9670593 L2.89345418,32.9670593 L8.51262607,17.3256331 L6.83526132,17.3256331 C5.88474988,17.3256331 5.20332727,17.1439204 4.79097304,16.7804895 C4.37861882,16.4170587 4.1724448,15.8299869 4.1724448,15.0192565 C4.1724448,14.1945481 4.37861882,13.6004873 4.79097304,13.2370565 C5.20332727,12.8736257 5.88474988,12.691913 6.83526132,12.691913 L14.6979086,12.691913 C15.9419603,12.691913 16.815579,13.3628521 17.318791,14.7047506 L17.318791,14.7676518 L23.9653488,32.9670593 Z M12.9786097,17.3256331 L9.9383861,26.1737321 L16.0188333,26.1737321 L12.9786097,17.3256331 Z M35.3809383,26.6979086 L35.3809383,33.0928616 L38.5259972,33.0928616 C40.7485166,33.0928616 42.3140414,32.8482484 43.2226185,32.3590146 C44.1311956,31.8697807 44.5854773,31.0520736 44.5854773,29.9058686 C44.5854773,28.7456855 44.1521624,27.9209895 43.2855197,27.4317556 C42.4188769,26.9425218 40.9022748,26.6979086 38.7356678,26.6979086 L35.3809383,26.6979086 Z M46.0741385,24.370565 C47.5977525,24.9296893 48.7159844,25.6949794 49.428868,26.666458 C50.1417516,27.6379366 50.498188,28.8784752 50.498188,30.388111 C50.498188,31.6601189 50.1906743,32.8202846 49.5756374,33.8686428 C48.9606006,34.917001 48.0799929,35.7766419 46.933788,36.4475911 C46.2628387,36.8389782 45.5115266,37.1220307 44.6798291,37.296757 C43.8481316,37.4714834 42.6704935,37.5588453 41.1468796,37.5588453 L39.3856466,37.5588453 L30.2020747,37.5588453 C29.2795194,37.5588453 28.6190637,37.3771326 28.2206876,37.0137017 C27.8223114,36.6502709 27.6231264,36.0562101 27.6231264,35.2315017 C27.6231264,34.4906619 27.811828,33.9280514 28.189237,33.5436534 C28.5666459,33.1592554 29.118773,32.9670593 29.8456347,32.9670593 L30.2020747,32.9670593 L30.2020747,17.3256331 L29.8456347,17.3256331 C29.118773,17.3256331 28.5666459,17.1299425 28.189237,16.7385554 C27.811828,16.3471683 27.6231264,15.7740744 27.6231264,15.0192565 C27.6231264,14.2085262 27.8258059,13.6179599 28.2311711,13.24754 C28.6365363,12.8771201 29.2934976,12.691913 30.2020747,12.691913 L39.8469219,12.691913 C42.796303,12.691913 45.0362615,13.2650068 46.5668644,14.4112118 C48.0974674,15.5574168 48.8627574,17.2347648 48.8627574,19.443306 C48.8627574,20.5335986 48.6286276,21.4945792 48.1603609,22.3262767 C47.6920943,23.1579742 46.9966938,23.8393968 46.0741385,24.370565 L46.0741385,24.370565 Z M35.3809383,17.1998307 L35.3809383,22.4835296 L38.2114913,22.4835296 C39.9307988,22.4835296 41.1433816,22.2808501 41.8492761,21.8754849 C42.5551706,21.4701197 42.9081126,20.7852027 42.9081126,19.8207131 C42.9081126,18.912136 42.5901154,18.2481858 41.9541114,17.8288425 C41.3181074,17.4094992 40.2872373,17.1998307 38.8614701,17.1998307 L35.3809383,17.1998307 Z M71.244119,13.3838259 C71.5236812,12.880614 71.8102281,12.5241775 72.1037684,12.3145059 C72.3973087,12.1048342 72.7677231,12 73.2150226,12 C73.8999499,12 74.3856819,12.1817127 74.6722332,12.5451435 C74.9587844,12.9085744 75.1020579,13.5305909 75.1020579,14.4112118 L75.143992,19.8626472 C75.143992,20.8271368 74.9867406,21.4771091 74.6722332,21.8125837 C74.3577257,22.1480584 73.7881263,22.3157932 72.9634178,22.3157932 C72.3763372,22.3157932 71.92555,22.1760142 71.6110425,21.896452 C71.2965351,21.6168898 71.0274605,21.0997075 70.8038107,20.3448896 C70.4403799,19.0169692 69.8602971,18.0629775 69.0635448,17.482886 C68.2667926,16.9027945 67.1625385,16.612753 65.7507494,16.612753 C63.5981206,16.612753 61.9487284,17.3396038 60.8025235,18.7933272 C59.6563185,20.2470506 59.0832246,22.3507245 59.0832246,25.104412 C59.0832246,27.8441215 59.6633074,29.9477954 60.8234905,31.4154969 C61.9836736,32.8831984 63.6400547,33.6170381 65.7926836,33.6170381 C67.2603851,33.6170381 68.878327,33.1278116 70.6465578,32.149344 C72.4147886,31.1708763 73.5295261,30.6816498 73.9908037,30.6816498 C74.53595,30.6816498 74.9937262,30.9122852 75.3641461,31.3735628 C75.734566,31.8348404 75.9197732,32.4079343 75.9197732,33.0928616 C75.9197732,34.3229353 74.836486,35.4831009 72.669879,36.5733935 C70.5032721,37.663686 68.0641285,38.2088241 65.3523753,38.2088241 C61.6901107,38.2088241 58.7267959,36.9997358 56.4623422,34.5815228 C54.1978885,32.1633099 53.0656786,29.0043046 53.0656786,25.104412 C53.0656786,21.3443006 54.2118664,18.22024 56.5042763,15.7321366 C58.7966863,13.2440331 61.7040894,12 65.226573,12 C66.2190187,12 67.1974717,12.1118232 68.1619613,12.3354729 C69.1264508,12.5591227 70.1538264,12.9085702 71.244119,13.3838259 L71.244119,13.3838259 Z M81.4645862,32.9670593 L81.4645862,17.3256331 L81.1081461,17.3256331 C80.3533282,17.3256331 79.7802344,17.1299425 79.3888473,16.7385554 C78.9974602,16.3471683 78.8017696,15.7740744 78.8017696,15.0192565 C78.8017696,14.2085262 79.0114381,13.6179599 79.4307814,13.24754 C79.8501247,12.8771201 80.5280528,12.691913 81.4645862,12.691913 L85.4063933,12.691913 L86.6434498,12.691913 C89.5648747,12.691913 91.7034933,12.8177141 93.0593699,13.06932 C94.4152465,13.320926 95.5684233,13.740263 96.5189347,14.3273436 C98.210286,15.3337675 99.5067362,16.7699967 100.408324,18.6360743 C101.309912,20.5021519 101.7607,22.6582429 101.7607,25.104412 C101.7607,27.6903623 101.247012,29.9512876 100.219621,31.8872557 C99.1922296,33.8232239 97.7350336,35.2874089 95.8479888,36.2798546 C94.9953241,36.7271541 93.9959043,37.0521403 92.8496993,37.2548229 C91.7034944,37.4575055 89.9981906,37.5588453 87.7337369,37.5588453 L85.4063933,37.5588453 L81.4645862,37.5588453 C80.5000966,37.5588453 79.8151795,37.380627 79.4098143,37.0241852 C79.0044492,36.6677435 78.8017696,36.0701882 78.8017696,35.2315017 C78.8017696,34.4906619 78.9974602,33.9280514 79.3888473,33.5436534 C79.7802344,33.1592554 80.3533282,32.9670593 81.1081461,32.9670593 L81.4645862,32.9670593 Z M86.8740874,17.2417648 L86.8740874,32.9670593 L88.0692098,32.9670593 C90.7110725,32.9670593 92.6609895,32.3205814 93.9190194,31.0276063 C95.1770492,29.7346312 95.8060547,27.7462749 95.8060547,25.0624779 C95.8060547,22.4206153 95.1665658,20.4497314 93.8875688,19.1497672 C92.6085718,17.849803 90.6831161,17.1998307 88.1111439,17.1998307 C87.7756693,17.1998307 87.5205727,17.2033252 87.3458463,17.2103142 C87.1711199,17.2173033 87.0138685,17.2277867 86.8740874,17.2417648 L86.8740874,17.2417648 Z M121.94052,17.1159625 L112.190837,17.1159625 L112.190837,22.4835296 L115.88104,22.4835296 L115.88104,22.2319249 C115.88104,21.4351727 116.055763,20.841112 116.405216,20.4497249 C116.754669,20.0583378 117.285829,19.8626472 117.998713,19.8626472 C118.627728,19.8626472 119.141415,20.0408655 119.539792,20.3973072 C119.938168,20.753749 120.137353,21.2045363 120.137353,21.7496826 C120.137353,21.7776388 120.144342,21.8684951 120.15832,22.0222543 C120.172298,22.1760135 120.179287,22.3297704 120.179287,22.4835296 L120.179287,26.8237109 C120.179287,27.7602442 120.011552,28.4311834 119.676077,28.8365486 C119.340603,29.2419138 118.795465,29.4445933 118.040647,29.4445933 C117.327763,29.4445933 116.789614,29.2558917 116.426183,28.8784827 C116.062752,28.5010738 115.88104,27.9419578 115.88104,27.201118 L115.88104,26.8237109 L112.190837,26.8237109 L112.190837,33.0928616 L121.94052,33.0928616 L121.94052,30.5977816 C121.94052,29.6612482 122.118738,28.9903091 122.47518,28.5849439 C122.831622,28.1795787 123.415199,27.9768992 124.225929,27.9768992 C125.022682,27.9768992 125.592281,28.1760842 125.934745,28.5744604 C126.277208,28.9728365 126.448438,29.6472701 126.448438,30.5977816 L126.448438,35.6718099 C126.448438,36.4266278 126.30167,36.9298322 126.008129,37.1814382 C125.714589,37.4330442 125.134506,37.5588453 124.267863,37.5588453 L107.095842,37.5588453 C106.173287,37.5588453 105.512831,37.3771326 105.114455,37.0137017 C104.716079,36.6502709 104.516894,36.0562101 104.516894,35.2315017 C104.516894,34.4906619 104.705595,33.9280514 105.083004,33.5436534 C105.460413,33.1592554 106.01254,32.9670593 106.739402,32.9670593 L107.095842,32.9670593 L107.095842,17.3256331 L106.739402,17.3256331 C106.026518,17.3256331 105.477886,17.126448 105.093488,16.7280719 C104.70909,16.3296957 104.516894,15.7600963 104.516894,15.0192565 C104.516894,14.2085262 104.719573,13.6179599 105.124938,13.24754 C105.530304,12.8771201 106.187265,12.691913 107.095842,12.691913 L124.267863,12.691913 C125.120528,12.691913 125.697116,12.8212085 125.997646,13.0798036 C126.298175,13.3383986 126.448438,13.8520864 126.448438,14.6208824 L126.448438,19.3175037 C126.448438,20.2680151 126.273714,20.9494377 125.924261,21.361792 C125.574808,21.7741462 125.008703,21.9803202 124.225929,21.9803202 C123.415199,21.9803202 122.831622,21.7706517 122.47518,21.3513084 C122.118738,20.9319652 121.94052,20.254037 121.94052,19.3175037 L121.94052,17.1159625 Z M19.7719369,47.6405477 C20.037521,47.1373358 20.3205734,46.7808993 20.6211028,46.5712277 C20.9216322,46.361556 21.295541,46.2567218 21.7428405,46.2567218 C22.4277678,46.2567218 22.9134998,46.4384345 23.2000511,46.8018653 C23.4866023,47.1652962 23.6298758,47.7873127 23.6298758,48.6679336 L23.6718099,54.119369 C23.6718099,55.0838586 23.5145586,55.7338309 23.2000511,56.0693055 C22.8855436,56.4047802 22.3089553,56.572515 21.4702687,56.572515 C20.8831881,56.572515 20.4254119,56.4292415 20.0969263,56.1426902 C19.7684407,55.856139 19.4993662,55.3424512 19.2896945,54.6016114 C18.9122856,53.2597129 18.3322027,52.3022267 17.5494286,51.7291243 C16.7666545,51.1560218 15.6693894,50.8694748 14.2576003,50.8694748 C12.1049715,50.8694748 10.4590738,51.5963256 9.31985785,53.050049 C8.18064193,54.5037724 7.61104252,56.6074463 7.61104252,59.3611338 C7.61104252,62.1148214 8.20859773,64.2429566 9.40372609,65.7456034 C10.5988544,67.2482501 12.2936748,67.9995623 14.488238,67.9995623 C14.9914499,67.9995623 15.5645438,67.9401562 16.2075368,67.8213423 C16.8505299,67.7025283 17.6053364,67.5173212 18.4719792,67.2657152 L18.4719792,63.9529198 L16.1027015,63.9529198 C15.1521901,63.9529198 14.4777564,63.7781961 14.0793803,63.4287433 C13.6810042,63.0792906 13.4818191,62.4992078 13.4818191,61.6884774 C13.4818191,60.8497908 13.6810042,60.2522356 14.0793803,59.8957938 C14.4777564,59.5393521 15.1521901,59.3611338 16.1027015,59.3611338 L23.6718099,59.3611338 C24.6502776,59.3611338 25.3386891,59.5358576 25.7370653,59.8853103 C26.1354414,60.2347631 26.3346265,60.8218348 26.3346265,61.6465433 C26.3346265,62.3873831 26.1354414,62.9569825 25.7370653,63.3553586 C25.3386891,63.7537347 24.7621008,63.9529198 24.0072829,63.9529198 L23.6718099,63.9529198 L23.6718099,68.9430799 L23.6718099,69.1946846 C23.6718099,69.6419841 23.6228873,69.9529924 23.5250405,70.1277188 C23.4271937,70.3024451 23.2315031,70.4806634 22.9379628,70.6623788 C22.1412106,71.1376345 20.8762107,71.5569715 19.1429251,71.9204023 C17.4096396,72.2838332 15.6554131,72.4655459 13.8801932,72.4655459 C10.2179286,72.4655459 7.25461383,71.2564576 4.99016011,68.8382446 C2.72570638,66.4200317 1.59349651,63.2610264 1.59349651,59.3611338 C1.59349651,55.6010224 2.73968428,52.4769618 5.03209423,49.9888583 C7.32450417,47.5007549 10.2319073,46.2567218 13.7543909,46.2567218 C14.7328585,46.2567218 15.7078171,46.368545 16.6792957,46.5921947 C17.6507743,46.8158445 18.6816444,47.165292 19.7719369,47.6405477 L19.7719369,47.6405477 Z M35.611576,51.5823548 L35.611576,56.4047785 L42.4678043,56.4047785 L42.4678043,51.5823548 L42.1323314,51.5823548 C41.3775135,51.5823548 40.8009251,51.3866642 40.402549,50.9952772 C40.0041729,50.6038901 39.8049878,50.0307962 39.8049878,49.2759783 C39.8049878,48.4512699 40.0111618,47.8572091 40.4235161,47.4937783 C40.8358703,47.1303474 41.5172929,46.9486347 42.4678043,46.9486347 L47.8773056,46.9486347 C48.8278171,46.9486347 49.5022507,47.1303474 49.9006269,47.4937783 C50.299003,47.8572091 50.498188,48.4512699 50.498188,49.2759783 C50.498188,50.0307962 50.3059919,50.6038901 49.9215939,50.9952772 C49.5371959,51.3866642 48.9745854,51.5823548 48.2337456,51.5823548 L47.8773056,51.5823548 L47.8773056,67.2237811 L48.2337456,67.2237811 C48.9885636,67.2237811 49.5616574,67.4159772 49.9530445,67.8003752 C50.3444316,68.1847732 50.5401222,68.7473837 50.5401222,69.4882235 C50.5401222,70.3129319 50.3374426,70.9069927 49.9320774,71.2704235 C49.5267123,71.6338543 48.8417952,71.815567 47.8773056,71.815567 L42.4678043,71.815567 C41.5033148,71.815567 40.8183977,71.6373488 40.4130325,71.280907 C40.0076674,70.9244652 39.8049878,70.32691 39.8049878,69.4882235 C39.8049878,68.7473837 40.0041729,68.1847732 40.402549,67.8003752 C40.8009251,67.4159772 41.3775135,67.2237811 42.1323314,67.2237811 L42.4678043,67.2237811 L42.4678043,61.0384986 L35.611576,61.0384986 L35.611576,67.2237811 L35.9470489,67.2237811 C36.7018668,67.2237811 37.2784552,67.4159772 37.6768313,67.8003752 C38.0752074,68.1847732 38.2743925,68.7473837 38.2743925,69.4882235 C38.2743925,70.3129319 38.0682185,70.9069927 37.6558642,71.2704235 C37.24351,71.6338543 36.5620874,71.815567 35.611576,71.815567 L30.2020747,71.815567 C29.2375851,71.815567 28.552668,71.6373488 28.1473029,71.280907 C27.7419377,70.9244652 27.5392581,70.32691 27.5392581,69.4882235 C27.5392581,68.7473837 27.7349487,68.1847732 28.1263358,67.8003752 C28.5177229,67.4159772 29.0908168,67.2237811 29.8456347,67.2237811 L30.2020747,67.2237811 L30.2020747,51.5823548 L29.8456347,51.5823548 C29.1047949,51.5823548 28.5421844,51.3866642 28.1577864,50.9952772 C27.7733884,50.6038901 27.5811923,50.0307962 27.5811923,49.2759783 C27.5811923,48.4512699 27.7803773,47.8572091 28.1787534,47.4937783 C28.5771296,47.1303474 29.2515632,46.9486347 30.2020747,46.9486347 L35.611576,46.9486347 C36.5481093,46.9486347 37.2260374,47.1303474 37.6453807,47.4937783 C38.064724,47.8572091 38.2743925,48.4512699 38.2743925,49.2759783 C38.2743925,50.0307962 38.0752074,50.6038901 37.6768313,50.9952772 C37.2784552,51.3866642 36.7018668,51.5823548 35.9470489,51.5823548 L35.611576,51.5823548 Z M67.365213,51.5823548 L67.365213,67.2237811 L70.887679,67.2237811 C71.8381904,67.2237811 72.519613,67.4019993 72.9319673,67.7584411 C73.3443215,68.1148829 73.5504955,68.6914712 73.5504955,69.4882235 C73.5504955,70.2989538 73.340827,70.8895201 72.9214837,71.25994 C72.5021404,71.6303599 71.8242123,71.815567 70.887679,71.815567 L58.4332458,71.815567 C57.4827343,71.815567 56.8013117,71.6338543 56.3889575,71.2704235 C55.9766033,70.9069927 55.7704292,70.3129319 55.7704292,69.4882235 C55.7704292,68.6774931 55.9731088,68.0974103 56.378474,67.7479575 C56.7838391,67.3985048 57.4687562,67.2237811 58.4332458,67.2237811 L61.9557117,67.2237811 L61.9557117,51.5823548 L58.4332458,51.5823548 C57.4827343,51.5823548 56.8013117,51.4006421 56.3889575,51.0372113 C55.9766033,50.6737805 55.7704292,50.0867087 55.7704292,49.2759783 C55.7704292,48.4512699 55.9731088,47.8641981 56.378474,47.5147453 C56.7838391,47.1652926 57.4687562,46.9905689 58.4332458,46.9905689 L70.887679,46.9905689 C71.8801247,46.9905689 72.5720308,47.1652926 72.9634178,47.5147453 C73.3548049,47.8641981 73.5504955,48.4512699 73.5504955,49.2759783 C73.5504955,50.0867087 73.347816,50.6737805 72.9424508,51.0372113 C72.5370856,51.4006421 71.8521685,51.5823548 70.887679,51.5823548 L67.365213,51.5823548 Z M97.8608265,51.5823548 L97.8608265,63.1771386 L97.8608265,63.5755127 C97.8608265,65.4485794 97.7385199,66.8044357 97.493903,67.6431222 C97.2492861,68.4818088 96.8404325,69.2296264 96.26733,69.8865976 C95.5264902,70.7392623 94.4991146,71.3822457 93.1851723,71.815567 C91.87123,72.2488884 90.2917273,72.4655459 88.4466169,72.4655459 C87.1466527,72.4655459 85.8921362,72.3397448 84.6830298,72.0881388 C83.4739233,71.8365328 82.3102631,71.4591296 81.1920144,70.9559176 C80.5769776,70.6763554 80.175113,70.31293 79.9864085,69.8656305 C79.797704,69.418331 79.7033532,68.6914802 79.7033532,67.6850564 L79.7033532,63.3658422 C79.7033532,62.1637247 79.8780769,61.3250508 80.2275297,60.849795 C80.5769824,60.3745393 81.185021,60.136915 82.0516638,60.136915 C83.2957156,60.136915 83.9806326,61.0524675 84.1064356,62.8835998 C84.1204137,63.2050963 84.1413806,63.4497096 84.1693368,63.6174469 C84.3370741,65.2389076 84.7144774,66.3466561 85.301558,66.9407258 C85.8886386,67.5347954 86.8251579,67.8318258 88.1111439,67.8318258 C89.7046484,67.8318258 90.8263749,67.4089943 91.476357,66.5633187 C92.126339,65.7176431 92.4513252,64.1765796 92.4513252,61.9400821 L92.4513252,51.5823548 L88.9288593,51.5823548 C87.9783478,51.5823548 87.2969252,51.4006421 86.884571,51.0372113 C86.4722168,50.6737805 86.2660427,50.0867087 86.2660427,49.2759783 C86.2660427,48.4512699 86.4652278,47.8641981 86.8636039,47.5147453 C87.26198,47.1652926 87.9503916,46.9905689 88.9288593,46.9905689 L99.6220595,46.9905689 C100.600527,46.9905689 101.288939,47.1652926 101.687315,47.5147453 C102.085691,47.8641981 102.284876,48.4512699 102.284876,49.2759783 C102.284876,50.0867087 102.078702,50.6737805 101.666348,51.0372113 C101.253994,51.4006421 100.572571,51.5823548 99.6220595,51.5823548 L97.8608265,51.5823548 Z M112.505343,51.5823548 L112.505343,57.9353738 L118.984165,51.4565525 C118.257303,51.3726838 117.747109,51.1665098 117.453569,50.8380242 C117.160029,50.5095387 117.013261,49.9888619 117.013261,49.2759783 C117.013261,48.4512699 117.212446,47.8572091 117.610822,47.4937783 C118.009198,47.1303474 118.683632,46.9486347 119.634143,46.9486347 L124.771073,46.9486347 C125.721584,46.9486347 126.396018,47.1303474 126.794394,47.4937783 C127.19277,47.8572091 127.391955,48.4512699 127.391955,49.2759783 C127.391955,50.0447743 127.19277,50.6213627 126.794394,51.0057607 C126.396018,51.3901587 125.812441,51.5823548 125.043645,51.5823548 L124.561402,51.5823548 L118.459988,57.641835 C119.592215,58.4805215 120.626579,59.5812811 121.563113,60.9441468 C122.499646,62.3070125 123.596911,64.400203 124.854941,67.2237811 L125.127513,67.2237811 L125.546854,67.2237811 C126.371563,67.2237811 126.98659,67.4124827 127.391955,67.7898917 C127.79732,68.1673006 128,68.7334056 128,69.4882235 C128,70.3129319 127.793826,70.9069927 127.381472,71.2704235 C126.969118,71.6338543 126.287695,71.815567 125.337183,71.815567 L122.758235,71.815567 C121.626008,71.815567 120.710456,71.0537715 120.01155,69.5301576 C119.885747,69.2505954 119.787902,69.026949 119.718012,68.8592117 C118.795456,66.9022764 117.949793,65.3926632 117.180997,64.3303269 C116.412201,63.2679906 115.510627,62.2965265 114.476247,61.4159056 L112.505343,63.302941 L112.505343,67.2237811 L112.840816,67.2237811 C113.595634,67.2237811 114.172222,67.4159772 114.570599,67.8003752 C114.968975,68.1847732 115.16816,68.7473837 115.16816,69.4882235 C115.16816,70.3129319 114.961986,70.9069927 114.549631,71.2704235 C114.137277,71.6338543 113.455855,71.815567 112.505343,71.815567 L107.095842,71.815567 C106.131352,71.815567 105.446435,71.6373488 105.04107,71.280907 C104.635705,70.9244652 104.433025,70.32691 104.433025,69.4882235 C104.433025,68.7473837 104.628716,68.1847732 105.020103,67.8003752 C105.41149,67.4159772 105.984584,67.2237811 106.739402,67.2237811 L107.095842,67.2237811 L107.095842,51.5823548 L106.739402,51.5823548 C105.998562,51.5823548 105.435952,51.3866642 105.051554,50.9952772 C104.667156,50.6038901 104.474959,50.0307962 104.474959,49.2759783 C104.474959,48.4512699 104.674145,47.8572091 105.072521,47.4937783 C105.470897,47.1303474 106.14533,46.9486347 107.095842,46.9486347 L112.505343,46.9486347 C113.441877,46.9486347 114.119805,47.1303474 114.539148,47.4937783 C114.958491,47.8572091 115.16816,48.4512699 115.16816,49.2759783 C115.16816,50.0307962 114.968975,50.6038901 114.570599,50.9952772 C114.172222,51.3866642 113.595634,51.5823548 112.840816,51.5823548 L112.505343,51.5823548 Z M13.439885,96.325622 L17.4445933,84.4372993 C17.6961993,83.6545252 18.0456468,83.0849258 18.4929463,82.728484 C18.9402458,82.3720422 19.5343065,82.193824 20.2751463,82.193824 L23.5460076,82.193824 C24.496519,82.193824 25.1779416,82.3755367 25.5902958,82.7389675 C26.0026501,83.1023984 26.2088241,83.6964591 26.2088241,84.5211676 C26.2088241,85.2759855 26.009639,85.8490794 25.6112629,86.2404664 C25.2128868,86.6318535 24.6362984,86.8275441 23.8814805,86.8275441 L23.5460076,86.8275441 L24.1330852,102.46897 L24.4895252,102.46897 C25.2443431,102.46897 25.8104481,102.661166 26.187857,103.045564 C26.565266,103.429962 26.7539676,103.992573 26.7539676,104.733413 C26.7539676,105.558121 26.5547826,106.152182 26.1564064,106.515613 C25.7580303,106.879044 25.0835967,107.060756 24.1330852,107.060756 L19.4154969,107.060756 C18.4649855,107.060756 17.7905518,106.882538 17.3921757,106.526096 C16.9937996,106.169654 16.7946145,105.572099 16.7946145,104.733413 C16.7946145,103.992573 16.9868106,103.429962 17.3712086,103.045564 C17.7556066,102.661166 18.325206,102.46897 19.0800239,102.46897 L19.4154969,102.46897 L19.1219581,89.6790642 L16.0607674,99.1981091 C15.8371177,99.9109927 15.5191204,100.42468 15.1067662,100.739188 C14.694412,101.053695 14.1248126,101.210947 13.3979509,101.210947 C12.6710892,101.210947 12.0945008,101.053695 11.6681685,100.739188 C11.2418362,100.42468 10.91685,99.9109927 10.6932002,99.1981091 L7.65297664,89.6790642 L7.35943781,102.46897 L7.69491075,102.46897 C8.44972866,102.46897 9.01932808,102.661166 9.40372609,103.045564 C9.78812409,103.429962 9.98032022,103.992573 9.98032022,104.733413 C9.98032022,105.558121 9.77764067,106.152182 9.3722755,106.515613 C8.96691032,106.879044 8.29597114,107.060756 7.35943781,107.060756 L2.62088241,107.060756 C1.68434908,107.060756 1.01340989,106.879044 0.608044719,106.515613 C0.202679546,106.152182 0,105.558121 0,104.733413 C0,103.992573 0.192196121,103.429962 0.57659413,103.045564 C0.960992139,102.661166 1.53059155,102.46897 2.28540946,102.46897 L2.62088241,102.46897 L3.22892713,86.8275441 L2.89345418,86.8275441 C2.13863627,86.8275441 1.56204791,86.6318535 1.16367179,86.2404664 C0.765295672,85.8490794 0.5661106,85.2759855 0.5661106,84.5211676 C0.5661106,83.6964591 0.772284622,83.1023984 1.18463885,82.7389675 C1.59699308,82.3755367 2.27841569,82.193824 3.22892713,82.193824 L6.49978838,82.193824 C7.22665007,82.193824 7.81022738,82.3685477 8.25053783,82.7180005 C8.69084827,83.0674532 9.05077919,83.6405471 9.33034138,84.4372993 L13.439885,96.325622 Z M43.8935644,98.3803938 L43.8935644,86.8275441 L42.7403761,86.8275441 C41.8178209,86.8275441 41.1573651,86.6458314 40.758989,86.2824006 C40.3606129,85.9189697 40.1614278,85.3318979 40.1614278,84.5211676 C40.1614278,83.7104372 40.3606129,83.119871 40.758989,82.7494511 C41.1573651,82.3790312 41.8178209,82.193824 42.7403761,82.193824 L48.6950209,82.193824 C49.6035981,82.193824 50.2605593,82.3790312 50.6659245,82.7494511 C51.0712897,83.119871 51.2739692,83.7104372 51.2739692,84.5211676 C51.2739692,85.2620074 51.0817731,85.8316068 50.6973751,86.2299829 C50.3129771,86.628359 49.7643445,86.8275441 49.051461,86.8275441 L48.6950209,86.8275441 L48.6950209,105.865634 C48.6950209,106.522605 48.6251315,106.934953 48.4853504,107.10269 C48.3455693,107.270428 48.0310665,107.354295 47.5418327,107.354295 L45.4451268,107.354295 C44.7741775,107.354295 44.3024234,107.284406 44.0298503,107.144625 C43.7572771,107.004843 43.5231473,106.76023 43.3274538,106.410777 L34.6051571,91.0838571 L34.6051571,102.46897 L35.8212466,102.46897 C36.7298237,102.46897 37.379796,102.643694 37.7711831,102.993147 C38.1625701,103.3426 38.3582607,103.922682 38.3582607,104.733413 C38.3582607,105.558121 38.1590757,106.152182 37.7606995,106.515613 C37.3623234,106.879044 36.7158456,107.060756 35.8212466,107.060756 L29.8037005,107.060756 C28.8951234,107.060756 28.2381621,106.879044 27.832797,106.515613 C27.4274318,106.152182 27.2247522,105.558121 27.2247522,104.733413 C27.2247522,103.992573 27.4134539,103.429962 27.7908629,103.045564 C28.1682718,102.661166 28.7273878,102.46897 29.4682276,102.46897 L29.8037005,102.46897 L29.8037005,86.8275441 L29.4682276,86.8275441 C28.755344,86.8275441 28.203217,86.628359 27.8118299,86.2299829 C27.4204428,85.8316068 27.2247522,85.2620074 27.2247522,84.5211676 C27.2247522,83.7104372 27.4309263,83.119871 27.8432805,82.7494511 C28.2556347,82.3790312 28.9091015,82.193824 29.8037005,82.193824 L33.2422983,82.193824 C34.0670067,82.193824 34.6261227,82.3021527 34.919663,82.5188134 C35.2132033,82.7354741 35.5416839,83.1722835 35.9051148,83.8292546 L43.8935644,98.3803938 Z M64.6604624,86.3662688 C62.8572863,86.3662688 61.4420239,87.0931196 60.4146329,88.546843 C59.3872418,90.0005663 58.873554,92.0203728 58.873554,94.6063231 C58.873554,97.1922733 59.3907363,99.2190688 60.4251164,100.68677 C61.4594965,102.154472 62.8712644,102.888312 64.6604624,102.888312 C66.4636385,102.888312 67.8823953,102.157966 68.9167754,100.697254 C69.9511555,99.2365414 70.4683378,97.2062514 70.4683378,94.6063231 C70.4683378,92.0203728 69.95465,90.0005663 68.9272589,88.546843 C67.8998679,87.0931196 66.4776166,86.3662688 64.6604624,86.3662688 L64.6604624,86.3662688 Z M64.6604624,81.501911 C68.0990773,81.501911 70.929602,82.7319662 73.1521214,85.1921135 C75.3746408,87.6522607 76.4858838,90.7902992 76.4858838,94.6063231 C76.4858838,98.4503032 75.3816297,101.595331 73.1730884,104.0415 C70.9645471,106.487669 68.1270335,107.710735 64.6604624,107.710735 C61.2358256,107.710735 58.4053009,106.477185 56.1688034,104.010049 C53.9323059,101.542913 52.8140739,98.4083688 52.8140739,94.6063231 C52.8140739,90.7763211 53.9218224,87.6347881 56.1373528,85.1816299 C58.3528831,82.7284717 61.1938912,81.501911 64.6604624,81.501911 L64.6604624,81.501911 Z M87.4611651,98.1707232 L87.4611651,102.46897 L89.6207722,102.46897 C90.5293493,102.46897 91.1758272,102.643694 91.5602252,102.993147 C91.9446232,103.3426 92.1368193,103.922682 92.1368193,104.733413 C92.1368193,105.558121 91.9411287,106.152182 91.5497417,106.515613 C91.1583546,106.879044 90.5153712,107.060756 89.6207722,107.060756 L82.3661697,107.060756 C81.4436145,107.060756 80.7831587,106.879044 80.3847826,106.515613 C79.9864065,106.152182 79.7872214,105.558121 79.7872214,104.733413 C79.7872214,103.992573 79.9759231,103.429962 80.353332,103.045564 C80.730741,102.661166 81.282868,102.46897 82.0097297,102.46897 L82.3661697,102.46897 L82.3661697,86.8275441 L82.0097297,86.8275441 C81.2968461,86.8275441 80.7482136,86.628359 80.3638155,86.2299829 C79.9794175,85.8316068 79.7872214,85.2620074 79.7872214,84.5211676 C79.7872214,83.7104372 79.989901,83.119871 80.3952661,82.7494511 C80.8006313,82.3790312 81.4575926,82.193824 82.3661697,82.193824 L91.0255652,82.193824 C94.450202,82.193824 97.0396079,82.8507853 98.7938606,84.1647276 C100.548113,85.4786699 101.425227,87.414609 101.425227,89.972603 C101.425227,92.6703781 100.551608,94.7111515 98.8043442,96.0949843 C97.0570805,97.4788171 94.4641801,98.1707232 91.0255652,98.1707232 L87.4611651,98.1707232 Z M87.4611651,86.8275441 L87.4611651,93.4531348 L90.4384875,93.4531348 C92.0879044,93.4531348 93.328443,93.1735768 94.1601405,92.6144525 C94.9918381,92.0553281 95.4076806,91.2166541 95.4076806,90.0984053 C95.4076806,89.0500471 94.9778602,88.2428234 94.1182064,87.67671 C93.2585527,87.1105966 92.031992,86.8275441 90.4384875,86.8275441 L87.4611651,86.8275441 Z M114.727851,107.396229 L113.092421,109.03166 C113.69348,108.835966 114.284046,108.689198 114.864137,108.591352 C115.444229,108.493505 116.013828,108.444582 116.572953,108.444582 C117.677223,108.444582 118.840883,108.608823 120.063968,108.937308 C121.287053,109.265794 122.031376,109.430034 122.29696,109.430034 C122.744259,109.430034 123.327837,109.279772 124.047709,108.979242 C124.767582,108.678713 125.253314,108.52845 125.50492,108.52845 C126.02211,108.52845 126.45193,108.727636 126.794394,109.126012 C127.136858,109.524388 127.308087,110.024098 127.308087,110.625156 C127.308087,111.421909 126.836333,112.099837 125.892811,112.658961 C124.949288,113.218086 123.792617,113.497643 122.422762,113.497643 C121.486229,113.497643 120.28413,113.277492 118.816428,112.837181 C117.348727,112.396871 116.286406,112.176719 115.629435,112.176719 C114.636989,112.176719 113.518757,112.449288 112.274706,112.994434 C111.030654,113.53958 110.261869,113.812149 109.968329,113.812149 C109.36727,113.812149 108.857077,113.612964 108.437734,113.214588 C108.01839,112.816212 107.808722,112.337469 107.808722,111.778345 C107.808722,111.386958 107.941512,110.971115 108.207096,110.530805 C108.47268,110.090494 108.94094,109.520895 109.611889,108.821989 L111.729562,106.683349 C109.395218,105.830685 107.536157,104.29661 106.152324,102.08108 C104.768491,99.8655494 104.076585,97.3180772 104.076585,94.4385866 C104.076585,90.6365409 105.180839,87.5299526 107.389381,85.1187288 C109.597922,82.7075049 112.442425,81.501911 115.922974,81.501911 C119.389545,81.501911 122.227059,82.7109994 124.4356,85.1292123 C126.644141,87.5474252 127.748395,90.650519 127.748395,94.4385866 C127.748395,98.2126762 126.65113,101.322759 124.456567,103.768928 C122.262004,106.215097 119.480402,107.438163 116.111677,107.438163 C115.888028,107.438163 115.660887,107.434669 115.430248,107.42768 C115.199609,107.420691 114.965479,107.410207 114.727851,107.396229 L114.727851,107.396229 Z M115.922974,86.3662688 C114.119798,86.3662688 112.704535,87.0931196 111.677144,88.546843 C110.649753,90.0005663 110.136065,92.0203728 110.136065,94.6063231 C110.136065,97.1922733 110.653248,99.2190688 111.687628,100.68677 C112.722008,102.154472 114.133776,102.888312 115.922974,102.888312 C117.72615,102.888312 119.144907,102.157966 120.179287,100.697254 C121.213667,99.2365414 121.730849,97.2062514 121.730849,94.6063231 C121.730849,92.0203728 121.217161,90.0005663 120.18977,88.546843 C119.162379,87.0931196 117.740128,86.3662688 115.922974,86.3662688 L115.922974,86.3662688 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/mono-line&quot;: {
            &quot;title&quot;: &quot;$:/core/images/mono-line&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-mono-line tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M60.4374591,84.522627 L61.3450888,84.522627 C63.2671377,84.522627 64.7264493,85.0120303 65.7230673,85.9908515 C66.7196852,86.9696727 67.2179868,88.4022896 67.2179868,90.288745 C67.2179868,92.3887615 66.6929905,93.9014625 65.6429823,94.8268935 C64.5929741,95.7523244 62.857817,96.215033 60.4374591,96.215033 L44.3670747,96.215033 C41.9111232,96.215033 40.1670679,95.7612227 39.1348565,94.8535884 C38.102645,93.9459542 37.586547,92.424355 37.586547,90.288745 C37.586547,88.2243221 38.102645,86.747214 39.1348565,85.8573766 C40.1670679,84.9675391 41.9111232,84.522627 44.3670747,84.522627 L46.235724,84.522627 L44.0467348,78.2759992 L20.9822627,78.2759992 L18.6864935,84.522627 L20.5551429,84.522627 C22.9755008,84.522627 24.7106579,84.9764373 25.7606661,85.8840716 C26.8106743,86.7917058 27.3356705,88.2599156 27.3356705,90.288745 C27.3356705,92.3887615 26.8106743,93.9014625 25.7606661,94.8268935 C24.7106579,95.7523244 22.9755008,96.215033 20.5551429,96.215033 L6.78052766,96.215033 C4.32457622,96.215033 2.58052094,95.7523244 1.54830946,94.8268935 C0.516097994,93.9014625 0,92.3887615 0,90.288745 C0,88.4022896 0.498301511,86.9696727 1.49491948,85.9908515 C2.49153745,85.0120303 3.95084902,84.522627 5.87289797,84.522627 L6.78052766,84.522627 L21.0890427,44.6937008 L16.8178442,44.6937008 C14.3974863,44.6937008 12.6623292,44.2309922 11.612321,43.3055613 C10.5623128,42.3801303 10.0373165,40.8852258 10.0373165,38.8208028 C10.0373165,36.7207864 10.5623128,35.2080854 11.612321,34.2826544 C12.6623292,33.3572234 14.3974863,32.8945149 16.8178442,32.8945149 L36.8390873,32.8945149 C40.0069087,32.8945149 42.231469,34.6029772 43.512835,38.0199531 L43.512835,38.180123 L60.4374591,84.522627 Z M32.4611088,44.6937008 L24.7195615,67.224273 L40.2026561,67.224273 L32.4611088,44.6937008 Z M89.5058233,68.5590225 L89.5058233,84.8429669 L97.5143205,84.8429669 C103.173687,84.8429669 107.160099,84.22009 109.473676,82.9743176 C111.787254,81.7285451 112.944025,79.6463566 112.944025,76.7276897 C112.944025,73.7734293 111.840643,71.6734444 109.633846,70.4276719 C107.427049,69.1818994 103.565213,68.5590225 98.0482204,68.5590225 L89.5058233,68.5590225 Z M116.734714,62.6327346 C120.614405,64.0564746 123.461842,66.0051894 125.277111,68.4789376 C127.092379,70.9526857 128,74.1115614 128,77.9556593 C128,81.1946677 127.216955,84.1488838 125.650841,86.8183962 C124.084727,89.4879087 121.84237,91.676876 118.923703,93.385364 C117.215215,94.3819819 115.302093,95.1027395 113.18428,95.5476582 C111.066467,95.9925769 108.06776,96.215033 104.188068,96.215033 L99.7033098,96.215033 L76.3184979,96.215033 C73.9693269,96.215033 72.2875593,95.7523244 71.2731446,94.8268935 C70.2587299,93.9014625 69.7515301,92.3887615 69.7515301,90.288745 C69.7515301,88.4022896 70.2320352,86.9696727 71.1930596,85.9908515 C72.1540841,85.0120303 73.5600062,84.522627 75.4108682,84.522627 L76.3184979,84.522627 L76.3184979,44.6937008 L75.4108682,44.6937008 C73.5600062,44.6937008 72.1540841,44.1953993 71.1930596,43.1987813 C70.2320352,42.2021633 69.7515301,40.7428518 69.7515301,38.8208028 C69.7515301,36.7563799 70.2676281,35.2525771 71.2998396,34.3093494 C72.3320511,33.3661217 74.0049204,32.8945149 76.3184979,32.8945149 L100.877889,32.8945149 C108.388118,32.8945149 114.09189,34.3538264 117.989378,37.2724934 C121.886867,40.1911603 123.835581,44.4623161 123.835581,50.0860889 C123.835581,52.8623819 123.239399,55.3093982 122.047017,57.4272114 C120.854635,59.5450246 119.083885,61.2801816 116.734714,62.6327346 L116.734714,62.6327346 Z M89.5058233,44.3733609 L89.5058233,57.8276363 L96.7134708,57.8276363 C101.091471,57.8276363 104.179161,57.3115383 105.976633,56.2793268 C107.774104,55.2471153 108.672827,53.50306 108.672827,51.0471086 C108.672827,48.7335312 107.863087,47.0428653 106.243583,45.9750604 C104.624078,44.9072554 101.999097,44.3733609 98.3685602,44.3733609 L89.5058233,44.3733609 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/new-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/new-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-new-button tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M56,72 L8.00697327,72 C3.59075293,72 0,68.418278 0,64 C0,59.5907123 3.58484404,56 8.00697327,56 L56,56 L56,8.00697327 C56,3.59075293 59.581722,0 64,0 C68.4092877,0 72,3.58484404 72,8.00697327 L72,56 L119.993027,56 C124.409247,56 128,59.581722 128,64 C128,68.4092877 124.415156,72 119.993027,72 L72,72 L72,119.993027 C72,124.409247 68.418278,128 64,128 C59.5907123,128 56,124.415156 56,119.993027 L56,72 L56,72 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/new-here-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/new-here-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-new-here-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n    \t&lt;g transform=\&quot;translate(52.233611, 64.389922) rotate(75.000000) translate(-52.233611, -64.389922) translate(-7.734417, 3.702450)\&quot;&gt;\n\t        &lt;path d=\&quot;M18.9270186,45.959338 L18.9080585,49.6521741 C18.8884833,53.4648378 21.0574548,58.7482162 23.7526408,61.4434022 L78.5671839,116.257945 C81.2617332,118.952495 85.6348701,118.950391 88.3334363,116.251825 L115.863237,88.7220241 C118.555265,86.0299959 118.564544,81.6509578 115.869358,78.9557717 L61.0548144,24.1412286 C58.3602652,21.4466794 53.0787224,19.2788426 49.2595808,19.3006519 L25.9781737,19.4336012 C22.1633003,19.4553862 19.0471195,22.5673232 19.0275223,26.3842526 L18.9871663,34.2443819 C19.0818862,34.255617 19.1779758,34.2665345 19.2754441,34.2771502 C22.6891275,34.6489512 27.0485594,34.2348566 31.513244,33.2285542 C31.7789418,32.8671684 32.075337,32.5211298 32.4024112,32.1940556 C34.8567584,29.7397084 38.3789778,29.0128681 41.4406288,30.0213822 C41.5958829,29.9543375 41.7503946,29.8866669 41.9041198,29.8183808 L42.1110981,30.2733467 C43.1114373,30.6972371 44.0473796,31.3160521 44.8614145,32.1300869 C48.2842088,35.5528813 48.2555691,41.130967 44.7974459,44.5890903 C41.4339531,47.952583 36.0649346,48.0717177 32.6241879,44.9262969 C27.8170558,45.8919233 23.0726921,46.2881596 18.9270186,45.959338 Z\&quot;&gt;&lt;/path&gt;\n\t        &lt;path d=\&quot;M45.4903462,38.8768094 C36.7300141,42.6833154 26.099618,44.7997354 18.1909048,43.9383587 C7.2512621,42.7468685 1.50150083,35.8404432 4.66865776,24.7010202 C7.51507386,14.6896965 15.4908218,6.92103848 24.3842626,4.38423012 C34.1310219,1.60401701 42.4070208,6.15882777 42.4070209,16.3101169 L34.5379395,16.310117 C34.5379394,11.9285862 31.728784,10.3825286 26.5666962,11.8549876 C20.2597508,13.6540114 14.3453742,19.4148216 12.2444303,26.8041943 C10.4963869,32.9523565 12.6250796,35.5092726 19.0530263,36.2093718 C25.5557042,36.9176104 35.0513021,34.9907189 42.7038419,31.5913902 L42.7421786,31.6756595 C44.3874154,31.5384763 47.8846101,37.3706354 45.9274416,38.6772897 L45.9302799,38.6835285 C45.9166992,38.6895612 45.9031139,38.6955897 45.8895238,38.7016142 C45.8389288,38.7327898 45.7849056,38.7611034 45.7273406,38.7863919 C45.6506459,38.8200841 45.571574,38.8501593 45.4903462,38.8768094 Z\&quot;&gt;&lt;/path&gt;\n        &lt;/g&gt;\n        &lt;rect x=\&quot;96\&quot; y=\&quot;80\&quot; width=\&quot;16\&quot; height=\&quot;48\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;80\&quot; y=\&quot;96\&quot; width=\&quot;48\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n    &lt;/g&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/new-image-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/new-image-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-new-image-button tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M81.3619177,73.6270062 L97.1875317,46.2162388 C97.91364,44.9585822 97.4824378,43.3533085 96.2260476,42.6279312 L46.2162388,13.7547547 C44.9585822,13.0286463 43.3533085,13.4598485 42.6279312,14.7162388 L30.0575956,36.4886988 L40.0978909,31.2276186 C43.1404959,29.6333041 46.8692155,31.3421319 47.6479264,34.6877101 L51.2545483,52.3903732 L61.1353556,53.2399953 C63.2899974,53.4346096 65.1046382,54.9309951 65.706105,57.0091178 C65.7395572,57.1246982 65.8069154,57.3539875 65.9047035,57.6813669 C66.0696435,58.2335608 66.2581528,58.852952 66.4667073,59.5238092 C67.0618822,61.4383079 67.6960725,63.3742727 68.3393254,65.2021174 C68.5462918,65.7902259 68.7511789,66.3583016 68.953259,66.9034738 C69.5777086,68.5881157 70.1617856,70.0172008 70.6783305,71.110045 C70.9334784,71.6498566 71.1627732,72.0871602 71.4035746,72.5373068 C71.6178999,72.7492946 71.9508843,72.9623307 72.4151452,73.1586945 C73.5561502,73.6412938 75.1990755,73.899146 77.0720271,73.9171651 C77.9355886,73.9254732 78.7819239,73.8832103 79.5638842,73.8072782 C80.0123946,73.7637257 80.3172916,73.7224469 80.4352582,73.7027375 C80.7503629,73.6500912 81.0598053,73.6256267 81.3619177,73.6270062 L81.3619177,73.6270062 L81.3619177,73.6270062 L81.3619177,73.6270062 Z M37.4707881,2.64867269 C38.9217993,0.135447653 42.1388058,-0.723707984 44.6486727,0.725364314 L108.293614,37.4707881 C110.806839,38.9217993 111.665994,42.1388058 110.216922,44.6486727 L73.4714982,108.293614 C72.0204871,110.806839 68.8034805,111.665994 66.2936136,110.216922 L2.64867269,73.4714982 C0.135447653,72.0204871 -0.723707984,68.8034805 0.725364314,66.2936136 L37.4707881,2.64867269 L37.4707881,2.64867269 L37.4707881,2.64867269 L37.4707881,2.64867269 Z M80.3080975,53.1397764 C82.8191338,54.5895239 86.0299834,53.7291793 87.4797308,51.218143 C88.9294783,48.7071068 88.0691338,45.4962571 85.5580975,44.0465097 C83.0470612,42.5967622 79.8362116,43.4571068 78.3864641,45.968143 C76.9367166,48.4791793 77.7970612,51.6900289 80.3080975,53.1397764 L80.3080975,53.1397764 L80.3080975,53.1397764 L80.3080975,53.1397764 Z M96,112 L88.0070969,112 C83.5881712,112 80,108.418278 80,104 C80,99.5907123 83.5848994,96 88.0070969,96 L96,96 L96,88.0070969 C96,83.5881712 99.581722,80 104,80 C108.409288,80 112,83.5848994 112,88.0070969 L112,96 L119.992903,96 C124.411829,96 128,99.581722 128,104 C128,108.409288 124.415101,112 119.992903,112 L112,112 L112,119.992903 C112,124.411829 108.418278,128 104,128 C99.5907123,128 96,124.415101 96,119.992903 L96,112 L96,112 Z M33.3471097,51.7910932 C40.7754579,59.7394511 42.3564368,62.4818351 40.7958321,65.1848818 C39.2352273,67.8879286 26.9581062,62.8571718 24.7019652,66.7649227 C22.4458242,70.6726735 23.7947046,70.0228006 22.2648667,72.6725575 L41.9944593,84.0634431 C41.9944593,84.0634431 36.3904568,75.8079231 37.7602356,73.4353966 C40.2754811,69.0788636 46.5298923,72.1787882 48.1248275,69.4162793 C50.538989,65.234829 43.0222016,59.7770885 33.3471097,51.7910932 L33.3471097,51.7910932 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/new-journal-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/new-journal-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-new-journal-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M102.545455,112.818182 L102.545455,124.636364 L102.545455,124.636364 L102.545455,124.636364 C102.545455,125.941761 103.630828,127 104.969697,127 L111.030303,127 C112.369172,127 113.454545,125.941761 113.454545,124.636364 L113.454545,112.818182 L125.575758,112.818182 C126.914626,112.818182 128,111.759982 128,110.454545 L128,104.545455 C128,103.240018 126.914626,102.181818 125.575758,102.181818 L113.454545,102.181818 L113.454545,90.3636364 C113.454545,89.0582 112.369172,88 111.030303,88 L104.969697,88 L104.969697,88 C103.630828,88 102.545455,89.0582 102.545455,90.3636364 L102.545455,102.181818 L90.4242424,102.181818 L90.4242424,102.181818 C89.0853705,102.181818 88,103.240018 88,104.545455 L88,110.454545 L88,110.454545 L88,110.454545 C88,111.759982 89.0853705,112.818182 90.4242424,112.818182 L102.545455,112.818182 Z\&quot;&gt;&lt;/path&gt;\n        &lt;g transform=\&quot;translate(59.816987, 64.316987) rotate(30.000000) translate(-59.816987, -64.316987) translate(20.316987, 12.816987)\&quot;&gt;\n            &lt;g transform=\&quot;translate(0.000000, 0.000000)\&quot;&gt;\n                &lt;path d=\&quot;M9.99631148,0 C4.4755011,0 -2.27373675e-13,4.48070044 -2.27373675e-13,9.99759461 L-2.27373675e-13,91.6128884 C-2.27373675e-13,97.1344074 4.46966773,101.610483 9.99631148,101.610483 L68.9318917,101.610483 C74.4527021,101.610483 78.9282032,97.1297826 78.9282032,91.6128884 L78.9282032,9.99759461 C78.9282032,4.47607557 74.4585355,0 68.9318917,0 L9.99631148,0 Z M20.8885263,26 C24.2022348,26 26.8885263,23.3137085 26.8885263,20 C26.8885263,16.6862915 24.2022348,14 20.8885263,14 C17.5748178,14 14.8885263,16.6862915 14.8885263,20 C14.8885263,23.3137085 17.5748178,26 20.8885263,26 Z M57.3033321,25.6783342 C60.6170406,25.6783342 63.3033321,22.9920427 63.3033321,19.6783342 C63.3033321,16.3646258 60.6170406,13.6783342 57.3033321,13.6783342 C53.9896236,13.6783342 51.3033321,16.3646258 51.3033321,19.6783342 C51.3033321,22.9920427 53.9896236,25.6783342 57.3033321,25.6783342 Z\&quot;&gt;&lt;/path&gt;\n                &lt;text font-family=\&quot;Helvetica\&quot; font-size=\&quot;47.1724138\&quot; font-weight=\&quot;bold\&quot; fill=\&quot;#FFFFFF\&quot;&gt;\n                    &lt;tspan x=\&quot;42\&quot; y=\&quot;77.4847912\&quot; text-anchor=\&quot;middle\&quot;&gt;&lt;&lt;now \&quot;DD\&quot;&gt;&gt;&lt;/tspan&gt;\n                &lt;/text&gt;\n            &lt;/g&gt;\n        &lt;/g&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/opacity&quot;: {
            &quot;title&quot;: &quot;$:/core/images/opacity&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-opacity tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M102.361773,65 C101.833691,67.051742 101.183534,69.0544767 100.419508,71 L82.5835324,71 C83.7602504,69.1098924 84.7666304,67.1027366 85.581205,65 L102.361773,65 Z M102.834311,63 C103.256674,61.0388326 103.568427,59.0365486 103.762717,57 L87.6555706,57 C87.3692052,59.0609452 86.9083652,61.0660782 86.2884493,63 L102.834311,63 Z M99.5852583,73 C98.6682925,75.0747721 97.6196148,77.0783056 96.4498253,79 L75.8124196,79 C77.8387053,77.2115633 79.6621163,75.1985844 81.2437158,73 L99.5852583,73 Z M95.1689122,81 C93.7449202,83.1155572 92.1695234,85.1207336 90.458251,87 L60.4614747,87 C65.1836162,85.86248 69.5430327,83.794147 73.3347255,81 L95.1689122,81 Z M87.6555706,47 L103.762717,47 C101.246684,20.6269305 79.0321807,0 52,0 C23.281193,0 0,23.281193 0,52 C0,77.2277755 17.9651296,98.2595701 41.8000051,103 L62.1999949,103 C67.8794003,101.870444 73.2255333,99.8158975 78.074754,97 L39,97 L39,95 L81.2493857,95 C83.8589242,93.2215015 86.2981855,91.2116653 88.5376609,89 L39,89 L39,87 L43.5385253,87 C27.7389671,83.1940333 16,68.967908 16,52 C16,32.117749 32.117749,16 52,16 C70.1856127,16 85.2217929,29.4843233 87.6555706,47 Z M87.8767787,49 L103.914907,49 C103.971379,49.9928025 104,50.9930589 104,52 C104,53.0069411 103.971379,54.0071975 103.914907,55 L87.8767787,55 C87.958386,54.0107999 88,53.0102597 88,52 C88,50.9897403 87.958386,49.9892001 87.8767787,49 Z\&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M76,128 C104.718807,128 128,104.718807 128,76 C128,47.281193 104.718807,24 76,24 C47.281193,24 24,47.281193 24,76 C24,104.718807 47.281193,128 76,128 L76,128 Z M76,112 C95.882251,112 112,95.882251 112,76 C112,56.117749 95.882251,40 76,40 C56.117749,40 40,56.117749 40,76 C40,95.882251 56.117749,112 76,112 L76,112 Z\&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M37,58 L90,58 L90,62 L37,62 L37,58 L37,58 Z M40,50 L93,50 L93,54 L40,54 L40,50 L40,50 Z M40,42 L93,42 L93,46 L40,46 L40,42 L40,42 Z M32,66 L85,66 L85,70 L32,70 L32,66 L32,66 Z M30,74 L83,74 L83,78 L30,78 L30,74 L30,74 Z M27,82 L80,82 L80,86 L27,86 L27,82 L27,82 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/open-window&quot;: {
            &quot;title&quot;: &quot;$:/core/images/open-window&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-open-window tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M16,112 L104.993898,112 C108.863261,112 112,115.590712 112,120 C112,124.418278 108.858091,128 104.993898,128 L7.00610161,128 C3.13673853,128 0,124.409288 0,120 C0,119.998364 4.30952878e-07,119.996727 1.29273572e-06,119.995091 C4.89579306e-07,119.993456 0,119.99182 0,119.990183 L0,24.0098166 C0,19.586117 3.59071231,16 8,16 C12.418278,16 16,19.5838751 16,24.0098166 L16,112 Z\&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M96,43.1959595 L96,56 C96,60.418278 99.581722,64 104,64 C108.418278,64 112,60.418278 112,56 L112,24 C112,19.5907123 108.415101,16 103.992903,16 L72.0070969,16 C67.5881712,16 64,19.581722 64,24 C64,28.4092877 67.5848994,32 72.0070969,32 L84.5685425,32 L48.2698369,68.2987056 C45.1421332,71.4264093 45.1434327,76.4904296 48.267627,79.614624 C51.3854642,82.7324612 56.4581306,82.7378289 59.5835454,79.6124141 L96,43.1959595 Z M32,7.9992458 C32,3.58138434 35.5881049,0 39.9992458,0 L120.000754,0 C124.418616,0 128,3.5881049 128,7.9992458 L128,88.0007542 C128,92.4186157 124.411895,96 120.000754,96 L39.9992458,96 C35.5813843,96 32,92.4118951 32,88.0007542 L32,7.9992458 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/options-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/options-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-options-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M110.48779,76.0002544 C109.354214,80.4045063 107.611262,84.5641217 105.354171,88.3838625 L105.354171,88.3838625 L112.07833,95.1080219 C115.20107,98.2307613 115.210098,103.299824 112.089164,106.420759 L106.420504,112.089418 C103.301049,115.208874 98.2346851,115.205502 95.1077675,112.078585 L88.3836082,105.354425 C84.5638673,107.611516 80.4042519,109.354468 76,110.488045 L76,110.488045 L76,119.993281 C76,124.409501 72.4220153,128.000254 68.0083475,128.000254 L59.9916525,128.000254 C55.5800761,128.000254 52,124.41541 52,119.993281 L52,110.488045 C47.5957481,109.354468 43.4361327,107.611516 39.6163918,105.354425 L32.8922325,112.078585 C29.7694931,115.201324 24.7004301,115.210353 21.5794957,112.089418 L15.9108363,106.420759 C12.7913807,103.301303 12.7947522,98.2349395 15.9216697,95.1080219 L22.6458291,88.3838625 C20.3887383,84.5641217 18.6457859,80.4045063 17.5122098,76.0002544 L8.00697327,76.0002544 C3.59075293,76.0002544 2.19088375e-16,72.4222697 4.89347582e-16,68.0086019 L9.80228577e-16,59.9919069 C1.25035972e-15,55.5803305 3.58484404,52.0002544 8.00697327,52.0002544 L17.5122098,52.0002544 C18.6457859,47.5960025 20.3887383,43.4363871 22.6458291,39.6166462 L15.9216697,32.8924868 C12.7989304,29.7697475 12.7899019,24.7006845 15.9108363,21.5797501 L21.5794957,15.9110907 C24.6989513,12.7916351 29.7653149,12.7950065 32.8922325,15.9219241 L39.6163918,22.6460835 C43.4361327,20.3889927 47.5957481,18.6460403 52,17.5124642 L52,8.00722764 C52,3.5910073 55.5779847,0.000254375069 59.9916525,0.000254375069 L68.0083475,0.000254375069 C72.4199239,0.000254375069 76,3.58509841 76,8.00722764 L76,17.5124642 C80.4042519,18.6460403 84.5638673,20.3889927 88.3836082,22.6460835 L95.1077675,15.9219241 C98.2305069,12.7991848 103.29957,12.7901562 106.420504,15.9110907 L112.089164,21.5797501 C115.208619,24.6992057 115.205248,29.7655693 112.07833,32.8924868 L105.354171,39.6166462 L105.354171,39.6166462 C107.611262,43.4363871 109.354214,47.5960025 110.48779,52.0002544 L119.993027,52.0002544 C124.409247,52.0002544 128,55.5782391 128,59.9919069 L128,68.0086019 C128,72.4201783 124.415156,76.0002544 119.993027,76.0002544 L110.48779,76.0002544 L110.48779,76.0002544 Z M64,96.0002544 C81.673112,96.0002544 96,81.6733664 96,64.0002544 C96,46.3271424 81.673112,32.0002544 64,32.0002544 C46.326888,32.0002544 32,46.3271424 32,64.0002544 C32,81.6733664 46.326888,96.0002544 64,96.0002544 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/paint&quot;: {
            &quot;title&quot;: &quot;$:/core/images/paint&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-paint tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M83.5265806,76.1907935 C90.430962,69.2864121 91.8921169,59.0000433 87.9100453,50.6642209 L125.812763,12.7615036 C128.732035,9.84223095 128.72611,5.10322984 125.812796,2.18991592 C122.893542,-0.729338085 118.161775,-0.730617045 115.241209,2.18994966 L77.3384914,40.092667 C69.002669,36.1105954 58.7163002,37.5717503 51.8119188,44.4761317 L83.5265806,76.1907935 L83.5265806,76.1907935 L83.5265806,76.1907935 L83.5265806,76.1907935 Z M80.8836921,78.8336819 L49.1690303,47.1190201 C49.1690303,47.1190201 8.50573364,81.242543 0,80.2820711 C0,80.2820711 3.78222974,85.8744423 6.82737483,88.320684 C20.8514801,82.630792 44.1526049,63.720771 44.1526049,63.720771 L44.8144806,64.3803375 C44.8144806,64.3803375 19.450356,90.2231043 9.18040433,92.0477601 C10.4017154,93.4877138 13.5343883,96.1014812 15.4269991,97.8235871 C20.8439164,96.3356979 50.1595367,69.253789 50.1595367,69.253789 L50.8214124,69.9133555 L18.4136144,100.936036 L23.6993903,106.221812 L56.1060358,75.2002881 L56.7679115,75.8598546 C56.7679115,75.8598546 28.9040131,106.396168 28.0841366,108.291555 C28.0841366,108.291555 34.1159238,115.144621 35.6529617,116.115796 C36.3545333,113.280171 63.5365402,82.6307925 63.5365402,82.6307925 L64.1984159,83.290359 C64.1984159,83.290359 43.6013016,107.04575 39.2343772,120.022559 C42.443736,123.571575 46.7339155,125.159692 50.1595362,126.321151 C47.9699978,114.504469 80.8836921,78.8336819 80.8836921,78.8336819 L80.8836921,78.8336819 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/palette&quot;: {
            &quot;title&quot;: &quot;$:/core/images/palette&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-palette tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M80.2470434,39.1821571 C75.0645698,38.2680897 69.6261555,37.7814854 64.0193999,37.7814854 C28.6624616,37.7814854 0,57.1324214 0,81.0030106 C0,90.644534 4.67604329,99.5487133 12.5805659,106.738252 C23.5031767,91.1899067 26.3405471,72.3946229 36.8885698,63.5622337 C52.0716764,50.8486559 63.4268694,55.7343343 63.4268694,55.7343343 L80.2470434,39.1821571 Z M106.781666,48.8370714 C119.830962,56.749628 128.0388,68.229191 128.0388,81.0030106 C128.0388,90.3534932 128.557501,98.4142085 116.165191,106.082518 C105.367708,112.763955 112.341384,99.546808 104.321443,95.1851533 C96.3015017,90.8234987 84.3749007,96.492742 86.1084305,103.091059 C89.3087234,115.272303 105.529892,114.54645 92.4224435,119.748569 C79.3149955,124.950687 74.2201582,124.224536 64.0193999,124.224536 C56.1979176,124.224536 48.7040365,123.277578 41.7755684,121.544216 C51.620343,117.347916 69.6563669,109.006202 75.129737,102.088562 C82.7876655,92.4099199 87.3713218,80.0000002 83.3235694,72.4837191 C83.1303943,72.1250117 94.5392656,60.81569 106.781666,48.8370714 Z M1.13430476,123.866563 C0.914084026,123.867944 0.693884185,123.868637 0.473712455,123.868637 C33.9526848,108.928928 22.6351223,59.642592 59.2924543,59.6425917 C59.6085574,61.0606542 59.9358353,62.5865065 60.3541977,64.1372318 C34.4465025,59.9707319 36.7873124,112.168427 1.13429588,123.866563 L1.13430476,123.866563 Z M1.84669213,123.859694 C40.7185279,123.354338 79.9985412,101.513051 79.9985401,79.0466836 C70.7284906,79.0466835 65.9257264,75.5670082 63.1833375,71.1051511 C46.585768,64.1019718 32.81846,116.819636 1.84665952,123.859695 L1.84669213,123.859694 Z M67.1980193,59.8524981 C62.748213,63.9666823 72.0838429,76.2846822 78.5155805,71.1700593 C89.8331416,59.8524993 112.468264,37.2173758 123.785825,25.8998146 C135.103386,14.5822535 123.785825,3.26469247 112.468264,14.5822535 C101.150703,25.8998144 78.9500931,48.9868127 67.1980193,59.8524981 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/permalink-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/permalink-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-permalink-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M80.4834582,48 L73.0956761,80 L73.0956761,80 L47.5165418,80 L54.9043239,48 L80.4834582,48 Z M84.1773493,32 L89.8007299,7.64246248 C90.7941633,3.33942958 95.0918297,0.64641956 99.3968675,1.64031585 C103.693145,2.63218977 106.385414,6.93288901 105.390651,11.2416793 L100.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L96.9043239,48 L89.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L85.8226507,96 L80.1992701,120.357538 C79.2058367,124.66057 74.9081703,127.35358 70.6031325,126.359684 C66.3068546,125.36781 63.6145865,121.067111 64.6093491,116.758321 L69.401785,96 L43.8226507,96 L38.1992701,120.357538 C37.2058367,124.66057 32.9081703,127.35358 28.6031325,126.359684 C24.3068546,125.36781 21.6145865,121.067111 22.6093491,116.758321 L27.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L31.0956761,80 L38.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L42.1773493,32 L47.8007299,7.64246248 C48.7941633,3.33942958 53.0918297,0.64641956 57.3968675,1.64031585 C61.6931454,2.63218977 64.3854135,6.93288901 63.3906509,11.2416793 L58.598215,32 L84.1773493,32 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/permaview-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/permaview-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-permaview-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M81.4834582,48 L79.6365127,56 L79.6365127,56 L74.0573784,56 L75.9043239,48 L81.4834582,48 Z M85.1773493,32 L90.8007299,7.64246248 C91.7941633,3.33942958 96.0918297,0.64641956 100.396867,1.64031585 C104.693145,2.63218977 107.385414,6.93288901 106.390651,11.2416793 L101.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L97.9043239,48 L96.0573784,56 L104.000754,56 C108.411895,56 112,59.581722 112,64 C112,68.4092877 108.418616,72 104.000754,72 L92.3634873,72 L90.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L86.8226507,96 L81.1992701,120.357538 C80.2058367,124.66057 75.9081703,127.35358 71.6031325,126.359684 C67.3068546,125.36781 64.6145865,121.067111 65.6093491,116.758321 L70.401785,96 L64.8226507,96 L59.1992701,120.357538 C58.2058367,124.66057 53.9081703,127.35358 49.6031325,126.359684 C45.3068546,125.36781 42.6145865,121.067111 43.6093491,116.758321 L48.401785,96 L42.8226507,96 L37.1992701,120.357538 C36.2058367,124.66057 31.9081703,127.35358 27.6031325,126.359684 C23.3068546,125.36781 20.6145865,121.067111 21.6093491,116.758321 L26.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L30.0956761,80 L31.9426216,72 L23.9992458,72 C19.5881049,72 16,68.418278 16,64 C16,59.5907123 19.5813843,56 23.9992458,56 L35.6365127,56 L37.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L41.1773493,32 L46.8007299,7.64246248 C47.7941633,3.33942958 52.0918297,0.64641956 56.3968675,1.64031585 C60.6931454,2.63218977 63.3854135,6.93288901 62.3906509,11.2416793 L57.598215,32 L63.1773493,32 L68.8007299,7.64246248 C69.7941633,3.33942958 74.0918297,0.64641956 78.3968675,1.64031585 C82.6931454,2.63218977 85.3854135,6.93288901 84.3906509,11.2416793 L79.598215,32 L85.1773493,32 Z M53.9043239,48 L52.0573784,56 L57.6365127,56 L59.4834582,48 L53.9043239,48 Z M75.9426216,72 L74.0956761,80 L74.0956761,80 L68.5165418,80 L70.3634873,72 L75.9426216,72 L75.9426216,72 Z M48.3634873,72 L46.5165418,80 L52.0956761,80 L53.9426216,72 L48.3634873,72 L48.3634873,72 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/picture&quot;: {
            &quot;title&quot;: &quot;$:/core/images/picture&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-picture tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M112,68.2332211 L112,20.0027785 C112,17.7898769 110.207895,16 107.997221,16 L20.0027785,16 C17.7898769,16 16,17.792105 16,20.0027785 L16,58.312373 L25.2413115,43.7197989 C28.041793,39.297674 34.2643908,38.7118128 37.8410347,42.5335275 L56.0882845,63.1470817 L69.7748997,56.7400579 C72.766567,55.3552503 76.3013751,55.9473836 78.678437,58.2315339 C78.8106437,58.3585731 79.0742301,58.609836 79.4527088,58.9673596 C80.0910923,59.570398 80.8117772,60.2441563 81.598127,60.9705595 C83.8422198,63.043576 86.1541548,65.1151944 88.3956721,67.0372264 C89.1168795,67.6556396 89.8200801,68.2492007 90.5021258,68.8146755 C92.6097224,70.5620551 94.4693308,72.0029474 95.9836366,73.0515697 C96.7316295,73.5695379 97.3674038,73.9719282 98.0281481,74.3824999 C98.4724987,74.4989557 99.0742374,74.5263881 99.8365134,74.4317984 C101.709944,74.1993272 104.074502,73.2878514 106.559886,71.8846196 C107.705822,71.2376318 108.790494,70.5370325 109.764561,69.8410487 C110.323259,69.4418522 110.694168,69.1550757 110.834827,69.0391868 C111.210545,68.7296319 111.600264,68.4615815 112,68.2332211 L112,68.2332211 Z M0,8.00697327 C0,3.58484404 3.59075293,0 8.00697327,0 L119.993027,0 C124.415156,0 128,3.59075293 128,8.00697327 L128,119.993027 C128,124.415156 124.409247,128 119.993027,128 L8.00697327,128 C3.58484404,128 0,124.409247 0,119.993027 L0,8.00697327 L0,8.00697327 Z M95,42 C99.418278,42 103,38.418278 103,34 C103,29.581722 99.418278,26 95,26 C90.581722,26 87,29.581722 87,34 C87,38.418278 90.581722,42 95,42 L95,42 Z M32,76 C47.8587691,80.8294182 52.0345556,83.2438712 52.0345556,88 C52.0345556,92.7561288 32,95.4712486 32,102.347107 C32,109.222965 33.2849191,107.337637 33.2849191,112 L67.999999,112 C67.999999,112 54.3147136,105.375255 54.3147136,101.200691 C54.3147136,93.535181 64.9302432,92.860755 64.9302432,88 C64.9302432,80.6425555 50.8523779,79.167282 32,76 L32,76 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/plugin-generic-language&quot;: {
            &quot;title&quot;: &quot;$:/core/images/plugin-generic-language&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M61.2072232,68.1369825 C56.8829239,70.9319564 54.2082892,74.793177 54.2082892,79.0581634 C54.2082892,86.9638335 63.3980995,93.4821994 75.2498076,94.3940006 C77.412197,98.2964184 83.8475284,101.178858 91.5684735,101.403106 C86.4420125,100.27851 82.4506393,97.6624107 80.9477167,94.3948272 C92.8046245,93.4861461 102,86.9662269 102,79.0581634 C102,70.5281905 91.3014611,63.6132813 78.1041446,63.6132813 C71.5054863,63.6132813 65.5315225,65.3420086 61.2072232,68.1369825 Z M74.001066,53.9793443 C69.6767667,56.7743182 63.7028029,58.5030456 57.1041446,58.5030456 C54.4851745,58.5030456 51.9646095,58.2307276 49.6065315,57.7275105 C46.2945155,59.9778212 41.2235699,61.4171743 35.5395922,61.4171743 C35.4545771,61.4171743 35.3696991,61.4168523 35.2849622,61.4162104 C39.404008,60.5235193 42.7961717,58.6691298 44.7630507,56.286533 C37.8379411,53.5817651 33.2082892,48.669413 33.2082892,43.0581634 C33.2082892,34.5281905 43.9068281,27.6132812 57.1041446,27.6132812 C70.3014611,27.6132812 81,34.5281905 81,43.0581634 C81,47.3231498 78.3253653,51.1843704 74.001066,53.9793443 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/plugin-generic-plugin&quot;: {
            &quot;title&quot;: &quot;$:/core/images/plugin-generic-plugin&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M40.3972881,76.4456988 L40.3972881,95.3404069 L54.5170166,95.3404069 L54.5170166,95.3404069 C54.5165526,95.3385183 54.516089,95.3366295 54.515626,95.3347404 C54.6093153,95.3385061 54.7034848,95.3404069 54.7980982,95.3404069 C58.6157051,95.3404069 61.710487,92.245625 61.710487,88.4280181 C61.710487,86.6197822 61.01617,84.9737128 59.8795929,83.7418666 L59.8795929,83.7418666 C59.8949905,83.7341665 59.9104102,83.7265043 59.925852,83.7188798 C58.8840576,82.5086663 58.2542926,80.9336277 58.2542926,79.2114996 C58.2542926,75.3938927 61.3490745,72.2991108 65.1666814,72.2991108 C68.9842884,72.2991108 72.0790703,75.3938927 72.0790703,79.2114996 C72.0790703,81.1954221 71.2432806,82.9841354 69.9045961,84.2447446 L69.9045961,84.2447446 C69.9333407,84.2629251 69.9619885,84.281245 69.9905383,84.2997032 L69.9905383,84.2997032 C69.1314315,85.4516923 68.6228758,86.8804654 68.6228758,88.4280181 C68.6228758,91.8584969 71.1218232,94.7053153 74.3986526,95.2474079 C74.3913315,95.2784624 74.3838688,95.3094624 74.3762652,95.3404069 L95.6963988,95.3404069 L95.6963988,75.5678578 L95.6963988,75.5678578 C95.6466539,75.5808558 95.5967614,75.5934886 95.5467242,75.6057531 C95.5504899,75.5120637 95.5523907,75.4178943 95.5523907,75.3232809 C95.5523907,71.505674 92.4576088,68.4108921 88.6400019,68.4108921 C86.831766,68.4108921 85.1856966,69.105209 83.9538504,70.2417862 L83.9538504,70.2417862 C83.9461503,70.2263886 83.938488,70.2109688 83.9308636,70.1955271 C82.7206501,71.2373215 81.1456115,71.8670865 79.4234834,71.8670865 C75.6058765,71.8670865 72.5110946,68.7723046 72.5110946,64.9546976 C72.5110946,61.1370907 75.6058765,58.0423088 79.4234834,58.0423088 C81.4074059,58.0423088 83.1961192,58.8780985 84.4567284,60.2167829 L84.4567284,60.2167829 C84.4749089,60.1880383 84.4932288,60.1593906 84.511687,60.1308407 L84.511687,60.1308407 C85.6636761,60.9899475 87.0924492,61.4985032 88.6400019,61.4985032 C92.0704807,61.4985032 94.9172991,58.9995558 95.4593917,55.7227265 C95.538755,55.7414363 95.6177614,55.761071 95.6963988,55.7816184 L95.6963988,40.0412962 L74.3762652,40.0412962 L74.3762652,40.0412962 C74.3838688,40.0103516 74.3913315,39.9793517 74.3986526,39.9482971 L74.3986526,39.9482971 C71.1218232,39.4062046 68.6228758,36.5593862 68.6228758,33.1289073 C68.6228758,31.5813547 69.1314315,30.1525815 69.9905383,29.0005925 C69.9619885,28.9821342 69.9333407,28.9638143 69.9045961,28.9456339 C71.2432806,27.6850247 72.0790703,25.8963113 72.0790703,23.9123888 C72.0790703,20.0947819 68.9842884,17 65.1666814,17 C61.3490745,17 58.2542926,20.0947819 58.2542926,23.9123888 C58.2542926,25.6345169 58.8840576,27.2095556 59.925852,28.419769 L59.925852,28.419769 C59.9104102,28.4273935 59.8949905,28.4350558 59.8795929,28.4427558 C61.01617,29.674602 61.710487,31.3206715 61.710487,33.1289073 C61.710487,36.9465143 58.6157051,40.0412962 54.7980982,40.0412962 C54.7034848,40.0412962 54.6093153,40.0393953 54.515626,40.0356296 L54.515626,40.0356296 C54.516089,40.0375187 54.5165526,40.0394075 54.5170166,40.0412962 L40.3972881,40.0412962 L40.3972881,52.887664 L40.3972881,52.887664 C40.4916889,53.3430132 40.5412962,53.8147625 40.5412962,54.2980982 C40.5412962,58.1157051 37.4465143,61.210487 33.6289073,61.210487 C32.0813547,61.210487 30.6525815,60.7019313 29.5005925,59.8428245 C29.4821342,59.8713744 29.4638143,59.9000221 29.4456339,59.9287667 C28.1850247,58.5900823 26.3963113,57.7542926 24.4123888,57.7542926 C20.5947819,57.7542926 17.5,60.8490745 17.5,64.6666814 C17.5,68.4842884 20.5947819,71.5790703 24.4123888,71.5790703 C26.134517,71.5790703 27.7095556,70.9493053 28.919769,69.9075109 L28.919769,69.9075109 C28.9273935,69.9229526 28.9350558,69.9383724 28.9427558,69.95377 C30.174602,68.8171928 31.8206715,68.1228758 33.6289073,68.1228758 C37.4465143,68.1228758 40.5412962,71.2176578 40.5412962,75.0352647 C40.5412962,75.5186004 40.4916889,75.9903496 40.3972881,76.4456988 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/plugin-generic-theme&quot;: {
            &quot;title&quot;: &quot;$:/core/images/plugin-generic-theme&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M29.4078519,91.4716406 L51.4693474,69.4101451 L51.4646675,69.4054652 C50.5969502,68.5377479 50.5929779,67.1348725 51.4693474,66.2585029 C52.3396494,65.3882009 53.7499654,65.3874786 54.6163097,66.2538229 L64.0805963,75.7181095 C64.9483136,76.5858268 64.9522859,77.9887022 64.0759163,78.8650718 C63.2056143,79.7353737 61.7952984,79.736096 60.9289541,78.8697517 L60.9242741,78.8650718 L60.9242741,78.8650718 L38.8627786,100.926567 C36.2518727,103.537473 32.0187578,103.537473 29.4078519,100.926567 C26.796946,98.3156614 26.796946,94.0825465 29.4078519,91.4716406 Z M60.8017407,66.3810363 C58.3659178,63.6765806 56.3370667,61.2899536 54.9851735,59.5123615 C48.1295381,50.4979488 44.671561,55.2444054 40.7586738,59.5123614 C36.8457866,63.7803174 41.789473,67.2384487 38.0759896,70.2532832 C34.3625062,73.2681177 34.5917646,74.3131575 28.3243876,68.7977024 C22.0570105,63.2822473 21.6235306,61.7636888 24.5005999,58.6166112 C27.3776691,55.4695337 29.7823103,60.4247912 35.6595047,54.8320442 C41.5366991,49.2392972 36.5996215,44.2825646 36.5996215,44.2825646 C36.5996215,44.2825646 48.8365511,19.267683 65.1880231,21.1152173 C81.5394952,22.9627517 59.0022276,18.7228947 53.3962199,38.3410355 C50.9960082,46.7405407 53.8429162,44.7613399 58.3941742,48.3090467 C59.7875202,49.3951602 64.4244828,52.7100463 70.1884353,56.9943417 L90.8648751,36.3179019 L92.4795866,31.5515482 L100.319802,26.8629752 L103.471444,30.0146174 L98.782871,37.8548326 L94.0165173,39.4695441 L73.7934912,59.6925702 C86.4558549,69.2403631 102.104532,81.8392557 102.104532,86.4016913 C102.104533,93.6189834 99.0337832,97.9277545 92.5695848,95.5655717 C87.8765989,93.8506351 73.8015497,80.3744087 63.8173444,69.668717 L60.9242741,72.5617873 L57.7726319,69.4101451 L60.8017407,66.3810363 L60.8017407,66.3810363 Z M63.9533761,1.42108547e-13 L118.512977,32 L118.512977,96 L63.9533761,128 L9.39377563,96 L9.39377563,32 L63.9533761,1.42108547e-13 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/preview-closed&quot;: {
            &quot;title&quot;: &quot;$:/core/images/preview-closed&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-preview-closed tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M0.0881363238,64 C-0.210292223,65.8846266 0.249135869,67.8634737 1.4664206,69.4579969 C16.2465319,88.8184886 39.1692554,100.414336 64,100.414336 C88.8307446,100.414336 111.753468,88.8184886 126.533579,69.4579969 C127.750864,67.8634737 128.210292,65.8846266 127.911864,64 C110.582357,78.4158332 88.3036732,87.0858436 64,87.0858436 C39.6963268,87.0858436 17.4176431,78.4158332 0.0881363238,64 Z\&quot;&gt;&lt;/path&gt;\n        &lt;rect x=\&quot;62\&quot; y=\&quot;96\&quot; width=\&quot;4\&quot; height=\&quot;16\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n        &lt;rect transform=\&quot;translate(80.000000, 101.000000) rotate(-5.000000) translate(-80.000000, -101.000000) \&quot; x=\&quot;78\&quot; y=\&quot;93\&quot; width=\&quot;4\&quot; height=\&quot;16\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n        &lt;rect transform=\&quot;translate(48.000000, 101.000000) rotate(-355.000000) translate(-48.000000, -101.000000) \&quot; x=\&quot;46\&quot; y=\&quot;93\&quot; width=\&quot;4\&quot; height=\&quot;16\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n        &lt;rect transform=\&quot;translate(32.000000, 96.000000) rotate(-350.000000) translate(-32.000000, -96.000000) \&quot; x=\&quot;30\&quot; y=\&quot;88\&quot; width=\&quot;4\&quot; height=\&quot;16\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n        &lt;rect transform=\&quot;translate(96.000000, 96.000000) rotate(-10.000000) translate(-96.000000, -96.000000) \&quot; x=\&quot;94\&quot; y=\&quot;88\&quot; width=\&quot;4\&quot; height=\&quot;16\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n        &lt;rect transform=\&quot;translate(112.000000, 88.000000) rotate(-20.000000) translate(-112.000000, -88.000000) \&quot; x=\&quot;110\&quot; y=\&quot;80\&quot; width=\&quot;4\&quot; height=\&quot;16\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n        &lt;rect transform=\&quot;translate(16.000000, 88.000000) rotate(-340.000000) translate(-16.000000, -88.000000) \&quot; x=\&quot;14\&quot; y=\&quot;80\&quot; width=\&quot;4\&quot; height=\&quot;16\&quot; rx=\&quot;4\&quot;&gt;&lt;/rect&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/preview-open&quot;: {
            &quot;title&quot;: &quot;$:/core/images/preview-open&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-preview-open tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M64.1099282,99.5876785 C39.2791836,99.5876785 16.3564602,87.9918313 1.57634884,68.6313396 C-0.378878622,66.070184 -0.378878622,62.5174945 1.57634884,59.9563389 C16.3564602,40.5958472 39.2791836,29 64.1099282,29 C88.9406729,29 111.863396,40.5958472 126.643508,59.9563389 C128.598735,62.5174945 128.598735,66.070184 126.643508,68.6313396 C111.863396,87.9918313 88.9406729,99.5876785 64.1099282,99.5876785 Z M110.213805,67.5808331 C111.654168,66.0569335 111.654168,63.9430665 110.213805,62.4191669 C99.3257042,50.8995835 82.4391647,44 64.1470385,44 C45.8549124,44 28.9683729,50.8995835 18.0802717,62.4191669 C16.6399094,63.9430665 16.6399094,66.0569335 18.0802717,67.5808331 C28.9683729,79.1004165 45.8549124,86 64.1470385,86 C82.4391647,86 99.3257042,79.1004165 110.213805,67.5808331 Z\&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M63.5,88 C76.4786916,88 87,77.4786916 87,64.5 C87,51.5213084 76.4786916,41 63.5,41 C50.5213084,41 40,51.5213084 40,64.5 C40,77.4786916 50.5213084,88 63.5,88 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/quote&quot;: {
            &quot;title&quot;: &quot;$:/core/images/quote&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-quote tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M51.2188077,117.712501 L51.2188077,62.1993386 L27.4274524,62.1993386 C27.4274524,53.3075754 29.1096526,45.797753 32.4741035,39.669646 C35.8385544,33.541539 42.0867267,28.9154883 51.2188077,25.7913554 L51.2188077,2 C43.7689521,2.96127169 36.8599155,5.18417913 30.4914905,8.668789 C24.1230656,12.1533989 18.6559149,16.5391352 14.0898743,21.8261295 C9.52383382,27.1131238 5.97919764,33.2411389 3.45585945,40.2103586 C0.932521268,47.1795784 -0.208971741,54.6293222 0.0313461819,62.5598136 L0.0313461819,117.712501 L51.2188077,117.712501 Z M128,117.712501 L128,62.1993386 L104.208645,62.1993386 C104.208645,53.3075754 105.890845,45.797753 109.255296,39.669646 C112.619747,33.541539 118.867919,28.9154883 128,25.7913554 L128,2 C120.550144,2.96127169 113.641108,5.18417913 107.272683,8.668789 C100.904258,12.1533989 95.4371072,16.5391352 90.8710666,21.8261295 C86.3050261,27.1131238 82.7603899,33.2411389 80.2370517,40.2103586 C77.7137136,47.1795784 76.5722206,54.6293222 76.8125385,62.5598136 L76.8125385,117.712501 L128,117.712501 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/refresh-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/refresh-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-refresh-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M106.369002,39.4325143 C116.529932,60.3119371 112.939592,86.1974934 95.5979797,103.539105 C73.7286194,125.408466 38.2713806,125.408466 16.4020203,103.539105 C-5.46734008,81.6697449 -5.46734008,46.2125061 16.4020203,24.3431458 C19.5262146,21.2189514 24.5915344,21.2189514 27.7157288,24.3431458 C30.8399231,27.4673401 30.8399231,32.5326599 27.7157288,35.6568542 C12.0947571,51.2778259 12.0947571,76.6044251 27.7157288,92.2253967 C43.3367004,107.846368 68.6632996,107.846368 84.2842712,92.2253967 C97.71993,78.7897379 99.5995262,58.1740623 89.9230597,42.729491 L83.4844861,54.9932839 C81.4307001,58.9052072 76.5945372,60.4115251 72.682614,58.3577391 C68.7706907,56.3039532 67.2643728,51.4677903 69.3181587,47.555867 L84.4354914,18.7613158 C86.4966389,14.8353707 91.3577499,13.3347805 95.273202,15.415792 L124.145886,30.7612457 C128.047354,32.8348248 129.52915,37.6785572 127.455571,41.5800249 C125.381992,45.4814927 120.53826,46.9632892 116.636792,44.8897102 L106.369002,39.4325143 Z M98.1470904,27.0648707 C97.9798954,26.8741582 97.811187,26.6843098 97.6409651,26.4953413 L98.6018187,26.1987327 L98.1470904,27.0648707 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/right-arrow&quot;: {
            &quot;title&quot;: &quot;$:/core/images/right-arrow&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-right-arrow tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;path d=\&quot;M80.3563798,109.353315 C78.9238993,110.786918 76.9450203,111.675144 74.7592239,111.675144 L-4.40893546,111.675144 C-8.77412698,111.675144 -12.3248558,108.130732 -12.3248558,103.758478 C-12.3248558,99.3951199 -8.78077754,95.8418109 -4.40893546,95.8418109 L66.8418109,95.8418109 L66.8418109,24.5910645 C66.8418109,20.225873 70.3862233,16.6751442 74.7584775,16.6751442 C79.1218352,16.6751442 82.6751442,20.2192225 82.6751442,24.5910645 L82.6751442,103.759224 C82.6751442,105.941695 81.7891419,107.920575 80.3566508,109.353886 Z\&quot; transform=\&quot;translate(35.175144, 64.175144) rotate(-45.000000) translate(-35.175144, -64.175144) \&quot;&gt;&lt;/path&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/save-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/save-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-save-button tc-image-button\&quot; viewBox=\&quot;0 0 128 128\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/size&quot;: {
            &quot;title&quot;: &quot;$:/core/images/size&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-size tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;path d=\&quot;M92.3431458,26 L83.1715729,35.1715729 C81.6094757,36.73367 81.6094757,39.26633 83.1715729,40.8284271 C84.73367,42.3905243 87.26633,42.3905243 88.8284271,40.8284271 L104.828427,24.8284271 C106.390524,23.26633 106.390524,20.73367 104.828427,19.1715729 L88.8284271,3.17157288 C87.26633,1.60947571 84.73367,1.60947571 83.1715729,3.17157288 C81.6094757,4.73367004 81.6094757,7.26632996 83.1715729,8.82842712 L92.3431457,18 L22,18 C19.790861,18 18,19.790861 18,22 L18,92.3431458 L8.82842712,83.1715729 C7.26632996,81.6094757 4.73367004,81.6094757 3.17157288,83.1715729 C1.60947571,84.73367 1.60947571,87.26633 3.17157288,88.8284271 L19.1715729,104.828427 C20.73367,106.390524 23.26633,106.390524 24.8284271,104.828427 L40.8284271,88.8284271 C42.3905243,87.26633 42.3905243,84.73367 40.8284271,83.1715729 C39.26633,81.6094757 36.73367,81.6094757 35.1715729,83.1715729 L26,92.3431458 L26,22 L22,26 L92.3431458,26 L92.3431458,26 Z M112,52 L112,116 L116,112 L52,112 C49.790861,112 48,113.790861 48,116 C48,118.209139 49.790861,120 52,120 L116,120 C118.209139,120 120,118.209139 120,116 L120,52 C120,49.790861 118.209139,48 116,48 C113.790861,48 112,49.790861 112,52 L112,52 Z\&quot;&gt;&lt;/path&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/spiral&quot;: {
            &quot;title&quot;: &quot;$:/core/images/spiral&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-spiral tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;nonzero\&quot;&gt;\n        &lt;path d=\&quot;M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074.14-2.64-1.89-4.89-4.52-5.03-2.64-.14-4.89 1.88-5.03 4.52-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01-.02-.015-.054-.045-.094-.088-.06-.064-.12-.145-.17-.244-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/stamp&quot;: {
            &quot;title&quot;: &quot;$:/core/images/stamp&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-stamp tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M49.7334301,64 L16.0098166,64 C11.5838751,64 8,67.5829053 8,72.002643 L8,74.4986785 L8,97 L120,97 L120,74.4986785 L120,72.002643 C120,67.5737547 116.413883,64 111.990183,64 L78.2665699,64 C76.502049,60.7519149 75.5,57.0311962 75.5,53.0769231 C75.5,46.6017951 78.1869052,40.7529228 82.5087769,36.5800577 C85.3313113,32.7688808 87,28.0549983 87,22.952183 C87,10.2760423 76.7025492,0 64,0 C51.2974508,0 41,10.2760423 41,22.952183 C41,28.0549983 42.6686887,32.7688808 45.4912231,36.5800577 C49.8130948,40.7529228 52.5,46.6017951 52.5,53.0769231 C52.5,57.0311962 51.497951,60.7519149 49.7334301,64 Z M8,104 L120,104 L120,112 L8,112 L8,104 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/star-filled&quot;: {
            &quot;title&quot;: &quot;$:/core/images/star-filled&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-star-filled tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;nonzero\&quot;&gt;\n        &lt;path d=\&quot;M61.8361286,96.8228569 L99.1627704,124.110219 C101.883827,126.099427 105.541968,123.420868 104.505636,120.198072 L90.2895569,75.9887263 L89.0292911,79.8977279 L126.314504,52.5528988 C129.032541,50.5595011 127.635256,46.2255025 124.273711,46.2229134 L78.1610486,46.1873965 L81.4604673,48.6032923 L67.1773543,4.41589688 C66.1361365,1.19470104 61.6144265,1.19470104 60.5732087,4.41589688 L46.2900957,48.6032923 L49.5895144,46.1873965 L3.47685231,46.2229134 C0.115307373,46.2255025 -1.28197785,50.5595011 1.43605908,52.5528988 L38.7212719,79.8977279 L37.4610061,75.9887263 L23.2449266,120.198072 C22.2085954,123.420868 25.8667356,126.099427 28.5877926,124.110219 L65.9144344,96.8228569 L61.8361286,96.8228569 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/storyview-classic&quot;: {
            &quot;title&quot;: &quot;$:/core/images/storyview-classic&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-storyview-classic tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/storyview-pop&quot;: {
            &quot;title&quot;: &quot;$:/core/images/storyview-pop&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-storyview-pop tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M16.0098166,56 C11.586117,56 8,59.5776607 8,63.9924054 L8,80.0075946 C8,84.4216782 11.5838751,88 16.0098166,88 L111.990183,88 C116.413883,88 120,84.4223393 120,80.0075946 L120,63.9924054 C120,59.5783218 116.416125,56 111.990183,56 L16.0098166,56 L16.0098166,56 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/storyview-zoomin&quot;: {
            &quot;title&quot;: &quot;$:/core/images/storyview-zoomin&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-storyview-zoomin tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.578055 16,24.0085154 L16,71.9914846 C16,76.4144655 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.421945 112,71.9914846 L112,24.0085154 C112,19.5855345 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/strikethrough&quot;: {
            &quot;title&quot;: &quot;$:/core/images/strikethrough&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-strikethrough tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M92.793842,38.7255689 L108.215529,38.7255689 C107.987058,31.985687 106.70193,26.1883331 104.360107,21.3333333 C102.018284,16.4783336 98.8197436,12.4516001 94.7643909,9.25301205 C90.7090382,6.05442399 85.9969032,3.71263572 80.6278447,2.22757697 C75.2587862,0.742518233 69.4328739,0 63.1499331,0 C57.552404,0 52.0977508,0.713959839 46.7858099,2.14190094 C41.473869,3.56984203 36.7331757,5.74027995 32.5635877,8.65327979 C28.3939997,11.5662796 25.0526676,15.2788708 22.5394913,19.7911647 C20.026315,24.3034585 18.7697456,29.6438781 18.7697456,35.8125837 C18.7697456,41.4101128 19.883523,46.0651309 22.1111111,49.7777778 C24.3386992,53.4904246 27.3087722,56.5176144 31.021419,58.8594378 C34.7340659,61.2012612 38.9321497,63.0861151 43.6157965,64.5140562 C48.2994433,65.9419973 53.068695,67.1985666 57.9236948,68.2838019 C62.7786945,69.3690371 67.5479462,70.4256977 72.231593,71.4538153 C76.9152398,72.4819329 81.1133237,73.8241773 84.8259705,75.480589 C88.5386174,77.1370007 91.5086903,79.2788802 93.7362784,81.9062918 C95.9638666,84.5337035 97.0776439,87.9607107 97.0776439,92.1874163 C97.0776439,96.6425926 96.1637753,100.298067 94.3360107,103.153949 C92.5082461,106.009831 90.109341,108.265944 87.1392236,109.922356 C84.1691061,111.578768 80.827774,112.749662 77.1151272,113.435074 C73.4024803,114.120485 69.7184476,114.463186 66.0629183,114.463186 C61.4935068,114.463186 57.0383974,113.892018 52.6974565,112.749665 C48.3565156,111.607312 44.5582492,109.836692 41.3025435,107.437751 C38.0468378,105.03881 35.4194656,101.983062 33.4203481,98.270415 C31.4212305,94.5577681 30.4216867,90.1312171 30.4216867,84.9906292 L15,84.9906292 C15,92.4159229 16.3422445,98.8415614 19.0267738,104.267738 C21.711303,109.693914 25.3667774,114.149023 29.9933066,117.633199 C34.6198357,121.117376 39.9888137,123.71619 46.1004016,125.429719 C52.2119895,127.143248 58.6947448,128 65.5488621,128 C71.1463912,128 76.7723948,127.343157 82.4270415,126.029451 C88.0816882,124.715745 93.1936407,122.602424 97.7630522,119.689424 C102.332464,116.776425 106.073613,113.006717 108.986613,108.380187 C111.899613,103.753658 113.356091,98.1847715 113.356091,91.6733601 C113.356091,85.6188899 112.242314,80.5926126 110.014726,76.5943775 C107.787137,72.5961424 104.817065,69.2833688 101.104418,66.6559572 C97.3917708,64.0285455 93.193687,61.9437828 88.5100402,60.4016064 C83.8263934,58.85943 79.0571416,57.5171855 74.2021419,56.3748327 C69.3471422,55.2324798 64.5778904,54.1758192 59.8942436,53.2048193 C55.2105968,52.2338193 51.012513,51.0058084 47.2998661,49.5207497 C43.5872193,48.0356909 40.6171463,46.1222786 38.3895582,43.7804552 C36.1619701,41.4386318 35.0481928,38.3828836 35.0481928,34.6131191 C35.0481928,30.6148841 35.8192694,27.273552 37.3614458,24.5890228 C38.9036222,21.9044935 40.9598265,19.762614 43.5301205,18.1633199 C46.1004145,16.5640259 49.041929,15.4216902 52.3547523,14.7362784 C55.6675757,14.0508667 59.0374661,13.708166 62.4645248,13.708166 C70.9179361,13.708166 77.8576257,15.6786952 83.2838019,19.6198126 C88.709978,23.56093 91.8799597,29.9294518 92.793842,38.7255689 L92.793842,38.7255689 Z\&quot;&gt;&lt;/path&gt;\n        &lt;rect x=\&quot;5\&quot; y=\&quot;54\&quot; width=\&quot;118\&quot; height=\&quot;16\&quot;&gt;&lt;/rect&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/subscript&quot;: {
            &quot;title&quot;: &quot;$:/core/images/subscript&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-subscript tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M2.27170276,16 L22.1825093,16 L43.8305003,49.6746527 L66.4138983,16 L85.1220387,16 L53.5854592,61.9685735 L87.3937414,111.411516 L67.0820462,111.411516 L43.295982,74.9306422 L19.1090291,111.411516 L0,111.411516 L33.8082822,61.9685735 L2.27170276,16 Z M127.910914,128.411516 L85.3276227,128.411516 C85.3870139,123.24448 86.6342108,118.730815 89.0692508,114.870386 C91.5042907,111.009956 94.8301491,107.654403 99.0469256,104.803624 C101.066227,103.318844 103.174584,101.878629 105.372059,100.482935 C107.569534,99.0872413 109.588805,97.5876355 111.429933,95.9840726 C113.271061,94.3805097 114.785514,92.6433426 115.973338,90.7725192 C117.161163,88.9016958 117.784761,86.7487964 117.844152,84.3137564 C117.844152,83.1853233 117.710524,81.9826691 117.443264,80.7057579 C117.176003,79.4288467 116.656338,78.2410402 115.884252,77.1423026 C115.112166,76.0435651 114.04314,75.123015 112.677142,74.3806248 C111.311144,73.6382345 109.529434,73.267045 107.331959,73.267045 C105.312658,73.267045 103.634881,73.6679297 102.298579,74.4697112 C100.962276,75.2714926 99.8932503,76.3702137 99.0914688,77.7659073 C98.2896874,79.161601 97.6957841,80.8096826 97.3097412,82.7102016 C96.9236982,84.6107206 96.7009845,86.6596869 96.6415933,88.857162 L86.4857457,88.857162 C86.4857457,85.4124713 86.9460207,82.2202411 87.8665846,79.2803758 C88.7871485,76.3405105 90.1679736,73.801574 92.0091014,71.6634901 C93.8502292,69.5254062 96.092214,67.8476295 98.7351233,66.6301095 C101.378033,65.4125895 104.451482,64.8038386 107.955564,64.8038386 C111.756602,64.8038386 114.933984,65.4274371 117.487807,66.6746527 C120.041629,67.9218683 122.105443,69.4957119 123.67931,71.3962309 C125.253178,73.2967499 126.366746,75.3605638 127.02005,77.5877345 C127.673353,79.8149053 128,81.9381095 128,83.9574109 C128,86.4518421 127.613963,88.7086746 126.841877,90.727976 C126.069791,92.7472774 125.03046,94.6032252 123.723854,96.2958749 C122.417247,97.9885247 120.932489,99.5475208 119.269534,100.97291 C117.60658,102.398299 115.884261,103.734582 114.102524,104.981797 C112.320788,106.229013 110.539078,107.416819 108.757341,108.545253 C106.975605,109.673686 105.327523,110.802102 103.813047,111.930535 C102.298571,113.058968 100.977136,114.231927 99.8487031,115.449447 C98.7202699,116.666967 97.9481956,117.958707 97.5324571,119.324705 L127.910914,119.324705 L127.910914,128.411516 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/superscript&quot;: {
            &quot;title&quot;: &quot;$:/core/images/superscript&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-superscript tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M2.27170276,16 L22.1825093,16 L43.8305003,49.6746527 L66.4138983,16 L85.1220387,16 L53.5854592,61.9685735 L87.3937414,111.411516 L67.0820462,111.411516 L43.295982,74.9306422 L19.1090291,111.411516 L0,111.411516 L33.8082822,61.9685735 L2.27170276,16 Z M127.910914,63.4115159 L85.3276227,63.4115159 C85.3870139,58.2444799 86.6342108,53.7308149 89.0692508,49.8703857 C91.5042907,46.0099565 94.8301491,42.654403 99.0469256,39.8036245 C101.066227,38.318844 103.174584,36.8786285 105.372059,35.4829349 C107.569534,34.0872413 109.588805,32.5876355 111.429933,30.9840726 C113.271061,29.3805097 114.785514,27.6433426 115.973338,25.7725192 C117.161163,23.9016958 117.784761,21.7487964 117.844152,19.3137564 C117.844152,18.1853233 117.710524,16.9826691 117.443264,15.7057579 C117.176003,14.4288467 116.656338,13.2410402 115.884252,12.1423026 C115.112166,11.0435651 114.04314,10.123015 112.677142,9.38062477 C111.311144,8.63823453 109.529434,8.26704499 107.331959,8.26704499 C105.312658,8.26704499 103.634881,8.6679297 102.298579,9.46971115 C100.962276,10.2714926 99.8932503,11.3702137 99.0914688,12.7659073 C98.2896874,14.161601 97.6957841,15.8096826 97.3097412,17.7102016 C96.9236982,19.6107206 96.7009845,21.6596869 96.6415933,23.857162 L86.4857457,23.857162 C86.4857457,20.4124713 86.9460207,17.2202411 87.8665846,14.2803758 C88.7871485,11.3405105 90.1679736,8.80157397 92.0091014,6.6634901 C93.8502292,4.52540622 96.092214,2.84762946 98.7351233,1.63010947 C101.378033,0.412589489 104.451482,-0.196161372 107.955564,-0.196161372 C111.756602,-0.196161372 114.933984,0.427437071 117.487807,1.67465266 C120.041629,2.92186826 122.105443,4.49571195 123.67931,6.39623095 C125.253178,8.29674995 126.366746,10.3605638 127.02005,12.5877345 C127.673353,14.8149053 128,16.9381095 128,18.9574109 C128,21.4518421 127.613963,23.7086746 126.841877,25.727976 C126.069791,27.7472774 125.03046,29.6032252 123.723854,31.2958749 C122.417247,32.9885247 120.932489,34.5475208 119.269534,35.97291 C117.60658,37.3982993 115.884261,38.7345816 114.102524,39.9817972 C112.320788,41.2290128 110.539078,42.4168194 108.757341,43.5452525 C106.975605,44.6736857 105.327523,45.8021019 103.813047,46.9305351 C102.298571,48.0589682 100.977136,49.2319272 99.8487031,50.4494472 C98.7202699,51.6669672 97.9481956,52.9587068 97.5324571,54.3247048 L127.910914,54.3247048 L127.910914,63.4115159 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/tag-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/tag-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-tag-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M18.1643182,47.6600756 L18.1677196,51.7651887 C18.1708869,55.5878829 20.3581578,60.8623899 23.0531352,63.5573673 L84.9021823,125.406414 C87.5996731,128.103905 91.971139,128.096834 94.6717387,125.396234 L125.766905,94.3010679 C128.473612,91.5943612 128.472063,87.2264889 125.777085,84.5315115 L63.9280381,22.6824644 C61.2305472,19.9849735 55.9517395,17.801995 52.1318769,17.8010313 L25.0560441,17.7942007 C21.2311475,17.7932358 18.1421354,20.8872832 18.1452985,24.7049463 L18.1535504,34.6641936 C18.2481119,34.6754562 18.3439134,34.6864294 18.4409623,34.6971263 C22.1702157,35.1081705 26.9295004,34.6530132 31.806204,33.5444844 C32.1342781,33.0700515 32.5094815,32.6184036 32.9318197,32.1960654 C35.6385117,29.4893734 39.5490441,28.718649 42.94592,29.8824694 C43.0432142,29.8394357 43.1402334,29.7961748 43.2369683,29.7526887 L43.3646982,30.0368244 C44.566601,30.5115916 45.6933052,31.2351533 46.6655958,32.2074439 C50.4612154,36.0030635 50.4663097,42.1518845 46.6769742,45.94122 C43.0594074,49.5587868 37.2914155,49.7181264 33.4734256,46.422636 C28.1082519,47.5454734 22.7987486,48.0186448 18.1643182,47.6600756 Z\&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M47.6333528,39.5324628 L47.6562932,39.5834939 C37.9670934,43.9391617 26.0718874,46.3819521 17.260095,45.4107025 C5.27267473,44.0894301 -1.02778744,36.4307276 2.44271359,24.0779512 C5.56175386,12.9761516 14.3014034,4.36129832 24.0466405,1.54817001 C34.7269254,-1.53487574 43.7955833,3.51606438 43.7955834,14.7730751 L35.1728168,14.7730752 C35.1728167,9.91428944 32.0946059,8.19982862 26.4381034,9.83267419 C19.5270911,11.8276553 13.046247,18.2159574 10.7440788,26.4102121 C8.82861123,33.2280582 11.161186,36.0634845 18.2047888,36.8398415 C25.3302805,37.6252244 35.7353482,35.4884477 44.1208333,31.7188498 L44.1475077,31.7781871 C44.159701,31.7725635 44.1718402,31.7671479 44.1839238,31.7619434 C45.9448098,31.0035157 50.4503245,38.3109156 47.7081571,39.5012767 C47.6834429,39.512005 47.6585061,39.5223987 47.6333528,39.5324628 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/theme-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/theme-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-theme-button tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M55.854113,66.9453198 C54.3299482,65.1432292 53.0133883,63.518995 51.9542746,62.1263761 C40.8899947,47.578055 35.3091807,55.2383404 28.9941893,62.1263758 C22.6791979,69.0144112 30.6577916,74.5954741 24.6646171,79.4611023 C18.6714426,84.3267304 19.0414417,86.0133155 8.92654943,77.1119468 C-1.18834284,68.2105781 -1.88793412,65.7597832 2.7553553,60.6807286 C7.39864472,55.601674 11.2794845,63.5989423 20.7646627,54.5728325 C30.2498409,45.5467226 22.2819131,37.5470737 22.2819131,37.5470737 C22.2819131,37.5470737 42.0310399,-2.82433362 68.4206088,0.157393922 C94.8101776,3.13912147 58.4373806,-3.70356506 49.3898693,27.958066 C45.5161782,41.5139906 50.1107906,38.3197672 57.4560458,44.0453955 C59.1625767,45.3756367 63.8839488,48.777453 70.127165,53.3625321 C63.9980513,59.2416709 58.9704753,64.0315459 55.854113,66.9453198 Z M67.4952439,79.8919946 C83.5082212,96.9282402 105.237121,117.617674 112.611591,120.312493 C123.044132,124.12481 128.000001,117.170903 128,105.522947 C127.999999,98.3705516 104.170675,78.980486 84.0760493,63.7529565 C76.6683337,70.9090328 70.7000957,76.7055226 67.4952439,79.8919946 Z\&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M58.2852966,138.232794 L58.2852966,88.3943645 C56.318874,88.3923153 54.7254089,86.7952906 54.7254089,84.8344788 C54.7254089,82.8684071 56.3175932,81.2745911 58.2890859,81.2745911 L79.6408336,81.2745911 C81.608998,81.2745911 83.2045105,82.8724076 83.2045105,84.8344788 C83.2045105,86.7992907 81.614366,88.3923238 79.6446228,88.3943645 L79.6446228,88.3943646 L79.6446228,138.232794 C79.6446228,144.131009 74.8631748,148.912457 68.9649597,148.912457 C63.0667446,148.912457 58.2852966,144.131009 58.2852966,138.232794 Z M65.405072,-14.8423767 L72.5248474,-14.8423767 L76.0847351,-0.690681892 L72.5248474,6.51694947 L72.5248474,81.2745911 L65.405072,81.2745911 L65.405072,6.51694947 L61.8451843,-0.690681892 L65.405072,-14.8423767 Z\&quot; transform=\&quot;translate(68.964960, 67.035040) rotate(45.000000) translate(-68.964960, -67.035040) \&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/tip&quot;: {
            &quot;title&quot;: &quot;$:/core/images/tip&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-tip tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M64,128.241818 C99.346224,128.241818 128,99.5880417 128,64.2418177 C128,28.8955937 99.346224,0.241817675 64,0.241817675 C28.653776,0.241817675 0,28.8955937 0,64.2418177 C0,99.5880417 28.653776,128.241818 64,128.241818 Z M75.9358659,91.4531941 C75.3115438,95.581915 70.2059206,98.8016748 64,98.8016748 C57.7940794,98.8016748 52.6884562,95.581915 52.0641341,91.4531941 C54.3299053,94.0502127 58.8248941,95.8192805 64,95.8192805 C69.1751059,95.8192805 73.6700947,94.0502127 75.9358659,91.4531941 L75.9358659,91.4531941 Z M75.9358659,95.9453413 C75.3115438,100.074062 70.2059206,103.293822 64,103.293822 C57.7940794,103.293822 52.6884562,100.074062 52.0641341,95.9453413 C54.3299053,98.5423599 58.8248941,100.311428 64,100.311428 C69.1751059,100.311428 73.6700947,98.5423599 75.9358659,95.9453413 L75.9358659,95.9453413 Z M75.9358659,100.40119 C75.3115438,104.529911 70.2059206,107.74967 64,107.74967 C57.7940794,107.74967 52.6884562,104.529911 52.0641341,100.40119 C54.3299053,102.998208 58.8248941,104.767276 64,104.767276 C69.1751059,104.767276 73.6700947,102.998208 75.9358659,100.40119 L75.9358659,100.40119 Z M75.9358659,104.893337 C75.3115438,109.022058 70.2059206,112.241818 64,112.241818 C57.7940794,112.241818 52.6884562,109.022058 52.0641341,104.893337 C54.3299053,107.490356 58.8248941,109.259423 64,109.259423 C69.1751059,109.259423 73.6700947,107.490356 75.9358659,104.893337 L75.9358659,104.893337 Z M64.3010456,24.2418177 C75.9193117,24.2418188 88.0000013,32.0619847 88,48.4419659 C87.9999987,64.8219472 75.9193018,71.7540963 75.9193021,83.5755932 C75.9193022,89.4486648 70.0521957,92.8368862 63.9999994,92.8368862 C57.947803,92.8368862 51.9731007,89.8295115 51.9731007,83.5755932 C51.9731007,71.1469799 39.9999998,65.4700602 40,48.4419647 C40.0000002,31.4138691 52.6827796,24.2418166 64.3010456,24.2418177 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/twitter&quot;: {
            &quot;title&quot;: &quot;$:/core/images/twitter&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-twitter tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M41.6263422,115.803477 C27.0279663,115.803477 13.4398394,111.540813 1.99987456,104.234833 C4.02221627,104.472643 6.08004574,104.594302 8.16644978,104.594302 C20.277456,104.594302 31.4238403,100.47763 40.270894,93.5715185 C28.9590538,93.3635501 19.4123842,85.9189246 16.1230832,75.6885328 C17.7011365,75.9892376 19.320669,76.1503787 20.9862896,76.1503787 C23.344152,76.1503787 25.6278127,75.8359011 27.7971751,75.247346 C15.9709927,72.8821073 7.06079851,62.4745062 7.06079851,49.9982394 C7.06079851,49.8898938 7.06079851,49.7820074 7.06264203,49.67458 C10.5482779,51.6032228 14.5339687,52.7615103 18.7717609,52.8951059 C11.8355159,48.277565 7.2714207,40.3958845 7.2714207,31.4624258 C7.2714207,26.7434257 8.54621495,22.3200804 10.7713439,18.5169676 C23.5211299,34.0957738 42.568842,44.3472839 64.0532269,45.4210985 C63.6126256,43.5365285 63.3835682,41.5711584 63.3835682,39.5529928 C63.3835682,25.3326379 74.95811,13.8034766 89.2347917,13.8034766 C96.6697089,13.8034766 103.387958,16.930807 108.103682,21.9353619 C113.991886,20.780288 119.52429,18.6372496 124.518847,15.6866694 C122.588682,21.6993889 118.490075,26.7457211 113.152623,29.9327334 C118.381769,29.3102055 123.363882,27.926045 127.999875,25.8780385 C124.534056,31.0418981 120.151087,35.5772616 115.100763,39.2077561 C115.150538,40.3118708 115.175426,41.4224128 115.175426,42.538923 C115.175426,76.5663154 89.1744164,115.803477 41.6263422,115.803477\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;\n&quot;
        },
        &quot;$:/core/images/underline&quot;: {
            &quot;title&quot;: &quot;$:/core/images/underline&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-underline tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M7,117.421488 L121.247934,117.421488 L121.247934,128 L7,128 L7,117.421488 Z M104.871212,98.8958333 L104.871212,0 L88.6117424,0 L88.6117424,55.8560606 C88.6117424,60.3194668 88.0060035,64.432115 86.7945076,68.1941288 C85.5830116,71.9561425 83.7657949,75.239885 81.342803,78.0454545 C78.9198111,80.8510241 75.8911167,83.0189317 72.2566288,84.5492424 C68.6221409,86.0795531 64.3182067,86.844697 59.344697,86.844697 C53.0959284,86.844697 48.1862552,85.0593613 44.6155303,81.4886364 C41.0448054,77.9179114 39.2594697,73.0720003 39.2594697,66.9507576 L39.2594697,0 L23,0 L23,65.0378788 C23,70.3939662 23.5419769,75.2717583 24.625947,79.6714015 C25.709917,84.0710447 27.5908957,87.864883 30.2689394,91.0530303 C32.9469831,94.2411776 36.4538925,96.6960141 40.7897727,98.4176136 C45.125653,100.139213 50.545422,101 57.0492424,101 C64.3182182,101 70.630655,99.5653553 75.9867424,96.6960227 C81.3428298,93.8266902 85.742407,89.33147 89.1856061,83.2102273 L89.5681818,83.2102273 L89.5681818,98.8958333 L104.871212,98.8958333 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/unfold-all-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/unfold-all-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-unfold-all tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;rect x=\&quot;0\&quot; y=\&quot;0\&quot; width=\&quot;128\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;rect x=\&quot;0\&quot; y=\&quot;64\&quot; width=\&quot;128\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;path d=\&quot;M85.598226,8.34884273 C84.1490432,6.89863875 82.1463102,6 79.9340286,6 L47.9482224,6 C43.5292967,6 39.9411255,9.581722 39.9411255,14 C39.9411255,18.4092877 43.5260249,22 47.9482224,22 L71.9411255,22 L71.9411255,45.9929031 C71.9411255,50.4118288 75.5228475,54 79.9411255,54 C84.3504132,54 87.9411255,50.4151006 87.9411255,45.9929031 L87.9411255,14.0070969 C87.9411255,11.7964515 87.0447363,9.79371715 85.5956548,8.34412458 Z\&quot; transform=\&quot;translate(63.941125, 30.000000) scale(1, -1) rotate(-45.000000) translate(-63.941125, -30.000000) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M85.6571005,72.2899682 C84.2079177,70.8397642 82.2051847,69.9411255 79.9929031,69.9411255 L48.0070969,69.9411255 C43.5881712,69.9411255 40,73.5228475 40,77.9411255 C40,82.3504132 43.5848994,85.9411255 48.0070969,85.9411255 L72,85.9411255 L72,109.934029 C72,114.352954 75.581722,117.941125 80,117.941125 C84.4092877,117.941125 88,114.356226 88,109.934029 L88,77.9482224 C88,75.737577 87.1036108,73.7348426 85.6545293,72.2852501 Z\&quot; transform=\&quot;translate(64.000000, 93.941125) scale(1, -1) rotate(-45.000000) translate(-64.000000, -93.941125) \&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/unfold-button&quot;: {
            &quot;title&quot;: &quot;$:/core/images/unfold-button&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-unfold tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;rect x=\&quot;0\&quot; y=\&quot;0\&quot; width=\&quot;128\&quot; height=\&quot;16\&quot; rx=\&quot;8\&quot;&gt;&lt;/rect&gt;\n        &lt;path d=\&quot;M85.598226,11.3488427 C84.1490432,9.89863875 82.1463102,9 79.9340286,9 L47.9482224,9 C43.5292967,9 39.9411255,12.581722 39.9411255,17 C39.9411255,21.4092877 43.5260249,25 47.9482224,25 L71.9411255,25 L71.9411255,48.9929031 C71.9411255,53.4118288 75.5228475,57 79.9411255,57 C84.3504132,57 87.9411255,53.4151006 87.9411255,48.9929031 L87.9411255,17.0070969 C87.9411255,14.7964515 87.0447363,12.7937171 85.5956548,11.3441246 Z\&quot; transform=\&quot;translate(63.941125, 33.000000) scale(1, -1) rotate(-45.000000) translate(-63.941125, -33.000000) \&quot;&gt;&lt;/path&gt;\n        &lt;path d=\&quot;M85.6571005,53.4077172 C84.2079177,51.9575133 82.2051847,51.0588745 79.9929031,51.0588745 L48.0070969,51.0588745 C43.5881712,51.0588745 40,54.6405965 40,59.0588745 C40,63.4681622 43.5848994,67.0588745 48.0070969,67.0588745 L72,67.0588745 L72,91.0517776 C72,95.4707033 75.581722,99.0588745 80,99.0588745 C84.4092877,99.0588745 88,95.4739751 88,91.0517776 L88,59.0659714 C88,56.855326 87.1036108,54.8525917 85.6545293,53.4029991 Z\&quot; transform=\&quot;translate(64.000000, 75.058875) scale(1, -1) rotate(-45.000000) translate(-64.000000, -75.058875) \&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/unlocked-padlock&quot;: {
            &quot;title&quot;: &quot;$:/core/images/unlocked-padlock&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-unlocked-padlock tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M48.6266053,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L30.136303,64 C19.6806213,51.3490406 2.77158986,28.2115132 25.8366966,8.85759246 C50.4723026,-11.8141335 71.6711028,13.2108337 81.613302,25.0594855 C91.5555012,36.9081373 78.9368488,47.4964439 69.1559674,34.9513593 C59.375086,22.4062748 47.9893192,10.8049522 35.9485154,20.9083862 C23.9077117,31.0118202 34.192312,43.2685325 44.7624679,55.8655518 C47.229397,58.805523 48.403443,61.5979188 48.6266053,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/up-arrow&quot;: {
            &quot;created&quot;: &quot;20150316000544368&quot;,
            &quot;modified&quot;: &quot;20150316000831867&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;title&quot;: &quot;$:/core/images/up-arrow&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-up-arrow tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n&lt;path transform=\&quot;rotate(-135, 63.8945, 64.1752)\&quot; d=\&quot;m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25074c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056l0.00001,-0.00001z\&quot; /&gt;\n&lt;/svg&gt;\n \n&quot;
        },
        &quot;$:/core/images/video&quot;: {
            &quot;title&quot;: &quot;$:/core/images/video&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-video tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M64,12 C29.0909091,12 8.72727273,14.9166667 5.81818182,17.8333333 C2.90909091,20.75 1.93784382e-15,41.1666667 0,64.5 C1.93784382e-15,87.8333333 2.90909091,108.25 5.81818182,111.166667 C8.72727273,114.083333 29.0909091,117 64,117 C98.9090909,117 119.272727,114.083333 122.181818,111.166667 C125.090909,108.25 128,87.8333333 128,64.5 C128,41.1666667 125.090909,20.75 122.181818,17.8333333 C119.272727,14.9166667 98.9090909,12 64,12 Z M54.9161194,44.6182253 C51.102648,42.0759111 48.0112186,43.7391738 48.0112186,48.3159447 L48.0112186,79.6840553 C48.0112186,84.2685636 51.109784,85.9193316 54.9161194,83.3817747 L77.0838806,68.6032672 C80.897352,66.0609529 80.890216,61.9342897 77.0838806,59.3967328 L54.9161194,44.6182253 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/core/images/warning&quot;: {
            &quot;title&quot;: &quot;$:/core/images/warning&quot;,
            &quot;tags&quot;: &quot;$:/tags/Image&quot;,
            &quot;text&quot;: &quot;&lt;svg class=\&quot;tc-image-warning tc-image-button\&quot; width=\&quot;22pt\&quot; height=\&quot;22pt\&quot; viewBox=\&quot;0 0 128 128\&quot;&gt;\n    &lt;g fill-rule=\&quot;evenodd\&quot;&gt;\n        &lt;path d=\&quot;M57.0717968,11 C60.1509982,5.66666667 67.8490018,5.66666667 70.9282032,11 L126.353829,107 C129.433031,112.333333 125.584029,119 119.425626,119 L8.57437416,119 C2.41597129,119 -1.43303051,112.333333 1.64617093,107 L57.0717968,11 Z M64,37 C59.581722,37 56,40.5820489 56,44.9935776 L56,73.0064224 C56,77.4211534 59.5907123,81 64,81 C68.418278,81 72,77.4179511 72,73.0064224 L72,44.9935776 C72,40.5788466 68.4092877,37 64,37 Z M64,104 C68.418278,104 72,100.418278 72,96 C72,91.581722 68.418278,88 64,88 C59.581722,88 56,91.581722 56,96 C56,100.418278 59.581722,104 64,104 Z\&quot;&gt;&lt;/path&gt;\n    &lt;/g&gt;\n&lt;/svg&gt;&quot;
        },
        &quot;$:/language/Buttons/AdvancedSearch/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/AdvancedSearch/Caption&quot;,
            &quot;text&quot;: &quot;advanced search&quot;
        },
        &quot;$:/language/Buttons/AdvancedSearch/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/AdvancedSearch/Hint&quot;,
            &quot;text&quot;: &quot;Advanced search&quot;
        },
        &quot;$:/language/Buttons/Cancel/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Cancel/Caption&quot;,
            &quot;text&quot;: &quot;cancel&quot;
        },
        &quot;$:/language/Buttons/Cancel/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Cancel/Hint&quot;,
            &quot;text&quot;: &quot;Discard changes to this tiddler&quot;
        },
        &quot;$:/language/Buttons/Clone/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Clone/Caption&quot;,
            &quot;text&quot;: &quot;clone&quot;
        },
        &quot;$:/language/Buttons/Clone/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Clone/Hint&quot;,
            &quot;text&quot;: &quot;Clone this tiddler&quot;
        },
        &quot;$:/language/Buttons/Close/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Close/Caption&quot;,
            &quot;text&quot;: &quot;close&quot;
        },
        &quot;$:/language/Buttons/Close/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Close/Hint&quot;,
            &quot;text&quot;: &quot;Close this tiddler&quot;
        },
        &quot;$:/language/Buttons/CloseAll/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/CloseAll/Caption&quot;,
            &quot;text&quot;: &quot;close all&quot;
        },
        &quot;$:/language/Buttons/CloseAll/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/CloseAll/Hint&quot;,
            &quot;text&quot;: &quot;Close all tiddlers&quot;
        },
        &quot;$:/language/Buttons/CloseOthers/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/CloseOthers/Caption&quot;,
            &quot;text&quot;: &quot;close others&quot;
        },
        &quot;$:/language/Buttons/CloseOthers/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/CloseOthers/Hint&quot;,
            &quot;text&quot;: &quot;Close other tiddlers&quot;
        },
        &quot;$:/language/Buttons/ControlPanel/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ControlPanel/Caption&quot;,
            &quot;text&quot;: &quot;control panel&quot;
        },
        &quot;$:/language/Buttons/ControlPanel/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ControlPanel/Hint&quot;,
            &quot;text&quot;: &quot;Open control panel&quot;
        },
        &quot;$:/language/Buttons/Delete/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Delete/Caption&quot;,
            &quot;text&quot;: &quot;delete&quot;
        },
        &quot;$:/language/Buttons/Delete/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Delete/Hint&quot;,
            &quot;text&quot;: &quot;Delete this tiddler&quot;
        },
        &quot;$:/language/Buttons/Edit/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Edit/Caption&quot;,
            &quot;text&quot;: &quot;edit&quot;
        },
        &quot;$:/language/Buttons/Edit/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Edit/Hint&quot;,
            &quot;text&quot;: &quot;Edit this tiddler&quot;
        },
        &quot;$:/language/Buttons/Encryption/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Encryption/Caption&quot;,
            &quot;text&quot;: &quot;encryption&quot;
        },
        &quot;$:/language/Buttons/Encryption/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Encryption/Hint&quot;,
            &quot;text&quot;: &quot;Set or clear a password for saving this wiki&quot;
        },
        &quot;$:/language/Buttons/Encryption/ClearPassword/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Encryption/ClearPassword/Caption&quot;,
            &quot;text&quot;: &quot;clear password&quot;
        },
        &quot;$:/language/Buttons/Encryption/ClearPassword/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Encryption/ClearPassword/Hint&quot;,
            &quot;text&quot;: &quot;Clear the password and save this wiki without encryption&quot;
        },
        &quot;$:/language/Buttons/Encryption/SetPassword/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Encryption/SetPassword/Caption&quot;,
            &quot;text&quot;: &quot;set password&quot;
        },
        &quot;$:/language/Buttons/Encryption/SetPassword/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Encryption/SetPassword/Hint&quot;,
            &quot;text&quot;: &quot;Set a password for saving this wiki with encryption&quot;
        },
        &quot;$:/language/Buttons/ExportPage/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ExportPage/Caption&quot;,
            &quot;text&quot;: &quot;export all&quot;
        },
        &quot;$:/language/Buttons/ExportPage/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ExportPage/Hint&quot;,
            &quot;text&quot;: &quot;Export all tiddlers&quot;
        },
        &quot;$:/language/Buttons/ExportTiddler/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ExportTiddler/Caption&quot;,
            &quot;text&quot;: &quot;export tiddler&quot;
        },
        &quot;$:/language/Buttons/ExportTiddler/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ExportTiddler/Hint&quot;,
            &quot;text&quot;: &quot;Export tiddler&quot;
        },
        &quot;$:/language/Buttons/ExportTiddlers/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ExportTiddlers/Caption&quot;,
            &quot;text&quot;: &quot;export tiddlers&quot;
        },
        &quot;$:/language/Buttons/ExportTiddlers/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ExportTiddlers/Hint&quot;,
            &quot;text&quot;: &quot;Export tiddlers&quot;
        },
        &quot;$:/language/Buttons/Fold/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Fold/Caption&quot;,
            &quot;text&quot;: &quot;fold tiddler&quot;
        },
        &quot;$:/language/Buttons/Fold/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Fold/Hint&quot;,
            &quot;text&quot;: &quot;Fold the body of this tiddler&quot;
        },
        &quot;$:/language/Buttons/Fold/FoldBar/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Fold/FoldBar/Caption&quot;,
            &quot;text&quot;: &quot;fold-bar&quot;
        },
        &quot;$:/language/Buttons/Fold/FoldBar/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Fold/FoldBar/Hint&quot;,
            &quot;text&quot;: &quot;Optional bars to fold and unfold tiddlers&quot;
        },
        &quot;$:/language/Buttons/Unfold/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Unfold/Caption&quot;,
            &quot;text&quot;: &quot;unfold tiddler&quot;
        },
        &quot;$:/language/Buttons/Unfold/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Unfold/Hint&quot;,
            &quot;text&quot;: &quot;Unfold the body of this tiddler&quot;
        },
        &quot;$:/language/Buttons/FoldOthers/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/FoldOthers/Caption&quot;,
            &quot;text&quot;: &quot;fold other tiddlers&quot;
        },
        &quot;$:/language/Buttons/FoldOthers/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/FoldOthers/Hint&quot;,
            &quot;text&quot;: &quot;Fold the bodies of other opened tiddlers&quot;
        },
        &quot;$:/language/Buttons/FoldAll/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/FoldAll/Caption&quot;,
            &quot;text&quot;: &quot;fold all tiddlers&quot;
        },
        &quot;$:/language/Buttons/FoldAll/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/FoldAll/Hint&quot;,
            &quot;text&quot;: &quot;Fold the bodies of all opened tiddlers&quot;
        },
        &quot;$:/language/Buttons/UnfoldAll/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/UnfoldAll/Caption&quot;,
            &quot;text&quot;: &quot;unfold all tiddlers&quot;
        },
        &quot;$:/language/Buttons/UnfoldAll/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/UnfoldAll/Hint&quot;,
            &quot;text&quot;: &quot;Unfold the bodies of all opened tiddlers&quot;
        },
        &quot;$:/language/Buttons/FullScreen/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/FullScreen/Caption&quot;,
            &quot;text&quot;: &quot;full-screen&quot;
        },
        &quot;$:/language/Buttons/FullScreen/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/FullScreen/Hint&quot;,
            &quot;text&quot;: &quot;Enter or leave full-screen mode&quot;
        },
        &quot;$:/language/Buttons/Help/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Help/Caption&quot;,
            &quot;text&quot;: &quot;help&quot;
        },
        &quot;$:/language/Buttons/Help/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Help/Hint&quot;,
            &quot;text&quot;: &quot;Show help panel&quot;
        },
        &quot;$:/language/Buttons/Import/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Import/Caption&quot;,
            &quot;text&quot;: &quot;import&quot;
        },
        &quot;$:/language/Buttons/Import/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Import/Hint&quot;,
            &quot;text&quot;: &quot;Import many types of file including text, image, TiddlyWiki or JSON&quot;
        },
        &quot;$:/language/Buttons/Info/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Info/Caption&quot;,
            &quot;text&quot;: &quot;info&quot;
        },
        &quot;$:/language/Buttons/Info/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Info/Hint&quot;,
            &quot;text&quot;: &quot;Show information for this tiddler&quot;
        },
        &quot;$:/language/Buttons/Home/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Home/Caption&quot;,
            &quot;text&quot;: &quot;home&quot;
        },
        &quot;$:/language/Buttons/Home/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Home/Hint&quot;,
            &quot;text&quot;: &quot;Open the default tiddlers&quot;
        },
        &quot;$:/language/Buttons/Language/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Language/Caption&quot;,
            &quot;text&quot;: &quot;language&quot;
        },
        &quot;$:/language/Buttons/Language/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Language/Hint&quot;,
            &quot;text&quot;: &quot;Choose the user interface language&quot;
        },
        &quot;$:/language/Buttons/More/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/More/Caption&quot;,
            &quot;text&quot;: &quot;more&quot;
        },
        &quot;$:/language/Buttons/More/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/More/Hint&quot;,
            &quot;text&quot;: &quot;More actions&quot;
        },
        &quot;$:/language/Buttons/NewHere/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/NewHere/Caption&quot;,
            &quot;text&quot;: &quot;new here&quot;
        },
        &quot;$:/language/Buttons/NewHere/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/NewHere/Hint&quot;,
            &quot;text&quot;: &quot;Create a new tiddler tagged with this one&quot;
        },
        &quot;$:/language/Buttons/NewJournal/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/NewJournal/Caption&quot;,
            &quot;text&quot;: &quot;new journal&quot;
        },
        &quot;$:/language/Buttons/NewJournal/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/NewJournal/Hint&quot;,
            &quot;text&quot;: &quot;Create a new journal tiddler&quot;
        },
        &quot;$:/language/Buttons/NewJournalHere/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/NewJournalHere/Caption&quot;,
            &quot;text&quot;: &quot;new journal here&quot;
        },
        &quot;$:/language/Buttons/NewJournalHere/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/NewJournalHere/Hint&quot;,
            &quot;text&quot;: &quot;Create a new journal tiddler tagged with this one&quot;
        },
        &quot;$:/language/Buttons/NewImage/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/NewImage/Caption&quot;,
            &quot;text&quot;: &quot;new image&quot;
        },
        &quot;$:/language/Buttons/NewImage/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/NewImage/Hint&quot;,
            &quot;text&quot;: &quot;Create a new image tiddler&quot;
        },
        &quot;$:/language/Buttons/NewMarkdown/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/NewMarkdown/Caption&quot;,
            &quot;text&quot;: &quot;new Markdown tiddler&quot;
        },
        &quot;$:/language/Buttons/NewMarkdown/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/NewMarkdown/Hint&quot;,
            &quot;text&quot;: &quot;Create a new Markdown tiddler&quot;
        },
        &quot;$:/language/Buttons/NewTiddler/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/NewTiddler/Caption&quot;,
            &quot;text&quot;: &quot;new tiddler&quot;
        },
        &quot;$:/language/Buttons/NewTiddler/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/NewTiddler/Hint&quot;,
            &quot;text&quot;: &quot;Create a new tiddler&quot;
        },
        &quot;$:/language/Buttons/OpenWindow/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/OpenWindow/Caption&quot;,
            &quot;text&quot;: &quot;open in new window&quot;
        },
        &quot;$:/language/Buttons/OpenWindow/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/OpenWindow/Hint&quot;,
            &quot;text&quot;: &quot;Open tiddler in new window&quot;
        },
        &quot;$:/language/Buttons/Palette/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Palette/Caption&quot;,
            &quot;text&quot;: &quot;palette&quot;
        },
        &quot;$:/language/Buttons/Palette/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Palette/Hint&quot;,
            &quot;text&quot;: &quot;Choose the colour palette&quot;
        },
        &quot;$:/language/Buttons/Permalink/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Permalink/Caption&quot;,
            &quot;text&quot;: &quot;permalink&quot;
        },
        &quot;$:/language/Buttons/Permalink/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Permalink/Hint&quot;,
            &quot;text&quot;: &quot;Set browser address bar to a direct link to this tiddler&quot;
        },
        &quot;$:/language/Buttons/Permaview/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Permaview/Caption&quot;,
            &quot;text&quot;: &quot;permaview&quot;
        },
        &quot;$:/language/Buttons/Permaview/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Permaview/Hint&quot;,
            &quot;text&quot;: &quot;Set browser address bar to a direct link to all the tiddlers in this story&quot;
        },
        &quot;$:/language/Buttons/Refresh/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Refresh/Caption&quot;,
            &quot;text&quot;: &quot;refresh&quot;
        },
        &quot;$:/language/Buttons/Refresh/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Refresh/Hint&quot;,
            &quot;text&quot;: &quot;Perform a full refresh of the wiki&quot;
        },
        &quot;$:/language/Buttons/Save/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Save/Caption&quot;,
            &quot;text&quot;: &quot;ok&quot;
        },
        &quot;$:/language/Buttons/Save/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Save/Hint&quot;,
            &quot;text&quot;: &quot;Confirm changes to this tiddler&quot;
        },
        &quot;$:/language/Buttons/SaveWiki/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/SaveWiki/Caption&quot;,
            &quot;text&quot;: &quot;save changes&quot;
        },
        &quot;$:/language/Buttons/SaveWiki/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/SaveWiki/Hint&quot;,
            &quot;text&quot;: &quot;Save changes&quot;
        },
        &quot;$:/language/Buttons/StoryView/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/StoryView/Caption&quot;,
            &quot;text&quot;: &quot;storyview&quot;
        },
        &quot;$:/language/Buttons/StoryView/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/StoryView/Hint&quot;,
            &quot;text&quot;: &quot;Choose the story visualisation&quot;
        },
        &quot;$:/language/Buttons/HideSideBar/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/HideSideBar/Caption&quot;,
            &quot;text&quot;: &quot;hide sidebar&quot;
        },
        &quot;$:/language/Buttons/HideSideBar/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/HideSideBar/Hint&quot;,
            &quot;text&quot;: &quot;Hide sidebar&quot;
        },
        &quot;$:/language/Buttons/ShowSideBar/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ShowSideBar/Caption&quot;,
            &quot;text&quot;: &quot;show sidebar&quot;
        },
        &quot;$:/language/Buttons/ShowSideBar/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ShowSideBar/Hint&quot;,
            &quot;text&quot;: &quot;Show sidebar&quot;
        },
        &quot;$:/language/Buttons/TagManager/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/TagManager/Caption&quot;,
            &quot;text&quot;: &quot;tag manager&quot;
        },
        &quot;$:/language/Buttons/TagManager/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/TagManager/Hint&quot;,
            &quot;text&quot;: &quot;Open tag manager&quot;
        },
        &quot;$:/language/Buttons/Theme/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Theme/Caption&quot;,
            &quot;text&quot;: &quot;theme&quot;
        },
        &quot;$:/language/Buttons/Theme/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Theme/Hint&quot;,
            &quot;text&quot;: &quot;Choose the display theme&quot;
        },
        &quot;$:/language/Buttons/Bold/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Bold/Caption&quot;,
            &quot;text&quot;: &quot;bold&quot;
        },
        &quot;$:/language/Buttons/Bold/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Bold/Hint&quot;,
            &quot;text&quot;: &quot;Apply bold formatting to selection&quot;
        },
        &quot;$:/language/Buttons/Clear/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Clear/Caption&quot;,
            &quot;text&quot;: &quot;clear&quot;
        },
        &quot;$:/language/Buttons/Clear/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Clear/Hint&quot;,
            &quot;text&quot;: &quot;Clear image to solid colour&quot;
        },
        &quot;$:/language/Buttons/EditorHeight/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/EditorHeight/Caption&quot;,
            &quot;text&quot;: &quot;editor height&quot;
        },
        &quot;$:/language/Buttons/EditorHeight/Caption/Auto&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/EditorHeight/Caption/Auto&quot;,
            &quot;text&quot;: &quot;Automatically adjust height to fit content&quot;
        },
        &quot;$:/language/Buttons/EditorHeight/Caption/Fixed&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/EditorHeight/Caption/Fixed&quot;,
            &quot;text&quot;: &quot;Fixed height:&quot;
        },
        &quot;$:/language/Buttons/EditorHeight/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/EditorHeight/Hint&quot;,
            &quot;text&quot;: &quot;Choose the height of the text editor&quot;
        },
        &quot;$:/language/Buttons/Excise/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Excise/Caption&quot;,
            &quot;text&quot;: &quot;excise&quot;
        },
        &quot;$:/language/Buttons/Excise/Caption/Excise&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Excise/Caption/Excise&quot;,
            &quot;text&quot;: &quot;Perform excision&quot;
        },
        &quot;$:/language/Buttons/Excise/Caption/MacroName&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Excise/Caption/MacroName&quot;,
            &quot;text&quot;: &quot;Macro name:&quot;
        },
        &quot;$:/language/Buttons/Excise/Caption/NewTitle&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Excise/Caption/NewTitle&quot;,
            &quot;text&quot;: &quot;Title of new tiddler:&quot;
        },
        &quot;$:/language/Buttons/Excise/Caption/Replace&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Excise/Caption/Replace&quot;,
            &quot;text&quot;: &quot;Replace excised text with:&quot;
        },
        &quot;$:/language/Buttons/Excise/Caption/Replace/Macro&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Excise/Caption/Replace/Macro&quot;,
            &quot;text&quot;: &quot;macro&quot;
        },
        &quot;$:/language/Buttons/Excise/Caption/Replace/Link&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Excise/Caption/Replace/Link&quot;,
            &quot;text&quot;: &quot;link&quot;
        },
        &quot;$:/language/Buttons/Excise/Caption/Replace/Transclusion&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Excise/Caption/Replace/Transclusion&quot;,
            &quot;text&quot;: &quot;transclusion&quot;
        },
        &quot;$:/language/Buttons/Excise/Caption/Tag&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Excise/Caption/Tag&quot;,
            &quot;text&quot;: &quot;Tag new tiddler with the title of this tiddler&quot;
        },
        &quot;$:/language/Buttons/Excise/Caption/TiddlerExists&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Excise/Caption/TiddlerExists&quot;,
            &quot;text&quot;: &quot;Warning: tiddler already exists&quot;
        },
        &quot;$:/language/Buttons/Excise/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Excise/Hint&quot;,
            &quot;text&quot;: &quot;Excise the selected text into a new tiddler&quot;
        },
        &quot;$:/language/Buttons/Heading1/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Heading1/Caption&quot;,
            &quot;text&quot;: &quot;heading 1&quot;
        },
        &quot;$:/language/Buttons/Heading1/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Heading1/Hint&quot;,
            &quot;text&quot;: &quot;Apply heading level 1 formatting to lines containing selection&quot;
        },
        &quot;$:/language/Buttons/Heading2/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Heading2/Caption&quot;,
            &quot;text&quot;: &quot;heading 2&quot;
        },
        &quot;$:/language/Buttons/Heading2/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Heading2/Hint&quot;,
            &quot;text&quot;: &quot;Apply heading level 2 formatting to lines containing selection&quot;
        },
        &quot;$:/language/Buttons/Heading3/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Heading3/Caption&quot;,
            &quot;text&quot;: &quot;heading 3&quot;
        },
        &quot;$:/language/Buttons/Heading3/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Heading3/Hint&quot;,
            &quot;text&quot;: &quot;Apply heading level 3 formatting to lines containing selection&quot;
        },
        &quot;$:/language/Buttons/Heading4/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Heading4/Caption&quot;,
            &quot;text&quot;: &quot;heading 4&quot;
        },
        &quot;$:/language/Buttons/Heading4/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Heading4/Hint&quot;,
            &quot;text&quot;: &quot;Apply heading level 4 formatting to lines containing selection&quot;
        },
        &quot;$:/language/Buttons/Heading5/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Heading5/Caption&quot;,
            &quot;text&quot;: &quot;heading 5&quot;
        },
        &quot;$:/language/Buttons/Heading5/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Heading5/Hint&quot;,
            &quot;text&quot;: &quot;Apply heading level 5 formatting to lines containing selection&quot;
        },
        &quot;$:/language/Buttons/Heading6/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Heading6/Caption&quot;,
            &quot;text&quot;: &quot;heading 6&quot;
        },
        &quot;$:/language/Buttons/Heading6/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Heading6/Hint&quot;,
            &quot;text&quot;: &quot;Apply heading level 6 formatting to lines containing selection&quot;
        },
        &quot;$:/language/Buttons/Italic/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Italic/Caption&quot;,
            &quot;text&quot;: &quot;italic&quot;
        },
        &quot;$:/language/Buttons/Italic/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Italic/Hint&quot;,
            &quot;text&quot;: &quot;Apply italic formatting to selection&quot;
        },
        &quot;$:/language/Buttons/LineWidth/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/LineWidth/Caption&quot;,
            &quot;text&quot;: &quot;line width&quot;
        },
        &quot;$:/language/Buttons/LineWidth/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/LineWidth/Hint&quot;,
            &quot;text&quot;: &quot;Set line width for painting&quot;
        },
        &quot;$:/language/Buttons/Link/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Link/Caption&quot;,
            &quot;text&quot;: &quot;link&quot;
        },
        &quot;$:/language/Buttons/Link/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Link/Hint&quot;,
            &quot;text&quot;: &quot;Create wikitext link&quot;
        },
        &quot;$:/language/Buttons/ListBullet/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ListBullet/Caption&quot;,
            &quot;text&quot;: &quot;bulleted list&quot;
        },
        &quot;$:/language/Buttons/ListBullet/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ListBullet/Hint&quot;,
            &quot;text&quot;: &quot;Apply bulleted list formatting to lines containing selection&quot;
        },
        &quot;$:/language/Buttons/ListNumber/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ListNumber/Caption&quot;,
            &quot;text&quot;: &quot;numbered list&quot;
        },
        &quot;$:/language/Buttons/ListNumber/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/ListNumber/Hint&quot;,
            &quot;text&quot;: &quot;Apply numbered list formatting to lines containing selection&quot;
        },
        &quot;$:/language/Buttons/MonoBlock/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/MonoBlock/Caption&quot;,
            &quot;text&quot;: &quot;monospaced block&quot;
        },
        &quot;$:/language/Buttons/MonoBlock/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/MonoBlock/Hint&quot;,
            &quot;text&quot;: &quot;Apply monospaced block formatting to lines containing selection&quot;
        },
        &quot;$:/language/Buttons/MonoLine/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/MonoLine/Caption&quot;,
            &quot;text&quot;: &quot;monospaced&quot;
        },
        &quot;$:/language/Buttons/MonoLine/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/MonoLine/Hint&quot;,
            &quot;text&quot;: &quot;Apply monospaced character formatting to selection&quot;
        },
        &quot;$:/language/Buttons/Opacity/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Opacity/Caption&quot;,
            &quot;text&quot;: &quot;opacity&quot;
        },
        &quot;$:/language/Buttons/Opacity/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Opacity/Hint&quot;,
            &quot;text&quot;: &quot;Set painting opacity&quot;
        },
        &quot;$:/language/Buttons/Paint/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Paint/Caption&quot;,
            &quot;text&quot;: &quot;paint colour&quot;
        },
        &quot;$:/language/Buttons/Paint/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Paint/Hint&quot;,
            &quot;text&quot;: &quot;Set painting colour&quot;
        },
        &quot;$:/language/Buttons/Picture/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Picture/Caption&quot;,
            &quot;text&quot;: &quot;picture&quot;
        },
        &quot;$:/language/Buttons/Picture/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Picture/Hint&quot;,
            &quot;text&quot;: &quot;Insert picture&quot;
        },
        &quot;$:/language/Buttons/Preview/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Preview/Caption&quot;,
            &quot;text&quot;: &quot;preview&quot;
        },
        &quot;$:/language/Buttons/Preview/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Preview/Hint&quot;,
            &quot;text&quot;: &quot;Show preview pane&quot;
        },
        &quot;$:/language/Buttons/PreviewType/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/PreviewType/Caption&quot;,
            &quot;text&quot;: &quot;preview type&quot;
        },
        &quot;$:/language/Buttons/PreviewType/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/PreviewType/Hint&quot;,
            &quot;text&quot;: &quot;Choose preview type&quot;
        },
        &quot;$:/language/Buttons/Quote/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Quote/Caption&quot;,
            &quot;text&quot;: &quot;quote&quot;
        },
        &quot;$:/language/Buttons/Quote/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Quote/Hint&quot;,
            &quot;text&quot;: &quot;Apply quoted text formatting to lines containing selection&quot;
        },
        &quot;$:/language/Buttons/Size/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Size/Caption&quot;,
            &quot;text&quot;: &quot;image size&quot;
        },
        &quot;$:/language/Buttons/Size/Caption/Height&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Size/Caption/Height&quot;,
            &quot;text&quot;: &quot;Height:&quot;
        },
        &quot;$:/language/Buttons/Size/Caption/Resize&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Size/Caption/Resize&quot;,
            &quot;text&quot;: &quot;Resize image&quot;
        },
        &quot;$:/language/Buttons/Size/Caption/Width&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Size/Caption/Width&quot;,
            &quot;text&quot;: &quot;Width:&quot;
        },
        &quot;$:/language/Buttons/Size/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Size/Hint&quot;,
            &quot;text&quot;: &quot;Set image size&quot;
        },
        &quot;$:/language/Buttons/Stamp/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Stamp/Caption&quot;,
            &quot;text&quot;: &quot;stamp&quot;
        },
        &quot;$:/language/Buttons/Stamp/Caption/New&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Stamp/Caption/New&quot;,
            &quot;text&quot;: &quot;Add your own&quot;
        },
        &quot;$:/language/Buttons/Stamp/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Stamp/Hint&quot;,
            &quot;text&quot;: &quot;Insert a preconfigured snippet of text&quot;
        },
        &quot;$:/language/Buttons/Stamp/New/Title&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Stamp/New/Title&quot;,
            &quot;text&quot;: &quot;Name as shown in menu&quot;
        },
        &quot;$:/language/Buttons/Stamp/New/Text&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Stamp/New/Text&quot;,
            &quot;text&quot;: &quot;Text of snippet. (Remember to add a descriptive title in the caption field).&quot;
        },
        &quot;$:/language/Buttons/Strikethrough/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Strikethrough/Caption&quot;,
            &quot;text&quot;: &quot;strikethrough&quot;
        },
        &quot;$:/language/Buttons/Strikethrough/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Strikethrough/Hint&quot;,
            &quot;text&quot;: &quot;Apply strikethrough formatting to selection&quot;
        },
        &quot;$:/language/Buttons/Subscript/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Subscript/Caption&quot;,
            &quot;text&quot;: &quot;subscript&quot;
        },
        &quot;$:/language/Buttons/Subscript/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Subscript/Hint&quot;,
            &quot;text&quot;: &quot;Apply subscript formatting to selection&quot;
        },
        &quot;$:/language/Buttons/Superscript/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Superscript/Caption&quot;,
            &quot;text&quot;: &quot;superscript&quot;
        },
        &quot;$:/language/Buttons/Superscript/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Superscript/Hint&quot;,
            &quot;text&quot;: &quot;Apply superscript formatting to selection&quot;
        },
        &quot;$:/language/Buttons/Underline/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Underline/Caption&quot;,
            &quot;text&quot;: &quot;underline&quot;
        },
        &quot;$:/language/Buttons/Underline/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Buttons/Underline/Hint&quot;,
            &quot;text&quot;: &quot;Apply underline formatting to selection&quot;
        },
        &quot;$:/language/ControlPanel/Advanced/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Advanced/Caption&quot;,
            &quot;text&quot;: &quot;Advanced&quot;
        },
        &quot;$:/language/ControlPanel/Advanced/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Advanced/Hint&quot;,
            &quot;text&quot;: &quot;Internal information about this TiddlyWiki&quot;
        },
        &quot;$:/language/ControlPanel/Appearance/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Appearance/Caption&quot;,
            &quot;text&quot;: &quot;Appearance&quot;
        },
        &quot;$:/language/ControlPanel/Appearance/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Appearance/Hint&quot;,
            &quot;text&quot;: &quot;Ways to customise the appearance of your TiddlyWiki.&quot;
        },
        &quot;$:/language/ControlPanel/Basics/AnimDuration/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/AnimDuration/Prompt&quot;,
            &quot;text&quot;: &quot;Animation duration:&quot;
        },
        &quot;$:/language/ControlPanel/Basics/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/Caption&quot;,
            &quot;text&quot;: &quot;Basics&quot;
        },
        &quot;$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint&quot;,
            &quot;text&quot;: &quot;Use &amp;#91;&amp;#91;double square brackets&amp;#93;&amp;#93; for titles with spaces. Or you can choose to &lt;$button set=\&quot;$:/DefaultTiddlers\&quot; setTo=\&quot;[list[$:/StoryList]]\&quot;&gt;retain story ordering&lt;/$button&gt;&quot;
        },
        &quot;$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt&quot;,
            &quot;text&quot;: &quot;Default tiddlers:&quot;
        },
        &quot;$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint&quot;,
            &quot;text&quot;: &quot;Choose which tiddlers are displayed at startup:&quot;
        },
        &quot;$:/language/ControlPanel/Basics/Language/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/Language/Prompt&quot;,
            &quot;text&quot;: &quot;Hello! Current language:&quot;
        },
        &quot;$:/language/ControlPanel/Basics/NewJournal/Title/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/NewJournal/Title/Prompt&quot;,
            &quot;text&quot;: &quot;Title of new journal tiddlers&quot;
        },
        &quot;$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt&quot;,
            &quot;text&quot;: &quot;Tags for new journal tiddlers&quot;
        },
        &quot;$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt&quot;,
            &quot;text&quot;: &quot;Number of overridden shadow tiddlers:&quot;
        },
        &quot;$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt&quot;,
            &quot;text&quot;: &quot;Number of shadow tiddlers:&quot;
        },
        &quot;$:/language/ControlPanel/Basics/Subtitle/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/Subtitle/Prompt&quot;,
            &quot;text&quot;: &quot;Subtitle:&quot;
        },
        &quot;$:/language/ControlPanel/Basics/SystemTiddlers/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/SystemTiddlers/Prompt&quot;,
            &quot;text&quot;: &quot;Number of system tiddlers:&quot;
        },
        &quot;$:/language/ControlPanel/Basics/Tags/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/Tags/Prompt&quot;,
            &quot;text&quot;: &quot;Number of tags:&quot;
        },
        &quot;$:/language/ControlPanel/Basics/Tiddlers/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/Tiddlers/Prompt&quot;,
            &quot;text&quot;: &quot;Number of tiddlers:&quot;
        },
        &quot;$:/language/ControlPanel/Basics/Title/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/Title/Prompt&quot;,
            &quot;text&quot;: &quot;Title of this ~TiddlyWiki:&quot;
        },
        &quot;$:/language/ControlPanel/Basics/Username/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/Username/Prompt&quot;,
            &quot;text&quot;: &quot;Username for signing edits:&quot;
        },
        &quot;$:/language/ControlPanel/Basics/Version/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Basics/Version/Prompt&quot;,
            &quot;text&quot;: &quot;~TiddlyWiki version:&quot;
        },
        &quot;$:/language/ControlPanel/EditorTypes/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/EditorTypes/Caption&quot;,
            &quot;text&quot;: &quot;Editor Types&quot;
        },
        &quot;$:/language/ControlPanel/EditorTypes/Editor/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/EditorTypes/Editor/Caption&quot;,
            &quot;text&quot;: &quot;Editor&quot;
        },
        &quot;$:/language/ControlPanel/EditorTypes/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/EditorTypes/Hint&quot;,
            &quot;text&quot;: &quot;These tiddlers determine which editor is used to edit specific tiddler types.&quot;
        },
        &quot;$:/language/ControlPanel/EditorTypes/Type/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/EditorTypes/Type/Caption&quot;,
            &quot;text&quot;: &quot;Type&quot;
        },
        &quot;$:/language/ControlPanel/Info/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Info/Caption&quot;,
            &quot;text&quot;: &quot;Info&quot;
        },
        &quot;$:/language/ControlPanel/Info/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Info/Hint&quot;,
            &quot;text&quot;: &quot;Information about this TiddlyWiki&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt&quot;,
            &quot;text&quot;: &quot;Type shortcut here&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/Add/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/Add/Caption&quot;,
            &quot;text&quot;: &quot;add shortcut&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/Caption&quot;,
            &quot;text&quot;: &quot;Keyboard Shortcuts&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/Hint&quot;,
            &quot;text&quot;: &quot;Manage keyboard shortcut assignments&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption&quot;,
            &quot;text&quot;: &quot;No keyboard shortcuts assigned&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint&quot;,
            &quot;text&quot;: &quot;remove keyboard shortcut&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/All&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/All&quot;,
            &quot;text&quot;: &quot;All platforms&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac&quot;,
            &quot;text&quot;: &quot;Macintosh platform only&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac&quot;,
            &quot;text&quot;: &quot;Non-Macintosh platforms only&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux&quot;,
            &quot;text&quot;: &quot;Linux platform only&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux&quot;,
            &quot;text&quot;: &quot;Non-Linux platforms only&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows&quot;,
            &quot;text&quot;: &quot;Windows platform only&quot;
        },
        &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows&quot;,
            &quot;text&quot;: &quot;Non-Windows platforms only&quot;
        },
        &quot;$:/language/ControlPanel/LoadedModules/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/LoadedModules/Caption&quot;,
            &quot;text&quot;: &quot;Loaded Modules&quot;
        },
        &quot;$:/language/ControlPanel/LoadedModules/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/LoadedModules/Hint&quot;,
            &quot;text&quot;: &quot;These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process.&quot;
        },
        &quot;$:/language/ControlPanel/Palette/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Palette/Caption&quot;,
            &quot;text&quot;: &quot;Palette&quot;
        },
        &quot;$:/language/ControlPanel/Palette/Editor/Clone/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Palette/Editor/Clone/Caption&quot;,
            &quot;text&quot;: &quot;clone&quot;
        },
        &quot;$:/language/ControlPanel/Palette/Editor/Clone/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Palette/Editor/Clone/Prompt&quot;,
            &quot;text&quot;: &quot;It is recommended that you clone this shadow palette before editing it&quot;
        },
        &quot;$:/language/ControlPanel/Palette/Editor/Prompt/Modified&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Palette/Editor/Prompt/Modified&quot;,
            &quot;text&quot;: &quot;This shadow palette has been modified&quot;
        },
        &quot;$:/language/ControlPanel/Palette/Editor/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Palette/Editor/Prompt&quot;,
            &quot;text&quot;: &quot;Editing&quot;
        },
        &quot;$:/language/ControlPanel/Palette/Editor/Reset/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Palette/Editor/Reset/Caption&quot;,
            &quot;text&quot;: &quot;reset&quot;
        },
        &quot;$:/language/ControlPanel/Palette/HideEditor/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Palette/HideEditor/Caption&quot;,
            &quot;text&quot;: &quot;hide editor&quot;
        },
        &quot;$:/language/ControlPanel/Palette/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Palette/Prompt&quot;,
            &quot;text&quot;: &quot;Current palette:&quot;
        },
        &quot;$:/language/ControlPanel/Palette/ShowEditor/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Palette/ShowEditor/Caption&quot;,
            &quot;text&quot;: &quot;show editor&quot;
        },
        &quot;$:/language/ControlPanel/Parsing/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Parsing/Caption&quot;,
            &quot;text&quot;: &quot;Parsing&quot;
        },
        &quot;$:/language/ControlPanel/Parsing/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Parsing/Hint&quot;,
            &quot;text&quot;: &quot;Here you can globally disable individual wiki parser rules. Take care as disabling some parser rules can prevent ~TiddlyWiki functioning correctly (you can restore normal operation with [[safe mode|http://tiddlywiki.com/#SafeMode]] )&quot;
        },
        &quot;$:/language/ControlPanel/Parsing/Block/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Parsing/Block/Caption&quot;,
            &quot;text&quot;: &quot;Block Parse Rules&quot;
        },
        &quot;$:/language/ControlPanel/Parsing/Inline/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Parsing/Inline/Caption&quot;,
            &quot;text&quot;: &quot;Inline Parse Rules&quot;
        },
        &quot;$:/language/ControlPanel/Parsing/Pragma/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Parsing/Pragma/Caption&quot;,
            &quot;text&quot;: &quot;Pragma Parse Rules&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Add/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Add/Caption&quot;,
            &quot;text&quot;: &quot;Get more plugins&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Add/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Add/Hint&quot;,
            &quot;text&quot;: &quot;Install plugins from the official library&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint&quot;,
            &quot;text&quot;: &quot;This plugin is already installed at version &lt;$text text=&lt;&lt;installedVersion&gt;&gt;/&gt;&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Caption&quot;,
            &quot;text&quot;: &quot;Plugins&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Disable/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Disable/Caption&quot;,
            &quot;text&quot;: &quot;disable&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Disable/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Disable/Hint&quot;,
            &quot;text&quot;: &quot;Disable this plugin when reloading page&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Disabled/Status&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Disabled/Status&quot;,
            &quot;text&quot;: &quot;(disabled)&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Empty/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Empty/Hint&quot;,
            &quot;text&quot;: &quot;None&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Enable/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Enable/Caption&quot;,
            &quot;text&quot;: &quot;enable&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Enable/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Enable/Hint&quot;,
            &quot;text&quot;: &quot;Enable this plugin when reloading page&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Install/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Install/Caption&quot;,
            &quot;text&quot;: &quot;install&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Installed/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Installed/Hint&quot;,
            &quot;text&quot;: &quot;Currently installed plugins:&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Languages/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Languages/Caption&quot;,
            &quot;text&quot;: &quot;Languages&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Languages/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Languages/Hint&quot;,
            &quot;text&quot;: &quot;Language pack plugins&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/NoInfoFound/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/NoInfoFound/Hint&quot;,
            &quot;text&quot;: &quot;No ''\&quot;&lt;$text text=&lt;&lt;currentTab&gt;&gt;/&gt;\&quot;'' found&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/NoInformation/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/NoInformation/Hint&quot;,
            &quot;text&quot;: &quot;No information provided&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/NotInstalled/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/NotInstalled/Hint&quot;,
            &quot;text&quot;: &quot;This plugin is not currently installed&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/OpenPluginLibrary&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/OpenPluginLibrary&quot;,
            &quot;text&quot;: &quot;open plugin library&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Plugins/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Plugins/Caption&quot;,
            &quot;text&quot;: &quot;Plugins&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Plugins/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Plugins/Hint&quot;,
            &quot;text&quot;: &quot;Plugins&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Reinstall/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Reinstall/Caption&quot;,
            &quot;text&quot;: &quot;reinstall&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Themes/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Themes/Caption&quot;,
            &quot;text&quot;: &quot;Themes&quot;
        },
        &quot;$:/language/ControlPanel/Plugins/Themes/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Plugins/Themes/Hint&quot;,
            &quot;text&quot;: &quot;Theme plugins&quot;
        },
        &quot;$:/language/ControlPanel/Saving/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/Caption&quot;,
            &quot;text&quot;: &quot;Saving&quot;
        },
        &quot;$:/language/ControlPanel/Saving/Heading&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/Heading&quot;,
            &quot;text&quot;: &quot;Saving&quot;
        },
        &quot;$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading&quot;,
            &quot;text&quot;: &quot;Advanced Settings&quot;
        },
        &quot;$:/language/ControlPanel/Saving/TiddlySpot/BackupDir&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/TiddlySpot/BackupDir&quot;,
            &quot;text&quot;: &quot;Backup Directory&quot;
        },
        &quot;$:/language/ControlPanel/Saving/TiddlySpot/Backups&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/TiddlySpot/Backups&quot;,
            &quot;text&quot;: &quot;Backups&quot;
        },
        &quot;$:/language/ControlPanel/Saving/TiddlySpot/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/TiddlySpot/Description&quot;,
            &quot;text&quot;: &quot;These settings are only used when saving to http://tiddlyspot.com or a compatible remote server&quot;
        },
        &quot;$:/language/ControlPanel/Saving/TiddlySpot/Filename&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/TiddlySpot/Filename&quot;,
            &quot;text&quot;: &quot;Upload Filename&quot;
        },
        &quot;$:/language/ControlPanel/Saving/TiddlySpot/Heading&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/TiddlySpot/Heading&quot;,
            &quot;text&quot;: &quot;~TiddlySpot&quot;
        },
        &quot;$:/language/ControlPanel/Saving/TiddlySpot/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/TiddlySpot/Hint&quot;,
            &quot;text&quot;: &quot;//The server URL defaults to `http://&lt;wikiname&gt;.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//&quot;
        },
        &quot;$:/language/ControlPanel/Saving/TiddlySpot/Password&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/TiddlySpot/Password&quot;,
            &quot;text&quot;: &quot;Password&quot;
        },
        &quot;$:/language/ControlPanel/Saving/TiddlySpot/ServerURL&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/TiddlySpot/ServerURL&quot;,
            &quot;text&quot;: &quot;Server URL&quot;
        },
        &quot;$:/language/ControlPanel/Saving/TiddlySpot/UploadDir&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/TiddlySpot/UploadDir&quot;,
            &quot;text&quot;: &quot;Upload Directory&quot;
        },
        &quot;$:/language/ControlPanel/Saving/TiddlySpot/UserName&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Saving/TiddlySpot/UserName&quot;,
            &quot;text&quot;: &quot;Wiki Name&quot;
        },
        &quot;$:/language/ControlPanel/Settings/AutoSave/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/AutoSave/Caption&quot;,
            &quot;text&quot;: &quot;Autosave&quot;
        },
        &quot;$:/language/ControlPanel/Settings/AutoSave/Disabled/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/AutoSave/Disabled/Description&quot;,
            &quot;text&quot;: &quot;Do not save changes automatically&quot;
        },
        &quot;$:/language/ControlPanel/Settings/AutoSave/Enabled/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/AutoSave/Enabled/Description&quot;,
            &quot;text&quot;: &quot;Save changes automatically&quot;
        },
        &quot;$:/language/ControlPanel/Settings/AutoSave/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/AutoSave/Hint&quot;,
            &quot;text&quot;: &quot;Automatically save changes during editing&quot;
        },
        &quot;$:/language/ControlPanel/Settings/CamelCase/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/CamelCase/Caption&quot;,
            &quot;text&quot;: &quot;Camel Case Wiki Links&quot;
        },
        &quot;$:/language/ControlPanel/Settings/CamelCase/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/CamelCase/Hint&quot;,
            &quot;text&quot;: &quot;You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect&quot;
        },
        &quot;$:/language/ControlPanel/Settings/CamelCase/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/CamelCase/Description&quot;,
            &quot;text&quot;: &quot;Enable automatic ~CamelCase linking&quot;
        },
        &quot;$:/language/ControlPanel/Settings/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/Caption&quot;,
            &quot;text&quot;: &quot;Settings&quot;
        },
        &quot;$:/language/ControlPanel/Settings/EditorToolbar/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/EditorToolbar/Caption&quot;,
            &quot;text&quot;: &quot;Editor Toolbar&quot;
        },
        &quot;$:/language/ControlPanel/Settings/EditorToolbar/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/EditorToolbar/Hint&quot;,
            &quot;text&quot;: &quot;Enable or disable the editor toolbar:&quot;
        },
        &quot;$:/language/ControlPanel/Settings/EditorToolbar/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/EditorToolbar/Description&quot;,
            &quot;text&quot;: &quot;Show editor toolbar&quot;
        },
        &quot;$:/language/ControlPanel/Settings/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/Hint&quot;,
            &quot;text&quot;: &quot;These settings let you customise the behaviour of TiddlyWiki.&quot;
        },
        &quot;$:/language/ControlPanel/Settings/NavigationAddressBar/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/NavigationAddressBar/Caption&quot;,
            &quot;text&quot;: &quot;Navigation Address Bar&quot;
        },
        &quot;$:/language/ControlPanel/Settings/NavigationAddressBar/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/NavigationAddressBar/Hint&quot;,
            &quot;text&quot;: &quot;Behaviour of the browser address bar when navigating to a tiddler:&quot;
        },
        &quot;$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description&quot;,
            &quot;text&quot;: &quot;Do not update the address bar&quot;
        },
        &quot;$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description&quot;,
            &quot;text&quot;: &quot;Include the target tiddler&quot;
        },
        &quot;$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description&quot;,
            &quot;text&quot;: &quot;Include the target tiddler and the current story sequence&quot;
        },
        &quot;$:/language/ControlPanel/Settings/NavigationHistory/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/NavigationHistory/Caption&quot;,
            &quot;text&quot;: &quot;Navigation History&quot;
        },
        &quot;$:/language/ControlPanel/Settings/NavigationHistory/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/NavigationHistory/Hint&quot;,
            &quot;text&quot;: &quot;Update browser history when navigating to a tiddler:&quot;
        },
        &quot;$:/language/ControlPanel/Settings/NavigationHistory/No/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/NavigationHistory/No/Description&quot;,
            &quot;text&quot;: &quot;Do not update history&quot;
        },
        &quot;$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description&quot;,
            &quot;text&quot;: &quot;Update history&quot;
        },
        &quot;$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption&quot;,
            &quot;text&quot;: &quot;Performance Instrumentation&quot;
        },
        &quot;$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint&quot;,
            &quot;text&quot;: &quot;Displays performance statistics in the browser developer console. Requires reload to take effect&quot;
        },
        &quot;$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description&quot;,
            &quot;text&quot;: &quot;Enable performance instrumentation&quot;
        },
        &quot;$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption&quot;,
            &quot;text&quot;: &quot;Toolbar Button Style&quot;
        },
        &quot;$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint&quot;,
            &quot;text&quot;: &quot;Choose the style for toolbar buttons:&quot;
        },
        &quot;$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless&quot;,
            &quot;text&quot;: &quot;Borderless&quot;
        },
        &quot;$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed&quot;,
            &quot;text&quot;: &quot;Boxed&quot;
        },
        &quot;$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded&quot;,
            &quot;text&quot;: &quot;Rounded&quot;
        },
        &quot;$:/language/ControlPanel/Settings/ToolbarButtons/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/ToolbarButtons/Caption&quot;,
            &quot;text&quot;: &quot;Toolbar Buttons&quot;
        },
        &quot;$:/language/ControlPanel/Settings/ToolbarButtons/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/ToolbarButtons/Hint&quot;,
            &quot;text&quot;: &quot;Default toolbar button appearance:&quot;
        },
        &quot;$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description&quot;,
            &quot;text&quot;: &quot;Include icon&quot;
        },
        &quot;$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description&quot;,
            &quot;text&quot;: &quot;Include text&quot;
        },
        &quot;$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption&quot;,
            &quot;text&quot;: &quot;Default Sidebar Tab&quot;
        },
        &quot;$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint&quot;,
            &quot;text&quot;: &quot;Specify which sidebar tab is displayed by default&quot;
        },
        &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/Caption&quot;,
            &quot;text&quot;: &quot;Tiddler Opening Behaviour&quot;
        },
        &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint&quot;,
            &quot;text&quot;: &quot;Navigation from //within// the story river&quot;
        },
        &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint&quot;,
            &quot;text&quot;: &quot;Navigation from //outside// the story river&quot;
        },
        &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove&quot;,
            &quot;text&quot;: &quot;Open above the current tiddler&quot;
        },
        &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow&quot;,
            &quot;text&quot;: &quot;Open below the current tiddler&quot;
        },
        &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop&quot;,
            &quot;text&quot;: &quot;Open at the top of the story river&quot;
        },
        &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom&quot;,
            &quot;text&quot;: &quot;Open at the bottom of the story river&quot;
        },
        &quot;$:/language/ControlPanel/Settings/TitleLinks/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/TitleLinks/Caption&quot;,
            &quot;text&quot;: &quot;Tiddler Titles&quot;
        },
        &quot;$:/language/ControlPanel/Settings/TitleLinks/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/TitleLinks/Hint&quot;,
            &quot;text&quot;: &quot;Optionally display tiddler titles as links&quot;
        },
        &quot;$:/language/ControlPanel/Settings/TitleLinks/No/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/TitleLinks/No/Description&quot;,
            &quot;text&quot;: &quot;Do not display tiddler titles as links&quot;
        },
        &quot;$:/language/ControlPanel/Settings/TitleLinks/Yes/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/TitleLinks/Yes/Description&quot;,
            &quot;text&quot;: &quot;Display tiddler titles as links&quot;
        },
        &quot;$:/language/ControlPanel/Settings/MissingLinks/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/MissingLinks/Caption&quot;,
            &quot;text&quot;: &quot;Wiki Links&quot;
        },
        &quot;$:/language/ControlPanel/Settings/MissingLinks/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/MissingLinks/Hint&quot;,
            &quot;text&quot;: &quot;Choose whether to link to tiddlers that do not exist yet&quot;
        },
        &quot;$:/language/ControlPanel/Settings/MissingLinks/Description&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Settings/MissingLinks/Description&quot;,
            &quot;text&quot;: &quot;Enable links to missing tiddlers&quot;
        },
        &quot;$:/language/ControlPanel/StoryView/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/StoryView/Caption&quot;,
            &quot;text&quot;: &quot;Story View&quot;
        },
        &quot;$:/language/ControlPanel/StoryView/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/StoryView/Prompt&quot;,
            &quot;text&quot;: &quot;Current view:&quot;
        },
        &quot;$:/language/ControlPanel/Theme/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Theme/Caption&quot;,
            &quot;text&quot;: &quot;Theme&quot;
        },
        &quot;$:/language/ControlPanel/Theme/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Theme/Prompt&quot;,
            &quot;text&quot;: &quot;Current theme:&quot;
        },
        &quot;$:/language/ControlPanel/TiddlerFields/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/TiddlerFields/Caption&quot;,
            &quot;text&quot;: &quot;Tiddler Fields&quot;
        },
        &quot;$:/language/ControlPanel/TiddlerFields/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/TiddlerFields/Hint&quot;,
            &quot;text&quot;: &quot;This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers).&quot;
        },
        &quot;$:/language/ControlPanel/Toolbars/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Toolbars/Caption&quot;,
            &quot;text&quot;: &quot;Toolbars&quot;
        },
        &quot;$:/language/ControlPanel/Toolbars/EditToolbar/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Toolbars/EditToolbar/Caption&quot;,
            &quot;text&quot;: &quot;Edit Toolbar&quot;
        },
        &quot;$:/language/ControlPanel/Toolbars/EditToolbar/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Toolbars/EditToolbar/Hint&quot;,
            &quot;text&quot;: &quot;Choose which buttons are displayed for tiddlers in edit mode&quot;
        },
        &quot;$:/language/ControlPanel/Toolbars/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Toolbars/Hint&quot;,
            &quot;text&quot;: &quot;Select which toolbar buttons are displayed&quot;
        },
        &quot;$:/language/ControlPanel/Toolbars/PageControls/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Toolbars/PageControls/Caption&quot;,
            &quot;text&quot;: &quot;Page Toolbar&quot;
        },
        &quot;$:/language/ControlPanel/Toolbars/PageControls/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Toolbars/PageControls/Hint&quot;,
            &quot;text&quot;: &quot;Choose which buttons are displayed on the main page toolbar&quot;
        },
        &quot;$:/language/ControlPanel/Toolbars/EditorToolbar/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Toolbars/EditorToolbar/Caption&quot;,
            &quot;text&quot;: &quot;Editor Toolbar&quot;
        },
        &quot;$:/language/ControlPanel/Toolbars/EditorToolbar/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Toolbars/EditorToolbar/Hint&quot;,
            &quot;text&quot;: &quot;Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type&quot;
        },
        &quot;$:/language/ControlPanel/Toolbars/ViewToolbar/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Toolbars/ViewToolbar/Caption&quot;,
            &quot;text&quot;: &quot;View Toolbar&quot;
        },
        &quot;$:/language/ControlPanel/Toolbars/ViewToolbar/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Toolbars/ViewToolbar/Hint&quot;,
            &quot;text&quot;: &quot;Choose which buttons are displayed for tiddlers in view mode&quot;
        },
        &quot;$:/language/ControlPanel/Tools/Download/Full/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ControlPanel/Tools/Download/Full/Caption&quot;,
            &quot;text&quot;: &quot;Download full wiki&quot;
        },
        &quot;$:/language/Date/DaySuffix/1&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/1&quot;,
            &quot;text&quot;: &quot;st&quot;
        },
        &quot;$:/language/Date/DaySuffix/2&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/2&quot;,
            &quot;text&quot;: &quot;nd&quot;
        },
        &quot;$:/language/Date/DaySuffix/3&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/3&quot;,
            &quot;text&quot;: &quot;rd&quot;
        },
        &quot;$:/language/Date/DaySuffix/4&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/4&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/5&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/5&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/6&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/6&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/7&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/7&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/8&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/8&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/9&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/9&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/10&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/10&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/11&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/11&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/12&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/12&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/13&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/13&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/14&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/14&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/15&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/15&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/16&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/16&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/17&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/17&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/18&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/18&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/19&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/19&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/20&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/20&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/21&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/21&quot;,
            &quot;text&quot;: &quot;st&quot;
        },
        &quot;$:/language/Date/DaySuffix/22&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/22&quot;,
            &quot;text&quot;: &quot;nd&quot;
        },
        &quot;$:/language/Date/DaySuffix/23&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/23&quot;,
            &quot;text&quot;: &quot;rd&quot;
        },
        &quot;$:/language/Date/DaySuffix/24&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/24&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/25&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/25&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/26&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/26&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/27&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/27&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/28&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/28&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/29&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/29&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/30&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/30&quot;,
            &quot;text&quot;: &quot;th&quot;
        },
        &quot;$:/language/Date/DaySuffix/31&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/DaySuffix/31&quot;,
            &quot;text&quot;: &quot;st&quot;
        },
        &quot;$:/language/Date/Long/Day/0&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Day/0&quot;,
            &quot;text&quot;: &quot;Sunday&quot;
        },
        &quot;$:/language/Date/Long/Day/1&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Day/1&quot;,
            &quot;text&quot;: &quot;Monday&quot;
        },
        &quot;$:/language/Date/Long/Day/2&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Day/2&quot;,
            &quot;text&quot;: &quot;Tuesday&quot;
        },
        &quot;$:/language/Date/Long/Day/3&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Day/3&quot;,
            &quot;text&quot;: &quot;Wednesday&quot;
        },
        &quot;$:/language/Date/Long/Day/4&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Day/4&quot;,
            &quot;text&quot;: &quot;Thursday&quot;
        },
        &quot;$:/language/Date/Long/Day/5&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Day/5&quot;,
            &quot;text&quot;: &quot;Friday&quot;
        },
        &quot;$:/language/Date/Long/Day/6&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Day/6&quot;,
            &quot;text&quot;: &quot;Saturday&quot;
        },
        &quot;$:/language/Date/Long/Month/1&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Month/1&quot;,
            &quot;text&quot;: &quot;January&quot;
        },
        &quot;$:/language/Date/Long/Month/2&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Month/2&quot;,
            &quot;text&quot;: &quot;February&quot;
        },
        &quot;$:/language/Date/Long/Month/3&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Month/3&quot;,
            &quot;text&quot;: &quot;March&quot;
        },
        &quot;$:/language/Date/Long/Month/4&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Month/4&quot;,
            &quot;text&quot;: &quot;April&quot;
        },
        &quot;$:/language/Date/Long/Month/5&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Month/5&quot;,
            &quot;text&quot;: &quot;May&quot;
        },
        &quot;$:/language/Date/Long/Month/6&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Month/6&quot;,
            &quot;text&quot;: &quot;June&quot;
        },
        &quot;$:/language/Date/Long/Month/7&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Month/7&quot;,
            &quot;text&quot;: &quot;July&quot;
        },
        &quot;$:/language/Date/Long/Month/8&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Month/8&quot;,
            &quot;text&quot;: &quot;August&quot;
        },
        &quot;$:/language/Date/Long/Month/9&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Month/9&quot;,
            &quot;text&quot;: &quot;September&quot;
        },
        &quot;$:/language/Date/Long/Month/10&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Month/10&quot;,
            &quot;text&quot;: &quot;October&quot;
        },
        &quot;$:/language/Date/Long/Month/11&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Month/11&quot;,
            &quot;text&quot;: &quot;November&quot;
        },
        &quot;$:/language/Date/Long/Month/12&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Long/Month/12&quot;,
            &quot;text&quot;: &quot;December&quot;
        },
        &quot;$:/language/Date/Period/am&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Period/am&quot;,
            &quot;text&quot;: &quot;am&quot;
        },
        &quot;$:/language/Date/Period/pm&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Period/pm&quot;,
            &quot;text&quot;: &quot;pm&quot;
        },
        &quot;$:/language/Date/Short/Day/0&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Day/0&quot;,
            &quot;text&quot;: &quot;Sun&quot;
        },
        &quot;$:/language/Date/Short/Day/1&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Day/1&quot;,
            &quot;text&quot;: &quot;Mon&quot;
        },
        &quot;$:/language/Date/Short/Day/2&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Day/2&quot;,
            &quot;text&quot;: &quot;Tue&quot;
        },
        &quot;$:/language/Date/Short/Day/3&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Day/3&quot;,
            &quot;text&quot;: &quot;Wed&quot;
        },
        &quot;$:/language/Date/Short/Day/4&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Day/4&quot;,
            &quot;text&quot;: &quot;Thu&quot;
        },
        &quot;$:/language/Date/Short/Day/5&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Day/5&quot;,
            &quot;text&quot;: &quot;Fri&quot;
        },
        &quot;$:/language/Date/Short/Day/6&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Day/6&quot;,
            &quot;text&quot;: &quot;Sat&quot;
        },
        &quot;$:/language/Date/Short/Month/1&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Month/1&quot;,
            &quot;text&quot;: &quot;Jan&quot;
        },
        &quot;$:/language/Date/Short/Month/2&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Month/2&quot;,
            &quot;text&quot;: &quot;Feb&quot;
        },
        &quot;$:/language/Date/Short/Month/3&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Month/3&quot;,
            &quot;text&quot;: &quot;Mar&quot;
        },
        &quot;$:/language/Date/Short/Month/4&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Month/4&quot;,
            &quot;text&quot;: &quot;Apr&quot;
        },
        &quot;$:/language/Date/Short/Month/5&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Month/5&quot;,
            &quot;text&quot;: &quot;May&quot;
        },
        &quot;$:/language/Date/Short/Month/6&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Month/6&quot;,
            &quot;text&quot;: &quot;Jun&quot;
        },
        &quot;$:/language/Date/Short/Month/7&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Month/7&quot;,
            &quot;text&quot;: &quot;Jul&quot;
        },
        &quot;$:/language/Date/Short/Month/8&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Month/8&quot;,
            &quot;text&quot;: &quot;Aug&quot;
        },
        &quot;$:/language/Date/Short/Month/9&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Month/9&quot;,
            &quot;text&quot;: &quot;Sep&quot;
        },
        &quot;$:/language/Date/Short/Month/10&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Month/10&quot;,
            &quot;text&quot;: &quot;Oct&quot;
        },
        &quot;$:/language/Date/Short/Month/11&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Month/11&quot;,
            &quot;text&quot;: &quot;Nov&quot;
        },
        &quot;$:/language/Date/Short/Month/12&quot;: {
            &quot;title&quot;: &quot;$:/language/Date/Short/Month/12&quot;,
            &quot;text&quot;: &quot;Dec&quot;
        },
        &quot;$:/language/RelativeDate/Future/Days&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Future/Days&quot;,
            &quot;text&quot;: &quot;&lt;&lt;period&gt;&gt; days from now&quot;
        },
        &quot;$:/language/RelativeDate/Future/Hours&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Future/Hours&quot;,
            &quot;text&quot;: &quot;&lt;&lt;period&gt;&gt; hours from now&quot;
        },
        &quot;$:/language/RelativeDate/Future/Minutes&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Future/Minutes&quot;,
            &quot;text&quot;: &quot;&lt;&lt;period&gt;&gt; minutes from now&quot;
        },
        &quot;$:/language/RelativeDate/Future/Months&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Future/Months&quot;,
            &quot;text&quot;: &quot;&lt;&lt;period&gt;&gt; months from now&quot;
        },
        &quot;$:/language/RelativeDate/Future/Second&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Future/Second&quot;,
            &quot;text&quot;: &quot;1 second from now&quot;
        },
        &quot;$:/language/RelativeDate/Future/Seconds&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Future/Seconds&quot;,
            &quot;text&quot;: &quot;&lt;&lt;period&gt;&gt; seconds from now&quot;
        },
        &quot;$:/language/RelativeDate/Future/Years&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Future/Years&quot;,
            &quot;text&quot;: &quot;&lt;&lt;period&gt;&gt; years from now&quot;
        },
        &quot;$:/language/RelativeDate/Past/Days&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Past/Days&quot;,
            &quot;text&quot;: &quot;&lt;&lt;period&gt;&gt; days ago&quot;
        },
        &quot;$:/language/RelativeDate/Past/Hours&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Past/Hours&quot;,
            &quot;text&quot;: &quot;&lt;&lt;period&gt;&gt; hours ago&quot;
        },
        &quot;$:/language/RelativeDate/Past/Minutes&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Past/Minutes&quot;,
            &quot;text&quot;: &quot;&lt;&lt;period&gt;&gt; minutes ago&quot;
        },
        &quot;$:/language/RelativeDate/Past/Months&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Past/Months&quot;,
            &quot;text&quot;: &quot;&lt;&lt;period&gt;&gt; months ago&quot;
        },
        &quot;$:/language/RelativeDate/Past/Second&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Past/Second&quot;,
            &quot;text&quot;: &quot;1 second ago&quot;
        },
        &quot;$:/language/RelativeDate/Past/Seconds&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Past/Seconds&quot;,
            &quot;text&quot;: &quot;&lt;&lt;period&gt;&gt; seconds ago&quot;
        },
        &quot;$:/language/RelativeDate/Past/Years&quot;: {
            &quot;title&quot;: &quot;$:/language/RelativeDate/Past/Years&quot;,
            &quot;text&quot;: &quot;&lt;&lt;period&gt;&gt; years ago&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/animation&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/animation&quot;,
            &quot;text&quot;: &quot;Animations that may be used with the RevealWidget.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/command&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/command&quot;,
            &quot;text&quot;: &quot;Commands that can be executed under Node.js.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/config&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/config&quot;,
            &quot;text&quot;: &quot;Data to be inserted into `$tw.config`.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/filteroperator&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/filteroperator&quot;,
            &quot;text&quot;: &quot;Individual filter operator methods.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/global&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/global&quot;,
            &quot;text&quot;: &quot;Global data to be inserted into `$tw`.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/isfilteroperator&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/isfilteroperator&quot;,
            &quot;text&quot;: &quot;Operands for the ''is'' filter operator.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/macro&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/macro&quot;,
            &quot;text&quot;: &quot;JavaScript macro definitions.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/parser&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/parser&quot;,
            &quot;text&quot;: &quot;Parsers for different content types.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/saver&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/saver&quot;,
            &quot;text&quot;: &quot;Savers handle different methods for saving files from the browser.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/startup&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/startup&quot;,
            &quot;text&quot;: &quot;Startup functions.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/storyview&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/storyview&quot;,
            &quot;text&quot;: &quot;Story views customise the animation and behaviour of list widgets.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/tiddlerdeserializer&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/tiddlerdeserializer&quot;,
            &quot;text&quot;: &quot;Converts different content types into tiddlers.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/tiddlerfield&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/tiddlerfield&quot;,
            &quot;text&quot;: &quot;Defines the behaviour of an individual tiddler field.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/tiddlermethod&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/tiddlermethod&quot;,
            &quot;text&quot;: &quot;Adds methods to the `$tw.Tiddler` prototype.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/upgrader&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/upgrader&quot;,
            &quot;text&quot;: &quot;Applies upgrade processing to tiddlers during an upgrade/import.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/utils&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/utils&quot;,
            &quot;text&quot;: &quot;Adds methods to `$tw.utils`.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/utils-node&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/utils-node&quot;,
            &quot;text&quot;: &quot;Adds Node.js-specific methods to `$tw.utils`.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/widget&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/widget&quot;,
            &quot;text&quot;: &quot;Widgets encapsulate DOM rendering and refreshing.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/wikimethod&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/wikimethod&quot;,
            &quot;text&quot;: &quot;Adds methods to `$tw.Wiki`.&quot;
        },
        &quot;$:/language/Docs/ModuleTypes/wikirule&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/ModuleTypes/wikirule&quot;,
            &quot;text&quot;: &quot;Individual parser rules for the main WikiText parser.&quot;
        },
        &quot;$:/language/Docs/PaletteColours/alert-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/alert-background&quot;,
            &quot;text&quot;: &quot;Alert background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/alert-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/alert-border&quot;,
            &quot;text&quot;: &quot;Alert border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/alert-highlight&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/alert-highlight&quot;,
            &quot;text&quot;: &quot;Alert highlight&quot;
        },
        &quot;$:/language/Docs/PaletteColours/alert-muted-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/alert-muted-foreground&quot;,
            &quot;text&quot;: &quot;Alert muted foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/background&quot;,
            &quot;text&quot;: &quot;General background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/blockquote-bar&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/blockquote-bar&quot;,
            &quot;text&quot;: &quot;Blockquote bar&quot;
        },
        &quot;$:/language/Docs/PaletteColours/button-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/button-background&quot;,
            &quot;text&quot;: &quot;Default button background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/button-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/button-border&quot;,
            &quot;text&quot;: &quot;Default button border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/button-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/button-foreground&quot;,
            &quot;text&quot;: &quot;Default button foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/dirty-indicator&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/dirty-indicator&quot;,
            &quot;text&quot;: &quot;Unsaved changes indicator&quot;
        },
        &quot;$:/language/Docs/PaletteColours/code-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/code-background&quot;,
            &quot;text&quot;: &quot;Code background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/code-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/code-border&quot;,
            &quot;text&quot;: &quot;Code border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/code-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/code-foreground&quot;,
            &quot;text&quot;: &quot;Code foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/download-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/download-background&quot;,
            &quot;text&quot;: &quot;Download button background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/download-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/download-foreground&quot;,
            &quot;text&quot;: &quot;Download button foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/dragger-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/dragger-background&quot;,
            &quot;text&quot;: &quot;Dragger background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/dragger-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/dragger-foreground&quot;,
            &quot;text&quot;: &quot;Dragger foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/dropdown-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/dropdown-background&quot;,
            &quot;text&quot;: &quot;Dropdown background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/dropdown-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/dropdown-border&quot;,
            &quot;text&quot;: &quot;Dropdown border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/dropdown-tab-background-selected&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/dropdown-tab-background-selected&quot;,
            &quot;text&quot;: &quot;Dropdown tab background for selected tabs&quot;
        },
        &quot;$:/language/Docs/PaletteColours/dropdown-tab-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/dropdown-tab-background&quot;,
            &quot;text&quot;: &quot;Dropdown tab background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/dropzone-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/dropzone-background&quot;,
            &quot;text&quot;: &quot;Dropzone background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/external-link-background-hover&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/external-link-background-hover&quot;,
            &quot;text&quot;: &quot;External link background hover&quot;
        },
        &quot;$:/language/Docs/PaletteColours/external-link-background-visited&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/external-link-background-visited&quot;,
            &quot;text&quot;: &quot;External link background visited&quot;
        },
        &quot;$:/language/Docs/PaletteColours/external-link-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/external-link-background&quot;,
            &quot;text&quot;: &quot;External link background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/external-link-foreground-hover&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/external-link-foreground-hover&quot;,
            &quot;text&quot;: &quot;External link foreground hover&quot;
        },
        &quot;$:/language/Docs/PaletteColours/external-link-foreground-visited&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/external-link-foreground-visited&quot;,
            &quot;text&quot;: &quot;External link foreground visited&quot;
        },
        &quot;$:/language/Docs/PaletteColours/external-link-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/external-link-foreground&quot;,
            &quot;text&quot;: &quot;External link foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/foreground&quot;,
            &quot;text&quot;: &quot;General foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/message-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/message-background&quot;,
            &quot;text&quot;: &quot;Message box background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/message-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/message-border&quot;,
            &quot;text&quot;: &quot;Message box border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/message-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/message-foreground&quot;,
            &quot;text&quot;: &quot;Message box foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/modal-backdrop&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/modal-backdrop&quot;,
            &quot;text&quot;: &quot;Modal backdrop&quot;
        },
        &quot;$:/language/Docs/PaletteColours/modal-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/modal-background&quot;,
            &quot;text&quot;: &quot;Modal background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/modal-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/modal-border&quot;,
            &quot;text&quot;: &quot;Modal border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/modal-footer-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/modal-footer-background&quot;,
            &quot;text&quot;: &quot;Modal footer background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/modal-footer-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/modal-footer-border&quot;,
            &quot;text&quot;: &quot;Modal footer border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/modal-header-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/modal-header-border&quot;,
            &quot;text&quot;: &quot;Modal header border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/muted-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/muted-foreground&quot;,
            &quot;text&quot;: &quot;General muted foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/notification-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/notification-background&quot;,
            &quot;text&quot;: &quot;Notification background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/notification-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/notification-border&quot;,
            &quot;text&quot;: &quot;Notification border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/page-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/page-background&quot;,
            &quot;text&quot;: &quot;Page background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/pre-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/pre-background&quot;,
            &quot;text&quot;: &quot;Preformatted code background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/pre-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/pre-border&quot;,
            &quot;text&quot;: &quot;Preformatted code border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/primary&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/primary&quot;,
            &quot;text&quot;: &quot;General primary&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-button-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-button-foreground&quot;,
            &quot;text&quot;: &quot;Sidebar button foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover&quot;,
            &quot;text&quot;: &quot;Sidebar controls foreground hover&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-controls-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-controls-foreground&quot;,
            &quot;text&quot;: &quot;Sidebar controls foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-foreground-shadow&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-foreground-shadow&quot;,
            &quot;text&quot;: &quot;Sidebar foreground shadow&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-foreground&quot;,
            &quot;text&quot;: &quot;Sidebar foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover&quot;,
            &quot;text&quot;: &quot;Sidebar muted foreground hover&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-muted-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-muted-foreground&quot;,
            &quot;text&quot;: &quot;Sidebar muted foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-tab-background-selected&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-tab-background-selected&quot;,
            &quot;text&quot;: &quot;Sidebar tab background for selected tabs&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-tab-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-tab-background&quot;,
            &quot;text&quot;: &quot;Sidebar tab background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-tab-border-selected&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-tab-border-selected&quot;,
            &quot;text&quot;: &quot;Sidebar tab border for selected tabs&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-tab-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-tab-border&quot;,
            &quot;text&quot;: &quot;Sidebar tab border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-tab-divider&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-tab-divider&quot;,
            &quot;text&quot;: &quot;Sidebar tab divider&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected&quot;,
            &quot;text&quot;: &quot;Sidebar tab foreground for selected tabs&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-tab-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-tab-foreground&quot;,
            &quot;text&quot;: &quot;Sidebar tab foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover&quot;,
            &quot;text&quot;: &quot;Sidebar tiddler link foreground hover&quot;
        },
        &quot;$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground&quot;,
            &quot;text&quot;: &quot;Sidebar tiddler link foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/site-title-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/site-title-foreground&quot;,
            &quot;text&quot;: &quot;Site title foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/static-alert-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/static-alert-foreground&quot;,
            &quot;text&quot;: &quot;Static alert foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tab-background-selected&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tab-background-selected&quot;,
            &quot;text&quot;: &quot;Tab background for selected tabs&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tab-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tab-background&quot;,
            &quot;text&quot;: &quot;Tab background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tab-border-selected&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tab-border-selected&quot;,
            &quot;text&quot;: &quot;Tab border for selected tabs&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tab-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tab-border&quot;,
            &quot;text&quot;: &quot;Tab border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tab-divider&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tab-divider&quot;,
            &quot;text&quot;: &quot;Tab divider&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tab-foreground-selected&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tab-foreground-selected&quot;,
            &quot;text&quot;: &quot;Tab foreground for selected tabs&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tab-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tab-foreground&quot;,
            &quot;text&quot;: &quot;Tab foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/table-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/table-border&quot;,
            &quot;text&quot;: &quot;Table border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/table-footer-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/table-footer-background&quot;,
            &quot;text&quot;: &quot;Table footer background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/table-header-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/table-header-background&quot;,
            &quot;text&quot;: &quot;Table header background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tag-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tag-background&quot;,
            &quot;text&quot;: &quot;Tag background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tag-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tag-foreground&quot;,
            &quot;text&quot;: &quot;Tag foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-background&quot;,
            &quot;text&quot;: &quot;Tiddler background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-border&quot;,
            &quot;text&quot;: &quot;Tiddler border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover&quot;,
            &quot;text&quot;: &quot;Tiddler controls foreground hover&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected&quot;,
            &quot;text&quot;: &quot;Tiddler controls foreground for selected controls&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-controls-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-controls-foreground&quot;,
            &quot;text&quot;: &quot;Tiddler controls foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-editor-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-editor-background&quot;,
            &quot;text&quot;: &quot;Tiddler editor background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-editor-border-image&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-editor-border-image&quot;,
            &quot;text&quot;: &quot;Tiddler editor border image&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-editor-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-editor-border&quot;,
            &quot;text&quot;: &quot;Tiddler editor border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-editor-fields-even&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-editor-fields-even&quot;,
            &quot;text&quot;: &quot;Tiddler editor background for even fields&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-editor-fields-odd&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-editor-fields-odd&quot;,
            &quot;text&quot;: &quot;Tiddler editor background for odd fields&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-info-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-info-background&quot;,
            &quot;text&quot;: &quot;Tiddler info panel background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-info-border&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-info-border&quot;,
            &quot;text&quot;: &quot;Tiddler info panel border&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-info-tab-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-info-tab-background&quot;,
            &quot;text&quot;: &quot;Tiddler info panel tab background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-link-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-link-background&quot;,
            &quot;text&quot;: &quot;Tiddler link background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-link-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-link-foreground&quot;,
            &quot;text&quot;: &quot;Tiddler link foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-subtitle-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-subtitle-foreground&quot;,
            &quot;text&quot;: &quot;Tiddler subtitle foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/tiddler-title-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/tiddler-title-foreground&quot;,
            &quot;text&quot;: &quot;Tiddler title foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/toolbar-new-button&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/toolbar-new-button&quot;,
            &quot;text&quot;: &quot;Toolbar 'new tiddler' button foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/toolbar-options-button&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/toolbar-options-button&quot;,
            &quot;text&quot;: &quot;Toolbar 'options' button foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/toolbar-save-button&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/toolbar-save-button&quot;,
            &quot;text&quot;: &quot;Toolbar 'save' button foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/toolbar-info-button&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/toolbar-info-button&quot;,
            &quot;text&quot;: &quot;Toolbar 'info' button foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/toolbar-edit-button&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/toolbar-edit-button&quot;,
            &quot;text&quot;: &quot;Toolbar 'edit' button foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/toolbar-close-button&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/toolbar-close-button&quot;,
            &quot;text&quot;: &quot;Toolbar 'close' button foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/toolbar-delete-button&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/toolbar-delete-button&quot;,
            &quot;text&quot;: &quot;Toolbar 'delete' button foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/toolbar-cancel-button&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/toolbar-cancel-button&quot;,
            &quot;text&quot;: &quot;Toolbar 'cancel' button foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/toolbar-done-button&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/toolbar-done-button&quot;,
            &quot;text&quot;: &quot;Toolbar 'done' button foreground&quot;
        },
        &quot;$:/language/Docs/PaletteColours/untagged-background&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/untagged-background&quot;,
            &quot;text&quot;: &quot;Untagged pill background&quot;
        },
        &quot;$:/language/Docs/PaletteColours/very-muted-foreground&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/PaletteColours/very-muted-foreground&quot;,
            &quot;text&quot;: &quot;Very muted foreground&quot;
        },
        &quot;$:/language/EditTemplate/Body/External/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Body/External/Hint&quot;,
            &quot;text&quot;: &quot;This is an external tiddler stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself&quot;
        },
        &quot;$:/language/EditTemplate/Body/Placeholder&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Body/Placeholder&quot;,
            &quot;text&quot;: &quot;Type the text for this tiddler&quot;
        },
        &quot;$:/language/EditTemplate/Body/Preview/Type/Output&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Body/Preview/Type/Output&quot;,
            &quot;text&quot;: &quot;output&quot;
        },
        &quot;$:/language/EditTemplate/Field/Remove/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Field/Remove/Caption&quot;,
            &quot;text&quot;: &quot;remove field&quot;
        },
        &quot;$:/language/EditTemplate/Field/Remove/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Field/Remove/Hint&quot;,
            &quot;text&quot;: &quot;Remove field&quot;
        },
        &quot;$:/language/EditTemplate/Fields/Add/Button&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Fields/Add/Button&quot;,
            &quot;text&quot;: &quot;add&quot;
        },
        &quot;$:/language/EditTemplate/Fields/Add/Name/Placeholder&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Fields/Add/Name/Placeholder&quot;,
            &quot;text&quot;: &quot;field name&quot;
        },
        &quot;$:/language/EditTemplate/Fields/Add/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Fields/Add/Prompt&quot;,
            &quot;text&quot;: &quot;Add a new field:&quot;
        },
        &quot;$:/language/EditTemplate/Fields/Add/Value/Placeholder&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Fields/Add/Value/Placeholder&quot;,
            &quot;text&quot;: &quot;field value&quot;
        },
        &quot;$:/language/EditTemplate/Fields/Add/Dropdown/System&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Fields/Add/Dropdown/System&quot;,
            &quot;text&quot;: &quot;System fields&quot;
        },
        &quot;$:/language/EditTemplate/Fields/Add/Dropdown/User&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Fields/Add/Dropdown/User&quot;,
            &quot;text&quot;: &quot;User fields&quot;
        },
        &quot;$:/language/EditTemplate/Shadow/Warning&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Shadow/Warning&quot;,
            &quot;text&quot;: &quot;This is a shadow tiddler. Any changes you make will override the default version from the plugin &lt;&lt;pluginLink&gt;&gt;&quot;
        },
        &quot;$:/language/EditTemplate/Shadow/OverriddenWarning&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Shadow/OverriddenWarning&quot;,
            &quot;text&quot;: &quot;This is a modified shadow tiddler. You can revert to the default version in the plugin &lt;&lt;pluginLink&gt;&gt; by deleting this tiddler&quot;
        },
        &quot;$:/language/EditTemplate/Tags/Add/Button&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Tags/Add/Button&quot;,
            &quot;text&quot;: &quot;add&quot;
        },
        &quot;$:/language/EditTemplate/Tags/Add/Placeholder&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Tags/Add/Placeholder&quot;,
            &quot;text&quot;: &quot;tag name&quot;
        },
        &quot;$:/language/EditTemplate/Tags/Dropdown/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Tags/Dropdown/Caption&quot;,
            &quot;text&quot;: &quot;tag list&quot;
        },
        &quot;$:/language/EditTemplate/Tags/Dropdown/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Tags/Dropdown/Hint&quot;,
            &quot;text&quot;: &quot;Show tag list&quot;
        },
        &quot;$:/language/EditTemplate/Title/BadCharacterWarning&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Title/BadCharacterWarning&quot;,
            &quot;text&quot;: &quot;Warning: avoid using any of the characters &lt;&lt;bad-chars&gt;&gt; in tiddler titles&quot;
        },
        &quot;$:/language/EditTemplate/Type/Dropdown/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Type/Dropdown/Caption&quot;,
            &quot;text&quot;: &quot;content type list&quot;
        },
        &quot;$:/language/EditTemplate/Type/Dropdown/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Type/Dropdown/Hint&quot;,
            &quot;text&quot;: &quot;Show content type list&quot;
        },
        &quot;$:/language/EditTemplate/Type/Delete/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Type/Delete/Caption&quot;,
            &quot;text&quot;: &quot;delete content type&quot;
        },
        &quot;$:/language/EditTemplate/Type/Delete/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Type/Delete/Hint&quot;,
            &quot;text&quot;: &quot;Delete content type&quot;
        },
        &quot;$:/language/EditTemplate/Type/Placeholder&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Type/Placeholder&quot;,
            &quot;text&quot;: &quot;content type&quot;
        },
        &quot;$:/language/EditTemplate/Type/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/EditTemplate/Type/Prompt&quot;,
            &quot;text&quot;: &quot;Type:&quot;
        },
        &quot;$:/language/Exporters/StaticRiver&quot;: {
            &quot;title&quot;: &quot;$:/language/Exporters/StaticRiver&quot;,
            &quot;text&quot;: &quot;Static HTML&quot;
        },
        &quot;$:/language/Exporters/JsonFile&quot;: {
            &quot;title&quot;: &quot;$:/language/Exporters/JsonFile&quot;,
            &quot;text&quot;: &quot;JSON file&quot;
        },
        &quot;$:/language/Exporters/CsvFile&quot;: {
            &quot;title&quot;: &quot;$:/language/Exporters/CsvFile&quot;,
            &quot;text&quot;: &quot;CSV file&quot;
        },
        &quot;$:/language/Exporters/TidFile&quot;: {
            &quot;title&quot;: &quot;$:/language/Exporters/TidFile&quot;,
            &quot;text&quot;: &quot;\&quot;.tid\&quot; file&quot;
        },
        &quot;$:/language/Docs/Fields/_canonical_uri&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/_canonical_uri&quot;,
            &quot;text&quot;: &quot;The full URI of an external image tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/bag&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/bag&quot;,
            &quot;text&quot;: &quot;The name of the bag from which a tiddler came&quot;
        },
        &quot;$:/language/Docs/Fields/caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/caption&quot;,
            &quot;text&quot;: &quot;The text to be displayed on a tab or button&quot;
        },
        &quot;$:/language/Docs/Fields/color&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/color&quot;,
            &quot;text&quot;: &quot;The CSS color value associated with a tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/component&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/component&quot;,
            &quot;text&quot;: &quot;The name of the component responsible for an [[alert tiddler|AlertMechanism]]&quot;
        },
        &quot;$:/language/Docs/Fields/current-tiddler&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/current-tiddler&quot;,
            &quot;text&quot;: &quot;Used to cache the top tiddler in a [[history list|HistoryMechanism]]&quot;
        },
        &quot;$:/language/Docs/Fields/created&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/created&quot;,
            &quot;text&quot;: &quot;The date a tiddler was created&quot;
        },
        &quot;$:/language/Docs/Fields/creator&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/creator&quot;,
            &quot;text&quot;: &quot;The name of the person who created a tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/dependents&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/dependents&quot;,
            &quot;text&quot;: &quot;For a plugin, lists the dependent plugin titles&quot;
        },
        &quot;$:/language/Docs/Fields/description&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/description&quot;,
            &quot;text&quot;: &quot;The descriptive text for a plugin, or a modal dialogue&quot;
        },
        &quot;$:/language/Docs/Fields/draft.of&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/draft.of&quot;,
            &quot;text&quot;: &quot;For draft tiddlers, contains the title of the tiddler of which this is a draft&quot;
        },
        &quot;$:/language/Docs/Fields/draft.title&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/draft.title&quot;,
            &quot;text&quot;: &quot;For draft tiddlers, contains the proposed new title of the tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/footer&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/footer&quot;,
            &quot;text&quot;: &quot;The footer text for a wizard&quot;
        },
        &quot;$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against&quot;,
            &quot;text&quot;: &quot;A temporary storage field used in [[$:/core/templates/static.content]]&quot;
        },
        &quot;$:/language/Docs/Fields/icon&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/icon&quot;,
            &quot;text&quot;: &quot;The title of the tiddler containing the icon associated with a tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/library&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/library&quot;,
            &quot;text&quot;: &quot;If set to \&quot;yes\&quot; indicates that a tiddler should be saved as a JavaScript library&quot;
        },
        &quot;$:/language/Docs/Fields/list&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/list&quot;,
            &quot;text&quot;: &quot;An ordered list of tiddler titles associated with a tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/list-before&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/list-before&quot;,
            &quot;text&quot;: &quot;If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty&quot;
        },
        &quot;$:/language/Docs/Fields/list-after&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/list-after&quot;,
            &quot;text&quot;: &quot;If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles&quot;
        },
        &quot;$:/language/Docs/Fields/modified&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/modified&quot;,
            &quot;text&quot;: &quot;The date and time at which a tiddler was last modified&quot;
        },
        &quot;$:/language/Docs/Fields/modifier&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/modifier&quot;,
            &quot;text&quot;: &quot;The tiddler title associated with the person who last modified a tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/name&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/name&quot;,
            &quot;text&quot;: &quot;The human readable name associated with a plugin tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/plugin-priority&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/plugin-priority&quot;,
            &quot;text&quot;: &quot;A numerical value indicating the priority of a plugin tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/plugin-type&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/plugin-type&quot;,
            &quot;text&quot;: &quot;The type of plugin in a plugin tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/revision&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/revision&quot;,
            &quot;text&quot;: &quot;The revision of the tiddler held at the server&quot;
        },
        &quot;$:/language/Docs/Fields/released&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/released&quot;,
            &quot;text&quot;: &quot;Date of a TiddlyWiki release&quot;
        },
        &quot;$:/language/Docs/Fields/source&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/source&quot;,
            &quot;text&quot;: &quot;The source URL associated with a tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/subtitle&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/subtitle&quot;,
            &quot;text&quot;: &quot;The subtitle text for a wizard&quot;
        },
        &quot;$:/language/Docs/Fields/tags&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/tags&quot;,
            &quot;text&quot;: &quot;A list of tags associated with a tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/text&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/text&quot;,
            &quot;text&quot;: &quot;The body text of a tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/title&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/title&quot;,
            &quot;text&quot;: &quot;The unique name of a tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/type&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/type&quot;,
            &quot;text&quot;: &quot;The content type of a tiddler&quot;
        },
        &quot;$:/language/Docs/Fields/version&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Fields/version&quot;,
            &quot;text&quot;: &quot;Version information for a plugin&quot;
        },
        &quot;$:/language/Filters/AllTiddlers&quot;: {
            &quot;title&quot;: &quot;$:/language/Filters/AllTiddlers&quot;,
            &quot;text&quot;: &quot;All tiddlers except system tiddlers&quot;
        },
        &quot;$:/language/Filters/RecentSystemTiddlers&quot;: {
            &quot;title&quot;: &quot;$:/language/Filters/RecentSystemTiddlers&quot;,
            &quot;text&quot;: &quot;Recently modified tiddlers, including system tiddlers&quot;
        },
        &quot;$:/language/Filters/RecentTiddlers&quot;: {
            &quot;title&quot;: &quot;$:/language/Filters/RecentTiddlers&quot;,
            &quot;text&quot;: &quot;Recently modified tiddlers&quot;
        },
        &quot;$:/language/Filters/AllTags&quot;: {
            &quot;title&quot;: &quot;$:/language/Filters/AllTags&quot;,
            &quot;text&quot;: &quot;All tags except system tags&quot;
        },
        &quot;$:/language/Filters/Missing&quot;: {
            &quot;title&quot;: &quot;$:/language/Filters/Missing&quot;,
            &quot;text&quot;: &quot;Missing tiddlers&quot;
        },
        &quot;$:/language/Filters/Drafts&quot;: {
            &quot;title&quot;: &quot;$:/language/Filters/Drafts&quot;,
            &quot;text&quot;: &quot;Draft tiddlers&quot;
        },
        &quot;$:/language/Filters/Orphans&quot;: {
            &quot;title&quot;: &quot;$:/language/Filters/Orphans&quot;,
            &quot;text&quot;: &quot;Orphan tiddlers&quot;
        },
        &quot;$:/language/Filters/SystemTiddlers&quot;: {
            &quot;title&quot;: &quot;$:/language/Filters/SystemTiddlers&quot;,
            &quot;text&quot;: &quot;System tiddlers&quot;
        },
        &quot;$:/language/Filters/ShadowTiddlers&quot;: {
            &quot;title&quot;: &quot;$:/language/Filters/ShadowTiddlers&quot;,
            &quot;text&quot;: &quot;Shadow tiddlers&quot;
        },
        &quot;$:/language/Filters/OverriddenShadowTiddlers&quot;: {
            &quot;title&quot;: &quot;$:/language/Filters/OverriddenShadowTiddlers&quot;,
            &quot;text&quot;: &quot;Overridden shadow tiddlers&quot;
        },
        &quot;$:/language/Filters/SystemTags&quot;: {
            &quot;title&quot;: &quot;$:/language/Filters/SystemTags&quot;,
            &quot;text&quot;: &quot;System tags&quot;
        },
        &quot;$:/language/Filters/TypedTiddlers&quot;: {
            &quot;title&quot;: &quot;$:/language/Filters/TypedTiddlers&quot;,
            &quot;text&quot;: &quot;Non wiki-text tiddlers&quot;
        },
        &quot;GettingStarted&quot;: {
            &quot;title&quot;: &quot;GettingStarted&quot;,
            &quot;text&quot;: &quot;\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is important to make sure that you can reliably save changes. See http://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n&lt;div class=\&quot;tc-control-panel\&quot;&gt;\n\n|&lt;$link to=\&quot;$:/SiteTitle\&quot;&gt;&lt;&lt;lingo Title/Prompt&gt;&gt;&lt;/$link&gt; |&lt;$edit-text tiddler=\&quot;$:/SiteTitle\&quot; default=\&quot;\&quot; tag=\&quot;input\&quot;/&gt; |\n|&lt;$link to=\&quot;$:/SiteSubtitle\&quot;&gt;&lt;&lt;lingo Subtitle/Prompt&gt;&gt;&lt;/$link&gt; |&lt;$edit-text tiddler=\&quot;$:/SiteSubtitle\&quot; default=\&quot;\&quot; tag=\&quot;input\&quot;/&gt; |\n|&lt;$link to=\&quot;$:/DefaultTiddlers\&quot;&gt;&lt;&lt;lingo DefaultTiddlers/Prompt&gt;&gt;&lt;/$link&gt; |&lt;&lt;lingo DefaultTiddlers/TopHint&gt;&gt;&lt;br&gt; &lt;$edit tag=\&quot;textarea\&quot; tiddler=\&quot;$:/DefaultTiddlers\&quot;/&gt;&lt;br&gt;//&lt;&lt;lingo DefaultTiddlers/BottomHint&gt;&gt;// |\n&lt;/div&gt;\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n&quot;
        },
        &quot;$:/language/Help/build&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/build&quot;,
            &quot;description&quot;: &quot;Automatically run configured commands&quot;,
            &quot;text&quot;: &quot;Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build &lt;target&gt; [&lt;target&gt; ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n&quot;
        },
        &quot;$:/language/Help/clearpassword&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/clearpassword&quot;,
            &quot;description&quot;: &quot;Clear a password for subsequent crypto operations&quot;,
            &quot;text&quot;: &quot;Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n&quot;
        },
        &quot;$:/language/Help/default&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/default&quot;,
            &quot;text&quot;: &quot;\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [&lt;wikifolder&gt;] [--&lt;command&gt; [&lt;args&gt;...]...]\n```\n\nAvailable commands:\n\n&lt;ul&gt;\n&lt;$list filter=\&quot;[commands[]sort[title]]\&quot; variable=\&quot;command\&quot;&gt;\n&lt;li&gt;&lt;$link to=&lt;&lt;commandTitle&gt;&gt;&gt;&lt;$macrocall $name=\&quot;command\&quot; $type=\&quot;text/plain\&quot; $output=\&quot;text/plain\&quot;/&gt;&lt;/$link&gt;: &lt;$transclude tiddler=&lt;&lt;commandTitle&gt;&gt; field=\&quot;description\&quot;/&gt;&lt;/li&gt;\n&lt;/$list&gt;\n&lt;/ul&gt;\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help &lt;command&gt;\n```\n&quot;
        },
        &quot;$:/language/Help/editions&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/editions&quot;,
            &quot;description&quot;: &quot;Lists the available editions of TiddlyWiki&quot;,
            &quot;text&quot;: &quot;Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n&quot;
        },
        &quot;$:/language/Help/help&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/help&quot;,
            &quot;description&quot;: &quot;Display help for TiddlyWiki commands&quot;,
            &quot;text&quot;: &quot;Displays help text for a command:\n\n```\n--help [&lt;command&gt;]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n&quot;
        },
        &quot;$:/language/Help/init&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/init&quot;,
            &quot;description&quot;: &quot;Initialise a new wiki folder&quot;,
            &quot;text&quot;: &quot;Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init &lt;edition&gt; [&lt;edition&gt; ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \&quot;edition\&quot; defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n&quot;
        },
        &quot;$:/language/Help/load&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/load&quot;,
            &quot;description&quot;: &quot;Load tiddlers from a file&quot;,
            &quot;text&quot;: &quot;Load tiddlers from 2.x.x TiddlyWiki files (`.html`), `.tiddler`, `.tid`, `.json` or other files\n\n```\n--load &lt;filepath&gt;\n```\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n&quot;
        },
        &quot;$:/language/Help/makelibrary&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/makelibrary&quot;,
            &quot;description&quot;: &quot;Construct library plugin required by upgrade process&quot;,
            &quot;text&quot;: &quot;Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary &lt;title&gt;\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n&quot;
        },
        &quot;$:/language/Help/notfound&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/notfound&quot;,
            &quot;text&quot;: &quot;No such help item&quot;
        },
        &quot;$:/language/Help/output&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/output&quot;,
            &quot;description&quot;: &quot;Set the base output directory for subsequent commands&quot;,
            &quot;text&quot;: &quot;Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output &lt;pathname&gt;\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n&quot;
        },
        &quot;$:/language/Help/password&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/password&quot;,
            &quot;description&quot;: &quot;Set a password for subsequent crypto operations&quot;,
            &quot;text&quot;: &quot;Set a password for subsequent crypto operations\n\n```\n--password &lt;password&gt;\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n&quot;
        },
        &quot;$:/language/Help/rendertiddler&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/rendertiddler&quot;,
            &quot;description&quot;: &quot;Render an individual tiddler as a specified ContentType&quot;,
            &quot;text&quot;: &quot;Render an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename. Optionally a template can be specified, in which case the template tiddler is rendered with the \&quot;currentTiddler\&quot; variable set to the tiddler that is being rendered (the first parameter value).\n\n```\n--rendertiddler &lt;title&gt; &lt;filename&gt; [&lt;type&gt;] [&lt;template&gt;]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n&quot;
        },
        &quot;$:/language/Help/rendertiddlers&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/rendertiddlers&quot;,
            &quot;description&quot;: &quot;Render tiddlers matching a filter to a specified ContentType&quot;,
            &quot;text&quot;: &quot;Render a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers &lt;filter&gt; &lt;template&gt; &lt;pathname&gt; [&lt;type&gt;] [&lt;extension&gt;] [\&quot;noclean\&quot;]\n```\n\nFor example:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n&quot;
        },
        &quot;$:/language/Help/savetiddler&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/savetiddler&quot;,
            &quot;description&quot;: &quot;Saves a raw tiddler to a file&quot;,
            &quot;text&quot;: &quot;Saves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler &lt;title&gt; &lt;filename&gt;\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n&quot;
        },
        &quot;$:/language/Help/savetiddlers&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/savetiddlers&quot;,
            &quot;description&quot;: &quot;Saves a group of raw tiddlers to a directory&quot;,
            &quot;text&quot;: &quot;Saves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers &lt;filter&gt; &lt;pathname&gt; [\&quot;noclean\&quot;]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n&quot;
        },
        &quot;$:/language/Help/server&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/server&quot;,
            &quot;description&quot;: &quot;Provides an HTTP server interface to TiddlyWiki&quot;,
            &quot;text&quot;: &quot;The server built in to TiddlyWiki5 is very simple. Although compatible with TiddlyWeb it doesn't support many of the features needed for robust Internet-facing usage.\n\nAt the root, it serves a rendering of a specified tiddler. Away from the root, it serves individual tiddlers encoded in JSON, and supports the basic HTTP operations for `GET`, `PUT` and `DELETE`.\n\n```\n--server &lt;port&gt; &lt;roottiddler&gt; &lt;rendertype&gt; &lt;servetype&gt; &lt;username&gt; &lt;password&gt; &lt;host&gt; &lt;pathprefix&gt;\n```\n\nThe parameters are:\n\n* ''port'' - port number to serve from (defaults to \&quot;8080\&quot;)\n* ''roottiddler'' - the tiddler to serve at the root (defaults to \&quot;$:/core/save/all\&quot;)\n* ''rendertype'' - the content type to which the root tiddler should be rendered (defaults to \&quot;text/plain\&quot;)\n* ''servetype'' - the content type with which the root tiddler should be served (defaults to \&quot;text/html\&quot;)\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \&quot;127.0.0.1\&quot; aka \&quot;localhost\&quot;)\n* ''pathprefix'' - optional prefix for paths\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation isn't suitable for general use.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password:\n\n```\n--server 8080 $:/core/save/all text/plain text/html \&quot;\&quot; \&quot;\&quot; 192.168.0.245\n```\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port.\n&quot;
        },
        &quot;$:/language/Help/setfield&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/setfield&quot;,
            &quot;description&quot;: &quot;Prepares external tiddlers for use&quot;,
            &quot;text&quot;: &quot;//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield &lt;filter&gt; &lt;fieldname&gt; &lt;templatetitle&gt; &lt;rendertype&gt;\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \&quot;text\&quot;)\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \&quot;text/plain\&quot;; \&quot;text/html\&quot; can be used to include HTML tags)\n&quot;
        },
        &quot;$:/language/Help/unpackplugin&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/unpackplugin&quot;,
            &quot;description&quot;: &quot;Unpack the payload tiddlers from a plugin&quot;,
            &quot;text&quot;: &quot;Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin &lt;title&gt;\n```\n&quot;
        },
        &quot;$:/language/Help/verbose&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/verbose&quot;,
            &quot;description&quot;: &quot;Triggers verbose output mode&quot;,
            &quot;text&quot;: &quot;Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n&quot;
        },
        &quot;$:/language/Help/version&quot;: {
            &quot;title&quot;: &quot;$:/language/Help/version&quot;,
            &quot;description&quot;: &quot;Displays the version number of TiddlyWiki&quot;,
            &quot;text&quot;: &quot;Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n&quot;
        },
        &quot;$:/language/Import/Imported/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Imported/Hint&quot;,
            &quot;text&quot;: &quot;The following tiddlers were imported:&quot;
        },
        &quot;$:/language/Import/Listing/Cancel/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Listing/Cancel/Caption&quot;,
            &quot;text&quot;: &quot;Cancel&quot;
        },
        &quot;$:/language/Import/Listing/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Listing/Hint&quot;,
            &quot;text&quot;: &quot;These tiddlers are ready to import:&quot;
        },
        &quot;$:/language/Import/Listing/Import/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Listing/Import/Caption&quot;,
            &quot;text&quot;: &quot;Import&quot;
        },
        &quot;$:/language/Import/Listing/Select/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Listing/Select/Caption&quot;,
            &quot;text&quot;: &quot;Select&quot;
        },
        &quot;$:/language/Import/Listing/Status/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Listing/Status/Caption&quot;,
            &quot;text&quot;: &quot;Status&quot;
        },
        &quot;$:/language/Import/Listing/Title/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Listing/Title/Caption&quot;,
            &quot;text&quot;: &quot;Title&quot;
        },
        &quot;$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible&quot;,
            &quot;text&quot;: &quot;Blocked incompatible or obsolete plugin&quot;
        },
        &quot;$:/language/Import/Upgrader/Plugins/Suppressed/Version&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Upgrader/Plugins/Suppressed/Version&quot;,
            &quot;text&quot;: &quot;Blocked plugin (due to incoming &lt;&lt;incoming&gt;&gt; being older than existing &lt;&lt;existing&gt;&gt;)&quot;
        },
        &quot;$:/language/Import/Upgrader/Plugins/Upgraded&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Upgrader/Plugins/Upgraded&quot;,
            &quot;text&quot;: &quot;Upgraded plugin from &lt;&lt;incoming&gt;&gt; to &lt;&lt;upgraded&gt;&gt;&quot;
        },
        &quot;$:/language/Import/Upgrader/State/Suppressed&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Upgrader/State/Suppressed&quot;,
            &quot;text&quot;: &quot;Blocked temporary state tiddler&quot;
        },
        &quot;$:/language/Import/Upgrader/System/Suppressed&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Upgrader/System/Suppressed&quot;,
            &quot;text&quot;: &quot;Blocked system tiddler&quot;
        },
        &quot;$:/language/Import/Upgrader/ThemeTweaks/Created&quot;: {
            &quot;title&quot;: &quot;$:/language/Import/Upgrader/ThemeTweaks/Created&quot;,
            &quot;text&quot;: &quot;Migrated theme tweak from &lt;$text text=&lt;&lt;from&gt;&gt;/&gt;&quot;
        },
        &quot;$:/language/AboveStory/ClassicPlugin/Warning&quot;: {
            &quot;title&quot;: &quot;$:/language/AboveStory/ClassicPlugin/Warning&quot;,
            &quot;text&quot;: &quot;It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:&quot;
        },
        &quot;$:/language/BinaryWarning/Prompt&quot;: {
            &quot;title&quot;: &quot;$:/language/BinaryWarning/Prompt&quot;,
            &quot;text&quot;: &quot;This tiddler contains binary data&quot;
        },
        &quot;$:/language/ClassicWarning/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ClassicWarning/Hint&quot;,
            &quot;text&quot;: &quot;This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See http://tiddlywiki.com/static/Upgrading.html for more details.&quot;
        },
        &quot;$:/language/ClassicWarning/Upgrade/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/ClassicWarning/Upgrade/Caption&quot;,
            &quot;text&quot;: &quot;upgrade&quot;
        },
        &quot;$:/language/CloseAll/Button&quot;: {
            &quot;title&quot;: &quot;$:/language/CloseAll/Button&quot;,
            &quot;text&quot;: &quot;close all&quot;
        },
        &quot;$:/language/ColourPicker/Recent&quot;: {
            &quot;title&quot;: &quot;$:/language/ColourPicker/Recent&quot;,
            &quot;text&quot;: &quot;Recent:&quot;
        },
        &quot;$:/language/ConfirmCancelTiddler&quot;: {
            &quot;title&quot;: &quot;$:/language/ConfirmCancelTiddler&quot;,
            &quot;text&quot;: &quot;Do you wish to discard changes to the tiddler \&quot;&lt;$text text=&lt;&lt;title&gt;&gt;/&gt;\&quot;?&quot;
        },
        &quot;$:/language/ConfirmDeleteTiddler&quot;: {
            &quot;title&quot;: &quot;$:/language/ConfirmDeleteTiddler&quot;,
            &quot;text&quot;: &quot;Do you wish to delete the tiddler \&quot;&lt;$text text=&lt;&lt;title&gt;&gt;/&gt;\&quot;?&quot;
        },
        &quot;$:/language/ConfirmOverwriteTiddler&quot;: {
            &quot;title&quot;: &quot;$:/language/ConfirmOverwriteTiddler&quot;,
            &quot;text&quot;: &quot;Do you wish to overwrite the tiddler \&quot;&lt;$text text=&lt;&lt;title&gt;&gt;/&gt;\&quot;?&quot;
        },
        &quot;$:/language/ConfirmEditShadowTiddler&quot;: {
            &quot;title&quot;: &quot;$:/language/ConfirmEditShadowTiddler&quot;,
            &quot;text&quot;: &quot;You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \&quot;&lt;$text text=&lt;&lt;title&gt;&gt;/&gt;\&quot;?&quot;
        },
        &quot;$:/language/Count&quot;: {
            &quot;title&quot;: &quot;$:/language/Count&quot;,
            &quot;text&quot;: &quot;count&quot;
        },
        &quot;$:/language/DefaultNewTiddlerTitle&quot;: {
            &quot;title&quot;: &quot;$:/language/DefaultNewTiddlerTitle&quot;,
            &quot;text&quot;: &quot;New Tiddler&quot;
        },
        &quot;$:/language/DropMessage&quot;: {
            &quot;title&quot;: &quot;$:/language/DropMessage&quot;,
            &quot;text&quot;: &quot;Drop here (or use the 'Escape' key to cancel)&quot;
        },
        &quot;$:/language/Encryption/Cancel&quot;: {
            &quot;title&quot;: &quot;$:/language/Encryption/Cancel&quot;,
            &quot;text&quot;: &quot;Cancel&quot;
        },
        &quot;$:/language/Encryption/ConfirmClearPassword&quot;: {
            &quot;title&quot;: &quot;$:/language/Encryption/ConfirmClearPassword&quot;,
            &quot;text&quot;: &quot;Do you wish to clear the password? This will remove the encryption applied when saving this wiki&quot;
        },
        &quot;$:/language/Encryption/PromptSetPassword&quot;: {
            &quot;title&quot;: &quot;$:/language/Encryption/PromptSetPassword&quot;,
            &quot;text&quot;: &quot;Set a new password for this TiddlyWiki&quot;
        },
        &quot;$:/language/Encryption/Username&quot;: {
            &quot;title&quot;: &quot;$:/language/Encryption/Username&quot;,
            &quot;text&quot;: &quot;Username&quot;
        },
        &quot;$:/language/Encryption/Password&quot;: {
            &quot;title&quot;: &quot;$:/language/Encryption/Password&quot;,
            &quot;text&quot;: &quot;Password&quot;
        },
        &quot;$:/language/Encryption/RepeatPassword&quot;: {
            &quot;title&quot;: &quot;$:/language/Encryption/RepeatPassword&quot;,
            &quot;text&quot;: &quot;Repeat password&quot;
        },
        &quot;$:/language/Encryption/PasswordNoMatch&quot;: {
            &quot;title&quot;: &quot;$:/language/Encryption/PasswordNoMatch&quot;,
            &quot;text&quot;: &quot;Passwords do not match&quot;
        },
        &quot;$:/language/Encryption/SetPassword&quot;: {
            &quot;title&quot;: &quot;$:/language/Encryption/SetPassword&quot;,
            &quot;text&quot;: &quot;Set password&quot;
        },
        &quot;$:/language/Error/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Error/Caption&quot;,
            &quot;text&quot;: &quot;Error&quot;
        },
        &quot;$:/language/Error/Filter&quot;: {
            &quot;title&quot;: &quot;$:/language/Error/Filter&quot;,
            &quot;text&quot;: &quot;Filter error&quot;
        },
        &quot;$:/language/Error/FilterSyntax&quot;: {
            &quot;title&quot;: &quot;$:/language/Error/FilterSyntax&quot;,
            &quot;text&quot;: &quot;Syntax error in filter expression&quot;
        },
        &quot;$:/language/Error/IsFilterOperator&quot;: {
            &quot;title&quot;: &quot;$:/language/Error/IsFilterOperator&quot;,
            &quot;text&quot;: &quot;Filter Error: Unknown operand for the 'is' filter operator&quot;
        },
        &quot;$:/language/Error/LoadingPluginLibrary&quot;: {
            &quot;title&quot;: &quot;$:/language/Error/LoadingPluginLibrary&quot;,
            &quot;text&quot;: &quot;Error loading plugin library&quot;
        },
        &quot;$:/language/Error/RecursiveTransclusion&quot;: {
            &quot;title&quot;: &quot;$:/language/Error/RecursiveTransclusion&quot;,
            &quot;text&quot;: &quot;Recursive transclusion error in transclude widget&quot;
        },
        &quot;$:/language/Error/RetrievingSkinny&quot;: {
            &quot;title&quot;: &quot;$:/language/Error/RetrievingSkinny&quot;,
            &quot;text&quot;: &quot;Error retrieving skinny tiddler list&quot;
        },
        &quot;$:/language/Error/SavingToTWEdit&quot;: {
            &quot;title&quot;: &quot;$:/language/Error/SavingToTWEdit&quot;,
            &quot;text&quot;: &quot;Error saving to TWEdit&quot;
        },
        &quot;$:/language/Error/WhileSaving&quot;: {
            &quot;title&quot;: &quot;$:/language/Error/WhileSaving&quot;,
            &quot;text&quot;: &quot;Error while saving&quot;
        },
        &quot;$:/language/Error/XMLHttpRequest&quot;: {
            &quot;title&quot;: &quot;$:/language/Error/XMLHttpRequest&quot;,
            &quot;text&quot;: &quot;XMLHttpRequest error code&quot;
        },
        &quot;$:/language/InternalJavaScriptError/Title&quot;: {
            &quot;title&quot;: &quot;$:/language/InternalJavaScriptError/Title&quot;,
            &quot;text&quot;: &quot;Internal JavaScript Error&quot;
        },
        &quot;$:/language/InternalJavaScriptError/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/InternalJavaScriptError/Hint&quot;,
            &quot;text&quot;: &quot;Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser&quot;
        },
        &quot;$:/language/InvalidFieldName&quot;: {
            &quot;title&quot;: &quot;$:/language/InvalidFieldName&quot;,
            &quot;text&quot;: &quot;Illegal characters in field name \&quot;&lt;$text text=&lt;&lt;fieldName&gt;&gt;/&gt;\&quot;. Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)&quot;
        },
        &quot;$:/language/LazyLoadingWarning&quot;: {
            &quot;title&quot;: &quot;$:/language/LazyLoadingWarning&quot;,
            &quot;text&quot;: &quot;&lt;p&gt;Loading external text from ''&lt;$text text={{!!_canonical_uri}}/&gt;''&lt;/p&gt;&lt;p&gt;If this message doesn't disappear you may be using a browser that doesn't support external text in this configuration. See http://tiddlywiki.com/#ExternalText&lt;/p&gt;&quot;
        },
        &quot;$:/language/LoginToTiddlySpace&quot;: {
            &quot;title&quot;: &quot;$:/language/LoginToTiddlySpace&quot;,
            &quot;text&quot;: &quot;Login to TiddlySpace&quot;
        },
        &quot;$:/language/MissingTiddler/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/MissingTiddler/Hint&quot;,
            &quot;text&quot;: &quot;Missing tiddler \&quot;&lt;$text text=&lt;&lt;currentTiddler&gt;&gt;/&gt;\&quot; - click {{$:/core/images/edit-button}} to create&quot;
        },
        &quot;$:/language/No&quot;: {
            &quot;title&quot;: &quot;$:/language/No&quot;,
            &quot;text&quot;: &quot;No&quot;
        },
        &quot;$:/language/OfficialPluginLibrary&quot;: {
            &quot;title&quot;: &quot;$:/language/OfficialPluginLibrary&quot;,
            &quot;text&quot;: &quot;Official ~TiddlyWiki Plugin Library&quot;
        },
        &quot;$:/language/OfficialPluginLibrary/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/OfficialPluginLibrary/Hint&quot;,
            &quot;text&quot;: &quot;The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.&quot;
        },
        &quot;$:/language/PluginReloadWarning&quot;: {
            &quot;title&quot;: &quot;$:/language/PluginReloadWarning&quot;,
            &quot;text&quot;: &quot;Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect&quot;
        },
        &quot;$:/language/RecentChanges/DateFormat&quot;: {
            &quot;title&quot;: &quot;$:/language/RecentChanges/DateFormat&quot;,
            &quot;text&quot;: &quot;DDth MMM YYYY&quot;
        },
        &quot;$:/language/SystemTiddler/Tooltip&quot;: {
            &quot;title&quot;: &quot;$:/language/SystemTiddler/Tooltip&quot;,
            &quot;text&quot;: &quot;This is a system tiddler&quot;
        },
        &quot;$:/language/TagManager/Colour/Heading&quot;: {
            &quot;title&quot;: &quot;$:/language/TagManager/Colour/Heading&quot;,
            &quot;text&quot;: &quot;Colour&quot;
        },
        &quot;$:/language/TagManager/Count/Heading&quot;: {
            &quot;title&quot;: &quot;$:/language/TagManager/Count/Heading&quot;,
            &quot;text&quot;: &quot;Count&quot;
        },
        &quot;$:/language/TagManager/Icon/Heading&quot;: {
            &quot;title&quot;: &quot;$:/language/TagManager/Icon/Heading&quot;,
            &quot;text&quot;: &quot;Icon&quot;
        },
        &quot;$:/language/TagManager/Info/Heading&quot;: {
            &quot;title&quot;: &quot;$:/language/TagManager/Info/Heading&quot;,
            &quot;text&quot;: &quot;Info&quot;
        },
        &quot;$:/language/TagManager/Tag/Heading&quot;: {
            &quot;title&quot;: &quot;$:/language/TagManager/Tag/Heading&quot;,
            &quot;text&quot;: &quot;Tag&quot;
        },
        &quot;$:/language/Tiddler/DateFormat&quot;: {
            &quot;title&quot;: &quot;$:/language/Tiddler/DateFormat&quot;,
            &quot;text&quot;: &quot;DDth MMM YYYY at hh12:0mmam&quot;
        },
        &quot;$:/language/UnsavedChangesWarning&quot;: {
            &quot;title&quot;: &quot;$:/language/UnsavedChangesWarning&quot;,
            &quot;text&quot;: &quot;You have unsaved changes in TiddlyWiki&quot;
        },
        &quot;$:/language/Yes&quot;: {
            &quot;title&quot;: &quot;$:/language/Yes&quot;,
            &quot;text&quot;: &quot;Yes&quot;
        },
        &quot;$:/language/Modals/Download&quot;: {
            &quot;title&quot;: &quot;$:/language/Modals/Download&quot;,
            &quot;type&quot;: &quot;text/vnd.tiddlywiki&quot;,
            &quot;subtitle&quot;: &quot;Download changes&quot;,
            &quot;footer&quot;: &quot;&lt;$button message=\&quot;tm-close-tiddler\&quot;&gt;Close&lt;/$button&gt;&quot;,
            &quot;help&quot;: &quot;http://tiddlywiki.com/static/DownloadingChanges.html&quot;,
            &quot;text&quot;: &quot;Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \&quot;Download file\&quot; or \&quot;Save file\&quot;, and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n&quot;
        },
        &quot;$:/language/Modals/SaveInstructions&quot;: {
            &quot;title&quot;: &quot;$:/language/Modals/SaveInstructions&quot;,
            &quot;type&quot;: &quot;text/vnd.tiddlywiki&quot;,
            &quot;subtitle&quot;: &quot;Save your work&quot;,
            &quot;footer&quot;: &quot;&lt;$button message=\&quot;tm-close-tiddler\&quot;&gt;Close&lt;/$button&gt;&quot;,
            &quot;help&quot;: &quot;http://tiddlywiki.com/static/SavingChanges.html&quot;,
            &quot;text&quot;: &quot;Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n&quot;
        },
        &quot;$:/config/NewJournal/Title&quot;: {
            &quot;title&quot;: &quot;$:/config/NewJournal/Title&quot;,
            &quot;text&quot;: &quot;DDth MMM YYYY&quot;
        },
        &quot;$:/config/NewJournal/Tags&quot;: {
            &quot;title&quot;: &quot;$:/config/NewJournal/Tags&quot;,
            &quot;text&quot;: &quot;Journal&quot;
        },
        &quot;$:/language/Notifications/Save/Done&quot;: {
            &quot;title&quot;: &quot;$:/language/Notifications/Save/Done&quot;,
            &quot;text&quot;: &quot;Saved wiki&quot;
        },
        &quot;$:/language/Notifications/Save/Starting&quot;: {
            &quot;title&quot;: &quot;$:/language/Notifications/Save/Starting&quot;,
            &quot;text&quot;: &quot;Starting to save wiki&quot;
        },
        &quot;$:/language/Search/DefaultResults/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/DefaultResults/Caption&quot;,
            &quot;text&quot;: &quot;List&quot;
        },
        &quot;$:/language/Search/Filter/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Filter/Caption&quot;,
            &quot;text&quot;: &quot;Filter&quot;
        },
        &quot;$:/language/Search/Filter/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Filter/Hint&quot;,
            &quot;text&quot;: &quot;Search via a [[filter expression|http://tiddlywiki.com/static/Filters.html]]&quot;
        },
        &quot;$:/language/Search/Filter/Matches&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Filter/Matches&quot;,
            &quot;text&quot;: &quot;//&lt;small&gt;&lt;&lt;resultCount&gt;&gt; matches&lt;/small&gt;//&quot;
        },
        &quot;$:/language/Search/Matches&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Matches&quot;,
            &quot;text&quot;: &quot;//&lt;small&gt;&lt;&lt;resultCount&gt;&gt; matches&lt;/small&gt;//&quot;
        },
        &quot;$:/language/Search/Matches/All&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Matches/All&quot;,
            &quot;text&quot;: &quot;All matches:&quot;
        },
        &quot;$:/language/Search/Matches/Title&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Matches/Title&quot;,
            &quot;text&quot;: &quot;Title matches:&quot;
        },
        &quot;$:/language/Search/Search&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Search&quot;,
            &quot;text&quot;: &quot;Search&quot;
        },
        &quot;$:/language/Search/Shadows/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Shadows/Caption&quot;,
            &quot;text&quot;: &quot;Shadows&quot;
        },
        &quot;$:/language/Search/Shadows/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Shadows/Hint&quot;,
            &quot;text&quot;: &quot;Search for shadow tiddlers&quot;
        },
        &quot;$:/language/Search/Shadows/Matches&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Shadows/Matches&quot;,
            &quot;text&quot;: &quot;//&lt;small&gt;&lt;&lt;resultCount&gt;&gt; matches&lt;/small&gt;//&quot;
        },
        &quot;$:/language/Search/Standard/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Standard/Caption&quot;,
            &quot;text&quot;: &quot;Standard&quot;
        },
        &quot;$:/language/Search/Standard/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Standard/Hint&quot;,
            &quot;text&quot;: &quot;Search for standard tiddlers&quot;
        },
        &quot;$:/language/Search/Standard/Matches&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/Standard/Matches&quot;,
            &quot;text&quot;: &quot;//&lt;small&gt;&lt;&lt;resultCount&gt;&gt; matches&lt;/small&gt;//&quot;
        },
        &quot;$:/language/Search/System/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/System/Caption&quot;,
            &quot;text&quot;: &quot;System&quot;
        },
        &quot;$:/language/Search/System/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/System/Hint&quot;,
            &quot;text&quot;: &quot;Search for system tiddlers&quot;
        },
        &quot;$:/language/Search/System/Matches&quot;: {
            &quot;title&quot;: &quot;$:/language/Search/System/Matches&quot;,
            &quot;text&quot;: &quot;//&lt;small&gt;&lt;&lt;resultCount&gt;&gt; matches&lt;/small&gt;//&quot;
        },
        &quot;$:/language/SideBar/All/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/All/Caption&quot;,
            &quot;text&quot;: &quot;All&quot;
        },
        &quot;$:/language/SideBar/Contents/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/Contents/Caption&quot;,
            &quot;text&quot;: &quot;Contents&quot;
        },
        &quot;$:/language/SideBar/Drafts/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/Drafts/Caption&quot;,
            &quot;text&quot;: &quot;Drafts&quot;
        },
        &quot;$:/language/SideBar/Missing/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/Missing/Caption&quot;,
            &quot;text&quot;: &quot;Missing&quot;
        },
        &quot;$:/language/SideBar/More/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/More/Caption&quot;,
            &quot;text&quot;: &quot;More&quot;
        },
        &quot;$:/language/SideBar/Open/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/Open/Caption&quot;,
            &quot;text&quot;: &quot;Open&quot;
        },
        &quot;$:/language/SideBar/Orphans/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/Orphans/Caption&quot;,
            &quot;text&quot;: &quot;Orphans&quot;
        },
        &quot;$:/language/SideBar/Recent/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/Recent/Caption&quot;,
            &quot;text&quot;: &quot;Recent&quot;
        },
        &quot;$:/language/SideBar/Shadows/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/Shadows/Caption&quot;,
            &quot;text&quot;: &quot;Shadows&quot;
        },
        &quot;$:/language/SideBar/System/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/System/Caption&quot;,
            &quot;text&quot;: &quot;System&quot;
        },
        &quot;$:/language/SideBar/Tags/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/Tags/Caption&quot;,
            &quot;text&quot;: &quot;Tags&quot;
        },
        &quot;$:/language/SideBar/Tags/Untagged/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/Tags/Untagged/Caption&quot;,
            &quot;text&quot;: &quot;untagged&quot;
        },
        &quot;$:/language/SideBar/Tools/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/Tools/Caption&quot;,
            &quot;text&quot;: &quot;Tools&quot;
        },
        &quot;$:/language/SideBar/Types/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/SideBar/Types/Caption&quot;,
            &quot;text&quot;: &quot;Types&quot;
        },
        &quot;$:/SiteSubtitle&quot;: {
            &quot;title&quot;: &quot;$:/SiteSubtitle&quot;,
            &quot;text&quot;: &quot;a non-linear personal web notebook&quot;
        },
        &quot;$:/SiteTitle&quot;: {
            &quot;title&quot;: &quot;$:/SiteTitle&quot;,
            &quot;text&quot;: &quot;My ~TiddlyWiki&quot;
        },
        &quot;$:/language/Snippets/ListByTag&quot;: {
            &quot;title&quot;: &quot;$:/language/Snippets/ListByTag&quot;,
            &quot;tags&quot;: &quot;$:/tags/TextEditor/Snippet&quot;,
            &quot;caption&quot;: &quot;List of tiddlers by tag&quot;,
            &quot;text&quot;: &quot;&lt;&lt;list-links \&quot;[tag[task]sort[title]]\&quot;&gt;&gt;\n&quot;
        },
        &quot;$:/language/Snippets/MacroDefinition&quot;: {
            &quot;title&quot;: &quot;$:/language/Snippets/MacroDefinition&quot;,
            &quot;tags&quot;: &quot;$:/tags/TextEditor/Snippet&quot;,
            &quot;caption&quot;: &quot;Macro definition&quot;,
            &quot;text&quot;: &quot;\\define macroName(param1:\&quot;default value\&quot;,param2)\nText of the macro\n\\end\n&quot;
        },
        &quot;$:/language/Snippets/Table4x3&quot;: {
            &quot;title&quot;: &quot;$:/language/Snippets/Table4x3&quot;,
            &quot;tags&quot;: &quot;$:/tags/TextEditor/Snippet&quot;,
            &quot;caption&quot;: &quot;Table with 4 columns by 3 rows&quot;,
            &quot;text&quot;: &quot;|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n&quot;
        },
        &quot;$:/language/Snippets/TableOfContents&quot;: {
            &quot;title&quot;: &quot;$:/language/Snippets/TableOfContents&quot;,
            &quot;tags&quot;: &quot;$:/tags/TextEditor/Snippet&quot;,
            &quot;caption&quot;: &quot;Table of Contents&quot;,
            &quot;text&quot;: &quot;&lt;div class=\&quot;tc-table-of-contents\&quot;&gt;\n\n&lt;&lt;toc-selective-expandable 'TableOfContents'&gt;&gt;\n\n&lt;/div&gt;&quot;
        },
        &quot;$:/language/ThemeTweaks/ThemeTweaks&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/ThemeTweaks&quot;,
            &quot;text&quot;: &quot;Theme Tweaks&quot;
        },
        &quot;$:/language/ThemeTweaks/ThemeTweaks/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/ThemeTweaks/Hint&quot;,
            &quot;text&quot;: &quot;You can tweak certain aspects of the ''Vanilla'' theme.&quot;
        },
        &quot;$:/language/ThemeTweaks/Options&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Options&quot;,
            &quot;text&quot;: &quot;Options&quot;
        },
        &quot;$:/language/ThemeTweaks/Options/SidebarLayout&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Options/SidebarLayout&quot;,
            &quot;text&quot;: &quot;Sidebar layout&quot;
        },
        &quot;$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid&quot;,
            &quot;text&quot;: &quot;Fixed story, fluid sidebar&quot;
        },
        &quot;$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed&quot;,
            &quot;text&quot;: &quot;Fluid story, fixed sidebar&quot;
        },
        &quot;$:/language/ThemeTweaks/Options/StickyTitles&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Options/StickyTitles&quot;,
            &quot;text&quot;: &quot;Sticky titles&quot;
        },
        &quot;$:/language/ThemeTweaks/Options/StickyTitles/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Options/StickyTitles/Hint&quot;,
            &quot;text&quot;: &quot;Causes tiddler titles to \&quot;stick\&quot; to the top of the browser window. Caution: Does not work at all with Chrome, and causes some layout issues in Firefox&quot;
        },
        &quot;$:/language/ThemeTweaks/Options/CodeWrapping&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Options/CodeWrapping&quot;,
            &quot;text&quot;: &quot;Wrap long lines in code blocks&quot;
        },
        &quot;$:/language/ThemeTweaks/Settings&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Settings&quot;,
            &quot;text&quot;: &quot;Settings&quot;
        },
        &quot;$:/language/ThemeTweaks/Settings/FontFamily&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Settings/FontFamily&quot;,
            &quot;text&quot;: &quot;Font family&quot;
        },
        &quot;$:/language/ThemeTweaks/Settings/CodeFontFamily&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Settings/CodeFontFamily&quot;,
            &quot;text&quot;: &quot;Code font family&quot;
        },
        &quot;$:/language/ThemeTweaks/Settings/BackgroundImage&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Settings/BackgroundImage&quot;,
            &quot;text&quot;: &quot;Page background image&quot;
        },
        &quot;$:/language/ThemeTweaks/Settings/BackgroundImageAttachment&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Settings/BackgroundImageAttachment&quot;,
            &quot;text&quot;: &quot;Page background image attachment&quot;
        },
        &quot;$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll&quot;,
            &quot;text&quot;: &quot;Scroll with tiddlers&quot;
        },
        &quot;$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed&quot;,
            &quot;text&quot;: &quot;Fixed to window&quot;
        },
        &quot;$:/language/ThemeTweaks/Settings/BackgroundImageSize&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Settings/BackgroundImageSize&quot;,
            &quot;text&quot;: &quot;Page background image size&quot;
        },
        &quot;$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto&quot;,
            &quot;text&quot;: &quot;Auto&quot;
        },
        &quot;$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover&quot;,
            &quot;text&quot;: &quot;Cover&quot;
        },
        &quot;$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain&quot;,
            &quot;text&quot;: &quot;Contain&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics&quot;,
            &quot;text&quot;: &quot;Sizes&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/FontSize&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/FontSize&quot;,
            &quot;text&quot;: &quot;Font size&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/LineHeight&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/LineHeight&quot;,
            &quot;text&quot;: &quot;Line height&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/BodyFontSize&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/BodyFontSize&quot;,
            &quot;text&quot;: &quot;Font size for tiddler body&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/BodyLineHeight&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/BodyLineHeight&quot;,
            &quot;text&quot;: &quot;Line height for tiddler body&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/StoryLeft&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/StoryLeft&quot;,
            &quot;text&quot;: &quot;Story left position&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/StoryLeft/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/StoryLeft/Hint&quot;,
            &quot;text&quot;: &quot;how far the left margin of the story river&lt;br&gt;(tiddler area) is from the left of the page&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/StoryTop&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/StoryTop&quot;,
            &quot;text&quot;: &quot;Story top position&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/StoryTop/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/StoryTop/Hint&quot;,
            &quot;text&quot;: &quot;how far the top margin of the story river&lt;br&gt;is from the top of the page&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/StoryRight&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/StoryRight&quot;,
            &quot;text&quot;: &quot;Story right&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/StoryRight/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/StoryRight/Hint&quot;,
            &quot;text&quot;: &quot;how far the left margin of the sidebar &lt;br&gt;is from the left of the page&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/StoryWidth&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/StoryWidth&quot;,
            &quot;text&quot;: &quot;Story width&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/StoryWidth/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/StoryWidth/Hint&quot;,
            &quot;text&quot;: &quot;the overall width of the story river&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/TiddlerWidth&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/TiddlerWidth&quot;,
            &quot;text&quot;: &quot;Tiddler width&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint&quot;,
            &quot;text&quot;: &quot;within the story river&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/SidebarBreakpoint&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/SidebarBreakpoint&quot;,
            &quot;text&quot;: &quot;Sidebar breakpoint&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint&quot;,
            &quot;text&quot;: &quot;the minimum page width at which the story&lt;br&gt;river and sidebar will appear side by side&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/SidebarWidth&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/SidebarWidth&quot;,
            &quot;text&quot;: &quot;Sidebar width&quot;
        },
        &quot;$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint&quot;,
            &quot;text&quot;: &quot;the width of the sidebar in fluid-fixed layout&quot;
        },
        &quot;$:/language/TiddlerInfo/Advanced/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Advanced/Caption&quot;,
            &quot;text&quot;: &quot;Advanced&quot;
        },
        &quot;$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint&quot;,
            &quot;text&quot;: &quot;none&quot;
        },
        &quot;$:/language/TiddlerInfo/Advanced/PluginInfo/Heading&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Advanced/PluginInfo/Heading&quot;,
            &quot;text&quot;: &quot;Plugin Details&quot;
        },
        &quot;$:/language/TiddlerInfo/Advanced/PluginInfo/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Advanced/PluginInfo/Hint&quot;,
            &quot;text&quot;: &quot;This plugin contains the following shadow tiddlers:&quot;
        },
        &quot;$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading&quot;,
            &quot;text&quot;: &quot;Shadow Status&quot;
        },
        &quot;$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint&quot;,
            &quot;text&quot;: &quot;The tiddler &lt;$link to=&lt;&lt;infoTiddler&gt;&gt;&gt;&lt;$text text=&lt;&lt;infoTiddler&gt;&gt;/&gt;&lt;/$link&gt; is not a shadow tiddler&quot;
        },
        &quot;$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint&quot;,
            &quot;text&quot;: &quot;The tiddler &lt;$link to=&lt;&lt;infoTiddler&gt;&gt;&gt;&lt;$text text=&lt;&lt;infoTiddler&gt;&gt;/&gt;&lt;/$link&gt; is a shadow tiddler&quot;
        },
        &quot;$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source&quot;,
            &quot;text&quot;: &quot;It is defined in the plugin &lt;$link to=&lt;&lt;pluginTiddler&gt;&gt;&gt;&lt;$text text=&lt;&lt;pluginTiddler&gt;&gt;/&gt;&lt;/$link&gt;&quot;
        },
        &quot;$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint&quot;,
            &quot;text&quot;: &quot;It is overridden by an ordinary tiddler&quot;
        },
        &quot;$:/language/TiddlerInfo/Fields/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Fields/Caption&quot;,
            &quot;text&quot;: &quot;Fields&quot;
        },
        &quot;$:/language/TiddlerInfo/List/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/List/Caption&quot;,
            &quot;text&quot;: &quot;List&quot;
        },
        &quot;$:/language/TiddlerInfo/List/Empty&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/List/Empty&quot;,
            &quot;text&quot;: &quot;This tiddler does not have a list&quot;
        },
        &quot;$:/language/TiddlerInfo/Listed/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Listed/Caption&quot;,
            &quot;text&quot;: &quot;Listed&quot;
        },
        &quot;$:/language/TiddlerInfo/Listed/Empty&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Listed/Empty&quot;,
            &quot;text&quot;: &quot;This tiddler is not listed by any others&quot;
        },
        &quot;$:/language/TiddlerInfo/References/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/References/Caption&quot;,
            &quot;text&quot;: &quot;References&quot;
        },
        &quot;$:/language/TiddlerInfo/References/Empty&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/References/Empty&quot;,
            &quot;text&quot;: &quot;No tiddlers link to this one&quot;
        },
        &quot;$:/language/TiddlerInfo/Tagging/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Tagging/Caption&quot;,
            &quot;text&quot;: &quot;Tagging&quot;
        },
        &quot;$:/language/TiddlerInfo/Tagging/Empty&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Tagging/Empty&quot;,
            &quot;text&quot;: &quot;No tiddlers are tagged with this one&quot;
        },
        &quot;$:/language/TiddlerInfo/Tools/Caption&quot;: {
            &quot;title&quot;: &quot;$:/language/TiddlerInfo/Tools/Caption&quot;,
            &quot;text&quot;: &quot;Tools&quot;
        },
        &quot;$:/language/Docs/Types/application/javascript&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/application/javascript&quot;,
            &quot;description&quot;: &quot;JavaScript code&quot;,
            &quot;name&quot;: &quot;application/javascript&quot;,
            &quot;group&quot;: &quot;Developer&quot;
        },
        &quot;$:/language/Docs/Types/application/json&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/application/json&quot;,
            &quot;description&quot;: &quot;JSON data&quot;,
            &quot;name&quot;: &quot;application/json&quot;,
            &quot;group&quot;: &quot;Developer&quot;
        },
        &quot;$:/language/Docs/Types/application/x-tiddler-dictionary&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/application/x-tiddler-dictionary&quot;,
            &quot;description&quot;: &quot;Data dictionary&quot;,
            &quot;name&quot;: &quot;application/x-tiddler-dictionary&quot;,
            &quot;group&quot;: &quot;Developer&quot;
        },
        &quot;$:/language/Docs/Types/image/gif&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/image/gif&quot;,
            &quot;description&quot;: &quot;GIF image&quot;,
            &quot;name&quot;: &quot;image/gif&quot;,
            &quot;group&quot;: &quot;Image&quot;
        },
        &quot;$:/language/Docs/Types/image/jpeg&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/image/jpeg&quot;,
            &quot;description&quot;: &quot;JPEG image&quot;,
            &quot;name&quot;: &quot;image/jpeg&quot;,
            &quot;group&quot;: &quot;Image&quot;
        },
        &quot;$:/language/Docs/Types/image/png&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/image/png&quot;,
            &quot;description&quot;: &quot;PNG image&quot;,
            &quot;name&quot;: &quot;image/png&quot;,
            &quot;group&quot;: &quot;Image&quot;
        },
        &quot;$:/language/Docs/Types/image/svg+xml&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/image/svg+xml&quot;,
            &quot;description&quot;: &quot;Structured Vector Graphics image&quot;,
            &quot;name&quot;: &quot;image/svg+xml&quot;,
            &quot;group&quot;: &quot;Image&quot;
        },
        &quot;$:/language/Docs/Types/image/x-icon&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/image/x-icon&quot;,
            &quot;description&quot;: &quot;ICO format icon file&quot;,
            &quot;name&quot;: &quot;image/x-icon&quot;,
            &quot;group&quot;: &quot;Image&quot;
        },
        &quot;$:/language/Docs/Types/text/css&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/text/css&quot;,
            &quot;description&quot;: &quot;Static stylesheet&quot;,
            &quot;name&quot;: &quot;text/css&quot;,
            &quot;group&quot;: &quot;Developer&quot;
        },
        &quot;$:/language/Docs/Types/text/html&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/text/html&quot;,
            &quot;description&quot;: &quot;HTML markup&quot;,
            &quot;name&quot;: &quot;text/html&quot;,
            &quot;group&quot;: &quot;Text&quot;
        },
        &quot;$:/language/Docs/Types/text/plain&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/text/plain&quot;,
            &quot;description&quot;: &quot;Plain text&quot;,
            &quot;name&quot;: &quot;text/plain&quot;,
            &quot;group&quot;: &quot;Text&quot;
        },
        &quot;$:/language/Docs/Types/text/vnd.tiddlywiki&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/text/vnd.tiddlywiki&quot;,
            &quot;description&quot;: &quot;TiddlyWiki 5&quot;,
            &quot;name&quot;: &quot;text/vnd.tiddlywiki&quot;,
            &quot;group&quot;: &quot;Text&quot;
        },
        &quot;$:/language/Docs/Types/text/x-tiddlywiki&quot;: {
            &quot;title&quot;: &quot;$:/language/Docs/Types/text/x-tiddlywiki&quot;,
            &quot;description&quot;: &quot;TiddlyWiki Classic&quot;,
            &quot;name&quot;: &quot;text/x-tiddlywiki&quot;,
            &quot;group&quot;: &quot;Text&quot;
        },
        &quot;$:/languages/en-GB/icon&quot;: {
            &quot;title&quot;: &quot;$:/languages/en-GB/icon&quot;,
            &quot;type&quot;: &quot;image/svg+xml&quot;,
            &quot;text&quot;: &quot;&lt;svg xmlns=\&quot;http://www.w3.org/2000/svg\&quot; viewBox=\&quot;0 0 60 30\&quot; width=\&quot;1200\&quot; height=\&quot;600\&quot;&gt;\n&lt;clipPath id=\&quot;t\&quot;&gt;\n\t&lt;path d=\&quot;M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\&quot;/&gt;\n&lt;/clipPath&gt;\n&lt;path d=\&quot;M0,0 v30 h60 v-30 z\&quot; fill=\&quot;#00247d\&quot;/&gt;\n&lt;path d=\&quot;M0,0 L60,30 M60,0 L0,30\&quot; stroke=\&quot;#fff\&quot; stroke-width=\&quot;6\&quot;/&gt;\n&lt;path d=\&quot;M0,0 L60,30 M60,0 L0,30\&quot; clip-path=\&quot;url(#t)\&quot; stroke=\&quot;#cf142b\&quot; stroke-width=\&quot;4\&quot;/&gt;\n&lt;path d=\&quot;M30,0 v30 M0,15 h60\&quot; stroke=\&quot;#fff\&quot; stroke-width=\&quot;10\&quot;/&gt;\n&lt;path d=\&quot;M30,0 v30 M0,15 h60\&quot; stroke=\&quot;#cf142b\&quot; stroke-width=\&quot;6\&quot;/&gt;\n&lt;/svg&gt;\n&quot;
        },
        &quot;$:/languages/en-GB&quot;: {
            &quot;title&quot;: &quot;$:/languages/en-GB&quot;,
            &quot;name&quot;: &quot;en-GB&quot;,
            &quot;description&quot;: &quot;English (British)&quot;,
            &quot;author&quot;: &quot;JeremyRuston&quot;,
            &quot;core-version&quot;: &quot;&gt;=5.0.0\&quot;&quot;,
            &quot;text&quot;: &quot;Stub pseudo-plugin for the default language&quot;
        },
        &quot;$:/core/modules/commander.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\&quot;path\&quot;);\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken &gt;= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \&quot;--\&quot;) {\n\t\t\tthis.callback(\&quot;Missing command: \&quot; + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken &lt; this.commandTokens.length &amp;&amp; \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \&quot;--\&quot;) {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\&quot;Unknown command: \&quot; + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\&quot;Executing command: \&quot; + commandName + \&quot; \&quot; + params.join(\&quot; \&quot;) + \&quot;\\n\&quot;);\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \&quot;command\&quot;;\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commander.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;global&quot;
        },
        &quot;$:/core/modules/commands/build.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;build\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \&quot;No build targets defined\&quot;;\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length &gt; 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex&lt;targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \&quot;Build target '\&quot; + target + \&quot;' not found\&quot;;\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/build.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/clearpassword.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;clearpassword\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/clearpassword.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/editions.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;editions\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\&quot;Available editions:\\n\\n\&quot;);\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\&quot;    \&quot; + name + \&quot;: \&quot; + info.description + \&quot;\\n\&quot;);\n\t});\n\tthis.commander.streams.output.write(\&quot;\\n\&quot;);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/editions.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/help.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;help\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \&quot;default\&quot;,\n\t\thelpBase = \&quot;$:/language/Help/\&quot;,\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \&quot;notfound\&quot;;\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\&quot;text/plain-formatted\&quot;,helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\&quot;\&quot;);\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/help.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/init.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;init\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\&quot;fs\&quot;),\n\t\tpath = require(\&quot;path\&quot;);\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) &amp;&amp; !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \&quot;Wiki folder is not empty\&quot;;\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length &gt; 0 ? this.params : [\&quot;empty\&quot;];\n\tfor(var editionIndex=0; editionIndex&lt;editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \&quot;Edition '\&quot; + editionName + \&quot;' not found\&quot;;\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\&quot;Copied edition '\&quot; + editionName + \&quot;' to \&quot; + $tw.boot.wikiPath + \&quot;\\n\&quot;);\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \&quot;/tiddlywiki.info\&quot;,\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/init.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/load.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;load\&quot;,\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\&quot;fs\&quot;),\n\t\tpath = require(\&quot;path\&quot;);\n\tif(this.params.length &lt; 1) {\n\t\treturn \&quot;Missing filename\&quot;;\n\t}\n\tvar ext = path.extname(self.params[0]);\n\tfs.readFile(this.params[0],$tw.utils.getTypeEncoding(ext),function(err,data) {\n\t\tif (err) {\n\t\t\tself.callback(err);\n\t\t} else {\n\t\t\tvar fields = {title: self.params[0]},\n\t\t\t\ttype = path.extname(self.params[0]);\n\t\t\tvar tiddlers = self.commander.wiki.deserializeTiddlers(type,data,fields);\n\t\t\tif(!tiddlers) {\n\t\t\t\tself.callback(\&quot;No tiddlers found in file \\\&quot;\&quot; + self.params[0] + \&quot;\\\&quot;\&quot;);\n\t\t\t} else {\n\t\t\t\tfor(var t=0; t&lt;tiddlers.length; t++) {\n\t\t\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddlers[t]));\n\t\t\t\t}\n\t\t\t\tself.callback(null);\t\n\t\t\t}\n\t\t}\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/load.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/makelibrary.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \&quot;library\&quot;\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;makelibrary\&quot;,\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \&quot;$:/UpgradeLibrary\&quot;;\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\&quot;fs\&quot;),\n\t\tpath = require(\&quot;path\&quot;),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = fs.readdirSync(folder);\n\t\t\tfor(var p=0; p&lt;pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\&quot;./\&quot; + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields &amp;&amp; pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = fs.readdirSync(folder);\n\t\t\tfor(var t=0; t&lt;publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\&quot;./\&quot; + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.pluginsPath));\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.themesPath));\n\tcollectPlugins(path.resolve($tw.boot.corePath,$tw.config.languagesPath));\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \&quot;application/json\&quot;,\n\t\t\&quot;plugin-type\&quot;: \&quot;library\&quot;,\n\t\t\&quot;text\&quot;: JSON.stringify({tiddlers: tiddlers},null,$tw.config.preferences.jsonSpaces)\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/makelibrary.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/output.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;output\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\&quot;fs\&quot;),\n\t\tpath = require(\&quot;path\&quot;);\n\tif(this.params.length &lt; 1) {\n\t\treturn \&quot;Missing output path\&quot;;\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/output.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/password.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;password\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length &lt; 1) {\n\t\treturn \&quot;Missing password\&quot;;\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/password.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/rendertiddler.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;rendertiddler\&quot;,\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length &lt; 2) {\n\t\treturn \&quot;Missing filename\&quot;;\n\t}\n\tvar self = this,\n\t\tfs = require(\&quot;fs\&quot;),\n\t\tpath = require(\&quot;path\&quot;),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \&quot;text/html\&quot;,\n\t\ttemplate = this.params[3],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\&quot;utf8\&quot;,function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/rendertiddler.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/rendertiddlers.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nvar widget = require(\&quot;$:/core/modules/widgets/widget.js\&quot;);\n\nexports.info = {\n\tname: \&quot;rendertiddlers\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length &lt; 2) {\n\t\treturn \&quot;Missing filename\&quot;;\n\t}\n\tvar self = this,\n\t\tfs = require(\&quot;fs\&quot;),\n\t\tpath = require(\&quot;path\&quot;),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \&quot;text/html\&quot;,\n\t\textension = this.params[4] || \&quot;.html\&quot;,\n\t\tdeleteDirectory = (this.params[5] || \&quot;\&quot;).toLowerCase() !== \&quot;noclean\&quot;,\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\&quot;div\&quot;);\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \&quot;text/html\&quot; ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\&quot;tv-get-export-path\&quot;)) {\n\t\t\tvar macroPath = $tw.macros[\&quot;tv-get-export-path\&quot;].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\&quot;utf8\&quot;);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/rendertiddlers.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/savelibrarytiddlers.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers &lt;tiddler&gt; &lt;pathname&gt; &lt;skinnylisting&gt;\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;savelibrarytiddlers\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length &lt; 2) {\n\t\treturn \&quot;Missing filename\&quot;;\n\t}\n\tvar self = this,\n\t\tfs = require(\&quot;fs\&quot;),\n\t\tpath = require(\&quot;path\&quot;),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \&quot;'\&quot; + containerTitle + \&quot;' is not a tiddler bundle\&quot;;\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \&quot;.json\&quot;);\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler,null,$tw.config.preferences.jsonSpaces),\&quot;utf8\&quot;);\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \&quot;/readme\&quot;] || {}).text,\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \&quot;/icon\&quot;] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType &amp;&amp; iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{text: undefined, readme: readmeContent, icon: iconContent}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/savelibrarytiddlers.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/savetiddler.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;savetiddler\&quot;,\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length &lt; 2) {\n\t\treturn \&quot;Missing filename\&quot;;\n\t}\n\tvar self = this,\n\t\tfs = require(\&quot;fs\&quot;),\n\t\tpath = require(\&quot;path\&quot;),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \&quot;text/vnd.tiddlywiki\&quot;,\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \&quot;utf8\&quot;};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \&quot;Missing tiddler: \&quot; + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/savetiddler.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/savetiddlers.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nvar widget = require(\&quot;$:/core/modules/widgets/widget.js\&quot;);\n\nexports.info = {\n\tname: \&quot;savetiddlers\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length &lt; 1) {\n\t\treturn \&quot;Missing filename\&quot;;\n\t}\n\tvar self = this,\n\t\tfs = require(\&quot;fs\&quot;),\n\t\tpath = require(\&quot;path\&quot;),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \&quot;\&quot;).toLowerCase() !== \&quot;noclean\&quot;,\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \&quot;text/vnd.tiddlywiki\&quot;,\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \&quot;utf8\&quot;},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/savetiddlers.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/server.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nif($tw.node) {\n\tvar util = require(\&quot;util\&quot;),\n\t\tfs = require(\&quot;fs\&quot;),\n\t\turl = require(\&quot;url\&quot;),\n\t\tpath = require(\&quot;path\&quot;),\n\t\thttp = require(\&quot;http\&quot;);\n}\n\nexports.info = {\n\tname: \&quot;server\&quot;,\n\tsynchronous: true\n};\n\n/*\nA simple HTTP server with regexp-based routes\n*/\nfunction SimpleServer(options) {\n\tthis.routes = options.routes || [];\n\tthis.wiki = options.wiki;\n\tthis.variables = options.variables || {};\n}\n\nSimpleServer.prototype.set = function(obj) {\n\tvar self = this;\n\t$tw.utils.each(obj,function(value,name) {\n\t\tself.variables[name] = value;\n\t});\n};\n\nSimpleServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nSimpleServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nSimpleServer.prototype.findMatchingRoute = function(request,state) {\n\tvar pathprefix = this.get(\&quot;pathprefix\&quot;) || \&quot;\&quot;;\n\tfor(var t=0; t&lt;this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(pathprefix) {\n\t\t\tif(pathname.substr(0,pathprefix.length) === pathprefix) {\n\t\t\t\tpathname = pathname.substr(pathprefix.length);\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match &amp;&amp; request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p&lt;match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nSimpleServer.prototype.checkCredentials = function(request,incomingUsername,incomingPassword) {\n\tvar header = request.headers.authorization || \&quot;\&quot;,\n\t\ttoken = header.split(/\\s+/).pop() || \&quot;\&quot;,\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tusername = parts[0],\n\t\tpassword = parts[1];\n\tif(incomingUsername === username &amp;&amp; incomingPassword === password) {\n\t\treturn \&quot;ALLOWED\&quot;;\n\t} else {\n\t\treturn \&quot;DENIED\&quot;;\n\t}\n};\n\nSimpleServer.prototype.listen = function(port,host) {\n\tvar self = this;\n\thttp.createServer(function(request,response) {\n\t\t// Compose the state object\n\t\tvar state = {};\n\t\tstate.wiki = self.wiki;\n\t\tstate.server = self;\n\t\tstate.urlInfo = url.parse(request.url);\n\t\t// Find the route that matches this path\n\t\tvar route = self.findMatchingRoute(request,state);\n\t\t// Check for the username and password if we've got one\n\t\tvar username = self.get(\&quot;username\&quot;),\n\t\t\tpassword = self.get(\&quot;password\&quot;);\n\t\tif(username &amp;&amp; password) {\n\t\t\t// Check they match\n\t\t\tif(self.checkCredentials(request,username,password) !== \&quot;ALLOWED\&quot;) {\n\t\t\t\tvar servername = state.wiki.getTiddlerText(\&quot;$:/SiteTitle\&quot;) || \&quot;TiddlyWiki5\&quot;;\n\t\t\t\tresponse.writeHead(401,\&quot;Authentication required\&quot;,{\n\t\t\t\t\t\&quot;WWW-Authenticate\&quot;: 'Basic realm=\&quot;Please provide your username and password to login to ' + servername + '\&quot;'\n\t\t\t\t});\n\t\t\t\tresponse.end();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// Return a 404 if we didn't find a route\n\t\tif(!route) {\n\t\t\tresponse.writeHead(404);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t\t// Set the encoding for the incoming request\n\t\t// TODO: Presumably this would need tweaking if we supported PUTting binary tiddlers\n\t\trequest.setEncoding(\&quot;utf8\&quot;);\n\t\t// Dispatch the appropriate method\n\t\tswitch(request.method) {\n\t\t\tcase \&quot;GET\&quot;: // Intentional fall-through\n\t\t\tcase \&quot;DELETE\&quot;:\n\t\t\t\troute.handler(request,response,state);\n\t\t\t\tbreak;\n\t\t\tcase \&quot;PUT\&quot;:\n\t\t\t\tvar data = \&quot;\&quot;;\n\t\t\t\trequest.on(\&quot;data\&quot;,function(chunk) {\n\t\t\t\t\tdata += chunk.toString();\n\t\t\t\t});\n\t\t\t\trequest.on(\&quot;end\&quot;,function() {\n\t\t\t\t\tstate.data = data;\n\t\t\t\t\troute.handler(request,response,state);\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t}).listen(port,host);\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n\t// Set up server\n\tthis.server = new SimpleServer({\n\t\twiki: this.commander.wiki\n\t});\n\t// Add route handlers\n\tthis.server.addRoute({\n\t\tmethod: \&quot;PUT\&quot;,\n\t\tpath: /^\\/recipes\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]),\n\t\t\t\tfields = JSON.parse(state.data);\n\t\t\t// Pull up any subfields in the `fields` object\n\t\t\tif(fields.fields) {\n\t\t\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\t\t\tfields[name] = field;\n\t\t\t\t});\n\t\t\t\tdelete fields.fields;\n\t\t\t}\n\t\t\t// Remove any revision field\n\t\t\tif(fields.revision) {\n\t\t\t\tdelete fields.revision;\n\t\t\t}\n\t\t\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\t\t\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\t\t\tresponse.writeHead(204, \&quot;OK\&quot;,{\n\t\t\t\tEtag: \&quot;\\\&quot;default/\&quot; + encodeURIComponent(title) + \&quot;/\&quot; + changeCount + \&quot;:\\\&quot;\&quot;,\n\t\t\t\t\&quot;Content-Type\&quot;: \&quot;text/plain\&quot;\n\t\t\t});\n\t\t\tresponse.end();\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \&quot;DELETE\&quot;,\n\t\tpath: /^\\/bags\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]);\n\t\t\tstate.wiki.deleteTiddler(title);\n\t\t\tresponse.writeHead(204, \&quot;OK\&quot;, {\n\t\t\t\t\&quot;Content-Type\&quot;: \&quot;text/plain\&quot;\n\t\t\t});\n\t\t\tresponse.end();\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \&quot;GET\&quot;,\n\t\tpath: /^\\/$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\&quot;Content-Type\&quot;: state.server.get(\&quot;serveType\&quot;)});\n\t\t\tvar text = state.wiki.renderTiddler(state.server.get(\&quot;renderType\&quot;),state.server.get(\&quot;rootTiddler\&quot;));\n\t\t\tresponse.end(text,\&quot;utf8\&quot;);\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \&quot;GET\&quot;,\n\t\tpath: /^\\/status$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\&quot;Content-Type\&quot;: \&quot;application/json\&quot;});\n\t\t\tvar text = JSON.stringify({\n\t\t\t\tusername: state.server.get(\&quot;username\&quot;),\n\t\t\t\tspace: {\n\t\t\t\t\trecipe: \&quot;default\&quot;\n\t\t\t\t},\n\t\t\t\ttiddlywiki_version: $tw.version\n\t\t\t});\n\t\t\tresponse.end(text,\&quot;utf8\&quot;);\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \&quot;GET\&quot;,\n\t\tpath: /^\\/favicon.ico$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\&quot;Content-Type\&quot;: \&quot;image/x-icon\&quot;});\n\t\t\tvar buffer = state.wiki.getTiddlerText(\&quot;$:/favicon.ico\&quot;,\&quot;\&quot;);\n\t\t\tresponse.end(buffer,\&quot;base64\&quot;);\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \&quot;GET\&quot;,\n\t\tpath: /^\\/recipes\\/default\\/tiddlers.json$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\&quot;Content-Type\&quot;: \&quot;application/json\&quot;});\n\t\t\tvar tiddlers = [];\n\t\t\tstate.wiki.forEachTiddler({sortField: \&quot;title\&quot;},function(title,tiddler) {\n\t\t\t\tvar tiddlerFields = {};\n\t\t\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\t\t\tif(name !== \&quot;text\&quot;) {\n\t\t\t\t\t\ttiddlerFields[name] = tiddler.getFieldString(name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\t\ttiddlerFields.type = tiddlerFields.type || \&quot;text/vnd.tiddlywiki\&quot;;\n\t\t\t\ttiddlers.push(tiddlerFields);\n\t\t\t});\n\t\t\tvar text = JSON.stringify(tiddlers);\n\t\t\tresponse.end(text,\&quot;utf8\&quot;);\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \&quot;GET\&quot;,\n\t\tpath: /^\\/recipes\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]),\n\t\t\t\ttiddler = state.wiki.getTiddler(title),\n\t\t\t\ttiddlerFields = {},\n\t\t\t\tknownFields = [\n\t\t\t\t\t\&quot;bag\&quot;, \&quot;created\&quot;, \&quot;creator\&quot;, \&quot;modified\&quot;, \&quot;modifier\&quot;, \&quot;permissions\&quot;, \&quot;recipe\&quot;, \&quot;revision\&quot;, \&quot;tags\&quot;, \&quot;text\&quot;, \&quot;title\&quot;, \&quot;type\&quot;, \&quot;uri\&quot;\n\t\t\t\t];\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\t\t\ttiddlerFields[name] = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\t\ttiddlerFields.type = tiddlerFields.type || \&quot;text/vnd.tiddlywiki\&quot;;\n\t\t\t\tresponse.writeHead(200, {\&quot;Content-Type\&quot;: \&quot;application/json\&quot;});\n\t\t\t\tresponse.end(JSON.stringify(tiddlerFields),\&quot;utf8\&quot;);\n\t\t\t} else {\n\t\t\t\tresponse.writeHead(404);\n\t\t\t\tresponse.end();\n\t\t\t}\n\t\t}\n\t});\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\&quot;Warning: Wiki folder '\&quot; + $tw.boot.wikiPath + \&quot;' does not exist or is missing a tiddlywiki.info file\&quot;);\n\t}\n\tvar port = this.params[0] || \&quot;8080\&quot;,\n\t\trootTiddler = this.params[1] || \&quot;$:/core/save/all\&quot;,\n\t\trenderType = this.params[2] || \&quot;text/plain\&quot;,\n\t\tserveType = this.params[3] || \&quot;text/html\&quot;,\n\t\tusername = this.params[4],\n\t\tpassword = this.params[5],\n\t\thost = this.params[6] || \&quot;127.0.0.1\&quot;,\n\t\tpathprefix = this.params[7];\n\tthis.server.set({\n\t\trootTiddler: rootTiddler,\n\t\trenderType: renderType,\n\t\tserveType: serveType,\n\t\tusername: username,\n\t\tpassword: password,\n\t\tpathprefix: pathprefix\n\t});\n\tthis.server.listen(port,host);\n\tconsole.log(\&quot;Serving on \&quot; + host + \&quot;:\&quot; + port);\n\tconsole.log(\&quot;(press ctrl-C to exit)\&quot;);\n\t// Warn if required plugins are missing\n\tif(!$tw.wiki.getTiddler(\&quot;$:/plugins/tiddlywiki/tiddlyweb\&quot;) || !$tw.wiki.getTiddler(\&quot;$:/plugins/tiddlywiki/filesystem\&quot;)) {\n\t\t$tw.utils.warning(\&quot;Warning: Plugins required for client-server operation (\\\&quot;tiddlywiki/filesystem\\\&quot; and \\\&quot;tiddlywiki/tiddlyweb\\\&quot;) are missing from tiddlywiki.info file\&quot;);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/server.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/setfield.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nvar widget = require(\&quot;$:/core/modules/widgets/widget.js\&quot;);\n\nexports.info = {\n\tname: \&quot;setfield\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length &lt; 4) {\n\t\treturn \&quot;Missing parameters\&quot;;\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \&quot;text\&quot;,\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \&quot;text/plain\&quot;,\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\&quot;div\&quot;);\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \&quot;text/html\&quot; ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/setfield.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/unpackplugin.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;unpackplugin\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length &lt; 1) {\n\t\treturn \&quot;Missing plugin name\&quot;;\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \&quot;Plugin '\&quot; + title + \&quot;' not found\&quot;;\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/unpackplugin.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/verbose.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;verbose\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\&quot;Boot log:\\n  \&quot; + $tw.boot.logMessages.join(\&quot;\\n  \&quot;) + \&quot;\\n\&quot;);\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/verbose.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/commands/version.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.info = {\n\tname: \&quot;version\&quot;,\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \&quot;\\n\&quot;);\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/commands/version.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;command&quot;
        },
        &quot;$:/core/modules/config.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \&quot;[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\&quot;,\n\tlowerLetter: \&quot;[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\&quot;,\n\tanyLetter:   \&quot;[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\&quot;,\n\tblockPrefixLetters:\t\&quot;[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\&quot;\n};\n\nexports.textPrimitives.unWikiLink = \&quot;~\&quot;;\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \&quot;+\&quot; +\n\texports.textPrimitives.lowerLetter + \&quot;+\&quot; +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \&quot;*\&quot;;\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \&quot;area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\&quot;.split(\&quot;,\&quot;);\n\nexports.htmlBlockElements = \&quot;address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\&quot;.split(\&quot;,\&quot;);\n\nexports.htmlUnsafeElements = \&quot;script\&quot;.split(\&quot;,\&quot;);\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/config.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;config&quot;
        },
        &quot;$:/core/modules/deserializers.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n&lt;div title=\&quot;Title\&quot; creator=\&quot;JoeBloggs\&quot; modifier=\&quot;JoeBloggs\&quot; created=\&quot;201102111106\&quot; modified=\&quot;201102111310\&quot; tags=\&quot;myTag [[my long tag]]\&quot;&gt;\n&lt;pre&gt;The text of the tiddler (without the expected HTML encoding).\n&lt;/pre&gt;\n&lt;/div&gt;\n\nNote that the field attributes are HTML encoded, but that the body of the &lt;PRE&gt; tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length &gt; 1) {\n\t\tfor(var f=1; f&lt;arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*&lt;div\\s+([^&gt;]*)&gt;(\\s*&lt;pre&gt;)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the &lt;pre&gt; tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /&lt;\\/pre&gt;\\s*&lt;\\/div&gt;\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /&lt;\\/div&gt;\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\&quot;([^\&quot;]*)\&quot;|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\&quot;application/x-tiddler-html-div\&quot;] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\&quot;application/json\&quot;] = function(text,fields) {\n\tvar incoming = JSON.parse(text),\n\t\tresults = [];\n\tif($tw.utils.isArray(incoming)) {\n\t\tfor(var t=0; t&lt;incoming.length; t++) {\n\t\t\tvar incomingFields = incoming[t],\n\t\t\t\tfields = {};\n\t\t\tfor(var f in incomingFields) {\n\t\t\t\tif(typeof incomingFields[f] === \&quot;string\&quot;) {\n\t\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t\t}\n\t\t\t}\n\t\t\tresults.push(fields);\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\&quot;text/html\&quot;] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /&lt;div id=[\&quot;']?storeArea['\&quot;]?( style=[\&quot;']?display:none;[\&quot;']?)?&gt;/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /&lt;div id=[\&quot;']?systemArea['\&quot;]?( style=[\&quot;']?display:none;[\&quot;']?)?&gt;/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \&quot;text/html\&quot;;\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(&lt;\\/div&gt;\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \&quot;text/x-tiddlywiki\&quot;;\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \&quot;string\&quot;) {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/deserializers.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;tiddlerdeserializer&quot;
        },
        &quot;$:/core/modules/editor/engines/framed.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nvar HEIGHT_VALUE_TITLE = \&quot;$:/config/TextEditor/EditorHeight/Height\&quot;;\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\&quot;textarea\&quot;);\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\&quot;hidden\&quot;,\&quot;true\&quot;);\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\&quot;iframe\&quot;);\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\&quot;\&quot;);\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \&quot;none\&quot;;\n\tthis.iframeNode.style.padding = \&quot;0\&quot;;\n\tthis.iframeNode.style.resize = \&quot;none\&quot;;\n\tthis.iframeDoc.body.style.margin = \&quot;0\&quot;;\n\tthis.iframeDoc.body.style.padding = \&quot;0\&quot;;\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \&quot;input\&quot;;\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \&quot;textarea\&quot;) {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\&quot;type\&quot;,this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\&quot;placeholder\&quot;,this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\&quot;size\&quot;,this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\&quot;rows\&quot;,this.widget.editRows);\n\t}\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \&quot;input\&quot;,handlerObject: this,handlerMethod: \&quot;handleInputEvent\&quot;},\n\t\t{name: \&quot;keydown\&quot;,handlerObject: this.widget,handlerMethod: \&quot;handleKeydownEvent\&quot;}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \&quot;block\&quot;;\n\tthis.domNode.style.width = \&quot;100%\&quot;;\n\tthis.domNode.style.margin = \&quot;0\&quot;;\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\&quot;-webkit-text-fill-color\&quot;] = \&quot;currentcolor\&quot;;\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \&quot;textarea\&quot;) {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode &amp;&amp; !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \&quot;px\&quot;; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\&quot;400px\&quot;),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \&quot;px\&quot;;\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \&quot;px\&quot;;\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus  = function() {\n\tif(this.domNode.focus &amp;&amp; this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \&quot;input\&quot; event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\&quot;insertText\&quot;) &amp;&amp; this.iframeDoc.queryCommandSupported(\&quot;delete\&quot;) &amp;&amp; !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \&quot;\&quot;) {\n\t\t\t\tthis.iframeDoc.execCommand(\&quot;delete\&quot;,false,\&quot;\&quot;);\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\&quot;insertText\&quot;,false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/editor/engines/framed.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;library&quot;
        },
        &quot;$:/core/modules/editor/engines/simple.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nvar HEIGHT_VALUE_TITLE = \&quot;$:/config/TextEditor/EditorHeight/Height\&quot;;\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \&quot;input\&quot;;\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \&quot;textarea\&quot;) {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\&quot;type\&quot;,this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\&quot;placeholder\&quot;,this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\&quot;size\&quot;,this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\&quot;rows\&quot;,this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \&quot;focus\&quot;, handlerObject: this, handlerMethod: \&quot;handleFocusEvent\&quot;},\n\t\t{name: \&quot;input\&quot;, handlerObject: this, handlerMethod: \&quot;handleInputEvent\&quot;}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \&quot;textarea\&quot;) {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode &amp;&amp; !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\&quot;400px\&quot;),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \&quot;px\&quot;;\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus  = function() {\n\tif(this.domNode.focus &amp;&amp; this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \&quot;input\&quot; event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \&quot;focus\&quot; event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/editor/engines/simple.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;library&quot;
        },
        &quot;$:/core/modules/editor/factory.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \&quot;100px\&quot;; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \&quot;$:/config/TextEditor/EditorHeight/Mode\&quot;;\nvar ENABLE_TOOLBAR_TITLE = \&quot;$:/config/TextEditor/EnableToolbar\&quot;;\n\nvar Widget = require(\&quot;$:/core/modules/widgets/widget.js\&quot;).widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\&quot;texteditoroperation\&quot;,this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\&quot;div\&quot;);\n\t\t\tthis.toolbarNode.className = \&quot;tc-editor-toolbar\&quot;;\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \&quot;true\&quot; || this.editFocus === \&quot;yes\&quot;) {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \&quot;tm-edit-text-operation\&quot;, handler: \&quot;handleEditTextOperationMessage\&quot;}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \&quot;text/plain\&quot;,\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \&quot;text\&quot;) {\n\t\t\t\t\ttype = tiddler.fields.type || \&quot;text/vnd.tiddlywiki\&quot;;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \&quot;text\&quot;:\n\t\t\t\t\t\tvalue = \&quot;Type the text for the tiddler '\&quot; + this.editTitle + \&quot;'\&quot;;\n\t\t\t\t\t\ttype = \&quot;text/vnd.tiddlywiki\&quot;;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \&quot;title\&quot;:\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \&quot;\&quot;;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \&quot;\&quot;, type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\&quot;tiddler\&quot;,this.getVariable(\&quot;currentTiddler\&quot;));\n\t\tthis.editField = this.getAttribute(\&quot;field\&quot;,\&quot;text\&quot;);\n\t\tthis.editIndex = this.getAttribute(\&quot;index\&quot;);\n\t\tthis.editDefault = this.getAttribute(\&quot;default\&quot;);\n\t\tthis.editClass = this.getAttribute(\&quot;class\&quot;);\n\t\tthis.editPlaceholder = this.getAttribute(\&quot;placeholder\&quot;);\n\t\tthis.editSize = this.getAttribute(\&quot;size\&quot;);\n\t\tthis.editRows = this.getAttribute(\&quot;rows\&quot;);\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\&quot;auto\&quot;);\n\t\tthis.editAutoHeight = this.getAttribute(\&quot;autoHeight\&quot;,this.editAutoHeight === \&quot;auto\&quot; ? \&quot;yes\&quot; : \&quot;no\&quot;) === \&quot;yes\&quot;;\n\t\tthis.editMinHeight = this.getAttribute(\&quot;minHeight\&quot;,DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\&quot;focusPopup\&quot;);\n\t\tthis.editFocus = this.getAttribute(\&quot;focus\&quot;);\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \&quot;text\&quot;) {\n\t\t\ttag = \&quot;textarea\&quot;;\n\t\t} else {\n\t\t\ttag = \&quot;input\&quot;;\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule &amp;&amp; fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule &amp;&amp; fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \&quot;text\&quot;;\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\&quot;tag\&quot;,tag);\n\t\tthis.editType = this.getAttribute(\&quot;type\&quot;,type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\&quot;yes\&quot;);\n\t\tthis.editShowToolbar = (this.editShowToolbar === \&quot;yes\&quot;) &amp;&amp; !!(this.children &amp;&amp; this.children.length &gt; 0);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\&quot;default\&quot;] || changedAttributes[\&quot;class\&quot;] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup ||  changedAttributes.rows || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\t\t\t\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \&quot;keydown\&quot; event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\&quot;[data-tw-keyboard-shortcut]\&quot;);\n\t\t\tfor(var index=0; index&lt;shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\&quot;data-tw-keyboard-shortcut\&quot;),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\&quot;Events\&quot;);\n\t\t\t\t    clickEvent.initEvent(\&quot;click\&quot;,true,false);\n\t\t\t\t    el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\&quot;Events\&quot;);\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\&quot;keydown\&quot;, true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/editor/factory.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;library&quot;
        },
        &quot;$:/core/modules/editor/operations/bitmap/clear.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports[\&quot;clear\&quot;] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\&quot;2d\&quot;);\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \&quot;white\&quot;;\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/editor/operations/bitmap/clear.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;bitmapeditoroperation&quot;
        },
        &quot;$:/core/modules/editor/operations/bitmap/resize.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports[\&quot;resize\&quot;] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth &gt; 0 &amp;&amp; newHeight &gt; 0 &amp;&amp; !(newWidth === this.currCanvas.width &amp;&amp; newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/editor/operations/bitmap/resize.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;bitmapeditoroperation&quot;
        },
        &quot;$:/core/modules/editor/operations/text/excise.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports[\&quot;excise\&quot;] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler &amp;&amp; editTiddler.fields[\&quot;draft.of\&quot;]) {\n\t\teditTiddlerTitle = editTiddler.fields[\&quot;draft.of\&quot;];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\&quot;New Excision\&quot;);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \&quot;yes\&quot; ?  [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \&quot;transclude\&quot;) {\n\t\tcase \&quot;transclude\&quot;:\n\t\t\toperation.replacement = \&quot;{{\&quot; + operation.replacement+ \&quot;}}\&quot;;\n\t\t\tbreak;\n\t\tcase \&quot;link\&quot;:\n\t\t\toperation.replacement = \&quot;[[\&quot; + operation.replacement+ \&quot;]]\&quot;;\n\t\t\tbreak;\n\t\tcase \&quot;macro\&quot;:\n\t\t\toperation.replacement = \&quot;&lt;&lt;\&quot; + (event.paramObject.macro || \&quot;translink\&quot;) + \&quot; \\\&quot;\\\&quot;\\\&quot;\&quot; + operation.replacement + \&quot;\\\&quot;\\\&quot;\\\&quot;&gt;&gt;\&quot;;\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/editor/operations/text/excise.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;texteditoroperation&quot;
        },
        &quot;$:/core/modules/editor/operations/text/make-link.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports[\&quot;make-link\&quot;] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \&quot;[[\&quot; + operation.selection + \&quot;|\&quot; + event.paramObject.text + \&quot;]]\&quot;;\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \&quot;[[\&quot; + event.paramObject.text + \&quot;]]\&quot;;\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/editor/operations/text/make-link.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;texteditoroperation&quot;
        },
        &quot;$:/core/modules/editor/operations/text/prefix-lines.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports[\&quot;prefix-lines\&quot;] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,event.paramObject.count);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \&quot; \&quot;) {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== event.paramObject.count) {\n\t\t\t// Apply the prefix\n\t\t\tline =  prefix + \&quot; \&quot; + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\&quot;\\n\&quot;);\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/editor/operations/text/prefix-lines.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;texteditoroperation&quot;
        },
        &quot;$:/core/modules/editor/operations/text/replace-all.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports[\&quot;replace-all\&quot;] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/editor/operations/text/replace-all.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;texteditoroperation&quot;
        },
        &quot;$:/core/modules/editor/operations/text/replace-selection.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports[\&quot;replace-selection\&quot;] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/editor/operations/text/replace-selection.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;texteditoroperation&quot;
        },
        &quot;$:/core/modules/editor/operations/text/wrap-lines.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports[\&quot;wrap-lines\&quot;] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \&quot;\\n\&quot; +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \&quot;\\n\&quot; +\n\t\t\t\tevent.paramObject.suffix + \&quot;\\n\&quot;;\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/editor/operations/text/wrap-lines.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;texteditoroperation&quot;
        },
        &quot;$:/core/modules/editor/operations/text/wrap-selection.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nexports[\&quot;wrap-selection\&quot;] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix unless they comprise the entire text\n\t\t\tif(operation.selStart &gt; event.paramObject.prefix.length || (operation.selEnd + event.paramObject.suffix.length) &lt; operation.text.length ) {\n\t\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\t\toperation.replacement = \&quot;\&quot;;\n\t\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t\t}\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix &amp;&amp; operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/editor/operations/text/wrap-selection.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;texteditoroperation&quot;
        },
        &quot;$:/core/modules/filters/addprefix.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/addprefix.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/addsuffix.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/addsuffix.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/after.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index &gt; (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/after.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/all/current.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget &amp;&amp; options.widget.getVariable(\&quot;currentTiddler\&quot;);\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/all/current.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;allfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/all/missing.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/all/missing.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;allfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/all/orphans.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/all/orphans.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;allfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/all/shadows.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/all/shadows.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;allfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/all/tiddlers.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/all/tiddlers.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;allfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/all.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\&quot;allfilteroperator\&quot;,allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\&quot;+\&quot;);\n\t// Check for common optimisations\n\tif(subops.length === 1 &amp;&amp; subops[0] === \&quot;\&quot;) {\n\t\treturn source;\n\t} else if(subops.length === 1 &amp;&amp; subops[0] === \&quot;tiddlers\&quot;) {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 &amp;&amp; subops[0] === \&quot;shadows\&quot;) {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 &amp;&amp; subops[0] === \&quot;tiddlers\&quot; &amp;&amp; subops[1] === \&quot;shadows\&quot;) {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 &amp;&amp; subops[0] === \&quot;shadows\&quot; &amp;&amp; subops[1] === \&quot;tiddlers\&quot;) {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t&lt;subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/all.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/backlinks.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/backlinks.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/before.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index &lt;= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/before.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/commands.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/commands.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/days.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \&quot;modified\&quot;,\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \&quot;!\&quot;) {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler &amp;&amp; tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler &amp;&amp; tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/days.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/each.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \&quot;list\&quot;, selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\t\tvalue,values = {},\n\t\tfield = operator.operand || \&quot;title\&quot;;\n\tif(operator.suffix !== \&quot;list-item\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvalue = (field === \&quot;title\&quot;) ? title : tiddler.getFieldString(field);\n\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/each.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/eachday.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \&quot;modified\&quot;;\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler &amp;&amp; tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/eachday.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/editiondescription.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \&quot;\&quot;);\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/editiondescription.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/editions.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(name);\n\t\t});\n\t}\n\tresults.sort();\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/editions.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/field.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || operator.operator || \&quot;title\&quot;).toLowerCase();\n\tif(operator.prefix === \&quot;!\&quot;) {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null &amp;&amp; !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null &amp;&amp; text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null &amp;&amp; !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null &amp;&amp; text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/field.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/fields.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/fields.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/get.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/get.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/getindex.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/getindex.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/has.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || (tiddler &amp;&amp; (!$tw.utils.hop(tiddler.fields,operator.operand) || tiddler.fields[operator.operand] === \&quot;\&quot;))) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler &amp;&amp; $tw.utils.hop(tiddler.fields,operator.operand) &amp;&amp; !(tiddler.fields[operator.operand] === \&quot;\&quot; || tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/has.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/haschanged.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) &gt; 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/haschanged.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/indexes.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/indexes.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/is/current.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget &amp;&amp; options.widget.getVariable(\&quot;currentTiddler\&quot;);\n\tif(prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/is/current.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;isfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/is/image.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/is/image.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;isfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/is/missing.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/is/missing.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;isfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/is/orphan.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/is/orphan.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;isfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/is/shadow.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/is/shadow.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;isfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/is/system.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/is/system.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;isfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/is/tag.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/is/tag.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;isfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/is/tiddler.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/is/tiddler.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;isfilteroperator&quot;
        },
        &quot;$:/core/modules/filters/is.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\&quot;isfilteroperator\&quot;,isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tvar isFilterOperator = isFilterOperators[operator.operand];\n\tif(isFilterOperator) {\n\t\treturn isFilterOperator(source,operator.prefix,options);\n\t} else {\n\t\treturn [$tw.language.getString(\&quot;Error/IsFilterOperator\&quot;)];\n\t}\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/is.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/limit.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \&quot;!\&quot;) {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/limit.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/links.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/links.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/list.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget &amp;&amp; options.widget.getVariable(\&quot;currentTiddler\&quot;),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/list.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/listed.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \&quot;list\&quot;,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/listed.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/listops.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/listops.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/modules.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/modules.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/moduletypes.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/moduletypes.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/next.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match &gt; 0 &amp;&amp; match &lt; list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/next.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/plugintiddlers.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo &amp;&amp; pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/plugintiddlers.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/prefix.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/prefix.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/previous.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match &gt;= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/previous.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/regexp.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \&quot;title\&quot;).toLowerCase(),\n\t\tregexpString, regexp, flags = \&quot;\&quot;, match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \&quot;title\&quot;) {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\&quot;\&quot; + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \&quot;!\&quot;) {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/regexp.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/removeprefix.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/removeprefix.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/removesuffix.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/removesuffix.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/sameday.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\&quot;use strict\&quot;;\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \&quot;modified\&quot;,\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tvar isSameDay = function(dateField) {\n\t\t\treturn (new Date(dateField)).setHours(0,0,0,0) === targetDate;\n\t\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler &amp;&amp; tiddler.fields[fieldName]) {\n\t\t\tif(isSameDay($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n&quot;,
            &quot;title&quot;: &quot;$:/core/modules/filters/sameday.js&quot;,
            &quot;type&quot;: &quot;application/javascript&quot;,
            &quot;module-type&quot;: &quot;filteroperator&quot;
        },
        &quot;$:/core/modules/filters/search.js&quot;: {
            &quot;text&quot;: &quot;/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter o