penguin/AstroJS

Javascript framework for my blog

commit 77a1e5c22e01dbddb49b91b9dec92412e6554fd9

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-06-13T21:53:32Z
subjectMigrate old externs 2/x
commit 77a1e5c22e01dbddb49b91b9dec92412e6554fd9
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-06-13T21:53:32Z

    Migrate old externs 2/x
---
 botanjs/src/Astro/Blog/AstroEdit/Article.js        |  11 +-
 botanjs/src/Astro/Blog/AstroEdit/Draft.js          |   2 +-
 botanjs/src/Astro/Blog/AstroEdit/Flag.js           |   2 +-
 botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js    |   6 +-
 .../SmartInput/CandidateAction/Footnote.js         |   4 +-
 .../src/Astro/Blog/AstroEdit/SmartInput/_this.js   |   7 +-
 .../AstroEdit/Visualizer/Snippet/AcquireLib.js     |  15 +-
 .../AstroEdit/Visualizer/Snippet/ArticleContent.js |  18 ++-
 .../AstroEdit/Visualizer/Snippet/ArticleLink.js    |  18 ++-
 .../Blog/AstroEdit/Visualizer/Snippet/Code.js      |  10 +-
 .../Blog/AstroEdit/Visualizer/Snippet/Footnote.js  |   6 +-
 .../Blog/AstroEdit/Visualizer/Snippet/Heading.js   |  11 +-
 .../Blog/AstroEdit/Visualizer/Snippet/Html.js      |   6 +-
 .../Blog/AstroEdit/Visualizer/Snippet/Image.js     |   6 +-
 .../Blog/AstroEdit/Visualizer/Snippet/Link.js      |  17 +-
 .../Blog/AstroEdit/Visualizer/Snippet/Meta.js      |   6 +-
 .../Blog/AstroEdit/Visualizer/Snippet/RespH.js     |   6 +-
 .../Blog/AstroEdit/Visualizer/Snippet/SiteFile.js  |   8 +-
 .../Blog/AstroEdit/Visualizer/Snippet/Sound.js     |   6 +-
 .../Blog/AstroEdit/Visualizer/Snippet/Spoiler.js   |   6 +-
 .../Blog/AstroEdit/Visualizer/Snippet/Video.js     |  17 +-
 .../src/Astro/Blog/AstroEdit/Visualizer/_this.js   |   6 +-
 botanjs/src/Astro/Blog/AstroEdit/_this.js          |   1 +
 botanjs/src/Astro/Blog/Components/Album.js         |   6 +-
 botanjs/src/Astro/Blog/Components/Comment.js       |   4 +-
 botanjs/src/Astro/Blog/Components/Notification.js  |   6 +-
 botanjs/src/Astro/Blog/Components/SiteFile.js      |   4 +-
 botanjs/src/Astro/Blog/Components/SocialButtons.js |   2 +-
 .../Blog/Components/ToggleButton/DeleteArticle.js  |   2 +-
 .../Astro/Blog/Components/ToggleButton/_this.js    |   2 +-
 botanjs/src/Astro/Blog/Components/Video.js         |   2 +-
 botanjs/src/Astro/Blog/Layout/Article/Control.js   |   2 +-
 botanjs/src/Astro/Blog/Layout/Login.js             |   4 +-
 botanjs/src/Astro/Blog/Layout/MainFrame.js         |   4 +-
 botanjs/src/Astro/Blog/Layout/Subs/Manage.js       |   2 +-
 botanjs/src/Astro/Penguin/Layout/MainFrame.js      |   4 +-
 botanjs/src/Components/DockPanel.js                |   2 +-
 botanjs/src/Components/Mouse/ContextMenu.js        |   4 +-
 botanjs/src/Components/Vim/VimArea.js              |   3 +-
 botanjs/src/Dandelion/IDOMElement.js               |   2 +-
 botanjs/src/Dandelion/_this.js                     |   6 +-
 botanjs/src/System/Net/ClassLoader.js              |   2 +-
 botanjs/src/System/utils/DataKey.js                |   7 +-
 botanjs/src/_this.js                               |  10 +-
 .../src/externs/Astro.Blog.AstroEdit.IPlugin.js    |   2 +-
 .../Astro.Blog.AstroEdit.SmartInput.Definition.js  |  15 +-
 .../src/externs/Astro.Blog.Components.Bubble.js    |  14 +-
 .../src/externs/Astro.Blog.Components.SiteFile.js  |   6 +-
 botanjs/src/externs/Astro.Blog.Config.js           |   2 +-
 .../src/externs/Astro.Blog.Events.Responsive.js    |   8 -
 botanjs/src/externs/Astro.Blog.Events.js           |   2 -
 botanjs/src/externs/Astro.utils.Date.js            |  30 ++--
 botanjs/src/externs/BotanEvent.js                  |   2 +-
 botanjs/src/externs/Components.MessageBox.js       |  23 ++-
 botanjs/src/externs/Components.Vim.Actions.js      |   2 +-
 .../externs/Components.Vim.Controls.ActionEvent.js |   2 +-
 botanjs/src/externs/Components.Vim.Cursor.js       |   4 +-
 botanjs/src/externs/Components.Vim.LineBuffer.js   |   2 +-
 botanjs/src/externs/Components.Vim.LineFeeder.js   |   2 +-
 botanjs/src/externs/Dandelion.js                   |   2 +-
 botanjs/src/externs/EventDispatcher.js             |   4 +
 botanjs/src/externs/System.Cycle.Trigger.js        |   6 +-
 botanjs/src/externs/System.utils.DataKey.js        |   9 +-
 botanjs/src/externs/System.utils.EventKey.js       |   2 +-
 botanjs/src/externs/System.utils.IKey.js           |  16 +-
 botanjs/src/externs/System.utils.Perf.js           |   8 +-
 botanjs/src/externs/_AstConf_.Article.js           |   2 +-
 botanjs/src/externs/_AstConf_.AstroEdit.js         |  56 +++----
 botanjs/src/externs/_AstConf_.Comment.js           |   4 +-
 botanjs/src/externs/_AstConf_.Control.js           |   2 +-
 botanjs/src/externs/_AstConf_.Login.js             |   4 +-
 botanjs/src/externs/_AstConf_.Notification.js      |   2 +-
 botanjs/src/externs/_AstConf_.SiteFile.js          |  14 +-
 botanjs/src/externs/_AstConf_.UserInfo.js          |   6 +-
 botanjs/src/externs/_AstJson_.AJaxGetArticle.js    |  60 +++----
 botanjs/src/externs/_AstJson_.AJaxGetDrafts.js     |   8 +-
 .../src/externs/_AstJson_.AJaxGetFiles.Request.js  |  10 +-
 botanjs/src/externs/_AstJson_.AJaxGetFiles.js      |  14 +-
 botanjs/src/externs/_AstJson_.AJaxGetNotis.js      |   6 +-
 botanjs/src/externs/_AstJson_.SiteFile.js          |  20 +--
 devtools/replace-type.sh                           |  65 ++++++++
 resolver-go/internal/generated/buildinfo_gen.go    |   2 +-
 resolver-go/internal/generated/classmap_gen.go     | 174 ++++++++++-----------
 resolver-go/internal/generated/externs_gen.go      |   3 +-
 84 files changed, 489 insertions(+), 401 deletions(-)

diff --git a/botanjs/src/Astro/Blog/AstroEdit/Article.js b/botanjs/src/Astro/Blog/AstroEdit/Article.js
index 2964101..440ab93 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Article.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Article.js
@@ -9,7 +9,7 @@
 	var EventKey                         = __import( "System.utils.EventKey" );
 	/** @type {System.Debug} */
 	var debug                            = __import( "System.Debug" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                       = __import( "Components.MessageBox" );
 	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
@@ -287,9 +287,12 @@
 					window.history.replaceState( ArticleModel, "", base_path + "astroedit/new/" );
 				}
 			}
-		}
-		/** @param {_AstJson_.AJaxGetArticle} */
-		, showArticle = function( obj )
+		},
+		/**
+		 * @param {!_AstJson_.AJaxGetArticle} obj
+		 * @return {void}
+		 */
+		showArticle = function( obj )
 		{
 			if ( obj && obj.entry )
 			{
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Draft.js b/botanjs/src/Astro/Blog/AstroEdit/Draft.js
index 70398a2..e3b5f9e 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Draft.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Draft.js
@@ -3,7 +3,7 @@
 
 	/** @type {System.Cycle} */
 	var Cycle                        = __import( "System.Cycle" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                         = __import( "System.utils.IKey" );
 	/** @type {typeof Dandelion} */
 	var Dand                         = __import( "Dandelion" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Flag.js b/botanjs/src/Astro/Blog/AstroEdit/Flag.js
index 1f874ea..b6015b4 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Flag.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Flag.js
@@ -3,7 +3,7 @@
 
 	/** @type {System.Debug} */
 	var debug                            = __import( "System.Debug" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                       = __import( "Components.MessageBox" );
 	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js b/botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js
index 0665df0..869af25 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js
@@ -7,13 +7,13 @@
 	var debug                                   = __import( "System.Debug" );
 	/** @type {System.utils.Perf} */
 	var Perf                                    = __import( "System.utils.Perf" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                                    = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                 = __import( "System.utils.DataKey" );
 	/** @type {System.utils.EventKey} */
 	var EventKey                                = __import( "System.utils.EventKey" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                              = __import( "Components.MessageBox" );
 	/** @type {Components.Mouse.ContextMenu} */
 	var ContextMenu                             = __import( "Components.Mouse.ContextMenu" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js b/botanjs/src/Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js
index 91c833e..eea7efb 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js
@@ -2,9 +2,9 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.SmartInput.CandidateAction" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/SmartInput/_this.js b/botanjs/src/Astro/Blog/AstroEdit/SmartInput/_this.js
index 6dfbe47..15eba49 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/SmartInput/_this.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/SmartInput/_this.js
@@ -15,17 +15,18 @@
 	var Loader                                  = __import( "System.Net.ClassLoader" );
 	/** @type {System.utils} */
 	var utils                                   = __import( "System.utils" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                 = __import( "System.utils.DataKey" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                                    = __import( "System.utils.IKey" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                              = __import( "Components.MessageBox" );
 	/** @type {Astro.Blog.Config} */
 	var Config                                  = __import( "Astro.Blog.Config" );
 
 	var moduleNs = "Astro.Blog.AstroEdit.SmartInput.CandidateAction.";
 	var service_uri = Config.get( "ServiceUri" );
+	var code;
 
 	var Destructor = function( target )
 	{
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js
index 0896ac0..3dcb436 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js
@@ -2,22 +2,21 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 
 
 	var acquirelib = function(insertSnippet, snippetWrap, createContext, override)
 	{
 		var temp, i, j
-
 		, handler = function ()
 		{
 			// Input fields
@@ -35,9 +34,13 @@
 				, "OK", "Cancel"
 				, visualizer.bind({ text:input_text, stage: this._stage })
 			).show();
-		}
+		};
 
-		, visualizer = function (submitted, override)
+		/**
+		 * @param {boolean} submitted
+		 * @param {*} override
+		 */
+		var visualizer = function (submitted, override)
 		{
 			var src = override ? override.value : this.text.value
 			, stage = this && this.stage;
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js
index 6600796..f4525a6 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 	/** @type {Astro.Blog.Config} */
 	var Config                            = __import( "Astro.Blog.Config" );
@@ -26,7 +26,7 @@
 	var postData = __import( "System.Net.postData" );
 
 	/** @type {_AstConf_.AstroEdit} */
-	var config = null;
+	var config;
 
 	var ArticleContent = function ( insertSnippet, snippetWrap, createContext, override )
 	{
@@ -111,10 +111,12 @@
 				// Get title of this article
 				postData(
 					config.paths.get_article
-					, { article_id: id }
-
-					/** @param {_AstJson_.AJaxGetArticle} */
-					, function( e )
+					, { article_id: id },
+					/**
+					 * @param {!_AstJson_.AJaxGetArticle} e
+					 * @return {void}
+					 */
+					function( e )
 					{
 						ACInfo[1].firstChild.textContent = e.entry.title;
 					}
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js
index 0f6d72c..383226b 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 	/** @type {Astro.Blog.Config} */
 	var Config                            = __import( "Astro.Blog.Config" );
@@ -26,7 +26,7 @@
 	var postData = __import( "System.Net.postData" );
 
 	/** @type {_AstConf_.AstroEdit} */
-	var config = null;
+	var config;
 
 	var ArticleLink = function ( insertSnippet, snippetWrap, createContext, override )
 	{
@@ -115,10 +115,12 @@
 				{
 					postData(
 						config.paths.get_article
-						, { article_id: id }
-
-						/** @param {_AstJson_.AJaxGetArticle} */
-						, function( e )
+						, { article_id: id },
+						/**
+						 * @param {!_AstJson_.AJaxGetArticle} e
+						 * @return {void}
+						 */
+						function( e )
 						{
 							j.firstChild.textContent = e.entry.title;
 						}
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js
index ed65f70..fa52a33 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 
 	var escapeStr = ns[ NS_INVOKE ]( "escapeStr" );
@@ -41,7 +41,7 @@
 		, compileListItems = function ()
 		{
 			var arr = [];
-			for ( i in codeLangs )
+			for ( i = 0; i < codeLangs.length; i ++ )
 			{
 				arr[ arr.length ] = Dand.wrapne(
 					"option"
@@ -119,7 +119,7 @@
 			}
 
 			var langName;
-			for( var i in codeLangs )
+			for( i = 0; i < codeLangs.length; i ++ )
 			{
 				if( codeLangs[i].keyValue == lang )
 				{
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js
index 75727f1..0f88c80 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 
 	var unescapeStr = ns[ NS_INVOKE ]( "unescapeStr" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js
index ee09842..07831a3 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 
 	var unescapeStr = ns[ NS_INVOKE ]( "unescapeStr" );
@@ -32,7 +32,7 @@
 		, compileListItems = function ()
 		{
 			var arr = [];
-			for ( i in Sizes )
+			for (i = 0; i < Sizes.length; i++)
 			{
 				arr[ arr.length ] = Dand.wrapne(
 					"option"
@@ -103,8 +103,7 @@
 				heading = this.heading.value;
 			}
 
-			var size;
-			for( var i in Sizes )
+			for(i = 0; i < Sizes.length; i++)
 			{
 				if( Sizes[i].keyValue == size )
 				{
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js
index a861415..4e2d0fa 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 
 	var escapeStr = ns[ NS_INVOKE ]( "escapeStr" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js
index 40b97ac..9b74a4c 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 
 	var escapeStr = ns[ NS_INVOKE ]( "escapeStr" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js
index 49f2a1a..ac0c6ce 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 
 	var escapeStr = ns[ NS_INVOKE ]( "escapeStr" );
@@ -19,7 +19,6 @@
 	var link = function(insertSnippet, snippetWrap, createContext, override)
 	{
 		var temp, i, j
-		
 		, handler = function ()
 		{
 			// Input fields
@@ -42,9 +41,13 @@
 						, input_a
 				])
 			, "OK", "Cancel", visualizer.bind({text:input_text, href:input_a, stage: this._stage})).show();
-		}
-		
-		, visualizer = function (submitted, override)
+		};
+
+		/**
+		 * @param {boolean} submitted
+		 * @param {*} override
+		 */
+		var visualizer = function (submitted, override)
 		{
 			var src, href, stage = this && this.stage;
 			
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js
index b847f1e..ff23d0e 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 
 	var escapeStr = ns[ NS_INVOKE ]( "escapeStr" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js
index 2336a9e..d013ea0 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 
 	var escapeStr = ns[ NS_INVOKE ]( "escapeStr" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
index e4733a4..4fa26fc 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 	/** @type {Astro.Blog.Config} */
 	var Config                            = __import( "Astro.Blog.Config" );
@@ -27,7 +27,7 @@
 	var getData = __import( "System.Net.getData" );
 
 	/** @type {_AstConf_.SiteFile} */
-	var config = null;
+	var config;
 
 	var sitefile = function ( insertSnippet, snippetWrap, createContext, override )
 	{
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js
index 1bf9b35..cb680d4 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 
 	var compileProp = ns[ NS_INVOKE ]( "compileProp" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js
index d4db960..b8a5ca9 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 
 	var compileProp = ns[ NS_INVOKE ]( "compileProp" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js
index 8508ea1..cf587ad 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js
@@ -2,15 +2,15 @@
 {
 	var ns = __namespace( "Astro.Blog.AstroEdit.Visualizer.Snippet" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                              = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                           = __import( "System.utils.DataKey" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                       = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof Dandelion} */
 	var Dand                              = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                        = __import( "Components.MessageBox" );
 
 	var getData                           = __import( "System.Net.getData" );
@@ -48,9 +48,12 @@
 				, Dand.wrape([ Dand.wrapc("v_instruction flsf", "Paste a vimeo/Youtube link below:"), input_url ])
 				, "OK", "Cancel", visualizer.bind(input_url)
 			).show();
-		}
-
-		, visualizer = function (submitted, override)
+		};
+		/**
+		 * @param {boolean} submitted
+		 * @param {*} override
+		 */
+		var visualizer = function (submitted, override)
 		{
 			var t, v;
 
@@ -112,7 +115,7 @@
 				// Set context menu
 				createContext(null, j);
 			}
-		}
+		};
 
 		if (override)
 		{
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/_this.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/_this.js
index c301e0e..79dd2ef 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/_this.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/_this.js
@@ -11,15 +11,15 @@
 	var utils                                   = __import( "System.utils" );
 	/** @type {System.utils.Perf} */
 	var Perf                                    = __import( "System.utils.Perf" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                 = __import( "System.utils.DataKey" );
 	/** @type {System.utils.EventKey} */
 	var EventKey                                = __import( "System.utils.EventKey" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                                    = __import( "System.utils.IKey" );
 	/** @type {System.Net.ClassLoader} */
 	var Loader                                  = __import( "System.Net.ClassLoader" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                              = __import( "Components.MessageBox" );
 	/** @type {Components.Mouse.ContextMenu} */
 	var ContextMenu                             = __import( "Components.Mouse.ContextMenu" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/_this.js b/botanjs/src/Astro/Blog/AstroEdit/_this.js
index c25cc97..754fc6b 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/_this.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/_this.js
@@ -110,6 +110,7 @@
 	{
 		var f10Binding = function ( e )
 		{
+			var code;
 			e = e || window.event;
 			if ( e.keyCode ) code = e.keyCode;
 			else if ( e.which ) code = e.which;
diff --git a/botanjs/src/Astro/Blog/Components/Album.js b/botanjs/src/Astro/Blog/Components/Album.js
index d95cb14..859dc32 100644
--- a/botanjs/src/Astro/Blog/Components/Album.js
+++ b/botanjs/src/Astro/Blog/Components/Album.js
@@ -3,9 +3,9 @@
 
 	/** @type {System.Cycle} */
 	var Cycle                            = __import( "System.Cycle" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                             = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                          = __import( "System.utils.DataKey" );
 	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
@@ -19,7 +19,7 @@
 	var Conf                             = __import( "Astro.Blog.Config" );
 
 	/** @type {_AstConf_.SiteFile} */
-	var config = null;
+	var config;
 
 	var SiteFile = ns[ NS_INVOKE ]( "SiteFile" );
 	var BLANK_IMG = __import( "Dandelion.StaticRes.BLANK_IMG" );
diff --git a/botanjs/src/Astro/Blog/Components/Comment.js b/botanjs/src/Astro/Blog/Components/Comment.js
index e446cea..900a760 100644
--- a/botanjs/src/Astro/Blog/Components/Comment.js
+++ b/botanjs/src/Astro/Blog/Components/Comment.js
@@ -7,11 +7,11 @@
 	var debug                                  = __import( "System.Debug" );
 	/** @type {System.Cycle.Trigger} */
 	var Trigger                                = __import( "System.Cycle.Trigger" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                                   = __import( "System.utils.IKey" );
 	/** @type {System.utils.EventKey} */
 	var EventKey                               = __import( "System.utils.EventKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                = __import( "System.utils.DataKey" );
 	/** @type {System.utils.Perf} */
 	var Perf                                   = __import( "System.utils.Perf" );
diff --git a/botanjs/src/Astro/Blog/Components/Notification.js b/botanjs/src/Astro/Blog/Components/Notification.js
index 194eba1..61be214 100644
--- a/botanjs/src/Astro/Blog/Components/Notification.js
+++ b/botanjs/src/Astro/Blog/Components/Notification.js
@@ -7,15 +7,15 @@
 	var Cycle                                   = __import( "System.Cycle" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                             = __import( "Dandelion.IDOMElement" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                                    = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                 = __import( "System.utils.DataKey" );
 	/** @type {System.utils.EventKey} */
 	var EventKey                                = __import( "System.utils.EventKey" );
 	/** @type {typeof Dandelion} */
 	var Dand                                    = __import( "Dandelion" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                              = __import( "Components.MessageBox" );
 	/** @type {Components.Mouse.ContextMenu} */
 	var ContextMenu                             = __import( "Components.Mouse.ContextMenu" );
diff --git a/botanjs/src/Astro/Blog/Components/SiteFile.js b/botanjs/src/Astro/Blog/Components/SiteFile.js
index e5009ce..0c136e8 100644
--- a/botanjs/src/Astro/Blog/Components/SiteFile.js
+++ b/botanjs/src/Astro/Blog/Components/SiteFile.js
@@ -3,7 +3,7 @@
 
 	/** @type {System.Debug} */
 	var debug                            = __import( "System.Debug" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                             = __import( "System.utils.IKey" );
 	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
@@ -18,7 +18,7 @@
 	var getSMStamp                       = __import( "Astro.utils.Date.smstamp" );
 
 	/** @type {_AstConf_.SiteFile} */
-	var config = null;
+	var config;
 
 	var SiteFile  = function ( id, hash, nObj )
 	{
diff --git a/botanjs/src/Astro/Blog/Components/SocialButtons.js b/botanjs/src/Astro/Blog/Components/SocialButtons.js
index bf8ea4b..ec6c6ac 100644
--- a/botanjs/src/Astro/Blog/Components/SocialButtons.js
+++ b/botanjs/src/Astro/Blog/Components/SocialButtons.js
@@ -2,7 +2,7 @@
 	var ns = __namespace( "Astro.Blog.Components.SocialButtons" );
 	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                             = __import( "System.utils.IKey" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Components/ToggleButton/DeleteArticle.js b/botanjs/src/Astro/Blog/Components/ToggleButton/DeleteArticle.js
index 62ec37d..d8acd14 100644
--- a/botanjs/src/Astro/Blog/Components/ToggleButton/DeleteArticle.js
+++ b/botanjs/src/Astro/Blog/Components/ToggleButton/DeleteArticle.js
@@ -1,7 +1,7 @@
 (function(){
 	var ns = __namespace( "Astro.Blog.Components.ToggleButton.DeleteArticle" );
 
-    /** @type {Components.MessageBox} */
+    /** @type {typeof Components.MessageBox} */
 	var MessageBox                       = __import( "Components.MessageBox" );
 	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
diff --git a/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js b/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js
index 439bcc8..04e6147 100644
--- a/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js
+++ b/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js
@@ -9,7 +9,7 @@
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
 	/** @type {Astro.Blog} */
 	var config                           = __import( "Astro.Blog.Config" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                          = __import( "System.utils.DataKey" );
 
 	var postData                         = __import( "System.Net.postData" );
diff --git a/botanjs/src/Astro/Blog/Components/Video.js b/botanjs/src/Astro/Blog/Components/Video.js
index eae964d..d3ea6fc 100644
--- a/botanjs/src/Astro/Blog/Components/Video.js
+++ b/botanjs/src/Astro/Blog/Components/Video.js
@@ -1,7 +1,7 @@
 (function(){
 	var ns = __namespace( "Astro.Blog.Components.Video" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                             = __import( "System.utils.IKey" );
 	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
diff --git a/botanjs/src/Astro/Blog/Layout/Article/Control.js b/botanjs/src/Astro/Blog/Layout/Article/Control.js
index 14069c1..849c022 100644
--- a/botanjs/src/Astro/Blog/Layout/Article/Control.js
+++ b/botanjs/src/Astro/Blog/Layout/Article/Control.js
@@ -5,7 +5,7 @@
 	var Dand                             = __import( "Dandelion" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                       = __import( "Components.MessageBox" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
diff --git a/botanjs/src/Astro/Blog/Layout/Login.js b/botanjs/src/Astro/Blog/Layout/Login.js
index 5722e2f..1dafafd 100644
--- a/botanjs/src/Astro/Blog/Layout/Login.js
+++ b/botanjs/src/Astro/Blog/Layout/Login.js
@@ -3,9 +3,9 @@
 
 	/** @type {System.Cycle} */
 	var Cycle                            = __import( "System.Cycle" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                             = __import( "System.utils.IKey" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                       = __import( "Components.MessageBox" );
 	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
diff --git a/botanjs/src/Astro/Blog/Layout/MainFrame.js b/botanjs/src/Astro/Blog/Layout/MainFrame.js
index 971987a..b266b7a 100644
--- a/botanjs/src/Astro/Blog/Layout/MainFrame.js
+++ b/botanjs/src/Astro/Blog/Layout/MainFrame.js
@@ -5,9 +5,9 @@
 	var Cycle                                         = __import( "System.Cycle" );
 	/** @type {System.Cycle.Trigger} */
 	var Trigger                                       = __import( "System.Cycle.Trigger" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                                          = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                       = __import( "System.utils.DataKey" );
 	/** @type {System.utils.Perf} */
 	var Perf                                          = __import( "System.utils.Perf" );
diff --git a/botanjs/src/Astro/Blog/Layout/Subs/Manage.js b/botanjs/src/Astro/Blog/Layout/Subs/Manage.js
index 15533f8..07bf8ae 100644
--- a/botanjs/src/Astro/Blog/Layout/Subs/Manage.js
+++ b/botanjs/src/Astro/Blog/Layout/Subs/Manage.js
@@ -1,6 +1,6 @@
 (function(){
 	var ns = __namespace( "Astro.Blog.Layout.Subs.Manage" );
-	/** @type {Components.MessageBox} */
+	/** @type {typeof Components.MessageBox} */
 	var MessageBox                              = __import( "Components.MessageBox" );
 	/** @type {typeof Dandelion} */
 	var Dand                                    = __import( "Dandelion" );
diff --git a/botanjs/src/Astro/Penguin/Layout/MainFrame.js b/botanjs/src/Astro/Penguin/Layout/MainFrame.js
index a3ad200..3d6815b 100644
--- a/botanjs/src/Astro/Penguin/Layout/MainFrame.js
+++ b/botanjs/src/Astro/Penguin/Layout/MainFrame.js
@@ -5,9 +5,9 @@
 	var Cycle                                         = __import( "System.Cycle" );
 	/** @type {System.Cycle.Trigger} */
 	var Trigger                                       = __import( "System.Cycle.Trigger" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                                          = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                       = __import( "System.utils.DataKey" );
 	/** @type {typeof Dandelion} */
 	var Dand                                          = __import( "Dandelion" );
diff --git a/botanjs/src/Components/DockPanel.js b/botanjs/src/Components/DockPanel.js
index 61c0448..1e1285f 100644
--- a/botanjs/src/Components/DockPanel.js
+++ b/botanjs/src/Components/DockPanel.js
@@ -3,7 +3,7 @@
 
 	/** @type {System.Cycle} */
 	var Cycle                            = __import( "System.Cycle" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                          = __import( "System.utils.DataKey" );
 	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
diff --git a/botanjs/src/Components/Mouse/ContextMenu.js b/botanjs/src/Components/Mouse/ContextMenu.js
index 2a70c29..b290b1c 100644
--- a/botanjs/src/Components/Mouse/ContextMenu.js
+++ b/botanjs/src/Components/Mouse/ContextMenu.js
@@ -4,9 +4,9 @@
 
 	/** @type {System.utils} */
 	var utils                            = __import( "System.utils" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                             = __import( "System.utils.IKey" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                          = __import( "System.utils.DataKey" );
 	/** @type {System.utils.EventKey} */
 	var EventKey                         = __import( "System.utils.EventKey" );
diff --git a/botanjs/src/Components/Vim/VimArea.js b/botanjs/src/Components/Vim/VimArea.js
index ed18d3f..32ebc24 100644
--- a/botanjs/src/Components/Vim/VimArea.js
+++ b/botanjs/src/Components/Vim/VimArea.js
@@ -3,7 +3,7 @@
 
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                               = __import( "Dandelion.IDOMElement" );
-	/** @type {System.utils.DataKey} */
+	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                   = __import( "System.utils.DataKey" );
 	/** @type {System.utils.EventKey} */
 	var EventKey                                  = __import( "System.utils.EventKey" );
@@ -35,6 +35,7 @@
 	{
 		return function( e )
 		{
+			var code;
 			sender.__active = true;
 			e = e || window.event;
 			if ( e.keyCode ) code = e.keyCode;
diff --git a/botanjs/src/Dandelion/IDOMElement.js b/botanjs/src/Dandelion/IDOMElement.js
index 843cafc..57d37e3 100644
--- a/botanjs/src/Dandelion/IDOMElement.js
+++ b/botanjs/src/Dandelion/IDOMElement.js
@@ -1,7 +1,7 @@
 (function(){
 	var ns = __namespace( "Dandelion" );
 
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                         = __import( "System.utils.IKey" );
 	/** @type {System.utils.Perf} */
 	var Perf                         = __import( "System.utils.Perf" );
diff --git a/botanjs/src/Dandelion/_this.js b/botanjs/src/Dandelion/_this.js
index fd69670..a22f4c5 100644
--- a/botanjs/src/Dandelion/_this.js
+++ b/botanjs/src/Dandelion/_this.js
@@ -2,7 +2,7 @@
 	var ns = __namespace( "Dandelion" );
 	var IE = __import( "System.Global.IE" );
 
-	/* @type {System.utils.IKey}*/
+	/* @type {typeof System.utils.IKey}*/
 	var IKey = __import( "System.utils.IKey" );
 
 	/* @type {function(...?): Dandelion.IDOMElement}*/
@@ -148,7 +148,7 @@
 		return elements( elem, idom );
 	};
 
-	var name = function( name, idom, target )
+	var getname = function( name, idom, target )
 	{
 		target = target === undefined ? document : target;
 		var elem = target.getElementsByName( name );
@@ -186,6 +186,6 @@
 	ns[ NS_EXPORT ]( EX_FUNC, "chainUpApply", chainUpApply );
 	ns[ NS_EXPORT ]( EX_FUNC, "id", id );
 	ns[ NS_EXPORT ]( EX_FUNC, "tag", tag );
-	ns[ NS_EXPORT ]( EX_FUNC, "name", name );
+	ns[ NS_EXPORT ]( EX_FUNC, "gname", getname );
 	ns[ NS_EXPORT ]( EX_FUNC, "glass", getClass );
 })();
diff --git a/botanjs/src/System/Net/ClassLoader.js b/botanjs/src/System/Net/ClassLoader.js
index e25de25..3c2e120 100644
--- a/botanjs/src/System/Net/ClassLoader.js
+++ b/botanjs/src/System/Net/ClassLoader.js
@@ -3,7 +3,7 @@
 
 	/** @type {System.utils} */
 	var utils                        = __import( "System.utils" );
-	/** @type {System.utils.IKey} */
+	/** @type {typeof System.utils.IKey} */
 	var IKey                         = __import( "System.utils.IKey" );
 	/** @type {System.Encoding.CodePage} */
 	var Utf8                         = __import( "System.Encoding.Utf8" );
diff --git a/botanjs/src/System/utils/DataKey.js b/botanjs/src/System/utils/DataKey.js
index 065a414..7b02b7b 100644
--- a/botanjs/src/System/utils/DataKey.js
+++ b/botanjs/src/System/utils/DataKey.js
@@ -1,8 +1,11 @@
 (function(){
 	var ns = __namespace( "System.utils" );
 	var IKey = ns[ NS_INVOKE ]( "IKey" );
-	// Data key
-	var DataKey = function ( name, value )
+
+	/** @type {typeof System.utils.DataKey} */
+	var DataKey;
+
+	DataKey = function ( name, value )
 	{
 		IKey.call(
 			this
diff --git a/botanjs/src/_this.js b/botanjs/src/_this.js
index 83710fb..d2fea28 100644
--- a/botanjs/src/_this.js
+++ b/botanjs/src/_this.js
@@ -26,6 +26,7 @@ var __const = __static_method;
 /* End Shorthand Functions }}}*/
 
 /*{{{ BotanEvent & EventDispatcher */
+/** @constructor */
 /** @this {BotanEvent} */
 var BotanEvent = function( name, data )
 {
@@ -65,10 +66,11 @@ var BotanEvent = function( name, data )
 	}.bind( this );
 };
 
-/** @constructor
- *  @implements {EventTarget}
- **/
-var EventDispatcher = function() {
+
+/** type {typeof EventDispatcher} */
+var EventDispatcher;
+
+EventDispatcher = function() {
 	var events = {};
 	var _self = this;
 
diff --git a/botanjs/src/externs/Astro.Blog.AstroEdit.IPlugin.js b/botanjs/src/externs/Astro.Blog.AstroEdit.IPlugin.js
index bd79bc7..6f934ef 100644
--- a/botanjs/src/externs/Astro.Blog.AstroEdit.IPlugin.js
+++ b/botanjs/src/externs/Astro.Blog.AstroEdit.IPlugin.js
@@ -1,6 +1,6 @@
 /** @constructor Plugin Interface */
 Astro.Blog.AstroEdit.IPlugin = function(){};
-/** @type {String} */
+/** @type {string} */
 Astro.Blog.AstroEdit.IPlugin.id;
 /** @type {Function} */
 Astro.Blog.AstroEdit.IPlugin.setFromData;
diff --git a/botanjs/src/externs/Astro.Blog.AstroEdit.SmartInput.Definition.js b/botanjs/src/externs/Astro.Blog.AstroEdit.SmartInput.Definition.js
index baa0b1c..4122ea1 100644
--- a/botanjs/src/externs/Astro.Blog.AstroEdit.SmartInput.Definition.js
+++ b/botanjs/src/externs/Astro.Blog.AstroEdit.SmartInput.Definition.js
@@ -1,8 +1,7 @@
-/** @type {object} */
-Astro.Blog.AstroEdit.SmartInput.Definition = {};
-/** @type {String} */
-Astro.Blog.AstroEdit.SmartInput.Definition.desc;
-/** @type {String} */
-Astro.Blog.AstroEdit.SmartInput.Definition.module;
-/** @type {object} */
-Astro.Blog.AstroEdit.SmartInput.Definition.option;
+/**
+ * @typedef {{
+ *   module: string,
+ *   desc: string,
+ * }}
+ */
+Astro.Blog.AstroEdit.SmartInput.Definition;
diff --git a/botanjs/src/externs/Astro.Blog.Components.Bubble.js b/botanjs/src/externs/Astro.Blog.Components.Bubble.js
index 9e401d3..72e1e47 100644
--- a/botanjs/src/externs/Astro.Blog.Components.Bubble.js
+++ b/botanjs/src/externs/Astro.Blog.Components.Bubble.js
@@ -7,12 +7,14 @@ Astro.Blog.Components.Bubble.prototype.init;
 /** @type {Function} */
 Astro.Blog.Components.Bubble.prototype.blurp;
 
-/** @type {Function}
- *  @param {String} mesg
+/**
+ * @param {string} mesg
+ * @return {void}
  */
-Astro.Blog.Components.Bubble.prototype.pop = function( mesg ) { };
+Astro.Blog.Components.Bubble.prototype.pop = function(mesg) {};
 
-/** @type {Function}
- *  @param {String} color
+/**
+ * @param {string} color
+ * @return {void}
  */
-Astro.Blog.Components.Bubble.prototype.setColor = function( color ) { };
+Astro.Blog.Components.Bubble.prototype.setColor = function(color) {};
diff --git a/botanjs/src/externs/Astro.Blog.Components.SiteFile.js b/botanjs/src/externs/Astro.Blog.Components.SiteFile.js
index b3123e9..97d9b4c 100644
--- a/botanjs/src/externs/Astro.Blog.Components.SiteFile.js
+++ b/botanjs/src/externs/Astro.Blog.Components.SiteFile.js
@@ -4,9 +4,9 @@ Astro.Blog.Components.SiteFile = function() {};
 /** @type {Function} */
 Astro.Blog.Components.SiteFile.loadInfo;
 
-/** @type {String} */
+/** @type {string} */
 Astro.Blog.Components.SiteFile.hash;
-/** @type {String} */
+/** @type {string} */
 Astro.Blog.Components.SiteFile.id;
-/** @type {String} */
+/** @type {string} */
 Astro.Blog.Components.SiteFile.type;
diff --git a/botanjs/src/externs/Astro.Blog.Config.js b/botanjs/src/externs/Astro.Blog.Config.js
index d177e9c..04a53f7 100644
--- a/botanjs/src/externs/Astro.Blog.Config.js
+++ b/botanjs/src/externs/Astro.Blog.Config.js
@@ -2,4 +2,4 @@
 Astro.Blog.Config = function() {};
 
 /** @type {Function} */
-Astro.Blog.Config.get;
+Astro.Blog.Config.prototype.get;
diff --git a/botanjs/src/externs/Astro.Blog.Events.Responsive.js b/botanjs/src/externs/Astro.Blog.Events.Responsive.js
deleted file mode 100644
index 57eb4e9..0000000
--- a/botanjs/src/externs/Astro.Blog.Events.Responsive.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/** @type {Object} */
-Astro.Blog.Events.Responsive = {};
-/** @type {Object} */
-Astro.Blog.Events.Responsive.data = {};
-/** @type {Number} */
-Astro.Blog.Events.Responsive.data.ratio = {};
-
-
diff --git a/botanjs/src/externs/Astro.Blog.Events.js b/botanjs/src/externs/Astro.Blog.Events.js
deleted file mode 100644
index 8f6bdd7..0000000
--- a/botanjs/src/externs/Astro.Blog.Events.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/** @type {Object} */
-Astro.Blog.Events = {};
diff --git a/botanjs/src/externs/Astro.utils.Date.js b/botanjs/src/externs/Astro.utils.Date.js
index b2443d3..543e6e4 100644
--- a/botanjs/src/externs/Astro.utils.Date.js
+++ b/botanjs/src/externs/Astro.utils.Date.js
@@ -1,24 +1,24 @@
 /** @constructor */
 Astro.utils.Date = function() {};
 
-/** @type {Function}*/
-Astro.utils.Date.pretty;
-/** @type {Function}*/
-Astro.utils.Date.prettyDay;
-/** @type {Function}*/
-Astro.utils.Date.diff;
-/** @type {Function}*/
-Astro.utils.Date.smstamp;
-/** @type {Function}*/
-Astro.utils.Date.chinese;
+/** @type {Function} */
+Astro.utils.Date.prototype.pretty = function() {};
+/** @type {Function} */
+Astro.utils.Date.prototype.prettyDay = function() {};
+/** @type {Function} */
+Astro.utils.Date.prototype.diff = function() {};
+/** @type {Function} */
+Astro.utils.Date.prototype.smstamp = function() {};
+/** @type {Function} */
+Astro.utils.Date.prototype.chinese = function() {};
 
-/** @const*/
+/** @const */
 Astro.utils.Date.MONTH;
-/** @const*/
+/** @const */
 Astro.utils.Date.MONTH_ABBR;
-/** @const*/
+/** @const */
 Astro.utils.Date.DAY;
-/** @const*/
+/** @const */
 Astro.utils.Date.DAY_ABBR;
-/** @const*/
+/** @const */
 Astro.utils.Date.CAP_MONTHS;
diff --git a/botanjs/src/externs/BotanEvent.js b/botanjs/src/externs/BotanEvent.js
index 8da3ab0..359660d 100644
--- a/botanjs/src/externs/BotanEvent.js
+++ b/botanjs/src/externs/BotanEvent.js
@@ -1,7 +1,7 @@
 /** @constructor */
 var BotanEvent = function (){};
 
-/** @type {object} */
+/** @type {*} */
 BotanEvent.data;
 
 /** @type {Function} */
diff --git a/botanjs/src/externs/Components.MessageBox.js b/botanjs/src/externs/Components.MessageBox.js
index 1761081..545fa96 100644
--- a/botanjs/src/externs/Components.MessageBox.js
+++ b/botanjs/src/externs/Components.MessageBox.js
@@ -1,9 +1,16 @@
-/** @constructor */
-Components.MessageBox = function() {};
+/**
+ * @constructor
+ * @param {string} title
+ * @param {string|HTMLElement} content
+ * @param {string} yes
+ * @param {string} no
+ * @param {function(boolean, ...?): void} handler
+ */
+Components.MessageBox = function(title, content, yes, no, handler) {};
 
-/** @type {Function} */
-Components.MessageBox.setHandler;
-/** @type {Function} */
-Components.MessageBox.show;
-/** @type {Function} */
-Components.MessageBox.close;
+/** @param {function(boolean, ...?): void} handler */
+Components.MessageBox.prototype.setHandler = function(handler) {};
+/** @type {function(): void} */
+Components.MessageBox.prototype.show = function() {};
+/** @type {function(): void} */
+Components.MessageBox.prototype.close = function() {};
diff --git a/botanjs/src/externs/Components.Vim.Actions.js b/botanjs/src/externs/Components.Vim.Actions.js
index af2f963..b6a9abd 100644
--- a/botanjs/src/externs/Components.Vim.Actions.js
+++ b/botanjs/src/externs/Components.Vim.Actions.js
@@ -1,7 +1,7 @@
 /** @type Object */
 Components.Vim.Actions = {};
 
-/** @type constructor */
+/** @constructor */
 Components.Vim.Actions.FIND = function(){};
 
 /** @type Function */
diff --git a/botanjs/src/externs/Components.Vim.Controls.ActionEvent.js b/botanjs/src/externs/Components.Vim.Controls.ActionEvent.js
index ca9e1e5..a38a736 100644
--- a/botanjs/src/externs/Components.Vim.Controls.ActionEvent.js
+++ b/botanjs/src/externs/Components.Vim.Controls.ActionEvent.js
@@ -5,7 +5,7 @@ Components.Vim.Controls.ActionEvent = function(){};
 Components.Vim.Controls.ActionEvent.target;
 /** @type {Components.Vim.Syntax.TokenMatch} */
 Components.Vim.Controls.ActionEvent.range;
-/** @type {Components.Vim.Syntax.Number} */
+/** @type {Number} */
 Components.Vim.Controls.ActionEvent.count;
 /** @type String */
 Components.Vim.Controls.ActionEvent.key;
diff --git a/botanjs/src/externs/Components.Vim.Cursor.js b/botanjs/src/externs/Components.Vim.Cursor.js
index 634cd47..2155973 100644
--- a/botanjs/src/externs/Components.Vim.Cursor.js
+++ b/botanjs/src/externs/Components.Vim.Cursor.js
@@ -59,8 +59,8 @@ Components.Vim.Cursor.Y;
 Components.Vim.Cursor.aPos;
 /** @type Number */
 Components.Vim.Cursor.cols;
-/** @type message */
-Components.Vim.Cursor.string;
+/** @type {string} */
+Components.Vim.Cursor.message;
 /** @type Object */
 Components.Vim.Cursor.position;
 /** @type Number */
diff --git a/botanjs/src/externs/Components.Vim.LineBuffer.js b/botanjs/src/externs/Components.Vim.LineBuffer.js
index 58f3e71..92b4d0f 100644
--- a/botanjs/src/externs/Components.Vim.LineBuffer.js
+++ b/botanjs/src/externs/Components.Vim.LineBuffer.js
@@ -8,7 +8,7 @@ Components.Vim.LineBuffer.prev;
 /** @type {Components.Vim.LineBuffer} */
 Components.Vim.LineBuffer.nextLine;
 
-/** @type EventDispatcher */
+/** @type {EventDispatcher} */
 Components.Vim.LineBuffer.dispatcher;
 
 /** @type Function */
diff --git a/botanjs/src/externs/Components.Vim.LineFeeder.js b/botanjs/src/externs/Components.Vim.LineFeeder.js
index 5edec59..7d47a6a 100644
--- a/botanjs/src/externs/Components.Vim.LineFeeder.js
+++ b/botanjs/src/externs/Components.Vim.LineFeeder.js
@@ -46,5 +46,5 @@ Components.Vim.LineFeeder.docPos;
 Components.Vim.LineFeeder.line;
 /** @type String */
 Components.Vim.LineFeeder.lineStat;
-/** @type {String} */
+/** @type {string} */
 Components.Vim.LineFeeder.content;
diff --git a/botanjs/src/externs/Dandelion.js b/botanjs/src/externs/Dandelion.js
index 8af96ab..c5a940c 100644
--- a/botanjs/src/externs/Dandelion.js
+++ b/botanjs/src/externs/Dandelion.js
@@ -32,7 +32,7 @@ Dandelion.id = function() {};
 Dandelion.tag = function() {};
 
 /** @type {Function} */
-Dandelion.name = function() {};
+Dandelion.gname = function() {};
 
 /** @type {Function} */
 Dandelion.glass = function() {};
diff --git a/botanjs/src/externs/EventDispatcher.js b/botanjs/src/externs/EventDispatcher.js
new file mode 100644
index 0000000..47d11db
--- /dev/null
+++ b/botanjs/src/externs/EventDispatcher.js
@@ -0,0 +1,4 @@
+/** @constructor
+ *  @implements {EventTarget}
+ **/
+var EventDispatcher = function() {};
diff --git a/botanjs/src/externs/System.Cycle.Trigger.js b/botanjs/src/externs/System.Cycle.Trigger.js
index 6df930d..53baf8f 100644
--- a/botanjs/src/externs/System.Cycle.Trigger.js
+++ b/botanjs/src/externs/System.Cycle.Trigger.js
@@ -2,10 +2,10 @@
 System.Cycle.Trigger = function (){}
 
 /** @type {Function} */
-System.Cycle.Trigger.register;
+System.Cycle.Trigger.prototype.register = function() {};
 
 /** @type {Function} */
-System.Cycle.Trigger.transition;
+System.Cycle.Trigger.prototype.transition = function() {};
 
 /** @type {Function} */
-System.Cycle.Trigger.height;
+System.Cycle.Trigger.prototype.height = function() {};
diff --git a/botanjs/src/externs/System.utils.DataKey.js b/botanjs/src/externs/System.utils.DataKey.js
index 2528085..c80859d 100644
--- a/botanjs/src/externs/System.utils.DataKey.js
+++ b/botanjs/src/externs/System.utils.DataKey.js
@@ -1,4 +1,7 @@
-/** @constructor
- *  @extends {System.utils.IKey}
+/**
+ * @constructor
+ * @extends {System.utils.IKey}
+ * @param {string} key
+ * @param {*} data
  */
-System.utils.DataKey = function (){}
+System.utils.DataKey = function(key, data) {};
diff --git a/botanjs/src/externs/System.utils.EventKey.js b/botanjs/src/externs/System.utils.EventKey.js
index daac6d8..6ed8850 100644
--- a/botanjs/src/externs/System.utils.EventKey.js
+++ b/botanjs/src/externs/System.utils.EventKey.js
@@ -3,7 +3,7 @@
  */
 System.utils.EventKey = function (){};
 
-/** @type {String} */
+/** @type {string} */
 System.utils.EventKey.type;
 
 /** @type {Function} */
diff --git a/botanjs/src/externs/System.utils.IKey.js b/botanjs/src/externs/System.utils.IKey.js
index 5957861..0630163 100644
--- a/botanjs/src/externs/System.utils.IKey.js
+++ b/botanjs/src/externs/System.utils.IKey.js
@@ -1,11 +1,15 @@
-/** @constructor */
-System.utils.IKey = function (){}
+/**
+ * @constructor
+ * @param {string} keyName
+ * @param {string} keyValue
+ */
+System.utils.IKey = function(keyName, keyValue) {};
 
 /** @type {string} */
-System.utils.IKey.keyName;
+System.utils.IKey.prototype.keyName;
 
-/** @type {object} */
-System.utils.IKey.keyValue;
+/** @type {string} */
+System.utils.IKey.prototype.keyValue;
 
-/** @type {Function} */
+/** @type {function(...?): !Array<!System.utils.IKey>} */
 System.utils.IKey.quickDef;
diff --git a/botanjs/src/externs/System.utils.Perf.js b/botanjs/src/externs/System.utils.Perf.js
index 8b7b6ed..fa8c63a 100644
--- a/botanjs/src/externs/System.utils.Perf.js
+++ b/botanjs/src/externs/System.utils.Perf.js
@@ -1,10 +1,10 @@
 /** @constructor */
 System.utils.Perf = function (){}
 
-/** @type {String} */
-System.utils.Perf.uuid;
+/** @type {string} */
+System.utils.Perf.prototype.uuid;
 
 /** @type {Function} */
-System.utils.Perf.ArrayReverse;
+System.utils.Perf.prototype.ArrayReverse;
 /** @type {Function} */
-System.utils.Perf.CountSubstr;
+System.utils.Perf.prototype.CountSubstr;
diff --git a/botanjs/src/externs/_AstConf_.Article.js b/botanjs/src/externs/_AstConf_.Article.js
index 1c442ae..5f8b14b 100644
--- a/botanjs/src/externs/_AstConf_.Article.js
+++ b/botanjs/src/externs/_AstConf_.Article.js
@@ -1,4 +1,4 @@
 /** @type {Object} */
 _AstConf_.Article = {};
-/** @type {String} */
+/** @type {string} */
 _AstConf_.Article.id;
diff --git a/botanjs/src/externs/_AstConf_.AstroEdit.js b/botanjs/src/externs/_AstConf_.AstroEdit.js
index e167e98..f43e0ad 100644
--- a/botanjs/src/externs/_AstConf_.AstroEdit.js
+++ b/botanjs/src/externs/_AstConf_.AstroEdit.js
@@ -1,30 +1,30 @@
-/** @type {!Object<string, *>} */
-_AstConf_.AstroEdit = {};
-/** @type {String} */
-_AstConf_.AstroEdit.article_id;
-/** @type {!Object<string, *>} */
-_AstConf_.AstroEdit.paths = {};
-	/** @type {string} */
-	_AstConf_.AstroEdit.paths.set_article;
-	/** @type {string} */
-	_AstConf_.AstroEdit.paths.get_article;
-	/** @type {string} */
-	_AstConf_.AstroEdit.paths.list_articles;
-	/** @type {string} */
-	_AstConf_.AstroEdit.paths.get_drafts;
-	/** @type {string} */
-	_AstConf_.AstroEdit.paths.get_files;
-	/** @type {string} */
-	_AstConf_.AstroEdit.paths.set_file;
+/**
+ * @typedef {{
+ *   article_id: string,
+ *   paths: !_AstConf_.AstroEdit.Paths,
+ *   tags: !Object<string, *>,
+ *   sections: !Object<string, *>,
+ *   flags: !_AstConf_.AstroEdit.Flags
+ * }}
+ */
+_AstConf_.AstroEdit;
 
-	/** @type {object} */
-	_AstConf_.AstroEdit.tags;
-	/** @type {object} */
-	_AstConf_.AstroEdit.sections;
+/**
+ * @typedef {{
+ *   set_article: string,
+ *   get_article: string,
+ *   list_articles: string,
+ *   get_drafts: string,
+ *   get_files: string,
+ *   set_file: string
+ * }}
+ */
+_AstConf_.AstroEdit.Paths;
 
-/** @type {!Object<string, *>} */
-_AstConf_.AstroEdit.flags = {};
-/** @type {string} */
-_AstConf_.AstroEdit.flags.URICount;
-/** @type {string} */
-_AstConf_.AstroEdit.flags.URISet;
+/**
+ * @typedef {{
+ *   URICount: string,
+ *   URISet: string
+ * }}
+ */
+_AstConf_.AstroEdit.Flags;
diff --git a/botanjs/src/externs/_AstConf_.Comment.js b/botanjs/src/externs/_AstConf_.Comment.js
index 5204e8a..f36e978 100644
--- a/botanjs/src/externs/_AstConf_.Comment.js
+++ b/botanjs/src/externs/_AstConf_.Comment.js
@@ -1,6 +1,6 @@
 /** @type {Object} */
 _AstConf_.Comment = {};
-/** @type {String} */
+/** @type {string} */
 _AstConf_.Comment.processor;
-/** @type {String} */
+/** @type {string} */
 _AstConf_.Comment.siteKey;
diff --git a/botanjs/src/externs/_AstConf_.Control.js b/botanjs/src/externs/_AstConf_.Control.js
index bb49c47..3f13f1b 100644
--- a/botanjs/src/externs/_AstConf_.Control.js
+++ b/botanjs/src/externs/_AstConf_.Control.js
@@ -2,5 +2,5 @@
 _AstConf_.Control = {};
 /** @type {Object} */
 _AstConf_.Control.action;
-	/** @type {String} */
+	/** @type {string} */
 	_AstConf_.Control.action.del;
diff --git a/botanjs/src/externs/_AstConf_.Login.js b/botanjs/src/externs/_AstConf_.Login.js
index 3a24c8a..0b6f842 100644
--- a/botanjs/src/externs/_AstConf_.Login.js
+++ b/botanjs/src/externs/_AstConf_.Login.js
@@ -1,8 +1,8 @@
 /** @type {Object} */
 _AstConf_.Login = {};
-/** @type {String} */
+/** @type {string} */
 _AstConf_.Login.formAct;
-/** @type {String} */
+/** @type {string} */
 _AstConf_.Login.sHeat;
 /** @type {Number} */
 _AstConf_.Login.sTTR;
diff --git a/botanjs/src/externs/_AstConf_.Notification.js b/botanjs/src/externs/_AstConf_.Notification.js
index 407bd60..e9976c9 100644
--- a/botanjs/src/externs/_AstConf_.Notification.js
+++ b/botanjs/src/externs/_AstConf_.Notification.js
@@ -1,4 +1,4 @@
 /** @type {Object} */
 _AstConf_.Notification = {};
-/** @type {String} */
+/** @type {string} */
 _AstConf_.Notification.processor;
diff --git a/botanjs/src/externs/_AstConf_.SiteFile.js b/botanjs/src/externs/_AstConf_.SiteFile.js
index 9717773..6b28484 100644
--- a/botanjs/src/externs/_AstConf_.SiteFile.js
+++ b/botanjs/src/externs/_AstConf_.SiteFile.js
@@ -1,23 +1,23 @@
 /** @type {Object} */
 _AstConf_.SiteFile = {};
-	/** @type {String} */
+	/** @type {string} */
 	_AstConf_.SiteFile.f_host;
 
 	/** @type {Object} */
 	_AstConf_.SiteFile.path;
-	/** @type {String} */
+	/** @type {string} */
 		_AstConf_.SiteFile.path.download;
-		/** @type {String} */
+		/** @type {string} */
 		_AstConf_.SiteFile.path.info;
 		/** @type {Object} */
 		_AstConf_.SiteFile.path.image;
-			/** @type {String} */
+			/** @type {string} */
 			_AstConf_.SiteFile.path.image.small;
-			/** @type {String} */
+			/** @type {string} */
 			_AstConf_.SiteFile.path.image.medium;
-			/** @type {String} */
+			/** @type {string} */
 			_AstConf_.SiteFile.path.image.large;
-			/** @type {String} */
+			/** @type {string} */
 			_AstConf_.SiteFile.path.image.original;
 	/** @type {Array} */
 	_AstConf_.SiteFile.files;
diff --git a/botanjs/src/externs/_AstConf_.UserInfo.js b/botanjs/src/externs/_AstConf_.UserInfo.js
index deda862..feb7c06 100644
--- a/botanjs/src/externs/_AstConf_.UserInfo.js
+++ b/botanjs/src/externs/_AstConf_.UserInfo.js
@@ -1,9 +1,9 @@
 /** @type {Object} */
 _AstConf_.UserInfo = {};
 
-/** @type {String} */
+/** @type {string} */
 _AstConf_.UserInfo.name;
-/** @type {String} */
+/** @type {string} */
 _AstConf_.UserInfo.website;
-/** @type {String} */
+/** @type {string} */
 _AstConf_.UserInfo.avatar;
diff --git a/botanjs/src/externs/_AstJson_.AJaxGetArticle.js b/botanjs/src/externs/_AstJson_.AJaxGetArticle.js
index 9a528da..22bf9e4 100644
--- a/botanjs/src/externs/_AstJson_.AJaxGetArticle.js
+++ b/botanjs/src/externs/_AstJson_.AJaxGetArticle.js
@@ -1,35 +1,27 @@
-/** @type {Object} */
-_AstJson_.AJaxGetArticle = {};
+/**
+ * @typedef {{
+ *   status: boolean,
+ *   ref_id: string,
+ *   article_id: string,
+ *   entry: !_AstJson_.AJaxGetArticle.Entry
+ * }}
+ */
+_AstJson_.AJaxGetArticle;
 
-/** @type {Boolean} */
-_AstJson_.AJaxGetArticle.status;
-/** @type {String} */
-_AstJson_.AJaxGetArticle.ref_id;
-/** @type {String} */
-_AstJson_.AJaxGetArticle.article_id;
-/** @type {Object} */
-_AstJson_.AJaxGetArticle.entry;
-	/** @type {String} */
-	_AstJson_.AJaxGetArticle.entry._id;
-	/** @type {String} */
-	_AstJson_.AJaxGetArticle.entry.slug;
-	/** @type {Boolean} */
-	_AstJson_.AJaxGetArticle.entry.archived;
-	/** @type {String} */
-	_AstJson_.AJaxGetArticle.entry.date_created;
-	/** @type {Boolean} */
-	_AstJson_.AJaxGetArticle.entry.draft;
-	/** @type {Boolean} */
-	_AstJson_.AJaxGetArticle.entry.featured;
-	/** @type {String} */
-	_AstJson_.AJaxGetArticle.entry.date_modified;
-	/** @type {String} */
-	_AstJson_.AJaxGetArticle.entry.date_published;
-	/** @type {Array} */
-	_AstJson_.AJaxGetArticle.entry.tags;
-	/** @type {Array} */
-	_AstJson_.AJaxGetArticle.entry.section;
-	/** @type {String} */
-	_AstJson_.AJaxGetArticle.entry.text;
-	/** @type {String} */
-	_AstJson_.AJaxGetArticle.entry.title;
+/**
+ * @typedef {{
+ *   _id: string,
+ *   slug: string,
+ *   archived: boolean,
+ *   date_created: string,
+ *   draft: boolean,
+ *   featured: boolean,
+ *   date_modified: string,
+ *   date_published: string,
+ *   tags: !Array<string>,
+ *   section: !Array<string>,
+ *   text: string,
+ *   title: string
+ * }}
+ */
+_AstJson_.AJaxGetArticle.Entry;
diff --git a/botanjs/src/externs/_AstJson_.AJaxGetDrafts.js b/botanjs/src/externs/_AstJson_.AJaxGetDrafts.js
index 9a19293..ae1271b 100644
--- a/botanjs/src/externs/_AstJson_.AJaxGetDrafts.js
+++ b/botanjs/src/externs/_AstJson_.AJaxGetDrafts.js
@@ -8,11 +8,11 @@ _AstJson_.AJaxGetDrafts.entries;
 
 /** @type {Object} */
 _AstJson_.AJaxGetDrafts.entry = {};
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.AJaxGetDrafts.entry.content;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.AJaxGetDrafts.entry.date;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.AJaxGetDrafts.entry._id;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.AJaxGetDrafts.entry.title;
diff --git a/botanjs/src/externs/_AstJson_.AJaxGetFiles.Request.js b/botanjs/src/externs/_AstJson_.AJaxGetFiles.Request.js
index 4e3f0e5..bcb6951 100644
--- a/botanjs/src/externs/_AstJson_.AJaxGetFiles.Request.js
+++ b/botanjs/src/externs/_AstJson_.AJaxGetFiles.Request.js
@@ -1,13 +1,13 @@
 /** @type {Object} */
 _AstJson_.AJaxGetFiles.Request = {};
 
-/** @type {String} */
+/** @type {string} */
 _AstJson_.AJaxGetFiles.Request.from;
-/** @type {String} */
+/** @type {string} */
 _AstJson_.AJaxGetFiles.Request.to;
-/** @type {String} */
+/** @type {string} */
 _AstJson_.AJaxGetFiles.Request.group;
-/** @type {String} */
+/** @type {string} */
 _AstJson_.AJaxGetFiles.Request.listFiles;
-/** @type {String} */
+/** @type {string} */
 _AstJson_.AJaxGetFiles.Request.aid;
diff --git a/botanjs/src/externs/_AstJson_.AJaxGetFiles.js b/botanjs/src/externs/_AstJson_.AJaxGetFiles.js
index 314ab03..80fbbce 100644
--- a/botanjs/src/externs/_AstJson_.AJaxGetFiles.js
+++ b/botanjs/src/externs/_AstJson_.AJaxGetFiles.js
@@ -8,17 +8,17 @@ _AstJson_.AJaxGetFiles.files;
 
 /** @type {Object} */
 _AstJson_.AJaxGetFiles.file = {};
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.AJaxGetFiles.file.author;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.AJaxGetFiles.file.cCount;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.AJaxGetFiles.file.date;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.AJaxGetFiles.file.hash;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.AJaxGetFiles.file.id;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.AJaxGetFiles.file.name;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.AJaxGetFiles.file.src_location;
diff --git a/botanjs/src/externs/_AstJson_.AJaxGetNotis.js b/botanjs/src/externs/_AstJson_.AJaxGetNotis.js
index d64ac3b..6632740 100644
--- a/botanjs/src/externs/_AstJson_.AJaxGetNotis.js
+++ b/botanjs/src/externs/_AstJson_.AJaxGetNotis.js
@@ -1,8 +1,8 @@
 /** @type {Object} */
 _AstJson_.AJaxGetNotis = {};
-/** @type {String} */
+/** @type {string} */
 _AstJson_.AJaxGetNotis.mesg;
-/** @type {String} */
+/** @type {string} */
 _AstJson_.AJaxGetNotis.id;
-/** @type {String} */
+/** @type {string} */
 _AstJson_.AJaxGetNotis.date;
diff --git a/botanjs/src/externs/_AstJson_.SiteFile.js b/botanjs/src/externs/_AstJson_.SiteFile.js
index 19a329e..16a8a0c 100644
--- a/botanjs/src/externs/_AstJson_.SiteFile.js
+++ b/botanjs/src/externs/_AstJson_.SiteFile.js
@@ -3,27 +3,27 @@ _AstJson_.SiteFile = {};
 
 /** @type {Boolean} */
 _AstJson_.SiteFile.status;
-/** @type {String} */
+/** @type {string} */
 _AstJson_.SiteFile.message;
 /** @type {Object} */
 _AstJson_.SiteFile.file;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.SiteFile.file.date_created;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.SiteFile.file.name;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.SiteFile.file.id;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.SiteFile.file.nickname;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.SiteFile.file.type;
-	/** @type {String} */
+	/** @type {string} */
 	_AstJson_.SiteFile.file.src_location;
 	/** @type {Object} */
 	_AstConf_.SiteFile.thumbes;
-		/** @type {String} */
+		/** @type {string} */
 		_AstConf_.SiteFile.thumbs.small;
-		/** @type {String} */
+		/** @type {string} */
 		_AstConf_.SiteFile.thumbs.medium;
-		/** @type {String} */
+		/** @type {string} */
 		_AstConf_.SiteFile.thumbs.large;
diff --git a/devtools/replace-type.sh b/devtools/replace-type.sh
new file mode 100755
index 0000000..01b69f9
--- /dev/null
+++ b/devtools/replace-type.sh
@@ -0,0 +1,65 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+if [ "$#" -ne 1 ]; then
+  echo "usage: $0 <TypeName>"
+  echo "example: $0 System.utils.IKey"
+  exit 1
+fi
+
+type_name="$1"
+from="type {$type_name}"
+to="type {typeof $type_name}"
+
+mapfile -t files < <(git grep -l -F "$from" -- '*.js')
+
+if [ "${#files[@]}" -eq 0 ]; then
+  echo "No matches found for: $from"
+  exit 0
+fi
+
+echo "Replacing:"
+echo "  $from"
+echo "with:"
+echo "  $to"
+echo
+
+for file in "${files[@]}"; do
+  echo "============================================================"
+  echo "$file"
+  echo "============================================================"
+
+  git grep -n -F "$from" -- "$file" || true
+  echo
+
+  while true; do
+    read -r -p "Replace in this file? [y/N/q/a] " ans
+    case "$ans" in
+      y|Y)
+        perl -0pi -e 's/\Q'"$from"'\E/'"$to"'/g' "$file"
+        echo "patched: $file"
+        break
+        ;;
+      a|A)
+        for f in "${files[@]}"; do
+          perl -0pi -e 's/\Q'"$from"'\E/'"$to"'/g' "$f"
+          echo "patched: $f"
+        done
+        exit 0
+        ;;
+      q|Q)
+        echo "aborted"
+        exit 0
+        ;;
+      ""|n|N)
+        echo "skipped: $file"
+        break
+        ;;
+      *)
+        echo "Use y, n, q, or a."
+        ;;
+    esac
+  done
+
+  echo
+done
\ No newline at end of file
diff --git a/resolver-go/internal/generated/buildinfo_gen.go b/resolver-go/internal/generated/buildinfo_gen.go
index a98fb40..4aaa663 100644
--- a/resolver-go/internal/generated/buildinfo_gen.go
+++ b/resolver-go/internal/generated/buildinfo_gen.go
@@ -2,5 +2,5 @@ package generated
 
 const (
 	IMAGE_TAG   = "dev"
-	Timestamp   = "20260613.015446"
+	Timestamp   = "20260613.215207"
 )
diff --git a/resolver-go/internal/generated/classmap_gen.go b/resolver-go/internal/generated/classmap_gen.go
index 4204722..9b5b2e6 100644
--- a/resolver-go/internal/generated/classmap_gen.go
+++ b/resolver-go/internal/generated/classmap_gen.go
@@ -7,44 +7,44 @@ var ClassMap = &classmap.Map{
 	Symbols: map[string]classmap.Symbol{
 		"Astro":                                           {Name: "Astro", Kind: "class", Parent: "", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Blog":                                      {Name: "Astro.Blog", Kind: "class", Parent: "Astro", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"Astro.Blog.AstroEdit":                            {Name: "Astro.Blog.AstroEdit", Kind: "class", Parent: "Astro.Blog", Imports: []string{"System.utils", "System.Cycle", "Dandelion", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.Blog.AstroEdit.Article", "Astro.Blog.AstroEdit.Draft", "Astro.Blog.AstroEdit.Flag", "Astro.Blog.AstroEdit.Visualizer", "Astro.Blog.AstroEdit.Uploader", "Astro.Blog.AstroEdit.SiteLibrary", "Components.Vim.VimArea", "Astro.Blog.AstroEdit.SmartInput", "Astro.Blog.SharedStyle"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/_this.js", JSHash: "0bb4a10aa29d9a198a2a1b0726cae5e36504a9f6", CSSHash: "2d37776089eeac5d81981f100c1c029c9249e4a9"}},
-		"Astro.Blog.AstroEdit.Article":                    {Name: "Astro.Blog.AstroEdit.Article", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.utils", "System.utils.EventKey", "System.Debug", "Components.MessageBox", "Dandelion", "Dandelion.IDOMObject", "Dandelion.IDOMElement", "Astro.Blog.Config", "Astro.Blog.Components.Bubble", "System.Net.postData", "Astro.utils.Date.pretty", "Astro.Blog.AstroEdit.Visualizer", "Astro.Blog.AstroEdit.Flag", "Astro.Blog.AstroEdit.Draft"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Article.js", JSHash: "cc0bd10a2c0a01db6c3376e5fbf7ce40af47ee20", CSSHash: "1"}},
-		"Astro.Blog.AstroEdit.Draft":                      {Name: "Astro.Blog.AstroEdit.Draft", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.utils.IKey", "Dandelion", "System.Net.postData", "Astro.Blog.AstroEdit.Article"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Draft.js", JSHash: "69fc110d6fd65fae44a4686eef2ce0b0a473f301", CSSHash: "1"}},
-		"Astro.Blog.AstroEdit.Flag":                       {Name: "Astro.Blog.AstroEdit.Flag", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Debug", "Components.MessageBox", "Dandelion", "Dandelion.IDOMElement", "Astro.Blog.Config", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Flag.js", JSHash: "c6ac147f898ea2bde4dc0333530bfe885830be90", CSSHash: "2af9897e11ed5f3c3a750ce5488c9d91e46c6c58"}},
-		"Astro.Blog.AstroEdit.SiteLibrary":                {Name: "Astro.Blog.AstroEdit.SiteLibrary", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.Debug", "System.utils.Perf", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "Components.MessageBox", "Components.Mouse.ContextMenu", "Dandelion", "Dandelion.IDOMObject", "Dandelion.IDOMElement", "Astro.Blog.Config", "System.Net.postData", "Astro.utils.Date.pretty"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SiteLibrary.js", JSHash: "17554359773ee81e0fc863e2fbedf270de3a0ab9", CSSHash: "ef9290487558512fa1db9a4a20b91aa8421b4b26"}},
-		"Astro.Blog.AstroEdit.SmartInput":                 {Name: "Astro.Blog.AstroEdit.SmartInput", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Dandelion.IDOMObject", "System.Cycle", "System.Debug", "System.Net.ClassLoader", "System.utils", "System.utils.DataKey", "System.utils.IKey", "Components.MessageBox", "Astro.Blog.Config"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/_this.js", JSHash: "115bf94fa2bbbe2e0820189659e5c9a719544794", CSSHash: "4cd01e0c87e41c384afe9d9d5fb9d545bd51bd38"}},
+		"Astro.Blog.AstroEdit":                            {Name: "Astro.Blog.AstroEdit", Kind: "class", Parent: "Astro.Blog", Imports: []string{"System.utils", "System.Cycle", "Dandelion", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.Blog.AstroEdit.Article", "Astro.Blog.AstroEdit.Draft", "Astro.Blog.AstroEdit.Flag", "Astro.Blog.AstroEdit.Visualizer", "Astro.Blog.AstroEdit.Uploader", "Astro.Blog.AstroEdit.SiteLibrary", "Components.Vim.VimArea", "Astro.Blog.AstroEdit.SmartInput", "Astro.Blog.SharedStyle"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/_this.js", JSHash: "c21f6a1de562e3365d7874696d7e791074f935c1", CSSHash: "2d37776089eeac5d81981f100c1c029c9249e4a9"}},
+		"Astro.Blog.AstroEdit.Article":                    {Name: "Astro.Blog.AstroEdit.Article", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.utils", "System.utils.EventKey", "System.Debug", "Components.MessageBox", "Dandelion", "Dandelion.IDOMObject", "Dandelion.IDOMElement", "Astro.Blog.Config", "Astro.Blog.Components.Bubble", "System.Net.postData", "Astro.utils.Date.pretty", "Astro.Blog.AstroEdit.Visualizer", "Astro.Blog.AstroEdit.Flag", "Astro.Blog.AstroEdit.Draft"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Article.js", JSHash: "03b87f0125635b0cd7cb57c79ba4d3fd5de13e3e", CSSHash: "1"}},
+		"Astro.Blog.AstroEdit.Draft":                      {Name: "Astro.Blog.AstroEdit.Draft", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.utils.IKey", "Dandelion", "System.Net.postData", "Astro.Blog.AstroEdit.Article"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Draft.js", JSHash: "f1d8d898abde5d705dec0c1fc759ee71d368d89a", CSSHash: "1"}},
+		"Astro.Blog.AstroEdit.Flag":                       {Name: "Astro.Blog.AstroEdit.Flag", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Debug", "Components.MessageBox", "Dandelion", "Dandelion.IDOMElement", "Astro.Blog.Config", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Flag.js", JSHash: "365be7deb7a621cc7379d8c0d902a45ecceb9ee7", CSSHash: "2af9897e11ed5f3c3a750ce5488c9d91e46c6c58"}},
+		"Astro.Blog.AstroEdit.SiteLibrary":                {Name: "Astro.Blog.AstroEdit.SiteLibrary", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.Debug", "System.utils.Perf", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "Components.MessageBox", "Components.Mouse.ContextMenu", "Dandelion", "Dandelion.IDOMObject", "Dandelion.IDOMElement", "Astro.Blog.Config", "System.Net.postData", "Astro.utils.Date.pretty"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SiteLibrary.js", JSHash: "06de454d725addb1640bd305b901d385798c3bea", CSSHash: "ef9290487558512fa1db9a4a20b91aa8421b4b26"}},
+		"Astro.Blog.AstroEdit.SmartInput":                 {Name: "Astro.Blog.AstroEdit.SmartInput", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Dandelion.IDOMObject", "System.Cycle", "System.Debug", "System.Net.ClassLoader", "System.utils", "System.utils.DataKey", "System.utils.IKey", "Components.MessageBox", "Astro.Blog.Config"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/_this.js", JSHash: "b4fcd09ffe90878bddee1309114d1e2ee55e36cb", CSSHash: "4cd01e0c87e41c384afe9d9d5fb9d545bd51bd38"}},
 		"Astro.Blog.AstroEdit.SmartInput.CandidateAction": {Name: "Astro.Blog.AstroEdit.SmartInput.CandidateAction", Kind: "class", Parent: "Astro.Blog.AstroEdit.SmartInput", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Blog.AstroEdit.SmartInput.CandidateAction.ArticleContent":   {Name: "Astro.Blog.AstroEdit.SmartInput.CandidateAction.ArticleContent", Kind: "class", Parent: "Astro.Blog.AstroEdit.SmartInput.CandidateAction", Imports: []string{"Astro.Blog.Config", "System.Net.getData", "Astro.utils.Date.pretty"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/ArticleReference.js", JSHash: "2e66502daabb251f22f83535899c3c282f32a2c0", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.SmartInput.CandidateAction.ArticleReference": {Name: "Astro.Blog.AstroEdit.SmartInput.CandidateAction.ArticleReference", Kind: "class", Parent: "Astro.Blog.AstroEdit.SmartInput.CandidateAction", Imports: []string{"Astro.Blog.Config", "System.Net.getData", "Astro.utils.Date.pretty"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/ArticleReference.js", JSHash: "2e66502daabb251f22f83535899c3c282f32a2c0", CSSHash: "1"}},
-		"Astro.Blog.AstroEdit.SmartInput.CandidateAction.Footnote":         {Name: "Astro.Blog.AstroEdit.SmartInput.CandidateAction.Footnote", Kind: "class", Parent: "Astro.Blog.AstroEdit.SmartInput.CandidateAction", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js", JSHash: "d1cd825e720e5fc431b7a6407d70446c4083d9b0", CSSHash: "1"}},
+		"Astro.Blog.AstroEdit.SmartInput.CandidateAction.Footnote":         {Name: "Astro.Blog.AstroEdit.SmartInput.CandidateAction.Footnote", Kind: "class", Parent: "Astro.Blog.AstroEdit.SmartInput.CandidateAction", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js", JSHash: "e308b387915865640c00c1c172c20482adaa1e46", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.SmartInput.CandidateAction.Heading":          {Name: "Astro.Blog.AstroEdit.SmartInput.CandidateAction.Heading", Kind: "class", Parent: "Astro.Blog.AstroEdit.SmartInput.CandidateAction", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/Heading.js", JSHash: "65e852a90c2dddce5931f45f841ec932e3b35e59", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.Uploader":                                    {Name: "Astro.Blog.AstroEdit.Uploader", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.Debug", "System.utils.EventKey", "Components.Mouse.ContextMenu", "Dandelion", "Dandelion.IDOMObject", "Astro.Blog.Config", "System.utils.Perf", "System.Net.postFile"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Uploader.js", JSHash: "bb696230f4ae9785fc482b761f97afd88a1fe993", CSSHash: "1"}},
-		"Astro.Blog.AstroEdit.Visualizer":                                  {Name: "Astro.Blog.AstroEdit.Visualizer", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "System.Debug", "System.utils", "System.utils.Perf", "System.utils.DataKey", "System.utils.EventKey", "System.utils.IKey", "System.Net.ClassLoader", "Components.MessageBox", "Components.Mouse.ContextMenu", "Astro.Blog.Config", "Astro.Blog.AstroEdit.Article"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/_this.js", JSHash: "df6c870d5fea831e29cac0800fdc9cd9bd51d3d2", CSSHash: "d43e2d27e52788d755c96f0db4ac500aa38ca2ee"}},
+		"Astro.Blog.AstroEdit.Visualizer":                                  {Name: "Astro.Blog.AstroEdit.Visualizer", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "System.Debug", "System.utils", "System.utils.Perf", "System.utils.DataKey", "System.utils.EventKey", "System.utils.IKey", "System.Net.ClassLoader", "Components.MessageBox", "Components.Mouse.ContextMenu", "Astro.Blog.Config", "Astro.Blog.AstroEdit.Article"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/_this.js", JSHash: "0ccfbd84763e894cd713f3a89eaa053ba5477d7c", CSSHash: "d43e2d27e52788d755c96f0db4ac500aa38ca2ee"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet":                          {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/_this.js", JSHash: "38f5d8512eabf1ffb4249b1414efd2362af8dc5c", CSSHash: "1"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.AcquireLib":               {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.AcquireLib", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js", JSHash: "91815780edf260c375218ed171f6856b406c1ba7", CSSHash: "e3860ca0ac69a86e948b811da1ebf6ba85fad57f"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleContent":           {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleContent", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js", JSHash: "e55a3ac4aea784759ebdf31ca1b3f1c355cb1e8b", CSSHash: "e1cfcf676ebfc3a9ab80139ab2f7e63a2a1b286f"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleLink":              {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleLink", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js", JSHash: "256f38e30f6910a5bccdde889b23a3bf3c1d8563", CSSHash: "2d71bce1fa868564d9dac50db338ef7eeed16fd9"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.Code":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Code", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js", JSHash: "06bdde157c5abefe6580ba768435acdda930b44b", CSSHash: "1963e8b907d049ab7228c4cccf5e34206dca2f6c"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.Footnote":                 {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Footnote", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js", JSHash: "80c62b058546fa8cec366c10aa56638610d1457d", CSSHash: "e3b173a7579b3897bb98226cd52a56534f75ca15"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.Heading":                  {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Heading", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js", JSHash: "31f7414507e3ec22867103c120a4421098dd2fc7", CSSHash: "1"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.Html":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Html", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js", JSHash: "a738dc97e43abe2b52524cb4f83690ed9782c609", CSSHash: "1"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.Image":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Image", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js", JSHash: "abceae4b0b3562fb06096f267efc14c5f738c2fa", CSSHash: "1"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.Link":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Link", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js", JSHash: "13c0f2df82650dc434af0fcfd8c2ac5936b1e803", CSSHash: "963bca1730a62b372e667b0a3f888aeef5504968"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.Meta":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Meta", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js", JSHash: "367c8aa414c194b69164f56809514e3e65ef34e0", CSSHash: "43e6cf20a8590ff0a820fed9ae53399edfb53ac4"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.RespH":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.RespH", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js", JSHash: "cc00929a4999672bb3bf271031212fb559764942", CSSHash: "60ee66e1f25468b808af731338d2f10c9e74d8fe"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.SiteFile":                 {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.SiteFile", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "System.Cycle.Trigger", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.getData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "4998450773280db1ff75c01d8c1581a7b7567012", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.Sound":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Sound", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js", JSHash: "4c1cd18a1e1e91ca69491fbee76b9671a59ec540", CSSHash: "1"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.Spoiler":                  {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Spoiler", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js", JSHash: "d930c17a9dee490d03586c5102879c2a1d8660f9", CSSHash: "1"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.Video":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Video", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "System.Net.getData", "Dandelion.StaticRes.BLANK_IMG"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js", JSHash: "8b288548013b04bd869e669fa52d6e2ef155d2be", CSSHash: "ff1d4ae903c244a6aeaf78b12c375f1f45dfb3c2"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.AcquireLib":               {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.AcquireLib", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js", JSHash: "7af9a09fbf17d439fb810b3485609c4bbd816729", CSSHash: "e3860ca0ac69a86e948b811da1ebf6ba85fad57f"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleContent":           {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleContent", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js", JSHash: "83817c1b1e8c73a598e1c090d3dae8fb341bcebe", CSSHash: "e1cfcf676ebfc3a9ab80139ab2f7e63a2a1b286f"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleLink":              {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleLink", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js", JSHash: "7c6ecca0ad47a0eb6afc625245c6b130ff5716ba", CSSHash: "2d71bce1fa868564d9dac50db338ef7eeed16fd9"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.Code":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Code", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js", JSHash: "7666299309b1a4f355a469cac7254be1a14b337e", CSSHash: "1963e8b907d049ab7228c4cccf5e34206dca2f6c"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.Footnote":                 {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Footnote", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js", JSHash: "075620fc95d8668ba79a1ed396f9fafd4c354b5c", CSSHash: "e3b173a7579b3897bb98226cd52a56534f75ca15"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.Heading":                  {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Heading", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js", JSHash: "9853e908fa40726903a8b8537a21d1f04adba0f6", CSSHash: "1"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.Html":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Html", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js", JSHash: "d327e4662449fb5742e09789b345aa6c957a26b8", CSSHash: "1"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.Image":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Image", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js", JSHash: "05a52e8296ef0a46addddbd6d6156a35cc880506", CSSHash: "1"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.Link":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Link", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js", JSHash: "6e91d7044352f8ecc1d637c0047d1a55300120bf", CSSHash: "963bca1730a62b372e667b0a3f888aeef5504968"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.Meta":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Meta", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js", JSHash: "4cb72d4d4b6124a6b2c8818d0a9d320b921ac9b2", CSSHash: "43e6cf20a8590ff0a820fed9ae53399edfb53ac4"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.RespH":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.RespH", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js", JSHash: "fdd92845b8ab0c957c7d5b695743ddaa785ad75f", CSSHash: "60ee66e1f25468b808af731338d2f10c9e74d8fe"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.SiteFile":                 {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.SiteFile", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "System.Cycle.Trigger", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.getData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "36f042d8e7efb1a1b2022245f94e6c1d2ec2b538", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.Sound":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Sound", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js", JSHash: "eeff3f7e761a8304ff114b9180ba523e1ef1c4b4", CSSHash: "1"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.Spoiler":                  {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Spoiler", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js", JSHash: "b3a483cc50f0e63c07ae64b52652f07159cdd877", CSSHash: "1"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.Video":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Video", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "System.Net.getData", "Dandelion.StaticRes.BLANK_IMG"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js", JSHash: "d6f641a25d4350b98dad2bbeeec5dedfd1c6d532", CSSHash: "ff1d4ae903c244a6aeaf78b12c375f1f45dfb3c2"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp":              {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", Kind: "method", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr":                {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", Kind: "method", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr":              {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", Kind: "method", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Blog.Components":                                            {Name: "Astro.Blog.Components", Kind: "class", Parent: "Astro.Blog", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"Astro.Blog.Components.Album":                                      {Name: "Astro.Blog.Components.Album", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.utils.IKey", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "System.utils.Perf", "Astro.Blog.Config", "Astro.Blog.Components.SiteFile", "Dandelion.StaticRes.BLANK_IMG"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Album.js", JSHash: "c105c5b8a0f1023449fca54c6e9b718a2a4c00e9", CSSHash: "640c50241b457330678a21b940fdb4ea15a5249b"}},
+		"Astro.Blog.Components.Album":                                      {Name: "Astro.Blog.Components.Album", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.utils.IKey", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "System.utils.Perf", "Astro.Blog.Config", "Astro.Blog.Components.SiteFile", "Dandelion.StaticRes.BLANK_IMG"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Album.js", JSHash: "95069b6eec9f03c84969e4d3627b0730136fa300", CSSHash: "640c50241b457330678a21b940fdb4ea15a5249b"}},
 		"Astro.Blog.Components.ArticleContent":                             {Name: "Astro.Blog.Components.ArticleContent", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/ArticleContent.js", JSHash: "2e208eae51421946f874dd78cb05d974a689bdef", CSSHash: "34fc82974af2ae7040819889bc8e7a1bd2b48cd6"}},
 		"Astro.Blog.Components.Bubble":                                     {Name: "Astro.Blog.Components.Bubble", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.utils.EventKey", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Bubble.js", JSHash: "7b344eb7e4024292d52767929d7efe6fc98a9de9", CSSHash: "2513518106d6d1c7a42e95c28becb3ddfe39e040"}},
 		"Astro.Blog.Components.Calendar":                                   {Name: "Astro.Blog.Components.Calendar", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.Debug", "Dandelion", "Dandelion.IDOMElement", "Astro.utils.Date"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Calendar.js", JSHash: "122c4ec4388b9c959692c1953a3e11563ab02f28", CSSHash: "305a716f79149cbd609791989ec8b04401a7406f"}},
-		"Astro.Blog.Components.Comment":                                    {Name: "Astro.Blog.Components.Comment", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.Debug", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.EventKey", "System.utils.DataKey", "System.utils.Perf", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.Blog.Components.Bubble", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Comment.js", JSHash: "f67949c56227fc4fb3c3aa6269d97d03d842835e", CSSHash: "7025d26f1d9579a36c128effc3e9a833e22787eb"}},
+		"Astro.Blog.Components.Comment":                                    {Name: "Astro.Blog.Components.Comment", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.Debug", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.EventKey", "System.utils.DataKey", "System.utils.Perf", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.Blog.Components.Bubble", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Comment.js", JSHash: "0ffeef5ddef4b4f3f8bdce1e30e279d4b5c05882", CSSHash: "7025d26f1d9579a36c128effc3e9a833e22787eb"}},
 		"Astro.Blog.Components.ControlPanel":                               {Name: "Astro.Blog.Components.ControlPanel", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/ControlPanel.js", JSHash: "e646278422597037693f16206b8c9dc00aa0f005", CSSHash: "812c94c181c62bd44f1871b5e44952e164df4401"}},
 		"Astro.Blog.Components.CrowdTag":                                   {Name: "Astro.Blog.Components.CrowdTag", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/CrowdTag.js", JSHash: "6720800b2b1f71dd1931ef74885460f898bb8c0e", CSSHash: "d2862681238786af37b1b5c91d266448a9b072b0"}},
 		"Astro.Blog.Components.Entry":                                      {Name: "Astro.Blog.Components.Entry", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -54,28 +54,28 @@ var ClassMap = &classmap.Map{
 		"Astro.Blog.Components.Entry.Tag":                                  {Name: "Astro.Blog.Components.Entry.Tag", Kind: "class", Parent: "Astro.Blog.Components.Entry", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/Entry/Tag.js", JSHash: "f64c75bf37dba830d6b335918c1ac5670f297396", CSSHash: "42851637f7fc9cece8ac9a666f0f74a75544eae0"}},
 		"Astro.Blog.Components.Entry.Tile":                                 {Name: "Astro.Blog.Components.Entry.Tile", Kind: "class", Parent: "Astro.Blog.Components.Entry", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/Entry/Tile.js", JSHash: "0603f59d19c81c5b7e1233fce579c79502427e7c", CSSHash: "2a925b7465760a02011eaeca6e0a353389578618"}},
 		"Astro.Blog.Components.Footnote":                                   {Name: "Astro.Blog.Components.Footnote", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.utils.Date"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Footnote.js", JSHash: "a48a57284210021bcf3aaf5bf9a4be9d5e1579ea", CSSHash: "44c3c00c1df7ec8faea902fa19840902429441b8"}},
-		"Astro.Blog.Components.Notification":                               {Name: "Astro.Blog.Components.Notification", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Debug", "System.Cycle", "Dandelion.IDOMElement", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "Dandelion", "Components.MessageBox", "Components.Mouse.ContextMenu", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.utils.Date", "System.Net.postData", "Astro.utils.Date.smstamp"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Notification.js", JSHash: "113883f159765ad8d60a7c880f92c09d8a04de59", CSSHash: "2c278ade8d5d0b49a62c10a2d239c1f7dd5edc62"}},
+		"Astro.Blog.Components.Notification":                               {Name: "Astro.Blog.Components.Notification", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Debug", "System.Cycle", "Dandelion.IDOMElement", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "Dandelion", "Components.MessageBox", "Components.Mouse.ContextMenu", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.utils.Date", "System.Net.postData", "Astro.utils.Date.smstamp"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Notification.js", JSHash: "babbc0de12589c08fe6f86d9dbc7b1839334eb4f", CSSHash: "2c278ade8d5d0b49a62c10a2d239c1f7dd5edc62"}},
 		"Astro.Blog.Components.Section":                                    {Name: "Astro.Blog.Components.Section", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/Section.js", JSHash: "d814528ea8a20fc06197b56896d1c63ffbf40fcd", CSSHash: "c48e35eafe87b99383b8b3a397eac5d569f68f66"}},
-		"Astro.Blog.Components.SiteFile":                                   {Name: "Astro.Blog.Components.SiteFile", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Debug", "System.utils.IKey", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "System.Net.getData", "Astro.utils.Date.smstamp"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/SiteFile.js", JSHash: "5e01b254f27f6ce39e14b1476751699f1d3aaae4", CSSHash: "94f07554cb4ad0b81529be89f908f039abc9c2cb"}},
-		"Astro.Blog.Components.SocialButtons":                              {Name: "Astro.Blog.Components.SocialButtons", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "System.utils.IKey", "Astro.Bootstrap"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/SocialButtons.js", JSHash: "4dbb12bdfec36354d2594091bb811428d5d01690", CSSHash: "53c508505fa9c8a744b4d276d168b535f1e7d3ac"}},
+		"Astro.Blog.Components.SiteFile":                                   {Name: "Astro.Blog.Components.SiteFile", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Debug", "System.utils.IKey", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "System.Net.getData", "Astro.utils.Date.smstamp"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/SiteFile.js", JSHash: "e3ba91c21c7415df76f76193171de7ca5bc9d69c", CSSHash: "94f07554cb4ad0b81529be89f908f039abc9c2cb"}},
+		"Astro.Blog.Components.SocialButtons":                              {Name: "Astro.Blog.Components.SocialButtons", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "System.utils.IKey", "Astro.Bootstrap"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/SocialButtons.js", JSHash: "ccdc9ce8fcdde608731b9e23ae77c6f2c61e512b", CSSHash: "53c508505fa9c8a744b4d276d168b535f1e7d3ac"}},
 		"Astro.Blog.Components.Spoiler":                                    {Name: "Astro.Blog.Components.Spoiler", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Spoiler.js", JSHash: "10965b8eefa863dea321d3d77762971402c5f8c5", CSSHash: "600586c6160a51264169ae1a475082afefd45368"}},
 		"Astro.Blog.Components.TagControl":                                 {Name: "Astro.Blog.Components.TagControl", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/TagControl.js", JSHash: "fc34df160451001d1a04242f91b937b5fdd503f1", CSSHash: "714529a31e4b9d3a4987163fb40ab53607ff4c43"}},
-		"Astro.Blog.Components.ToggleButton":                               {Name: "Astro.Blog.Components.ToggleButton", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "System.utils.DataKey", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/ToggleButton/_this.js", JSHash: "973df74eafae6ec5267101eefb1a2c8f1305a940", CSSHash: "ec9b9f22d38415aa2ff3750ac09e3b8e7494ec61"}},
+		"Astro.Blog.Components.ToggleButton":                               {Name: "Astro.Blog.Components.ToggleButton", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "System.utils.DataKey", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/ToggleButton/_this.js", JSHash: "9e49da31e734f7c4b25ae69e2eaeeeb29905a09e", CSSHash: "ec9b9f22d38415aa2ff3750ac09e3b8e7494ec61"}},
 		"Astro.Blog.Components.ToggleButton.CommentToggle":                 {Name: "Astro.Blog.Components.ToggleButton.CommentToggle", Kind: "class", Parent: "Astro.Blog.Components.ToggleButton", Imports: []string{"Astro.Blog.Components.ToggleButton", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/ToggleButton/CommentToggle.js", JSHash: "cf26a6c93343ac37d9534ca805aa2d27debe9625", CSSHash: "88b2d440e6056ebd62138e20c9b1c9da97c6fb3f"}},
-		"Astro.Blog.Components.ToggleButton.DeleteArticle":                 {Name: "Astro.Blog.Components.ToggleButton.DeleteArticle", Kind: "class", Parent: "Astro.Blog.Components.ToggleButton", Imports: []string{"Components.MessageBox", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/ToggleButton/DeleteArticle.js", JSHash: "0d6d7d21b174ad1c4ced9a1a964b8dfc280f817f", CSSHash: "37d28e8059d0f48ae1c49f9c5fa106275505fa71"}},
-		"Astro.Blog.Components.Video":                                      {Name: "Astro.Blog.Components.Video", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.utils.IKey", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "System.Net.getData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Video.js", JSHash: "eeb690e3134c5fe2f10368ce41c7e08a9a6a0974", CSSHash: "5d7572084bf0b426e76a938c61fa380d5b582ef9"}},
+		"Astro.Blog.Components.ToggleButton.DeleteArticle":                 {Name: "Astro.Blog.Components.ToggleButton.DeleteArticle", Kind: "class", Parent: "Astro.Blog.Components.ToggleButton", Imports: []string{"Components.MessageBox", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/ToggleButton/DeleteArticle.js", JSHash: "58a2e9ec9434798a1d0db892f0c3275e28d6733c", CSSHash: "37d28e8059d0f48ae1c49f9c5fa106275505fa71"}},
+		"Astro.Blog.Components.Video":                                      {Name: "Astro.Blog.Components.Video", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.utils.IKey", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "System.Net.getData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Video.js", JSHash: "a81c3528ac9d78cf1e443c4310faad23c355a654", CSSHash: "5d7572084bf0b426e76a938c61fa380d5b582ef9"}},
 		"Astro.Blog.Config":                                                {Name: "Astro.Blog.Config", Kind: "class", Parent: "Astro.Blog", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Config.js", JSHash: "72dd92f2c5087d6ddecc1507f6448ca552ee5385", CSSHash: "1"}},
 		"Astro.Blog.Config.get":                                            {Name: "Astro.Blog.Config.get", Kind: "method", Parent: "Astro.Blog.Config", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Blog.Layout":                                                {Name: "Astro.Blog.Layout", Kind: "class", Parent: "Astro.Blog", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Layout/_this.js", JSHash: "2401f45244624f7662596bb569c40dab9866dbb8", CSSHash: "1"}},
 		"Astro.Blog.Layout.Article":                                        {Name: "Astro.Blog.Layout.Article", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Layout/Article/_this.js", JSHash: "470f4b9fd651ddf34d0a32b7775d174e2e0a532a", CSSHash: "fdba7da7bf090d73264661348c0e3ee1caa90c82"}},
-		"Astro.Blog.Layout.Article.Control":                                {Name: "Astro.Blog.Layout.Article.Control", Kind: "class", Parent: "Astro.Blog.Layout.Article", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Components.MessageBox", "Astro.Bootstrap", "Astro.Blog.Config", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Article/Control.js", JSHash: "ade3fa98b148f26418bc238a05acb0156455f7dc", CSSHash: "1"}},
+		"Astro.Blog.Layout.Article.Control":                                {Name: "Astro.Blog.Layout.Article.Control", Kind: "class", Parent: "Astro.Blog.Layout.Article", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Components.MessageBox", "Astro.Bootstrap", "Astro.Blog.Config", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Article/Control.js", JSHash: "cad0f89a3793d1374a3ed22dccd6b5a146629ca0", CSSHash: "1"}},
 		"Astro.Blog.Layout.Article.Latest":                                 {Name: "Astro.Blog.Layout.Article.Latest", Kind: "class", Parent: "Astro.Blog.Layout.Article", Imports: []string{"Astro.Blog.Components.Entry.Home"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Article/Latest.js", JSHash: "1fe8f7cdab579bcb802a5336d1e6390943453277", CSSHash: "1"}},
 		"Astro.Blog.Layout.Article.Tag":                                    {Name: "Astro.Blog.Layout.Article.Tag", Kind: "class", Parent: "Astro.Blog.Layout.Article", Imports: []string{"Astro.Blog.Components.Entry.List"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Article/Tag.js", JSHash: "316e254b71f4f1e7f565dd2364d4b244942e1bd0", CSSHash: "1"}},
 		"Astro.Blog.Layout.ErrorPages":                                     {Name: "Astro.Blog.Layout.ErrorPages", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "Dandelion", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.Mechanism.CharacterCloud", "Astro.Mechanism.Parallax"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/ErrorPages.js", JSHash: "1ddc77aa611e2fc85b734be104a2702820afe4f7", CSSHash: "10c6fbfe1a05ede1204926d26eb9fb12f97802fa"}},
-		"Astro.Blog.Layout.Login":                                          {Name: "Astro.Blog.Layout.Login", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "System.utils.IKey", "Components.MessageBox", "Dandelion", "Astro.Bootstrap", "Astro.Blog.Config", "Dandelion.CSSReset", "Dandelion.CSSAnimations"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Login.js", JSHash: "2aaf11f1387452de2cd49fcf47a9115c619feb29", CSSHash: "66b8ec358f3d29b121927d0f72360e33ad90d2ad"}},
-		"Astro.Blog.Layout.MainFrame":                                      {Name: "Astro.Blog.Layout.MainFrame", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.DataKey", "System.utils.Perf", "Dandelion", "Dandelion.IDOMElement", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Astro.Mechanism.CharacterCloud", "Astro.Mechanism.Parallax", "Astro.Blog.Components.Bubble", "System.Net.postData", "Dandelion.CSSReset", "Dandelion.CSSAnimations", "Astro.Blog.SharedStyle", "Astro.Starfall.Element.Layer", "System.Net.getData", "System.Global.MOBILE"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "0606a7f7f293339f753a63089841c6c0b235e9f5", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"}},
+		"Astro.Blog.Layout.Login":                                          {Name: "Astro.Blog.Layout.Login", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "System.utils.IKey", "Components.MessageBox", "Dandelion", "Astro.Bootstrap", "Astro.Blog.Config", "Dandelion.CSSReset", "Dandelion.CSSAnimations"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Login.js", JSHash: "452180253f3b751eeb249ddb9a9cf17dd0f75354", CSSHash: "66b8ec358f3d29b121927d0f72360e33ad90d2ad"}},
+		"Astro.Blog.Layout.MainFrame":                                      {Name: "Astro.Blog.Layout.MainFrame", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.DataKey", "System.utils.Perf", "Dandelion", "Dandelion.IDOMElement", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Astro.Mechanism.CharacterCloud", "Astro.Mechanism.Parallax", "Astro.Blog.Components.Bubble", "System.Net.postData", "Dandelion.CSSReset", "Dandelion.CSSAnimations", "Astro.Blog.SharedStyle", "Astro.Starfall.Element.Layer", "System.Net.getData", "System.Global.MOBILE"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "2833f285189524cad1481e1023b92635df5cb69f", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"}},
 		"Astro.Blog.Layout.Subs":                                           {Name: "Astro.Blog.Layout.Subs", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Layout/Subs/_this.js", JSHash: "7f7ff173d8b86eccc023d17c22e55cf259925558", CSSHash: "1"}},
-		"Astro.Blog.Layout.Subs.Manage":                                    {Name: "Astro.Blog.Layout.Subs.Manage", Kind: "class", Parent: "Astro.Blog.Layout.Subs", Imports: []string{"Components.MessageBox", "Dandelion", "Astro.Bootstrap", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Subs/Manage.js", JSHash: "80f74c563d014a04eccbc23f9f1fa2f4691fe3b5", CSSHash: "eb6d28864a3b2faf9ff90912da63db158bed626f"}},
+		"Astro.Blog.Layout.Subs.Manage":                                    {Name: "Astro.Blog.Layout.Subs.Manage", Kind: "class", Parent: "Astro.Blog.Layout.Subs", Imports: []string{"Components.MessageBox", "Dandelion", "Astro.Bootstrap", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Subs/Manage.js", JSHash: "45d0286adfcfbe1620e2128d3a859153e0f1b0b7", CSSHash: "eb6d28864a3b2faf9ff90912da63db158bed626f"}},
 		"Astro.Blog.SharedStyle":                                           {Name: "Astro.Blog.SharedStyle", Kind: "class", Parent: "Astro.Blog", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/SharedStyle.js", JSHash: "e946130da823a5b2d089b5b416c13b628eb1637d", CSSHash: "f8ff15304a5e38e199b713bac48e282d2bf10f45"}},
 		"Astro.Bootstrap":                                                  {Name: "Astro.Bootstrap", Kind: "class", Parent: "Astro", Imports: []string{"System.Debug", "Dandelion.CSSReset", "Dandelion.CSSAnimations"}, Resource: classmap.Resource{Src: "Astro/Bootstrap.js", JSHash: "51bfb270eadd20b4b71372ae2d20dcf3d20575db", CSSHash: "e650f4de36f799af80ca0633d66351fb9333d620"}},
 		"Astro.Bootstrap.init":                                             {Name: "Astro.Bootstrap.init", Kind: "method", Parent: "Astro.Bootstrap", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -92,7 +92,7 @@ var ClassMap = &classmap.Map{
 		"Astro.Mechanism.Parallax.verticalSlideTo":                         {Name: "Astro.Mechanism.Parallax.verticalSlideTo", Kind: "method", Parent: "Astro.Mechanism.Parallax", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Penguin":                                                    {Name: "Astro.Penguin", Kind: "class", Parent: "Astro", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Penguin.Layout":                                             {Name: "Astro.Penguin.Layout", Kind: "class", Parent: "Astro.Penguin", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"Astro.Penguin.Layout.MainFrame":                                   {Name: "Astro.Penguin.Layout.MainFrame", Kind: "class", Parent: "Astro.Penguin.Layout", Imports: []string{"System.Cycle", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMObject", "Dandelion.IDOMElement", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Dandelion.CSSReset", "Dandelion.CSSAnimations", "Astro.Blog.SharedStyle", "Astro.Starfall.Element.Layer"}, Resource: classmap.Resource{Src: "Astro/Penguin/Layout/MainFrame.js", JSHash: "3ae092fe8b3f829425721b5e6d2f079ae002eadf", CSSHash: "e87b69ab9e725e4801065850790670d76f0a6d18"}},
+		"Astro.Penguin.Layout.MainFrame":                                   {Name: "Astro.Penguin.Layout.MainFrame", Kind: "class", Parent: "Astro.Penguin.Layout", Imports: []string{"System.Cycle", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMObject", "Dandelion.IDOMElement", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Dandelion.CSSReset", "Dandelion.CSSAnimations", "Astro.Blog.SharedStyle", "Astro.Starfall.Element.Layer"}, Resource: classmap.Resource{Src: "Astro/Penguin/Layout/MainFrame.js", JSHash: "d9ab3001ab6a614879f98441be20e6f6798b1472", CSSHash: "e87b69ab9e725e4801065850790670d76f0a6d18"}},
 		"Astro.Penguin.Page":                                               {Name: "Astro.Penguin.Page", Kind: "class", Parent: "Astro.Penguin", Imports: []string{"Astro.Penguin.Layout.MainFrame"}, Resource: classmap.Resource{Src: "Astro/Penguin/Page/_this.js", JSHash: "66e415e546eb6ca0b84cedfd4d3b6de67c2164f3", CSSHash: "e8afcaa8c75b241cd933cfc99a648adc42f815d7"}},
 		"Astro.Penguin.Page.Docs":                                          {Name: "Astro.Penguin.Page.Docs", Kind: "class", Parent: "Astro.Penguin.Page", Imports: []string{"Astro.Penguin.Layout.MainFrame"}, Resource: classmap.Resource{Src: "Astro/Penguin/Page/Docs.js", JSHash: "02217e7fa4ebffe90b32002ef07da500ac02bf52", CSSHash: "5230a026499b9ab0f4f530f4975a9df89170c83b"}},
 		"Astro.Starfall":                                                   {Name: "Astro.Starfall", Kind: "class", Parent: "Astro", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -118,7 +118,7 @@ var ClassMap = &classmap.Map{
 		"Astro.utils.Date.smstamp":                                         {Name: "Astro.utils.Date.smstamp", Kind: "method", Parent: "Astro.utils.Date", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Components":                                                       {Name: "Components", Kind: "class", Parent: "", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/_this.js", JSHash: "f4cb7babe62a5cdae34d2c4ebcb55071e81da4ff", CSSHash: "1"}},
 		"Components.Console":                                               {Name: "Components.Console", Kind: "class", Parent: "Components", Imports: []string{"System.utils.Perf", "System.Cycle", "System.Cycle.TICK", "System.Global", "System.Log", "System.Debug", "Dandelion", "Dandelion.IDOMElement", "Components.DockPanel"}, Resource: classmap.Resource{Src: "Components/Console.js", JSHash: "348c0ff1762c0a00ed813e3419f17ed695399ec3", CSSHash: "452f4a36e8fd7321c7d177a311047c8b71165e48"}},
-		"Components.DockPanel":                                             {Name: "Components.DockPanel", Kind: "class", Parent: "Components", Imports: []string{"System.Cycle", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Components/DockPanel.js", JSHash: "b11318868cba7e297dd61b66abfc038b27a4f6d8", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"}},
+		"Components.DockPanel":                                             {Name: "Components.DockPanel", Kind: "class", Parent: "Components", Imports: []string{"System.Cycle", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Components/DockPanel.js", JSHash: "d9f9c996536ac6b5d6f5f7262b7889468a36b13b", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"}},
 		"Components.MessageBox":                                            {Name: "Components.MessageBox", Kind: "class", Parent: "Components", Imports: []string{"System.Cycle.Trigger", "Dandelion", "Dandelion.IDOMObject", "System.utils.EventKey", "Dandelion.CSSAnimations"}, Resource: classmap.Resource{Src: "Components/MessageBox.js", JSHash: "63c831ec6493912492780009a76997d7bc59cad4", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"}},
 		"Components.Mouse":                                                 {Name: "Components.Mouse", Kind: "class", Parent: "Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/Mouse/_this.js", JSHash: "9ec5ced53a20ea1d057e2142668e27e5df7d49f6", CSSHash: "1"}},
 		"Components.Mouse.Clipboard":                                       {Name: "Components.Mouse.Clipboard", Kind: "class", Parent: "Components.Mouse", Imports: []string{"System.Global", "System.Debug", "System.utils.Perf", "System.Cycle", "Dandelion.IDOMElement", "Dandelion"}, Resource: classmap.Resource{Src: "Components/Mouse/Clipboard.js", JSHash: "742b2522cd0d5dad897d5c3afa2d568494661912", CSSHash: "1b7f85206ce1560ed23d3b270e093022e25d2e61"}},
@@ -127,7 +127,7 @@ var ClassMap = &classmap.Map{
 		"Components.Mouse.Clipboard.onMouseOut":                            {Name: "Components.Mouse.Clipboard.onMouseOut", Kind: "prop", Parent: "Components.Mouse.Clipboard", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Components.Mouse.Clipboard.onMouseOver":                           {Name: "Components.Mouse.Clipboard.onMouseOver", Kind: "prop", Parent: "Components.Mouse.Clipboard", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Components.Mouse.Clipboard.setTextToCopy":                         {Name: "Components.Mouse.Clipboard.setTextToCopy", Kind: "method", Parent: "Components.Mouse.Clipboard", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"Components.Mouse.ContextMenu":                                     {Name: "Components.Mouse.ContextMenu", Kind: "class", Parent: "Components.Mouse", Imports: []string{"System.utils", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "System.Cycle", "Dandelion", "Dandelion.IDOMElement", "Components.Mouse.Clipboard"}, Resource: classmap.Resource{Src: "Components/Mouse/ContextMenu.js", JSHash: "5f060fc046686fc71ec1a6c0742407fc902387c5", CSSHash: "d5a5f1a4a0db9a440b9a070f9879beaddffbd99a"}},
+		"Components.Mouse.ContextMenu":                                     {Name: "Components.Mouse.ContextMenu", Kind: "class", Parent: "Components.Mouse", Imports: []string{"System.utils", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "System.Cycle", "Dandelion", "Dandelion.IDOMElement", "Components.Mouse.Clipboard"}, Resource: classmap.Resource{Src: "Components/Mouse/ContextMenu.js", JSHash: "9e9863a463cb3b8b4d71f13bf364a09c1eb2c3c8", CSSHash: "d5a5f1a4a0db9a440b9a070f9879beaddffbd99a"}},
 		"Components.Vim":                                                   {Name: "Components.Vim", Kind: "class", Parent: "Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/Vim/_this.js", JSHash: "2abd3bc287e8b8b0b5966457835dcb4bde6174df", CSSHash: "7949b25860fcef736927c01502aad09b56d764b2"}},
 		"Components.Vim.ActionEvent":                                       {Name: "Components.Vim.ActionEvent", Kind: "class", Parent: "Components.Vim", Imports: []string{"System.Debug", "Components.Vim.Ex.Command", "Components.Vim.Beep"}, Resource: classmap.Resource{Src: "Components/Vim/Controls.js", JSHash: "d820f2b288a11adfd43eed1186f702013530606f", CSSHash: "1"}},
 		"Components.Vim.Actions":                                           {Name: "Components.Vim.Actions", Kind: "class", Parent: "Components.Vim", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -179,13 +179,13 @@ var ClassMap = &classmap.Map{
 		"Components.Vim.Syntax.Analyzer":                                   {Name: "Components.Vim.Syntax.Analyzer", Kind: "class", Parent: "Components.Vim.Syntax", Imports: []string{"System.Debug", "Components.Vim.Beep", "Components.Vim.Syntax.Word"}, Resource: classmap.Resource{Src: "Components/Vim/Syntax/Analyzer.js", JSHash: "64b9a2ae4c6ba0f9fdc0dda87323786df6c6b339", CSSHash: "1"}},
 		"Components.Vim.Syntax.TokenMatch":                                 {Name: "Components.Vim.Syntax.TokenMatch", Kind: "class", Parent: "Components.Vim.Syntax", Imports: []string{"System.Debug", "Components.Vim.Beep", "Components.Vim.Syntax.Word"}, Resource: classmap.Resource{Src: "Components/Vim/Syntax/Analyzer.js", JSHash: "64b9a2ae4c6ba0f9fdc0dda87323786df6c6b339", CSSHash: "1"}},
 		"Components.Vim.Syntax.Word":                                       {Name: "Components.Vim.Syntax.Word", Kind: "class", Parent: "Components.Vim.Syntax", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/Vim/Syntax/Word.js", JSHash: "a6d24370b0906cc0f09cfd68d96d635cd583fac3", CSSHash: "1"}},
-		"Components.Vim.VimArea":                                           {Name: "Components.Vim.VimArea", Kind: "class", Parent: "Components.Vim", Imports: []string{"Dandelion.IDOMElement", "System.utils.DataKey", "System.utils.EventKey", "System.Cycle", "System.Debug", "Components.Vim.State.Registers", "Components.Vim.State.Marks", "Components.Vim.Syntax.Analyzer", "Components.Vim.LineFeeder", "Components.Vim.StatusBar", "Components.Vim.Controls", "Components.Vim.ActionEvent", "Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/VimArea.js", JSHash: "6b33a357bfc101ab7d12a559680039e831d1d088", CSSHash: "1"}},
-		"Dandelion":                                                        {Name: "Dandelion", Kind: "class", Parent: "", Imports: []string{"System.Global.IE", "System.utils.IKey"}, Resource: classmap.Resource{Src: "Dandelion/_this.js", JSHash: "0611b733011b5cf9284beb0af75367a65bf4c042", CSSHash: "1"}},
+		"Components.Vim.VimArea":                                           {Name: "Components.Vim.VimArea", Kind: "class", Parent: "Components.Vim", Imports: []string{"Dandelion.IDOMElement", "System.utils.DataKey", "System.utils.EventKey", "System.Cycle", "System.Debug", "Components.Vim.State.Registers", "Components.Vim.State.Marks", "Components.Vim.Syntax.Analyzer", "Components.Vim.LineFeeder", "Components.Vim.StatusBar", "Components.Vim.Controls", "Components.Vim.ActionEvent", "Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/VimArea.js", JSHash: "dda35cb49939da6a71d08f68a85435f68d64e283", CSSHash: "1"}},
+		"Dandelion":                                                        {Name: "Dandelion", Kind: "class", Parent: "", Imports: []string{"System.Global.IE", "System.utils.IKey"}, Resource: classmap.Resource{Src: "Dandelion/_this.js", JSHash: "27db6b49f6b23b1a3e7e905932525a81621e0b8f", CSSHash: "1"}},
 		"Dandelion.CSSAnimations":                                          {Name: "Dandelion.CSSAnimations", Kind: "class", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "Dandelion/CSSAnimations/_this.js", JSHash: "a01a6bcfc5851debc7179e9449dc93617bca3afc", CSSHash: "2d6b4b00f0c4050187ccf010e0a24e5bc6121d18"}},
 		"Dandelion.CSSAnimations.MouseOverMovie":                           {Name: "Dandelion.CSSAnimations.MouseOverMovie", Kind: "method", Parent: "Dandelion.CSSAnimations", Imports: []string(nil), Resource: classmap.Resource{Src: "Dandelion/CSSAnimations/MovieClip.js", JSHash: "5667064818a0ca32f11a9b5a27ed641058e9df6c", CSSHash: "daa6e6f4ee3365e599cf1b2680f3e907389534f3"}},
 		"Dandelion.CSSAnimations.MovieClip":                                {Name: "Dandelion.CSSAnimations.MovieClip", Kind: "class", Parent: "Dandelion.CSSAnimations", Imports: []string{"System.utils.EventKey", "System.Cycle.Trigger", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Dandelion/CSSAnimations/MovieClip.js", JSHash: "5667064818a0ca32f11a9b5a27ed641058e9df6c", CSSHash: "daa6e6f4ee3365e599cf1b2680f3e907389534f3"}},
 		"Dandelion.CSSReset":                                               {Name: "Dandelion.CSSReset", Kind: "class", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "Dandelion/CSSReset.js", JSHash: "f25ae8f90e11e3bb8eed6ebdac3a23305d615dc9", CSSHash: "59fbc1a2ec3f70e2b719fd73bff973efb34676c4"}},
-		"Dandelion.IDOMElement":                                            {Name: "Dandelion.IDOMElement", Kind: "class", Parent: "Dandelion", Imports: []string{"System.utils.IKey", "System.utils.Perf", "Dandelion.wrap", "Dandelion.IDOMObject"}, Resource: classmap.Resource{Src: "Dandelion/IDOMElement.js", JSHash: "cf065d6d0ef70064651f3c74c54a5338198cf229", CSSHash: "1"}},
+		"Dandelion.IDOMElement":                                            {Name: "Dandelion.IDOMElement", Kind: "class", Parent: "Dandelion", Imports: []string{"System.utils.IKey", "System.utils.Perf", "Dandelion.wrap", "Dandelion.IDOMObject"}, Resource: classmap.Resource{Src: "Dandelion/IDOMElement.js", JSHash: "8382686fccc93347661387bbe9c7a8a3c31fdc3f", CSSHash: "1"}},
 		"Dandelion.IDOMObject":                                             {Name: "Dandelion.IDOMObject", Kind: "class", Parent: "Dandelion", Imports: []string{"System.utils.EventKey"}, Resource: classmap.Resource{Src: "Dandelion/IDOMObject.js", JSHash: "5727639574a022feccfef1deb2056146f1f23c06", CSSHash: "1"}},
 		"Dandelion.StaticRes":                                              {Name: "Dandelion.StaticRes", Kind: "class", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "Dandelion/StaticRes.js", JSHash: "43738524071b7207e6dba6bd223bf811bd475949", CSSHash: "1"}},
 		"Dandelion.StaticRes.BLANK_IMG":                                    {Name: "Dandelion.StaticRes.BLANK_IMG", Kind: "prop", Parent: "Dandelion.StaticRes", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -199,8 +199,8 @@ var ClassMap = &classmap.Map{
 		"Dandelion.bubbleUp":                                               {Name: "Dandelion.bubbleUp", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Dandelion.chainUpApply":                                           {Name: "Dandelion.chainUpApply", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Dandelion.glass":                                                  {Name: "Dandelion.glass", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Dandelion.gname":                                                  {Name: "Dandelion.gname", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Dandelion.id":                                                     {Name: "Dandelion.id", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"Dandelion.name":                                                   {Name: "Dandelion.name", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Dandelion.tag":                                                    {Name: "Dandelion.tag", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Dandelion.textNode":                                               {Name: "Dandelion.textNode", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Dandelion.wrap":                                                   {Name: "Dandelion.wrap", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -293,7 +293,7 @@ var ClassMap = &classmap.Map{
 		"System.Log.removeHandler":                                         {Name: "System.Log.removeHandler", Kind: "method", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Log.writeLine":                                             {Name: "System.Log.writeLine", Kind: "method", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Net":                                                       {Name: "System.Net", Kind: "class", Parent: "System", Imports: []string{"System.Debug", "Dandelion.IDOMObject"}, Resource: classmap.Resource{Src: "System/Net/_this.js", JSHash: "1b2e6ddd90efc213dbbd139e2dc891ab41ec043f", CSSHash: "1"}},
-		"System.Net.ClassLoader":                                           {Name: "System.Net.ClassLoader", Kind: "class", Parent: "System.Net", Imports: []string{"System.utils", "System.utils.IKey", "System.Encoding.Utf8", "System.Encoding.Base64", "Dandelion", "System.Compression.Zlib.Deflate"}, Resource: classmap.Resource{Src: "System/Net/ClassLoader.js", JSHash: "5705bcd2343a269af6a6c55c4c85fd5d0f74d268", CSSHash: "1"}},
+		"System.Net.ClassLoader":                                           {Name: "System.Net.ClassLoader", Kind: "class", Parent: "System.Net", Imports: []string{"System.utils", "System.utils.IKey", "System.Encoding.Utf8", "System.Encoding.Base64", "Dandelion", "System.Compression.Zlib.Deflate"}, Resource: classmap.Resource{Src: "System/Net/ClassLoader.js", JSHash: "7aa219e660357e3ee53a166bd961954fe97b01ec", CSSHash: "1"}},
 		"System.Net.compilePostData":                                       {Name: "System.Net.compilePostData", Kind: "method", Parent: "System.Net", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Net.getData":                                               {Name: "System.Net.getData", Kind: "method", Parent: "System.Net", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Net.postData":                                              {Name: "System.Net.postData", Kind: "method", Parent: "System.Net", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -302,7 +302,7 @@ var ClassMap = &classmap.Map{
 		"System.Policy.isOriginAllowed":                                    {Name: "System.Policy.isOriginAllowed", Kind: "method", Parent: "System.Policy", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Tick":                                                      {Name: "System.Tick", Kind: "class", Parent: "System", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Tick.js", JSHash: "526500dfd490e4c29b30f9f00b32a238b74afedb", CSSHash: "1"}},
 		"System.utils":                                                     {Name: "System.utils", Kind: "class", Parent: "System", Imports: []string{"System.Global"}, Resource: classmap.Resource{Src: "System/utils/_this.js", JSHash: "217041f4a86092e258a1c6624ff837cefd1ccc0f", CSSHash: "1"}},
-		"System.utils.DataKey":                                             {Name: "System.utils.DataKey", Kind: "class", Parent: "System.utils", Imports: []string{"System.utils.IKey"}, Resource: classmap.Resource{Src: "System/utils/DataKey.js", JSHash: "1d6b56a4a4c74713b461db65eb5e6c43e3d161e8", CSSHash: "1"}},
+		"System.utils.DataKey":                                             {Name: "System.utils.DataKey", Kind: "class", Parent: "System.utils", Imports: []string{"System.utils.IKey"}, Resource: classmap.Resource{Src: "System/utils/DataKey.js", JSHash: "2fbaf05a01bc5899943459e67bad487f10c39276", CSSHash: "1"}},
 		"System.utils.EventKey":                                            {Name: "System.utils.EventKey", Kind: "class", Parent: "System.utils", Imports: []string{"System.utils.IKey"}, Resource: classmap.Resource{Src: "System/utils/EventKey.js", JSHash: "c6285ef1d22a5e15b12c4fd13fa00d64517f59b8", CSSHash: "1"}},
 		"System.utils.IKey":                                                {Name: "System.utils.IKey", Kind: "class", Parent: "System.utils", Imports: []string(nil), Resource: classmap.Resource{Src: "System/utils/IKey.js", JSHash: "e9e57a335ec6204b35fead34925cffdc3e38b55b", CSSHash: "1"}},
 		"System.utils.Perf":                                                {Name: "System.utils.Perf", Kind: "class", Parent: "System.utils", Imports: []string(nil), Resource: classmap.Resource{Src: "System/utils/Perf.js", JSHash: "4a8c714fd0302d1bcad10c27bcd4a574ffe606eb", CSSHash: "1"}},
@@ -315,38 +315,38 @@ var ClassMap = &classmap.Map{
 		"System.utils.siteProto":                                           {Name: "System.utils.siteProto", Kind: "method", Parent: "System.utils", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 	},
 	Files: map[string]classmap.Resource{
-		"Astro/Blog/AstroEdit/Article.js":                                     {Src: "Astro/Blog/AstroEdit/Article.js", JSHash: "cc0bd10a2c0a01db6c3376e5fbf7ce40af47ee20", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/Draft.js":                                       {Src: "Astro/Blog/AstroEdit/Draft.js", JSHash: "69fc110d6fd65fae44a4686eef2ce0b0a473f301", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/Flag.js":                                        {Src: "Astro/Blog/AstroEdit/Flag.js", JSHash: "c6ac147f898ea2bde4dc0333530bfe885830be90", CSSHash: "2af9897e11ed5f3c3a750ce5488c9d91e46c6c58"},
-		"Astro/Blog/AstroEdit/SiteLibrary.js":                                 {Src: "Astro/Blog/AstroEdit/SiteLibrary.js", JSHash: "17554359773ee81e0fc863e2fbedf270de3a0ab9", CSSHash: "ef9290487558512fa1db9a4a20b91aa8421b4b26"},
+		"Astro/Blog/AstroEdit/Article.js":                                     {Src: "Astro/Blog/AstroEdit/Article.js", JSHash: "03b87f0125635b0cd7cb57c79ba4d3fd5de13e3e", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Draft.js":                                       {Src: "Astro/Blog/AstroEdit/Draft.js", JSHash: "f1d8d898abde5d705dec0c1fc759ee71d368d89a", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Flag.js":                                        {Src: "Astro/Blog/AstroEdit/Flag.js", JSHash: "365be7deb7a621cc7379d8c0d902a45ecceb9ee7", CSSHash: "2af9897e11ed5f3c3a750ce5488c9d91e46c6c58"},
+		"Astro/Blog/AstroEdit/SiteLibrary.js":                                 {Src: "Astro/Blog/AstroEdit/SiteLibrary.js", JSHash: "06de454d725addb1640bd305b901d385798c3bea", CSSHash: "ef9290487558512fa1db9a4a20b91aa8421b4b26"},
 		"Astro/Blog/AstroEdit/SmartInput/CandidateAction/ArticleReference.js": {Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/ArticleReference.js", JSHash: "2e66502daabb251f22f83535899c3c282f32a2c0", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js":         {Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js", JSHash: "d1cd825e720e5fc431b7a6407d70446c4083d9b0", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js":         {Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js", JSHash: "e308b387915865640c00c1c172c20482adaa1e46", CSSHash: "1"},
 		"Astro/Blog/AstroEdit/SmartInput/CandidateAction/Heading.js":          {Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/Heading.js", JSHash: "65e852a90c2dddce5931f45f841ec932e3b35e59", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/SmartInput/_this.js":                            {Src: "Astro/Blog/AstroEdit/SmartInput/_this.js", JSHash: "115bf94fa2bbbe2e0820189659e5c9a719544794", CSSHash: "4cd01e0c87e41c384afe9d9d5fb9d545bd51bd38"},
+		"Astro/Blog/AstroEdit/SmartInput/_this.js":                            {Src: "Astro/Blog/AstroEdit/SmartInput/_this.js", JSHash: "b4fcd09ffe90878bddee1309114d1e2ee55e36cb", CSSHash: "4cd01e0c87e41c384afe9d9d5fb9d545bd51bd38"},
 		"Astro/Blog/AstroEdit/Uploader.js":                                    {Src: "Astro/Blog/AstroEdit/Uploader.js", JSHash: "bb696230f4ae9785fc482b761f97afd88a1fe993", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js":               {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js", JSHash: "91815780edf260c375218ed171f6856b406c1ba7", CSSHash: "e3860ca0ac69a86e948b811da1ebf6ba85fad57f"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js":           {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js", JSHash: "e55a3ac4aea784759ebdf31ca1b3f1c355cb1e8b", CSSHash: "e1cfcf676ebfc3a9ab80139ab2f7e63a2a1b286f"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js":              {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js", JSHash: "256f38e30f6910a5bccdde889b23a3bf3c1d8563", CSSHash: "2d71bce1fa868564d9dac50db338ef7eeed16fd9"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js", JSHash: "06bdde157c5abefe6580ba768435acdda930b44b", CSSHash: "1963e8b907d049ab7228c4cccf5e34206dca2f6c"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js":                 {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js", JSHash: "80c62b058546fa8cec366c10aa56638610d1457d", CSSHash: "e3b173a7579b3897bb98226cd52a56534f75ca15"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js":                  {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js", JSHash: "31f7414507e3ec22867103c120a4421098dd2fc7", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js", JSHash: "a738dc97e43abe2b52524cb4f83690ed9782c609", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js", JSHash: "abceae4b0b3562fb06096f267efc14c5f738c2fa", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js", JSHash: "13c0f2df82650dc434af0fcfd8c2ac5936b1e803", CSSHash: "963bca1730a62b372e667b0a3f888aeef5504968"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js", JSHash: "367c8aa414c194b69164f56809514e3e65ef34e0", CSSHash: "43e6cf20a8590ff0a820fed9ae53399edfb53ac4"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js", JSHash: "cc00929a4999672bb3bf271031212fb559764942", CSSHash: "60ee66e1f25468b808af731338d2f10c9e74d8fe"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js":                 {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "4998450773280db1ff75c01d8c1581a7b7567012", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js", JSHash: "4c1cd18a1e1e91ca69491fbee76b9671a59ec540", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js":                  {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js", JSHash: "d930c17a9dee490d03586c5102879c2a1d8660f9", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js", JSHash: "8b288548013b04bd869e669fa52d6e2ef155d2be", CSSHash: "ff1d4ae903c244a6aeaf78b12c375f1f45dfb3c2"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js":               {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js", JSHash: "7af9a09fbf17d439fb810b3485609c4bbd816729", CSSHash: "e3860ca0ac69a86e948b811da1ebf6ba85fad57f"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js":           {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js", JSHash: "83817c1b1e8c73a598e1c090d3dae8fb341bcebe", CSSHash: "e1cfcf676ebfc3a9ab80139ab2f7e63a2a1b286f"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js":              {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js", JSHash: "7c6ecca0ad47a0eb6afc625245c6b130ff5716ba", CSSHash: "2d71bce1fa868564d9dac50db338ef7eeed16fd9"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js", JSHash: "7666299309b1a4f355a469cac7254be1a14b337e", CSSHash: "1963e8b907d049ab7228c4cccf5e34206dca2f6c"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js":                 {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js", JSHash: "075620fc95d8668ba79a1ed396f9fafd4c354b5c", CSSHash: "e3b173a7579b3897bb98226cd52a56534f75ca15"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js":                  {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js", JSHash: "9853e908fa40726903a8b8537a21d1f04adba0f6", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js", JSHash: "d327e4662449fb5742e09789b345aa6c957a26b8", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js", JSHash: "05a52e8296ef0a46addddbd6d6156a35cc880506", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js", JSHash: "6e91d7044352f8ecc1d637c0047d1a55300120bf", CSSHash: "963bca1730a62b372e667b0a3f888aeef5504968"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js", JSHash: "4cb72d4d4b6124a6b2c8818d0a9d320b921ac9b2", CSSHash: "43e6cf20a8590ff0a820fed9ae53399edfb53ac4"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js", JSHash: "fdd92845b8ab0c957c7d5b695743ddaa785ad75f", CSSHash: "60ee66e1f25468b808af731338d2f10c9e74d8fe"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js":                 {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "36f042d8e7efb1a1b2022245f94e6c1d2ec2b538", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js", JSHash: "eeff3f7e761a8304ff114b9180ba523e1ef1c4b4", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js":                  {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js", JSHash: "b3a483cc50f0e63c07ae64b52652f07159cdd877", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js", JSHash: "d6f641a25d4350b98dad2bbeeec5dedfd1c6d532", CSSHash: "ff1d4ae903c244a6aeaf78b12c375f1f45dfb3c2"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/_this.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/_this.js", JSHash: "38f5d8512eabf1ffb4249b1414efd2362af8dc5c", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/Visualizer/_this.js":                            {Src: "Astro/Blog/AstroEdit/Visualizer/_this.js", JSHash: "df6c870d5fea831e29cac0800fdc9cd9bd51d3d2", CSSHash: "d43e2d27e52788d755c96f0db4ac500aa38ca2ee"},
-		"Astro/Blog/AstroEdit/_this.js":                                       {Src: "Astro/Blog/AstroEdit/_this.js", JSHash: "0bb4a10aa29d9a198a2a1b0726cae5e36504a9f6", CSSHash: "2d37776089eeac5d81981f100c1c029c9249e4a9"},
-		"Astro/Blog/Components/Album.js":                                      {Src: "Astro/Blog/Components/Album.js", JSHash: "c105c5b8a0f1023449fca54c6e9b718a2a4c00e9", CSSHash: "640c50241b457330678a21b940fdb4ea15a5249b"},
+		"Astro/Blog/AstroEdit/Visualizer/_this.js":                            {Src: "Astro/Blog/AstroEdit/Visualizer/_this.js", JSHash: "0ccfbd84763e894cd713f3a89eaa053ba5477d7c", CSSHash: "d43e2d27e52788d755c96f0db4ac500aa38ca2ee"},
+		"Astro/Blog/AstroEdit/_this.js":                                       {Src: "Astro/Blog/AstroEdit/_this.js", JSHash: "c21f6a1de562e3365d7874696d7e791074f935c1", CSSHash: "2d37776089eeac5d81981f100c1c029c9249e4a9"},
+		"Astro/Blog/Components/Album.js":                                      {Src: "Astro/Blog/Components/Album.js", JSHash: "95069b6eec9f03c84969e4d3627b0730136fa300", CSSHash: "640c50241b457330678a21b940fdb4ea15a5249b"},
 		"Astro/Blog/Components/ArticleContent.js":                             {Src: "Astro/Blog/Components/ArticleContent.js", JSHash: "2e208eae51421946f874dd78cb05d974a689bdef", CSSHash: "34fc82974af2ae7040819889bc8e7a1bd2b48cd6"},
 		"Astro/Blog/Components/Bubble.js":                                     {Src: "Astro/Blog/Components/Bubble.js", JSHash: "7b344eb7e4024292d52767929d7efe6fc98a9de9", CSSHash: "2513518106d6d1c7a42e95c28becb3ddfe39e040"},
 		"Astro/Blog/Components/Calendar.js":                                   {Src: "Astro/Blog/Components/Calendar.js", JSHash: "122c4ec4388b9c959692c1953a3e11563ab02f28", CSSHash: "305a716f79149cbd609791989ec8b04401a7406f"},
-		"Astro/Blog/Components/Comment.js":                                    {Src: "Astro/Blog/Components/Comment.js", JSHash: "f67949c56227fc4fb3c3aa6269d97d03d842835e", CSSHash: "7025d26f1d9579a36c128effc3e9a833e22787eb"},
+		"Astro/Blog/Components/Comment.js":                                    {Src: "Astro/Blog/Components/Comment.js", JSHash: "0ffeef5ddef4b4f3f8bdce1e30e279d4b5c05882", CSSHash: "7025d26f1d9579a36c128effc3e9a833e22787eb"},
 		"Astro/Blog/Components/ControlPanel.js":                               {Src: "Astro/Blog/Components/ControlPanel.js", JSHash: "e646278422597037693f16206b8c9dc00aa0f005", CSSHash: "812c94c181c62bd44f1871b5e44952e164df4401"},
 		"Astro/Blog/Components/CrowdTag.js":                                   {Src: "Astro/Blog/Components/CrowdTag.js", JSHash: "6720800b2b1f71dd1931ef74885460f898bb8c0e", CSSHash: "d2862681238786af37b1b5c91d266448a9b072b0"},
 		"Astro/Blog/Components/Entry/Blog.js":                                 {Src: "Astro/Blog/Components/Entry/Blog.js", JSHash: "0f5776a529380627bbf0859a5810e9995333f5c7", CSSHash: "0473bbb41f9b27a5d448a36c1e175f6f18841019"},
@@ -355,25 +355,25 @@ var ClassMap = &classmap.Map{
 		"Astro/Blog/Components/Entry/Tag.js":                                  {Src: "Astro/Blog/Components/Entry/Tag.js", JSHash: "f64c75bf37dba830d6b335918c1ac5670f297396", CSSHash: "42851637f7fc9cece8ac9a666f0f74a75544eae0"},
 		"Astro/Blog/Components/Entry/Tile.js":                                 {Src: "Astro/Blog/Components/Entry/Tile.js", JSHash: "0603f59d19c81c5b7e1233fce579c79502427e7c", CSSHash: "2a925b7465760a02011eaeca6e0a353389578618"},
 		"Astro/Blog/Components/Footnote.js":                                   {Src: "Astro/Blog/Components/Footnote.js", JSHash: "a48a57284210021bcf3aaf5bf9a4be9d5e1579ea", CSSHash: "44c3c00c1df7ec8faea902fa19840902429441b8"},
-		"Astro/Blog/Components/Notification.js":                               {Src: "Astro/Blog/Components/Notification.js", JSHash: "113883f159765ad8d60a7c880f92c09d8a04de59", CSSHash: "2c278ade8d5d0b49a62c10a2d239c1f7dd5edc62"},
+		"Astro/Blog/Components/Notification.js":                               {Src: "Astro/Blog/Components/Notification.js", JSHash: "babbc0de12589c08fe6f86d9dbc7b1839334eb4f", CSSHash: "2c278ade8d5d0b49a62c10a2d239c1f7dd5edc62"},
 		"Astro/Blog/Components/Section.js":                                    {Src: "Astro/Blog/Components/Section.js", JSHash: "d814528ea8a20fc06197b56896d1c63ffbf40fcd", CSSHash: "c48e35eafe87b99383b8b3a397eac5d569f68f66"},
-		"Astro/Blog/Components/SiteFile.js":                                   {Src: "Astro/Blog/Components/SiteFile.js", JSHash: "5e01b254f27f6ce39e14b1476751699f1d3aaae4", CSSHash: "94f07554cb4ad0b81529be89f908f039abc9c2cb"},
-		"Astro/Blog/Components/SocialButtons.js":                              {Src: "Astro/Blog/Components/SocialButtons.js", JSHash: "4dbb12bdfec36354d2594091bb811428d5d01690", CSSHash: "53c508505fa9c8a744b4d276d168b535f1e7d3ac"},
+		"Astro/Blog/Components/SiteFile.js":                                   {Src: "Astro/Blog/Components/SiteFile.js", JSHash: "e3ba91c21c7415df76f76193171de7ca5bc9d69c", CSSHash: "94f07554cb4ad0b81529be89f908f039abc9c2cb"},
+		"Astro/Blog/Components/SocialButtons.js":                              {Src: "Astro/Blog/Components/SocialButtons.js", JSHash: "ccdc9ce8fcdde608731b9e23ae77c6f2c61e512b", CSSHash: "53c508505fa9c8a744b4d276d168b535f1e7d3ac"},
 		"Astro/Blog/Components/Spoiler.js":                                    {Src: "Astro/Blog/Components/Spoiler.js", JSHash: "10965b8eefa863dea321d3d77762971402c5f8c5", CSSHash: "600586c6160a51264169ae1a475082afefd45368"},
 		"Astro/Blog/Components/TagControl.js":                                 {Src: "Astro/Blog/Components/TagControl.js", JSHash: "fc34df160451001d1a04242f91b937b5fdd503f1", CSSHash: "714529a31e4b9d3a4987163fb40ab53607ff4c43"},
 		"Astro/Blog/Components/ToggleButton/CommentToggle.js":                 {Src: "Astro/Blog/Components/ToggleButton/CommentToggle.js", JSHash: "cf26a6c93343ac37d9534ca805aa2d27debe9625", CSSHash: "88b2d440e6056ebd62138e20c9b1c9da97c6fb3f"},
-		"Astro/Blog/Components/ToggleButton/DeleteArticle.js":                 {Src: "Astro/Blog/Components/ToggleButton/DeleteArticle.js", JSHash: "0d6d7d21b174ad1c4ced9a1a964b8dfc280f817f", CSSHash: "37d28e8059d0f48ae1c49f9c5fa106275505fa71"},
-		"Astro/Blog/Components/ToggleButton/_this.js":                         {Src: "Astro/Blog/Components/ToggleButton/_this.js", JSHash: "973df74eafae6ec5267101eefb1a2c8f1305a940", CSSHash: "ec9b9f22d38415aa2ff3750ac09e3b8e7494ec61"},
-		"Astro/Blog/Components/Video.js":                                      {Src: "Astro/Blog/Components/Video.js", JSHash: "eeb690e3134c5fe2f10368ce41c7e08a9a6a0974", CSSHash: "5d7572084bf0b426e76a938c61fa380d5b582ef9"},
+		"Astro/Blog/Components/ToggleButton/DeleteArticle.js":                 {Src: "Astro/Blog/Components/ToggleButton/DeleteArticle.js", JSHash: "58a2e9ec9434798a1d0db892f0c3275e28d6733c", CSSHash: "37d28e8059d0f48ae1c49f9c5fa106275505fa71"},
+		"Astro/Blog/Components/ToggleButton/_this.js":                         {Src: "Astro/Blog/Components/ToggleButton/_this.js", JSHash: "9e49da31e734f7c4b25ae69e2eaeeeb29905a09e", CSSHash: "ec9b9f22d38415aa2ff3750ac09e3b8e7494ec61"},
+		"Astro/Blog/Components/Video.js":                                      {Src: "Astro/Blog/Components/Video.js", JSHash: "a81c3528ac9d78cf1e443c4310faad23c355a654", CSSHash: "5d7572084bf0b426e76a938c61fa380d5b582ef9"},
 		"Astro/Blog/Config.js":                                                {Src: "Astro/Blog/Config.js", JSHash: "72dd92f2c5087d6ddecc1507f6448ca552ee5385", CSSHash: "1"},
-		"Astro/Blog/Layout/Article/Control.js":                                {Src: "Astro/Blog/Layout/Article/Control.js", JSHash: "ade3fa98b148f26418bc238a05acb0156455f7dc", CSSHash: "1"},
+		"Astro/Blog/Layout/Article/Control.js":                                {Src: "Astro/Blog/Layout/Article/Control.js", JSHash: "cad0f89a3793d1374a3ed22dccd6b5a146629ca0", CSSHash: "1"},
 		"Astro/Blog/Layout/Article/Latest.js":                                 {Src: "Astro/Blog/Layout/Article/Latest.js", JSHash: "1fe8f7cdab579bcb802a5336d1e6390943453277", CSSHash: "1"},
 		"Astro/Blog/Layout/Article/Tag.js":                                    {Src: "Astro/Blog/Layout/Article/Tag.js", JSHash: "316e254b71f4f1e7f565dd2364d4b244942e1bd0", CSSHash: "1"},
 		"Astro/Blog/Layout/Article/_this.js":                                  {Src: "Astro/Blog/Layout/Article/_this.js", JSHash: "470f4b9fd651ddf34d0a32b7775d174e2e0a532a", CSSHash: "fdba7da7bf090d73264661348c0e3ee1caa90c82"},
 		"Astro/Blog/Layout/ErrorPages.js":                                     {Src: "Astro/Blog/Layout/ErrorPages.js", JSHash: "1ddc77aa611e2fc85b734be104a2702820afe4f7", CSSHash: "10c6fbfe1a05ede1204926d26eb9fb12f97802fa"},
-		"Astro/Blog/Layout/Login.js":                                          {Src: "Astro/Blog/Layout/Login.js", JSHash: "2aaf11f1387452de2cd49fcf47a9115c619feb29", CSSHash: "66b8ec358f3d29b121927d0f72360e33ad90d2ad"},
-		"Astro/Blog/Layout/MainFrame.js":                                      {Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "0606a7f7f293339f753a63089841c6c0b235e9f5", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"},
-		"Astro/Blog/Layout/Subs/Manage.js":                                    {Src: "Astro/Blog/Layout/Subs/Manage.js", JSHash: "80f74c563d014a04eccbc23f9f1fa2f4691fe3b5", CSSHash: "eb6d28864a3b2faf9ff90912da63db158bed626f"},
+		"Astro/Blog/Layout/Login.js":                                          {Src: "Astro/Blog/Layout/Login.js", JSHash: "452180253f3b751eeb249ddb9a9cf17dd0f75354", CSSHash: "66b8ec358f3d29b121927d0f72360e33ad90d2ad"},
+		"Astro/Blog/Layout/MainFrame.js":                                      {Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "2833f285189524cad1481e1023b92635df5cb69f", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"},
+		"Astro/Blog/Layout/Subs/Manage.js":                                    {Src: "Astro/Blog/Layout/Subs/Manage.js", JSHash: "45d0286adfcfbe1620e2128d3a859153e0f1b0b7", CSSHash: "eb6d28864a3b2faf9ff90912da63db158bed626f"},
 		"Astro/Blog/Layout/Subs/_this.js":                                     {Src: "Astro/Blog/Layout/Subs/_this.js", JSHash: "7f7ff173d8b86eccc023d17c22e55cf259925558", CSSHash: "1"},
 		"Astro/Blog/Layout/_this.js":                                          {Src: "Astro/Blog/Layout/_this.js", JSHash: "2401f45244624f7662596bb569c40dab9866dbb8", CSSHash: "1"},
 		"Astro/Blog/SharedStyle.js":                                           {Src: "Astro/Blog/SharedStyle.js", JSHash: "e946130da823a5b2d089b5b416c13b628eb1637d", CSSHash: "f8ff15304a5e38e199b713bac48e282d2bf10f45"},
@@ -381,7 +381,7 @@ var ClassMap = &classmap.Map{
 		"Astro/Common/Element/Footer.js":                                      {Src: "Astro/Common/Element/Footer.js", JSHash: "80f69d85c399bdc04d3b2055d1ebbe9ee77a852a", CSSHash: "c26f4238a6a4f2fc0bcbd9ac86141d12522552a4"},
 		"Astro/Mechanism/CharacterCloud.js":                                   {Src: "Astro/Mechanism/CharacterCloud.js", JSHash: "a15cc6faa3dbeca99f4e39d90de06b0f562f6c1c", CSSHash: "7cae98eaf8e3d5d1cd7fadaa6806ce3d65d74d92"},
 		"Astro/Mechanism/Parallax.js":                                         {Src: "Astro/Mechanism/Parallax.js", JSHash: "d5b62d4af29e15f81ebcadfec0912db6c9e5ac7a", CSSHash: "f8c02f4ec1be082e02c51f0b5ea39cbdd5b0e49f"},
-		"Astro/Penguin/Layout/MainFrame.js":                                   {Src: "Astro/Penguin/Layout/MainFrame.js", JSHash: "3ae092fe8b3f829425721b5e6d2f079ae002eadf", CSSHash: "e87b69ab9e725e4801065850790670d76f0a6d18"},
+		"Astro/Penguin/Layout/MainFrame.js":                                   {Src: "Astro/Penguin/Layout/MainFrame.js", JSHash: "d9ab3001ab6a614879f98441be20e6f6798b1472", CSSHash: "e87b69ab9e725e4801065850790670d76f0a6d18"},
 		"Astro/Penguin/Page/Docs.js":                                          {Src: "Astro/Penguin/Page/Docs.js", JSHash: "02217e7fa4ebffe90b32002ef07da500ac02bf52", CSSHash: "5230a026499b9ab0f4f530f4975a9df89170c83b"},
 		"Astro/Penguin/Page/_this.js":                                         {Src: "Astro/Penguin/Page/_this.js", JSHash: "66e415e546eb6ca0b84cedfd4d3b6de67c2164f3", CSSHash: "e8afcaa8c75b241cd933cfc99a648adc42f815d7"},
 		"Astro/Starfall/Element/Footer.js":                                    {Src: "Astro/Starfall/Element/Footer.js", JSHash: "8667936ab4c583ec475770d0f4470348b1a60281", CSSHash: "8424988d632d155f1558c0069dc17f326a53703a"},
@@ -394,10 +394,10 @@ var ClassMap = &classmap.Map{
 		"Astro/utils/Date.js":                                                 {Src: "Astro/utils/Date.js", JSHash: "45221fe447d15fd943310fe9d3d3308f884b6aec", CSSHash: "1"},
 		"Astro/utils/_this.js":                                                {Src: "Astro/utils/_this.js", JSHash: "21e99449ec5c1a4b6d25164db9434132aeea5ad3", CSSHash: "1"},
 		"Components/Console.js":                                               {Src: "Components/Console.js", JSHash: "348c0ff1762c0a00ed813e3419f17ed695399ec3", CSSHash: "452f4a36e8fd7321c7d177a311047c8b71165e48"},
-		"Components/DockPanel.js":                                             {Src: "Components/DockPanel.js", JSHash: "b11318868cba7e297dd61b66abfc038b27a4f6d8", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"},
+		"Components/DockPanel.js":                                             {Src: "Components/DockPanel.js", JSHash: "d9f9c996536ac6b5d6f5f7262b7889468a36b13b", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"},
 		"Components/MessageBox.js":                                            {Src: "Components/MessageBox.js", JSHash: "63c831ec6493912492780009a76997d7bc59cad4", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"},
 		"Components/Mouse/Clipboard.js":                                       {Src: "Components/Mouse/Clipboard.js", JSHash: "742b2522cd0d5dad897d5c3afa2d568494661912", CSSHash: "1b7f85206ce1560ed23d3b270e093022e25d2e61"},
-		"Components/Mouse/ContextMenu.js":                                     {Src: "Components/Mouse/ContextMenu.js", JSHash: "5f060fc046686fc71ec1a6c0742407fc902387c5", CSSHash: "d5a5f1a4a0db9a440b9a070f9879beaddffbd99a"},
+		"Components/Mouse/ContextMenu.js":                                     {Src: "Components/Mouse/ContextMenu.js", JSHash: "9e9863a463cb3b8b4d71f13bf364a09c1eb2c3c8", CSSHash: "d5a5f1a4a0db9a440b9a070f9879beaddffbd99a"},
 		"Components/Mouse/_this.js":                                           {Src: "Components/Mouse/_this.js", JSHash: "9ec5ced53a20ea1d057e2142668e27e5df7d49f6", CSSHash: "1"},
 		"Components/Vim/Actions/BUFFERS.js":                                   {Src: "Components/Vim/Actions/BUFFERS.js", JSHash: "4142782274b232ea8a80ddeb7fbffbd8b97ba1d2", CSSHash: "1"},
 		"Components/Vim/Actions/DELETE.js":                                    {Src: "Components/Vim/Actions/DELETE.js", JSHash: "12223cd3496265f907c83a6f42bab6eebb174983", CSSHash: "1"},
@@ -439,17 +439,17 @@ var ClassMap = &classmap.Map{
 		"Components/Vim/StatusBar.js":                                         {Src: "Components/Vim/StatusBar.js", JSHash: "461f00364ced9cb6e0ae83b9d18c6456fb051e26", CSSHash: "1"},
 		"Components/Vim/Syntax/Analyzer.js":                                   {Src: "Components/Vim/Syntax/Analyzer.js", JSHash: "64b9a2ae4c6ba0f9fdc0dda87323786df6c6b339", CSSHash: "1"},
 		"Components/Vim/Syntax/Word.js":                                       {Src: "Components/Vim/Syntax/Word.js", JSHash: "a6d24370b0906cc0f09cfd68d96d635cd583fac3", CSSHash: "1"},
-		"Components/Vim/VimArea.js":                                           {Src: "Components/Vim/VimArea.js", JSHash: "6b33a357bfc101ab7d12a559680039e831d1d088", CSSHash: "1"},
+		"Components/Vim/VimArea.js":                                           {Src: "Components/Vim/VimArea.js", JSHash: "dda35cb49939da6a71d08f68a85435f68d64e283", CSSHash: "1"},
 		"Components/Vim/_this.js":                                             {Src: "Components/Vim/_this.js", JSHash: "2abd3bc287e8b8b0b5966457835dcb4bde6174df", CSSHash: "7949b25860fcef736927c01502aad09b56d764b2"},
 		"Components/_this.js":                                                 {Src: "Components/_this.js", JSHash: "f4cb7babe62a5cdae34d2c4ebcb55071e81da4ff", CSSHash: "1"},
 		"Dandelion/CSSAnimations/MovieClip.js":                                {Src: "Dandelion/CSSAnimations/MovieClip.js", JSHash: "5667064818a0ca32f11a9b5a27ed641058e9df6c", CSSHash: "daa6e6f4ee3365e599cf1b2680f3e907389534f3"},
 		"Dandelion/CSSAnimations/_this.js":                                    {Src: "Dandelion/CSSAnimations/_this.js", JSHash: "a01a6bcfc5851debc7179e9449dc93617bca3afc", CSSHash: "2d6b4b00f0c4050187ccf010e0a24e5bc6121d18"},
 		"Dandelion/CSSReset.js":                                               {Src: "Dandelion/CSSReset.js", JSHash: "f25ae8f90e11e3bb8eed6ebdac3a23305d615dc9", CSSHash: "59fbc1a2ec3f70e2b719fd73bff973efb34676c4"},
-		"Dandelion/IDOMElement.js":                                            {Src: "Dandelion/IDOMElement.js", JSHash: "cf065d6d0ef70064651f3c74c54a5338198cf229", CSSHash: "1"},
+		"Dandelion/IDOMElement.js":                                            {Src: "Dandelion/IDOMElement.js", JSHash: "8382686fccc93347661387bbe9c7a8a3c31fdc3f", CSSHash: "1"},
 		"Dandelion/IDOMObject.js":                                             {Src: "Dandelion/IDOMObject.js", JSHash: "5727639574a022feccfef1deb2056146f1f23c06", CSSHash: "1"},
 		"Dandelion/StaticRes.js":                                              {Src: "Dandelion/StaticRes.js", JSHash: "43738524071b7207e6dba6bd223bf811bd475949", CSSHash: "1"},
 		"Dandelion/Window.js":                                                 {Src: "Dandelion/Window.js", JSHash: "ea38f2c0c2b5207abdb7265d2d5b7fa4177d0a47", CSSHash: "1"},
-		"Dandelion/_this.js":                                                  {Src: "Dandelion/_this.js", JSHash: "0611b733011b5cf9284beb0af75367a65bf4c042", CSSHash: "1"},
+		"Dandelion/_this.js":                                                  {Src: "Dandelion/_this.js", JSHash: "27db6b49f6b23b1a3e7e905932525a81621e0b8f", CSSHash: "1"},
 		"Libraries/SyntaxHighlighter/Brush/AS3.js":                            {Src: "Libraries/SyntaxHighlighter/Brush/AS3.js", JSHash: "a9bcdf532ab90c0917f234e1fce13d7cbde6d303", CSSHash: "1"},
 		"Libraries/SyntaxHighlighter/Brush/AppleScript.js":                    {Src: "Libraries/SyntaxHighlighter/Brush/AppleScript.js", JSHash: "2c161d78cd5b293e420559a6cb41dbf52af36364", CSSHash: "1"},
 		"Libraries/SyntaxHighlighter/Brush/Bash.js":                           {Src: "Libraries/SyntaxHighlighter/Brush/Bash.js", JSHash: "e01737b50262fb8fda87df4d1d2fcc12c5cff279", CSSHash: "1"},
@@ -504,12 +504,12 @@ var ClassMap = &classmap.Map{
 		"System/Encoding/_this.js":                                            {Src: "System/Encoding/_this.js", JSHash: "acf2ce9ee06a72f81447d72c01e655198e38fbc1", CSSHash: "1"},
 		"System/Global.js":                                                    {Src: "System/Global.js", JSHash: "a1b5eea0d218508e1d5d68f0ced64f16fc9595ce", CSSHash: "1"},
 		"System/Log.js":                                                       {Src: "System/Log.js", JSHash: "de65e2795ac10fb2cbe8ecdedba66e0617bec8ad", CSSHash: "1"},
-		"System/Net/ClassLoader.js":                                           {Src: "System/Net/ClassLoader.js", JSHash: "5705bcd2343a269af6a6c55c4c85fd5d0f74d268", CSSHash: "1"},
+		"System/Net/ClassLoader.js":                                           {Src: "System/Net/ClassLoader.js", JSHash: "7aa219e660357e3ee53a166bd961954fe97b01ec", CSSHash: "1"},
 		"System/Net/_this.js":                                                 {Src: "System/Net/_this.js", JSHash: "1b2e6ddd90efc213dbbd139e2dc891ab41ec043f", CSSHash: "1"},
 		"System/Policy/_this.js":                                              {Src: "System/Policy/_this.js", JSHash: "94efec864f3f9258f9ed95d5eadd0a10d7e51797", CSSHash: "1"},
 		"System/Tick.js":                                                      {Src: "System/Tick.js", JSHash: "526500dfd490e4c29b30f9f00b32a238b74afedb", CSSHash: "1"},
 		"System/_this.js":                                                     {Src: "System/_this.js", JSHash: "234db843eb17b025eddacdca0083828d0e7700a6", CSSHash: "1"},
-		"System/utils/DataKey.js":                                             {Src: "System/utils/DataKey.js", JSHash: "1d6b56a4a4c74713b461db65eb5e6c43e3d161e8", CSSHash: "1"},
+		"System/utils/DataKey.js":                                             {Src: "System/utils/DataKey.js", JSHash: "2fbaf05a01bc5899943459e67bad487f10c39276", CSSHash: "1"},
 		"System/utils/EventKey.js":                                            {Src: "System/utils/EventKey.js", JSHash: "c6285ef1d22a5e15b12c4fd13fa00d64517f59b8", CSSHash: "1"},
 		"System/utils/IKey.js":                                                {Src: "System/utils/IKey.js", JSHash: "e9e57a335ec6204b35fead34925cffdc3e38b55b", CSSHash: "1"},
 		"System/utils/Perf.js":                                                {Src: "System/utils/Perf.js", JSHash: "4a8c714fd0302d1bcad10c27bcd4a574ffe606eb", CSSHash: "1"},
diff --git a/resolver-go/internal/generated/externs_gen.go b/resolver-go/internal/generated/externs_gen.go
index a18e616..3ff77c9 100644
--- a/resolver-go/internal/generated/externs_gen.go
+++ b/resolver-go/internal/generated/externs_gen.go
@@ -16,8 +16,6 @@ var Externs = []string{
 	"externs/Astro.Blog.Components.SiteFile.js",
 	"externs/Astro.Blog.Components.js",
 	"externs/Astro.Blog.Config.js",
-	"externs/Astro.Blog.Events.Responsive.js",
-	"externs/Astro.Blog.Events.js",
 	"externs/Astro.Blog.js",
 	"externs/Astro.Bootstrap.js",
 	"externs/Astro.Mechanism.CharacterCloud.js",
@@ -59,6 +57,7 @@ var Externs = []string{
 	"externs/Dandelion.IDOMElement.js",
 	"externs/Dandelion.IDOMObject.js",
 	"externs/Dandelion.js",
+	"externs/EventDispatcher.js",
 	"externs/Libraries.SyntaxHighLighter.Brush.js",
 	"externs/Libraries.SyntaxHighLighter.js",
 	"externs/Libraries.js",