From 1a385778174312ab09d7a1fa3dad5189fdfabfaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=9F=E9=85=8C=20=E9=B5=AC=E5=85=84?= Date: Thu, 11 Jun 2026 08:07:38 +0800 Subject: [PATCH] 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 ++ .../internal/generated/buildinfo_gen.go | 6 + .../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 +++ .../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(+) rename botanjs/{ => old}/__init__.py (100%) rename botanjs/{ => old}/classmap.py (100%) rename botanjs/{ => old}/compressor/__init__.py (100%) rename botanjs/{ => old}/compressor/closure.py (100%) rename botanjs/{ => old}/compressor/yui.py (100%) rename botanjs/{ => old}/config.py (100%) rename botanjs/{ => old}/dummy.py (100%) rename botanjs/{ => old}/service/__init__.py (100%) rename botanjs/{ => old}/service/jclassresv.py (100%) rename botanjs/{ => old}/service/jwork.py (100%) rename botanjs/{ => old}/service/webapi.py (100%) rename botanjs/{ => old}/utils.py (100%) create mode 100644 botanres-go/README.md create mode 100644 botanres-go/cmd/botan-api/main.go create mode 100644 botanres-go/cmd/botan-gen/main.go create mode 100644 botanres-go/dockerfiles/api.Dockerfile create mode 100644 botanres-go/dockerfiles/gen.Dockerfile create mode 100644 botanres-go/go.mod rename cache/.keep => botanres-go/go.sum (100%) create mode 100644 botanres-go/internal/classmap/scan.go create mode 100644 botanres-go/internal/classmap/types.go create mode 100644 botanres-go/internal/generated/buildinfo_gen.go create mode 100644 botanres-go/internal/generated/classmap_gen.go create mode 100644 botanres-go/internal/resolver/resolver.go create mode 100644 closure-compilerd/Dockerfile create mode 100644 closure-compilerd/README.md create mode 100644 closure-compilerd/example/externs/browser.js create mode 100644 closure-compilerd/example/js/hello.js create mode 100644 closure-compilerd/pom.xml create mode 100644 closure-compilerd/src/main/java/dev/tgckpg/closured/Main.java create mode 100644 internal/generated/buildinfo_gen.go create mode 100644 mk/botanres-go.mk rename Dockerfile => old/Dockerfile (100%) rename botan-rebuild.py => old/botan-rebuild.py (100%) rename {logs => old/cache}/.keep (100%) rename {env => old/env}/README.md (100%) create mode 100644 old/logs/.keep rename main.py => old/main.py (100%) rename settings.ini => old/settings.ini (100%) rename {setup => old/setup}/celery.conf (100%) rename {setup => old/setup}/compiler-tasks.service (100%) rename {setup => old/setup}/config (100%) rename {setup => old/setup}/docker.start (100%) rename {setup => old/setup}/install (100%) rename tests.py => old/tests.py (100%) rename {windows => old/windows}/app/Dockerfile (100%) rename {windows => old/windows}/base-compose.yml (100%) rename {windows => old/windows}/docker-compose.yml (100%) rename {windows => old/windows}/jre/Dockerfile (100%) rename {windows => old/windows}/pyrt/dockerfile (100%) rename {windows => old/windows}/redis/Dockerfile (100%) 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 @@ + + 4.0.0 + + dev.tgckpg + closure-compilerd + 0.1.0 + + + 21 + 21 + UTF-8 + + + + + com.google.javascript + closure-compiler + v20260526 + + + + com.fasterxml.jackson.core + jackson-databind + 2.19.0 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.14.0 + + + + org.apache.maven.plugins + maven-shade-plugin + 3.6.0 + + + package + + shade + + + false + + + dev.tgckpg.closured.Main + + + + + + + + + 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 externs = new ArrayList<>(); + externs.addAll(CommandLineRunner.getBuiltinExterns(options.getEnvironment())); + externs.addAll(readFiles(req, "externs")); + + List 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> fields = defines.fields(); + while (fields.hasNext()) { + Map.Entry 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 readFiles(JsonNode req, String field) throws IOException, BadRequest { + List 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 toStrings(Iterable errors) { + List 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 warnings, List 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