penguin/AstroJS

Javascript framework for my blog

commit 1a385778174312ab09d7a1fa3dad5189fdfabfaf

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-06-11T00:07:38Z
subjectDeprecating old approach
commit 1a385778174312ab09d7a1fa3dad5189fdfabfaf
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-06-11T00:07:38Z

    Deprecating old approach
---
 botanjs/{ => old}/__init__.py                      |   0
 botanjs/{ => old}/classmap.py                      |   0
 botanjs/{ => old}/compressor/__init__.py           |   0
 botanjs/{ => old}/compressor/closure.py            |   0
 botanjs/{ => old}/compressor/yui.py                |   0
 botanjs/{ => old}/config.py                        |   0
 botanjs/{ => old}/dummy.py                         |   0
 botanjs/{ => old}/service/__init__.py              |   0
 botanjs/{ => old}/service/jclassresv.py            |   0
 botanjs/{ => old}/service/jwork.py                 |   0
 botanjs/{ => old}/service/webapi.py                |   0
 botanjs/{ => old}/utils.py                         |   0
 botanres-go/README.md                              |  48 ++
 botanres-go/cmd/botan-api/main.go                  |  75 +++
 botanres-go/cmd/botan-gen/main.go                  |  66 +++
 botanres-go/dockerfiles/api.Dockerfile             |  30 ++
 botanres-go/dockerfiles/gen.Dockerfile             |  24 +
 botanres-go/go.mod                                 |   3 +
 cache/.keep => botanres-go/go.sum                  |   0
 botanres-go/internal/classmap/scan.go              | 210 +++++++++
 botanres-go/internal/classmap/types.go             |  34 ++
 botanres-go/internal/generated/buildinfo_gen.go    |   6 +
 botanres-go/internal/generated/classmap_gen.go     | 518 +++++++++++++++++++++
 botanres-go/internal/resolver/resolver.go          | 306 ++++++++++++
 closure-compilerd/Dockerfile                       |  37 ++
 closure-compilerd/README.md                        |  30 ++
 closure-compilerd/example/externs/browser.js       |   3 +
 closure-compilerd/example/js/hello.js              |  13 +
 closure-compilerd/pom.xml                          |  61 +++
 .../src/main/java/dev/tgckpg/closured/Main.java    | 192 ++++++++
 internal/generated/buildinfo_gen.go                |   6 +
 mk/botanres-go.mk                                  |  54 +++
 Dockerfile => old/Dockerfile                       |   0
 botan-rebuild.py => old/botan-rebuild.py           |   0
 {logs => old/cache}/.keep                          |   0
 {env => old/env}/README.md                         |   0
 old/logs/.keep                                     |   0
 main.py => old/main.py                             |   0
 settings.ini => old/settings.ini                   |   0
 {setup => old/setup}/celery.conf                   |   0
 {setup => old/setup}/compiler-tasks.service        |   0
 {setup => old/setup}/config                        |   0
 {setup => old/setup}/docker.start                  |   0
 {setup => old/setup}/install                       |   0
 tests.py => old/tests.py                           |   0
 {windows => old/windows}/app/Dockerfile            |   0
 {windows => old/windows}/base-compose.yml          |   0
 {windows => old/windows}/docker-compose.yml        |   0
 {windows => old/windows}/jre/Dockerfile            |   0
 {windows => old/windows}/pyrt/dockerfile           |   0
 {windows => old/windows}/redis/Dockerfile          |   0
 51 files changed, 1716 insertions(+)

diff --git a/botanjs/__init__.py b/botanjs/old/__init__.py
similarity index 100%
rename from botanjs/__init__.py
rename to botanjs/old/__init__.py
diff --git a/botanjs/classmap.py b/botanjs/old/classmap.py
similarity index 100%
rename from botanjs/classmap.py
rename to botanjs/old/classmap.py
diff --git a/botanjs/compressor/__init__.py b/botanjs/old/compressor/__init__.py
similarity index 100%
rename from botanjs/compressor/__init__.py
rename to botanjs/old/compressor/__init__.py
diff --git a/botanjs/compressor/closure.py b/botanjs/old/compressor/closure.py
similarity index 100%
rename from botanjs/compressor/closure.py
rename to botanjs/old/compressor/closure.py
diff --git a/botanjs/compressor/yui.py b/botanjs/old/compressor/yui.py
similarity index 100%
rename from botanjs/compressor/yui.py
rename to botanjs/old/compressor/yui.py
diff --git a/botanjs/config.py b/botanjs/old/config.py
similarity index 100%
rename from botanjs/config.py
rename to botanjs/old/config.py
diff --git a/botanjs/dummy.py b/botanjs/old/dummy.py
similarity index 100%
rename from botanjs/dummy.py
rename to botanjs/old/dummy.py
diff --git a/botanjs/service/__init__.py b/botanjs/old/service/__init__.py
similarity index 100%
rename from botanjs/service/__init__.py
rename to botanjs/old/service/__init__.py
diff --git a/botanjs/service/jclassresv.py b/botanjs/old/service/jclassresv.py
similarity index 100%
rename from botanjs/service/jclassresv.py
rename to botanjs/old/service/jclassresv.py
diff --git a/botanjs/service/jwork.py b/botanjs/old/service/jwork.py
similarity index 100%
rename from botanjs/service/jwork.py
rename to botanjs/old/service/jwork.py
diff --git a/botanjs/service/webapi.py b/botanjs/old/service/webapi.py
similarity index 100%
rename from botanjs/service/webapi.py
rename to botanjs/old/service/webapi.py
diff --git a/botanjs/utils.py b/botanjs/old/utils.py
similarity index 100%
rename from botanjs/utils.py
rename to botanjs/old/utils.py
diff --git a/botanres-go/README.md b/botanres-go/README.md
new file mode 100644
index 0000000..db9f965
--- /dev/null
+++ b/botanres-go/README.md
@@ -0,0 +1,48 @@
+# botanres-go
+
+Go rewrite for the old BotanJS dynamic resource resolver.
+
+1. `cmd/botan-gen` scans the JS tree and generates `internal/generated/classmap_gen.go`.
+2. `internal/resolver` resolves requested classes in memory.
+3. `cmd/botan-api` accepts the old-ish URL shape and returns merged JS/CSS content or a hash filename.
+4. Closure/YUI compression is not in this skeleton. The returned merged JS is the right handoff point for a Closure Compiler server.
+
+## Generate the class map
+
+```sh
+go run ./cmd/botan-gen \
+  -src /path/to/BotanJS/src \
+  -out internal/generated/classmap_gen.go
+```
+
+Commit the generated file if the source tree is mostly static. Generate it in CI if the source changes frequently.
+
+## Run API
+
+```sh
+go run ./cmd/botan-api -src /path/to/BotanJS/src -addr :8080
+```
+
+Examples:
+
+```sh
+curl 'http://127.0.0.1:8080/rjs/System'
+curl 'http://127.0.0.1:8080/rcss/BotanJS.Core.Main'
+curl 'http://127.0.0.1:8080/hjs/BotanJS.Core.Main'
+```
+
+Requests support `/` separated plain names, e.g. `A.B.C/A.B.D`, plus old compressed base64+zlib comma-separated payloads.
+Prefix an item with `-` to exclude it.
+
+## What is intentionally different from the Python version
+
+- No XML tree. Symbols are flattened by full namespace name.
+- No per-request classmap reload. Regenerate and restart/redeploy instead.
+- No background compressor. This is a resolver/merger only.
+- Hashes use SHA-1 per file for change detection, then MD5 over the resolved hash list for compatibility-style output names.
+
+## TODO
+
+- Test against the old python resolver output
+- Add an output interface so JS can be piped directly to a Closure Compiler server.
+- Put generated classmap in a separate package if multiple services need to import it.
diff --git a/botanres-go/cmd/botan-api/main.go b/botanres-go/cmd/botan-api/main.go
new file mode 100644
index 0000000..2679453
--- /dev/null
+++ b/botanres-go/cmd/botan-api/main.go
@@ -0,0 +1,75 @@
+package main
+
+import (
+	"flag"
+	"log"
+	"net/http"
+	"strings"
+
+	"github.com/tgckpg/botanres-go/internal/generated"
+	"github.com/tgckpg/botanres-go/internal/resolver"
+)
+
+func main() {
+	addr := flag.String("addr", ":8080", "listen address")
+	src := flag.String("src", "./src", "BotanJS source root")
+	flag.Parse()
+
+	r, err := resolver.New(*src, generated.ClassMap)
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	h := handler{r: r}
+	http.HandleFunc("/", h.index)
+	log.Printf("botan-api listening on %s", *addr)
+	log.Fatal(http.ListenAndServe(*addr, nil))
+}
+
+type handler struct{ r *resolver.Resolver }
+
+func (h handler) index(w http.ResponseWriter, req *http.Request) {
+	path := strings.Trim(req.URL.Path, "/")
+	if path == "" {
+		_, _ = w.Write([]byte("BotanJS Go resolver API\n"))
+		return
+	}
+	parts := strings.SplitN(path, "/", 2)
+	modeText := parts[0]
+	code := ""
+	if len(parts) == 2 {
+		code = parts[1]
+	} else {
+		code = req.URL.Query().Get("p")
+	}
+	if code == "" {
+		http.Error(w, "missing request payload", http.StatusBadRequest)
+		return
+	}
+
+	outMode := resolver.ModeJS
+	if strings.HasSuffix(modeText, "css") {
+		outMode = resolver.ModeCSS
+	} else if !strings.HasSuffix(modeText, "js") {
+		http.Error(w, "invalid mode", http.StatusBadRequest)
+		return
+	}
+
+	res, err := h.r.ResolveRequest(code, outMode, nil)
+	if err != nil {
+		http.Error(w, err.Error(), http.StatusNotFound)
+		return
+	}
+
+	// Compatibility flags:
+	//   rjs/rcss/ojs/ocss => content
+	//   hjs/hcss          => hash filename only
+	//   js/css            => currently content; cluster compiler can switch this later.
+	if strings.HasPrefix(modeText, "h") {
+		w.Header().Set("Content-Type", "text/plain; charset=utf-8")
+		_, _ = w.Write([]byte(res.Hash))
+		return
+	}
+	w.Header().Set("Content-Type", res.ContentType)
+	_, _ = w.Write(res.Content)
+}
diff --git a/botanres-go/cmd/botan-gen/main.go b/botanres-go/cmd/botan-gen/main.go
new file mode 100644
index 0000000..9625340
--- /dev/null
+++ b/botanres-go/cmd/botan-gen/main.go
@@ -0,0 +1,66 @@
+package main
+
+import (
+	"flag"
+	"fmt"
+	"go/format"
+	"os"
+	"strings"
+
+	"github.com/tgckpg/botanres-go/internal/classmap"
+)
+
+func main() {
+	src := flag.String("src", "./src", "BotanJS source root")
+	out := flag.String("out", "internal/generated/classmap_gen.go", "generated Go output")
+	pkg := flag.String("pkg", "generated", "generated package name")
+	flag.Parse()
+
+	m, err := classmap.Build(*src)
+	if err != nil {
+		fatal(err)
+	}
+	if err := os.MkdirAll(dir(*out), 0o755); err != nil {
+		fatal(err)
+	}
+	code := render(*pkg, m)
+	fmted, err := format.Source([]byte(code))
+	if err != nil {
+		_, _ = os.Stderr.WriteString(code)
+		fatal(err)
+	}
+	if err := os.WriteFile(*out, fmted, 0o644); err != nil {
+		fatal(err)
+	}
+}
+
+func render(pkg string, m *classmap.Map) string {
+	var b strings.Builder
+	b.WriteString("// Code generated by botan-gen; DO NOT EDIT.\n")
+	b.WriteString("package " + pkg + "\n\n")
+	b.WriteString("import \"github.com/tgckpg/botanres-go/internal/classmap\"\n\n")
+	b.WriteString("var ClassMap = &classmap.Map{\nSymbols: map[string]classmap.Symbol{\n")
+	for _, s := range classmap.SortedSymbols(m) {
+		fmt.Fprintf(&b, "%q: {Name:%q, Kind:%q, Parent:%q, Imports:%#v, Resource: classmap.Resource{Src:%q, JSHash:%q, CSSHash:%q}},\n",
+			s.Name, s.Name, string(s.Kind), s.Parent, s.Imports, s.Resource.Src, s.Resource.JSHash, s.Resource.CSSHash)
+	}
+	b.WriteString("},\nFiles: map[string]classmap.Resource{\n")
+	for _, r := range classmap.SortedFiles(m) {
+		fmt.Fprintf(&b, "%q: {Src:%q, JSHash:%q, CSSHash:%q},\n", r.Src, r.Src, r.JSHash, r.CSSHash)
+	}
+	b.WriteString("},\n}\n")
+	return b.String()
+}
+
+func dir(path string) string {
+	idx := strings.LastIndexAny(path, `/\\`)
+	if idx < 0 {
+		return "."
+	}
+	return path[:idx]
+}
+
+func fatal(err error) {
+	fmt.Fprintln(os.Stderr, "botan-gen:", err)
+	os.Exit(1)
+}
diff --git a/botanres-go/dockerfiles/api.Dockerfile b/botanres-go/dockerfiles/api.Dockerfile
new file mode 100644
index 0000000..88e730a
--- /dev/null
+++ b/botanres-go/dockerfiles/api.Dockerfile
@@ -0,0 +1,30 @@
+FROM golang:1.26-alpine3.23 AS build
+
+WORKDIR /workspace
+
+ARG TARGETOS
+ARG TARGETARCH
+
+COPY botanres-go/go.mod botanres-go/go.sum ./
+
+RUN --mount=type=cache,target=/go/pkg/mod \
+    go mod download
+
+COPY "botanjs/src" "./src"
+COPY "botanres-go/cmd" "./cmd"
+COPY "botanres-go/internal" "./internal"
+
+RUN --mount=type=cache,target=/go/pkg/mod \
+    --mount=type=cache,target=/root/.cache/go-build \
+    CGO_ENABLED=0 \
+    GOOS=$TARGETOS \
+    GOARCH=$TARGETARCH \
+    go build  -trimpath -o /out/botan-api -ldflags='-s -w' ./cmd/botan-api
+
+FROM scratch
+
+COPY --from=build /out/botan-api /usr/local/bin/botan-api
+COPY "botanjs/src" "./src"
+
+EXPOSE 8080/tcp
+ENTRYPOINT ["/usr/local/bin/botan-api", "-src", "./src", "-addr", ":8080"]
diff --git a/botanres-go/dockerfiles/gen.Dockerfile b/botanres-go/dockerfiles/gen.Dockerfile
new file mode 100644
index 0000000..2f1ddd2
--- /dev/null
+++ b/botanres-go/dockerfiles/gen.Dockerfile
@@ -0,0 +1,24 @@
+FROM golang:1.26-alpine3.23 AS build
+
+WORKDIR /workspace
+
+ARG TARGETOS
+ARG TARGETARCH
+
+COPY botanres-go/go.mod botanres-go/go.sum ./
+
+RUN --mount=type=cache,target=/go/pkg/mod \
+    go mod download
+
+COPY "botanjs/src" "./src"
+COPY "botanres-go/cmd" "./cmd"
+COPY "botanres-go/internal" "./internal"
+
+RUN go run ./cmd/botan-gen \
+  -src ./src \
+  -out internal/generated/classmap_gen.go
+
+RUN mkdir /out && cp internal/generated/classmap_gen.go /out
+
+FROM scratch
+COPY --from=build /out/classmap_gen.go ./
diff --git a/botanres-go/go.mod b/botanres-go/go.mod
new file mode 100644
index 0000000..be63b6c
--- /dev/null
+++ b/botanres-go/go.mod
@@ -0,0 +1,3 @@
+module github.com/tgckpg/botanres-go
+
+go 1.26
diff --git a/cache/.keep b/botanres-go/go.sum
similarity index 100%
rename from cache/.keep
rename to botanres-go/go.sum
diff --git a/botanres-go/internal/classmap/scan.go b/botanres-go/internal/classmap/scan.go
new file mode 100644
index 0000000..5857c3e
--- /dev/null
+++ b/botanres-go/internal/classmap/scan.go
@@ -0,0 +1,210 @@
+package classmap
+
+import (
+	"bufio"
+	"crypto/sha1"
+	"encoding/hex"
+	"fmt"
+	"io"
+	"os"
+	"path/filepath"
+	"regexp"
+	"sort"
+	"strings"
+)
+
+var (
+	reNamespace = regexp.MustCompile(`__namespace\s*\(\s*['\"]([^'\"]+)['\"]\s*\)`)
+	reImport    = regexp.MustCompile(`__import\s*\(\s*['\"]([^'\"]+)['\"]\s*\)`)
+	reInvoke    = regexp.MustCompile(`ns\s*\[\s*NS_INVOKE\s*\]\s*\(\s*['\"]([^'\"]+)['\"]\s*\)`)
+	reExport    = regexp.MustCompile(`ns\s*\[\s*NS_EXPORT\s*\]\s*\(\s*EX_([A-Z_]+[A-Z])\s*,\s*['\"]([^'\"]+)['\"]\s*,`)
+)
+
+type Export struct {
+	Type string
+	Name string
+}
+
+type Meta struct {
+	Namespace string
+	Imports   []string
+	Exports   []Export
+}
+
+func ParseFile(path string) (Meta, error) {
+	f, err := os.Open(path)
+	if err != nil {
+		return Meta{}, err
+	}
+	defer f.Close()
+
+	var m Meta
+	s := bufio.NewScanner(f)
+	// Some old JS files can have long one-line wrappers.
+	s.Buffer(make([]byte, 0, 64*1024), 8*1024*1024)
+	for s.Scan() {
+		line := s.Text()
+		if x := reNamespace.FindStringSubmatch(line); x != nil {
+			m.Namespace = x[1]
+			continue
+		}
+		if x := reImport.FindStringSubmatch(line); x != nil {
+			m.Imports = append(m.Imports, x[1])
+			continue
+		}
+		if x := reInvoke.FindStringSubmatch(line); x != nil {
+			m.Imports = append(m.Imports, m.Namespace+"."+x[1])
+			continue
+		}
+		if x := reExport.FindStringSubmatch(line); x != nil {
+			m.Exports = append(m.Exports, Export{Type: x[1], Name: x[2]})
+			continue
+		}
+	}
+	return m, s.Err()
+}
+
+func Build(root string) (*Map, error) {
+	root, err := filepath.Abs(root)
+	if err != nil {
+		return nil, err
+	}
+	m := &Map{Symbols: map[string]Symbol{}, Files: map[string]Resource{}}
+	head := filepath.Join(root, "_this.js")
+
+	err = filepath.WalkDir(root, func(path string, d os.DirEntry, err error) error {
+		if err != nil {
+			return err
+		}
+		if d.IsDir() {
+			if path == filepath.Join(root, "externs") {
+				return filepath.SkipDir
+			}
+			return nil
+		}
+		if filepath.Ext(path) != ".js" || path == head {
+			return nil
+		}
+		meta, err := ParseFile(path)
+		if err != nil {
+			return err
+		}
+		if meta.Namespace == "" {
+			return fmt.Errorf("%s: missing __namespace", path)
+		}
+		rel, err := filepath.Rel(root, path)
+		if err != nil {
+			return err
+		}
+		rel = filepath.ToSlash(rel)
+		res := Resource{Src: rel, JSHash: fileHash(path), CSSHash: fileHash(strings.TrimSuffix(path, ".js") + ".css")}
+		m.Files[rel] = res
+		srcEvery := meta.Namespace != className(rel)
+
+		ensureParents(m, meta.Namespace)
+		if !srcEvery {
+			sym := m.Symbols[meta.Namespace]
+			sym.Kind = KindClass
+			sym.Resource = res
+			sym.Imports = appendUnique(sym.Imports, meta.Imports...)
+			m.Symbols[meta.Namespace] = sym
+		}
+
+		for _, ex := range meta.Exports {
+			kind := exportKind(ex.Type)
+			name := meta.Namespace + "." + ex.Name
+			ensureParents(m, name)
+			sym := m.Symbols[name]
+			sym.Kind = kind
+			if srcEvery {
+				sym.Resource = res
+				if kind == KindClass {
+					sym.Imports = appendUnique(sym.Imports, meta.Imports...)
+				}
+			}
+			m.Symbols[name] = sym
+		}
+		return nil
+	})
+	if err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+func ensureParents(m *Map, name string) {
+	parts := strings.Split(name, ".")
+	for i := range parts {
+		full := strings.Join(parts[:i+1], ".")
+		if _, ok := m.Symbols[full]; !ok {
+			parent := ""
+			if i > 0 {
+				parent = strings.Join(parts[:i], ".")
+			}
+			m.Symbols[full] = Symbol{Name: full, Kind: KindClass, Parent: parent}
+		}
+	}
+}
+
+func className(rel string) string {
+	name := strings.TrimSuffix(filepath.ToSlash(rel), ".js")
+	name = strings.ReplaceAll(name, "/", ".")
+	name = strings.ReplaceAll(name, "._this", "")
+	name = strings.ReplaceAll(name, "..BotanJS.", "")
+	return name
+}
+
+func exportKind(t string) Kind {
+	switch t {
+	case "CLASS":
+		return KindClass
+	case "FUNC":
+		return KindMethod
+	default:
+		return KindProp
+	}
+}
+
+func fileHash(path string) string {
+	f, err := os.Open(path)
+	if err != nil {
+		return "1"
+	}
+	defer f.Close()
+	h := sha1.New()
+	_, _ = io.Copy(h, f)
+	return hex.EncodeToString(h.Sum(nil))
+}
+
+func appendUnique(dst []string, vals ...string) []string {
+	seen := map[string]bool{}
+	for _, v := range dst {
+		seen[v] = true
+	}
+	for _, v := range vals {
+		if v == "" || seen[v] {
+			continue
+		}
+		dst = append(dst, v)
+		seen[v] = true
+	}
+	return dst
+}
+
+func SortedSymbols(m *Map) []Symbol {
+	out := make([]Symbol, 0, len(m.Symbols))
+	for _, s := range m.Symbols {
+		out = append(out, s)
+	}
+	sort.Slice(out, func(i, j int) bool { return out[i].Name < out[j].Name })
+	return out
+}
+
+func SortedFiles(m *Map) []Resource {
+	out := make([]Resource, 0, len(m.Files))
+	for _, r := range m.Files {
+		out = append(out, r)
+	}
+	sort.Slice(out, func(i, j int) bool { return out[i].Src < out[j].Src })
+	return out
+}
diff --git a/botanres-go/internal/classmap/types.go b/botanres-go/internal/classmap/types.go
new file mode 100644
index 0000000..e5bca17
--- /dev/null
+++ b/botanres-go/internal/classmap/types.go
@@ -0,0 +1,34 @@
+package classmap
+
+// Kind mirrors the old XML node names: class, method, prop.
+type Kind string
+
+const (
+	KindClass  Kind = "class"
+	KindMethod Kind = "method"
+	KindProp   Kind = "prop"
+)
+
+// Resource points to the physical JS/CSS pair for a symbol.
+// JS and CSS are content hashes. CSSHash == "1" means no CSS file, matching the old Python behavior.
+type Resource struct {
+	Src     string
+	JSHash  string
+	CSSHash string
+}
+
+// Symbol is the flattened replacement for the old XML tree.
+// Parent imports for exported props/methods are resolved by Parent.
+type Symbol struct {
+	Name     string
+	Kind     Kind
+	Parent   string
+	Imports  []string
+	Resource Resource
+}
+
+// Map is generated by cmd/botan-gen.
+type Map struct {
+	Symbols map[string]Symbol
+	Files   map[string]Resource
+}
diff --git a/botanres-go/internal/generated/buildinfo_gen.go b/botanres-go/internal/generated/buildinfo_gen.go
new file mode 100644
index 0000000..fe831dd
--- /dev/null
+++ b/botanres-go/internal/generated/buildinfo_gen.go
@@ -0,0 +1,6 @@
+package generated
+
+const (
+	IMAGE_TAG   = "dev"
+	Timestamp   = "20260610.201739"
+)
diff --git a/botanres-go/internal/generated/classmap_gen.go b/botanres-go/internal/generated/classmap_gen.go
new file mode 100644
index 0000000..87e120d
--- /dev/null
+++ b/botanres-go/internal/generated/classmap_gen.go
@@ -0,0 +1,518 @@
+// Code generated by botan-gen; DO NOT EDIT.
+package generated
+
+import "github.com/tgckpg/botanres-go/internal/classmap"
+
+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: "96a85746d16908f70921e8cad03cc6105924473a", 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: "cdf659fcb73f34430021453cb7c4967d6799971d", 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: "b8f4dd400e85c729bd5ac3468aa28a7836255af9", 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: "dfec5876dcc4eadcbfc292806e74de821f826477", 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: "6442a8da697b50ec94676125327da8ba0cd70a43", 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: "9031ee3c774cbb5d5fd59af2fbe911f615c4d056", 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: "4f04ad32f4ad64f1512112c66324c513ebae4bc7", 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: "b4d181246ed6ea61dd8b6302be5e853012d59a02", 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: "54553eff5d2584fb33209e6bfc8113b3fa222cb1", 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: "6beb43c532ba47ebf8afebfec98c024d84789f58", 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: "24a3af0af9758ef4a508f5708fdb747edd94997c", 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: "4a2f13a28ccbbb85073d20debc02c6525b69ab92", 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: "c53a26cbe3f15eafb86a6915d3d1f74bad5d513c", 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: "706d7eca843d0171895ad73b60254efab09bfd1c", 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: "b2f0324f28fe148dfea71ef30183ac05920742d2", 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: "e855cfd123266850b703133655bc27936f3ae366", 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: "eb20ea28b68dc0bb9b795e5a9762cb2f2840cccc", 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: "fc29654f1c45a63e9b8dc8eed120e6d3abfb61e8", 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: "c4e8b9ad69f7f3f76fe4674eb68aeb2a8603190c", 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: "fa1d1e655350035f514c0824a27a1242671b9d24", 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: "1b7da2650be5f5e9b43187c3cfd7b42a4708546d", 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: "33562262f68acc2dce3be8cae035c670b2309219", 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: "5aae7d7108fc204f39037fb6686e24ccc79c796f", 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: "cfc21a3653fb859ffeb72d409c1df2fa34a54255", 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: "1443dfa407fb216b1be014417d1f9bce707ad358", 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: "b12c62f19417f6169fd8222267314a509e46d752", 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: "e9a9de02ddb1fd57a66f658b2bb0a03844753ab9", 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: "53ce30af0c57c14473220eb9cc83763621173bb6", 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: ""}},
+		"Astro.Blog.Components.Entry.Blog":                                 {Name: "Astro.Blog.Components.Entry.Blog", Kind: "class", Parent: "Astro.Blog.Components.Entry", Imports: []string{"Dandelion", "Astro.Bootstrap", "Astro.utils.Date", "System.Debug"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Entry/Blog.js", JSHash: "018626b7462176df8da4d6f0b730bd4a2778e926", CSSHash: "0473bbb41f9b27a5d448a36c1e175f6f18841019"}},
+		"Astro.Blog.Components.Entry.Home":                                 {Name: "Astro.Blog.Components.Entry.Home", Kind: "class", Parent: "Astro.Blog.Components.Entry", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/Entry/Home.js", JSHash: "0a4d8b8d9816628a8e80e2498978740c6828a59e", CSSHash: "5546001d65fb0a1087c7d6909efff80f36872a41"}},
+		"Astro.Blog.Components.Entry.List":                                 {Name: "Astro.Blog.Components.Entry.List", Kind: "class", Parent: "Astro.Blog.Components.Entry", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/Entry/List.js", JSHash: "4a522d768a4d54de1125d8608e9bf4300ff3773a", CSSHash: "30047de75c64dbb9f669791c42ef17368a7ab997"}},
+		"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: "c8f3c1ed14ec27e83149fb8c23b41171b6e228fd", 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: "0b4219d96219c4352cce802d59f3265e97b8f822", 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: "e25e9a8cbe4addc5ad8f597873c80a33f2329fb7", 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: "1114d87addb798a36452a8ca71dbc7eb58aae961", 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: "cb294bd09ea3cf7299395ffb70242bd26301b4ba", 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: "c572a0eefad8c69ccd60548a3ceabe5d1fed6af8", 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: "a20a6d7db28578e58ba6484b0636217167794426", 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: "443c24de61b52ad12983f011dc425bac2fca58a4", 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: "64ea5647119179fd0ec01fd00257a4aa25318f73", 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: "db19fe156ca3984d8b0363e918b458d82a3effdf", 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: "1800acc6511ef7a1efeef4cc83869eb0b30a63ed", 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: "84931c30a383f873410a779fc74cbb79666ab148", 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: "81e0f15aaf1066a5ccb36204bc7cc61d07085c1d", 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: "eee56edc6cfbbac71deab377682603032516d472", 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: ""}},
+		"Astro.Bootstrap.regInit":                                          {Name: "Astro.Bootstrap.regInit", Kind: "method", Parent: "Astro.Bootstrap", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.Common":                                                     {Name: "Astro.Common", Kind: "class", Parent: "Astro", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.Common.Element":                                             {Name: "Astro.Common.Element", Kind: "class", Parent: "Astro.Common", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.Common.Element.Footer":                                      {Name: "Astro.Common.Element.Footer", Kind: "class", Parent: "Astro.Common.Element", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Common/Element/Footer.js", JSHash: "80f69d85c399bdc04d3b2055d1ebbe9ee77a852a", CSSHash: "c26f4238a6a4f2fc0bcbd9ac86141d12522552a4"}},
+		"Astro.Mechanism":                                                  {Name: "Astro.Mechanism", Kind: "class", Parent: "Astro", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.Mechanism.CharacterCloud":                                   {Name: "Astro.Mechanism.CharacterCloud", Kind: "class", Parent: "Astro.Mechanism", Imports: []string{"Dandelion"}, Resource: classmap.Resource{Src: "Astro/Mechanism/CharacterCloud.js", JSHash: "540a2085798928418a54e10d56bc037863ee57a9", CSSHash: "7cae98eaf8e3d5d1cd7fadaa6806ce3d65d74d92"}},
+		"Astro.Mechanism.CharacterCloud.create":                            {Name: "Astro.Mechanism.CharacterCloud.create", Kind: "method", Parent: "Astro.Mechanism.CharacterCloud", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.Mechanism.Parallax":                                         {Name: "Astro.Mechanism.Parallax", Kind: "class", Parent: "Astro.Mechanism", Imports: []string{"System.Cycle", "Dandelion", "Dandelion.IDOMObject"}, Resource: classmap.Resource{Src: "Astro/Mechanism/Parallax.js", JSHash: "ba7b1816fc5d32edfaf5b93b9d35c7b2c297f011", CSSHash: "f8c02f4ec1be082e02c51f0b5ea39cbdd5b0e49f"}},
+		"Astro.Mechanism.Parallax.attach":                                  {Name: "Astro.Mechanism.Parallax.attach", Kind: "method", Parent: "Astro.Mechanism.Parallax", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.Mechanism.Parallax.cssSlide":                                {Name: "Astro.Mechanism.Parallax.cssSlide", Kind: "method", Parent: "Astro.Mechanism.Parallax", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"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: "b2f58fc9394745c1e47dfb95c4043f59f76acc1a", 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: ""}},
+		"Astro.Starfall.Element":                                           {Name: "Astro.Starfall.Element", Kind: "class", Parent: "Astro.Starfall", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.Starfall.Element.Footer":                                    {Name: "Astro.Starfall.Element.Footer", Kind: "class", Parent: "Astro.Starfall.Element", Imports: []string{"Astro.Common.Element.Footer"}, Resource: classmap.Resource{Src: "Astro/Starfall/Element/Footer.js", JSHash: "8667936ab4c583ec475770d0f4470348b1a60281", CSSHash: "8424988d632d155f1558c0069dc17f326a53703a"}},
+		"Astro.Starfall.Element.Header":                                    {Name: "Astro.Starfall.Element.Header", Kind: "class", Parent: "Astro.Starfall.Element", Imports: []string{"Astro.Bootstrap"}, Resource: classmap.Resource{Src: "Astro/Starfall/Element/Header.js", JSHash: "467470a9c5cb5630ae8ec07b29a4496c6a401e0b", CSSHash: "c6bd96ee7e0993a2db1fde4885e5f44cff901878"}},
+		"Astro.Starfall.Element.Layer":                                     {Name: "Astro.Starfall.Element.Layer", Kind: "class", Parent: "Astro.Starfall.Element", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Starfall/Element/Layer.js", JSHash: "cc3c87e83813ee68a9ccc3a12c08992c3027a721", CSSHash: "c482b4089b04665a5d7c5527f8008622375885a2"}},
+		"Astro.Starfall.Layout":                                            {Name: "Astro.Starfall.Layout", Kind: "class", Parent: "Astro.Starfall", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.Starfall.Layout.MainFrame":                                  {Name: "Astro.Starfall.Layout.MainFrame", Kind: "class", Parent: "Astro.Starfall.Layout", Imports: []string{"Dandelion", "Dandelion.IDOMObject", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Astro.Starfall.Element.Layer"}, Resource: classmap.Resource{Src: "Astro/Starfall/Layout/MainFrame.js", JSHash: "f237e72d5cc13922b04857c9290998b7dbbe59d5", CSSHash: "9654c2c26915302a661f5d3fb4f19833ffc6c11d"}},
+		"Astro.Starfall.Layout.PureColumn":                                 {Name: "Astro.Starfall.Layout.PureColumn", Kind: "class", Parent: "Astro.Starfall.Layout", Imports: []string{"Astro.Bootstrap", "System.Cycle", "Astro.Blog.Config", "System.Debug"}, Resource: classmap.Resource{Src: "Astro/Starfall/Layout/PureColumn.js", JSHash: "5164bbe0019969bf85c649a6991ccd3b8c780b3a", CSSHash: "d1920d1be9f9d9bbfdfdbb16565454c58ed6c78c"}},
+		"Astro.Starfall.Layout.TwoColumn":                                  {Name: "Astro.Starfall.Layout.TwoColumn", Kind: "class", Parent: "Astro.Starfall.Layout", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Starfall/Layout/TwoColumn.js", JSHash: "e55bedfac6ff774f7bbf46b69b1b537b28f8e993", CSSHash: "cf05ec131d63e657f0eba0183c8055d0101bcf08"}},
+		"Astro.utils":                                                      {Name: "Astro.utils", Kind: "class", Parent: "Astro", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/utils/_this.js", JSHash: "21e99449ec5c1a4b6d25164db9434132aeea5ad3", CSSHash: "1"}},
+		"Astro.utils.Date":                                                 {Name: "Astro.utils.Date", Kind: "class", Parent: "Astro.utils", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/utils/Date.js", JSHash: "45221fe447d15fd943310fe9d3d3308f884b6aec", CSSHash: "1"}},
+		"Astro.utils.Date.CAP_MONTHS":                                      {Name: "Astro.utils.Date.CAP_MONTHS", Kind: "prop", Parent: "Astro.utils.Date", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.utils.Date.DAY":                                             {Name: "Astro.utils.Date.DAY", Kind: "prop", Parent: "Astro.utils.Date", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.utils.Date.DAY_ABBR":                                        {Name: "Astro.utils.Date.DAY_ABBR", Kind: "prop", Parent: "Astro.utils.Date", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.utils.Date.MONTH":                                           {Name: "Astro.utils.Date.MONTH", Kind: "prop", Parent: "Astro.utils.Date", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.utils.Date.MONTH_ABBR":                                      {Name: "Astro.utils.Date.MONTH_ABBR", Kind: "prop", Parent: "Astro.utils.Date", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.utils.Date.chinese":                                         {Name: "Astro.utils.Date.chinese", Kind: "method", Parent: "Astro.utils.Date", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.utils.Date.diff":                                            {Name: "Astro.utils.Date.diff", Kind: "method", Parent: "Astro.utils.Date", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.utils.Date.pretty":                                          {Name: "Astro.utils.Date.pretty", Kind: "method", Parent: "Astro.utils.Date", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Astro.utils.Date.prettyDay":                                       {Name: "Astro.utils.Date.prettyDay", Kind: "method", Parent: "Astro.utils.Date", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"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: "115be15db72bd22f8222510e7bf4ce0c741028fb", 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: "c74b3081efdcbfa13300e9a49529f5664734b24e", 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: "db0b55a5e0b1a92b9781c2b0b13817355b8e3cdf", 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: "574a1ef17878beb21395a2eecfa75d046ff694e0", CSSHash: "1b7f85206ce1560ed23d3b270e093022e25d2e61"}},
+		"Components.Mouse.Clipboard.capture":                               {Name: "Components.Mouse.Clipboard.capture", Kind: "method", Parent: "Components.Mouse.Clipboard", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Components.Mouse.Clipboard.init":                                  {Name: "Components.Mouse.Clipboard.init", Kind: "method", Parent: "Components.Mouse.Clipboard", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"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: "b39bc1df1324c43b7092bc3db7d15e780b8b2cc0", 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: ""}},
+		"Components.Vim.Actions.BUFFERS":                                   {Name: "Components.Vim.Actions.BUFFERS", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Dandelion", "Components.Vim.Message", "System.utils.Perf.CountSubstr"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/BUFFERS.js", JSHash: "1eedc2f169d3f67ac05e1ad25b9728619a1333d4", CSSHash: "1"}},
+		"Components.Vim.Actions.DELETE":                                    {Name: "Components.Vim.Actions.DELETE", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.State.Stator", "Components.Vim.State.Stack", "Components.Vim.Message", "Components.Vim.Beep", "System.utils.Perf.CountSubstr"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/DELETE.js", JSHash: "12223cd3496265f907c83a6f42bab6eebb174983", CSSHash: "1"}},
+		"Components.Vim.Actions.EDITOR_COMMAND":                            {Name: "Components.Vim.Actions.EDITOR_COMMAND", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Error"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/EDITOR_COMMAND.js", JSHash: "38f9bd4f5c880fc172b8f50aae38ebb9d189bfe8", CSSHash: "1"}},
+		"Components.Vim.Actions.FIND":                                      {Name: "Components.Vim.Actions.FIND", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Error", "Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/FIND.js", JSHash: "e408e00eb64bf4daffb39973b41141458966d18f", CSSHash: "1"}},
+		"Components.Vim.Actions.INSERT":                                    {Name: "Components.Vim.Actions.INSERT", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"Components.Vim.State.Stack", "Components.Vim.State.Stator", "System.Debug", "Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/INSERT.js", JSHash: "cb9d322d663840c1e991559127b5b8ad7b7273f0", CSSHash: "1"}},
+		"Components.Vim.Actions.JOIN_LINES":                                {Name: "Components.Vim.Actions.JOIN_LINES", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.State.Stator", "Components.Vim.State.Stack", "Components.Vim.Beep", "Components.Vim.Message", "System.utils.Perf.CountSubstr"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/JOIN_LINES.js", JSHash: "2c0bafefa8edb662e5003780b4ae8a6b8488a317", CSSHash: "1"}},
+		"Components.Vim.Actions.MARK":                                      {Name: "Components.Vim.Actions.MARK", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Beep"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/MARK.js", JSHash: "4e959247d49f84b20f96c8a186492c93d1ff5960", CSSHash: "1"}},
+		"Components.Vim.Actions.MARKS":                                     {Name: "Components.Vim.Actions.MARKS", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Error", "Components.Vim.Message", "Components.Vim.State.Marks"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/MARKS.js", JSHash: "06699d99178aef5758d7cd7ca46d3b7806ed7621", CSSHash: "1"}},
+		"Components.Vim.Actions.PRINT":                                     {Name: "Components.Vim.Actions.PRINT", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/PRINT.js", JSHash: "d2fae160852cfb3aeed074dc8eef66b71af46224", CSSHash: "1"}},
+		"Components.Vim.Actions.PRINT_HEX":                                 {Name: "Components.Vim.Actions.PRINT_HEX", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/PRINT_HEX.js", JSHash: "5ae91c340b0ce35aac6ab73bc4302cfa94e02dd2", CSSHash: "1"}},
+		"Components.Vim.Actions.PUT":                                       {Name: "Components.Vim.Actions.PUT", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"Components.Vim.State.Stator", "Components.Vim.State.Stack", "Components.Vim.Message", "System.utils.Perf.CountSubstr"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/PUT.js", JSHash: "aebed9fffbae518dbbd59d7b84a399f5cb48398a", CSSHash: "1"}},
+		"Components.Vim.Actions.QUIT":                                      {Name: "Components.Vim.Actions.QUIT", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Error", "System.utils.Perf.CountSubstr"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/QUIT.js", JSHash: "eeb7923e9b8a06ddea2c2d0fff76edb75d04121e", CSSHash: "1"}},
+		"Components.Vim.Actions.REDO":                                      {Name: "Components.Vim.Actions.REDO", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/REDO.js", JSHash: "a2895a9628f9a075f350fcb0583042f64518ce3d", CSSHash: "1"}},
+		"Components.Vim.Actions.REGISTERS":                                 {Name: "Components.Vim.Actions.REGISTERS", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Error", "Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/REGISTERS.js", JSHash: "ddaa381db6d77db810a21a35e05f2008034e43ef", CSSHash: "1"}},
+		"Components.Vim.Actions.REPLACE":                                   {Name: "Components.Vim.Actions.REPLACE", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.State.Stack", "Components.Vim.Error", "Components.Vim.Message", "System.utils.Perf.CountSubstr", "Components.Vim.Actions.FIND"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/REPLACE.js", JSHash: "7d7b173c63c2252eae700be2021a11470b08276c", CSSHash: "1"}},
+		"Components.Vim.Actions.SHIFT_LINES":                               {Name: "Components.Vim.Actions.SHIFT_LINES", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Beep", "Components.Vim.State.Stator", "Components.Vim.State.Stack", "Components.Vim.Error", "Components.Vim.Message", "System.utils.Perf.CountSubstr"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/SHIFT_LINES.js", JSHash: "d85ff4738e31e1a8a8acdaf5f00bb5d654290b14", CSSHash: "1"}},
+		"Components.Vim.Actions.TO":                                        {Name: "Components.Vim.Actions.TO", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Beep"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/TO.js", JSHash: "78a814b3fb5c9feff473a265e7253d699f484871", CSSHash: "1"}},
+		"Components.Vim.Actions.UNDO":                                      {Name: "Components.Vim.Actions.UNDO", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/UNDO.js", JSHash: "bb3f119407547329da561213cca7445b63e30d3c", CSSHash: "1"}},
+		"Components.Vim.Actions.VA_REC":                                    {Name: "Components.Vim.Actions.VA_REC", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "System.utils.EventKey", "Components.Vim.ActionEvent", "Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/VA_REC.js", JSHash: "8904fe42c7211334b063c6d89d0b3deb0ffd3633", CSSHash: "1"}},
+		"Components.Vim.Actions.VERSION":                                   {Name: "Components.Vim.Actions.VERSION", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Error", "Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/VERSION.js", JSHash: "1aae87bf77f87a6202733ef515e927d788cd3bc5", CSSHash: "1"}},
+		"Components.Vim.Actions.VISUAL":                                    {Name: "Components.Vim.Actions.VISUAL", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Message", "Components.Vim.Actions.YANK", "Components.Vim.Actions.DELETE", "Components.Vim.Actions.SHIFT_LINES", "Components.Vim.Actions.PUT"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/VISUAL.js", JSHash: "2dba8beb95823fd5ff5af757de7319b7a0970cc4", CSSHash: "1"}},
+		"Components.Vim.Actions.WORD":                                      {Name: "Components.Vim.Actions.WORD", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Beep"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/WORD.js", JSHash: "dcbb5a4830c5a747ca3f1e6ab5fc6be68c1c3a9b", CSSHash: "1"}},
+		"Components.Vim.Actions.WRITE":                                     {Name: "Components.Vim.Actions.WRITE", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Message", "System.utils.Perf.CountSubstr"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/WRITE.js", JSHash: "6aed08f607ad6c050798a37461ffc6394bb7b5aa", CSSHash: "1"}},
+		"Components.Vim.Actions.YANK":                                      {Name: "Components.Vim.Actions.YANK", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Message", "Components.Vim.Beep", "System.utils.Perf.CountSubstr"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/YANK.js", JSHash: "4c428bea3ce9c15b94f294b1d4cd17ee4cde8824", CSSHash: "1"}},
+		"Components.Vim.Beep":                                              {Name: "Components.Vim.Beep", Kind: "method", Parent: "Components.Vim", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Components.Vim.Controls":                                          {Name: "Components.Vim.Controls", 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.Cursor":                                            {Name: "Components.Vim.Cursor", Kind: "class", Parent: "Components.Vim", Imports: []string{"System.Debug", "Components.Vim.State.Recorder", "Components.Vim.Actions.*", "System.utils.Perf.CountSubstr"}, Resource: classmap.Resource{Src: "Components/Vim/Cursor.js", JSHash: "499fe9a53c9de02138c3440b0433227b00846259", CSSHash: "1"}},
+		"Components.Vim.DateTime":                                          {Name: "Components.Vim.DateTime", Kind: "class", Parent: "Components.Vim", Imports: []string{"Components.Vim.DateTime.String"}, Resource: classmap.Resource{Src: "Components/Vim/DateTime/_this.js", JSHash: "420103edb4f3df39be9eceabd4b88919b5cf7cc7", CSSHash: "1"}},
+		"Components.Vim.DateTime.RelativeTime":                             {Name: "Components.Vim.DateTime.RelativeTime", Kind: "method", Parent: "Components.Vim.DateTime", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Components.Vim.DateTime.String":                                   {Name: "Components.Vim.DateTime.String", Kind: "method", Parent: "Components.Vim.DateTime", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/Vim/DateTime/String.js", JSHash: "07b11e176cccc423e75d8fe66302f8cb8b009418", CSSHash: "1"}},
+		"Components.Vim.Error":                                             {Name: "Components.Vim.Error", Kind: "method", Parent: "Components.Vim", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Components.Vim.Ex":                                                {Name: "Components.Vim.Ex", Kind: "class", Parent: "Components.Vim", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Components.Vim.Ex.Command":                                        {Name: "Components.Vim.Ex.Command", Kind: "class", Parent: "Components.Vim.Ex", Imports: []string{"System.Cycle", "System.Debug", "System.utils.Perf", "Components.Vim.State.History", "Components.Vim.Message", "Components.Vim.Beep"}, Resource: classmap.Resource{Src: "Components/Vim/Ex/Command.js", JSHash: "04ab6686c5f5543463c1b9668a0832cbe7b08771", CSSHash: "1"}},
+		"Components.Vim.LineBuffer":                                        {Name: "Components.Vim.LineBuffer", Kind: "class", Parent: "Components.Vim", Imports: []string{"System.Debug", "System.utils.Perf.CountSubstr"}, Resource: classmap.Resource{Src: "Components/Vim/LineBuffer.js", JSHash: "d7815c5c0a40eda137ebb9559481b265e3f4c7be", CSSHash: "1"}},
+		"Components.Vim.LineFeeder":                                        {Name: "Components.Vim.LineFeeder", Kind: "class", Parent: "Components.Vim", Imports: []string{"System.Debug", "Components.Vim.LineBuffer", "Components.Vim.Cursor", "System.utils.Perf.CountSubstr"}, Resource: classmap.Resource{Src: "Components/Vim/LineFeeder.js", JSHash: "7876d69d13a93fe96a04ca5c5b17496b1d542d86", CSSHash: "1"}},
+		"Components.Vim.Message":                                           {Name: "Components.Vim.Message", Kind: "method", Parent: "Components.Vim", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Components.Vim.State":                                             {Name: "Components.Vim.State", Kind: "class", Parent: "Components.Vim", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Components.Vim.State.History":                                     {Name: "Components.Vim.State.History", Kind: "class", Parent: "Components.Vim.State", Imports: []string{"System.Debug"}, Resource: classmap.Resource{Src: "Components/Vim/State/History.js", JSHash: "2d338e9e47f157f392d9f9df210ec6e8768cffb0", CSSHash: "1"}},
+		"Components.Vim.State.Marks":                                       {Name: "Components.Vim.State.Marks", Kind: "class", Parent: "Components.Vim.State", Imports: []string{"System.Debug", "Components.Vim.Beep"}, Resource: classmap.Resource{Src: "Components/Vim/State/Marks.js", JSHash: "66316f61f4b322bacea9899a5a9eee0bd12de8e6", CSSHash: "1"}},
+		"Components.Vim.State.Recorder":                                    {Name: "Components.Vim.State.Recorder", Kind: "class", Parent: "Components.Vim.State", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/Vim/State/Recorder.js", JSHash: "3172902ca4683ca0017800e060bb4a0d0dba3bc7", CSSHash: "1"}},
+		"Components.Vim.State.Registers":                                   {Name: "Components.Vim.State.Registers", Kind: "class", Parent: "Components.Vim.State", Imports: []string{"System.Debug"}, Resource: classmap.Resource{Src: "Components/Vim/State/Registers.js", JSHash: "60e791e7464fd1c15329dc576b736de906c442e3", CSSHash: "1"}},
+		"Components.Vim.State.Stack":                                       {Name: "Components.Vim.State.Stack", Kind: "class", Parent: "Components.Vim.State", Imports: []string{"Components.Vim.DateTime.RelativeTime"}, Resource: classmap.Resource{Src: "Components/Vim/State/Stack.js", JSHash: "bee72cfd5adec1fd9f0edb1b0e8e58c1865a9195", CSSHash: "1"}},
+		"Components.Vim.State.Stator":                                      {Name: "Components.Vim.State.Stator", Kind: "class", Parent: "Components.Vim.State", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/Vim/State/Stator.js", JSHash: "b86bc18676313544069bd5abe04e39fe3054652c", CSSHash: "1"}},
+		"Components.Vim.StatusBar":                                         {Name: "Components.Vim.StatusBar", Kind: "class", Parent: "Components.Vim", Imports: []string{"System.Debug", "Components.Vim.LineFeeder"}, Resource: classmap.Resource{Src: "Components/Vim/StatusBar.js", JSHash: "461f00364ced9cb6e0ae83b9d18c6456fb051e26", CSSHash: "1"}},
+		"Components.Vim.Syntax":                                            {Name: "Components.Vim.Syntax", Kind: "class", Parent: "Components.Vim", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"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: "2f02762ea783bbcb7843ebe72ec2660feada7c0c", CSSHash: "1"}},
+		"Dandelion":                                                        {Name: "Dandelion", Kind: "class", Parent: "", Imports: []string{"System.Global.IE", "System.utils.IKey"}, Resource: classmap.Resource{Src: "Dandelion/_this.js", JSHash: "deb13aff0c4ceb6aea9ac82b93d1b84a88540a14", 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: "a4c414b270c4fbdc6d4093b1d02791e5f088a871", 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: "a4c414b270c4fbdc6d4093b1d02791e5f088a871", 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: "5ea3e5c5f209abd7a77e278b0709ee83efcb690e", 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: ""}},
+		"Dandelion.Window":                                                 {Name: "Dandelion.Window", Kind: "class", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "Dandelion/Window.js", JSHash: "ea38f2c0c2b5207abdb7265d2d5b7fa4177d0a47", CSSHash: "1"}},
+		"Dandelion.Window.clientHeight":                                    {Name: "Dandelion.Window.clientHeight", Kind: "prop", Parent: "Dandelion.Window", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Dandelion.Window.clientWidth":                                     {Name: "Dandelion.Window.clientWidth", Kind: "prop", Parent: "Dandelion.Window", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Dandelion.Window.scrollHeight":                                    {Name: "Dandelion.Window.scrollHeight", Kind: "prop", Parent: "Dandelion.Window", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Dandelion.Window.scrollLeft":                                      {Name: "Dandelion.Window.scrollLeft", Kind: "prop", Parent: "Dandelion.Window", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Dandelion.Window.scrollTop":                                       {Name: "Dandelion.Window.scrollTop", Kind: "prop", Parent: "Dandelion.Window", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Dandelion.Window.scrollWidth":                                     {Name: "Dandelion.Window.scrollWidth", Kind: "prop", Parent: "Dandelion.Window", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"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.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: ""}},
+		"Dandelion.wrapc":                                                  {Name: "Dandelion.wrapc", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Dandelion.wrape":                                                  {Name: "Dandelion.wrape", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Dandelion.wrapna":                                                 {Name: "Dandelion.wrapna", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Dandelion.wrapne":                                                 {Name: "Dandelion.wrapne", Kind: "method", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Libraries":                                                        {Name: "Libraries", Kind: "class", Parent: "", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Libraries.SyntaxHighlighter":                                      {Name: "Libraries.SyntaxHighlighter", Kind: "class", Parent: "Libraries", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/_this.js", JSHash: "3419332fc98c2a094bc8f2a3b16b87b8d98bd309", CSSHash: "3860c0c289ac761da7d9c595633f8bba8f58afe9"}},
+		"Libraries.SyntaxHighlighter.Brush":                                {Name: "Libraries.SyntaxHighlighter.Brush", Kind: "class", Parent: "Libraries.SyntaxHighlighter", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"Libraries.SyntaxHighlighter.Brush.AS3":                            {Name: "Libraries.SyntaxHighlighter.Brush.AS3", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/AS3.js", JSHash: "a9bcdf532ab90c0917f234e1fce13d7cbde6d303", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.AppleScript":                    {Name: "Libraries.SyntaxHighlighter.Brush.AppleScript", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/AppleScript.js", JSHash: "2c161d78cd5b293e420559a6cb41dbf52af36364", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Bash":                           {Name: "Libraries.SyntaxHighlighter.Brush.Bash", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Bash.js", JSHash: "e01737b50262fb8fda87df4d1d2fcc12c5cff279", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.CSS":                            {Name: "Libraries.SyntaxHighlighter.Brush.CSS", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Css.js", JSHash: "a13eea6d8b8560fe08dbdd8b5e11fe5caee1182e", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.CSharp":                         {Name: "Libraries.SyntaxHighlighter.Brush.CSharp", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/CSharp.js", JSHash: "c8175bf390ff40ba9dcd2034affb9d3eeca1bbc6", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.ColdFusion":                     {Name: "Libraries.SyntaxHighlighter.Brush.ColdFusion", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/ColdFusion.js", JSHash: "5752904015fee173d7b2cc805a385141d243accb", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Cpp":                            {Name: "Libraries.SyntaxHighlighter.Brush.Cpp", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Cpp.js", JSHash: "3afd2a20b76f24bef4c6425ac7c676029251e768", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Delphi":                         {Name: "Libraries.SyntaxHighlighter.Brush.Delphi", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Delphi.js", JSHash: "e8605d9f94172970ae3fb96e8a6708996bc3eb24", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Diff":                           {Name: "Libraries.SyntaxHighlighter.Brush.Diff", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Diff.js", JSHash: "f4a6e49d18deb054fe7e542a871f79f72c828d50", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Erland":                         {Name: "Libraries.SyntaxHighlighter.Brush.Erland", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Erlang.js", JSHash: "3a1cb02fd8787d7fb9c8cd059dac7ff55460f002", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Groovy":                         {Name: "Libraries.SyntaxHighlighter.Brush.Groovy", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Groovy.js", JSHash: "5c426a7fe76c8856a0f3e742801ab22aab619207", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.JScript":                        {Name: "Libraries.SyntaxHighlighter.Brush.JScript", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/JScript.js", JSHash: "0605f279369a383745da75c1193184b2b303140f", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Java":                           {Name: "Libraries.SyntaxHighlighter.Brush.Java", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Java.js", JSHash: "080de761e0bac2f683aa7d6941cb82ff41a123d8", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.JavaFX":                         {Name: "Libraries.SyntaxHighlighter.Brush.JavaFX", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/JavaFX.js", JSHash: "b9275be4113bc3d9d0c07e38d536289ee2694670", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Perl":                           {Name: "Libraries.SyntaxHighlighter.Brush.Perl", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Perl.js", JSHash: "4cd8a05cb33146c5cfa80db799e341d154b90e48", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Php":                            {Name: "Libraries.SyntaxHighlighter.Brush.Php", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Php.js", JSHash: "7dd28893e70e256385ea0b05f5b90b1c8ff6e542", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Plain":                          {Name: "Libraries.SyntaxHighlighter.Brush.Plain", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Plain.js", JSHash: "6d5479daeaa74a77b5f2d4296953d3127885e475", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.PowerShell":                     {Name: "Libraries.SyntaxHighlighter.Brush.PowerShell", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/PowerShell.js", JSHash: "2fa87850b6852fa21fbf40f65dfd9e40b6812fb1", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Python":                         {Name: "Libraries.SyntaxHighlighter.Brush.Python", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Python.js", JSHash: "0bb656b70b58989685c7dfb95835ea7b96670e65", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Ruby":                           {Name: "Libraries.SyntaxHighlighter.Brush.Ruby", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Ruby.js", JSHash: "a987bd40fdbea4edc8329315dae2311c6a7e38c3", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Sass":                           {Name: "Libraries.SyntaxHighlighter.Brush.Sass", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Sass.js", JSHash: "e39acc0a9c9d542cc4f5be489f424915692672bb", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Scala":                          {Name: "Libraries.SyntaxHighlighter.Brush.Scala", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Scala.js", JSHash: "f4e7249df2fd10ff775e928112e94eccfe1b6771", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Sql":                            {Name: "Libraries.SyntaxHighlighter.Brush.Sql", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Sql.js", JSHash: "c150b86652ccc2c01f39074a3b88aef98334894f", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Vb":                             {Name: "Libraries.SyntaxHighlighter.Brush.Vb", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Vb.js", JSHash: "cbcbee01e4eeea3e6ae1efdc655d1c406f5a2788", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Brush.Xml":                            {Name: "Libraries.SyntaxHighlighter.Brush.Xml", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Brush", Imports: []string{"Libraries.SyntaxHighlighter", "Libraries.XRegExp"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Brush/Xml.js", JSHash: "c20ed9b4285ede0af47cfc56e6eb6746b0768d3a", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Core":                                 {Name: "Libraries.SyntaxHighlighter.Core", Kind: "class", Parent: "Libraries.SyntaxHighlighter", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Core/_this.js", JSHash: "eb845464ccec54398e7b3fd2ebd91bb574e45536", CSSHash: "3860c0c289ac761da7d9c595633f8bba8f58afe9"}},
+		"Libraries.SyntaxHighlighter.Core.Default":                         {Name: "Libraries.SyntaxHighlighter.Core.Default", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Core", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Core/Default.js", JSHash: "2fca662e7e098416f96c4689e57aeaffe2fb15fc", CSSHash: "70c96f4f2bf365effb127f94cd2a8a4153df97ca"}},
+		"Libraries.SyntaxHighlighter.Core.Django":                          {Name: "Libraries.SyntaxHighlighter.Core.Django", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Core", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Core/Django.js", JSHash: "a8dadc16bc42853c8545462127cbd52f8a9777e6", CSSHash: "e89e7a33ddb1ae8fd8ce8111a7e45a2b53a29ba1"}},
+		"Libraries.SyntaxHighlighter.Core.Eclipse":                         {Name: "Libraries.SyntaxHighlighter.Core.Eclipse", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Core", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Core/Eclipse.js", JSHash: "1d207eb8538c73a4c60a7613baf25efb0376bd10", CSSHash: "f543e8388de2bc6d7ddf7f01de08c3c6f7370169"}},
+		"Libraries.SyntaxHighlighter.Core.Emacs":                           {Name: "Libraries.SyntaxHighlighter.Core.Emacs", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Core", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Core/Emacs.js", JSHash: "7b3d128d0275142e88b99afbbe79b45058f35eb3", CSSHash: "1e07b188eefa6dd89caad7eb423b6ba0b1405a64"}},
+		"Libraries.SyntaxHighlighter.Core.FadeToGrey":                      {Name: "Libraries.SyntaxHighlighter.Core.FadeToGrey", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Core", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Core/FadeToGrey.js", JSHash: "06e8cb1d6f69f83d4a603c9dbcaa00e91c5a688a", CSSHash: "8de99290e4ef56c917bbd76ef8eaac427c763dde"}},
+		"Libraries.SyntaxHighlighter.Core.MDUltra":                         {Name: "Libraries.SyntaxHighlighter.Core.MDUltra", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Core", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Core/MDUltra.js", JSHash: "0036fea327c5641e8152e267b4db7290d98e6f0d", CSSHash: "7d94466de541cc382973bbae54c34ecd5ba9d4ac"}},
+		"Libraries.SyntaxHighlighter.Core.Midnight":                        {Name: "Libraries.SyntaxHighlighter.Core.Midnight", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Core", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Core/Midnight.js", JSHash: "fbf2d9d380a4fb734a7609e34f78bad71918bd7d", CSSHash: "7f57e6041b8a9ea4d627b52d6a1cd15e8fd407d8"}},
+		"Libraries.SyntaxHighlighter.Core.RDark":                           {Name: "Libraries.SyntaxHighlighter.Core.RDark", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Core", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Core/RDark.js", JSHash: "b88b770d83b1b19e2c9fea207ac70e10d7228bc9", CSSHash: "d277888604281a26be5a921b4746a5d9c98a34f8"}},
+		"Libraries.SyntaxHighlighter.Theme":                                {Name: "Libraries.SyntaxHighlighter.Theme", Kind: "class", Parent: "Libraries.SyntaxHighlighter", Imports: []string{"Libraries.SyntaxHighlighter.Core"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Theme/_this.js", JSHash: "55f3a4849ae1cbab812c4d46b043a4c100fd4cf6", CSSHash: "1"}},
+		"Libraries.SyntaxHighlighter.Theme.Default":                        {Name: "Libraries.SyntaxHighlighter.Theme.Default", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Theme", Imports: []string{"Libraries.SyntaxHighlighter.Core.Default"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Theme/Default.js", JSHash: "6141393c81cb7aada7b2a73a8dbfd558ebda1b27", CSSHash: "987c987735bb6b8994aaf203e473b33567576e21"}},
+		"Libraries.SyntaxHighlighter.Theme.Django":                         {Name: "Libraries.SyntaxHighlighter.Theme.Django", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Theme", Imports: []string{"Libraries.SyntaxHighlighter.Core.Django"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Theme/Django.js", JSHash: "23df03e056ed67c0314d650450f40379ec935e12", CSSHash: "5dfcda0646605919fee778c23a2d9553b0e6da52"}},
+		"Libraries.SyntaxHighlighter.Theme.Eclipse":                        {Name: "Libraries.SyntaxHighlighter.Theme.Eclipse", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Theme", Imports: []string{"Libraries.SyntaxHighlighter.Core.Eclipse"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Theme/Eclipse.js", JSHash: "eee5953aff8db6ee60e2081bc27830acd8cdf55e", CSSHash: "bdea6377e004a14071610af1b26e133dd4843039"}},
+		"Libraries.SyntaxHighlighter.Theme.Emacs":                          {Name: "Libraries.SyntaxHighlighter.Theme.Emacs", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Theme", Imports: []string{"Libraries.SyntaxHighlighter.Core.Emacs"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Theme/Emacs.js", JSHash: "580c4b66bc837bca243f458c03afed51b3a4ead0", CSSHash: "70163d78ff96d3b71dc417819408c751b2286787"}},
+		"Libraries.SyntaxHighlighter.Theme.FadeToGrey":                     {Name: "Libraries.SyntaxHighlighter.Theme.FadeToGrey", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Theme", Imports: []string{"Libraries.SyntaxHighlighter.Core.FadeToGrey"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Theme/FadeToGrey.js", JSHash: "f30ce35a2ce3f1ffd681f6e3924219770db03ac0", CSSHash: "b997df3d771f6c8403b71e4cac4f61a028cb6ab1"}},
+		"Libraries.SyntaxHighlighter.Theme.MDUltra":                        {Name: "Libraries.SyntaxHighlighter.Theme.MDUltra", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Theme", Imports: []string{"Libraries.SyntaxHighlighter.Core.MDUltra"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Theme/MDUltra.js", JSHash: "2970d2bc1f32512fdb2f8487b3fa718a41681c83", CSSHash: "632ce299b8f90d3de35f1505e72db4e1659e0859"}},
+		"Libraries.SyntaxHighlighter.Theme.Midnight":                       {Name: "Libraries.SyntaxHighlighter.Theme.Midnight", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Theme", Imports: []string{"Libraries.SyntaxHighlighter.Core.Midnight"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Theme/Midnight.js", JSHash: "9a5807549212dab3d3430e341cab2311b2f374e5", CSSHash: "138fe3f3bb425837fcfd9b46c3cc5ad199cb01cc"}},
+		"Libraries.SyntaxHighlighter.Theme.RDark":                          {Name: "Libraries.SyntaxHighlighter.Theme.RDark", Kind: "class", Parent: "Libraries.SyntaxHighlighter.Theme", Imports: []string{"Libraries.SyntaxHighlighter.Core.RDark"}, Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/Theme/RDark.js", JSHash: "4eb10422695ef08331f8c5e91c6ca5b655c4b641", CSSHash: "b4970092adfcad76da353fa815b8502a9d09f097"}},
+		"Libraries.XRegExp":                                                {Name: "Libraries.XRegExp", Kind: "class", Parent: "Libraries", Imports: []string(nil), Resource: classmap.Resource{Src: "Libraries/SyntaxHighlighter/_this.js", JSHash: "3419332fc98c2a094bc8f2a3b16b87b8d98bd309", CSSHash: "3860c0c289ac761da7d9c595633f8bba8f58afe9"}},
+		"System":                                                           {Name: "System", Kind: "class", Parent: "", Imports: []string(nil), Resource: classmap.Resource{Src: "System/_this.js", JSHash: "234db843eb17b025eddacdca0083828d0e7700a6", CSSHash: "1"}},
+		"System.Compression":                                               {Name: "System.Compression", Kind: "class", Parent: "System", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Compression/_this.js", JSHash: "237bff609161dca51d55c73b92a477c54286e26d", CSSHash: "1"}},
+		"System.Compression.Zlib":                                          {Name: "System.Compression.Zlib", Kind: "class", Parent: "System.Compression", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Compression/Zlib.js", JSHash: "50248acd8ef77f57eff8998011ac296b252142d4", CSSHash: "1"}},
+		"System.Compression.Zlib.Deflate":                                  {Name: "System.Compression.Zlib.Deflate", Kind: "method", Parent: "System.Compression.Zlib", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Cycle":                                                     {Name: "System.Cycle", Kind: "class", Parent: "System", Imports: []string{"System.utils", "System.Tick", "System.Debug"}, Resource: classmap.Resource{Src: "System/Cycle/_this.js", JSHash: "8eb5c18fd0923d3b2bf27ab48105cb9ce07f4c5e", CSSHash: "1"}},
+		"System.Cycle.TICK":                                                {Name: "System.Cycle.TICK", Kind: "prop", Parent: "System.Cycle", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Cycle.Trigger":                                             {Name: "System.Cycle.Trigger", Kind: "class", Parent: "System.Cycle", Imports: []string{"System.Cycle", "System.Debug"}, Resource: classmap.Resource{Src: "System/Cycle/Trigger.js", JSHash: "b18fae66ada79a1cc2e812dea1055422f1172a37", CSSHash: "1"}},
+		"System.Cycle.Trigger.height":                                      {Name: "System.Cycle.Trigger.height", Kind: "method", Parent: "System.Cycle.Trigger", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Cycle.Trigger.register":                                    {Name: "System.Cycle.Trigger.register", Kind: "method", Parent: "System.Cycle.Trigger", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Cycle.Trigger.transition":                                  {Name: "System.Cycle.Trigger.transition", Kind: "method", Parent: "System.Cycle.Trigger", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Cycle.delay":                                               {Name: "System.Cycle.delay", Kind: "method", Parent: "System.Cycle", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Cycle.next":                                                {Name: "System.Cycle.next", Kind: "method", Parent: "System.Cycle", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Cycle.perma":                                               {Name: "System.Cycle.perma", Kind: "method", Parent: "System.Cycle", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Cycle.permaRemove":                                         {Name: "System.Cycle.permaRemove", Kind: "method", Parent: "System.Cycle", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Debug":                                                     {Name: "System.Debug", Kind: "class", Parent: "System", Imports: []string{"System.Log", "System.Global"}, Resource: classmap.Resource{Src: "System/Debug.js", JSHash: "c821a438f97a2bae0114cd615113c3d278efe121", CSSHash: "1"}},
+		"System.Debug.Error":                                               {Name: "System.Debug.Error", Kind: "method", Parent: "System.Debug", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Debug.Info":                                                {Name: "System.Debug.Info", Kind: "method", Parent: "System.Debug", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Debug.turnOff":                                             {Name: "System.Debug.turnOff", Kind: "method", Parent: "System.Debug", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Debug.turnOn":                                              {Name: "System.Debug.turnOn", Kind: "method", Parent: "System.Debug", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Encoding":                                                  {Name: "System.Encoding", Kind: "class", Parent: "System", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Encoding/_this.js", JSHash: "acf2ce9ee06a72f81447d72c01e655198e38fbc1", CSSHash: "1"}},
+		"System.Encoding.Base64":                                           {Name: "System.Encoding.Base64", Kind: "class", Parent: "System.Encoding", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Encoding/Base64.js", JSHash: "19189ebf4db33bbf081acb98f496365bc313064f", CSSHash: "1"}},
+		"System.Encoding.Base64.Encode":                                    {Name: "System.Encoding.Base64.Encode", Kind: "method", Parent: "System.Encoding.Base64", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Encoding.Utf8":                                             {Name: "System.Encoding.Utf8", Kind: "class", Parent: "System.Encoding", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Encoding/Utf8.js", JSHash: "f582c26e2b63071f6c475d1f09553b546ee0af0f", CSSHash: "1"}},
+		"System.Encoding.Utf8.Encode":                                      {Name: "System.Encoding.Utf8.Encode", Kind: "method", Parent: "System.Encoding.Utf8", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Global":                                                    {Name: "System.Global", Kind: "class", Parent: "System", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Global.js", JSHash: "a1b5eea0d218508e1d5d68f0ced64f16fc9595ce", CSSHash: "1"}},
+		"System.Global.ALLOWED_ORIGINS":                                    {Name: "System.Global.ALLOWED_ORIGINS", Kind: "prop", Parent: "System.Global", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Global.IE":                                                 {Name: "System.Global.IE", Kind: "prop", Parent: "System.Global", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Global.MOBILE":                                             {Name: "System.Global.MOBILE", Kind: "prop", Parent: "System.Global", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Global.SECURE_HTTP":                                        {Name: "System.Global.SECURE_HTTP", Kind: "prop", Parent: "System.Global", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Global.debug":                                              {Name: "System.Global.debug", Kind: "prop", Parent: "System.Global", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Log":                                                       {Name: "System.Log", Kind: "class", Parent: "System", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Log.js", JSHash: "de65e2795ac10fb2cbe8ecdedba66e0617bec8ad", CSSHash: "1"}},
+		"System.Log.ERROR":                                                 {Name: "System.Log.ERROR", Kind: "prop", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Log.INFO":                                                  {Name: "System.Log.INFO", Kind: "prop", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Log.SYSTEM":                                                {Name: "System.Log.SYSTEM", Kind: "prop", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Log.registerHandler":                                       {Name: "System.Log.registerHandler", Kind: "method", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"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: "0c6dc60bb45f9440b999f62f4dc4c0e2cc93e0cb", 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: ""}},
+		"System.Net.postFile":                                              {Name: "System.Net.postFile", Kind: "method", Parent: "System.Net", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.Policy":                                                    {Name: "System.Policy", Kind: "class", Parent: "System", Imports: []string{"System.Global"}, Resource: classmap.Resource{Src: "System/Policy/_this.js", JSHash: "94efec864f3f9258f9ed95d5eadd0a10d7e51797", CSSHash: "1"}},
+		"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.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"}},
+		"System.utils.Perf.ArrayReverse":                                   {Name: "System.utils.Perf.ArrayReverse", Kind: "method", Parent: "System.utils.Perf", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.utils.Perf.CountSubstr":                                    {Name: "System.utils.Perf.CountSubstr", Kind: "method", Parent: "System.utils.Perf", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.utils.Perf.uuid":                                           {Name: "System.utils.Perf.uuid", Kind: "prop", Parent: "System.utils.Perf", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.utils.objGetProp":                                          {Name: "System.utils.objGetProp", Kind: "method", Parent: "System.utils", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.utils.objMap":                                              {Name: "System.utils.objMap", Kind: "method", Parent: "System.utils", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"System.utils.objSearch":                                           {Name: "System.utils.objSearch", Kind: "method", Parent: "System.utils", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
+		"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: "cdf659fcb73f34430021453cb7c4967d6799971d", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Draft.js":                                       {Src: "Astro/Blog/AstroEdit/Draft.js", JSHash: "b8f4dd400e85c729bd5ac3468aa28a7836255af9", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Flag.js":                                        {Src: "Astro/Blog/AstroEdit/Flag.js", JSHash: "dfec5876dcc4eadcbfc292806e74de821f826477", CSSHash: "2af9897e11ed5f3c3a750ce5488c9d91e46c6c58"},
+		"Astro/Blog/AstroEdit/SiteLibrary.js":                                 {Src: "Astro/Blog/AstroEdit/SiteLibrary.js", JSHash: "6442a8da697b50ec94676125327da8ba0cd70a43", 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: "4f04ad32f4ad64f1512112c66324c513ebae4bc7", 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: "9031ee3c774cbb5d5fd59af2fbe911f615c4d056", CSSHash: "4cd01e0c87e41c384afe9d9d5fb9d545bd51bd38"},
+		"Astro/Blog/AstroEdit/Uploader.js":                                    {Src: "Astro/Blog/AstroEdit/Uploader.js", JSHash: "b4d181246ed6ea61dd8b6302be5e853012d59a02", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js":               {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js", JSHash: "6beb43c532ba47ebf8afebfec98c024d84789f58", CSSHash: "e3860ca0ac69a86e948b811da1ebf6ba85fad57f"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js":           {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js", JSHash: "24a3af0af9758ef4a508f5708fdb747edd94997c", CSSHash: "e1cfcf676ebfc3a9ab80139ab2f7e63a2a1b286f"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js":              {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js", JSHash: "4a2f13a28ccbbb85073d20debc02c6525b69ab92", CSSHash: "2d71bce1fa868564d9dac50db338ef7eeed16fd9"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Code.js", JSHash: "c53a26cbe3f15eafb86a6915d3d1f74bad5d513c", CSSHash: "1963e8b907d049ab7228c4cccf5e34206dca2f6c"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js":                 {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Footnote.js", JSHash: "706d7eca843d0171895ad73b60254efab09bfd1c", CSSHash: "e3b173a7579b3897bb98226cd52a56534f75ca15"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js":                  {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Heading.js", JSHash: "b2f0324f28fe148dfea71ef30183ac05920742d2", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Html.js", JSHash: "e855cfd123266850b703133655bc27936f3ae366", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js", JSHash: "eb20ea28b68dc0bb9b795e5a9762cb2f2840cccc", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js", JSHash: "fc29654f1c45a63e9b8dc8eed120e6d3abfb61e8", CSSHash: "963bca1730a62b372e667b0a3f888aeef5504968"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js", JSHash: "c4e8b9ad69f7f3f76fe4674eb68aeb2a8603190c", CSSHash: "43e6cf20a8590ff0a820fed9ae53399edfb53ac4"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js", JSHash: "fa1d1e655350035f514c0824a27a1242671b9d24", CSSHash: "60ee66e1f25468b808af731338d2f10c9e74d8fe"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js":                 {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "1b7da2650be5f5e9b43187c3cfd7b42a4708546d", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js", JSHash: "33562262f68acc2dce3be8cae035c670b2309219", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js":                  {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js", JSHash: "5aae7d7108fc204f39037fb6686e24ccc79c796f", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js", JSHash: "cfc21a3653fb859ffeb72d409c1df2fa34a54255", 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: "54553eff5d2584fb33209e6bfc8113b3fa222cb1", CSSHash: "d43e2d27e52788d755c96f0db4ac500aa38ca2ee"},
+		"Astro/Blog/AstroEdit/_this.js":                                       {Src: "Astro/Blog/AstroEdit/_this.js", JSHash: "96a85746d16908f70921e8cad03cc6105924473a", CSSHash: "2d37776089eeac5d81981f100c1c029c9249e4a9"},
+		"Astro/Blog/Components/Album.js":                                      {Src: "Astro/Blog/Components/Album.js", JSHash: "1443dfa407fb216b1be014417d1f9bce707ad358", 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: "b12c62f19417f6169fd8222267314a509e46d752", CSSHash: "2513518106d6d1c7a42e95c28becb3ddfe39e040"},
+		"Astro/Blog/Components/Calendar.js":                                   {Src: "Astro/Blog/Components/Calendar.js", JSHash: "e9a9de02ddb1fd57a66f658b2bb0a03844753ab9", CSSHash: "305a716f79149cbd609791989ec8b04401a7406f"},
+		"Astro/Blog/Components/Comment.js":                                    {Src: "Astro/Blog/Components/Comment.js", JSHash: "53ce30af0c57c14473220eb9cc83763621173bb6", 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: "018626b7462176df8da4d6f0b730bd4a2778e926", CSSHash: "0473bbb41f9b27a5d448a36c1e175f6f18841019"},
+		"Astro/Blog/Components/Entry/Home.js":                                 {Src: "Astro/Blog/Components/Entry/Home.js", JSHash: "0a4d8b8d9816628a8e80e2498978740c6828a59e", CSSHash: "5546001d65fb0a1087c7d6909efff80f36872a41"},
+		"Astro/Blog/Components/Entry/List.js":                                 {Src: "Astro/Blog/Components/Entry/List.js", JSHash: "4a522d768a4d54de1125d8608e9bf4300ff3773a", CSSHash: "30047de75c64dbb9f669791c42ef17368a7ab997"},
+		"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: "c8f3c1ed14ec27e83149fb8c23b41171b6e228fd", CSSHash: "44c3c00c1df7ec8faea902fa19840902429441b8"},
+		"Astro/Blog/Components/Notification.js":                               {Src: "Astro/Blog/Components/Notification.js", JSHash: "0b4219d96219c4352cce802d59f3265e97b8f822", 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: "e25e9a8cbe4addc5ad8f597873c80a33f2329fb7", CSSHash: "94f07554cb4ad0b81529be89f908f039abc9c2cb"},
+		"Astro/Blog/Components/SocialButtons.js":                              {Src: "Astro/Blog/Components/SocialButtons.js", JSHash: "1114d87addb798a36452a8ca71dbc7eb58aae961", CSSHash: "53c508505fa9c8a744b4d276d168b535f1e7d3ac"},
+		"Astro/Blog/Components/Spoiler.js":                                    {Src: "Astro/Blog/Components/Spoiler.js", JSHash: "cb294bd09ea3cf7299395ffb70242bd26301b4ba", 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: "a20a6d7db28578e58ba6484b0636217167794426", CSSHash: "88b2d440e6056ebd62138e20c9b1c9da97c6fb3f"},
+		"Astro/Blog/Components/ToggleButton/DeleteArticle.js":                 {Src: "Astro/Blog/Components/ToggleButton/DeleteArticle.js", JSHash: "443c24de61b52ad12983f011dc425bac2fca58a4", CSSHash: "37d28e8059d0f48ae1c49f9c5fa106275505fa71"},
+		"Astro/Blog/Components/ToggleButton/_this.js":                         {Src: "Astro/Blog/Components/ToggleButton/_this.js", JSHash: "c572a0eefad8c69ccd60548a3ceabe5d1fed6af8", CSSHash: "ec9b9f22d38415aa2ff3750ac09e3b8e7494ec61"},
+		"Astro/Blog/Components/Video.js":                                      {Src: "Astro/Blog/Components/Video.js", JSHash: "64ea5647119179fd0ec01fd00257a4aa25318f73", 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: "db19fe156ca3984d8b0363e918b458d82a3effdf", 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: "1800acc6511ef7a1efeef4cc83869eb0b30a63ed", CSSHash: "10c6fbfe1a05ede1204926d26eb9fb12f97802fa"},
+		"Astro/Blog/Layout/Login.js":                                          {Src: "Astro/Blog/Layout/Login.js", JSHash: "84931c30a383f873410a779fc74cbb79666ab148", CSSHash: "66b8ec358f3d29b121927d0f72360e33ad90d2ad"},
+		"Astro/Blog/Layout/MainFrame.js":                                      {Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "81e0f15aaf1066a5ccb36204bc7cc61d07085c1d", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"},
+		"Astro/Blog/Layout/Subs/Manage.js":                                    {Src: "Astro/Blog/Layout/Subs/Manage.js", JSHash: "eee56edc6cfbbac71deab377682603032516d472", 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"},
+		"Astro/Bootstrap.js":                                                  {Src: "Astro/Bootstrap.js", JSHash: "51bfb270eadd20b4b71372ae2d20dcf3d20575db", CSSHash: "e650f4de36f799af80ca0633d66351fb9333d620"},
+		"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: "540a2085798928418a54e10d56bc037863ee57a9", CSSHash: "7cae98eaf8e3d5d1cd7fadaa6806ce3d65d74d92"},
+		"Astro/Mechanism/Parallax.js":                                         {Src: "Astro/Mechanism/Parallax.js", JSHash: "ba7b1816fc5d32edfaf5b93b9d35c7b2c297f011", CSSHash: "f8c02f4ec1be082e02c51f0b5ea39cbdd5b0e49f"},
+		"Astro/Penguin/Layout/MainFrame.js":                                   {Src: "Astro/Penguin/Layout/MainFrame.js", JSHash: "b2f58fc9394745c1e47dfb95c4043f59f76acc1a", 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"},
+		"Astro/Starfall/Element/Header.js":                                    {Src: "Astro/Starfall/Element/Header.js", JSHash: "467470a9c5cb5630ae8ec07b29a4496c6a401e0b", CSSHash: "c6bd96ee7e0993a2db1fde4885e5f44cff901878"},
+		"Astro/Starfall/Element/Layer.js":                                     {Src: "Astro/Starfall/Element/Layer.js", JSHash: "cc3c87e83813ee68a9ccc3a12c08992c3027a721", CSSHash: "c482b4089b04665a5d7c5527f8008622375885a2"},
+		"Astro/Starfall/Layout/MainFrame.js":                                  {Src: "Astro/Starfall/Layout/MainFrame.js", JSHash: "f237e72d5cc13922b04857c9290998b7dbbe59d5", CSSHash: "9654c2c26915302a661f5d3fb4f19833ffc6c11d"},
+		"Astro/Starfall/Layout/PureColumn.js":                                 {Src: "Astro/Starfall/Layout/PureColumn.js", JSHash: "5164bbe0019969bf85c649a6991ccd3b8c780b3a", CSSHash: "d1920d1be9f9d9bbfdfdbb16565454c58ed6c78c"},
+		"Astro/Starfall/Layout/TwoColumn.js":                                  {Src: "Astro/Starfall/Layout/TwoColumn.js", JSHash: "e55bedfac6ff774f7bbf46b69b1b537b28f8e993", CSSHash: "cf05ec131d63e657f0eba0183c8055d0101bcf08"},
+		"Astro/Starfall/_this.js":                                             {Src: "Astro/Starfall/_this.js", JSHash: "77ca61d1ba806c3440cec5e26a100581259e1784", CSSHash: "1"},
+		"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: "115be15db72bd22f8222510e7bf4ce0c741028fb", CSSHash: "452f4a36e8fd7321c7d177a311047c8b71165e48"},
+		"Components/DockPanel.js":                                             {Src: "Components/DockPanel.js", JSHash: "c74b3081efdcbfa13300e9a49529f5664734b24e", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"},
+		"Components/MessageBox.js":                                            {Src: "Components/MessageBox.js", JSHash: "db0b55a5e0b1a92b9781c2b0b13817355b8e3cdf", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"},
+		"Components/Mouse/Clipboard.js":                                       {Src: "Components/Mouse/Clipboard.js", JSHash: "574a1ef17878beb21395a2eecfa75d046ff694e0", CSSHash: "1b7f85206ce1560ed23d3b270e093022e25d2e61"},
+		"Components/Mouse/ContextMenu.js":                                     {Src: "Components/Mouse/ContextMenu.js", JSHash: "b39bc1df1324c43b7092bc3db7d15e780b8b2cc0", 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: "1eedc2f169d3f67ac05e1ad25b9728619a1333d4", CSSHash: "1"},
+		"Components/Vim/Actions/DELETE.js":                                    {Src: "Components/Vim/Actions/DELETE.js", JSHash: "12223cd3496265f907c83a6f42bab6eebb174983", CSSHash: "1"},
+		"Components/Vim/Actions/EDITOR_COMMAND.js":                            {Src: "Components/Vim/Actions/EDITOR_COMMAND.js", JSHash: "38f9bd4f5c880fc172b8f50aae38ebb9d189bfe8", CSSHash: "1"},
+		"Components/Vim/Actions/FIND.js":                                      {Src: "Components/Vim/Actions/FIND.js", JSHash: "e408e00eb64bf4daffb39973b41141458966d18f", CSSHash: "1"},
+		"Components/Vim/Actions/INSERT.js":                                    {Src: "Components/Vim/Actions/INSERT.js", JSHash: "cb9d322d663840c1e991559127b5b8ad7b7273f0", CSSHash: "1"},
+		"Components/Vim/Actions/JOIN_LINES.js":                                {Src: "Components/Vim/Actions/JOIN_LINES.js", JSHash: "2c0bafefa8edb662e5003780b4ae8a6b8488a317", CSSHash: "1"},
+		"Components/Vim/Actions/MARK.js":                                      {Src: "Components/Vim/Actions/MARK.js", JSHash: "4e959247d49f84b20f96c8a186492c93d1ff5960", CSSHash: "1"},
+		"Components/Vim/Actions/MARKS.js":                                     {Src: "Components/Vim/Actions/MARKS.js", JSHash: "06699d99178aef5758d7cd7ca46d3b7806ed7621", CSSHash: "1"},
+		"Components/Vim/Actions/PRINT.js":                                     {Src: "Components/Vim/Actions/PRINT.js", JSHash: "d2fae160852cfb3aeed074dc8eef66b71af46224", CSSHash: "1"},
+		"Components/Vim/Actions/PRINT_HEX.js":                                 {Src: "Components/Vim/Actions/PRINT_HEX.js", JSHash: "5ae91c340b0ce35aac6ab73bc4302cfa94e02dd2", CSSHash: "1"},
+		"Components/Vim/Actions/PUT.js":                                       {Src: "Components/Vim/Actions/PUT.js", JSHash: "aebed9fffbae518dbbd59d7b84a399f5cb48398a", CSSHash: "1"},
+		"Components/Vim/Actions/QUIT.js":                                      {Src: "Components/Vim/Actions/QUIT.js", JSHash: "eeb7923e9b8a06ddea2c2d0fff76edb75d04121e", CSSHash: "1"},
+		"Components/Vim/Actions/REDO.js":                                      {Src: "Components/Vim/Actions/REDO.js", JSHash: "a2895a9628f9a075f350fcb0583042f64518ce3d", CSSHash: "1"},
+		"Components/Vim/Actions/REGISTERS.js":                                 {Src: "Components/Vim/Actions/REGISTERS.js", JSHash: "ddaa381db6d77db810a21a35e05f2008034e43ef", CSSHash: "1"},
+		"Components/Vim/Actions/REPLACE.js":                                   {Src: "Components/Vim/Actions/REPLACE.js", JSHash: "7d7b173c63c2252eae700be2021a11470b08276c", CSSHash: "1"},
+		"Components/Vim/Actions/SHIFT_LINES.js":                               {Src: "Components/Vim/Actions/SHIFT_LINES.js", JSHash: "d85ff4738e31e1a8a8acdaf5f00bb5d654290b14", CSSHash: "1"},
+		"Components/Vim/Actions/TO.js":                                        {Src: "Components/Vim/Actions/TO.js", JSHash: "78a814b3fb5c9feff473a265e7253d699f484871", CSSHash: "1"},
+		"Components/Vim/Actions/UNDO.js":                                      {Src: "Components/Vim/Actions/UNDO.js", JSHash: "bb3f119407547329da561213cca7445b63e30d3c", CSSHash: "1"},
+		"Components/Vim/Actions/VA_REC.js":                                    {Src: "Components/Vim/Actions/VA_REC.js", JSHash: "8904fe42c7211334b063c6d89d0b3deb0ffd3633", CSSHash: "1"},
+		"Components/Vim/Actions/VERSION.js":                                   {Src: "Components/Vim/Actions/VERSION.js", JSHash: "1aae87bf77f87a6202733ef515e927d788cd3bc5", CSSHash: "1"},
+		"Components/Vim/Actions/VISUAL.js":                                    {Src: "Components/Vim/Actions/VISUAL.js", JSHash: "2dba8beb95823fd5ff5af757de7319b7a0970cc4", CSSHash: "1"},
+		"Components/Vim/Actions/WORD.js":                                      {Src: "Components/Vim/Actions/WORD.js", JSHash: "dcbb5a4830c5a747ca3f1e6ab5fc6be68c1c3a9b", CSSHash: "1"},
+		"Components/Vim/Actions/WRITE.js":                                     {Src: "Components/Vim/Actions/WRITE.js", JSHash: "6aed08f607ad6c050798a37461ffc6394bb7b5aa", CSSHash: "1"},
+		"Components/Vim/Actions/YANK.js":                                      {Src: "Components/Vim/Actions/YANK.js", JSHash: "4c428bea3ce9c15b94f294b1d4cd17ee4cde8824", CSSHash: "1"},
+		"Components/Vim/Controls.js":                                          {Src: "Components/Vim/Controls.js", JSHash: "d820f2b288a11adfd43eed1186f702013530606f", CSSHash: "1"},
+		"Components/Vim/Cursor.js":                                            {Src: "Components/Vim/Cursor.js", JSHash: "499fe9a53c9de02138c3440b0433227b00846259", CSSHash: "1"},
+		"Components/Vim/DateTime/String.js":                                   {Src: "Components/Vim/DateTime/String.js", JSHash: "07b11e176cccc423e75d8fe66302f8cb8b009418", CSSHash: "1"},
+		"Components/Vim/DateTime/_this.js":                                    {Src: "Components/Vim/DateTime/_this.js", JSHash: "420103edb4f3df39be9eceabd4b88919b5cf7cc7", CSSHash: "1"},
+		"Components/Vim/Ex/Command.js":                                        {Src: "Components/Vim/Ex/Command.js", JSHash: "04ab6686c5f5543463c1b9668a0832cbe7b08771", CSSHash: "1"},
+		"Components/Vim/LineBuffer.js":                                        {Src: "Components/Vim/LineBuffer.js", JSHash: "d7815c5c0a40eda137ebb9559481b265e3f4c7be", CSSHash: "1"},
+		"Components/Vim/LineFeeder.js":                                        {Src: "Components/Vim/LineFeeder.js", JSHash: "7876d69d13a93fe96a04ca5c5b17496b1d542d86", CSSHash: "1"},
+		"Components/Vim/State/History.js":                                     {Src: "Components/Vim/State/History.js", JSHash: "2d338e9e47f157f392d9f9df210ec6e8768cffb0", CSSHash: "1"},
+		"Components/Vim/State/Marks.js":                                       {Src: "Components/Vim/State/Marks.js", JSHash: "66316f61f4b322bacea9899a5a9eee0bd12de8e6", CSSHash: "1"},
+		"Components/Vim/State/Recorder.js":                                    {Src: "Components/Vim/State/Recorder.js", JSHash: "3172902ca4683ca0017800e060bb4a0d0dba3bc7", CSSHash: "1"},
+		"Components/Vim/State/Registers.js":                                   {Src: "Components/Vim/State/Registers.js", JSHash: "60e791e7464fd1c15329dc576b736de906c442e3", CSSHash: "1"},
+		"Components/Vim/State/Stack.js":                                       {Src: "Components/Vim/State/Stack.js", JSHash: "bee72cfd5adec1fd9f0edb1b0e8e58c1865a9195", CSSHash: "1"},
+		"Components/Vim/State/Stator.js":                                      {Src: "Components/Vim/State/Stator.js", JSHash: "b86bc18676313544069bd5abe04e39fe3054652c", CSSHash: "1"},
+		"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: "2f02762ea783bbcb7843ebe72ec2660feada7c0c", 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: "a4c414b270c4fbdc6d4093b1d02791e5f088a871", 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: "5ea3e5c5f209abd7a77e278b0709ee83efcb690e", 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: "deb13aff0c4ceb6aea9ac82b93d1b84a88540a14", 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"},
+		"Libraries/SyntaxHighlighter/Brush/CSharp.js":                         {Src: "Libraries/SyntaxHighlighter/Brush/CSharp.js", JSHash: "c8175bf390ff40ba9dcd2034affb9d3eeca1bbc6", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/ColdFusion.js":                     {Src: "Libraries/SyntaxHighlighter/Brush/ColdFusion.js", JSHash: "5752904015fee173d7b2cc805a385141d243accb", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Cpp.js":                            {Src: "Libraries/SyntaxHighlighter/Brush/Cpp.js", JSHash: "3afd2a20b76f24bef4c6425ac7c676029251e768", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Css.js":                            {Src: "Libraries/SyntaxHighlighter/Brush/Css.js", JSHash: "a13eea6d8b8560fe08dbdd8b5e11fe5caee1182e", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Delphi.js":                         {Src: "Libraries/SyntaxHighlighter/Brush/Delphi.js", JSHash: "e8605d9f94172970ae3fb96e8a6708996bc3eb24", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Diff.js":                           {Src: "Libraries/SyntaxHighlighter/Brush/Diff.js", JSHash: "f4a6e49d18deb054fe7e542a871f79f72c828d50", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Erlang.js":                         {Src: "Libraries/SyntaxHighlighter/Brush/Erlang.js", JSHash: "3a1cb02fd8787d7fb9c8cd059dac7ff55460f002", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Groovy.js":                         {Src: "Libraries/SyntaxHighlighter/Brush/Groovy.js", JSHash: "5c426a7fe76c8856a0f3e742801ab22aab619207", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/JScript.js":                        {Src: "Libraries/SyntaxHighlighter/Brush/JScript.js", JSHash: "0605f279369a383745da75c1193184b2b303140f", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Java.js":                           {Src: "Libraries/SyntaxHighlighter/Brush/Java.js", JSHash: "080de761e0bac2f683aa7d6941cb82ff41a123d8", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/JavaFX.js":                         {Src: "Libraries/SyntaxHighlighter/Brush/JavaFX.js", JSHash: "b9275be4113bc3d9d0c07e38d536289ee2694670", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Perl.js":                           {Src: "Libraries/SyntaxHighlighter/Brush/Perl.js", JSHash: "4cd8a05cb33146c5cfa80db799e341d154b90e48", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Php.js":                            {Src: "Libraries/SyntaxHighlighter/Brush/Php.js", JSHash: "7dd28893e70e256385ea0b05f5b90b1c8ff6e542", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Plain.js":                          {Src: "Libraries/SyntaxHighlighter/Brush/Plain.js", JSHash: "6d5479daeaa74a77b5f2d4296953d3127885e475", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/PowerShell.js":                     {Src: "Libraries/SyntaxHighlighter/Brush/PowerShell.js", JSHash: "2fa87850b6852fa21fbf40f65dfd9e40b6812fb1", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Python.js":                         {Src: "Libraries/SyntaxHighlighter/Brush/Python.js", JSHash: "0bb656b70b58989685c7dfb95835ea7b96670e65", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Ruby.js":                           {Src: "Libraries/SyntaxHighlighter/Brush/Ruby.js", JSHash: "a987bd40fdbea4edc8329315dae2311c6a7e38c3", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Sass.js":                           {Src: "Libraries/SyntaxHighlighter/Brush/Sass.js", JSHash: "e39acc0a9c9d542cc4f5be489f424915692672bb", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Scala.js":                          {Src: "Libraries/SyntaxHighlighter/Brush/Scala.js", JSHash: "f4e7249df2fd10ff775e928112e94eccfe1b6771", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Sql.js":                            {Src: "Libraries/SyntaxHighlighter/Brush/Sql.js", JSHash: "c150b86652ccc2c01f39074a3b88aef98334894f", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Vb.js":                             {Src: "Libraries/SyntaxHighlighter/Brush/Vb.js", JSHash: "cbcbee01e4eeea3e6ae1efdc655d1c406f5a2788", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Brush/Xml.js":                            {Src: "Libraries/SyntaxHighlighter/Brush/Xml.js", JSHash: "c20ed9b4285ede0af47cfc56e6eb6746b0768d3a", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/Core/Default.js":                         {Src: "Libraries/SyntaxHighlighter/Core/Default.js", JSHash: "2fca662e7e098416f96c4689e57aeaffe2fb15fc", CSSHash: "70c96f4f2bf365effb127f94cd2a8a4153df97ca"},
+		"Libraries/SyntaxHighlighter/Core/Django.js":                          {Src: "Libraries/SyntaxHighlighter/Core/Django.js", JSHash: "a8dadc16bc42853c8545462127cbd52f8a9777e6", CSSHash: "e89e7a33ddb1ae8fd8ce8111a7e45a2b53a29ba1"},
+		"Libraries/SyntaxHighlighter/Core/Eclipse.js":                         {Src: "Libraries/SyntaxHighlighter/Core/Eclipse.js", JSHash: "1d207eb8538c73a4c60a7613baf25efb0376bd10", CSSHash: "f543e8388de2bc6d7ddf7f01de08c3c6f7370169"},
+		"Libraries/SyntaxHighlighter/Core/Emacs.js":                           {Src: "Libraries/SyntaxHighlighter/Core/Emacs.js", JSHash: "7b3d128d0275142e88b99afbbe79b45058f35eb3", CSSHash: "1e07b188eefa6dd89caad7eb423b6ba0b1405a64"},
+		"Libraries/SyntaxHighlighter/Core/FadeToGrey.js":                      {Src: "Libraries/SyntaxHighlighter/Core/FadeToGrey.js", JSHash: "06e8cb1d6f69f83d4a603c9dbcaa00e91c5a688a", CSSHash: "8de99290e4ef56c917bbd76ef8eaac427c763dde"},
+		"Libraries/SyntaxHighlighter/Core/MDUltra.js":                         {Src: "Libraries/SyntaxHighlighter/Core/MDUltra.js", JSHash: "0036fea327c5641e8152e267b4db7290d98e6f0d", CSSHash: "7d94466de541cc382973bbae54c34ecd5ba9d4ac"},
+		"Libraries/SyntaxHighlighter/Core/Midnight.js":                        {Src: "Libraries/SyntaxHighlighter/Core/Midnight.js", JSHash: "fbf2d9d380a4fb734a7609e34f78bad71918bd7d", CSSHash: "7f57e6041b8a9ea4d627b52d6a1cd15e8fd407d8"},
+		"Libraries/SyntaxHighlighter/Core/RDark.js":                           {Src: "Libraries/SyntaxHighlighter/Core/RDark.js", JSHash: "b88b770d83b1b19e2c9fea207ac70e10d7228bc9", CSSHash: "d277888604281a26be5a921b4746a5d9c98a34f8"},
+		"Libraries/SyntaxHighlighter/Core/_this.js":                           {Src: "Libraries/SyntaxHighlighter/Core/_this.js", JSHash: "eb845464ccec54398e7b3fd2ebd91bb574e45536", CSSHash: "3860c0c289ac761da7d9c595633f8bba8f58afe9"},
+		"Libraries/SyntaxHighlighter/Theme/Default.js":                        {Src: "Libraries/SyntaxHighlighter/Theme/Default.js", JSHash: "6141393c81cb7aada7b2a73a8dbfd558ebda1b27", CSSHash: "987c987735bb6b8994aaf203e473b33567576e21"},
+		"Libraries/SyntaxHighlighter/Theme/Django.js":                         {Src: "Libraries/SyntaxHighlighter/Theme/Django.js", JSHash: "23df03e056ed67c0314d650450f40379ec935e12", CSSHash: "5dfcda0646605919fee778c23a2d9553b0e6da52"},
+		"Libraries/SyntaxHighlighter/Theme/Eclipse.js":                        {Src: "Libraries/SyntaxHighlighter/Theme/Eclipse.js", JSHash: "eee5953aff8db6ee60e2081bc27830acd8cdf55e", CSSHash: "bdea6377e004a14071610af1b26e133dd4843039"},
+		"Libraries/SyntaxHighlighter/Theme/Emacs.js":                          {Src: "Libraries/SyntaxHighlighter/Theme/Emacs.js", JSHash: "580c4b66bc837bca243f458c03afed51b3a4ead0", CSSHash: "70163d78ff96d3b71dc417819408c751b2286787"},
+		"Libraries/SyntaxHighlighter/Theme/FadeToGrey.js":                     {Src: "Libraries/SyntaxHighlighter/Theme/FadeToGrey.js", JSHash: "f30ce35a2ce3f1ffd681f6e3924219770db03ac0", CSSHash: "b997df3d771f6c8403b71e4cac4f61a028cb6ab1"},
+		"Libraries/SyntaxHighlighter/Theme/MDUltra.js":                        {Src: "Libraries/SyntaxHighlighter/Theme/MDUltra.js", JSHash: "2970d2bc1f32512fdb2f8487b3fa718a41681c83", CSSHash: "632ce299b8f90d3de35f1505e72db4e1659e0859"},
+		"Libraries/SyntaxHighlighter/Theme/Midnight.js":                       {Src: "Libraries/SyntaxHighlighter/Theme/Midnight.js", JSHash: "9a5807549212dab3d3430e341cab2311b2f374e5", CSSHash: "138fe3f3bb425837fcfd9b46c3cc5ad199cb01cc"},
+		"Libraries/SyntaxHighlighter/Theme/RDark.js":                          {Src: "Libraries/SyntaxHighlighter/Theme/RDark.js", JSHash: "4eb10422695ef08331f8c5e91c6ca5b655c4b641", CSSHash: "b4970092adfcad76da353fa815b8502a9d09f097"},
+		"Libraries/SyntaxHighlighter/Theme/_this.js":                          {Src: "Libraries/SyntaxHighlighter/Theme/_this.js", JSHash: "55f3a4849ae1cbab812c4d46b043a4c100fd4cf6", CSSHash: "1"},
+		"Libraries/SyntaxHighlighter/_this.js":                                {Src: "Libraries/SyntaxHighlighter/_this.js", JSHash: "3419332fc98c2a094bc8f2a3b16b87b8d98bd309", CSSHash: "3860c0c289ac761da7d9c595633f8bba8f58afe9"},
+		"System/Compression/Zlib.js":                                          {Src: "System/Compression/Zlib.js", JSHash: "50248acd8ef77f57eff8998011ac296b252142d4", CSSHash: "1"},
+		"System/Compression/_this.js":                                         {Src: "System/Compression/_this.js", JSHash: "237bff609161dca51d55c73b92a477c54286e26d", CSSHash: "1"},
+		"System/Cycle/Trigger.js":                                             {Src: "System/Cycle/Trigger.js", JSHash: "b18fae66ada79a1cc2e812dea1055422f1172a37", CSSHash: "1"},
+		"System/Cycle/_this.js":                                               {Src: "System/Cycle/_this.js", JSHash: "8eb5c18fd0923d3b2bf27ab48105cb9ce07f4c5e", CSSHash: "1"},
+		"System/Debug.js":                                                     {Src: "System/Debug.js", JSHash: "c821a438f97a2bae0114cd615113c3d278efe121", CSSHash: "1"},
+		"System/Encoding/Base64.js":                                           {Src: "System/Encoding/Base64.js", JSHash: "19189ebf4db33bbf081acb98f496365bc313064f", CSSHash: "1"},
+		"System/Encoding/Utf8.js":                                             {Src: "System/Encoding/Utf8.js", JSHash: "f582c26e2b63071f6c475d1f09553b546ee0af0f", CSSHash: "1"},
+		"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: "0c6dc60bb45f9440b999f62f4dc4c0e2cc93e0cb", 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/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"},
+		"System/utils/_this.js":                                               {Src: "System/utils/_this.js", JSHash: "217041f4a86092e258a1c6624ff837cefd1ccc0f", CSSHash: "1"},
+	},
+}
diff --git a/botanres-go/internal/resolver/resolver.go b/botanres-go/internal/resolver/resolver.go
new file mode 100644
index 0000000..8b66731
--- /dev/null
+++ b/botanres-go/internal/resolver/resolver.go
@@ -0,0 +1,306 @@
+package resolver
+
+import (
+	"bytes"
+	"compress/zlib"
+	"crypto/md5"
+	"encoding/base64"
+	"encoding/hex"
+	"errors"
+	"fmt"
+	"io"
+	"os"
+	"path/filepath"
+	"regexp"
+	"sort"
+	"strings"
+
+	"github.com/tgckpg/botanres-go/internal/classmap"
+)
+
+type OutputMode string
+
+const (
+	ModeJS  OutputMode = "js"
+	ModeCSS OutputMode = "css"
+)
+
+type Result struct {
+	Mode        OutputMode
+	Request     []string
+	JSFiles     []classmap.Resource
+	CSSFiles    []classmap.Resource
+	Hash        string
+	Content     []byte
+	ContentType string
+}
+
+type Resolver struct {
+	Root string
+	Map  *classmap.Map
+}
+
+func New(root string, m *classmap.Map) (*Resolver, error) {
+	root, err := filepath.Abs(root)
+	if err != nil {
+		return nil, err
+	}
+	return &Resolver{Root: root, Map: m}, nil
+}
+
+func (r *Resolver) ResolveRequest(code string, mode OutputMode, excludes []string) (Result, error) {
+	apis, err := DecodeRequest(code)
+	if err != nil {
+		return Result{}, err
+	}
+	var includeSyms []classmap.Symbol
+	var excludeSyms []classmap.Symbol
+	for _, api := range apis {
+		if api == "" {
+			continue
+		}
+		neg := strings.HasPrefix(api, "-")
+		api = strings.TrimPrefix(api, "-")
+		syms, err := r.ResolveSymbol(api)
+		if err != nil {
+			return Result{}, err
+		}
+		if neg {
+			excludeSyms = append(excludeSyms, syms...)
+		} else {
+			includeSyms = append(includeSyms, syms...)
+		}
+	}
+	for _, ex := range excludes {
+		syms, err := r.ResolveSymbol(ex)
+		if err != nil {
+			return Result{}, err
+		}
+		excludeSyms = append(excludeSyms, syms...)
+	}
+
+	jsFiles := r.resourcesFor(includeSyms)
+	jsExcludes := r.resourcesFor(excludeSyms)
+	jsFiles = subtractResources(jsFiles, jsExcludes)
+
+	res := Result{Mode: mode, Request: apis, JSFiles: jsFiles}
+	switch mode {
+	case ModeJS:
+		content, hash, err := r.MergeJS(jsFiles)
+		res.Hash, res.Content, res.ContentType = hash, content, "application/javascript"
+		return res, err
+	case ModeCSS:
+		cssIn := r.cssResources(jsFiles)
+		cssEx := r.cssResources(jsExcludes)
+		cssFiles := subtractResources(cssIn, cssEx)
+		content, hash, err := r.MergeCSS(cssFiles)
+		res.CSSFiles, res.Hash, res.Content, res.ContentType = cssFiles, hash, content, "text/css"
+		return res, err
+	default:
+		return Result{}, fmt.Errorf("invalid mode: %s", mode)
+	}
+}
+
+func (r *Resolver) ResolveSymbol(name string) ([]classmap.Symbol, error) {
+	seen := map[string]bool{}
+	var out []classmap.Symbol
+	if strings.HasSuffix(name, ".*") {
+		prefix := strings.TrimSuffix(name, "*")
+		var keys []string
+		for k, s := range r.Map.Symbols {
+			if strings.HasPrefix(k, prefix) && s.Kind == classmap.KindClass && k != strings.TrimSuffix(prefix, ".") {
+				keys = append(keys, k)
+			}
+		}
+		if len(keys) == 0 {
+			return nil, fmt.Errorf("namespace does not exist or contains no classes: %s", name)
+		}
+		sort.Strings(keys)
+		for _, k := range keys {
+			if err := r.resolveOne(k, seen, &out); err != nil {
+				return nil, err
+			}
+		}
+		return out, nil
+	}
+	if err := r.resolveOne(name, seen, &out); err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (r *Resolver) resolveOne(name string, seen map[string]bool, out *[]classmap.Symbol) error {
+	if seen[name] {
+		return nil
+	}
+	sym, ok := r.Map.Symbols[name]
+	if !ok {
+		return fmt.Errorf("no such class: %s", name)
+	}
+	seen[name] = true
+	imports := sym.Imports
+	// Old resolver uses parent imports when the found node is prop/method.
+	if sym.Kind != classmap.KindClass && sym.Parent != "" {
+		if p, ok := r.Map.Symbols[sym.Parent]; ok {
+			imports = p.Imports
+		}
+	}
+	for _, imp := range imports {
+		if err := r.resolveOne(imp, seen, out); err != nil {
+			return err
+		}
+	}
+	*out = append(*out, sym)
+	return nil
+}
+
+func (r *Resolver) resourcesFor(syms []classmap.Symbol) []classmap.Resource {
+	var out []classmap.Resource
+	for _, s := range syms {
+		res, ok := r.resourceFor(s)
+		if ok {
+			out = appendResource(out, res)
+		}
+	}
+	return out
+}
+
+func (r *Resolver) resourceFor(s classmap.Symbol) (classmap.Resource, bool) {
+	if s.Resource.Src != "" {
+		return s.Resource, true
+	}
+	for p := s.Parent; p != ""; {
+		ps, ok := r.Map.Symbols[p]
+		if !ok {
+			break
+		}
+		if ps.Resource.Src != "" {
+			return ps.Resource, true
+		}
+		p = ps.Parent
+	}
+	return classmap.Resource{}, false
+}
+
+func (r *Resolver) cssResources(jsFiles []classmap.Resource) []classmap.Resource {
+	var out []classmap.Resource
+	for _, res := range jsFiles {
+		if res.CSSHash != "1" {
+			out = appendResource(out, res)
+		}
+		parts := strings.Split(res.Src, "/")
+		for i := 1; i < len(parts); i++ {
+			key := strings.Join(parts[:len(parts)-i], "/") + "/_this.js"
+			def, ok := r.Map.Files[key]
+			if ok && def.CSSHash != "1" {
+				out = appendResource(out, def)
+			}
+		}
+	}
+	sort.SliceStable(out, func(i, j int) bool { return out[i].Src < out[j].Src })
+	return out
+}
+
+func (r *Resolver) MergeJS(files []classmap.Resource) ([]byte, string, error) {
+	var b bytes.Buffer
+	head, _ := os.ReadFile(filepath.Join(r.Root, "_this.js"))
+	b.Write(head)
+	for _, f := range files {
+		pathName := strings.TrimSuffix(f.Src, ".js")
+		pathName = strings.ReplaceAll(pathName, "/", ".")
+		pathName = strings.ReplaceAll(pathName, "._this", "")
+		b.WriteString(";BotanJS.define(\"")
+		b.WriteString(pathName)
+		b.WriteString("\");")
+		src, err := os.ReadFile(filepath.Join(r.Root, filepath.FromSlash(f.Src)))
+		if err != nil {
+			return nil, "", err
+		}
+		b.Write(src)
+	}
+	wrapped := append([]byte("(function(){"), b.Bytes()...)
+	wrapped = append(wrapped, []byte("})();")...)
+	return wrapped, hashList(files, "js"), nil
+}
+
+func (r *Resolver) MergeCSS(files []classmap.Resource) ([]byte, string, error) {
+	var b bytes.Buffer
+	b.WriteString("/* @ */")
+	head, _ := os.ReadFile(filepath.Join(r.Root, "_this.css"))
+	b.Write(head)
+	for _, f := range files {
+		cssPath := strings.TrimSuffix(f.Src, ".js") + ".css"
+		src, err := os.ReadFile(filepath.Join(r.Root, filepath.FromSlash(cssPath)))
+		if err != nil {
+			if errors.Is(err, os.ErrNotExist) {
+				continue
+			}
+			return nil, "", err
+		}
+		b.Write(src)
+	}
+	return b.Bytes(), hashList(files, "css"), nil
+}
+
+func DecodeRequest(code string) ([]string, error) {
+	sep := "/"
+	decoded := code
+	if raw, err := base64.StdEncoding.DecodeString(code); err == nil {
+		zr, err := zlib.NewReader(bytes.NewReader(raw))
+		if err == nil {
+			buf, readErr := io.ReadAll(zr)
+			_ = zr.Close()
+			if readErr != nil {
+				return nil, readErr
+			}
+			decoded = string(buf)
+			sep = ","
+		}
+	}
+	cleaner := regexp.MustCompile(`[^A-Za-z.\*\-_/ ,]`)
+	decoded = cleaner.ReplaceAllString(decoded, "")
+	var fields []string
+	for _, p := range strings.Split(decoded, sep) {
+		p = strings.TrimSpace(p)
+		if p != "" {
+			fields = append(fields, p)
+		}
+	}
+	return fields, nil
+}
+
+func appendResource(out []classmap.Resource, res classmap.Resource) []classmap.Resource {
+	for _, x := range out {
+		if x.Src == res.Src {
+			return out
+		}
+	}
+	return append(out, res)
+}
+
+func subtractResources(in, ex []classmap.Resource) []classmap.Resource {
+	drop := map[string]bool{}
+	for _, x := range ex {
+		drop[x.Src] = true
+	}
+	var out []classmap.Resource
+	for _, x := range in {
+		if !drop[x.Src] {
+			out = append(out, x)
+		}
+	}
+	return out
+}
+
+func hashList(files []classmap.Resource, mode string) string {
+	var parts []string
+	for _, f := range files {
+		if mode == "css" {
+			parts = append(parts, f.CSSHash)
+		} else {
+			parts = append(parts, f.JSHash)
+		}
+	}
+	sum := md5.Sum([]byte(strings.Join(parts, "|")))
+	return hex.EncodeToString(sum[:]) + "." + mode
+}
diff --git a/closure-compilerd/Dockerfile b/closure-compilerd/Dockerfile
new file mode 100644
index 0000000..c3d1e9a
--- /dev/null
+++ b/closure-compilerd/Dockerfile
@@ -0,0 +1,37 @@
+FROM maven:3.9-eclipse-temurin-21 AS build
+
+WORKDIR /src
+
+# Copy pom first so Docker can cache dependencies.
+COPY pom.xml .
+
+RUN --mount=type=cache,target=/root/.m2 \
+    mvn -B -DskipTests dependency:go-offline
+
+COPY src ./src
+
+RUN --mount=type=cache,target=/root/.m2 \
+    mvn -B -DskipTests package
+
+
+FROM eclipse-temurin:21-jre
+
+WORKDIR /app
+
+RUN useradd -r -u 10001 closure
+
+COPY --from=build /src/target/closure-compilerd-0.1.0.jar /app/closure-compilerd.jar
+
+# Optional: put your JS source tree/configs here if you want the container
+# to compile files from inside the image.
+COPY example ./example
+
+USER closure
+
+ENV CLOSURED_ROOT=/work
+ENV CLOSURED_PORT=8080
+ENV CLOSURED_WORKERS=2
+
+EXPOSE 8080
+
+ENTRYPOINT ["java", "-Xms256m", "-Xmx2g", "-jar", "/app/closure-compilerd.jar"]
diff --git a/closure-compilerd/README.md b/closure-compilerd/README.md
new file mode 100644
index 0000000..9609912
--- /dev/null
+++ b/closure-compilerd/README.md
@@ -0,0 +1,30 @@
+# closure-compilerd-min
+
+Tiny Closure Compiler HTTP daemon using Java's built-in HTTP server.
+
+## Build
+
+```sh
+mvn -DskipTests package
+```
+
+## Run
+
+```sh
+CLOSURED_ROOT=$PWD \
+CLOSURED_PORT=8080 \
+CLOSURED_WORKERS=2 \
+java -Xms256m -Xmx2g -jar target/closure-compilerd-0.1.0.jar
+```
+
+## Test
+
+```sh
+curl -s http://127.0.0.1:8080/compile \
+  -H 'Content-Type: application/json' \
+  -d '{
+    "externs": ["example/externs/browser.js"],
+    "js": ["example/js/hello.js"],
+    "defines": {"DEBUG": false}
+  }'
+```
diff --git a/closure-compilerd/example/externs/browser.js b/closure-compilerd/example/externs/browser.js
new file mode 100644
index 0000000..a45c1ad
--- /dev/null
+++ b/closure-compilerd/example/externs/browser.js
@@ -0,0 +1,3 @@
+/** @externs */
+var window = {};
+window.demoHello = function(name) {};
diff --git a/closure-compilerd/example/js/hello.js b/closure-compilerd/example/js/hello.js
new file mode 100644
index 0000000..25dd087
--- /dev/null
+++ b/closure-compilerd/example/js/hello.js
@@ -0,0 +1,13 @@
+/** @define {boolean} */
+var DEBUG = false;
+
+function internalNameThatShouldDisappear(name) {
+  if (DEBUG) {
+    console.log('debug mode');
+  }
+  return 'hello ' + name;
+}
+
+window.demoHello = function(name) {
+  return internalNameThatShouldDisappear(name);
+};
diff --git a/closure-compilerd/pom.xml b/closure-compilerd/pom.xml
new file mode 100644
index 0000000..5273d4f
--- /dev/null
+++ b/closure-compilerd/pom.xml
@@ -0,0 +1,61 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>dev.tgckpg</groupId>
+  <artifactId>closure-compilerd</artifactId>
+  <version>0.1.0</version>
+
+  <properties>
+    <maven.compiler.source>21</maven.compiler.source>
+    <maven.compiler.target>21</maven.compiler.target>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.google.javascript</groupId>
+      <artifactId>closure-compiler</artifactId>
+      <version>v20260526</version>
+    </dependency>
+
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+      <version>2.19.0</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.14.0</version>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>3.6.0</version>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <createDependencyReducedPom>false</createDependencyReducedPom>
+              <transformers>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                  <mainClass>dev.tgckpg.closured.Main</mainClass>
+                </transformer>
+              </transformers>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/closure-compilerd/src/main/java/dev/tgckpg/closured/Main.java b/closure-compilerd/src/main/java/dev/tgckpg/closured/Main.java
new file mode 100644
index 0000000..9be87ce
--- /dev/null
+++ b/closure-compilerd/src/main/java/dev/tgckpg/closured/Main.java
@@ -0,0 +1,192 @@
+package dev.tgckpg.closured;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.javascript.jscomp.CompilationLevel;
+import com.google.javascript.jscomp.CommandLineRunner;
+import com.google.javascript.jscomp.CompilerOptions;
+import com.google.javascript.jscomp.JSError;
+import com.google.javascript.jscomp.Result;
+import com.google.javascript.jscomp.SourceFile;
+import com.google.javascript.jscomp.WarningLevel;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpServer;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Executors;
+
+public final class Main {
+    private static final ObjectMapper JSON = new ObjectMapper();
+
+    private static final Path ROOT = Path.of(System.getenv().getOrDefault("CLOSURED_ROOT", ".")).toAbsolutePath().normalize();
+    private static final int PORT = Integer.parseInt(System.getenv().getOrDefault("CLOSURED_PORT", "8080"));
+    private static final int WORKERS = Integer.parseInt(System.getenv().getOrDefault("CLOSURED_WORKERS", "2"));
+
+    public static void main(String[] args) throws Exception {
+        HttpServer server = HttpServer.create(new InetSocketAddress("0.0.0.0", PORT), 128);
+        server.setExecutor(Executors.newFixedThreadPool(WORKERS));
+
+        server.createContext("/health", Main::health);
+        server.createContext("/compile", Main::compile);
+
+        server.start();
+        System.err.printf("closure-compilerd listening on http://0.0.0.0:%d root=%s workers=%d%n", PORT, ROOT, WORKERS);
+    }
+
+    private static void health(HttpExchange ex) throws IOException {
+        sendJson(ex, 200, JSON.createObjectNode().put("ok", true));
+    }
+
+    private static void compile(HttpExchange ex) throws IOException {
+        if (!"POST".equalsIgnoreCase(ex.getRequestMethod())) {
+            sendJson(ex, 405, JSON.createObjectNode().put("ok", false).put("error", "POST required"));
+            return;
+        }
+
+        JsonNode req;
+        try (InputStream in = ex.getRequestBody()) {
+            req = JSON.readTree(in);
+        } catch (Exception e) {
+            sendJson(ex, 400, JSON.createObjectNode().put("ok", false).put("error", "invalid JSON"));
+            return;
+        }
+
+        try {
+            CompileOutput out = compileRequest(req);
+            ObjectNode res = JSON.createObjectNode();
+            res.put("ok", out.success);
+            res.put("js", out.js);
+            res.set("warnings", JSON.valueToTree(out.warnings));
+            res.set("errors", JSON.valueToTree(out.errors));
+            sendJson(ex, out.success ? 200 : 422, res);
+        } catch (BadRequest e) {
+            sendJson(ex, 400, JSON.createObjectNode().put("ok", false).put("error", e.getMessage()));
+        } catch (Exception e) {
+            e.printStackTrace();
+            sendJson(ex, 500, JSON.createObjectNode().put("ok", false).put("error", e.toString()));
+        }
+    }
+
+    private static CompileOutput compileRequest(JsonNode req) throws IOException, BadRequest {
+        CompilerOptions options = new CompilerOptions();
+
+        CompilationLevel.ADVANCED_OPTIMIZATIONS.setOptionsForCompilationLevel(options);
+        WarningLevel.DEFAULT.setOptionsForWarningLevel(options);
+
+        options.setEnvironment(CompilerOptions.Environment.BROWSER);
+
+        options.setLanguageIn(CompilerOptions.LanguageMode.ECMASCRIPT_NEXT);
+        options.setLanguageOut(CompilerOptions.LanguageMode.ECMASCRIPT_2019);
+
+        List<SourceFile> externs = new ArrayList<>();
+        externs.addAll(CommandLineRunner.getBuiltinExterns(options.getEnvironment()));
+        externs.addAll(readFiles(req, "externs"));
+
+        List<SourceFile> inputs = readFiles(req, "js");
+
+        if (inputs.isEmpty()) {
+            throw new BadRequest("request must include at least one js file");
+        }
+
+        com.google.javascript.jscomp.Compiler compiler =
+            new com.google.javascript.jscomp.Compiler();
+
+        JsonNode defines = req.get("defines");
+        if (defines != null && defines.isObject()) {
+            Iterator<Map.Entry<String, JsonNode>> fields = defines.fields();
+            while (fields.hasNext()) {
+                Map.Entry<String, JsonNode> entry = fields.next();
+                String name = entry.getKey();
+                JsonNode value = entry.getValue();
+                if (value.isBoolean()) {
+                    options.setDefineToBooleanLiteral(name, value.booleanValue());
+                } else if (value.isNumber()) {
+                    if (!value.canConvertToInt()) {
+                        throw new BadRequest("numeric define must be an integer: " + name);
+                    }
+                    options.setDefineToNumberLiteral(name, value.intValue());
+                } else if (value.isTextual()) {
+                    options.setDefineToStringLiteral(name, value.textValue());
+                } else {
+                    throw new BadRequest("define must be boolean, number, or string: " + name);
+                }
+            }
+        }
+
+        Result result = compiler.compile(externs, inputs, options);
+
+        return new CompileOutput(
+            result.success,
+            result.success ? compiler.toSource() : "",
+            toStrings(compiler.getWarnings()),
+            toStrings(compiler.getErrors())
+        );
+    }
+
+    private static List<SourceFile> readFiles(JsonNode req, String field) throws IOException, BadRequest {
+        List<SourceFile> out = new ArrayList<>();
+        JsonNode arr = req.get(field);
+        if (arr == null) {
+            return out;
+        }
+        if (!arr.isArray()) {
+            throw new BadRequest(field + " must be an array");
+        }
+
+        for (JsonNode item : arr) {
+            if (!item.isTextual()) {
+                throw new BadRequest(field + " entries must be strings");
+            }
+            Path p = safePath(item.textValue());
+            out.add(SourceFile.fromFile(p.toString()));
+        }
+        return out;
+    }
+
+    private static Path safePath(String value) throws BadRequest {
+        Path p = ROOT.resolve(value).normalize();
+        if (!p.startsWith(ROOT)) {
+            throw new BadRequest("path escapes root: " + value);
+        }
+        if (!Files.isRegularFile(p)) {
+            throw new BadRequest("file not found: " + value);
+        }
+        return p;
+    }
+
+    private static List<String> toStrings(Iterable<JSError> errors) {
+        List<String> out = new ArrayList<>();
+        for (JSError e : errors) {
+            out.add(e.toString());
+        }
+        return out;
+    }
+
+    private static void sendJson(HttpExchange ex, int status, JsonNode body) throws IOException {
+        byte[] bytes = JSON.writerWithDefaultPrettyPrinter().writeValueAsBytes(body);
+        ex.getResponseHeaders().set("Content-Type", "application/json; charset=utf-8");
+        ex.sendResponseHeaders(status, bytes.length);
+        try (OutputStream os = ex.getResponseBody()) {
+            os.write(bytes);
+        }
+    }
+
+    private record CompileOutput(boolean success, String js, List<String> warnings, List<String> errors) {}
+
+    private static final class BadRequest extends Exception {
+        BadRequest(String message) {
+            super(message);
+        }
+    }
+}
diff --git a/internal/generated/buildinfo_gen.go b/internal/generated/buildinfo_gen.go
new file mode 100644
index 0000000..a798cc7
--- /dev/null
+++ b/internal/generated/buildinfo_gen.go
@@ -0,0 +1,6 @@
+package generated
+
+const (
+	IMAGE_TAG   = "dev"
+	Timestamp   = "20260610.220306"
+)
diff --git a/mk/botanres-go.mk b/mk/botanres-go.mk
new file mode 100644
index 0000000..f8cde4f
--- /dev/null
+++ b/mk/botanres-go.mk
@@ -0,0 +1,54 @@
+IMAGE_NAME ?= botanjs
+IMAGE_TAG  ?= dev
+
+JS_SRC_DIR ?= ./botanjs/src
+GO_SRC_DIR ?= ./botanres-go
+BUILDX_BUILDER ?= container-builder
+BUILDINFO_FILE := internal/generated/buildinfo_gen.go
+
+ensure-buildx:
+	@if ! docker buildx inspect $(BUILDX_BUILDER) >/dev/null 2>&1; then \
+		echo "Creating buildx builder $(BUILDX_BUILDER)..."; \
+		docker buildx create \
+			--name $(BUILDX_BUILDER) \
+			--driver docker-container \
+			--driver-opt network=host \
+			--bootstrap --use; \
+	else \
+		echo "Using existing buildx builder $(BUILDX_BUILDER)"; \
+		docker buildx use $(BUILDX_BUILDER); \
+	fi
+
+.buildinfo:
+	@mkdir -p $(dir $(BUILDINFO_FILE))
+	@printf '%s\n' \
+		'package generated' \
+		'' \
+		'const (' \
+		'	IMAGE_TAG   = "$(IMAGE_TAG)"' \
+		'	Timestamp   = "'$$(TZ=UTC date +%Y%m%d.%H%M%S)'"' \
+		')' \
+	> $(BUILDINFO_FILE)
+
+gen:
+	docker build \
+		-f $(GO_SRC_DIR)/dockerfiles/gen.Dockerfile \
+		--output type=local,dest=$(GO_SRC_DIR)/internal/generated .
+
+build: .buildinfo ensure-buildx gen
+	docker build \
+		-f $(GO_SRC_DIR)/dockerfiles/api.Dockerfile \
+		--load \
+		-t $(IMAGE_NAME):$(IMAGE_TAG) .
+
+push: .buildinfo ensure-buildx gen
+	docker buildx build \
+		--platform linux/amd64,linux/arm64 \
+		-f $(GO_SRC_DIR)/dockerfiles/api.Dockerfile \
+		-t $(IMAGE_NAME):$(IMAGE_TAG) \
+		--push .
+
+inspect:
+	docker buildx imagetools inspect $(IMAGE_NAME):$(IMAGE_TAG)
+
+.PHONY: push build .buildinfo gen
diff --git a/Dockerfile b/old/Dockerfile
similarity index 100%
rename from Dockerfile
rename to old/Dockerfile
diff --git a/botan-rebuild.py b/old/botan-rebuild.py
similarity index 100%
rename from botan-rebuild.py
rename to old/botan-rebuild.py
diff --git a/logs/.keep b/old/cache/.keep
similarity index 100%
rename from logs/.keep
rename to old/cache/.keep
diff --git a/env/README.md b/old/env/README.md
similarity index 100%
rename from env/README.md
rename to old/env/README.md
diff --git a/old/logs/.keep b/old/logs/.keep
new file mode 100644
index 0000000..e69de29
diff --git a/main.py b/old/main.py
similarity index 100%
rename from main.py
rename to old/main.py
diff --git a/settings.ini b/old/settings.ini
similarity index 100%
rename from settings.ini
rename to old/settings.ini
diff --git a/setup/celery.conf b/old/setup/celery.conf
similarity index 100%
rename from setup/celery.conf
rename to old/setup/celery.conf
diff --git a/setup/compiler-tasks.service b/old/setup/compiler-tasks.service
similarity index 100%
rename from setup/compiler-tasks.service
rename to old/setup/compiler-tasks.service
diff --git a/setup/config b/old/setup/config
similarity index 100%
rename from setup/config
rename to old/setup/config
diff --git a/setup/docker.start b/old/setup/docker.start
similarity index 100%
rename from setup/docker.start
rename to old/setup/docker.start
diff --git a/setup/install b/old/setup/install
similarity index 100%
rename from setup/install
rename to old/setup/install
diff --git a/tests.py b/old/tests.py
similarity index 100%
rename from tests.py
rename to old/tests.py
diff --git a/windows/app/Dockerfile b/old/windows/app/Dockerfile
similarity index 100%
rename from windows/app/Dockerfile
rename to old/windows/app/Dockerfile
diff --git a/windows/base-compose.yml b/old/windows/base-compose.yml
similarity index 100%
rename from windows/base-compose.yml
rename to old/windows/base-compose.yml
diff --git a/windows/docker-compose.yml b/old/windows/docker-compose.yml
similarity index 100%
rename from windows/docker-compose.yml
rename to old/windows/docker-compose.yml
diff --git a/windows/jre/Dockerfile b/old/windows/jre/Dockerfile
similarity index 100%
rename from windows/jre/Dockerfile
rename to old/windows/jre/Dockerfile
diff --git a/windows/pyrt/dockerfile b/old/windows/pyrt/dockerfile
similarity index 100%
rename from windows/pyrt/dockerfile
rename to old/windows/pyrt/dockerfile
diff --git a/windows/redis/Dockerfile b/old/windows/redis/Dockerfile
similarity index 100%
rename from windows/redis/Dockerfile
rename to old/windows/redis/Dockerfile